Iptables防火墙基本匹配条件应用

举报
jiangxl 发表于 2022/07/08 23:54:47 2022/07/08
【摘要】 Iptables防火墙基本匹配条件应用 文章目录 Iptables防火墙基本匹配条件应用基本匹配条件案例一基本匹配条件案例二基本匹配条件案例三拒绝所有协议进入本机的规则配置--dport参数声明...

Iptables防火墙基本匹配条件应用


  • -p:指定要操作的协议类型,不指定-p参数声明是那种协议,默认是all,也就是所有协议。
  • -s:指定源地址。
  • -d:指定目标地址。
  • --sport:指定源端口.
  • --dport:指定目标端口。
  • -i:指定从哪个网卡进入的报文。
  • -o:指定从哪个网卡出去的报文。
  • -m
  • -j:指定策略的动作。

基本匹配条件案例一

**需求:**仅允许 192.168.20.21 访问 192.168.20.20 的80端口,其余的来源客户端都拒绝访问。

明确需求后,下面来分析应该如何实现。

这条需求分包含两种不同的条件,首先是允许192.168.20.21访问目标端口,然后是拒绝其他所有的客户端访问。

首先来思考允许的条件如何实现:

1、允许某个来源访问本机的特定服务,这种访问属于数据的流入,那么就会经过PREROUTING和INPUT两个链,允许或者拒绝这些操作都是在filter表实现的,PREROUTING链没有filter,因此首先就可以得出结论,这条规则会在INPUT链的filter表中进行添加。

2、允许192.168.20.21这个地址,那么就需要指定来源的IP,然后根据来源IP的请求,还需要指定目标端的地址。

3、限制来源地址仅访问本机的某个服务,那么就需要指定服务具体的协议以及端口号。

4、最后指定匹配完这些条件后,执行的动作,也就是ACCEPT。

然后来思考拒绝的条件如何实现:

1、首先明确拒绝其余来源访问本机的某个服务,那么一定是在INPUT链的filter表中添加具体的规则。

2、最后声明拒绝其他的来源地址。

注意:由于不是全部拒绝,还有一个来源地址192.168.20.21是允许访问TCP的80端口的,因此在写入拒绝规则时,不能在使用-I参数添加到表的最顶端,应该通过-A参数添加到表的最后一行,追加进去。

1)实现该需求的防火墙规则如下

1.允许192.168.20.21访问192.168.20.20的80端口
[root@jxl-1 ~]# iptables -t filter -I INPUT -s 192.168.20.21 -d 192.168.20.20 -p tcp --dport 80 -j ACCEPT

2.拒绝其余来源IP访问本机的80端口
[root@jxl-1 ~]# iptables -t filter -A INPUT -p tcp --dport 80 -j DROP

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

注意第二条拒绝所有的时候一定要使用-A参数追加到最后一行,否则所有的来源都将不可访问。

2)查看设置的防火墙规则

INPUT链中一共有2条规则,第一条规则的动作是允许,允许192.168.20.21访问192.168.20.20的tcp 80端口,第二条规则的动作是拒绝,拒绝全部IP访问本机的80端口。

[root@jxl-1 ~]# iptables -L -n -v --line-number
Chain INPUT (policy ACCEPT 9483 packets, 17M bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     tcp  --  *      *       192.168.20.21        192.168.20.20        tcp dpt:80
2        0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 9619 packets, 15M bytes)
num   pkts bytes target     prot opt in     out     source               destination         

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3)测试结果

只有来源地址为192.168.20.21的IP,才能访问到192.168.20.20的TCP 80端口的服务。
在这里插入图片描述

基本匹配条件案例二

**需求:**由本机发出的TCP协议的报文都允许,发出的其他协议报文都拒绝。

明确需求后,下面来分析应该如何实现,和案例一类似,分为两种规则,一是允许某一个协议,二是拒绝其余所有的协议。

首先要明确在哪一个链的哪一个表中添加Iptables防火墙规则,看需求中的关键字“由本机发出”,由本机发出都需要经过POSTROUTING和OUTPUT链,这种过滤规则一定会在OUPUT链进行添加,引起POSTROUTING链没有filter表。

明确完再哪一张表和哪一个链添加规则后,就非常容易了。

1)先来添加允许TCP协议报文流出的Iptables防火墙规则。

2)然后来添加拒绝剩余的其他报文,一定要将拒绝的规则添加在允许规则的下面,否则允许的规则将永不生效。

  • 可以先将之前添加的规则清空,以免受到干扰。
    • [root@jxl-1 ~]# iptables -t filter -F

1)实现该需求的防火墙规则如下

1.允许本机的TCP协议报文流出
[root@jxl-1 ~]# iptables -t filter -I OUTPUT -p tcp -j ACCEPT

2.拒绝本机所有协议报文流出
[root@jxl-1 ~]# iptables -t filter -A OUTPUT -p all -j DROP

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

2)查看设置的防火墙规则

在OUTPUT链可以看到两条规则,第一条规则允许TCP协议报文流出,第二条规则拒绝所有协议的报文流出。

[root@jxl-1 ~]# iptables -L -n -v --line-number
Chain INPUT (policy ACCEPT 5138 packets, 8863K bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1     6703   10M ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           
2        1    76 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0  

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3)测试结果

由于拒绝了除TCP协议以外的所有协议,因此再使用ICMP协议时就产生了拒绝的现象,但是使用TCP协议就没有任何影响。
在这里插入图片描述

基本匹配条件案例三

需求: 禁止其他主机从ens192发送来的ping请求。

首先来进行分析,案例三就非常简单了,只有一种条件,那就是禁止其他的主机从本机的ens192网卡发送来的数据报文,从字面意思可以清楚的知道这是一条数据流入的规则。

那么一定是在INPUT链的filter表添加相应的规则策略。

1)实现该需求的防火墙规则如下

[root@jxl-1 ~]# iptables -t filter -I INPUT -i ens192 -p icmp -j DROP

  
 
  • 1

2)查看设置的防火墙规则

在INPUT链中已经添加上了这条规则,凡是来自ens192网卡并且协议是icmp的报文都会被拒绝。

[root@jxl-1 ~]# iptables -L -n -v --line-number
Chain INPUT (policy ACCEPT 2680 packets, 4308K bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 DROP       icmp --  ens192 *       0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 2752 packets, 4004K bytes)
num   pkts bytes target     prot opt in     out     source               destination  

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3)测试结果

在其他主机ping防火墙主机的ens192网卡,发现不通,但是ens224网卡就通。
在这里插入图片描述

拒绝所有协议进入本机的规则配置

iptables -t filter INPUT -j DROP

  
 
  • 1

–dport参数声明多个连续的端口号

--dport 20:22

表示20-22三个端口都可以进行匹配。

  
 
  • 1
  • 2
  • 3

文章来源: jiangxl.blog.csdn.net,作者:Jiangxl~,版权归原作者所有,如需转载,请联系作者。

原文链接:jiangxl.blog.csdn.net/article/details/125671558

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。