公司通过DDN专线上网有一个公网IP段218.198.88.0/24,有三台服务器对外分别提供WWW、FTP、EMail服务。
WWW服务器:218.198.88.80
FTP服务器:218.198.88.21
EMail服务器:218.198.88.25
员工分配剩余IP地址。以上的IP地址都是Internet上的公有IP,故无需进行IP伪装
⒉实现包过滤防火墙增强内部网络安全的linux主机有两块网卡:
eth0: 218.198.88.254 连接内网
eth1: 218.198.32.254 连接外网
3.拓扑图
以下的脚步建立了一个相对完整的防火墙。只对外开放了有限的几个端口,同时提供了本地客户对Internet的无缝访问,并且对syn-flood攻击、广播风暴攻击、DOS拒绝服务攻击、ip碎片攻击、icmp的ping of death提供了有效的防护手段
#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/tcp_synack_retries
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
WWW=218.198.88.80
FTP=218.198.88.21
EMAIL=218.198.88.25
iptables �CF #清空防火墙规则
iptables -P FORWARD DROP #设置防火墙FORWARD链的默认策略为DROP,即首先禁止转发任何包,再一步步添加规则来允许符合条件的包通过防火墙
iptables -N DOS #新增一条名为DOS的新链用来防范DOS攻击
iptables -A DOS -m limit --limit 100/s -j ACCEPT #接受最大平均流量为每秒100个包
iptables -A DOS -m limit --limit 300/s -j DROP #拒绝最大平均流量为每秒300个包
iptables -A DOS -m limit --limit 310/s -j LOG --log-prefix "DOS" --log-level 3 #将最大平均流量为每秒310个包记录日志,日志名为DOS,日志级别为3
iptables -A FORWARD -i eth1 -p tcp --dport 80 -m state --state NEW --syn -d $WWW -j DOS #目的为WWW服务器,目的端口80,状态为NEW,由网卡eth1进入的包交给DOS链处理
iptables -A FORWARD -i eth1 -p tcp --dport 21 -m state --state NEW --syn -d $FTP -j DOS #目的为FTP服务器,目的端口21,状态为NEW,由网卡eth1进入的包交给DOS链处理
iptables -A FORWARD -i eth1 -p tcp --dport 25 -m state --state NEW --syn -d $EMAIL -j DOS #目的为Email服务器,目的端口25,状态为NEW,由网卡eth1进入的包交给DOS链处理
iptables -A FORWARD -i eth1 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT #接受状态为ESTABLISHED和RELATED的包
iptables -A FORWARD -i eth1 -p tcp --sport 20 -s 0/0 -d 218.198.88.0/24 -j ACCEPT #允许内网用户采用消极模式访问Internet的FTP服务器
iptables -A FORWARD -i eth1 -p tcp ! --syn -d 218.198.88.0/24 -j ACCEPT #接受来自Internet的非连接请求的tcp包
iptables -A FORWARD -i eth1 -p udp -d 218.198.88.0/24 -j ACCEPT #接受所有来自Iternet的udp包
iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT #接受所有的ip碎片,但采用limit匹配扩展对其单位时间可以通过的ip碎片数量进行限制,以防止ip碎片攻击,此例为每秒允许通过的ip碎片100个,触发阈值为100个ip碎片
iptables -A FORWARD -p icmp -m limit --limit 6/m --limit-burst 10 -j ACCEPT #对不管来自哪里的icmp包都进行限制,允许每分钟通过6个包,该限制触发阈值是10个包,可防止ping of death攻击
iptables -A FORWARD -i eth0 -s 218.198.88.0/24 -j ACCEPT #对来自内网的数据包都接受
service iptables save