Linux下配置防火墙规则---firewalld

概述

防火墙是用来允许或阻止流量访问的一种策略,是隔离本地网络与外部网络的中间防御系统。它允许用户通过定义 一组防火墙规则 来控制主机上的入站网络流量。这些规则用于对进入的流量进行排序,并可以 阻断或允许流量。

防火墙需要第一时间接触流量,对其管理的规则主要有iptables和firewalld。

firewalld 使用区(zone)和服务(service)的概念来简化流量管理。

zones 是预定义的规则 集。网络接口和源可以分配给区。 firewalld 可以用来根据用户决定放置在那个网络中的接口和流量级别的信任级别将网络划 分为不同的区。 可以为接口分配区:
1.NetworkManager
2.firewall-config 工具
3.firewall-cmd 命令行工具
4.RHEL web 控制台

service使用一个或多个端口或地址进行网络通信。防火墙会根据端口过滤通讯。要允许服务的网 络流量,必须打开其端口。 服务可以是本地端口、协议、源端口和目的地列表,并在启用了服务时自动载入防火墙帮助程 序模块列表。使用服务可节省用户时间,因为它们可以完成一些任务,如打开端口、定义协 议、启用数据包转发等等,而不必在另外的步骤中设置所有任务。 可使用图形 firewall-config 工具、firewall-cmd 和 firewall-offline-cmd添加和 删除服务。

预定义区域存储在 /usr/lib/firewalld/zones/ 目录中,并可立即应用于任意可用的网 络接口。只有在修改后,这些文件才会复制到 /etc/firewalld/zones/ 目录中。

使用 CLI(Command-Line Interface ) 客户端可能会对当前防火墙设置有不同的视图。--list-all 选项显示 firewalld 设置的完整概述。

[root@192 redhat]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens160
sources:
services: cockpit dhcpv6-client http ssh
ports: 8080/tcp
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

要指定显示设置的区域,在 firewall-cmd --list-all 命令中添加 --zone=*zone

[root@192 redhat]# firewall-cmd --list-all --zone=home
home
target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client mdns samba-client ssh
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

查看当前区中允许哪些服务:

[root@192 redhat]# firewall-cmd --list-services
cockpit dhcpv6-client http ssh

使用 CLI 禁用紧急事件的所有流量 要立即禁用网络流量,请切换 panic 模式:启用 panic 模式可停止所有网络流量。因此,它应只在对机器有物理访问权限或者使用串口控 制台登录时才使用。

firewall-cmd --panic-on

firewall-cmd --panic-off 要查看是否打开或关闭 panic 模式 firewall-cmd --query-panic

列出所有预定义的服务:

[root@192 redhat]# firewall-cmd --get-services
RH-Satellite-6 RH-Satellite-6-capsule afp amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine cockpit collectd condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns dns-over-tls docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger foreman foreman-proxy freeipa-4 freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp galera ganglia-client ganglia-master git grafana gre high-availability http http3 https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jellyfin jenkins kadmin kdeconnect kerberos kibana klogin kpasswd kprop kshell kube-api kube-apiserver kube-control-plane kube-controller-manager kube-scheduler kubelet-worker ldap ldaps libvirt libvirt-tls lightning-network llmnr llmnr-tcp llmnr-udp managesieve matrix mdns memcache minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nbd netbios-ns nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy prometheus proxy-dhcp ptp pulseaudio puppetmaster quassel radius rdp redis redis-sentinel rpc-bind rquotad rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync spotify-sync squid ssdp ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tentacle tftp tile38 tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wireguard ws-discovery ws-discovery-client ws-discovery-tcp ws-discovery-udp wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server zerotier

使用 CLI 控制端口 端口是可让操作系统接收和区分网络流量并将其转发到系统服务的逻辑设备。它们通常由 侦听端口的守护进程来表示,它会等待到达这个端口的任何流量。

打开端口

列出所有允许的端口

[root@192 redhat]# firewall-cmd --list-ports
8080/tcp

在允许的端口中添加一个端口,以便为入站流量打开这个端口: 端口类型可以是 tcp、udp、sctp 或 dccp。这个类型必须与网络通信的类型匹配。

[root@192 redhat]# firewall-cmd --add-port=9092/tcp --permanent
success
[root@192 redhat]# firewall-cmd --reload
success
[root@192 redhat]# firewall-cmd --list-ports
8080/tcp 9092/tcp
[root@192 redhat]#

关闭端口

强烈建议您尽快关闭所有不必要的端 口,因为端口处于打开状态会存在安全隐患。 要关闭某个端口,请将其从允许的端口列表中删除:

[root@192 redhat]# firewall-cmd --remove-port=9092/tcp --permanent
success
[root@192 redhat]# firewall-cmd --reload
success
[root@192 redhat]# firewall-cmd --list-ports
8080/tcp
[root@192 redhat]#

使用 firewalld 区 zones 代表一种更透明管理传入流量的概念。这些区域连接到联网接口或者分配一系列源地 址。您可以独立为每个区管理防火墙规则,这样就可以定义复杂的防火墙设置并将其应用到流 量。 列出区域 查看系统中有哪些可用区:

[root@192 redhat]# firewall-cmd --get-zones
block dmz drop external home internal nm-shared public trusted work
[root@192 redhat]#

查看所有区的详细信息:

firewall-cmd --list-all-zones

查看特定区的详细信息: firewall-cmd --zone=work --list-all

. 更改特定区的 firewalld 设 要在不同的区中工作,使用 --zone=*zone-name* 选项。例如,允许在区 work 中使用 httptest服务:

firewall-cmd --add-service=httptest --zone=work

更改默认区 系统管理员在其配置文件中为网络接口分配区域。如果接口没有被分配给指定区,它将被 分配给默认区。每次重启 firewalld 服务后, firewalld 加载默认区的设置并使其活跃。 设置默认区: 显示当前的默认区

firewall-cmd --get-default-zone

设置新的默认区:

firewall-cmd --set-default-zone=wor 在此流程后,设置是一个永久设置,即使没有 --permanent 选项。

猜你喜欢

转载自blog.csdn.net/m0_59081230/article/details/128813396