TranslateProject/published/201705/20170213 Set Up and Configure a Firewall with FirewallD on CentOS 7.md
2017-06-03 22:58:43 +08:00

149 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

在 CentOS 上使用 FirewallD 配置防火墙
================================================
![](https://www.rosehosting.com/blog/wp-content/uploads/2017/02/set-up-and-configure-a-firewall-with-firewalld-on-centos-7.jpg)
FirewallD 是 CentOS 7 服务器上默认使用的防火墙管理工具。从根本上来讲,它是在 iptables 基础上的一个包装,它同时拥有图形配置工具 firewall-config 和命令行工具 firewall-cmd。使用 iptables 服务的话,每次更改设置后都要求刷新旧的规则,然后从文件 `/etc/sysconfig/iptables` 中读取新的规则,然而 firewalld 只对差异进行改动。
### FirewallD 区域
FirewallD 使用服务和区域代替 iptables 的规则和链。默认下面的区域都是可用的:
* drop——任何流入网络的包都被丢弃不作出任何响应只允许流出的网络连接。
* block——任何进入的网络连接都被拒绝并返回 IPv4 的 icmp-host-prohibited 报文。只允许流出的网络连接。
* public——只接受选中的传入网络连接例如在公共场合。
* public——用于启用伪装的外部网络只接受被选中的传入网络连接。
* dmz——隔离区域(demilitarized zone),有限制地公开访问内部网络,只接受被选中的传入网络连接。
* work——用于工作区域中的计算机只接受选中的流入网络连接。
* home——用于家庭区域中的计算机只接受选中的流入网络连接。
* internal——用于内部网络中的计算机只接受选中的流入网络连接。
* trusted——所有的网络连接都可以接受。
要显示所有可用的区域可以运行:
```
# firewall-cmd --get-zones
work drop internal external trusted home dmz public block
```
要显示默认的区域:
```
# firewall-cmd --get-default-zone
public
```
改变默认的区域:
```
# firewall-cmd --set-default-zone=dmz
# firewall-cmd --get-default-zone
dmz
```
### FirewallD 服务
FirewallD服务是 xml 配置文件,每个文件里面记录有防火墙针对某项服务的配置信息。要列出所有可用的服务,运行命令:
```
# firewall-cmd --get-services
amanda-client amanda-k5-client bacula bacula-client ceph ceph-mon dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster radius rpc-bind rsyncd samba samba-client sane smtp smtps snmp snmptrap squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server
```
xml 配置文件存放在 `/usr/lib/firewalld/services/``/etc/firewalld/services/` 目录内。
### 使用 FirewallD 配置你的防火墙
作为一个例子,如果你正在运行一个 web 服务器、7022端口上的 SSH 和 mail 服务器,这里会告诉你如何用 FirewallD 配置你的 [RoseHosting VPS](6) 防火墙。
我们首先设置默认区域为 dmz
```
# firewall-cmd --set-default-zone=dmz
# firewall-cmd --get-default-zone
dmz
```
为了将 HTTP 和 HTTPS 的服务规则永久加入 dmz 区域,运行命令:
```
# firewall-cmd --zone=dmz --add-service=http --permanent
# firewall-cmd --zone=dmz --add-service=https --permanent
```
打开 25 端口SMTP)和 465 端口(SMTPS):
```
firewall-cmd --zone=dmz --add-service=smtp --permanent
firewall-cmd --zone=dmz --add-service=smtps --permanent
```
打开 IMAP、IMAPS、POP3 和 POP3S端口
```
firewall-cmd --zone=dmz --add-service=imap --permanent
firewall-cmd --zone=dmz --add-service=imaps --permanent
firewall-cmd --zone=dmz --add-service=pop3 --permanent
firewall-cmd --zone=dmz --add-service=pop3s --permanent
```
因为 SSH 端口号已经被改为 7022所以我们将删除 ssh 服务(端口 22),然后开启端口 7022
```
firewall-cmd --remove-service=ssh --permanent
firewall-cmd --add-port=7022/tcp --permanent
```
为了让这些改变生效,我们需要用命令重新加载防火墙:
```
firewall-cmd --reload
```
最后,你可以使用命令列出规则:
```
### firewall-cmd list-all
dmz
target: default
icmp-block-inversion: no
interfaces:
sources:
services: http https imap imaps pop3 pop3s smtp smtps
ports: 7022/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
```
***
当然,如果您使用我们的 [CentOS VPS hosting][7] 服务中任何一种服务,您都不必亲自做上面任何设置,您可以让我们专业的 Linux 管理员来为您设置。他们提供 24x7 的服务,并且会立即处理您的要求。
PS如果您喜欢这篇文章请将它分享到社交平台上与您的朋友共享或者仅仅在下面留言回复。谢谢
--------------------------------------------------------------------------------
via: https://www.rosehosting.com/blog/set-up-and-configure-a-firewall-with-firewalld-on-centos-7/
作者:[rosehosting.com][a]
译者:[zhousiyu325](https://github.com/zhousiyu325)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://www.rosehosting.com/blog/set-up-and-configure-a-firewall-with-firewalld-on-centos-7/
[1]:https://www.rosehosting.com/blog/set-up-and-configure-a-firewall-with-firewalld-on-centos-7/
[2]:https://www.rosehosting.com/blog/set-up-and-configure-a-firewall-with-firewalld-on-centos-7/#comments
[3]:https://www.rosehosting.com/blog/category/tips-and-tricks/
[4]:https://plus.google.com/share?url=https://www.rosehosting.com/blog/set-up-and-configure-a-firewall-with-firewalld-on-centos-7/
[5]:http://www.linkedin.com/shareArticle?mini=true&url=https://www.rosehosting.com/blog/set-up-and-configure-a-firewall-with-firewalld-on-centos-7/&title=Set%20Up%20and%20Configure%20a%20Firewall%20with%20FirewallD%20on%20CentOS%207&summary=FirewallD%20is%20a%20firewall%20management%20tool%20available%20by%20default%20on%20CentOS%207%20servers.%20Basically,%20it%20is%20a%20wrapper%20around%20iptables%20and%20it%20comes%20with%20graphical%20configuration%20tool%20firewall-config%20and%20command%20line%20tool%20firewall-cmd.%20With%20the%20iptables%20service,%20every%20change%20requires%20flushing%20of%20the%20old%20rules%20and%20reading%20the%20new%20rules%20...
[6]:https://www.rosehosting.com/linux-vps-hosting.html
[7]:https://www.rosehosting.com/centos-vps.html