9个经常使用iptables配置实例

iptables命令可用于配置Linux的包过滤规则,经常使用于实现防火墙、NAT。咋一看iptables的配置很复杂,掌握规律后,其实用iptables完成指定任务并不难,下面咱们经过具体实例,学习iptables的详细用法。前端

 

1.删除已有规则web

在新设定iptables规则时,咱们通常先确保旧规则被清除,用如下命令清除旧规则:安全

iptables -F
(or iptables --flush)

 

2.设置chain策略服务器

对于filter table,默认的chain策略为ACCEPT,咱们能够经过如下命令修改chain的策略:tcp

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

以上命令配置将接收、转发和发出包均丢弃,施行比较严格的包管理。因为接收和发包均被设置为丢弃,当进一步配置其余规则的时候,须要注意针对INPUT和OUTPUT分别配置。固然,若是信任本机器往外发包,以上第三条规则可没必要配置。学习

 

3.屏蔽指定ipspa

有时候咱们发现某个ip不停的往服务器发包,这时咱们可使用如下命令,将指定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包丢弃。code

 

4.配置服务项orm

利用iptables,咱们能够对平常用到的服务项进行安全管理,好比设定只能经过指定网段、由指定网口经过SSH链接本机:

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.网口转发配置

对于用做防火墙或网关的服务器,一个网口链接到公网,其余网口的包转发到该网口实现内网向公网通讯,假设eth0链接内网,eth1链接公网,配置规则以下:

iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

 

6.端口转发配置

对于端口,咱们也能够运用iptables完成转发配置:

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攻击防范

利用扩展模块limit,咱们还能够配置iptables规则,实现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进行流量分发,配置方法以下:

复制代码

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:80iptables -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:80iptables -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.将丢弃包状况记入日志

使用LOG目标和syslog服务,咱们能够记录某协议某端口下的收发包状况。拿记录丢包状况举例,能够经过如下方式实现。

首先自定义一个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的日志输出。

相关文章
相关标签/搜索