firewalld 详细介绍配置(二)

本文涉及的产品
云防火墙,500元 1000GB
简介: 【8月更文挑战第10天】配置`firewalld`涉及安装、启动与管理防火墙规则。首先通过`yum install firewalld`安装,然后使用`systemctl`命令进行启动、停止及禁用服务。`firewall-cmd`命令用于管理防火墙状态、查看版本与帮助信息、设置默认区域及接口所属区域。可通过添加或移除端口和服务来控制网络流量,并利用丰富规则进行更细粒度的控制。此外,`firewalld`支持动态规则更新,无需重启服务即可生效。可以通过配置文件持久化规则设置,适用于长期维护场景。

配置firewalld

安装firewalld:# yum install firewalld

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



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

更新防火墙规则:

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

使用下面的命令分别列出所有支持的 zone 和查看当前的默认 zone:

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

block dmz drop external home internal public trusted work

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

public

 

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

 

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

打开端口(貌似这个才最常用)
查看所有打开的端口:
# firewall-cmd --zone=dmz --list-ports
加入一个端口到区域:
# firewall-cmd --zone=dmz --add-port=8080/tcp
若要永久生效方法同上

打开一个服务,类似于将端口可视化,服务需要在配置文件中添加,/etc/firewalld 目录下有services文件夹

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

 

# 输出区域  全部启用的特性。如果省略区域,将显示默认区域的信息。
firewall-cmd [–zone=] –list-all

[root@xuegod63 ~]# firewall-cmd --list-all

public (default, active)

interfaces: eno16777736

sources:

services: dhcpv6-client ssh

ports:

masquerade: no

forward-ports:

icmp-blocks:

rich rules:

 

[root@xuegod63 ~]# firewall-cmd --zone=work --list-all

work

interfaces:

sources:

services: dhcpv6-client ipp-client ssh

ports:

masquerade: no

forward-ports:

icmp-blocks:

rich rules:

 

# 获取活动的区域

[root@xuegod63 ~]# firewall-cmd --get-active-zones

work

interfaces: ens33

 

# 根据接口获取区域
firewall-cmd -get-zone-of-interface=

[root@xuegod63 ~]# firewall-cmd --get-zone-of-interface=ens33

# 以下关于区域和接口的操作,就不一一举例了,可以根据实际情况修改.
# 将接口增加到区域

firewall-cmd [--zone=] --add-interface=

# 如果接口不属于区域,接口将被增加到区域。如果区域被省略了,将使用默认区域。接口在重新加载后将重新应用。

# 修改接口所属区域

firewall-cmd [--zone=] --change-interface=

# 这个选项与 –add-interface 选项相似,但是当接口已经存在于另一个区域的时候,该接口将被添加到新的区域。

# 从区域中删除一个接口

firewall-cmd [--zone=] --remove-interface=

# 查询区域中是否包含某接口

firewall-cmd [--zone=] --query-interface=

# 注意:返回接口是否存在于该区域。没有输出。

# 列举区域中启用的服务

firewall-cmd [ --zone= ] --list-services

# 这两条简单点说,就是断网和连网.

firewall-cmd --panic-on

# 启用应急模式阻断所有网络连接,以防出现紧急状况

firewall-cmd --panic-off

# 查询应急模式

firewall-cmd --query-panic

 

#####通过配置文件来使用Firewalld的方法#####

系统本身已经内置了一些常用服务的防火墙规则,存放在/usr/lib/firewalld/services/

注意!

请勿编辑/usr/lib/firewalld/services/ ,只有 /etc/firewalld/services 的文件可以被编辑。

[root@xuegod63 ~]# ls /usr/lib/firewalld/services/

amanda-client.xml dhcpv6.xml high-availability.xml ipp-client.xml kpasswd.xml libvirt.xml

mysql.xml pmcd.xml pop3s.xml RH-Satellite-6.xml smtp.xml tftp.xml

bacula-client.xml dhcp.xml https.xml ipp.xml ldaps.xml mdns.xml nfs.xml pmproxy.xml

postgresql.xml rpc-bind.xml ssh.xml transmission-client.xml

bacula.xml dns.xml http.xml ipsec.xml ldap.xml mountd.xml ntp.xml pmwebapis.xml

proxy-dhcp.xml samba-client.xml telnet.xml vnc-server.xml

dhcpv6-client.xml ftp.xml imaps.xml kerberos.xml libvirt-tls.xml ms-wbt.xml openvpn.xml

pmwebapi.xml radius.xml samba.xml tftp-client.xml wbem-https.xml

动态添加一条防火墙规则如下:

以下例子均以系统自带的public zone 为例子.


假设自定义的 ssh 端口号为 12222,使用下面的命令来添加新端口的防火墙规则:

 

如果需要使规则保存到 zone 配置文件,则需要加参数 –permanent
举例如下:

[root@xuegod63 ~]# firewall-cmd --add-port=12222/tcp

success

[root@xuegod63 ~]# vim  /etc/firewalld/zones/public.xml



Public

For use in public areas. You do not trust the other computers on networks to

not harm your computer. Only selected incoming connections are accepted.




发现没有写到配置文件里


[root@xuegod63 ~]# firewall-cmd --add-port=12222/tcp --permanent

success

[root@xuegod63 ~]# cat /etc/firewalld/zones/public.xml



Public

For use in public areas. You do not trust the other computers on networks to

not harm your computer. Only selected incoming connections are accepted.





已经写到配置文件里

 

# 注意:防火墙配置文件也可以手动修改,修改后记得重载

