写点什么

【Linux】iptables 之防火墙概述及规则匹配 + 实例(1)

作者:A-刘晨阳
  • 2023-04-22
    北京
  • 本文字数:2676 字

    阅读完需:约 9 分钟

一、防火墙的基础概念

1、防火墙的概念与应用

  网络中的防火墙,是一种将内部网络和外部网络分开的方法,是一种隔离技术。防火墙在内网与外网通信时进行访问控制,依据所设置的规则对数据包作出判断,最大限度地阻止网络中的黑客破坏企业网络,从而加强企业网络安全。

2、包过滤的工作层次

  主要是网络层,针对 IP 数据包,体现对包内的 IP 地址、端口等信息的处理上。

二、iptables 的四表五链

表中存放的是链,链中存放的是规则


四表:优先级:filter<nat<mangle<raw



链表结构关系图:



五链:



规则链之间的顺序:


入站: PREROUTING→INPUT                  路由选择前→入站出站:OUTPUT→POSTROUTING               出站→路由选择后转发:PREROUTING→FORWARD→POSTROUTING 路由选择前→转发→路由选择后

不管是路由入站还是转发,都要选择路由选择前不管是路由出站还是转发,都要选择路由选择后

三、iptables 命令

1、语法结构

iptables [-t 表名] 选项&参数 [链名][匹配条件][-j 动作控制类型]
复制代码


注意事项:  不指定表名时,默认指 filter 表  不指定链名时,默认指表内的所有链  除非设置链的默认策略,否则必须指定匹配条件  选项、链名、控制类型使用大写字母,其余均为小写


数据包的常见控制类型/动作类型:-j


2、iptables 的选项参数及实例

选项及参数:



实例:


1、-t:指定查看 raw 表


iptables -t raw -L
复制代码


2、-A \-s\-j:追加一条规则,使 192.168.2.2 禁止访问


iptables -A INPUT -s 192.168.2.2 -j REJECT
复制代码


3、-I\-s\-j:插入一条规则,允许访问 192.168.2.2


iptables -I INPUT -s 192.168.2.2 -j ACCEPT
复制代码


4、-R\-s\-j:第一条规则,修改为丢弃 192.168.2.2;将第二条 prot 的 udp 改为 icmp 并且开放


iptables -R INPUT 1 -s 192.168.2.2 -j DROP
iptables -R INPUT 2 -p icmp -j ACCEPT
复制代码


5、-D:删除一条指定的规则


iptables -D INPUT 3
复制代码


6、-L:查看防火墙规则,后可以指定链


#查看所有防火墙规则iptables -L 
#指定链:查看入站防火墙规则iptables -L INPUT
复制代码


7、-F:清空防火墙规则 ;也可以指定清空某一个表的所有规则


iptables -F
iptables -t nat -F
复制代码


8、-n:以数字形式显示;要和-L 配合看


iptables -L -n
复制代码


9、-v:已更详细的方式查看规则信息


iptables -L -n -v
复制代码


10、--line-numbers 或--line:显示规则编号;要和-L 配合看


iptables -L --line-numbers
iptables -L --line
复制代码

四、iptables 规则的匹配类型

1、通用匹配  可直接使用,不依赖与其他条件或扩展  包括网络协议、IP 地址、网络接口等条件


2、隐含匹配  要求以特定的协议匹配作为前提  包含端口、TCP 标记、ICMP 类型等条件


3、显式匹配  要求以“-m 扩展模块”的形式明确指出类型  包括多端口、MAC 地址、IP 范围、数据包状态等条件


常用管理选项汇总表:



1、通用匹配

常见的通用匹配条件:  协议匹配:-p 协议名  地址匹配:-s 源地址、-d 目的地址  接口匹配:-i 入站网卡、-o 出站网卡

1.1、协议匹配

协议匹配:-p 协议名


允许所有的 TCP 协议进入


iptables -A INPUT -p tcp -j ACCEPT
复制代码



除了 icmp 协议其他协议都丢弃


iptables -I FORWARD ! -p icmp -j DROP
复制代码


1.2、地址匹配

地址匹配:-s 源地址、-d 目的地址


允许访问 ip 地址 192.168.2.2


iptables -I INPUT -s 192.168.2.2 -j ACCEPT
复制代码



丢弃 192.168.1.0/24 网段的 ip


