linux 防火墙管理-iptables

Linux 防火墙IPTables的 表、链、规则基础

iptables 包含多个表,表包含多个链(链可以是内置的或用户定义的),一种链又可以存放在不同的表中,链中可能包含多个规则(规则是为数据包定义的),四表五链。所以,iptables有这几个概念 , Tables、Chains、Rules。

一. IPTABLES 表概念

IPTables 有以下 4 个内置表。
filter表:负责过滤数据包。
nat表:用于网络地址转换。
mangle表:修改数据包中的内容,例如服务类型、TTL、QOS等等。
raw表:决定数据包是否被状态跟踪机制处理。

Iptables五种链的概念

Iptables有五种不同的链,分别是INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING。

INPUT:从外界进入防火墙的数据包会应用此规则链中的策略。
OUTPUT:当前服务器从防火墙外出的数据表会应用此规则链中的策略。
FORWARD:转发数据包时会应用此规则链中的策略。
PREROUTING:主机外的报文要进入防火墙,所有的数据包进来的时候都会由PREROUTING链进行处理。
POSTROUTING:主机内的报文要从防火墙出去,需要经过POSTROUTING链进行处理。

Iptables中表和链的关系

raw mangle nat filter
INPUT + + +
OUTPUT + + + +
FORWARD + +
PREROUTING + + +
POSTROUTING + +

IPTABLES 规则

以下是 iptables 规则要记住的要点。

  • 规则包含一个标准和一个目标。
  • 如果条件匹配,则转到目标中指定的规则(或)执行目标中提到的特殊值。
  • 如果条件不匹配,则继续执行下一条规则。

对Iptables防火墙规则的查看方法

如果您执行 iptables --list (或) iptables -L,您将看到系统上所有可用的防火墙规则。如果防火墙没有开启,显示默认输入表,带有默认输入链、前向链和输出链。

[root@MiWiFi-R4AC-srv ~]# iptables -t filter --list #执行该操作以查看filter表
[root@MiWiFi-R4AC-srv ~]# iptables -t mangle --list #执行该操作以查看mangle表
[root@MiWiFi-R4AC-srv ~]# iptables -t nat --list #执行该操作以查看nat表
[root@MiWiFi-R4AC-srv ~]# iptables -t raw --list #执行该操作以查看raw表

注意:如果不指定 -t 选项,它将显示默认过滤器表。因此,以下两个命令是相同的

 iptables -t filter --list
(or)
iptables --list

下面的 iptable 示例显示了在过滤表的输入、转发和输出链中定义了一些规则。

iptables --list
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination
1    RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

Chain RH-Firewall-1-INPUT (2 references)
num  target     prot opt source               destination
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 255
3    ACCEPT     esp  --  0.0.0.0/0            0.0.0.0/0
4    ACCEPT     ah   --  0.0.0.0/0            0.0.0.0/0
5    ACCEPT     udp  --  0.0.0.0/0            224.0.0.251         udp dpt:5353
6    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:631
7    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:631
8    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
9    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
10   REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

iptables --list 命令输出中的规则包含以下字段:

  • num - 特定链中的规则编号
  • target – 我们上面讨论的特殊目标变量
  • prot - 协议。tcp、udp、icmp等,
  • opt –该特定规则的特殊选项
  • source – 数据包的源 IP 地址
  • destination-目的地 - 数据包的目的地 IP 地址

对Iptables防火墙的一些简单操作

systemctl list-unit-files |grep iptables  #查看是否安装了iptables防火墙
systemctl status iptables #查看防火墙状态

启动iptables服务

systemctl start iptables

重启iptables服务

systemctl restart iptables
service iptables restart  

关闭iptables防火墙

service iptables stop
systemctl stop iptables

开机启动防火墙

chkconfig iptables on #开机启动iptables

开机不启动防火墙

chkconfig iptables off #永久关闭iptables

查看或清除规则

iptables -F #清除现有规则
​iptables -t 表名 -F 链名 #清空规则F

