33.iptables备份与恢复 firewalld的9个zone以及操作 service的操作

本文详细介绍iptables规则的备份与恢复方法,以及firewalld的9个zone操作指南,包括如何设定默认zone、查看和更改网卡所属zone,还有如何通过配置文件管理自定义端口的service。

10.19 iptables规则备份和恢复

10.20 firewalld的9个zone

10.21 firewalld关于zone的操作

10.22 firewalld关于service的操作

 

 

 

10.19 iptables规则备份和恢复:

~1. 保存和备份iptables规则

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

 

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

~4. iptables-save > my.ipt

iptables-save重定向到这个文件中。名字可以随便起,也可以是.txt文件

~5. 恢复刚才备份的规则

备份的规则,可能只有在恢复的时候能用到它。但是我们一重启服务器就想要加载规则,那么最好把规则备份到默认的 /etc/sysconfig/iptables里

~6. iptables-restore < my.ipt

跟上面~4. 备份的重定向正好相反

 

 

----------------------------------------------------------------------------------------------------------------------------------------------------

 

 

10.20 firewalld的9个zone:

 

filewalld是centos7以及以后得版本要用到的防火墙机制。是一个新的趋势

 

~1. 打开firewalld

因为我们之前做实验,禁掉了firewalld,所有我们在把他打开。执行~2 3 4 5 就可以了

~2. systemctl disable iptables

~3. systemctl stop iptables

连续执行~2 3 禁掉iptables

~4. systemctl enable firewalld

~5. systemctl start firewalld

连续执行~4 5 打开firewalld

我们在打开firewalld后,再iptables -nvL,会发现跟netfilter的规则不太一样,会比netfilter多很多,因为他包含了nat里的一些规则

 

~6. firewalld 默认有9个zone

firewalld的用法,zone是firewalld的单位。默认的zone是public,也就是~7. 。每个zone好比是一个规则集(规则集就是,比如我们放开了22端口、80端口,关闭了一些端口。这些规则就是一个规则集)

~7. 默认zone为public

~8. firewall-cmd --get-zones 查看所有zone (注意是firewall,敲命令是没有d)

[root@afeilinux-01 ~]# firewall-cmd --get-zones

block dmz drop external home internal public trusted work

这就是他的9个zone

~9. firewall-cmd --get-default-zone 查看默认zone (注意是firewall,敲命令是没有d)

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

public

默认的就是public,也就是~7.

 

 

下图为firewalld的9个zone的解释

 

 

 

----------------------------------------------------------------------------------------------------------------------------------------------------

 

 

10.21 firewalld关于zone的操作:

 

 

firewall 的几个命令:

~1. firewall-cmd --set-default-zone=work 设定默认zone

等于号后面跟想更改的默认zone

~2. firewall-cmd --get-zone-of-interface=ens33 查指定网卡,属于那个zone

阿鑫在查看ens37的时候发现没有zone,做了一些操作,详见实例2.

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

~4. firewall-cmd --zone=dmz --change-interface=lo 针对网卡更改zone

~5. firewall-cmd --zone=dmz --remove-interface=lo 针对网卡删除zone

比如,把lo这个网卡设置成了dmz,但是要想把dmz里的lo给他删掉

需要注意的是,把原有的zone里的网卡删掉,他就变成默认的zone了

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

 

 

 

实例:

1.

[root@afeilinux-01 ~]# firewall-cmd --set-default-zone=work

success

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

work

 

2.

[root@afeilinux-01 ~]# cd /etc/sysconfig/network-scripts/

[root@afeilinux-01 network-scripts]# cp ifcfg-ens33 ifcfg-ens37 复制一份ens33为ens37

[root@afeilinux-01 network-scripts]# vi !$ 修改一下IP,又删除了网关和dns1

vi ifcfg-ens37

[root@afeilinux-01 network-scripts]# systemctl restart network.service 重启一下网络服务

[root@afeilinux-01 network-scripts]# systemctl restart firewalld 重启防火墙

[root@afeilinux-01 network-scripts]# firewall-cmd --get-zone-of-interface=ens37 发现还是没有,尴尬了

