在filter这个表上创建一个自定义的链IN_WEB.
在filter表中的IN_WEB链上创建一个规则,对原地址为192.168.1.1这个的连接进行阻止。
当然,自定义链在哪里创建,应该被哪调默认的链引用,取决于应用场景,比如说要匹配入站报文,所以可以在INPUT链中引用
我们在INPUT链中添加了一些规则,访问本机80端口的tcp报文将会被这条规则匹配到。-j IN_WEB表示:访问80端口的tcp报文将由自定义链“IN_WEB”中的规则处理,没错,在之前的例子中-j 表示动作,当我们将动作替换成自定义链时,就表示被当前规则匹配到的报文将交由对应的自定义链中的规则处理,具体怎么处理,取决于自定义链中的规则。当IN_WEB被INPUT引用后,引用计数将会加1.
首先要说明的是IPTables命令必需以root权限运行,这意味着你需要使用root身份登录或者能够有权限使用su或sudo -i取得root Shell。下面的内容中我们都使用sudo,这也是Ubuntu系统上的首选方法。最好的起点就是先通过“-L”参数来查看下当前系统的所有IPTables规则:
sudo iptables -L
我们可以看到Linux中都有的3个常用默认链(INPUT、OUTPUT和FORWARD),同时也可以看到每个链的缺省策略(每个链对默认策略都是接受),在此我们可以看到Ubuntu中并没有添加任何默认规则集。
PREROUTING链——对数据包作路由选择前应用此链中的规则(所有的数据包进来的时侯都先由这个链处理)
INPUT链——进来的数据包应用此规则链中的策略
OUTPUT链——外出的数据包应用此规则链中的策略
FORWARD链——转发数据包时应用此规则链中的策略
POSTROUTING链——对数据包作路由选择后应用此链中的规则(所有的数据包出来的时侯都先由这个链处理)
filter表——用于存放所有与防火墙相关 *** 作的默认表。通常用于过滤数据包。
nat表——用于网络地址转换
mangle表——用于处理数据包
raw表——用于配置数据包,raw 中的数据包不会被系统跟踪。
PREROUTING: raw ->mangle ->nat
INPUT: mangle ->filter
FORWARD: mangle ->filter
OUTPUT: raw ->mangle ->nat ->filter
POSTROUTING: mangle ->nat
raw 表:PREROUTING,OUTPUT
mangle表:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
nat 表:PREROUTING,OUTPUT,POSTROUTING
filter 表:INPUT,FORWARD,OUTPUT
ACCEPT: 允许数据包通过
DROP:直接丢弃数据包,不给任何回应信息
REJECT:拒绝数据包通过,需要时会给数据发送端一个相应信息
SNAT:原地址转换,解决内网用户用同一个公网地址上网的问题
MASQUERADE:是 SNAT 的一种特殊形式,适用于动态的、临时会变的 ip 上
DNAT:目标地址转换
REDIRECT:在本机做端口映射
LOG:在/var/log/messages 文件中记录日志信息。然后将数据包传递给下一条规则。也就是只记录不做任何 *** 作。
示例:
比如,我想要将主动连接22号端口的报文的相关信息都记录到日志中,并且把这类记录命名为"want-in-from-port-22",则可以使用如下命令
如果公网IP是动态获取的,不是固定的,则可以使用MASQUERADE进行动态的SNAT *** 作。
查看表中规则 iptables -t table_name -L [chain_name]
示例:
上面示例可以看到有哪些链是支持过滤的
在不指定表时默认查询 filter 表 iptables -L [chain_name] (注意大小写)
示例:
示例:
这个时候在192.168.55.132这个主机上 ping 测试机是不通的。此时在表的首部在添加一个允许的 *** 作
这个时候在192.168.55.132这个主机上 ping 测试机发现可以 ping 通
所以规则的顺序很重要
示例:
示例:
关于链默认规则说明
不能省略 -s 如果省略效果如下
source 变为0.0.0.0/0 表示所有网段都被 ACCEPT
示例
默认情况下添加的规则都是临时的,当重启 iptables 或者重启系统时规则将丢失
示例:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)