Firewalld | iptables | |
---|---|---|
配置文件 | /usr/lib/firewalld,/etc/firewalld/firewalld.conf | /etc/sysconfig/iptables-config |
对规则的修改 | 不需要全部刷新策略,不丢失现行连接 | 需要全部刷新策略,丢失链接 |
防火墙类型 | 动态防火墙 | 静态防火墙 |
centos6是iptables
只有命令管理工具 iptables(操作复杂) firewall-cmd
centos7有firewalld,iptables
图形化管理工具 firewall-config
命令管理工具 iptables(操作复杂) firewall-cmd
区域 | 默认规则策略 |
---|---|
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 | 拒绝流入的流量,除非与流出的流量相关 |
[root@localhost ~]# systemctl start firewalld //启动 firewalld
[root@localhost ~]# systemctl enable firewalld //设置 firewalld 为开机自启动
[root@localhost ~]# systemctl status firewalld //查看 firewalld 防火墙状态
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since 四 2020-07-30 11:40:47 CST; 3 days ago
Docs: man:firewalld(1)
Main PID: 8899 (firewalld)
CGroup: /system.slice/firewalld.service
└─8899 /usr/bin/python -Es /usr/sbin/firewa...
7月 30 11:40:45 localhost.localdomain systemd[1]: Sta...
[root@localhost ~]# firewall-cmd --state //查看防火墙状态
running
[root@localhost ~]# systemctl stop firewalld //停止 firewalld
[root@localhost ~]# systemctl disable firewalld //设置 firewalld 开机不自启动
firewall-cmd 预定义信息主要包括三种:可用的区域、可用的服务以及可用的 ICMP 阻 塞类型,具体的查看命令如下所示。
[root@localhost ~]# firewall-cmd --get-zones //显示预定义的区域
[root@localhost ~]# firewall-cmd --get-service //显示预定义的服务
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 open 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
[root@localhost ~]# firewall-cmd --get-icmptypes //显示预定义的 ICMP 类型
address-unreachable bad-header communication-prohibited destination-unreachable echo-reply echo-request fragmentation-needed host-precedence-violation host-prohibited host-redirect host-unknown host-unreachable ip-header-bad neighbour-advertisement neighbour-solicitation network-prohibited network-redirect network-unknown network-unreachable no-route packet-too-big parameter-problem port-unreachable precedence-cutoff protocol-unreachable redirect required-option-missing router-advertisement router-solicitation source-quench source-route-failed time-exceeded timestamp-reply timestamp-request tos-host-redirect tos-host-unreachable tos-network-redirect tos-network-unreachable ttl-zero-during-reassembly ttl-zero-during-transit unknown-header-type unknown-option
使用 firewall-cmd 命令可以实现获取和管理区域,为指定区域绑定网络接口等功能
[root@localhost ~]# firewall-cmd --get-default-zone
public
[root@localhost ~]# firewall-cmd --set-default-zone= <>里面是想要设置为默认的区域
示例
[root@localhost ~]# firewall-cmd --set-default-zone=dmz
success
[root@localhost ~]# firewall-cmd --get-default-zone
dmz
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33
dmz
4.3.4 将网络接口 ens33 对应区域更改为 internal 区域
[root@localhost ~]# firewall-cmd --zone=internal --change-interface=ens33
The interface is under control of NetworkManager, setting zone to 'internal'.
success
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33查看网络接口ens33对应的区域
internal
[root@localhost ~]# firewall-cmd --zone=internal --list-interfaces
ens33
[root@localhost ~]# firewall-cmd --get-active-zones
internal
interfaces: ens33
firewall-cmd --zone= --add-interface=
[root@localhost ~]# firewall-cmd --zone= --change-interface=
[root@localhost ~]# firewall-cmd --remove-interface=
[root@localhost ~]# firewall-cmd --list-all-zones
block
target: %%REJECT%%
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports
[root@localhost ~]# firewall-cmd [–zone=] --list-all
命令选项 | 说明 |
---|---|
–get-default-zone | 显示网络连接或接口的默认区域 |
–set-default-zone=区域类型 | 设置网络连接或接口的默认区域 |
–get-active-zones | 显示已激活的所有区域 |
–get-zone-of-interface=接口(网卡) | 显示指定接口绑定的区域 |
–zone=区域类型 --add-interface=接口(网卡) | 为指定接口绑定区域 |
–zone=区域类型 --change-interface=接口(网卡) | 为指定的区域更改绑定的网络接口 |
–zone=区域类型 --remove-interface=接口(网卡) | 为指定的区域删除绑定的网络接口 |
–query-interface=接口(网卡) | 查询区域中是否包含某接口 |
–list-all-zones | 显示所有区域及其规则 |
[–zone=区域类型] --list-all | 显示所有指定区域的所有规则 |
为 了 方 便 管 理 , firewalld 预 先 定 义 了 很 多 服 务 , 存 放 在 /usr/lib/firewalld/services/ 目录中,服务通过单个的 XML 配置文件来指定。这些配置文件则按以下格式命名:service-name.xml,每个文件对应一项具体的网络服务,如 ssh 服 务等。与之对应的配置文件中记录了各项服务所使用的 tcp/udp 端口。
在最新版本的 firewalld 中默认已经定义了 70 多种服务供我们使用,对于每个网络区域,均可以配置允 许访问的服务。当默认提供的服务不适用或者需要自定义某项服务的端口时,我们需要将
service 配置文件放置在 /etc/firewalld/services/ 目录中。service 配置具有以下优点
[root@localhost ~]# firewall-cmd --list-services //显示默认区域内允许访问的所有服务
[root@localhost ~]# firewall-cmd --add-service=http //设置默认区域允许访问 http 服务
[root@localhost ~]#firewall-cmd --add-service=ssh //设置默认区域允许访问 https 服务
[root@localhost ~]# firewall-cmd --zone=internal --add-service=mysql //设置 internal 区域允许访问 mysql 服务
[root@localhost~]#firewall-cmd --zone=internal --remove-service=samba-client //设置 internal 区域不允许访问 samba-client 服务
[root@localhost ~]# firewall-cmd --zone=internal --list-services //显示 internal 区域内允许访问的所有服务
命令选项 | 说明 |
---|---|
[–zone=区域类型] --list-services | 显示指定区域内允许访问的所有服务 |
[–zone=区域类型] --add-service=服务 | 为指定区域设置允许访问的某项服务 |
[–zone=区域类型] --remove-service=服务 | 删除指定区域已设置的允许访问的某项服务 |
[–zone=区域类型] --query-service=服务 | 查询指定区域中是否启用了某项服务 |
[root@localhost ~]# firewall-cmd --zone=work --list-port
[root@localhost ~]# firewall-cmd --zone=internal --add-port=69/udp
success
[root@localhost ~]# firewall-cmd --zone=internal --list-ports 查看
69/udp
删除udp69端口
[root@localhost ~]# firewall-cmd --zone=internal --remove-port=69/udp
[root@localhost ~]# firewall-cmd --zone=internal --list-icmp-blocks
[root@promote ~]# firewall-cmd --zone=internal --remove-icmp-block=echo-reply
success
[root@promote ~]# firewall-cmd --zone=internal --remove-icmp-block=echo-reply
success
[root@localhost ~]# firewall-cmd --zone=internal --query-icmp-block=echo-request
no
操作命令选项 | 说明 |
---|---|
[–zone=区域类型] --list-icmp-blocks | 显示指定区域内阻塞的所有ICMP类型 |
[–zone=区域类型] --add-icmp-block=ICMP类型 | 为指定区域设置阻塞的某项ICMP类型 |
nternal --query-icmp-block=echo-request
no
#### 4.8.5 操作命令总结
| 操作命令选项 | 说明 |
| --------------------------------------------- | -------------------------------- |
| [–zone=区域类型] --list-icmp-blocks | 显示指定区域内阻塞的所有ICMP类型 |
| [–zone=区域类型] --add-icmp-block=ICMP类型 | 为指定区域设置阻塞的某项ICMP类型 |
| [–zone=区域类型] --remove-icmp-block=ICMP类型 | 删除指定区域已阻塞的某项ICMP类型 |