CentOS 7中的防火墙
有时,当我们满心欢喜地将应用部署到服务器上后,却发现在外网却访问不了,防火墙的配置可能是导致该问题的原因之一,Windows,MacOS,Linux都有各自的防火墙,本篇将介绍CentOS 7中的防火墙的一些常用命令。
防火墙是什么
简单点说,防火墙是能过滤网络数据包
的一种安全机制,你可以设置一系列规则,来决定能否允许指定的数据包通过。我们来看一张图:
当外部网络
和内部网络
通信时,都会经过防火墙,这样,我们就可以在其中设置相应的规则允许或限制某些类型的数据包了。
常用命令
在Linux早期内核(如2.4~2.6)中,需要使用iptables
来配置相应的规则,而centos7(内核版本为3.10)之后,提供了firewalld
(dynamic firewall daemon),用户可以通过firewall-cmd
命令来进行相关设置。
可以输入firewall-cmd --help
来查看命令帮助说明信息,下面将以常见的CURD
来说明对防火墙的相关设置命令。
查询
我们先来查看一下当前系统设置了哪些规则,输入firewall-cmd --list-all
:
可以看到,允许的services
有ssh
和dhcpv6
两个,开启TCP
端口有80,8000,8080,443,27017和3000这几个。
如果你想直接查看某个端口是否开放,可以使用firewall-cmd --query-port=80/tcp
,这样就能快速查询具体的端口是否开放了。
添加
这里以最常用的添加端口为例,比如,需要添加一个9000端口:
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --reload
注意:--permanent
表示永久生效,这样,当电脑重启后,设置的规则依旧存在;另外,设置完毕后,还需要使用--reload
重新加载,来让规则立刻生效。
移除
和添加对应,比如,需要一处一个9000端口:
firewall-cmd --permanent --remove-port=9000/tcp
firewall-cmd --reload
同样的,记得使用--reload
重新加载,来让规则立刻生效。
停止和启动
如果要停止整个防火墙服务呢?
systemctl stop firewalld
停止后,如果要启动:
systemctl start firewalld
最后,可以通过如下命令查看firewalld的允许情况:
systemctl status firewalld
小结
防火墙其实是比较复杂的,本篇只是简单地介绍了防火墙的基本命令和端口规则的设置,拥有这些基本的概念后,能够帮助你自己排查一些最常见的Web应用部署的网络访问故障了。除此之外,防火墙中还可以设置 interface、IP、protocol、Sources、rich-rule以及whitelist等规则,本篇就不展开细说了。
参考
- 《鸟哥的Linux私房菜,基础学习篇(第四版)》,鸟哥著
- 《鸟哥的Linux私房菜,服务器架设篇(第三版)》,鸟哥著