iptables相关


iptables 是一种在 Linux 操作系统中用于实现防火墙功能的工具。它是一种高度灵活和可定制的软件,可用于控制网络流量,过滤恶意流量,保护网络安全,并允许对特定类型的流量实施访问控制。iptables 可以配置为拦截或允许特定的网络流量,包括 TCP、UDP 和 ICMP 数据包。是 Linux 操作系统中最流行的防火墙软件之一。

一、五表五链

:流量整形

说明
filter过滤数据包
netNET地址转换
mangle修改数据包
raw处理异常
security安全相关
链路说明
INPUT(input)链匹配目的IP是本机数据包的入口流量。
OUTPUT(output)链用于匹配出口数据包。
FORWARD(forward)链用于匹配流经本机的数据包。
POSTROUTING(postrouting)链用于修改源IP地址,常用于做SNAT。
PREROUTING(prerouting)链可以修改数据包的目的IP地址,常用于做DNAT。

二、工作流程

iptables工作流程图

涉及场景

  • 数据包流入:PREROUTING –> INPUT
  • 数据包流出:OUTPUT –> POSTROUTING
  • 数据包转发:PREROUTING –> FORWARD –> POSTROUTING

三、规则处理动作(target)

项目Value
ACCEPT(accept)允许数据包通过
DROP(drop)丢弃数据包
--------------------------------------
QUEUE(queue)将数据包移交到用户空间
RETURN(return)停止执行当前链中的后续规则,并返回到调用链(The Calling Chain)中
REJECT(reject)拒绝数据包通过,同时给数据发送端一个响应信息,客户端刚请求就会收到拒绝的信息
--------------------------------------
SNAT(snat)源地址转换,解决内网用户用同一个公网地址上网的问题
DNAT(dnat)目标地址转换
MASQUERADE(masquerade)是 SNAT 的一种特殊形式,适用于动态的、临时会变的 ip 上
REDIRECT(redirect)在本机做端口映射
LOG(log)记录日志信息,不对数据包做任何其他操作,仍然匹配下一条规则

四、命令构成

iptables命令由以下几部分构成:

iptables:命令名称

项目Value
-t选项,指定要操作的表,包括filter、nat和mangle等。
< T name>指定要操作的表的名称。
-A选项,表示添加一条规则,在尾部。
-D选项,表示删除一条规则。
-I选项,表示插入一条规则,插入,没有指定则在头部。
-s选项,表示源地址。
-d选项,表示目标地址。
-p选项,表示协议类型,如TCP、UDP、ICMP等。
–sport选项,表示源端口。
–dport选项,表示目标端口。
-j选项,表示动作,包括ACCEPT、DROP、REJECT等。
-i选项,表示输入接口。
-o选项,表示输出接口。
-m选项,表示匹配模块,如state、tcp、udp等。
–state选项,表示连接状态,包括NEW、ESTABLISHED、RELATED等。
-c选项,表示计数器,用于统计匹配的数据包数和字节数。
-n选项,表示禁用DNS解析,加快执行速度。
–line-numbers选项,表示显示规则的编号。
-L选项,表示列出规则。
-F选项,表示清除所有规则。
-Z选项,表示清空计数器。
-N选项,表示创建一个新的用户自定义链。
-X选项,表示删除一个用户自定义链。
-P选项,表示设置默认策略,包括ACCEPT、DROP、REJECT等。

五、常用命令(学到一个添加一个)

规则(rules)

  • 规则既是对数据包的过滤条件。存储在内核空间的信息包过滤表中,数据包每经过一个链时,系统会根据链中规则进行匹配,匹配成功则根据规则的处理动作进行处理。

  • 规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作就是添加、修改和删除这些规则。

规则由 匹配条件 和 处理动作 组成。匹配条件 又分为 基本匹配条件 与 扩展匹配条件。基本匹配条件如:源地址 Source IP,目标地址 Destination IP;扩展匹配条件通常以模块的形式存在,这些模块可以按需安装,源端口 Source Port, 目标端口 Destination Port。


1、查看当前iptables状态

iptables -nL #默认查看filter表的状态,如果需要查看其他表的状态加上 -t 表名
iptables -nL --line-numbers #可以列出序列号,在插入或者删除的时候就不用自己去数了
iptables -nL --line-numbers --verbose #可以查看到包过滤的流量统计,访问次数等

2、插入|追加记录

# 在第一条的位置插入一条记录,接受所有来自lo网口的访问
iptables -I INPUT 1 -i lo -j ACCPET 

# 如果在INPUT中不指明在第几条插入,默认就是在第一条插入
iptables -I INPUT 2 -s 192.168.1.0/24 -j ACCPET 

# 拒绝来自特定IP地址的连接(IP)
iptables -A INPUT -s IP地址 -j DROP 

#允许特定端口的TCP|UDP连接 (针对端口开放(需要指明协议))
iptables -A INPUT -p tcp|udp --dport 端口号 -j ACCEPT

# 允许与已建立的连接相关的数据包通过防火墙
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

拒绝来自特定网络接口的连接 (针对接口)
iptables -A INPUT -i eth0 -j DROP

# 允许ping连接 (针对协议开放)
iptables -A INPUT -p icmp -j ACCEPT

 #在INPUT最后追加一条记录。
iptables -A INPUT -s 192.168.2.0/24 -j ACCEPT

# 将当前的规则保存到文件中
iptables-save > /etc/sysconfig/iptables

4、删除一条记录

#删除第7条记录
iptables -D INPUT 7 

5、拒绝所有访问

 #这个一般放到最后,不然会对前面的规则造成影响。
iptables -A INPUT -j DROP

6、根据时段限制访问

#这里的时间是指UTC时间记得换算
iptables -A INPUT -p tcp -m time --timestart 00:00 --timestop 02:00 -j DROP 

7、限制单个IP一分钟内建立的连接数

iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 25 -j REJECT

8、保存iptables规则

iptables-save > /etc/sysconfig/iptables

9、从文件里面恢复iptables规则

iptables-restore < /etc/sysconfig/iptables

10、对外建立的连接经过INPUT不拦截

iptables -I INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

11、端口转发(本机8080转发到远程192.168.1.22:80)

iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 8080 -j DNAT --to 192.168.1.22:80
iptables -t nat -A POSTROUTING -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward #需要打开网转发
iptables -t filter FORWARD -d 192.168.1.22/32 -j ACCEPT #转发的FROWARD要允许双方的数据传输

参考链接:https://blog.csdn.net/qq_24433609/article/details/127533426

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stu-hu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值