当前位置:   article > 正文

iptables命令选项以及参数配置_iptables参数

iptables参数

iptables命令选项以及参数配置

 yum install -y iptables-services.x86_64  
  • 1

iptables的表和链。我们只关心nat表和filter表。filter表是默认的表,它实现防火墙,也就是包过滤的功能。nat表实现网络地址转换

在这里插入图片描述

配置iptables时,不指定表,就是使用filter表
配置时不指定规则链,则配置所有链
可以向规则链中加入很多规则,数据包进入该链时,从上向下匹配,一旦匹配就停止,开始应用规则。如果全都不匹配,则应用默认规则
命令选项、链名、目标操作使用大写字母,其他小写

filter中的三条链

INPUT:数据包的目标地址是自己,则进入INPUT链
OUTPUT:数据包的源地址是自己,则进入OUTPUT链
FORWARD:数据包穿过自己,则进入FORWARD链

nat中的三条链

PREROUTING:数据包刚到达本机,主要负责转换数据包中的目标IP地址,通常用于目的地址转换(DNAT,Destination NAT)
POSTROUTING:即将离开本机的数据包,主要负责转换数据包中的源IP地址,通常用于源地址转换(SNAT,Source NAT)
OUTPUT:这条链处理本机产生的数据包

常用选项--------------------------------------------------
iptables -A INPUT         # -A 追加规则
iptables -D INPUT 1(编号)  # -D 删除规则
iptables -R INPUT 1 -s 192.168.12.0 -j DROP 取代现行规则,顺序不变(1是位置)              # -R 修改规则
iptables -I INPUT 1 --dport 80 -j ACCEPT 插入一条规则,原本位置上的规则将会往后移动一个顺位  # -I 插入规则
iptables -L INPUT 列出规则链中的所有规则  # -L 查看规则
通用参数--------------------------------------------------
-t 指定表名       例:iptables -t filter -L  
-p 协议           例:iptables -A INPUT -p tcp
-s 源地址         例:iptables -A INPUT -s 192.168.1.1 
-d 目的地址       例:iptables -A INPUT -d 192.168.12.1 
--sport 源端口    例:iptables -A INPUT -p tcp --sport 22 
--dport 目的端口  例:iptables -A INPUT -p tcp --dport 22 
-i 指定入口网卡   例:iptables -A INPUT -i eth0 
-o 指定出口网卡   例:iptables -A FORWARD -o eth0

-j 指定要进行的处理动作 
常用的ACTION: 
DROP:丢弃 
REJECT:明示拒绝 
ACCEPT:接受

-m 引入扩展模块
state 模块用于跟踪数据包的状态
multiport 多端口
aec-range 源地址范围
dst-range 目标地址范围

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

查询

iptables -nL         # 查询filter表的规则(不指定表默认就是filter表)
iptables -nL INPUT  # 查询filter表的INPUT链
iptables -t nat -nL  # 查询nat表的规则
iptables -nL INPUT --line-numbers   # 查看规则的行号
  • 1
  • 2
  • 3
  • 4

删除,清除

iptables -D INPUT 2  # 清空第2条规则(先要查询规则的行号)
iptables -F      # 清空规则
  • 1
  • 2

修改

iptables -P INPUT DROP # 将filter表的INPUT链的默认规则改为丢弃
iptables -R INPUT 2 -s 192.168.1.8 -p tcp --dport 10050 -j REJECT # 修改filter表的INPUT链的第2条规则
  • 1
  • 2

插入规则

# 允许.1.8主机使用tcp协议访问本机的22端口  (ssh远程连接)
iptables -A INPUT -s 192.168.1.8 -p tcp --dport 22 -j ACCEPT
# 允许.1.8主机使用tcp协议访问本机的10050端口(zabbix监控)
iptables -I INPUT 2 -s 192.168.1.8 -p tcp --dport 10050 -j ACCEPT
  • 1
  • 2
  • 3
  • 4

永久保存

iptables-save > /etc/sysconfig/iptables
  • 1

如果不保存,重启之后规则就会消失

常见问题一

我都已经保存了规则,为什么重启之后,规则依然消失

原因:RHEL 7 及以上版本等,iptables 通常不再作为一个单独的服务来运行,无法使用systemctl来管理;需要手动加载

iptables-restore < /etc/sysconfig/iptables
  • 1

为了让这些规则在系统启动时自动加载,可以将上述命令添加到初始化脚本中,比如 /etc/rc.d/rc.local

echo "iptables-restore < /etc/sysconfig/iptables" >>  /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local     # 确保文件具有执行权限
  • 1
  • 2

关于自身发出去,返回来的数据

[root@nfs ~]# iptables -t filter -nL
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     tcp  --  192.168.1.8          0.0.0.0/0            tcp dpt:22
ACCEPT     tcp  --  192.168.1.8          0.0.0.0/0            tcp dpt:10050
ACCEPT     all  --  192.168.1.11         0.0.0.0/0
ACCEPT     all  --  192.168.1.12         0.0.0.0/0

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

目前只给1.8放行了两个端口,是无法ping 通的

从自身发出去的数据,返回来的数据包属于某个连接,该连接的状态是ESTABLISHED,放行该状态的数据包即可

ESTABLISHED 表示已经建立的连接

iptables -I INPUT -m state --state ESTABLISHED -j ACCEPT
  • 1

-m state: -m 参数用于加载扩展模块,state 模块用于跟踪数据包的状态。

--state ESTABLISHED: 这个选项指定了数据包的状态为 ESTABLISHEDESTABLISHED 状态表示数据包属于一个已经建立的连接。

[root@nfs ~]# iptables -t filter -nL INPUT
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state ESTABLISHED
ACCEPT     tcp  --  192.168.1.8          0.0.0.0/0            tcp dpt:22
ACCEPT     tcp  --  192.168.1.8          0.0.0.0/0            tcp dpt:10050
ACCEPT     all  --  192.168.1.11         0.0.0.0/0
ACCEPT     all  --  192.168.1.12         0.0.0.0/0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

可以通ping -c4 192.168.1.8 来测试,反过来,拿1.8 ping 当前主机依然是不行的

提示:ping命令使用的是ICMP协议

在这里插入图片描述

配置FORWARD链

# 默认拒绝所有数据包通过
iptables -P FORWARD DROP

# 源地址是192.168.99.0/24,目标地址是192.168.88.0/24的包,放行
iptables -A FORWARD -s 192.168.99.0/24 -d 192.168.88.0/24 -j ACCEPT

# 源地址是192.168.88.0/24,目标地址是192.168.99.0/24的包,且协议是icmp的包放行
iptables -A FORWARD -s 192.168.88.0/24 -d 192.168.99.0/24 -p icmp -j ACCEPT

# -m是引入扩展模块,multiport多端口,22、80、443,100-120端口范围
iptables -A FORWARD -p tcp -m multiport --dport 22,80,443,100:120 -s 192.168.88.0/24 -j ACCEPT

# 拒绝192.168.88.10-192.168.88.20访问192.168.99.50-192.168.99.150
# -m是引入扩展模块,src-range是源地址范围,dst-range目标地址范围
iptables -I FORWARD -m iprange --src-range 192.168.88.10-192.168.88.20 --dst-range 192.168.99.50-192.168.99.150 -j REJECT
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

nat表

# 向nat表中的POSTROUTING链添加规则。将源地址192.168.88.0/24转换成它外网卡地址。
iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -j MASQUERADE
iptables -t nat -nL
  • 1
  • 2
  • 3

MASQUERADE 对源地址进行伪装

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/888603
推荐阅读
  

闽ICP备14008679号