Centos7 Firewalld 防火墙

Centos7 Firewalld 防火墙


概述
  • Centos7以上的发行版都试自带了firewalld防火墙的,firewalld去掉了iptables防火墙。
  • iptables的防火墙策略是交由内核层面的netfilter网络过滤器来处理的,而firewalld则是交由内核层面的nftables包过滤框架来处理。
  • 相较于iptables防火墙而言,firewalld支持动态更新技术并加入了区域(zone)的概念。
  • 简单来说,区域就是firewalld预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。
常用的命令
  • systemctl 命令
    sudo systemctl start firewalld        # 启动
    sudo systemctl stop firewalld         # 停止
    sudo systemctl restart firewalld      # 重启
    sudo systemctl status firewalld       # 查看服务状态
    sudo systemctl enable firewalld       # 启用
    sudo systemctl disable firewalld      # 禁用
    
  • firewall-cmd命令
    sudo firewall-cmd --reload            # 重载
    sudo firewall-cmd --complete-reload   # 中断所有连接的重新加载
    sudo firewall-cmd --state             # 查看运行状态
    sudo firewall-cmd --check-config      # 检查配置正确性
    sudo firewall-cmd --list-all          # 查看防火墙规则信息
    sudo firewall-cmd --list-services     # 查看服务状态
    sudo firewall-cmd --list-ports        # 查看开放的端口
    sudo firewall-cmd --list-protocols    # 查看允许的协议
    sudo firewall-cmd --list-rich-rules   # 查看当前的丰富规则
    # 查看所有打开的端口
    sudo firewall-cmd --zone=public --list-ports
    # 查看 80端口是否开放
    sudo firewall-cmd --zone=public --query-port=80/tcp
    
firewall-cmd 说明
  • 服务(service)
    # 查看服务
    sudo firewall-cmd [--zone=<zone>] --list-service
    # 添加服务
    sudo firewall-cmd [--zone=<zone>] --add-service=<service name>
    # 移除服务   
    sudo firewall-cmd [--zone=<zone>] --remove-service=<service name>
    
  • 端口(port)
    # 添加端口/协议(TCP/UDP)
    sudo firewall-cmd [--zone=<zone>] --add-port=<port>/<protocol> [--timeout=<seconds>]
    # 移除端口/协议(TCP/UDP)
    sudo firewall-cmd [--zone=<zone>] --remove-port=<port>/<protocol> [--timeout=<seconds>]
    
  • 协议(protocol)
    # 允许协议 (例:icmp,即允许ping)
    sudo firewall-cmd --add-protocol=<protocol>       
    # 取消协议
    sudo firewall-cmd --remove-protocol=<protocol>    
    
  • 目标(target)
    # 获取目标
    sudo firewall-cmd --permanent --zone=<zone> --get-target
    # 设置目标
    sudo firewall-cmd --permanent --zone=<zone> --set-target=<target>
    
    • 当一个区域处理它的源或接口上的一个包,但是没有处理该包的显式规则,这时区域的目标target决定了该行为。
    • default:(默认)不做任何事情。
    • ACCEPT:通过这个包。
    • REJECT:拒绝这个包,并返回一个拒绝的回复。
    • DROP:丢弃这个包,不回复任何信息。
  • 富规则(rich-rule)
    # 所有流量
    sudo firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" [accept|reject|drop]"
    # 指定协议
    sudo firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" protocol value="<protocol>" [accept|reject|drop]"
    # 指定服务
    sudo firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" service name="<service name>" [accept|reject|drop]"
    # 指定端口
    sudo firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" port protocol="<port protocol>" port="<port>" [accept|reject|drop]"
    
  • 永久保存(重要
    # 表示永久,保存路径'/etc/firewalld/zones/public.xml'
    --permanent       
    
实例
# 把http服务临时添加到public的zone下
sudo firewall-cmd --zone=public --add-service=http
# 查看zone下public的服务
sudo firewall-cmd --zone=public --list-service
# 把ssh服务临时添加到public区域下,有效期为5s
sudo firewall-cmd --zone=public --add-service=ssh --timeout=5s

# 添加永久的开放的端口
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
# 添加临时开放的端口
sudo firewall-cmd --zone=public --add-port=80/tcp
# 删除永久的开放的端口
sudo firewall-cmd --zone=public --remove-port=80/tcp --permanent

# 允许来自192.168.2.1的所有流量
sudo firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.1" accept"
# 允许192.168.2.208主机的icmp协议,即允许192.168.2.208主机ping
sudo firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.208" protocol value="icmp" accept"
# 允许192.168.2.208主机访问ssh服务
sudo firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.208" service name="ssh" accept"
# 允许192.168.2.1主机访问22端口
sudo firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.1" port protocol="tcp" port="22" accept"
# 允许192.168.2.0/24网段的主机访问22端口
sudo firewall-cmd --zone=drop --add-rich-rule="rule family="ipv4" source address="192.168.2.0/24" port protocol="tcp" port="22" accept"
# 禁止192.168.2.0/24网段的主机访问22端口。将accept设置为reject表示拒绝,设置为drop表示直接丢弃(会返回timeout连接超时)
sudo firewall-cmd --zone=drop --add-rich-rule="rule family="ipv4" source address="192.168.2.0/24" port protocol="tcp" port="22" reject"

# 允许来自主机 192.168.2.1 到 80 端口的 IPv4 的 TCP 流量,并将流量转发到 6532 端口上
sudo firewall-cmd --zone=public --add-rich-rule 'rule family=ipv4 source address=192.168.2.1 forward-port port=80 protocol=tcp to-port=6532'
# 将主机 192.168.3.50 上 80 端口的 IPv4 流量转发到 8080 端口
sudo firewall-cmd --zone=public --add-rich-rule 'rule family=ipv4 forward-port port=80 protocol=tcp to-port=8080 to-addr=192.168.3.50'

# 删除临时设定的规则
sudo firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.1" accept"
# 删除'网段服务'永久设置的规则
firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="192.168.0.4/24" service name="http" accept"

# 在同一台服务器上,将 public 区域 80 端口的流量转发到 9001 端口
sudo firewall-cmd --zone="public" --add-forward-port=port=80:proto=tcp:toport=9001
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值