如何让企业内网用户通过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 #不允许内网主机访问黑名单主机