linux防火墙iptables配置规则实例教程
前面说了Freebsd下ipfw的配置,今天再说一下linux及centos下iptables的通用配置。相比于freebsd的ipfw centos下的iptables更加便于安装配置。
一.启动iptables
复制代码代码示例:
service iptables status
可以查看当前iptables运行状态,显示如下
复制代码代码示例:
[root@localhost ~]# service iptables status
表格:filter Chain INPUT (policy ACCEPT) num target prot opt source destination Chain FORWARD (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination 表示当前iptables已经运行,如未启动 可以运行 service iptables start 启动防火墙。
二.配置规则前准备 使其生效的办法是修改好后 运行 service iptables restart 系统会载入你配置的iptables规则。
提示:如果刚接触linux或对iptables配置不是很熟悉,建议谨慎操作。虚拟机情况还好,如果是远程登录的配置,很可能会把自己挡在外面无法连接。
复制代码代码示例:
crontab -e
*/5 * * * * root /etc/init.d/iptables stop
每5分钟关闭一次防火墙,避免出现远程连接SSH断掉无法登录。
复制代码代码示例:
Generated by iptables-save v1.3.5 on Sat Nov 10 11:07:00 2012
*filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -j DROP -A FORWARD -j DROP -A OUTPUT -j ACCEPT COMMIT # Completed on Sat Nov 10 11:07:00 2012 这个规则只允许80 和22端口的连接进入,其余的全部阻止。而对于出去的连接则没有限制。这是针对web服务器进行的一个规则配置,其余的规则可以根据自己的需要添加
以下是根据网上规则总结的一些配置方法。
复制代码代码示例:
Black_IP="x.x.x.x"
iptables -A INPUT -i eth0 -p tcp -s "$Black_IP" -j DROP
以上命令设置将由x.x.x.x ip发往eth0网口的tcp包丢弃。
复制代码代码示例:
iptables -A INPUT -i eth0 -p tcp -s 192.168.0.0/24 --dport 22 -m state --state NEW,ESTABLESHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT 类似的,对于HTTP/HTTPS(80/443)、pop3(110)、rsync(873)、MySQL(3306)等基于tcp连接的服务,也可以参照上述命令配置。
对于基于udp的dns服务,使用以下命令开启端口服务:
复制代码代码示例:
iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT
iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT
3,网口转发配置
复制代码代码示例:
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
4,端口转发配置
复制代码代码示例:
iptables -t nat -A PREROUTING -p tcp -d 192.168.0.1 --dport 422 -j DNAT --to 192.168.1.1:22
以上命令将422端口的包转发到22端口,因而通过422端口也可进行SSH连接,当然对于422端口,也需要像以上“4.配置服务项”一节一样,配置其支持连接建立的规则。
复制代码代码示例:
iptables -A INPUT -p -tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
--litmit 25/minute 指示每分钟限制最大连接数为25
复制代码代码示例:
iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.1:80
iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.2:80 iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.3:80 以上配置规则用到nth扩展模块,将80端口的流量均衡到三台服务器。 |