当前位置: 首页 > news >正文

firewall-cmd 常用命令

工作区Zone说明

zone概念:

硬件防火墙默认一般有三个区,firewalld引入这一概念系统默认存在以下区域:
	drop:默认丢弃所有包
	block:拒绝所有外部连接,允许内部发起的连接
	public:指定外部连接可以进入
	external:这个不太明白,功能上和上面相同,允许指定的外部连接
	dmz:和硬件防火墙一样,受限制的公共连接可以进入
	work:工作区,概念和workgoup一样,也是指定的外部连接允许
	home:类似家庭组
	internal:信任所有连接

开启服务器的端口

firewall-cmd --add-port 8080/tcp

开启防火墙

systemctl start firewalld.service

重启防火墙

systemctl restart firewalld

防火墙开机启动

systemctl enable firewalld.service

关闭防火墙

systemctl stop firewalld.service

查看防火墙状态

firewall-cmd --state

查看防火墙开机时是否启动

systemctl list-unit-files | grep firewalld

查看区域信息

firewall-cmd--get-active-zones

查看指定接口所属区域

firewall-cmd--get-zone-of-interface=eth0

查看现有的规则

firewall-cmd --list-all
或
iptables -nL

重载防火墙配置

firewall-cmd --reload

添加单个单端口

firewall-cmd --permanent --zone=public --add-port=8080/tcp
参数说明:
  --permanent 永久生效
  --zone作用域
  --add-port 添加一个端口

查看现有端口

firewall-cmd --zone=public --query-port=80/tcp
或
firewall-cmd --zone=public --list-ports

添加多个端口

firewall-cmd --permanent --zone=public --add-port=8080-8083/tcp

删除某个端口

firewall-cmd --permanent --zone=public --remove-port=81/tcp

针对某个 IP开放端口

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.142.166" port protocol="tcp" port="6379" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.233" accept"

删除某个IP

firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.1.51" accept"

针对一个ip段访问

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.0/16" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="9200" accept"

富规则

firewall-cmd --list-rich-rules #列出富规则
firewall-cmd --add-rich-rule=<rule> #使用富规则语言添加富规则
firewall-cmd --remove-rich-rule=<rule> #移除富规则
firewall-cmd --query-rich-rule=<rule> #查询某条富规则是否存在
firewall-cmd --list-rich-rules #列出指定区域中的所有富规则
add-rich-rule 语法:
rule [source] [destination] service|port|protocol|icmp-block|masquerade|forward-port [log] [audit] [accept|reject|drop]

rule [family="ipv4|ipv6"]
source address="address[/mask]" [invert="True"]
destination address="address[/mask]" invert="True"
service name="service name"
port port="port value" protocol="tcp|udp"
protocol value="protocol value"
forward-port port="port value" protocol="tcp|udp" to-port="port value
" to-addr="address"
log [prefix="prefix text"] [level="log level"] [limit value="rate/duration"]
accept | reject [type="reject type"] | drop

后悔药 调试使用

firewall-cmd ... --timeout=30 # 30s后删除这条规则,防止把自己关在门外,可选单位5m 分钟,1h 小时

添加操作后别忘了执行重载

firewall-cmd --reload #重新载入规则,已建立的连接不会中断
firewall-cmd --complete-reload #重新载入规则,断开所有已建立的连接

其他设定

firewall-cmd --set-default-zone=work #设定默认区为work
firewall-cmd --get-default-zone #查询默认区域
firewall-cmd --set-default-zone=trusted #设置默认区域
firewall-cmd --get-active-zones #查看活动区域信息
firewall-cmd --list-all-zones #显示所有区域

firewall-cmd --zone=public --add-interface=eth0 #将接口加入public区域
firewall-cmd --zone=public --change-interface=eth0 #将接口移动到public区域
firewall-cmd --zone=public --remove-interface=eth0 #将接口移出public区域
firewall-cmd --get-zone-of-interface=eth0 #查询接口所属区域

firewall-cmd --panic-on #紧急情况拒绝所有的包
firewall-cmd --panic-off #恢复正常模式
firewall-cmd –query-panic #查询紧急状态

firewall-cmd --permanent --query-port=8080/tcp #查询端口是否开放
firewall-cmd --add-service=mysql # 开放mysql端口
firewall-cmd --remove-service=http # 阻止http端口
firewall-cmd --list-services  # 查看开放的服务
firewall-cmd --add-port=3306/tcp # 开放通过tcp访问3306
firewall-cmd --remove-port=80tcp # 阻止通过tcp访问3306
firewall-cmd --add-port=233/udp  # 开放通过udp访问233
firewall-cmd --list-ports  # 查看开放的端口

firewall-cmd --query-masquerade # 检查是否允许伪装IP
firewall-cmd --add-masquerade # 允许防火墙伪装IP
firewall-cmd --remove-masquerade# 禁止防火墙伪装IP

# 将80端口的流量转发至8080
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080
# 将80端口的流量转发至
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.0.1192.168.0.1
# 将80端口的流量转发至192.168.0.1的8080端口
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.0.1:toport=8080

#查看所有已注册的服务名称
firewall-cmd --get-service
# 查询服务的启用状态
firewall-cmd --query-service ftp

PS1:我觉得firewall并没有iptables的四表五链简单明了

参考文献

  1. 官方网站 firewalld
  2. firewalld详解 - 钟桂耀 - 博客园
  3. Firewalld - Document - Zone - Predefined Zones
  4. Documentation - Manual Pages - firewalld.richlanguage | firewalld

相关文章:

  • 俞敏洪在北京大学2008年开学典礼上的发言
  • iptables 之 REJECT 与 DROP 对比
  • Nginx捕获并自定义proxy_pass返回的错误
  • 后台传JSON,前台动态生成一个下拉框
  • PostgreSQL psql工具使用方法
  • 在后台把DataTable组织成JSON,送到前台动态填充UltraWebGrid
  • Win10以后的版本不支持文件拖动打开的解决办法
  • 阴阳历转换
  • EmEditor正则匹配中文
  • VC阴阳历转化与二十四节气
  • EmEditor 正则表达式语法
  • 星期、干支、二十八宿计算公式
  • Tmux使用教程
  • 悄悄地我走了 著名的非自然死亡
  • 【ROS-Navigation】Movebase主体源码解读
  • AngularJS指令开发(1)——参数详解
  • If…else
  • Javascript Math对象和Date对象常用方法详解
  • MYSQL 的 IF 函数
  • Spark RDD学习: aggregate函数
  • 从零开始在ubuntu上搭建node开发环境
  • 代理模式
  • 搞机器学习要哪些技能
  • 欢迎参加第二届中国游戏开发者大会
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 算法之不定期更新(一)(2018-04-12)
  • 通过git安装npm私有模块
  • 与 ConTeXt MkIV 官方文档的接驳
  • 关于Android全面屏虚拟导航栏的适配总结
  • 回归生活:清理微信公众号
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #define用法
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • %@ page import=%的用法
  • (1)SpringCloud 整合Python
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (二)c52学习之旅-简单了解单片机
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (转)Oracle存储过程编写经验和优化措施
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • ****Linux下Mysql的安装和配置
  • .bashrc在哪里,alias妙用
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET 常见的偏门问题
  • .net 调用海康SDK以及常见的坑解释
  • .NET 快速重构概要1
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .NET面试题(二)
  • .Net面试题4
  • .NET设计模式(11):组合模式(Composite Pattern)
  • .NET中winform传递参数至Url并获得返回值或文件
  • ::
  • @RestController注解的使用