共计 1709 个字符,预计需要花费 5 分钟才能阅读完成。
导读 | iptables 是用来设置、维护和检查 Linux 内核的 IP 分组过滤规则的。作为 Linux 下的一款防火墙,它的功能十分强大,它有 3 个表,每个表内有规则链。 |
iptables 是用来设置、维护和检查 Linux 内核的 IP 分组过滤规则的。作为 Linux 下的一款防火墙,它的功能十分强大,它有 3 个表,每个表内有规则链。
(1)filter 是默认的表,包含了内建的链 INPUT(处理进入的分组)、FORWARD(处理通过的分组)和 OUTPUT(处理本地生成的分组)。
(2)nat 表被查询时表示遇到了产生新的连接的分组,由 3 个内建的链构成:PREROUTING(修改到来的分组)、OUTPUT(修改路由之前本地的分组)、POSTROUTING(修改准备出去的分组)。
(3)mangle 表用来对指定的分组进行修改。它有 2 个内建规则:PREROUTING(修改路由之前进入的分组)和 OUTPUT(修改路由之前本地的分组)。下面简单介绍 iptables 的常用配置。
查看当前的 iptables 策略,使用 iptables- L 命令,默认查看的是 filter 表的内容,如下:
root@linuxprobe:~# iptables-L
Chain INPUT(policy ACCEPT)
target prot opt source destination
f2b-sshd tcp – anywhere anywhere multiport dports ssh
Chain FORWARD(policy ACCEPT)
target prot opt source destination
Chain OUTPUT(policy ACCEPT)
target prot opt source destination
Chain f2b-sshd(1 references)
target prot opt source destination
RETURNall-anywhere anywhere
对于 filter 表,默认的 chain 策略为 ACCEPT,可以通过以下命令修改 chain 的策略:
root@linuxprobe:~# iptables-P INPUT DROP
root@linuxprobe:~# iptables-P FORWARD DROP
root@linuxprobe:~# iptbales-P OUTPUT DROP
以上命令配置将接收、转发和发出分组均丢弃,施行比较严格的分组管理。由于接收和发分组均被设置为丢弃,当进一步配置其他规则的时候,需要注意针对 INPUT 和 OUTPUT 分别配置。当然,如果信任本机器往外发分组,上面第 3 条规则可不必配置。
可以用以下规则来清空已有的规则:
root@linuxprobe:~# iptables-F
对于用作防火墙或网关的服务器,一个网口连接到公网,其他网口的分组转发到该网口实现内网向公网通信,假设 eth0 连接内网,eth1 连接公网,配置规则如下:
root@linuxprobe:~# iptables-A FORWARD-i eth0-o eth1-j ACCEPT
命令将 888 端口的分组转发到 22 端口,因而通过 888 端口也可进行 SSH 连接:
root@linuxprobe:~# iptables-t nat-A PREROUTING-p tcp-d 192.168.1.1 –dport 888-j DNAT--to 192.168.1.1:22
利用扩展模块 limit,还可以配置 iptables 规则,实现 DoS 攻击防范,如下所示:
root@linuxprobe:~# 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 限制。