在 Linux 系统中,防火墙是保护网络安全的重要工具之一。通过配置防火墙规则,可以限制网络流量并保护系统免受潜在的网络攻击。本篇文章将介绍Linux系统自带防火墙的设置命令,包括查看、开启、关闭、给指定的IP开放/关闭指定的端口以及其他常用命令。
一、查看/开启/关闭防火墙
1、查看服务器的防火墙状态命令
// 查看防火墙状态 systemctl status firewalld
2、开启和关闭防火墙命令
// 开启防火墙 systemctl start firewalld // 关闭防火墙 systemctl stop firewalld // 开机启动 systemctl enable firewalld // 开机关闭 systemctl disable firewalld
当我们开启了linux的防火墙后,对该服务器的网络访问将受到控制。
二、查看/开放/关闭端口
1、查看开放端口命令
// 查询打开的端口 firewall-cmd --zone=public --list-ports
2、开放指定端口命令
firewall-cmd --zone=public --add-port=8888/tcp --permanent (–permanent永久生效,没有此参数重启后失效) //重新载入一下防火墙设置,使设置生效 firewall-cmd --reload
3、关闭指定端口命令
//关闭端口8888 firewall-cmd --zone=public --remove-port=8888/tcp --permanent //重新载入一下防火墙设置,使设置生效 firewall-cmd --reload
三、给指定的IP开放/关闭指定的端口
1、给指定端口开放指定的IP
// 允许ip127.0.0.1访问8888端口 firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="127.0.0.1" port protocol="tcp" port="8888" accept"
这里需要注意一点,如果之前8888端口已经设置允许全部IP访问,在上面我们指定访问IP白名单以后需要关闭允许全部IP访问,不然起不到只允许特定IP访问的效果。
2、关闭指定端口对所有IP访问的设置
//关闭端口8888对所有IP开发的访问 firewall-cmd --zone=public --remove-port=8888/tcp --permanent //重新载入一下防火墙设置,使设置生效 firewall-cmd --reload //查看已设置规则 firewall-cmd --zone=public --list-rich-rules
3、删除规则操作
限制IP为127.0.0.1的地址禁止访问8888端口即禁止访问机器:
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="127.0.0.1" port protocol="tcp" port="8888" reject"
删除已设置规则:
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address=" 127.0.0.1" port protocol="tcp" port="8888" accept"
四、防火墙设置只允许特定IP远程连接sshd服务
我们知道centos7版本可以在/etc/hosts.allow 和/etc/hosts.deny文件设置允许或者拒绝sshd连接的IP地址,实现除了指定IP允许访问以外拒绝其它IP连接,实现基础安全。但是在centos8版本以后系统取消了这个功能项。如何通过防火墙规则实现这一安全需求呢?
下面的命令将配置192.168.1.0/24整个网段的IP允许访问服务器的22端口:
// 先移除默认开启的没有访问限制的ssh服务 # firewall-cmd --permanent --remove-service=ssh // 添加复杂规则,只允许指定IP段访问22端口 # firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept' // 使上面配置生效 # firewall-cmd --reload // 查看当前配置信息 # firewall-cmd --list-all
五、规则的持久化位置
以上配置都会持久化的存储在一个文件里面,使用如下命令查看:
vi /etc/firewalld/zones/public.xml
六、其他常用命令
1、开放指定服务(系统内置的)
firewall-cmd --permanent --add-service=http
2、删除服务
firewall-cmd --permanent --remove-service=http
3、添加白名单地址(单IP)
firewall-cmd --permanent --add-source=192.168.1.100
4、添加白名单地址(指定网络段CIDR格式)
firewall-cmd --permanent --add-source=192.168.1.0/24
5、删除白名单地址
firewall-cmd --permanent --remove-source=192.168.1.100
6、屏蔽指定IP地址
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' reject"
7、屏蔽IP地址段
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.0/24' reject"
8、手动编辑xml配置文件
除了上面的命令添加规则外,还可以直接编辑/etc/firewalld/zones/public.xml文件(改完后记得执行firewall-cmd –reload生效)
9、查看防火墙清单
firewall-cmd --list-all
10、通过如下命令查看8888是否生效
firewall-cmd --zone=public --query-port=8888/tcp
11、批量开放或限制端口
批量开放端口,如从7000到7005这之间的端口我们全部要打开:
firewall-cmd --zone=public --add-port=7000-7005/tcp --permanent firewall-cmd --reload
批量限制端口为:
firewall-cmd --zone=public --remove-port=7000-7005/tcp --permanent firewall-cmd --reload
七、其它firewalld相关命令
#进程与状态相关 systemctl start firewalld.service #启动防火墙 systemctl stop firewalld.service #停止防火墙 systemctl status firewalld #查看防火墙状态 systemctl enable firewalld #设置防火墙随系统启动 systemctl disable firewalld #禁止防火墙随系统启动 firewall-cmd --state #查看防火墙状态 firewall-cmd --reload #更新防火墙规则 firewall-cmd --list-ports #查看所有打开的端口 firewall-cmd --list-services #查看所有允许的服务 firewall-cmd --get-services #获取所有支持的服务 #区域相关 firewall-cmd --list-all-zones #查看所有区域信息 firewall-cmd --get-active-zones #查看活动区域信息 firewall-cmd --set-default-zone=public #设置public为默认区域 firewall-cmd --get-default-zone #查看默认区域信息 #接口相关 firewall-cmd --zone=public --add-interface=eth0 #将接口eth0加入区域public firewall-cmd --zone=public --remove-interface=eth0 #从区域public中删除接口eth0 firewall-cmd --zone=default --change-interface=eth0 #修改接口eth0所属区域为default firewall-cmd --get-zone-of-interface=eth0 #查看接口eth0所属区域 #端口控制 firewall-cmd --query-port=8080/tcp # 查询端口是否开放 firewall-cmd --add-port=8080/tcp --permanent #永久添加8080端口例外(全局) firewall-cmd --remove-port=8800/tcp --permanent #永久删除8080端口例外(全局) firewall-cmd --add-port=65001-65010/tcp --permanent #永久增加65001-65010例外(全局) firewall-cmd --zone=public --add-port=8080/tcp --permanent #永久添加8080端口例外(区域public) firewall-cmd --zone=public --remove-port=8080/tcp --permanent #永久删除8080端口例外(区域public) firewall-cmd --zone=public --add-port=65001-65010/tcp --permanent #永久增加65001-65010例外(区域public)
总的来说,Linux系统的防火墙是一个非常重要的安全工具,它能帮助保护你的服务器不受不必要的网络攻击。以上常见命令希望能够帮到大家。