iptables 默认安全规则脚本 一 #nat 路由器 ( 一 ) 允许路由 # iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT ( 二 ) DNAT 与端口转发 1 启用 DNAT 转发 # iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 dprot 422 -j DNAT to-destination 192.168.102.37:22 2. 允许连接到 422 端口的请求 # iptables -A INPUT -i eth0 -p tcp dport 422 -m state state # iptables -A OUTPUT -o eth0 -p tcp sport 422 -m state state ESTABLISHED -j ACCEPT # iptables -t nat -A PREROUTING -p tcp -i eth0 -d ***.***.***.*** --dport 8888 -j DNAT to-destination 192.168.122.11:80 # iptables -A FORWARD -p tcp -i eth0 -d 192.168.122.11 dport 80 -j ACCEPT ( 三 ) SNAT 与 MASQUERADE # 让内网上网 # iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -j SNAT to-source
60.1.1.1 MASQUERADE # iptables -t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j # sysctl net.ipv4.ip_forward=1 # iptables -P FORWARD DROP # 规定允许任何地址到任何地址的确认包和关联包通过 # iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # 让 10.1.1.9 这个地址访问 internet # iptables -A FORWARD -s 10.1.1.9 -j ACCEPT # 精确控制他的访问地址, 比如允许 10.1.1.99 访问 3.3.3.43 这个 IP #iptables -A FORWARD -s 10.1.1.99 -d 3.3.3.3 -j ACCEPT # 只允许他们访问 80 端口 # iptables -A FORWARD -s 10.1.1.0/24 -p tcp dport http -j ACCEPT ( 四 ) 负载均衡 # iptables -A PREROUTING -i eth0 -p tcp dport 443 -m state state NEW -m mth counter 0 every 3 packet 0 -j DNAT to-destination 192.168.1.101:443 # iptables -A PREROUTING -i eth0 -p tcp dport 443 -m state state NEW -m
mth counter 0 every 3 packet 0 -j DNAT to-destination 192.168.1.102:443 # iptables -A PREROUTING -i eth0 -p tcp dport 443 -m state state NEW -m mth counter 0 every 3 packet 0 -j DNAT to-destination 192.168.1.103:443 二 端口转发 # iptables -P FORWARD DROP # iptables -A FORWARD -m state state ESTABLISHED,RELATED -j ACCEPT # 要把访问 60.1.1.1:80 的数据包转发到 Lan 内 web server # iptables -t nat -A PREROUTING -d 60.1.1.1 -p tcp dport 80 -j DNAT to 10.1.1.1:80 # iptables -t nat -A PREROUTING -d 60.1.1.1 -p tcp dport 21 -j DNAT to 10.1.1.2:21 # iptables -A FORWARD -d 10.1.1.1 -p tcp dport 80 -j ACCEPT # iptables -A FORWARD -d 10.1.1.2 -p tcp dport 21 -j ACCEPT 三 NFS ( 一 ) nat
--dport 111 -j DNAT --to-destination 192.168.122.11:111 --dport 111 -j DNAT --to-destination 192.168.122.11:111 --dport 2049 -j DNAT --to-destination 192.168.122.11:2049 --dport 2049 -j DNAT --to-destination 192.168.122.11:2049 --dport 4002 -j DNAT --to-destination 192.168.122.11:4002 --dport 4002 -j DNAT --to-destination 192.168.122.11:4002 --dport 4003 -j DNAT --to-destination 192.168.122.11:4003 --dport 4003 -j DNAT --to-destination 192.168.122.11:4003 --dport 4004 -j DNAT --to-destination 192.168.122.11:4004 --dport 4004 -j DNAT --to-destination 192.168.122.11:4004 ( 二 ) files ACCEPT ACCEPT # iptables -A INPUT -p udp -m state --state NEW -m udp --dport 111 -j # iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 111 -j # iptables -A INPUT -p udp -m state --state NEW -m udp --dport 4002:4004 -j ACCEPT # iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 4002:4004 -j ACCEPT
-j ACCEPT # iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 2049 四 屏蔽指定的 IP 地址 # iptables -A INPUT -i eth0 -s $BLOCK_THIS_IP -j DROP # iptables -A INPUT -i eth0 -p tcp $BALOCK_THIS_IP -j DROP 五 允许外部 ping 测试 # iptables -A INPUT -p icmp icmp-type echo-request -j ACCEPT # iptables -A OUTPUT -p icmp icmp-type echo-reply -j ACCEPT 六 允许从本机 ping 外部机器 # iptables -A OUTPUT -p icmp icmp-type echo-request -j ACCEPT # iptables -A INPUT -p icmp icmp-type echo-reply -j ACCEPT 七 允许环回 (loopback) 访问 # iptables -A INPUT -i l0 -j ACCEPT # iptables -A OUTPUT -o l0 -j ACCEPT 八 iptables: 协议与端口设定 ( 一 ) 允许所有 SSH 连接请求 # iptables -A INPUT -i eth0 -p tcp dport 22 -m state state
-j ACCEPT # iptables -A OUTPUT -o eth0 -p tcp sport 22 -m state state ESTABLISHED ( 二 ) 允许从本地发起的 SSH 请求 # iptables -A OUTPUT -o eth0 -p tcp dport 22 -m state state # iptables -A INPUT -i eth0 -p tcp sport 22 -m state state ( 三 ) 允许来自指定网络的 SSH 连接请求 # iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 dport 22 -m state state # iptables -A OUTPUT -o eth0 -p tcp sport 22 -m state state ( 四 ) 仅允许从本地发起到指定网络的 SSH 连接请求 # iptables -A OUTPUT -o eth0 -p tcp -d 192.168.100.0/24 dport 22 -m state state # iptables -A INPUT -i eth0 -p tcp sport 22 -m state state ( 五 ) 允许 HTTP/HTTPS 连接请求 1 允许 HTTP 连接 # iptables -A INPUT -i eth0 -p tcp dport 80 -m state state # iptables -A OUTPUT -o eth0 -p tcp sport 80 -m state state
2. 允许 HTTPS 连接 # iptables -A INPUT -i eth0 -p tcp dport 443 -m state state # iptables -A OUTPUT -o eth0 -p tcp sport 443 -m state state ( 六 ) 允许从本地发起 HTTPS 连接 # iptables -A OUTPUT -o eth0 -p tcp dport 443 -m state state # iptables -A INPUT -i eth0 -p tcp sport 443 -m state state ( 七 ) -m multiport 指定多个端口 # iptables -A INPUT -i eth0 -p tcp -m multiport dport 22,80,443 -m state state # iptables -A OUTPUT -o eth0 -p tcp -m multiport sport 22,80,443 -m state state ( 八 ) 允许出站 DNS 连接 # iptables -A OUTPUT -p udp -o eth0 dport 53 -j ACCEPT # iptables -A INPUT -p udp -i eth0 sport 53 -j ACCEPT ( 九 ) 允许 NIS 连接 # rpcinfo -p grep ypbind
# iptables -A INPUT -p tcp dport 111 -j ACCEPT # iptables -A INPUT -p udp dport 111 -j ACCEPT # iptables -A INPUT -p tcp dport 853 -j ACCEPT # iptables -A INPUT -p udp dport 853 -j ACCEPT # iptables -A INPUT -p tcp dport 850 -j ACCEPT # iptables -A INPUT -p udp dport 850 -j ACCEPT ( 十 ) 允许来自指定网络的 rsync 连接请求 # iptables -A INPUT -i eth0 -p tcp -s 192.168.101.0/24 dport 873 -m state state # iptables -A OUTPUT -o eth0 -p tcp sport 873 -m state state ( 十一 ) 允许来自指定网络的 Mysql 连接请求 # iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 dport 3306 -m state state # iptables -A OUTPUT -o eth0 -p tcp sport 3306 -m state state ( 十二 ) 允许 Sendmail,Postfix 邮件服务 # iptables -A INPUT -i eth0 -p tcp dport 25 -m state state # iptables -A OUTPUT -o eth0 -p tcp sport 25 -m state state ( 十三 ) 允许 IMAP 与 IMAPS 1 IMAP # iptables -A INPUT -i eth0 -p tcp dport 143 -m state state
# iptables -A OUTPUT -o eth0 -p tcp sport 143 -m state state 2 IMAPS # iptables -A INPUT -i eth0 -p tcp dport 993 -m state state # iptables -A OUTPUT -o eth0 -p tcp sport 993 -m state state ( 十四 ) 允许 POP3 与 POP3S 1.POP3 # iptables -A INPUT -i eth0 -p tcp dport 110 -m state state # iptables -A OUTPUT -o eth0 -p tcp sport 110 -m state state 2.POP3S state # iptables -A INPUT -i eth0 -p tcp dport 995 -m state state # iptables -A OUTPUT -o eth0 -p tcp sport 995 -m state ( 十五 ) 防止 DoS 攻击 25/minute limit-burst 100 -j ACCEPT # iptables -A INPUT -p tcp sport 80 -m limit limit