linux 防火墙策略

举报
yd_212422989 发表于 2026/11/02 09:46:56 2026/11/02
【摘要】 IptablesIptables是linux上嘴常用的防火墙工具之一。它是一个基于内核的防火墙工具,可以用于配置和管理网络数据包的过滤规则。Iptables可以根据源地址,目标地址,端口号等条件过滤和处理网络数据包 详细说明参数作用-P设置默认策略-F清空规则链-L查看规则链-A在规则链的末尾加入新规则-I num在规则链的头部加入新规则-D num删除某一条规则-s匹配来源地址IP/MA...

Iptables

Iptables是linux上嘴常用的防火墙工具之一。它是一个基于内核的防火墙工具,可以用于配置和管理网络数据包的过滤规则。Iptables可以根据源地址,目标地址,端口号等条件过滤和处理网络数据包

详细说明

参数 作用
-P 设置默认策略
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I num 在规则链的头部加入新规则
-D num 删除某一条规则
-s 匹配来源地址IP/MASK,加叹号“!”表示除这个IP外
-d 匹配目标地址
-i 网卡名称 匹配从这块网卡流入的数据
-o 网卡名称 匹配从这块网卡流出的数据
-p 匹配协议,如TCP、UDP、ICMP
–dport num 匹配目标端口号
–sport num 匹配来源端口号

常见参数如下:

1.查看当前iptables规则

iptables -L

2.清空当前iptbales规则

当希望重新配置iptables规则时,可以通过命令清空当前规则
iptables -F

3.添加规则

iptables -A <链> -p <协议> --dport <目标端口> -j <动作>

  • <链>: 指定要添加规则的链,常见的链包括INPUT(输入),OUTPUT(输出)和FORWARD(转发)
  • <协议>: 指定要过滤的协议,例如TCP,UDP或ICMP
  • <目标端口>: 指定要过滤的目标端口号
  • <动作>: 指定要执行的动作,常见的动作包括ACCEPT(接受),DROP(丢弃)和REJECT(拒绝)

案例:
允许从任何源地址访问TCP端口80,可以使用以下命令:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

4.保存规则

配置的iptables 规则在系统重启后会丢失,因此需要将规则保存到持久化文件中。可以使用以下命令将规则保存:
iptables-save >/etc/iptables/rules.v4
这将把当前的iptables 规则保存到/ect/iptables/rules.v4 文件中

5.加载保存的规则

当系统系统时,可以使用以下命令加载保存的iptables 规则
iptables-restore < /etc/iptables/rules.v4
这将从/etc/iptables/rules.v4文件中加载规则并应用到iptables中

6.删除某一条规则

使用-F参数会清空已有的所有防火墙策略;使用-D参数可以删除某一条指定的策略,因此更加安全和准确。

‘iptables -D <链> <规则id num>’

Firewalld

是一个动态防火墙管理工具,用于管理iptables规则。它提供了一个高级的接口,使管理员能够轻松地配置和管理防火墙规则。Firewalld支持网络区域、服务和端口等概念,使管理员能够更灵活地配置防火墙规则。

详细说明

表1:firewaldd中常用的区域名称及策略规则

区域 默认规则策略
trusted 允许所有的数据包
home 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-client服务相关,则允许流量
internal 等同于home区域
work 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量
public 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量
external 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
dmz 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
block 拒绝流入的流量,除非与流出的流量相关
drop 拒绝流入的流量,除非与流出的流量相关

表2:firewall-cmd常用参数表

参数 作用
–get-default-zone 查询默认的区域名称
–set-default-zone=<区域名称> 设置默认的区域,使其永久生效
–get-zones 显示可用的区域
–get-services 显示预先定义的服务
–get-active-zones 显示当前正在使用的区域与网卡名称
–add-source= 将源自此IP或子网的流量导向指定的区域
–remove-source= 不再将源自此IP或子网的流量导向某个指定区域
–add-interface=<网卡名称> 将源自该网卡的所有流量都导向某个指定区域
–change-interface=<网卡名称> 将某个网卡与区域进行关联
–list-all 显示当前区域的网卡配置参数、资源、端口以及服务等信息
–list-all-zones 显示所有区域的网卡配置参数、资源、端口以及服务等信息
–add-service=<服务名> 设置默认区域允许该服务的流量
–add-port=<端口号/协议> 设置默认区域允许该端口的流量
–remove-service=<服务名> 设置默认区域不再允许该服务的流量
–remove-port=<端口号/协议> 设置默认区域不再允许该端口的流量
–reload 让“永久生效”的配置规则立即生效,并覆盖当前的配置规则
–panic-on 开启应急状况模式
–panic-off 关闭应急状况模式

与Linux系统中其他的防火墙策略配置工具一样,使用firewalld配置的防火墙策略默认为运行时(Runtime)模式,又称为当前生效模式,而且会随着系统的重启而失效。如果想让配置策略一直存在,就需要使用永久(Permanent)模式了,方法就是在用firewall-cmd命令正常设置防火墙策略时添加–permanent参数,这样配置的防火墙策略就可以永久生效了。但是,永久生效模式有一个“不近人情”的特点,就是使用它设置的策略只有在系统重启之后才能自动生效。如果想让配置的策略立即生效,需要手动执行firewall-cmd --reload命令。

