CentOS 7中的防火墙

阅读 2.1k
标签: Linux

有时,当我们满心欢喜地将应用部署到服务器上后,却发现在外网却访问不了,防火墙的配置可能是导致该问题的原因之一,Windows,MacOS,Linux都有各自的防火墙,本篇将介绍CentOS 7中的防火墙的一些常用命令。

防火墙是什么

简单点说,防火墙是能过滤网络数据包的一种安全机制,你可以设置一系列规则,来决定能否允许指定的数据包通过。我们来看一张图:


外部网络内部网络通信时,都会经过防火墙,这样,我们就可以在其中设置相应的规则允许或限制某些类型的数据包了。

常用命令

在Linux早期内核(如2.4~2.6)中,需要使用iptables来配置相应的规则,而centos7内核版本为3.10)之后,提供了firewallddynamic firewall daemon),用户可以通过firewall-cmd命令来进行相关设置。

可以输入firewall-cmd --help来查看命令帮助说明信息,下面将以常见的CURD来说明对防火墙的相关设置命令。

查询

我们先来查看一下当前系统设置了哪些规则,输入firewall-cmd --list-all

可以看到,允许的servicessshdhcpv6两个,开启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私房菜,服务器架设篇(第三版)》,鸟哥著
最后编辑于: 2022-06-25

评论(0条)

(必填)
复制成功