上海市普陀区建设规划局网站长沙如何优化排名
上海市普陀区建设规划局网站,长沙如何优化排名,wordpress建淘宝客,网站建设 网站制作目录
一、防火墙基本认识
1. 安全技术
2. 防火墙分类
3. 防火墙工具介绍
二、iptables
1. 概述
2. 五表五链
3. 语法
3.1 基本语法
3.2 语法总结
4. 管理选项
5. 通用匹配
6. 控制类型
7. iptables应用
7.1 新增防火墙规则
7.2 查看规则表
7.3 黑白名单
7.4 …目录
一、防火墙基本认识
1. 安全技术
2. 防火墙分类
3. 防火墙工具介绍
二、iptables
1. 概述
2. 五表五链
3. 语法
3.1 基本语法
3.2 语法总结
4. 管理选项
5. 通用匹配
6. 控制类型
7. iptables应用
7.1 新增防火墙规则
7.2 查看规则表
7.3 黑白名单
7.4 替换、删除、清空规则
7.5 设置默认策略
8. 自定义链
8.1 创建自定义链
8.2 改名
8.3 自定义链添加规则
8.4 使用自定义链
8.5 删除自定义链
9. 隐含扩展模块
9.1 TCP模块
9.2 ICMP模块
10. 显示扩展模块
10.1 multiport扩展混合端口
10.2 iprange扩展
10.3 mac地址
10.4 string 字符串
10.5 time模块
10.6 connlimit扩展
10.7 limit模块限制流量
10.8 state模块 一、防火墙基本认识
1. 安全技术
① 入侵检测系统Intrusion Detection Systems特点是不阻断任何网络访问量化、定位来自内外网络的威胁情况主要以提供报警和事后监督为主提供有针对性的指导措施和安全决策依据,类 似于监控系统一般采用旁路部署默默的看着你方式。
② 入侵防御系统Intrusion Prevention System以透明模式工作分析数据包的内容如溢出攻击、拒绝服务攻击、木马、蠕虫、系统漏洞等进行准确的分析判断在判定为攻击行为后立即予以 阻断主动而有效的保护网络的安全一般采用在线部署方式必经之路。
③ 防火墙 FireWall 隔离功能工作在网络或主机边缘对进出网络或主机的数据包基于一定的规则检查并在匹配某规则时由规则定义的行为进行处理的一组功能的组件基本上的实现都是默 认情况下关闭所有的通过型访问只开放允许访问的策略,会将希望外网访问的主机放在DMZ (demilitarized zone)网络中。
④ 防水墙Waterwall与防火墙相对是一种防止内部信息泄漏的安全产品。 网络、外设接口、存储介质和打印机构成信息泄漏的全部途径。防水墙针对这四种泄密途径在事前、事 中、事后进行全面防护。其与防病毒产品、外部安全产品一起构成完整的网络安全体系。
2. 防火墙分类
按保护范围划分
主机防火墙服务范围为当前一台主机网络防火墙服务范围为防火墙一侧的局域网
按实现方式划分
硬件防火墙在专用硬件级别实现部分功能的防火墙另一个部分功能基于软件实现如华为 山石hillstone,天融信启明星辰绿盟深信服, PaloAlto , fortinet, Cisco, Checkpoint NetScreen(Juniper2004年40亿美元收购)等软件防火墙运行于通用硬件平台之上的防火墙的应用软件Windows 防火墙 ISA -- Forefront
按网络协议划分
网络层防火墙OSI模型下四层又称为包过滤防火墙应用层防火墙/代理服务器proxy 代理网关OSI模型七层
3. 防火墙工具介绍
① iptablesiptables是Linux中最常用的防火墙工具之一。它基于内核的Netfilter框架可以配置规则集来过滤、转发和修改网络数据包。iptables提供了广泛的功能和灵活性可以根据源IP地址、目标IP地址、端口号等多个参数进行过滤。
② firewalldfirewalld是Red Hat系列Linux发行版中默认的防火墙管理工具。它使用了D-Bus接口和动态防火墙规则支持更高级的网络配置。firewalld通过定义“区域”和“服务”来管理网络连接并且可以实时更新规则而无需重启防火墙。
③ nftablesnftables是Netfilter框架的下一代替代品。它提供了更简洁和高效的语法支持类似于iptables的过滤、NAT和连接跟踪功能。nftables的目标是取代iptables并提供更好的性能和可扩展性。
二、iptables
1. 概述
属于“用户态”(User Space 又称为用户空间)的防火墙管理体系。是一种用来管理Linux防火墙的命令程序它使插入、修改和删除数据包过滤表中的规则变得容易通常位于/sbin/iptables目录下。 netfilter/iptables后期简称为iptables。iptables是基于内核的防火墙其中内置了raw、mangle、 nat和filter四个规则表。表中所有规则配置后立即生效不需要重启服务。
2. 五表五链
iptables由五个表table和五个链chain以及一些规则组成。表中有链链中有规则。iptables使用表来组织规则链是规则的容器用于按顺序处理数据包。
五个表tablefilter、nat、mangle、raw、security用的较少
raw关闭启用的连接跟踪机制加快封包穿越防火墙速度跟踪数据包mangle修改数据标记位规则表标记数据包natnetwork address translation 地址转换公网和私网的地址转换filter过滤规则表根据预定义的规则过滤符合条件的数据包默认表允许、拒绝security用于强制访问控制MAC网络规则由Linux安全模块如SELinux)实现 (了解)
优先级由高到低的顺序为security --raw--mangle--nat--filter
五个链chaininput、output、forward、postrouting、prerouting
input 处理入站数据output处理出站数据forward转发数据prerouting处理路由选择前数据postrouting处理路由选择后数据
内核中数据包的传输过程 ① 当一个数据包进入网卡时数据包首先进入PREROUTING链内核根据数据包目的IP判断是否需要转送出去
② 如果数据包是进入本机的数据包就会沿着图向下移动到达INPUT链。数据包到达INPUT链后 任何进程都会收到它。本机上运行的程序可以发送数据包这些数据包经过OUTPUT链然后到达
③ 如果数据包是要转发出去的且内核允许转发数据包就会向右移动经过FORWARD链然后到达POSTROUTING链输出
三种报文流向
流入本机PREROUTING -- INPUT--用户空间进程流出本机用户空间进程 --OUTPUT-- POSTROUTING转发PREROUTING -- FORWARD -- POSTROUTING
3. 语法
3.1 基本语法
iptables [-t 表名] -管理选项 [链表] [通用规则匹配] [-j 控制类型]#不指定默认filter表
3.2 语法总结 4. 管理选项
在使用iptables进行防火墙管理时可以使用各种选项来配置规则、查看规则、添加/删除规则以及保存/加载规则等。以下是一些常用的iptables防火墙管理选项的介绍
管理选项用法示例-A在指定链末尾追加一条 iptables -A INPUT 操作-I在指定链中插入一条新的未指定序号默认作为第一条 iptables -I INPUT 操作-P指定默认规则 iptables -P OUTPUT ACCEPT 操作-D删除 iptables -t nat -D INPUT 2 操作-p服务名称 icmp tcp-R修改、替换某一条规则 iptables -t nat -R INPUT 操作-L查看 iptables -t nat -L 查看-n所有字段以数字形式显示比如任意ip地址是0.0.0.0而不是anywhere比如显示协议端口号而不是服务名 iptables -L -n,iptables -nL,iptables -vnL 查看-v查看时显示更详细信息常跟-L一起使用 查看--line-number规则带编号 iptables -t nat -L -n --line-number /iptables -t nat -L --line-number-F清除链中所有规则 iptables -F 操作-N新加自定义链-X清空自定义链的规则不影响其他链 iptables -X-Z清空链的计数器匹配到的数据包的大小和总和iptables -Z-S看链的所有规则或者某个链的规则/某个具体规则后面跟编号
5. 通用匹配
直接使用不依赖于其他条件或扩展包括网络协议、IP地址、网络接口等条件。
协议匹配: -p协议名地址匹配: -s 源地址、-d目的地址。可以是IP、网段、域名、空(任何地址)接口匹配: -i入站网卡、-o出站网卡
iptables -I INPUT -p icmp -j DROP
iptables -A FORWARD ! -p icmp -j ACCEPT #感叹号”!”表示取反
6. 控制类型
对于防火墙数据包的控制类型非常关键直接关系到数据包的放行、封堵及做相应的日志记录等。在 iptables 防火墙体系中最常用的几种控制类型如下
- ACCEPT允许数据包通过- DROP直接丢弃数据包不给出任何回 应信息 - REJECT拒绝数据包通过必要时会给数据发送端一个响应信息- LOG在/var/log/messages 文件中记录日志信息然后将数据包传递给下一条规则- SNAT:修改数据包的源地址- DNAT:修改数据包的目的地址- MASQUERADE:伪装成一个非固定公网IP地址
7. iptables应用
iptables是Linux中最常用的防火墙工具之一它基于内核的Netfilter框架。iptables可以通过配置规则集来过滤、转发和修改网络数据包从而保护计算机系统免受网络攻击。
7.1 新增防火墙规则
添加新的防火墙规则时使用管理选项“-A”、“-I”前者用来追加规则后者用来插入规则。注意-A代表最底部插入-I默认首行插入-I 数字代表插入第数字条。
示例
[rootlocalhost ~]# systemctl stop firewalld.service
#需要关闭firewalld.service防火墙服务
[rootlocalhost ~]# iptables -t filter -A INPUT -p icmp -j DROP
#建立iptables防火墙规则指定filter规则表添加INPUT链规则规定icmp协议控制拒绝即拒绝来自任意主机的icmp包禁止ping本机这里省略了-s 源地址也就是所有。
[rootlocalhost ~]# iptables -A INPUT -s 192.168.190.101 -p tcp --dport 22 -j ACCEPT
#允许来自192.168.192.168主机访问本机的22端口这里省略了-t filter不指定认filter表。[rootlocalhost ~]# iptables -vnL
Chain INPUT (policy ACCEPT 19 packets, 1156 bytes)pkts bytes target prot opt in out source destination 0 0 DROP icmp -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT tcp -- * * 192.168.190.101 0.0.0.0/0 tcp dpt:22
[rootlocalhost ~]# iptables -I INPUT 2 -s 192.168.190.101 -j ACCEPT
#在链表第条二插入规则
[rootlocalhost ~]# iptables -vnL
Chain INPUT (policy ACCEPT 8 packets, 488 bytes)pkts bytes target prot opt in out source destination 0 0 DROP icmp -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- * * 192.168.190.101 0.0.0.0/0 0 0 ACCEPT tcp -- * * 192.168.190.101 0.0.0.0/0 tcp dpt:227.2 查看规则表
查看已有的防火墙规则时使用管理选项“-L”结合“--line-numbers”选项还可显示各条规则在链内的顺序号。一般格式如下
iptables [-t表名] -v -n -L [链名] [-- line-numbers]
-v详细信息-n规则-L 规则列表
注意L必须写在最后
示例
[rootlocalhost ~]# iptables -vnL #查看全部规则
Chain INPUT (policy ACCEPT 367 packets, 27100 bytes)pkts bytes target prot opt in out source destination 0 0 DROP icmp -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT tcp -- * * 192.168.190.100 0.0.0.0/0 tcp dpt:22Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 247 packets, 25974 bytes)pkts bytes target prot opt in out source destination
[rootlocalhost ~]# iptables -t filter -vnL INPUT 2 #指定查看filter表INPUT链第二条规则0 0 ACCEPT tcp -- * * 192.168.190.100 0.0.0.0/0 tcp dpt:22[rootlocalhost ~]# iptables -vnL --line-numbers
#查看filter表INPUT链规则编号
Chain INPUT (policy ACCEPT 38 packets, 2220 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 DROP icmp -- * * 0.0.0.0/0 0.0.0.0/0
2 0 0 ACCEPT tcp -- * * 192.168.190.100 0.0.0.0/0 7.3 黑白名单
在iptables防火墙中可以使用黑名单和白名单来控制网络流量的访问权限。黑名单和白名单是两种不同的策略用于指定哪些IP地址或IP地址段被允许或禁止通过防火墙。
① 黑名单默认全部允许通过添加谁才不允许谁通过。
② 白名单默认全部不允许通过添加谁允许谁通过。
如何制作白名单提高安全性且不影响使用iptables -F命令
[rootlocalhost ~]# iptables -A INPUT -s 192.168.190.1 -j ACCEPT
[rootlocalhost ~]# iptables -A INPUT -j DROP
[rootlocalhost ~]# iptables -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)pkts bytes target prot opt in out source destination 29 1716 ACCEPT all -- * * 192.168.190.1 0.0.0.0/0 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 13 packets, 1000 bytes)pkts bytes target prot opt in out source destination
#在最后加入一条拒绝所有入站数据的规则注意需要在拒绝所有入站数据规则前加上自己想要访问地址的规则。最后一条规则在这里可以实现既是白名单也是黑名单。
7.4 替换、删除、清空规则
[rootlocalhost ~]# iptables -vnL
Chain INPUT (policy ACCEPT 10 packets, 612 bytes)pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- * * 192.168.190.101 0.0.0.0/0 0 0 DROP all -- * * 192.168.190.102 0.0.0.0/0 0 0 ACCEPT all -- * * 192.168.190.102 0.0.0.0/0 [rootlocalhost ~]# iptables -R INPUT 3 -s 192.168.190.102 -j DROP
#修改、替换某一条规则需要在链后指定序号
[rootlocalhost ~]# iptables -vnL
Chain INPUT (policy ACCEPT 8 packets, 488 bytes)pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- * * 192.168.190.101 0.0.0.0/0 0 0 DROP all -- * * 192.168.190.102 0.0.0.0/0 0 0 DROP all -- * * 192.168.190.102 0.0.0.0/0 [rootlocalhost ~]# iptables -D INPUT -s 192.168.190.102 -j DROP
#按内容删除若遇到内容相同的规则默认删除序号最小的那条
[rootlocalhost ~]# iptables -vnL
Chain INPUT (policy ACCEPT 8 packets, 488 bytes)pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- * * 192.168.190.101 0.0.0.0/0 0 0 DROP all -- * * 192.168.190.102 0.0.0.0/0 [rootlocalhost ~]# iptables -D INPUT 2
#按编号删除
[rootlocalhost ~]# iptables -vnL
Chain INPUT (policy ACCEPT 10 packets, 612 bytes)pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- * * 192.168.190.101 0.0.0.0/0 [rootlocalhost ~]# iptables -F
#清空filter规则
[rootlocalhost ~]# iptables -vnL
Chain INPUT (policy ACCEPT 6 packets, 364 bytes)pkts bytes target prot opt in out source destination
清空指定链或表中的所有防火墙规则使用管理选项“-F”。例如若要清空 filter 表 INPUTiptables -F INPUT即可。
注意
若规则列表中有多条相同的规则时按内容匹配只删除的序号最小的一条按号码匹配删除时确保规则号码小于等于已有规则数否则报错按内容匹配删数时确保规则存在否则报错
7.5 设置默认策略
iptables 的各条链中默认策略是规则匹配的最后一个环节——当找不到任何一条能够匹配数据包的规则时则执行默认策略。默认策略的控制类型为 ACCEPT允许、DROP丢弃两种。
[rootlocalhost ~]# iptables -P INPUT DROP
#默认清除所有规则输入后没显示无法远程连接因为INPUT链只剩下DROP默认拒绝所有
[rootlocalhost ~]# iptables -A INPUT -s 192.168.190.1 -p tcp -j ACCEPT
#添加远程访问规则
[rootlocalhost ~]# iptables -vnL
Chain INPUT (policy DROP 0 packets, 0 bytes)pkts bytes target prot opt in out source destination 50 5302 ACCEPT tcp -- * * 192.168.190.1 0.0.0.0/0
设置回环网卡允许访问规则可以连通本机所有网卡
[rootlocalhost ~]# iptables -A INPUT -s 192.168.190.1 -j ACCEPT
[rootlocalhost ~]# iptables -A INPUT -s 192.168.190.0/24 -j REJECT
[rootlocalhost ~]# iptables -A INPUT -s 172.19.8.0/24 -j REJECT
[rootlocalhost ~]# iptables -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)pkts bytes target prot opt in out source destination 249 18736 ACCEPT all -- * * 192.168.190.1 0.0.0.0/0 0 0 REJECT all -- * * 192.168.190.0/24 0.0.0.0/0 reject-with icmp-port-unreachable0 0 REJECT all -- * * 172.19.8.0/24 0.0.0.0/0 reject-with icmp-port-unreachable测试连通性无法ping通
[rootlocalhost ~]# ping 192.168.190.100
PING 192.168.190.100 (192.168.190.100) 56(84) bytes of data.
[rootlocalhost ~]# ping 172.19.8.211
PING 172.19.8.211 (172.19.8.211) 56(84) bytes of data.添加允许流量进入本机回环网卡并测试连通性
[rootlocalhost ~]# iptables -I INPUT 2 -i lo -j ACCEPT
[rootlocalhost ~]# ping 192.168.190.100
PING 192.168.190.100 (192.168.190.100) 56(84) bytes of data.
64 bytes from 192.168.190.100: icmp_seq1 ttl64 time0.035 ms
[rootlocalhost ~]# ping 172.19.8.211
PING 172.19.8.211 (172.19.8.211) 56(84) bytes of data.
64 bytes from 172.19.8.211: icmp_seq1 ttl64 time0.038 ms8. 自定义链
自定义链是iptables中的一种功能它允许用户创建自己的链来组织和管理规则。自定义链可以帮助简化规则集使其更易于管理。通过将相关规则放入一个自定义链中可以提高可读性并降低错误发生的可能性。此外自定义链还可以在多个规则之间共享相同的操作从而减少冗余。
8.1 创建自定义链
格式
iptables -N CUSTOM_CHAIN_NAME
示例
[rootlocalhost ~]# iptables -N web
[rootlocalhost ~]# iptables -vnL
Chain web (0 references)pkts bytes target prot opt in out source destination
8.2 改名
[rootlocalhost ~]# iptables -E web WEB
[rootlocalhost ~]# iptables -vnL
Chain WEB (0 references)pkts bytes target prot opt in out source destination
8.3 自定义链添加规则
[rootlocalhost ~]# iptables -A WEB -p tcp -m multiport --dport 80,443 -j ACCEPT
[rootlocalhost ~]# iptables -A WEB -p tcp --dport 8080 -j ACCEPT
[rootlocalhost ~]# iptables -vnL
Chain WEB (0 references)pkts bytes target prot opt in out source destination 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 80,4430 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80808.4 使用自定义链
[rootlocalhost ~]# iptables -A INPUT -s 192.168.190.101 -j WEB
[rootlocalhost ~]# iptables -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)pkts bytes target prot opt in out source destination0 0 WEB all -- * * 192.168.190.101 0.0.0.0/0
8.5 删除自定义链
[rootlocalhost ~]# iptables -X WEB
9. 隐含扩展模块
iptables防火墙中的隐含扩展是指一些特殊的扩展模块它们不需要显式加载而是隐含在iptables中。这些隐含扩展包括一些常见的功能如状态跟踪state tracking、网络地址转换Network Address TranslationNAT和数据包过滤等。
iptables 在使用-p选项指明了特定的协议时无需再用-m选项指明扩展模块的扩展机制不需要手动加载扩展模块。要求以特定的协议匹配作为前提包括端口、TCP标记、ICMP类型等条件。 端口匹配: --sport 源端口、--dport 目的端口可以是个别端口、端口范围。
9.1 TCP模块
TCP模块允许iptables根据TCP连接的状态进行过滤和处理。
端口号 [!] --source-port, --sport port[:port]匹配报文源端口,可为端口连续范围 [!] --destination-port,--dport port[:port]匹配报文目标端口,可为连续范围 --sport 指明源端口使用格式 --sport 端口或 端口1端口2(端口1到端口2的连续端口范围指定)。
[rootlocalhost ~]#iptables -A INPUT -p tcp --sport 10000:30000 -j REJECT
#端口10000到30000全部拒绝
--dport 指明目的端口使用格式 --dport 端口或 端口1端口2(端口1到端口2的连续端口范围指定)。
[rootlocalhost ~]# iptables -A INPUT -p -s 192.168.190.0/24 --dport 80 -j ACCEPT
#允许192.168.91段访问80端口
示例拒绝目标端口为80的tcp协议流量
192.168.19.100
[rootlocalhost ~]# iptables -t filter -A INPUT -m tcp -p tcp --dport 80 -j REJECT
#拒绝所有目标端口为80的TCP协议数据包的输入流量并且该规则适用于filter表。协议名和模块名重复这里- m模块可以省略。192.168.190.101
[rootlocalhost ~]# curl 192.168.190.100:80
curl: (7) Failed connect to 192.168.190.100:80; 拒绝连接
[rootlocalhost ~]# ssh root192.168.190.100
The authenticity of host 192.168.190.100 (192.168.190.100) cant be established.
ECDSA key fingerprint is SHA256:68qeJTs9OwWCvFNtomXsQvrfbno8F3moR0oliq7QU.
ECDSA key fingerprint is MD5:3b:d2:42:d9:c3:03:ba:ac:18:2c:e0:03:a3:c7:bd:ba.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 192.168.190.100 (ECDSA) to the list of known hosts.
root192.168.190.100s password:
Last login: Sat Feb 3 22:51:26 2024 from 192.168.190.100
示例拒绝ip192.168.190.101目标端口为20到80的tcp协议流量
192.168.190.100
[rootlocalhost ~]# iptables -A INPUT -p tcp --dport 22:80 -s 192.168.190.101 -j REJECT
##拒绝192.168.190.101目标端口为20到80的TCP协议数据包的输入流量192.168.190.101
[rootlocalhost ~]# curl 192.168.190.100:80
curl: (7) Failed connect to 192.168.190.100:80; 拒绝连接
[rootlocalhost ~]# ssh root192.168.190.100
ssh: connect to host 192.168.190.100 port 22: Connection refused
#ssh协议用的是22端口这里拒绝了22-80所有的端口注意--sport和--dport 必须配合-p 协议类型使用
握手连接 [!] --tcp-flags mask comp mask 需检查的标志位列表用,分隔 , 例如 SYN,ACK,FIN,RST comp 在mask列表中必须为1的标志位列表无指定则必须为0用,分隔tcp协议的扩展选项 --tcp-flags SYN,ACK,FIN,RST SYN
#表示要检查的标志位为SYN,ACK,FIN,RST四个其中SYN必须为1余下的必须为0第一次握手
--tcp-flags FIN,RST SYN,ACK
#第二次握手
--tcp-flags ALL ALL //6给位置全为1不可能
--tcp_flags ALL NONE //6给位置全为0不可能
#错误包代表流量有问题--syn用于匹配第一次握手相当于--tcp-flags SYN,ACK,FIN,RST SYN
示例拒绝第一次握手即无法建立tcp连接
192.168.190.100
[rootlocalhost ~]# iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST SYN -s 192.168.190.101 -j REJECT
#拒绝三次握手第一次握手即拒绝所有tcp协议的连接192.168.190.101
[rootlocalhost ~]# curl 192.168.190.100:80
curl: (7) Failed connect to 192.168.190.100:80; 拒绝连接
[rootlocalhost ~]# ssh root192.168.190.100
ssh: connect to host 192.168.190.100 port 22: Connection refused9.2 ICMP模块
ICMP模块允许iptables根据ICMP协议的类型和代码进行过滤和处理。 类型匹配--icmp-type ICMP类型 可以是字符串、数字代码 Echo- Request (代码为8)表示请求 Echo- Reply (代码为0)表示回复 Dest ination-Unreachable (代码为3)表示目标不可达 关于其它可用的ICMP协议类型可以执行“iptables -p icmp -h”命令查看帮助信息 示例192.168.190.100可以单向ping通192.168.190.101
思路100ping101100发送8包101发送0包反之101发送8包100发送0包。这里只需要禁止来自101的8包即可达到目标。
192.168.190.100
[rootlocalhost ~]# iptables -A INPUT -s 192.168.190.101 -p icmp --icmp-type 8 -j REJECT
#拒绝源地址192.168.190.100的icmp协议类型为8的包
[rootlocalhost ~]# ping 192.168.190.101
PING 192.168.190.101 (192.168.190.101) 56(84) bytes of data.
64 bytes from 192.168.190.101: icmp_seq1 ttl64 time0.727 ms
64 bytes from 192.168.190.101: icmp_seq2 ttl64 time1.35 ms
64 bytes from 192.168.190.101: icmp_seq3 ttl64 time1.05 ms192.168.190.101
[rootlocalhost ~]# ping 192.168.190.100
PING 192.168.190.100 (192.168.190.100) 56(84) bytes of data.
From 192.168.190.100 icmp_seq1 Destination Port Unreachable
From 192.168.190.100 icmp_seq2 Destination Port Unreachable
From 192.168.190.100 icmp_seq3 Destination Port Unreachable
当然也可以禁止100OUTPUT0包实现目标
191.168.190.100
[rootlocalhost ~]# iptables -A OUTPUT -d 192.168.190.101 -p icmp --icmp-type 0 -j REJECT
#禁止给目标地址发送icmp协议类型为0的包
[rootlocalhost ~]# ping 192.168.190.101
PING 192.168.190.101 (192.168.190.101) 56(84) bytes of data.
64 bytes from 192.168.190.101: icmp_seq1 ttl64 time0.861 ms
64 bytes from 192.168.190.101: icmp_seq2 ttl64 time1.99 ms192.168.190.101
[rootlocalhost ~]# ping 192.168.190.100
PING 192.168.190.100 (192.168.190.100) 56(84) bytes of data.
10. 显示扩展模块
显示扩展即必须使用-m选项指明要调用的扩展模块名称需要手动加载扩展模块。
10.1 multiport扩展混合端口
以离散方式定义多端口匹配,最多指定15个端口。
选项 [!] --source-ports,--sports port[,port|,port:port]... #指定多个源端口 逗号隔开 [!] --destination-ports,--dports port[,port|,port:port]... # 指定多个目标端口 逗号隔开 [!] --ports port[,port|,port:port]... #多个源或目标端 示例使用混合模块控制多个端口
192.168.190.100
[rootlocalhost ~]# iptables -A INPUT -s 192.168.190.101 -p tcp -m multiport --dport 22,80 -j REJECT
#拒绝来自源地址为192.168.190.101tcp协议multiport混合模块)目的端口为22和80的流量192.168.190.101
[rootlocalhost ~]# ssh root192.168.190.100
ssh: connect to host 192.168.190.100 port 22: Connection refused
[rootlocalhost ~]# curl 192.168.190.100:80
curl: (7) Failed connect to 192.168.190.100:80; 拒绝连接
10.2 iprange扩展
指明连续的但一般不是整个网络ip地址范围。 [!] --src-range from[-to] 源IP地址范围 [!] --dst-range from[-to] 目标IP地址范围 示例拒绝来自192.168.190.101-103所有的流量
192.168.190.100
[rootlocalhost ~]# iptables -A INPUT -m iprange --src-range 192.168.190.101-192.168.190.103 -j REJECT 192.168.190.101
[rootlocalhost ~]# ping 192.168.190.100
PING 192.168.190.100 (192.168.190.100) 56(84) bytes of data.
From 192.168.190.100 icmp_seq1 Destination Port Unreachable
From 192.168.190.100 icmp_seq2 Destination Port Unreachable192.168.190.102
[rootlocalhost ~]# ping 192.168.190.100
PING 192.168.190.100 (192.168.190.100) 56(84) bytes of data.
From 192.168.190.100 icmp_seq1 Destination Port Unreachable
10.3 mac地址
mac模块可以指明源MAC地址进行控制。 -m mac --mac-source XX:XX:XX:XX:XX:XX 源 示例根据192.168.190.101mac地址控制流量
192.168.190.100
[rootlocalhost ~]# iptables -A INPUT -m mac --mac-source 00:0c:29:62:c7:6d -j REJECT
#拒绝mac地址为00:0c:29:62:c7:6d的所有流量192.168.190.101
[rootlocalhost ~]# ping 192.168.190.100
PING 192.168.190.100 (192.168.190.100) 56(84) bytes of data.
From 192.168.190.100 icmp_seq1 Destination Port Unreachable
From 192.168.190.100 icmp_seq2 Destination Port Unreachable
[rootlocalhost ~]# curl 192.168.190.100:80
curl: (7) Failed connect to 192.168.190.100:80; 拒绝连接
[rootlocalhost ~]# ssh root192.168.190.100
ssh: connect to host 192.168.190.100 port 22: Connection refused
10.4 string 字符串
对报文中的应用层数据做字符串模式匹配检测。
选项 --algo {bm|kmp} 字符串匹配检测算法 bmBoyer-Moore 算法 kmpKnuth-Pratt-Morris 算法 --from offset 开始查询的地方 --to offset 结束查询的地方 [!] --string pattern 要检测的字符串模式 [!] --hex-string pattern要检测字符串模式16进制格式 mac ip 协议/端口号 62 真 示例
192.168.190.100
[rootlocalhost html]# echo www.baidu.com /var/www/html/baidu.html
[rootlocalhost html]# echo www.bilibili.com /var/www/html/bilibili.html
192.168.190.101
[rootlocalhost ~]# curl 192.168.190.100/baidu.html
www.baidu.com
[rootlocalhost ~]# curl 192.168.190.100/bilibili.html
www.bilibili.com192.168.190.100
[rootlocalhost html]# iptables -A OUTPUT -p tcp --sport 80 -m string --algo bm --from 62 --string bilibili -j REJECT
#http协议即tcp协议源端口为80使用字符模块利用bm算法从第62个字节开始检查字符串为bilibili
#注意请求的包不带字符回复的包带字符所以要output192.168.190.101
[rootlocalhost ~]# curl 192.168.190.100/baidu.html
www.baidu.com
[rootlocalhost ~]# curl 192.168.190.100/bilibili.html
^C10.5 time模块
iptables防火墙中的time模块允许您根据当前时间来匹配数据包。这个模块通常用于实现基于时间的访问控制比如只允许在特定时间段内访问某些服务或资源。注意这里时间需要使用格林威治时间date -u可以查看。
选项 --datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]] 日期 --datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]] --timestart hh:mm[:ss] 时间 --timestop hh:mm[:ss] [!] --monthdays day[,day...] 每个月的几号 [!] --weekdays day[,day...] 星期几1 – 7 分别表示星期一到星期日 --kerneltz内核时区当地时间不建议使用CentOS 7版本以上系统默认为 UTC 注意 centos6 不支持kerneltz --localtz指定本地时区(默认) 192.168.190.100
[rootlocalhost ~]# date -u
2024年 02月 04日 星期日 06:21:31 UTC
[rootlocalhost ~]# iptables -A INPUT -p tcp -s 192.168.190.101 --dport 22 -m time --timestart 06:00 --timestop 18:00 --weekdays 6,7 -j REJECT
#拒绝源地址192.168.190.101在周末6点到18点访问tcp协议22端口192.1168.190.101
[rootlocalhost ~]# ssh root192.168.190.100
ssh: connect to host 192.168.190.100 port 22: Connection refused
10.6 connlimit扩展
iptables防火墙中的connlimit扩展模块允许您限制连接数以防止某个服务被过多的连接请求所淹没。这个扩展模块通常用于防止DDoS分布式拒绝服务攻击或其他类型的连接泛滥。
选项 --connlimit-upto N #连接的数量小于等于N时匹配 --connlimit-above N #连接的数量大于N时匹配 示例限制tcp协议80端口最大连接数
192.168.190.100
[rootlocalhost ~]# systemctl start httpd
[rootlocalhost ~]# iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 2 -j REJECT
#针对TCP协议的目标端口80使用connlimit扩展模块限制并发连接数不超过2个并且对超过限制的连接进行拒绝处理。192.168.190.101
[rootlocalhost opt]# gcc flood_connect.c -o flood
#编译安装黑客文件
[rootlocalhost opt]# ./flood 192.168.190.100
#运行黑客脚本192.168.190.100
[rootlocalhost ~]# ss -natp | grep 80
LISTEN 0 128 :::80 :::* users:((httpd,pid1877,fd4),(httpd,pid1876,fd4),(httpd,pid1875,fd4),(httpd,pid1874,fd4),(httpd,pid1873,fd4),(httpd,pid1871,fd4))
SYN-RECV 0 0 0:0:200:::80 ::eb47:ba37:ec47:ba37:34884
SYN-RECV 0 0 400::100:0:80 ::80:0:d80:0:34882 192.168.190.101
[rootlocalhost opt]# ./flood 192.168.190.100
Starting flood connect attack on 192.168.190.100 port 80
^CAborted (made 2 successful connects)
#只有两个成功
10.7 limit模块限制流量
iptables防火墙的 limit 模块用于限制特定类型的数据包的数量。它可以用于防止DDoS攻击或限制特定类型的流量。
选项 --limit rate: 指定限制的速率例如--limit 10/minute表示每分钟允许的数据包数量为10个 --limit-burst number: 指定允许的突发连接数例如--limit-burst 5表示允许5个数据包的突发连接 --limit-mode mode: 指定限制模式可选的模式有upstream、downstream和srcip. 默认为srcip表示限制来自单个源IP地址的数据包数量 --limit-upto bytes: 用于限制数据包的大小超出这个大小的数据包将被丢弃 示例限制允许通过包拒绝私有规则组合
192.168.190.100
[rootlocalhost ~]# iptables -A INPUT -s 192.168.190.101 -p icmp --icmp-type 8 -m limit --limit 10/minute --limit-burst 5 -j ACCEPT
#限制系统接收到的ping请求的数量每分钟不超过10个允许出现最多5个突发连接。超出这个限制的ping请求将被丢弃。
[rootlocalhost ~]# iptables -A INPUT -p icmp -j REJECT
#拒绝所有
192.168.190.101长ping101 小结
这两条iptables规则的组合将实现对ICMP (Internet Control Message Protocol) 数据包的限制和拒绝处理。这种组合使用的目的是限制某种类型的ICMP数据包的流量避免可能的滥用或拒绝服务攻击并对超过限制的数据包进行拒绝。同时通过限制和拒绝结合的方式可以灵活地处理不同情况下的ICMP数据包。
10.8 state模块
state模块是iptables防火墙中的一个重要模块它用于根据连接的状态进行过滤和处理规则。它根据数据包的状态如新建、已建立、相关、无效来确定是否接受、拒绝或进一步处理数据包。
格式
-m state --state state1,state2,...
在上面的格式中state1,state2,... 是一个逗号分隔的连接状态列表用于指定要匹配的连接状态。实现功能老用户可以访问新用户不可以访问
iptables -AINPUT -m state --state ESTABLISHED -j ACCEPT #已在ping的可以继续ping停了也不可以通了xshell也不可以再连
iptables -AINPUT -m state --state NEW -j REJET #新用户拒绝
状态类型
NEW新发出请求连接追踪信息库中不存在此连接的相关信息条目因此将其识别为第一次发出的请求ESTABLISHEDNEW状态之后连接追踪信息库中为其建立的条目失效之前期间内所进行的通信状态RELATED新发起的但与已有连接相关联的连接如ftp协议中的数据连接与命令连接之间的关系INVALID无效的连接如flag标记不正确UNTRACKED未进行追踪的连接如raw表中关闭追踪
常用选项介绍 --state指定要匹配的连接状态列表如--state NEW,ESTABLISHED --ctstate与--state选项类似用于指定要匹配的连接状态列表。与--state选项不同的是--ctstate选项允许更精确的匹配特别在使用连接跟踪模块来管理连接状态时非常有用。例如--ctstate NEW,ESTABLISHED表示仅匹配连接跟踪状态为新建或已建立的数据包 --state INVALID匹配无效的数据包这些数据包不符合协议规范或防火墙状态跟踪出错 --state NEW匹配新建的连接请求数据包 --state ESTABLISHED匹配已建立的连接属于已通过的数据包 --state RELATED匹配与已建立的连接相关的数据包。例如FTP的数据传输就属于相关的数据包 示例
192.168.190.100
[rootlocalhost ~]# iptables -A INPUT -p icmp -s 192.168.190.101 -m state --state NEW -j ACCEPT
[rootlocalhost ~]# iptables -A INPUT -p icmp -m state --state NEW -j DROP
#允许来自IP地址为192.168.1.100的源IP的TCP连接请求通过同时拒绝其他任何新建连接的TCP数据包。192.168.190.101:
[rootlocalhost ~]# ping 192.168.190.100
PING 192.168.190.100 (192.168.190.100) 56(84) bytes of data.
64 bytes from 192.168.190.100: icmp_seq1 ttl64 time0.710 ms
64 bytes from 192.168.190.100: icmp_seq2 ttl64 time1.36 ms192.168.190.102:
[rootlocalhost ~]# ping 192.168.190.100
PING 192.168.190.100 (192.168.190.100) 56(84) bytes of data.
^C
--- 192.168.190.100 ping statistics ---
5 packets transmitted, 0 received, 100% packet loss, time 4001ms
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/87527.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!