这篇文章原写于春节前,本打算作为第三周的分享,只是感觉不是很完善就一直放着,刚好这周在整理文章,便作些修改作为本周周分享。
基本操作
注:firewall-cmd 命令只能在防火墙启用时才能使用。
修改
防火墙要添加例外端口无外乎两种方法:修改端口和服务。
添加端口
添加端口例外是最简单和直接的方法,也方便后续查看所有已添加的端口,唯一不便的是需要在防火墙运行的前提下才能操作。
在上面的命令中zone
都是指定为 CentOS 7 默认的public
规则集,但是除了 public 之外还有另外 8 个 zone:
- drop:丢弃
- block:限制
- external:外部
- dmz:非军事区
- work:工作
- home:家庭
- internal:内部
- trusted:信任
如果不确定当前默认 zone,在已启用防火墙的情况下可以用命令firewall-cmd --get-default-zone
查看。
注:需在命令后增加参数--permanent
才会永久生效(需重启 firewall-cmd 服务)。
添加服务
添加服务的效果和添加端口是一样的,只不过是在对应服务中设置要开放的端口,优点在于方便管理某些服务需要用到多个端口的情况。
CentOS 7 防火墙中的ssh 服务
中是使用 22 端口,如果修改了默认端口号,需要同时修改/usr/lib/firewalld/services/ssh.xml
文件中的端口。
提升
前面的两种操作中无论是添加端口,还是添加服务都需要在防火墙启用的情况下进行,但在通过 SSH 连接服务器时,直接启用防火墙可能会导致连接断开,此时就需要另一种方法达到目的。
在文件中添加端口
前面新增的端口和服务其实都会在文件public.xml
中体现,所以我们只要在里面添加对应的端口即可。
用 vi 打开/etc/firewalld/zones/public.xml
文件:
在最后行</zone>
前增加一句<port protocol="tcp" port="2022"/>
保存后即可启用防火墙。不过如果想以添加服务的形式修改,还需修改或新增对应服务的文件。
修改对应服务端口
因为 CentOS 7 默认是已添加 ssh 服务为例外的,所以可以直接用 vi 打开对应的 xml 文件/usr/lib/firewalld/services/ssh.xml
进行修改:
主要关注<port protocol="tcp" port="22"/>
这一行,把 22 改为当前对应的 ssh 端口保存即可。