赞
踩
防火墙守护 firewalld 服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 的临时或永久的接口规则,并实时生效而无需重启服务。
支持网络区域所定义的网络连接以及接口安全等级的动态防火墙工具。
支持IPv4、IPv6防火墙设置及以太网桥
拥有两种配置模式
1、运行时配置
实时生效,并一直持续到Firewalld重新启动或者reload
不中断现有连接
不能修改服务配置
2、永久配置
不立即生效,除非Firewalld重启或者reload
中断现有的连接
可以修改服务配置
1 /usr/lib/firewalld/
2 /usr/lib/firewalld/services
3 /usr/lib/firewalld/zones
(2)用户配置目录
1 /etc/firewalld/
2 /etc/firewalld/services
3 /etc/firewalld/zones
netfilter
位于Linux内核中的包过滤功能体系
成为Linux防火墙的“内核态”
Firewalld/iptables
CentOS7默认的管理防火墙规则的工具
称为Linux防火墙的“用户态”
个人理解:
firewalld是centos7里面的新的防火墙命令,它底层还是使用 iptables 对内核命令动态通信包过滤的,简单理解就是firewall是centos7下管理iptables的新命令
Firewalld | iptables | |
---|---|---|
配置文件位置 | /usr/firewalld | /ect/sysconfig/iptables |
/etc/firewalld | ||
对规则的修改 | 不需要全部刷新策略,不丢失现行连接 | 需要全部刷新策略,丢失连接 |
防火墙类型 | 动态防火墙 | 静态防火墙 |
firewalld修改后不需要重启服务,iptables需要重启服务
区域就像是进入服务器的安检机,每个区域都具有不同限制程度的规则
可以使用一个或多个区域,但是任何一个活跃区域都要有关联源IP或者网卡接口
一般情况下,public(公共区域)是默认区域,包含所有接口
drop: 丢弃所有进入的包,而不给出任何响应
block: 拒绝所有外部发起的连接,允许内部发起的连接
public: 允许指定的进入连接
external: 同上,对伪装的进入连接,一般用于路由转发
dmz: 允许受限制的进入连接
work: 允许受信任的计算机被限制的进入连接,类似 workgroup
home: 同上,类似 homegroup
internal: 同上,范围针对所有互联网用户
trusted: 信任所有连接
检查数据来源的源地址
若地址关联到区域,则开始执行关联区域的所指定规则
若地址没关联到区域,则用传入数据的网络接口的区域并执行 该区域的规则
若网络接口为关联到指定区域,则使用默认的区域并执行该区域所制定的规则
Firewall-config图形工具
Firewall-cmd命令行工具
/etc/firewalld/中的配置文件
Firewalld会优先使用 /etc/Firewalld/ 中的配置,若不存在配置文件,则使用 /usr/lib/firewalld/ 中的配置
/etc/firewalld/ :用户自定义配置文件,需要是可通过从 /usr/lib/firewalld/ 中拷贝
/usr/lib/firewalld/ :默认配置文件,不建议修改,若恢复至默认,可直接删除 /etc/firewalld/ 中的配置
可以使用 Xshell,也可以在CentOS7的伪终端中使用
下为 Xshell 打开的 Xmanager 与系统防火墙同步
下为系统中打开的 图形管理工具
服务器IP:20.0.0.139
客户机1IP:20.0.0.132 7.2
客户机2IP:20.0.0.135 5papche
需求描述:
1 禁止主机 ping 服务器
2 仅允许 20.0.0.132 使用 shh远程登录
3 允许所有主机访问网页服务(apache)
分析:
一、ping命令是使用ICMP协议,所以直接一点把ICMP禁了
二、因为仅允许132进行ssh,所以给132的接口区域配置ssh,把默认接口的ssh禁了
三、允许访问apache,所以http不用禁
在 ICMP 过滤器中勾选 echo-reply 和 echo-request
这样任何客户机都无法 ping 通服务器了
仅允许132ssh本服务器
先去掉默认区域的ssh选项
将20.0.0.132加入别的区域,这样就能使用别的区域的规则了
132可以正常ssh,135则不行
允许所有主机访问网页
两机均可访问网页
[root@1centos ~]# systemctl status 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-29 15:59:36 CST; 5s ago
Docs: man:firewalld(1)
Main PID: 10671 (firewalld)
Tasks: 2
CGroup: /system.slice/firewalld.service
└─10671 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid...
显示系统预定义的区域
[root@1centos ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
显示系统预定义的服务
[root@1centos ~]# 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 cockpit 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
显示预定义的 ICMP 类型
[root@1centos ~]# firewall-cmd --get-icmptypes
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
其中ICMP执行结果的各个类型翻译如下:
destination-unreachable:目的地址不可达。
echo-reply:应答回应(pong)。
parameter-problem:参数问题。
redirect:重新定向。
router-advertisement:路由器通告。
router-solicitation:路由器征寻。
source-quench:源端抑制。
time-exceeded:超时。
timestamp-reply:时间戳应答回应。
timestamp-request:时间戳请求
显示默认区域
[root@1centos ~]# firewall-cmd --get-default-zone
public
设置默认区域
[root@1centos ~]# firewall-cmd --set-default-zone=work
success
[root@1centos ~]# firewall-cmd --get-default-zone
work
一个活动区域必须有一个对应接口
[root@1centos ~]# firewall-cmd --get-active-zones
work
interfaces: ens33
[root@1centos ~]# firewall-cmd --get-zone-of-interface=ens33
work
为其添加一块网卡,网卡名 ens37
[root@1centos ~]# firewall-cmd --get-zone-of-interface=ens37
no zone
[root@1centos ~]# firewall-cmd --zone=public --add-interface=ens37
success
[root@1centos ~]# firewall-cmd --get-zone-of-interface=ens37
public
[root@1centos ~]# firewall-cmd --zone=drop --change-interface=ens37
The interface is under control of NetworkManager, setting zone to 'drop'.
success
[root@1centos ~]# firewall-cmd --zone=drop --remove-interface=ens37
The interface is under control of NetworkManager, setting zone to default.
success
[root@1centos ~]# firewall-cmd --list-all-zones block target: %%REJECT%% icmp-block-inversion: no interfaces: sources: services: ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: dmz target: default icmp-block-inversion: no interfaces: sources: services: ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: drop target: DROP icmp-block-inversion: no interfaces: sources: services: ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: external target: default icmp-block-inversion: no interfaces: sources: services: ssh ports: protocols: masquerade: yes forward-ports: source-ports: icmp-blocks: rich rules: 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: internal 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: public (active) target: default icmp-block-inversion: no interfaces: public sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: trusted target: ACCEPT icmp-block-inversion: no interfaces: sources: services: ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: work (active) target: default icmp-block-inversion: no interfaces: ens33 ens37 sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
如果啥都不加显示默认区域的规则
[root@1centos ~]# firewall-cmd --list-all
work (active)
target: default
icmp-block-inversion: no
interfaces: ens33 ens37
sources:
services: ssh dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@1centos ~]# firewall-cmd --zone=public --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: public
sources:
services: ssh dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@1centos ~]# firewall-cmd --list-services
ssh dhcpv6-client
[root@1centos ~]# firewall-cmd --zone=public --list-services
ssh dhcpv6-client
[root@1centos ~]# firewall-cmd --zone=public --add-service=ftp
success
[root@1centos ~]# firewall-cmd --zone=public --add-service=tftp
success
[root@1centos ~]# firewall-cmd --zone=public --list-services
ssh dhcpv6-client ftp tftp
[root@1centos ~]# firewall-cmd --zone=public --remove-service=tftp
success
[root@1centos ~]# firewall-cmd --zone=public --list-services
ssh dhcpv6-client ftp
[root@1centos ~]# firewall-cmd --zone=public --add-port=443/tcp
success
[root@1centos ~]# firewall-cmd --zone=public --list-ports
443/tcp
[root@1centos ~]# firewall-cmd --zone=public --remove-port=443/tcp
success
[root@1centos ~]# firewall-cmd --zone=public --list-ports
对应图形界面的 ICPM 过滤器
[root@1centos ~]# firewall-cmd --zone=public --add-icmp-block=echo-request
success
[root@1centos ~]# firewall-cmd --zone=public --list-icmp-blocks
echo-request
[root@1centos ~]# firewall-cmd --zone=public --remove-icmp-block=echo-request
success
[root@1centos ~]# firewall-cmd --zone=public --list-icmp-blocks
两种配置模式为:运行时 和 永久生效
–reload:重新加载防火墙规则并保持状态信息,即将永久配置应用为运行时配置(和 systemctl reload firewalld 差不多)。
–permanent:带有此选项的命令用于设置永久性规则,这些规则只有在重新启动
firewalld 或重新加载防火墙规则时才会生效;若不带有此选项,表示用于设置运行时
规则。
–runtime-to-permanent:将当前的运行时配置写入规则配置文件中,使之成为永久生效
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。