如何讓企業內網用戶通過iptables的外網接口訪問外網?企業的內網服務器如何向外網發佈?外網訪問內網服務器,iptables如何設置?
假設我們的內網服務器網段爲192.168.194.0/24,而防火牆主機連接外網的端口ip爲100.1.1.25,Linux主機的ip_forward功能已開啓,我們可以用下面的腳本設置我們的防火牆來解決以上問題:
#!/bin/bash
LAN_IF="eth0" #內網網卡eth0
LAN_NETS="192.168.194.0/24" #內網網段
INET_IF="eth1" #外網網卡eth1
INET_IP="100.1.1.25" #防火牆連接的外網地址
IPT="/sbin/iptables"
WWW_IP="192.168.194.10" #局域網web服務器ip
FTP_IP="192.168.194.20" #局域網ftp服務器ip
sed -i '/IPTABLES_MODULES=/s/=".*"/="nf_nat_ftp nf_conntrack_ftp"/' /etc/sysconfig/iptables-config #增加ftp相關的兩個模塊並重啓服務
service iptables restart
$IPT -F
$IPT -X
$IPT -t nat -F
$IPT -N BLACKLIST #自定義一條新鏈
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
$IPT -t nat -A POSTROUTING -s $LAN_NETS -o $INET_IF -j SNAT --to-source $INET_IP #實現內網通過NAT方式連接外網
$IPT -t nat -A PREROUTING -d $INET_IP -i $INET_IF -p tcp --dport 80 -j DNAT --to-destination $WWW_IP #發佈web網站
$IPT -t nat -A PREROUTING -d $INET_IP -i $INET_IF -p tcp --dport 20:21 -j DNAT --to-destination $FTP_IP #發佈ftp網站
$IPT -t nat -A PREROUTING -d $INET_IP -i $INET_IF -p tcp --dport 2222 -j DNAT --to-destination $WWW_IP:22 #實現遠程控制web服務器
$IPT -t nat -A PREROUTING -d $INET_IP -i $INET_IF -p tcp --dport 2223 -j DNAT --to-destination $FTP_IP:22 #實現遠程控制ftp服務器
$IPT -A FORWARD -s $LAN_NETS -j ACCEPT #允許內網用戶向任何網段轉發數據包
$IPT -A FORWARD -d $WWW_IP -p tcp -m multiport --dports 80,22 -m state --state NEW -j ACCEPT #當web服務器接收到80和22端口新建立的連接請求時ACCEPT
$IPT -A FORWARD -d $FTP_IP -p tcp -m multiport --dports 20:21,22 -m state --state NEW -j ACCEPT #當ftp服務器接收到20:21和22端口新建立的連接請求時ACCEPT
$IPT -A FORWARD -d $LAN_NETS -m state --state ESTABLISHED,RELATED -j ACCEPT #當內網絡主機接收到將要或已經建立連接的包和與已知某個連接相關聯的包時ACCEPT
for ip in `cat ~/bin/blist.txt` #blist.txt爲被列爲黑名單的ip地址,格式爲一行一個ip
do
$IPT -I BLACKLIST -s $ip -j DROP #把黑名單ip寫入BLACKLIST
done
$IPT -I INPUT -j BLACKLIST #不允許黑名單訪問防火牆主機
$IPT -I FORWARD -j BLACKLIST #不允許黑名單用戶轉發數據
$IPT -I OUTPUT -d -s $ip -j DROP #不允許內網主機訪問黑名單主機