iptables命令可用于配置Linux的包过滤规则,常用于实现防火墙、NAT。
复制代码代码示例:
iptables -F
(or iptables --flush)
2,设置chain策略
复制代码代码示例:
iptables -P INPUT DROP
iptables -P FORWARD DROP iptables -P OUTPUT DROP
以上命令配置将接收、转发和发出包均丢弃,施行比较严格的包管理。
3,屏蔽指定ip
复制代码代码示例:
BLOCK_THIS_IP="x.x.x.x"
iptables -A INPUT -i eth0 -p tcp -s "$BLOCK_THIS_IP" -j DROP 以上命令设置将由x.x.x.x ip发往eth0网口的tcp包丢弃。
4,配置服务项
复制代码代码示例:
iptables -A INPUT -i eth0 -p tcp -s 192.168.100.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
若要支持由本机通过SSH连接其他机器,由于在本机端口建立连接,因而还需要设置以下规则:
复制代码代码示例:
iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 22 -m state --state ESTABLESHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state NEW,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
5,网口转发配置
复制代码代码示例:
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
6,端口转发配置
复制代码代码示例:
iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 --dport 422 -j DNAT --to 192.168.102.37:22
以上命令将422端口的包转发到22端口,因而通过422端口也可进行SSH连接,当然对于422端口,我们也需要像以上“4.配置服务项”一节一样,配置其支持连接建立的规则。
7,DoS攻击防范
复制代码代码示例:
iptables -A INPUT -p -tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
--litmit 25/minute 指示每分钟限制最大连接数为25 --litmit-burst 100 指示当总连接数超过100时,启动 litmit/minute 限制
8,配置web流量均衡
复制代码代码示例:
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.101: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.102: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.103:80 以上配置规则用到nth扩展模块,将80端口的流量均衡到三台服务器。
9,将丢弃包情况记入日志
首先,自定义一个chain:
复制代码代码示例:
iptables -N LOGGING
其次,将所有接收包导入LOGGING chain中:
复制代码代码示例:
iptables -A INPUT -j LOGGING
然后设置日志前缀、日志级别:
复制代码代码示例:
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7
最后将包倒向DROP,将包丢弃:
复制代码代码示例:
iptables -A LOGGING -j DROP
另外,还可以配置syslog.conf文件,指定iptables的日志输出。 (责任编辑:IT) |