no zone

[root@afeilinux-01 network-scripts]# firewall-cmd --zone=public --add-interface=ens37 有执行了3.,才有的

success

[root@afeilinux-01 network-scripts]# firewall-cmd --get-zone-of-interface=ens37

public

 

5.

[root@afeilinux-01 network-scripts]# firewall-cmd --get-zone-of-interface=lo

no zone

[root@afeilinux-01 network-scripts]# firewall-cmd --zone=dmz --add-interface=lo

success

[root@afeilinux-01 network-scripts]# firewall-cmd --get-zone-of-interface=lo

dmz

[root@afeilinux-01 network-scripts]# firewall-cmd --zone=dmz --remove-interface=lo

success

[root@afeilinux-01 network-scripts]# firewall-cmd --get-zone-of-interface=lo

no zone

 

6.

[root@afeilinux-01 network-scripts]# firewall-cmd --get-active-zones

work

interfaces: ens33

 

 

 

----------------------------------------------------------------------------------------------------------------------------------------------------

 

 

10.22 firewalld关于service的操作:

 

 

 

service是zone下面的一个子单位,可理解为他是一个指定一个端口。因为防火墙无外乎就是对某一个端口做限制

比如,http他操作的是80端口。https操作的是43端口。ssh操作的是22端口

 

 

service的操作:

~1. firewall-cmd --get-service 查看所有的service

~2. firewall-cmd --list-service 查看当前zone下有哪些service

指定zone查看有哪些service。 firewall-cmd --zone=public --list-service

 

~3. firewall-cmd --zone=public --add-service=http 把http增加到public zone下面

这样仅仅只是在内存中增加了,要改成永久的需要更改配置文件 ~6.

~4. firewall-cmd --zone=public --remove-service=http

把http在public中去除,与 3 相对应的

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

有9个,9个zone9个模板

更改后的配置文件也会在这里存放。每次只有--permanent才会加入。

而我们 /etc/firewalld/zones/下,是我们系统etc下的firewalld服务所用到的配置文件,每次改完并永久保存,他都会把旧的做一个备份并加上后缀.old

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

 

~7. 需求:(使用配置文件的方式进行操作)

(案例)

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

8. cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services (做实验所以cp一份)

把ftp的文件先cp到etc下面去

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

然后编辑他,把21端口改为1121端口

10. cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/ (做实验所以cp一份)

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

复制上面的一行格式,在双引号里面的改成ftp。也就是12的操作

12. <service name="ftp"/>

13. firewall-cmd --reload 重新加载

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

指定一个zone,查看他的service

检查以上操作,是否成功

 

 

 

 

 

 

实例:

7.

[root@afeilinux-01 ~]# cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services

[root@afeilinux-01 ~]# vi /etc/firewalld/services/ftp.xml

 

<?xml version="1.0" encoding="utf-8"?>

<service>

<short>FTP</short>

<description>FTP is a protocol used for remote file transfer. If you plan to make your FTP server publicly available, enable this option. You need the vsftpd package installed for this option to be useful.</description>

<port protocol="tcp" port="1121"/> 就改这

<module name="nf_conntrack_ftp"/>

</service>

[root@afeilinux-01 ~]# cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/

[root@afeilinux-01 ~]# vi /etc/firewalld/zones/work.xml

 

<?xml version="1.0" encoding="utf-8"?>

<zone>

<short>Work</short>

<description>For use in work areas. You mostly trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>

<service name="ssh"/>

<service name="dhcpv6-client"/>

<service name="ftp"/> 复制上面的一行(格式),把双引号里面的改成 ftp

</zone>

[root@afeilinux-01 ~]# firewall-cmd --reload

success

然后,我们在检查一下

[root@afeilinux-01 ~]# firewall-cmd --zone=work --list-service

ssh dhcpv6-client ftp work zone下有ftp

转载于:https://my.oschina.net/u/3866192/blog/3101359

