飞跃高山与大洋的鱼飞跃高山与大洋的鱼
首页
先看
计算机
  • 数学
  • Linux
  • Arch
  • Manjaro
  • Ubuntu
  • CentOS
  • Kubernetes
  • Web
  • JavaScript
  • TypeScript
  • CSS
  • Canvas
  • Vue
  • Vite
  • NuxtJS
  • Webpack
  • Flutter
  • D3
  • Jest
  • WeApp
  • Utils
  • Nodejs
  • Nestjs
  • Golang
  • Nginx
  • Traefik
  • MySQL
  • MongoDB
  • Redis
  • Docker
算法
  • 像素风
  • Git
  • Github
  • VSCode
  • Chrome
  • Google
  • Bookmark scripts
  • 导航 🎉
  • VuePress 侧边栏插件
  • VuePress 官网
🚇 开往
首页
先看
计算机
  • 数学
  • Linux
  • Arch
  • Manjaro
  • Ubuntu
  • CentOS
  • Kubernetes
  • Web
  • JavaScript
  • TypeScript
  • CSS
  • Canvas
  • Vue
  • Vite
  • NuxtJS
  • Webpack
  • Flutter
  • D3
  • Jest
  • WeApp
  • Utils
  • Nodejs
  • Nestjs
  • Golang
  • Nginx
  • Traefik
  • MySQL
  • MongoDB
  • Redis
  • Docker
算法
  • 像素风
  • Git
  • Github
  • VSCode
  • Chrome
  • Google
  • Bookmark scripts
  • 导航 🎉
  • VuePress 侧边栏插件
  • VuePress 官网
🚇 开往
  • LINUX

    • 为什么不试试 Linux 呢
    • 一切皆文件
    • Shell 脚本
    • 别名 alias
    • 分发脚本 ansible
    • 归档和压缩
    • 命令选项
    • 命令行快捷键
    • Linux 常用命令
    • 解放双手计划
    • 检测服务器通达
    • Linux 系统目录结构
    • Dnsmasq
    • fail2ban
    • 防火墙 firewalld
      • 指令
        • 1. 状态选项
        • 2. 日志选项
      • 操作
        • 1. service
        • 2. port
        • 3. IP
        • 4. rich-rule
    • 花里胡哨且实用的命令
    • 文本三剑客
    • 如何启用硬盘
    • 输入、输出重定向
    • 作业控制
    • Prometheus
    • 磁盘阵列
    • 远程同步文件
    • SSH 让你的服务器更安全
    • 守护系统 systemd
    • 用户管理
    • 查看文本内容
    • 传参 xargs

防火墙 firewalld

firewalld 是 CentOS 7 新增的特性,其支持动态更新,且添加了防火墙 "zones" 的概念。

firewalld 与 iptables 自身并不具备防火墙的功能,都需要通过内核的 netfilter 来实现,它们的作用都是维护过滤的规则。

firewalld 的配置文件存放在 /usr/lib/firewalld/ 和 /etc/firewalld/ 里的 XML 文件中。

# 安装
yum install firewalld firewall-config

指令

可能需要先使用 systemctl 套件启用服务。

除了使用命令格式外,还可以使用 GUI,不过需要注意的是在登录时需要 ssh -Y user@ip 。

警告

firewall-cmd [Options ... ]

1. 状态选项

optioneffect
--statefirewalld 的状态。
--reload不中断服务的重新加载。
--complete-reload中断所有连接的重新加载。
--runtime-to-permanent将当前防火墙的规则永久保存。
--check-config检查配置正确性。

2. 日志选项

optioneffect
--get-log-denied获取记录被拒绝的日志。
--set-log-denied=value设置记录被拒绝的日志,只能为 'all','unicast','broadcast','multicast','off' 其中的一个。

操作

在开始操作前需要对 zone 有一定的了解。

zonezheffect
drop丢弃任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接。
block限制任何接收的网络连接都被 IPv4 的 icmp-host-prohibited 信息和 IPv6 的 icmp6-adm-prohibited 信息所拒绝。
public公共在公共区域内使用,不能相信网络内的其他计算机不会对您的计算机造成危害,只能接收经过选取的连接。
external外部特别是为路由器启用了伪装功能的外部网。您不能信任来自网络的其他计算,不能相信它们不会对您的计算机造成危害,只能接收经过选择的连接。
dmz非军事区用于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过选择的连接。
work工作用于工作区。您可以基本相信网络内的其他电脑不会危害您的电脑。仅仅接收经过选择的连接。
home家庭用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过选择的连接。
internal内部用于内部网络。您可以基本上信任网络内的其他计算机不会威胁您的计算机。仅仅接受经过选择的连接。
trusted信任可接受所有的网络连接。

firewalld 里的默认区域被设定为公共区域。

1. service

# 显示支持的 zone 列表:
firewall-cmd --get-zones
# 查看所有 zone 详情:
firewall-cmd --list-all-zones
# 查看某一 zone 详情:
firewall-cmd --zone=public --list-all
# 查看默认 zone:
firewall-cmd --get-default-zone
# 显示所有 services:
firewall-cmd --get-services
# 查看某一服务(返回 yes/no):
firewall-cmd --query-service=<service name>
firewall-cmd --query-service=http # no / 80
# 显示当前 service:
firewall-cmd --list-services
# 添加服务:
firewall-cmd --add-service=<service name>
# 删除服务:
firewall-cmd --remove-service=<service name>
# 允许SSH服务通过:
firewall-cmd --enable service=ssh
# 禁止SSH服务通过:
firewall-cmd --disable service=ssh
# 添加服务至 zone:
firewall-cmd --zone=public --add-service=<service name> --permanent

2. port

# 查看所有端口:
firewall-cmd --list-port
# 查看某个端口:
firewall-cmd --query-port=22/tcp
# 添加某个端口:
firewall-cmd --add-port=22/tcp --permanent  
# 删除某个端口:
firewall-cmd --remove-port=22/tcp

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

3. IP

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

# 封禁某个 IP:
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address="ip" drop'

4. rich-rule

多规则命令的格式或结构如下(及解释):

rule [family="<rule family>"]
    [ source address="<address>" [invert="True"] ]
    [ destination address="<address>" [invert="True"] ]
    [ <element> ]
    [ log [prefix="<prefix text>"] [level="<log level>"] [limit value="rate/duration"] ]
    [ audit ]
    [ accept|reject|drop ]
编辑文档!
上次更新:
贡献者: shanyuhai123
Prev
fail2ban
Next
花里胡哨且实用的命令