在CentOS7上添加防火墙端口允许访问
在CentOS 7中引入了新的防火墙管理工具firewalld,安装方法如下:
sudo yum install firewalld激活firewalld
sudo systemctl enable firewalld启动firewalld
sudo systemctl start firewalld操作
检查default zone
firewall-cmd --get-default-zone显示输出:
public检查激活的zone
firewall-cmd --get-active-zones注意:如果还没有配置接口的
zone,此时会没有任何zone显示激活,这里就没有输出。当执行了将某个interface分配给某个zone,就会有输出。例如,后面演示的命令sudo firewall-cmd --zone=public --change-interface=eth0之后,就会显示激活了public zone。
检查所有zone
sudo firewall-cmd --list-all显示输出:
此时可以看到,默认只有2个服务端口可以访问ssh dhcpv6-client
例如在dmz区域设置端口允许端口2888
如果是常用的web端口,可以使用
例如在public区域设置允许端口2888
注意 要使得配置生效需要重新加载配置
如果没有使用
firewalld还是使用iptables的话,命令如下
检查可用zones
列出所有zone
输出显示
检查指定zone可以使用参数--zone=:
输出显示:
选择接口使用的zone
除非你配置了网络接口,否则每个接口都会在firewall启动时放入default zone
选择接口的zone
例如,这里将eth0接口设置publiczone:
检查zone:
此时显示输出
设置应用规则
最基本的设置是允许服务访问,例如http服务。
检查可以添加的服务名称:
此时会提供已经内置的服务列表。详细的服务配置可以检查/usr/lib/firewalld/services目录下的.xml配置文件。
添加http服务允许
检查添加结果
可以看到输出:
为了能够持久化配置,需要再增加
--permanent参数:
检查结果:
添加特定端口方法:
检查
也可以添加端口范围:
定义服务
可以模仿系统默认的服务配置,自己定义服务。首先把系统定义的ssh服务配置文件ssh.xml复制到/etc/firewalld/services目录下:
然后修改这个example.xml配置:
然后重新加载规则
此时使用firewall-cmd --get-services就会看到自己定义的example服务
创建自己的区域zone
也可以自己定制zone,例如自己定义一个对外的web zone,命名为publicweb,定义一个对内到DNS zone,命名为privateDNS:
此时检查可用permanent zone
但是要生效还需要reload
然后给publicweb增加服务定义:
给privateDNS增加定义:
然后修改接口
持久化:
规则生效
检查zone
检查zone的服务
如果你想把这个publicweb设置为默认zone
加IP白名单
注意:服务允许先于IP添加的话,则服务先生效。即,如果先添加了http允许,然后再添加IP白名单,则即使IP不在白名单范围,但还是可以访问web服务。
参考
Last updated
Was this helpful?