iptables

1、画架构图

image

2、Iptables

1. 什么是防火墙 防止别人恶意访问。 2. 防火墙种类 硬件防火墙 F5 软件防火墙 iptables firewalld 安全组

3.Iptables基本介绍

image

用户 ---> 调用iptables ---> ip_tables内核模块 ---> Netfilter(系统安全框架) ---> 过滤请求

4、 什么是包过滤防火墙

1、什么是包 在数据传输过程,并不是一次性传输完成的;而是将数据分成若干个数据包,一点一点的传输。 2、 什么是包过滤防火墙 过滤数据包的防火墙。

5、包过滤防火墙如何实现

通过系统安全框架,过滤数据包。

6.Iptables链的概念

四表五链 1、那四个表,有哪些作用 具备某种功能的集合叫做表。 filter: 负责做过滤功能呢 INPUT、OUTPUT、FORWARD nat: 网络地址转换 PREROUTING、INPUT、OUTPUT、POSTROUTING mangle: 负责修改数据包内容 PREROUTING、INPUT、OUTPUT、POSTROUTING、FORWARD raw: 负责数据包跟踪 PREROUTING、OUTPUT 2、那五条链,运行在那些地方 PREROUTING、INPUT、OUTPUT、FORWARD、POSTROUTING 1 PREROUTING: 主机外报文进入位置,允许的表mangle, nat(目标地址转换,把本机地址转换为真正的目标机地址,通常指响应报文) 2 INPUT:报文进入本机用户空间位置,允许的表filter, mangle 3 OUTPUT:报文从本机用户空间出去的位置,允许filter, mangle, nat 4 FOWARD:报文经过路由并且发觉不是本机决定转发但还不知道从哪个网卡出去,允许filter, mangle 5 POSTROUTING:报文经过路由被转发出去,允许mangle,nat(源地址转换,把原始地址转换为转发主机出口网卡地址) 流入本机:PREROUTING --> INPUT --> PROCESS(进程) 经过本机:PREROUTING --> FORWARD --> POSTROUTING 从本机流出:PROCESS(进程) --> OUTPUT --> POSTROUTING

image

7、Iptables流程图

流入本机: A ---> PREROUTING ---> INPUT ---> B 流出本机:OUTPUT ---> POSTROUTING ---> B 经过本机: A ---> OUTPUT ---> POSTROUTING | ---> PREROUTING ---> FORWARD ---> POSTROUTING ---> C ---> PREROUTING ---> INPUT ---> B filter : INPUT 、FORWARD、 OUTPUT nat : PREROUTING 、 INPUT、 OUTPUT、 POSTROUTING raw : PREROUTING、 OUTPUT mangle : PREROUTING INPUT FORWARD OUTPUT POSTROUTING

8、Iptables的使用

1、安装Iptables [root@m01 ~]# yum install iptables* 2、启动Iptables [root@m01 ~]# systemctl start iptables 3、关闭firewalld [root@m01 ~]# systemctl disable --now firewalld 查看iptables的状态 systemctl status iptables [root@m01 ~]# systemctl statue iptables Unknown operation 'statue'. [root@m01 ~]# systemctl status iptables iptables.service - IPv4 firewall with iptables Loaded: loaded (/usr/lib/systemd/system/iptables.service; disabled; vendor preset: disabled) Active: active (exited) since Mon 2021-12-27 19:54:38 CST; 2min 39s ago Process: 1928 ExecStart=/usr/libexec/iptables/iptables.init start (code=exited, status=0/SUCCESS) Main PID: 1928 (code=exited, status=0/SUCCESS) Dec 27 19:54:38 m01 systemd[1]: Starting IPv4 firewall with iptables... Dec 27 19:54:38 m01 iptables.init[1928]: iptables: Applying firewall rules: ...] Dec 27 19:54:38 m01 systemd[1]: Started IPv4 firewall with iptables. Hint: Some lines were ellipsized, use -l to show in full. 格式:iptables -t 表名 选项 链名称 条件 动作 -t: 指定操作的表 -L, --list 列出当前的规则 -v 显示数据包和数据包大小 -n 不反解地址 [root@m01 ~]# iptables -t filter -L -v -n Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 422 25639 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 1 229 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 248 packets, 22070 bytes) pkts bytes target prot opt in out source destination -A, --append 追加一条规则到链中 -I, --insert 插入一条规则,插入到顶部 -F, --flush 清空 -Z, --zero 清空计数器( 包数量 、包大小) -D, --delete 删除链中的规则 -R, --replace 修改 -S, --list-rules 列出所有的规则 -N, --new-chain 创建一个自定义 -X, --delete-chain 删除一个自定义链 -P, --policy 指定链的默认策略 注:在使用iptables时请先清空其默认规则(iptables -F)

9、iptables动作概念

ACCEPT 将数据包放行,进行完此处理动作后,将不再比对其它规则,直接跳往下一个规则链。 REJECT(拦截) 拦阻该数据包,并传送数据包通知对方。 DROP 丢弃包不予处理,进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。 REDIRECT 将包重新导向到另一个端口,进行完此处理动作后,将会继续比对其它规则。

10、Iptables基本的条件匹配

