Linux之iptables防火墙概述及相关规则(三)

简介: Linux之iptables防火墙概述及相关规则(三)

三、规则的匹配


3.1 通用匹配

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


协议匹配

-p  协议名

地址匹配

-s  源地址、-d目的地址 #可以是IP、网段、域名、空(任何地址)

接口匹配

-i 入站网卡、-o  出站网卡

iptables -A FORWARD ! -p icmp -j ACCEPT
#没有-t指定表,就是指默认表filter表
#!代表条件取反,不是ICMP的都放通
iptables -A INPUT -s 192.168.109.132 -j DROP
#拒绝从哪个主机发数据包过来
iptables -I INPUT -i ens33 -s 192.168.109.0/24 -j DROP
#在行首插入  禁止该网段从ens33网卡进来

案例1


案例2



3.2 隐含匹配

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


3.2.1 端口匹配

--sport 源端口    --dport  目的端口


可以是个别端口、端口范围


--sport 1000

匹配源端口是1000的数据包

--sport 1000:3000

匹配源端口是1000-3000的数据包

--sport  :3000

匹配源端口是3000及以下的数据包

--sport  1000:

匹配源端口是1000及以上的数据包

注意:--sport和--dport必须配合-p  <协议类型>  使用



3.2.2 TCP标记匹配

--tcp-flags  TCP标记


