当前位置: 代码迷 >> 综合 >> 日常运维(五):CentOS7 firewalld
  详细解决方案

日常运维(五):CentOS7 firewalld

热度:71   发布时间:2023-12-12 03:16:52.0

主要内容:

iptables规则备份和恢复

firewalld的9个zone

firewalld关于zone的操作

firewalld关于service的操作

1.iptables补充——规则备份和恢复

保存和备份iptables规则

service iptables save //会把规则保存到/etc/sysconfig/iptables

把iptables规则备份到my.ipt文件中

iptables-save > my.ipt

恢复刚才备份的规则

iptables-restore < my.ipt

2.firewalld的9个zone

安装firewalld:root执行 # yum install firewalld firewall-config

关闭之前打开的iptables

[root@gregory ~]# systemctl disable iptables

Removed symlink /etc/systemd/system/basic.target.wants/iptables.service.

[root@gregory ~]# systemctl stop iptables

打开firewalld

[root@gregory ~]# systemctl enable firewalld

Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.

Created symlink from /etc/systemd/system/basic.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.

[root@gregory ~]# systemctl start firewalld

#查看firewalld规则

[root@gregory ~]# iptables –nvL

#查看所有zone

[root@gregory ~]# firewall-cmd --get-zones

work drop internal external trusted home dmz public block

#查看默认zone

[root@gregory ~]# firewall-cmd --get-default-zone

public

firewalld的终端管理工具是 firewall-cmd

firewalld默认配置文件有两个:/usr/lib/firewalld/ (系统配置,尽量不要修改)和 /etc/firewalld/ (用户配置地址)

zone概念:

硬件防火墙默认一般有三个区,firewalld引入这一概念系统默认存在以下区域:

drop:(丢弃),任何接受的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接。

block:(限制)拒绝所有外部连接,允许内部发起的连接,任何接受的网络连接都被IPV4的icmp-host-prohibited信息和ipv6的icmp6-adm-prohibited信息所拒绝。

public:(公共)在公共区域内使用,不能相信网络内的其他计算机不会对你的计算造成危害,只能接受经过选取的连接。

external:(外部)特别是为路由器启用了伪装功能的外部网。你不能信任来自网络的其他计算,不嫩更相信他们不会对你的计算机造成危害,只能接受经过选择的连接。

dmz:(非军事区)用于你的非军事区内的电脑,此区域内可公开访问,可以有限地进入你的内部网络,仅仅接受经过选择的连接。

work:用于工作区。你可以基本相信网络内的其他电脑不会危害你的电脑。仅仅接受经过选择的连接。

home:用于家庭网络。你可以基本相信网络内的其他计算机不会危害你的计算机。仅仅接受经过选择的连接。

internal:用于内部网络,你可以基本信任网络内的其他计算机不会威胁你的计算机,仅仅接受经过选择的连接。

trusted:可接受所有的网络连接

3.firewalld关于zone的操作

这时复制ens33到ens37

systemctl restart network.service重启网络服务

systemctl restart firewalld重启防火墙

[root@gregory /etc/sysconfig/network-scripts]# firewall-cmd --get-zone-of-interface=ens37

work

重新设置zone

firewall-cmd --get-zone-of-interface=ens33 //查指定网卡

firewall-cmd --zone=public --add-interface=lo //给指定网卡设置zone

firewall-cmd --zone=dmz --change-interface=lo //针对网卡更改zone

firewall-cmd --zone=dmz --remove-interface=lo //针对网卡删除zone

firewall-cmd --get-active-zones //查看系统所有网卡所在的zone

4.firewalld关于service的操作

9种zone,每个zone里面都是用了不同的service,而service就是针对一个服务(端口)做的iptables规则。

例如http 默认80端,https 43端口,ssh 22端口,ftp 21端口,

firewall-cmd --get-services 查看所有的servies

这些service都是由一个个配置文件定义的,配置文件的模板在/usr/lib/firewalld/services/目录下,真正生效的配置在/etc/firewalld/services/目录下(默认为空):

firewall-cmd --list-services //查看当前zone下有哪些service

firewall-cmd –zone=public --list-services //查看指定zone下有哪些service

一个zone下面有某个service,意味着这个service是被信任的。比如,当前zone下面有ssh,那么ssh服务(也就是22)端口是放行的。可以给一个zone添加一个service。

firewall-cmd --zone=public --add-service=http //把http增加到public zone下面

firewall-cmd --zone=public --remove-service=http

ls /usr/lib/firewalld/zones/ //zone的配置文件模板

firewall-cmd --zone=public --add-service=http --permanent //更改配置文件,之后会在/etc/firewalld/zones目录下面生成配置文件

这里没有ftp是因为没有把ftp设置为permanent(永久的)。

 

需求:ftp服务自定义端口1121,需要在work zone下面放行ftp

具体做法:

cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services

vi /etc/firewalld/services/ftp.xml //把21改为1121

cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/

vi /etc/firewalld/zones/work.xml //增加一行

<service name="ftp"/>

firewall-cmd --reload //重新加载

firewall-cmd --zone=work --list-services