(Linux系统之网络安全管理)
一、Firewalld介绍
Firewalld是一个动态防火墙管理器,它是nftables框 架的前端( 使用nfs命令), firewalld曾 使用iptables命令来直接配置iptables。在RHEL8中,firewalld仍然是推荐的前端,它使用nfs来管理防火墙规则集。
二、Firewalld的区域
三、firewall的两种执行模式
◆ runtimel临时模式:修改规则马上生效,但如果重启服务则马上失效,测试建议
◆ permanent持久模式:修改规则后需要reload重载服务才会生效,生产建议
四、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 关闭应急状况模式
五、防火墙firewall的基本操作
1.查看指定区域的防火墙规则
[root@192 ~]# firewall-cmd --zone=home --list-all
home
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh mdns samba-client dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
2.查看默认区域配置
[root@192 ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: ssh dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
3.绑定源IP到某个zone
[root@192 ~]# firewall-cmd --permanent --zone=home --add-source=192.168.3.11
success
4.源地址解绑
[root@192 ~]# firewall-cmd --permanent --zone=home --remove-source=192.168.3.11
success
5.修改源地址绑定
[root@192 ~]# firewall-cmd --permanent --zone=drop --change-source=192.168.3.11
success
6.绑定某个网口到zone
firewall-cmd --permanent --zone=home --change-interface=ens33 绑定网络接口到home区域
irewall-cmd --permanent --zone=home --remove-interface=ens33 #将绑定的网口解绑
7.查看当前默认区域是什么
[root@192 ~]# firewall-cmd --get-default-zone
public
8.设置默认的区域
firewall-cmd --set-default-zone=public home
六、设置防火墙规则
1.查看预设的服务
[root@192 ~]# firewall-cmd --get-services
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry docker-swarm dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target jenkins kadmin kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls managesieve mdns minidlna mongodb mosh mountd ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius redis rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh syncthing syncthing-gui synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server
2.永久放行samba服务
firewall-cmd --permanent --add-service=samba
3.永久移除samba服务
firewall-cmd --permanent --remove-service=samba
4.查询home区域是否允许samba服务
[root@192 ~]# firewall-cmd --zone=home --query-service=samba
no
5.查询firewall开放服务列表
[root@192 ~]# firewall-cmd --permanent --list-services
ssh dhcpv6-client samba
[root@192 ~]#
6.查看某个区域开放的端口
firewall-cmd --zone=public --list-port
7.放行端口
firewall-cmd --zone =drop --permanent --add-port= 22/tcp 放行22号端口
七、firewall的端口转发
1.开启包转发功能
sysctl -w net.ipv4.ip_forward=1
2.将本机的866端口转发到192.168.3.11的27端口上
# firewall-cmd --permanent --add-masquerade 开启masquerade地址伪装功能
[root@192 ~]#
[root@192 ~]# firewall-cmd --permanent --add-forward-port=port=866:proto=tcp:toport=27:toaddr=192.168.3.11
success
3.查看转发规则
firewall-cmd --list-all