<think>嗯,用户之前遇到了iptables服务找不到的问题,现在想将之前的iptables命令转成firewalld的命令。我需要先回顾之前的回答,确保转换准确。 首先,用户可能使用的是CentOS或Fedora,因为这些系统默认用firewalld。用户可能对iptables比较熟悉,但现在需要适应新的工具。需要明确每条iptables规则的目的,比如开放端口、设置默认策略等。 接下来,我得逐条转换。例如,iptables的-A INPUT -p tcp --dport 22 -j ACCEPT对应firewalld的添加服务。要区分临时和永久规则,提醒用户--permanent和--reload的重要性。 还要注意,firewalld使用zone的概念,用户可能需要指定zone,否则默认是public。如果有复杂的规则,比如限制IP范围,可能需要用富规则。此外,默认策略的转换可能需要调整zone的设置,比如设置默认拒绝。 用户可能不太熟悉zoneservice的概念,所以需要给出示例,并建议他们查看现有配置。同时,提醒备份规则,避免服务中断。另外,如果用户需要更复杂的规则,可能需要指导他们使用直接接口或者富规则。 最后,确保转换后的命令正确,并且用户知道验证步骤,比如检查firewall-cmd --list-all。可能还需要解释firewalldiptables之间的关系,避免混淆。</think>以下是常见 iptables 命令 firewalld 的对应转换表,包含详细说明和操作示例: --- ### 一、基础规则转换对照表 | iptables 命令 | firewalld 等效操作 | 说明 | |---------------------------------------------|---------------------------------------------------|--------------------------------------------------------------------| | `iptables -A INPUT -p tcp --dport 80 -j ACCEPT` | `sudo firewall-cmd --add-service=http`<br>`sudo firewall-cmd --runtime-to-permanent` | 开放 HTTP 服务(自动包含端口 80) | | `iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT` | `sudo firewall-cmd --add-rich-rule=&#39;rule family="ipv4" source address="192.168.1.0/24" accept&#39;` | 允许特定 IP 段访问 | | `iptables -P INPUT DROP` | `sudo firewall-cmd --set-default-zone=drop` | 设置默认策略为拒绝(需先确认 zone 使用情况) | --- ### 二、详细操作指南 #### 1. 开放端口(等效 `-A INPUT -p tcp --dport 端口号 -j ACCEPT`) ```bash # 临时开放 8080/TCP 端口(立即生效但重启失效) sudo firewall-cmd --add-port=8080/tcp # 永久开放 3306/TCP 端口(需重载生效) sudo firewall-cmd --permanent --add-port=3306/tcp sudo firewall-cmd --reload ``` #### 2. 允许特定服务(等效服务名规则) ```bash # 允许 SSH 服务(自动包含 22/TCP) sudo firewall-cmd --add-service=ssh --permanent sudo firewall-cmd --reload # 查看所有预定义服务 firewall-cmd --get-services ``` #### 3. IP 白名单设置(等效 `-s 源地址`) ```bash # 允许 10.0.0.5 访问所有端口 sudo firewall-cmd --add-rich-rule=&#39;rule family="ipv4" source address="10.0.0.5" accept&#39; --permanent # 仅允许 172.16.0.0/16 访问 443 端口 sudo firewall-cmd --add-rich-rule=&#39;rule family="ipv4" source ipset="172.16.0.0/16" port port="443" protocol="tcp" accept&#39; --permanent ``` #### 4. 端口转发(等效 NAT 规则) ```bash # 将 80 端口流量转发到 8080(需要开启 IP 伪装) sudo firewall-cmd --add-masquerade --permanent sudo firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 --permanent ``` --- ### 三、高级功能转换 #### 1. 日志记录规则(等效 `-j LOG`) ```bash # 记录被拒绝的 SSH 连接尝试 sudo firewall-cmd --add-rich-rule=&#39;rule service name="ssh" reject type="icmp-port-unreachable" audit limit value="1/m" accept&#39; --permanent ``` #### 2. 删除规则 ```bash # 删除已允许的 HTTP 服务 sudo firewall-cmd --remove-service=http --permanent # 删除特定端口规则 sudo firewall-cmd --remove-port=8080/tcp --permanent ``` --- ### 四、关键验证命令 ```bash # 查看所有生效规则(含运行时和永久配置) firewall-cmd --list
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值