TCP(http):(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、可靠的、 基于IP的传输层协议。TCPIP报文的协议号是6 UDP:是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSIOpen System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768UDP的正式规范。UDPIP报文的协议号是17 ICMP(ping):ICMPInternet Control Message ProtocolInternet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用 ALL:包含所有协议

11、-s、-d 源地址、目标地址

源地址:发送请求的地址 目标地址 : 访问的地址

12、--sport源端口、--dport 目标端口

源端口:发送请求的端口 目标端口:访问的端口

13、-i、-o、-m、-j 动作

-i : 进来的网卡 -o : 出去的网卡 -m : 指定模块 -j : 转发动作 -p :指定协议

14、案例

案例1:只允许22端口可以访问,其他端口全部无法访问。 iptables -t filter -A INPUT -p TCP --dport 22 -j ACCEPT iptables -t filter -A INPUT -p TCP -j DROP 案例2:只允许22,80,443端口可以访问,其他端口全部无法访问。 iptables -t filter -A INPUT -p TCP --dport 22 -j ACCEPT iptables -t filter -A INPUT -p TCP --dport 80 -j ACCEPT iptables -t filter -A INPUT -p TCP --dport 443 -j ACCEPT iptables -t filter -A INPUT -p TCP -j DROP 案例3:只允许22,80,443端口可以访问,其他端口全部无法访问,但是本机可以访问百度。 案例4:要求使用192.168.15.81能够通过22端口链接,但是其他的不行 iptables -t filter -A INPUT -p TCP -d 192.168.15.81 --dport 22 -j ACCEPT iptables -t filter -A INPUT -p TCP -j DROP 案例5:只允许192.168.15.71能够通过22端口链接,其他的不行。 iptables -t filter -A INPUT -p TCP -s 192.168.15.71 -d 192.168.15.81 --dport 22 -j ACCEPT iptables -t filter -A INPUT -p TCP -j DROP 案例6:要求192.168.15.71对外部不可见 iptables -t filter -A INPUT -p TCP -d 192.168.15.71 -j DROP 案例7:要求使用eth0网卡的所有请求全部拒绝 iptables -t filter -A INPUT -p TCP -i etho -j DROP 使用172.16.1.71登录进来的窗口,不允许访问百度。 iptables -t filter -I OUTPUT -p TCP -o eth1 -j DROP 案例8:要求访问服务器的8080端口转发至80端口 iptables -t nat -A PREROUTING -p TCP --dport 8080 -j REDIRECT --to-port 80 案例9:要求只允许windows通过ssh连接192.168.15.81,其他的拒绝 iptables -t filter -I INPUT -p TCP -s 192.168.15.1 -d 192.168.15.81 --dport 22 -j ACCEPT iptables -t filter -A INPUT -p TCP --dport 22 -j DROP 知识储备: 查看本机端口占用的命令: netstat -nutlp

15、模块

拓展iptables的功能的。 -m : 指定模块 1、连续匹配多个端口(multiport) --dports : 指定多个端口(不同端口之间以逗号分割,连续的端口使用冒号分割)。 2、指定一段连续的ip地址范围(iprange) --src-range from[-to]: 源地址范围 --dst-range from[-to] 目标地址范围 3、匹配指定字符串(string) --string pattern # 指定要匹配的字符串 --algo {bm|kmp} # 匹配的查询算法 4、根据时间段匹配报文(time) --timestart hh:mm[:ss] # 开始时间 --timestop hh:mm[:ss] # 结束时间 --monthdays day[,day...] # 指定一个月的某一天 --weekdays day[,day...] # 指定周 还是 周天 5、禁ping, 默认本机无法ping别人 、别人无法ping自己 --icmp-type {type[/code]|typename} echo-request (8) 请求 echo-reply (0) 回应 6、限制链接数,并发连接数(connlimit) --connlimit-upto n # 如果现有连接数小于或等于 n 则 匹配 --connlimit-above n # 如果现有连接数大于n 则匹配 7、针对 报文速率 进行限制。 秒、分钟、小时、天。 --limit rate[/second|/minute|/hour|/day] # 报文数量 --limit-burst number # 报文数量(默认:5)

16、案例

1、要求将22,80,443以及30000-50000之间所有的端口向外暴露,其他端口拒绝 iptables -t filter -A INPUT -p TCP -m multiport --dports 22,80,443,30000:50000 -j ACCEPT iptables -f filter -A INPUT -p TCP -j DROP 2、要求访问数据包中包含HelloWorld的数据不允许通过。 iptables -t filter -A INPUT -p TCP -m string --string "HelloWorld" --algo kmp -j DROP 3、要求192.168.15.1 - 192.168.15.10之间的所有IP能够连接192.168.15.81,其他拒绝 iptables -t filter -A INPUT -p TCP -m iprange --src-range 192.168.15.1-192.168.15.10 -j ACCEPT iptables -f filter -A INPUT -p TCP -j DROP 4、要求每天的12到13之间,不允许访问 iptables -t filter -A INPUT -p TCP -m time --timestart 4:00 --timestop 5:00 -j DROP 必须使用UTC时间 5、要求别人不能ping本机,但是本机可以ping别人 iptables -t filter -A INPUT -p TCP -m icmp --icmp-type "echo-request" -j DROP 6、要求主机连接最多有2个 iptables -t filter -A INPUT -p TCP --dport 22 -m connlimit --connlimit-above 2 -j DROP 7、要求限制速率在500k/s左右 iptables -t filter -A INPUT -p TCP -m limit 333/s -j ACCEPT iptables -t filter -A INPUT -p TCP -j DROP

__EOF__

本文作者祈安
本文链接https://www.cnblogs.com/jyc666/p/15737817.html
关于博主:没有收拾残局的能力,就别放纵善变的情绪
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   丶祈安  阅读(131)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示