Runtime:当前立即生效,重启后失效。

Permanent:当前不生效,重启后生效
1.查看firewalld服务当前所使用的区域

firewall-cmd --get-default-zone

2.查询指定网卡在firewalld中所在的区域

firewall-cmd --get-zone-of-interface=ens33

3.修改默认区域设置为public

firewall-cmd --set-default-zone=public

4.把https协议的流量设置为永久允许放行,并立即生效

firewall-cmd --zone=public --add-service=http --permanent或
firewall-cmd --zone=public --add-port=80/tcp --permanent

firewall-cmd --reload

5.查询对应服务或端口的流量是否放行

firewall-cmd --zone=public --query-port=80/tcp或
firewall-cmd --zone=public --query-service=http

6.查询所有所有放行的端口或服务

firewall-cmd --zone=public --list-ports
firewall-cmd --zone=public --list-service

7.移除指定放行的端口或服务

firewall-cmd --zone=public --remove-port=80/tcp
firewall-cmd --zone=public --remove-port=http

8.放行一定范围的端口

filewall-cmd --zone=public --add-port=80-100/tcp --permanent

9.端口请求转发

案例1:把原本访问本机80端口的流量转发到88端口,且当前和长期均有效
firewall-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>
firewall-cmd --zone=public --add-forward-port=port=90:proto=tcp:toport=88 --permanent
案例2:把原本访问本机888端口的流量转发到22端口,要且求当前和长期均有效。
firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22

10.列出所有的端口转发策略

firewall-cmd --zone=public --list--forward-ports

11.删除指定的端口转发策略

firewall-cmd --zone=public --remove-forward-port=port=80:proto=tcp:toport=88:toaddr=127.0.0.1 --permanent

12.富规则设置

富规则也叫复规则,表示更细致、更详细的防火墙策略配置,它可以针对系统服务、端口号、源地址和目标地址等诸多信息进行更有针对性的策略配置。它的优先级在所有的防火墙策略中也是最高的。比如,我们可以在firewalld服务中配置一条富规则,使其拒绝192.168.1.179访问本机的80
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.179" port port="90" protocol="tcp" reject'

13.列出所有富规则

sudo firewall-cmd --permanent --zone=public --list-rich-rules

14.删除指定富规则

sudo firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.1.179" port port="80" protocol="tcp" reject'

以上设置为permanent的策略都需要reload之后才会生效

UFW

UFW是一个简化的前端工具,用于配置iptables防火墙规则。它提供了一个简单的命令行界面,使用户能够轻松地设置防火墙规则,包括允许或拒绝特定端口的流量。

1.安装UFW:

在大多数基于Debian的Linux发行版中,您可以使用以下命令安装UFW:
sudo apt-get install ufw

2.启用UFW:

在使用UFW之前,需要确保防火墙已启用。可以使用以下命令启用UFW:
sudo ufw enable

3.查看防火墙状态:

您可以使用以下命令查看UFW的状态和当前规则:
sudo ufw status

4.允许/拒绝特定端口:

允许特定端口的访问:

sudo ufw allow <port>
例如,要允许80端口的访问,可以使用以下命令:
sudo ufw allow 80

拒绝特定端口的访问:

sudo ufw deny <port>
例如,要拒绝90端口的访问,可以使用以下命令:
sudo ufw deny 90
允许/拒绝特定服务:

允许特定服务的访问:

sudo ufw allow <service>
例如,要允许HTTP服务的访问,可以使用以下命令:
sudo ufw allow http

拒绝特定服务的访问:

sudo ufw deny <service>
例如,要拒绝HTTPS服务的访问,可以使用以下命令:
sudo ufw deny https

5.允许/拒绝特定IP地址或子网:

允许特定IP地址或子网的访问:

sudo ufw allow from <IP/subnet>
例如,要允许来自192.168.0.10的访问,可以使用以下命令:
sudo ufw allow from 192.168.0.10

拒绝特定IP地址或子网的访问:

sudo ufw deny from <IP/subnet>
例如,要拒绝来自192.168.0.10的访问,可以使用以下命令:
sudo ufw deny from 192.168.0.10

6.删除规则:

删除特定端口的规则:

sudo ufw delete allow <port>
例如,要删除允许80端口的规则,可以使用以下命令:
sudo ufw delete allow 80

删除特定服务的规则:

sudo ufw delete allow <service>
例如,要删除允许HTTP服务的规则,可以使用以下命令:
sudo ufw delete allow http

删除特定IP地址或子网的规则:

sudo ufw delete allow from <IP/subnet>
例如,要删除允许来自192.168.0.10的规则,可以使用以下命令:
sudo ufw delete allow from 192.168.0.10

禁用UFW:

如果您想完全禁用UFW并关闭防火墙,可以使用以下命令:
sudo ufw disable

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。