linux 防火墙策略
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
- 点赞
- 收藏
- 关注作者
评论(0)