- iptables -F?
- # -F 是清除的意思, 作用就是把 FILTRE TABLE 的所有链的规则都清空
- iptables -A INPUT -s 172.20.20.1/32 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
- # 在 FILTER 表的 INPUT 链匹配源地址是 172.20.20.1 的主机, 状态分别是 NEW,ESTABLISHED,RELATED 的都放行.
- iptables -A INPUT -s 172.20.20.1/32 -m state --state NEW,ESTABLISHED -p tcp -m multiport --dport 123,110 -j ACCEPT
- # -p 指定协议,-m 指定模块, multiport 模块的作用就是可以连续匹配多各不相邻的端口号. 完整的意思就是源地址是 172.20.20.1 的主机, 状态分别是 NEW, ESTABLISHED,RELATED 的, TCP 协议, 目的端口分别为 123 和 110 的数据包都可以通过.
- iptables -A INPUT -s 172.20.22.0/24 -m state --state NEW,ESTABLISHED -p tcp -m multiport --dport 123,110 -j ACCEPT
- iptables -A INPUT -s 0/0 -m state --state NEW -p tcp -m multiport --dport 123,110 -j DROP
- # 这句意思为源地址是 0/0 的 NEW 状态的的 TCP 数据包都禁止访问我的 123 和 110 端口.
- iptables -A INPUT -s ! 172.20.89.0/24 -m state --state NEW -p tcp -m multiport --dport 1230,110 -j DROP
- # "!" 号的意思 取反. 就是除了 172.20.89.0 这个 IP 段的地址都 DROP.
- iptables -R INPUT 1 -s 192.168.6.99 -p tcp --dport 22 -j ACCEPT
替换 INPUT 链中的第一条规则
iptables -t filter -L INPUT -vn
以数字形式详细显示 filter 表 INPUT 链的规则
- #-------------------------------NAT IP--------------------------------------
- # 以下操作是在 NAT TABLE 里面完成的. 请大家注意.
- iptables -t nat -F
- iptables -t nat -A PREROUTING -d 192.168.102.55 -p tcp --dport 90 -j DNAT --to 172.20.11.1:800
- #-A PREROUTING 指定在路由前做的. 完整的意思是在 NAT TABLE 的路由前处理, 目的地为 192.168.102.55 的 目的端口为 90 的我们做 DNAT 处理, 给他转向到 172.20.11.1:800 那里去.
- iptables -t nat -A POSTROUTING -d 172.20.11.1 -j SNAT --to 192.168.102.55
- #-A POSTROUTING 路由后. 意思为在 NAT TABLE 的路由后处理, 凡是目的地为 172.20.11.1 的, 我们都给他做 SNAT 转换, 把源地址改写成 192.168.102.55 .
- iptables -A INPUT -d 192.168.20.0/255.255.255.0 -i eth1 -j DROP
- iptables -A INPUT -s 192.168.20.0/255.255.255.0 -i eth1 -j DROP
- iptables -A OUTPUT -d 192.168.20.0/255.255.255.0 -o eth1 -j DROP
- iptables -A OUTPUT -s 192.168.20.0/255.255.255.0 -o eth1 -j DROP
- # 上例中, eth1 是一个与外部 Internet 相连, 而 192.168.20.0 则是内部网的网络号, 上述规则用来防止 IP 欺骗, 因为出入 eth1 的包的 ip 应该是公共 IP
- iptables -A INPUT -s 255.255.255.255 -i eth0 -j DROP
- iptables -A INPUT -s 224.0.0.0/224.0.0.0 -i eth0 -j DROP
- iptables -A INPUT -d 0.0.0.0 -i eth0 -j DROP
- # 防止广播包从 IP 代理服务器进入局域网:
- iptables -A INPUT -p tcp -m tcp --sport 5000 -j DROP
- iptables -A INPUT -p udp -m udp --sport 5000 -j DROP
- iptables -A OUTPUT -p tcp -m tcp --dport 5000 -j DROP
- iptables -A OUTPUT -p udp -m udp --dport 5000 -j DROP
- # 屏蔽端口 5000
- iptables -A INPUT -s 211.148.130.129 -i eth1 -p tcp -m tcp --dport 3306 -j DROP
- iptables -A INPUT -s 192.168.20.0/255.255.255.0 -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
- iptables -A INPUT -s 211.148.130.128/255.255.255.240 -i eth1 -p tcp -m tcp --dport 3306 -j ACCEPT
- iptables -A INPUT -p tcp -m tcp --dport 3306 -j DROP
- # 防止 Internet 网的用户访问 MySQL 服务器 (就是 3306 端口)
- iptables -A FORWARD -p TCP --dport 22 -j REJECT --reject-with tcp-reset
- #REJECT, 类似于 DROP, 但向发送该包的主机回复由 --reject-with 指定的信息, 从而可以很好地隐藏防火墙的存在
来源: http://www.bubuko.com/infodetail-3112653.html