在centos 8中如何使用firewalld设置防火墙

时间:2019-04-29 03:18:00  来源:igfitidea点击:

在CentOS 8中,nftables取代iptables成为默认的Linux网络包过滤框架。可以添加、删除或更新防火墙规则来阻止或允许流量通过。保护服务器免受不必要的攻击。

如何在CentOS 8上使用FirwallD设置防火墙?

FirwallD的基本概念

firewalld简化了网络流量管理的概念。在CentOS 8上的firewalld中,有两个概念:

zone和service

zone

zone翻译即区域,根据不同区域对流量进行划分。
在firewalld 中zone就是一些预定义的规则集。

可以在目录/usr/lib/firewalld/zones/查看所有的zone定义集。

理解预定义的zone

  1. block- 拒绝所有进入的网络连接。只有从系统内部发起的网络连接是可能的。
  2. dmz- DMZ区域,提供对LAN的有限访问,只允许选定的传入端口。
  3. drop- 所有输入的网络连接被删除,只允许输出的网络连接。
  4. external- 有用的路由器类型的连接。您还需要局域网和广域网接口来伪装(NAT)以正确工作。
  5. home- 家庭网络,如笔记本电脑和台式机在您的局域网内,你相信其他电脑。只允许选择的TCP/IP端口。
  6. internal- 信任局域网上的其他服务器或计算机时,在内部网络上使用。
  7. public- 您不相信网络上的任何其他计算机和服务器。您只允许所需的端口和服务。对于服务器,应始终使用公共区域。
  8. trusted- 接受所有网络连接。不建议将此区域用于连接到WAN的服务器。
  9. work- 在你的工作场所使用,在那里你信任你的同事和其他服务器。

使用下面的命令查看所有的zone

firewall-cmd --get-zones

如何查看防火墙默认的zone

firewall-cmd --get-default-zone

centos查看服务器的网卡

ip link show
nmcli device status

当向NetworkManager添加新接口连接(例如eth0或ens3)时,它们被附加到默认区域。运行以下命令查看:

firewall-cmd --get-active-zones

service

service是本地端口、协议、源端口、目的地和防火墙帮助模块的列表。
例如:

端口 – 443 or 25 or 110
服务名 – SSH, HTTP
协议 – ICMP

如何查找firewalld支持的服务

sudo firewall-cmd --get-services
sudo firewall-cmd --get-services | grep mysql
ls -l /usr/lib/firewalld/services/
cat /usr/lib/firewalld/services/ssh.xml

如何查看当前zone中允许哪些服务的流量通过

sudo firewall-cmd --list-services
sudo firewall-cmd --list-services --zone=public

如何运行某些端口通过防火墙

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --zone=public --list-ports

centos linux防火墙如何禁止某些服务的流量通过

sudo firewall-cmd --remove-service=cockpit --permanent
sudo firewall-cmd --zone=public --remove-service=dhcpv6-client --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-services

centos linux如何阻止对某些端口的访问

sudo firewall-cmd --zone=public --remove-port=23/tcp --permanent

linux如何禁止指定的IP访问

只允许来自10.9.70.9的IP访问22端口

sudo firewall-cmd --permanent --zone=public --add-rich-rule 'rule family="ipv4" source address="10.9.70.9" port port=22 protocol=tcp accept'

只允许办公网络登录服务器

sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'

删除这条防火墙规则

sudo firewall-cmd --remove-rich-rule 'rule family="ipv4" source address="192.168.1.0/24" port port="22" protocol="tcp" accept' --permanent

如何进行流量转发

将服务器的443端口转发到8080

sudo firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 --permanent

如何删除端口转发规则

sudo firewall-cmd --zone=public --remove-forward-port=port=80:proto=tcp:toport=8080

将443端口转发到另一台服务器的8080端口,这时需要启用masquerade(IP伪装)

sudo firewall-cmd --zone=public --add-masquerade
sudo firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toport=8080:toaddr=192.168.1.101 --permanent

如何查看与pbulic关联的防火墙规则和服务

sudo firewall-cmd --list-all
或者
sudo firewall-cmd --list-all --zone=public

如何重启/关闭防火墙服务

启动并设置开机启动firewalld

sudo systemctl start firewalld
sudo systemctl enable firewalld

停止并禁用防火墙firewalld

sudo systemctl stop firewalld
sudo systemctl disable firewalld

检查防火墙状态

sudo firewall-cmd --state

更改规则时重新加载firewalld配置

sudo firewall-cmd --reload

如何将规则永久添加到规则集中

使用 --permanent参数

sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-services --permanent