iptables -I INPUT -s 192.168.1.0/24 -j DROP
复制代码



访问地址将地址转发到目标地址“192.168.2.22”并且开放


iptables -A FORWARD -d 192.168.2.22 -j ACCEPT
复制代码


1.3、接口匹配

接口匹配:-i 入站网卡、-o 出站网卡


将 eth1 的网卡在入站时丢弃


iptables -I INPUT -i eth1 -j DROP
复制代码



将 eth1 的网卡在出站时丢弃


iptables -I OUTPUT -o eth1 -j DROP
复制代码


2、隐含匹配

常见的隐含匹配条件:  端口匹配:-p 来指定,--sport 源端口、--dport 目的端口  TCP 匹配:--tcp-flags 检查范围 被设置的标记  ICMP 匹配:--icmp-type ICMP 类型

2.1、端口匹配

端口匹配:-p 来指定,--sport 源端口、--dport 目的端口


将源网段设置为 udp 协议且目标端口为 53,并开启地址转发将目标网段设置为 udp 协议且源端口为 53,并开启地址转发


iptables -A FORWARD -s 192.16.2.2/24 -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -d 192.16.2.2/24 -p udp --sport 53 -j ACCEPT
复制代码



将源网段“192.16.2.0/24”设置为 tcp 协议且目标端口为 53,并开启地址转发将目标网段“192.16.2.0/24”设置为 tcp 协议且源端口为 53,并开启地址转发


iptables -A FORWARD -s 192.16.2.0/24 -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -d 192.16.2.0/24 -p tcp --sport 53 -j ACCEPT
复制代码



开放 TCP 协议且目标端口为 22,允许进入开放 TCP 协议且目标端口为 20-21,允许进入


iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
复制代码


2.2、TCP 匹配

TCP 匹配:--tcp-flags 检查范围 被设置的标记


指定 eth1 网卡,port 设置为 tcp 协议,检查范围为 SYN、RST、ACK,监测到的都丢弃


指定 eth1 网卡,port 设置为 tcp 协议,除了检查范围中的 SYN、RST、ACK,其他都可以进入


iptables -I INPUT -i eth1 -p tcp --tcp-flags SYN,RST,ACK SYN -j DROP
iptables -I INPUT -i eth1 -p tcp ! --tcp-flags SYN,RST,ACK SYN -j ACCEPT
复制代码


2.3、ICMP 匹配

ICMP 匹配:--icmp-type ICMP 类型


常见的 icmp 类型   8  Echo request——回显请求(Ping 请求)  0  Echo Reply——回显应答(Ping 应答)  3  错误回显





获取帮助:iptables -p icmp -h

3、显式匹配

常见的显式匹配条件:  多端口匹配:-m multiport --sports | --dports 端口列表  IP 范围匹配:-m iprange --src-range IP 范围  MAC 地址匹配:-m mac --mac-source MAC 地址  状态匹配:-m state --state 连接状态

3.1、多端口匹配

多端口匹配:-m multiport --sports | --dports 端口列表


允许 22、25、80、110、143 端口进入并开启 tcp 协议


iptables -I INPUT -p tcp -m multiport --dport 22,25,80,110,143 -j ACCEPT
复制代码


3.2、IP 范围匹配

IP 范围匹配:-m iprange --src-range IP 范围


允许 192.168.1.100-192.168.1.110 这个范围的 ip 进入并设置 tcp 协议


iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.100-192.168.1.110 -j ACCEPT
复制代码


3.3、MAC 地址匹配

MAC 地址匹配:-m mac --mac-source MAC 地址


只要 mac 地址是 00:0c:29:c2:83:32 的都丢弃


iptables -A FORWARD -m mac --mac-source 00:0c:29:c2:83:32 -j DROP
复制代码


3.4、状态匹配

状态匹配:-m state --state 连接状态


常见的连接状态:  NEW:新连接,与任何连接无关

  ESTABLISHED:响应请求或已建立连接的   RELATED:与已连接有相关性的,如 FTP 数据连接



发布于: 2023-04-22阅读数: 34
用户头像

A-刘晨阳

关注

还未添加个人签名 2022-06-16 加入

本人公众号《小刘Linux》,优质博主,欢迎大家的关注

评论

发布
暂无评论
【Linux】iptables之防火墙概述及规则匹配+实例(1)_Linux_A-刘晨阳_InfoQ写作社区