修改iptables规则的方法

iptables操作的一些参数

选项 用法
-A 在指定链路末尾追加一条规则,如:iptables-A INPUT(操作)
-I(大写) 在指定链中插入一条规则,如:iptables -I INPUT (操作)
-P(大写) 指定默认规则,如:iptables -P OUTPUT ACCEPT(操作)
-p(小写) 连接端口 tcp/udp/icmp/al1指定端口的时候需要指定协议
–sport 源端口
–dport 目标端口
-D 删除指定规则 iptables -t nat -D INPUT (操作)
-R 修改、替换一条规则 iptables -t nat -R INPUT()操作)
-L 查看 iptables-tnat-L(查看)
-n 有字段以数字形式显示,如: iptables -L -n,iptables -nL,iptables -vnL (查看)
-v 查看时显示更详细信息
–line-number 规则带编号,如: iptables -t nat -L -n --line-number /iptables -t nat -L–line-number
-F 清除链中所有规则 iptables -F
-X 清空自定义链的规则,不影响其它链 iptables -X
-Z 清空链的计数器(匹配到的数据包的大小和总和) iptables -Z
-S 看链的所有规则或者某个链的规则/某个具体规则后面跟编号 iptables -t nat -S,iptables -t nat -S POSTROUTING 1
-j ACCEPT/DROP/REJECT
-m state–state (不常用) NEW:已经或将启动新的连接 ESTABLISHED:已建立的连接 RELATED:正在启动的新连接 INVALID:非法或无法识别的 ftp服务是特殊的,需要配状态连接
-m multiport –sport 源端口列表 –dport 目的端口列表
-m iprange --src-range IP范围匹配: -m iprange --src-range IP范围
-m mac --mac-source MAC地址匹配: -m mac --mac-source MAC地址

目标值列表

控制类型 作用
ACCEPT 允许数据包通过accret
DROP 直接丢弃数据包,不给出任何回应消息dorp
REJECT 拒绝数据包通过,会给数据发送端一个响应信息reject
SNAT 源地址转换,根据指定条件修改数据包的源IP地址,通常被叫做源映射。
DNAT 修改数据包的目的地址
MASQUERADE 伪装成一个非固定公网IP地址masquerand
LOG 在/var/log/messages中记录日志信息,然后将数据包传递给下一条规则log

添加iptables则的步骤如下

命令行操作:
(1)使用命令"iptables-L"查看现有的链;
(2)使用命令"iptables-A [chain_name]-p [protocol] --dport[destination_port]-j ACCEPT"添加新规则;
例如:iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
(3)使用命令"iptables-L"确认添加的规则生效;
(4)使用命令"iptables-S"保存规则;
(5)重启iptables务,使添加的规则永久有效

修改配置文件操作:
/etc/sysconfig/iptables

实例:修改3080端口tcp协议转发的命令

echo "1" > /proc/sys/net/ipv4/ip_forward    #启用IPV4转发
iptables -F -t filter   #清空filter表,以防止本来有规则影响后面的操作
iptables -F -t nat   #清空nat表,以防止本来有规则影响后面的操作
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 3080 -j DNAT --to-destination IP1:3080 #修改nat表的PREROUTING连3080端口的目的地址为IP1:3080
iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 3080 -j SNAT --to-source IP2 #修改nat表POSTROUTING连3080端口原地址为IP2
service iptables save  #保存修改
service iptables restart #重启服务使之生效

学习中参考诸多文档,不一一列举,感谢:
https://blog.csdn.net/weixin_43554927/article/details/125809342
https://blog.csdn.net/weixin_44953658/article/details/125671469
https://jiangxl.blog.csdn.net/article/details/125671469
https://bbs.huaweicloud.com/blogs/300668?utm_source=juejin&utm_medium=bbs-ex&utm_campaign=other&utm_content=content
https://blog.csdn.net/qq_16116881/article/details/125514524

你可能感兴趣的:(linux,linux,运维,网络)