9.3.2  firewalld配置

如果想开放80端口供外网访问http服务,例子如下

1. 将 http.xml复制到/etc/firewalld/services/下面,以服务形式管理防火墙,

# 这个cp命令其实是可以省略的,系统会优先去读取 /etc/firewalld 里面的文件,读取完毕后,会去/usr/lib/firewalld/services/ 再次读取.为了方便修改和管理,建议复制到/etc/firewalld

[root@xuegod63 ~]# cp /usr/lib/firewalld/services/http.xml /etc/firewalld/services/

[root@xuegod63 ~]# ls /etc/firewalld/services/

http.xml

[root@xuegod63 ~]# ls /etc/firewalld/zones/

public.xml public.xml.old

 

(1) 修改public.xml,加入http服务

[root@xuegod63 ~]# cat /etc/firewalld/zones/public.xml



Public

For use in public areas. You do not trust the other computers on networks to

not harm your computer. Only selected incoming connections are accepted.



    #这行是后加的,要匹配 /etc/firewalld/services/目录下的文件名


 

(2) 重新载入 两条命令都可以的

以 root 身份输入以下命令,重新加载防火墙,并不中断用户连接,即不丢失状态信息:

[root@xuegod63 ~]# firewall-cmd --reload

success

 

2. 修改防火墙ssh的端口方法

(1) 复制ssh.xml文件到/etc/firewalld/services/

[root@xuegod63 ~]# cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/

 

(2) 修改ssh.xml文件 12222为ssh端口

[root@xuegod63 ~]# vim /etc/firewalld/services/ssh.xml



SSH

Secure Shell (SSH) is a protocol for logging into and executing commands on

remote machines. It provides secure encrypted communications. If you plan on accessing

your machine remotely via SSH over a firewalled interface, enable this option. You need the

openssh-server package installed for this option to be useful.



 

(3) 重新载入 两条命令都可以的

以 root 身份输入以下命令,重新加载防火墙,并不中断用户连接,即不丢失状态信息:

[root@xuegod63 ~]# firewall-cmd --reload

success

 

3. 指定ip访问ssh端口

修改/etc/firewalld/zones/

# rule字段内为要限制的ip和使用的服务

[root@xuegod63 ~]# vim /etc/firewalld/zones/public.xml



Public

For use in public areas. You do not trust the other computers on networks to

not harm your computer. Only selected incoming connections are accepted.








[root@xuegod63 ~]# firewall-cmd --reload

success

 

4. 添加自定义服务

举例添加8080端口为新的Service
(1) 添加新文件 8080.xml

vim /etc/firewalld/services/8080.xml

8080 Test

此处为文字说明

 

(2)编辑public.xml 文件,加入相应的Server

vim /etc/firewalld/zones/public.xml

Public

For use in public areas. You do not trust the other computers on networks to

not harm your computer. Only selected incoming connections are accepted.


# 这行是后加的,要匹配 /etc/firewalld/services/8080.xml 文件名

重新载入

[root@xuegod63 ~]# firewall-cmd --reload

success

  

SNAT

firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 你的公网ip

 

DNAT

firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A PREROUTING -d 173.16.16.1 -p tcp--dport 2346 -j DNAT --to-destination 192.168.10.2:22


 

目录
相关文章
|
网络协议 Linux
nmcli命令详解
【4月更文挑战第9天】`nmcli`是Red Hat 7及CentOS 7后的网络管理命令,用于配置网卡并持久化设置。它可以显示网络连接信息(如`connection show`、`dev status`),控制网卡状态(启用、停用、删除连接),以及修改配置(如IP地址、DNS)。其他功能包括检查NetworkManager状态、开关网络连接和查看系统网络状态。要了解全部详情和高级用法,建议查阅相关文档。
1278 1
|
开发框架 网络协议 Ubuntu
【Linux】配置网络和firewall防火墙(超详细介绍+实战)
【Linux】配置网络和firewall防火墙(超详细介绍+实战)
4658 0
|
监控 网络协议 安全
网络攻击的常见手段
网络攻击的常见手段
492 0
|
网络协议 Unix Linux
服务器实现端口转发的N种方式
服务器实现端口转发的N种方式
1840 0
|
缓存 Linux 开发工具
CentOS 7- 配置阿里镜像源
阿里镜像官方地址http://mirrors.aliyun.com/ 1、点击官方提供的相应系统的帮助 :2、查看不同版本的系统操作: 下载源1、安装wget yum install -y wget2、下载CentOS 7的repo文件wget -O /etc/yum.
255466 0
|
安全 网络协议 关系型数据库
firewalld 详细介绍配置(一)
【8月更文挑战第10天】FirewallD是一款动态防火墙管理工具,通过网络区域(zone)定义接口的安全级别。与iptables需重载全部规则相比,FirewallD仅更新变动部分,更高效。它利用iptables作为规则管理入口,自身不具防火墙功能,依赖内核的netfilter实现。区域(zone)代表一组过滤规则,不同区域默认行为各异,如public、work等。服务配置则以人性化名称管理端口,简化规则管理。常用命令包括安装、启动、停止及查询状态等。
183 4
|
Docker 容器
Docker必备国内镜像
Docker必备国内镜像
13640 0
|
网络协议 安全 Linux
|
12月前
|
缓存 安全 应用服务中间件
nginx配置proxy_set_header
nginx配置proxy_set_header
|
Kubernetes 负载均衡 调度
在K8S中,如何实现集群管理?
在K8S中,如何实现集群管理?