Skip to content


CentOS Firewalld防火墙配置详解

  firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,也就是说firewalld和iptables一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结构以及使用方法不一样罢了。

  firewalld的配置模式

firewalld的配置文件以xml格式为主(主配置文件firewalld.conf例外),他们有两个存储位置

1、/etc/firewalld/ 用户配置文件

2、/usr/lib/firewalld/ 系统配置文件,预置文件

我们知道每个zone就是一套规则集,但是有那么多zone,对于一个具体的请求来说应该使用哪个zone(哪套规则)来处理呢?这个问题至关重要,如果这点不弄明白其他的都是空中楼阁,即使规则设置的再好,不知道怎样用、在哪里用也不行。

对于一个接受到的请求具体使用哪个zone,firewalld是通过三种方法来判断的:

1、source,也就是源地址 优先级最高

2、interface,接收请求的网卡 优先级第二

3、firewalld.conf中配置的默认zone 优先级最低

这三个的优先级按顺序依次降低,也就是说如果按照source可以找到就不会再按interface去查找,如果前两个都找不到才会使用第三个,也就是学生在前面给大家讲过的在firewalld.conf中配置的默认zone。

  安装firewalld,运行、停止、禁用firewalld

root执行 # yum install firewalld

启动:# systemctl start firewalld
查看状态:# systemctl status firewalld 或者 firewall-cmd –state
停止:# systemctl disable firewalld
禁用:# systemctl stop firewalld

  配置firewalld

查看版本:$ firewall-cmd –version
查看帮助:$ firewall-cmd –help
查看设置:
显示状态:$ firewall-cmd –state
查看区域信息: $ firewall-cmd –get-active-zones
查看指定接口所属区域:$ firewall-cmd –get-zone-of-interface=eth0
拒绝所有包:# firewall-cmd –panic-on
取消拒绝状态:# firewall-cmd –panic-off
查看是否拒绝:$ firewall-cmd –query-panic

更新防火墙规则:# firewall-cmd –reload
# firewall-cmd –complete-reload
两者的区别就是第一个无需断开连接,就是firewalld特性之一动态添加规则,第二个需要断开连接,类似重启服务

将接口添加到区域,默认接口都在public
# firewall-cmd –zone=public –add-interface=eth0
永久生效再加上 –permanent 然后reload防火墙

设置默认接口区域
# firewall-cmd –set-default-zone=public
立即生效无需重启

打开端口
查看public区域打开的端口:
# firewall-cmd –zone=public –list-ports
加入一个端口到区域:
# firewall-cmd –zone=public –add-port=8080/tcp
若要永久生效方法同上

查看当前系统已定义的服务,系统已经预置了很多常用的服务,配置文件在/usr/lib/firewalld/services文件夹下。
firewall-cmd –get-services

打开一个服务,以smtp为例。这样添加完邮件服务后就不用再使用add-port添加端口了,非常方便。
# firewall-cmd –zone=work –add-service=smtp

移除服务
# firewall-cmd –zone=work –remove-service=smtp

添加一个自定义服务,如果有个程序test运行过程中需要开放10000端口,我们除了–add-port=8080/tcp外,也可以自定义一个test服务
随便复制一个配置文件:cp http.xml  test.xml
然后根据格式修改下名称、端口以及说明信息,如下:
<?xml version=”1.0″ encoding=”utf-8″?>
<service>
<short>test</short>
<description>This is a test service.</description>
<port protocol=”tcp” port=”10000″/>
</service>

来源:https://www.cnblogs.com/fatt/p/6656262.html

 

Posted in 技术文章.

Tagged with , .


0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.



Some HTML is OK

or, reply to this post via trackback.