#丢弃SYN请求包,放行其他包
# SYN,RST,ACK SYN  前面三个包逗号,然后空格跟一个,表明前面的三个里面除了这空格后面的SYN,其他都放行
[root@localhost ~]# iptables -I INPUT -i ens33 -p tcp --tcp-flags SYN,RST,ACK SYN -j ACCEPT
[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp flags:0x16/0x02
DROP       all  --  192.168.109.132      0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpts:20:21
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination


3.2.3 ICMP类型匹配

--icmp-type  ICMP类型


可以是字符串、数字代码


Echo-Request(代码为8)

请求

Echo-Reply (代码为0)

回显

Destination-Unreachable(代码为3)

目标不可达

其他可用的icmp协议类型,可以执行iptables -p icmp -h  查看帮助信息


Request--(ping)


Reply --(pong)


有点类似乒乓,一个请求一个回显


iptables -A INPUT -p icmp -j DROP
#增加了此条规则不仅别人ping不通自己,自己也ping不通别人,这是因为回复回不来,数据有ping和pong一来一回,ping出去了,pong不回来,被防火墙拦截了
#如果我们想要双标,别人ping不通自己,但是自己也能ing通别人,怎么操作呢



3.3 显示匹配

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


多端口匹配:


-m multiport --sport   源端口列表


-m multiport --dport   目的端口列表


#m扩展模块可以一次指定多个端口,不必一条条写了
[root@localhost ~]# iptables -A INPUT -p tcp -m multiport --dport 80,22,21,20,53 -j ACCEPT 
[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       icmp --  0.0.0.0/0            0.0.0.0/0            icmptype 8
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 80,22,21,20,53
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination


IP范围匹配:

-m iprange --src-range  源IP范围


-m iprange --dst-range  目的IP范围


#禁止转发源地址位于192.168.109.100-192.168.109.200的udp数据包
[root@localhost ~]# iptables -A FORWARD -p udp -m iprange --src-range 192.168.109.100-192.168.109.200 -j DROP 
[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       icmp --  0.0.0.0/0            0.0.0.0/0            icmptype 8
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 80,22,21,20,53
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
DROP       udp  --  0.0.0.0/0            0.0.0.0/0            source IP range 192.168.109.100-192.168.109.200
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination


MAC地址匹配: (用的不多)

-m mac --mac-source   源MAC地址


iptables -A FORWARD -m mac --mac-source xx:xx:xx:Xx:xx:xx -j DROP
#禁止来自某MAC地址的数据包通过本机转发

状态匹配:

-m state --state连接状态


常见的连接状态:

NEW

主机连接目标主机,在目标主机上看到的第一个想要连接的包

ESTABLISHED

主机已与目标主机进行通信,判断标准只要目标主机回应了第一个包,就进入该状态

RELATED

主机已与目标主机进行通信,目标主机发起新的链接方式,一般与ESTABLISHED配合使用

INVALID

无效的封包,例如数据破损的封包状态
iptables -I INPUT -M state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
#第一个包我只看22端口的包
#-p tcp是隐含匹配,可以省略-m tcp
iptables -A INPUT -p tcp -m multiport --dport 443,80,22,21,20,53 -j ACCEPT
#允许放通tcp的这些端口号
#-m multiport加载多个端口模块
iptables -A INPUT -p udp -m multiport --dport 53 -j ACCEPT
iptables -A INPUT -p tcp -m state --state ESTABLISHED ,RELATED -j ACCEPT
#表示与上述连接相关的数据我都放通
iptables -P INPUT DROP
#默认关闭,将以上的设置设为白名单


总结


Linux防火墙系统


组成 内核态 netilter(保存包过滤处理的规则集);用户态 iptables(防火墙规则管理工具)


四表


raw         对数据包进行状态跟踪


mangle   修改数据包内容,给数据包设置标记


nat          地址转换,转换源/目的IP或者端口


fileter       过滤数据包 放行 丢弃


五链


INPUT                入站


OUTPUT            出站


FORWARD         转发


PREROUTING    路由前修改目的地址


POSTROUTING  路由后修改源IP


链中的规则集:从上往下一次匹配,匹配到规则即停止,若都没有匹配到则按默认策略处理


iptables  -t  表  -A 在末尾添加  -j  控制类型


                        -I  在前面插入


                        -D 删除


                         -F 清空


                         -R 改


                         -nL  查


                          -P 设置默认规则


匹配条件


-p tcp|udp|icmp


-s 源IP


-d 目的IP


-i 入站网卡


-o 出站网卡


数据包通信要素

四要素

五要素

源IP        目的IP

+协议  UDP/TCP

源端口        目的端口

目录
相关文章
|
存储 监控 安全
比较入站和出站防火墙规则
本文介绍了入站与出站流量的区别,以及如何通过配置入站和出站防火墙规则来保护网络安全。入站规则拦截恶意来源的流量,防止攻击;出站规则监控合法流量,阻止数据泄露。同时,推荐使用 EventLog Analyzer 工具实时监控防火墙规则变更、简化日志审计、分析流量和审核 VPN 日志,帮助构筑更安全的网络防线,快速响应潜在威胁。
1941 1
|
Linux 网络性能优化 网络安全
Linux(openwrt)下iptables+tc工具实现网络流量限速控制(QoS)
通过以上步骤,您可以在Linux(OpenWrt)系统中使用iptables和tc工具实现网络流量限速控制(QoS)。这种方法灵活且功能强大,可以帮助管理员有效管理网络带宽,确保关键业务的网络性能。希望本文能够为您提供有价值的参考。
3432 28
|
机器学习/深度学习 安全 网络协议
Linux防火墙iptables命令管理入门
本文介绍了关于Linux防火墙iptables命令管理入门的教程,涵盖了iptables的基本概念、语法格式、常用参数、基础查询操作以及链和规则管理等内容。
634 73
|
人工智能 Java 关系型数据库
Red Hat Enterprise Linux 9.5 发布下载,新增功能亮点概述
Red Hat Enterprise Linux 9.5 发布下载,新增功能亮点概述
1165 4
Red Hat Enterprise Linux 9.5 发布下载,新增功能亮点概述
|
网络协议 Ubuntu 网络安全
|
监控 安全 Linux
启用Linux防火墙日志记录和分析功能
为iptables启用日志记录对于监控进出流量至关重要
627 1
|
运维 安全 Linux
全面提升系统安全:禁用不必要服务、更新安全补丁、配置防火墙规则的实战指南
全面提升系统安全:禁用不必要服务、更新安全补丁、配置防火墙规则的实战指南
892 12
|
运维 网络协议 安全
Linux安全运维--一篇文章全部搞懂iptables
Linux安全运维--一篇文章全部搞懂iptables
431 1
|
存储 运维 Linux
Linux防火墙firewall的使用
CentOS 7 中的 firewalld 是基于 Netfilter 的防火墙服务,支持动态配置,无需重启服务即可生效。它通过区域管理网络流量,每个区域可以设置不同的防火墙规则。默认区域为 public,可以通过命令行工具 firewall-cmd 进行管理和配置。firewalld 提供了丰富的预定义服务和区域,方便用户根据需求进行灵活配置。
395 0