firewalld

firewalld 默认的9个区域

区域 默认规则策略
public 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量
trusted 允许所有的数据包流入与流出
block 拒绝流入的流量,除非与流出的流量相关
drop 拒绝流入的流量,除非与流出的流量相关
home 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-client服务相关,则允许流量
internal 等同于home区域
work 拒绝流入的流量,除非与流出的流量数相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量
external 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
dmz 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量

firewalld 匹配原则:

一个数据包分为3个部分

源ip地址 目的ip地址 数据

查看数据包源ip ,查询所有区域规则 ,在哪一个区域有源ip规则,就会进哪个区域,不符合 就进入 默认public

查看默认区域:

  1. firewall-cmd --get-default

firewall 命令参数

参数 作用
zone区域相关指令
—get-default-zone 查询默认的区域名称
—set-default-zone=<区域名称> 设置默认的区域,使其永久生效
—get-active-zones 显示当前正在使用的区域与网卡名称
—get-zones 显示总共可用的区域
—new-zone= 新增区域
—delete-zone= 删除区域
services服务相关指令
—get-services 显示预先定义的服务
—add-service=<服务名> 设置默认区域允许该服务的流量
—remove-service=<服务名> 设置默认区域不再允许该服务的流量
—list-services 显示默认区域允许的服务
Port端口相关指令
—add-port=<端口号/协议> 设置默认区域允许该端口的流量
—remove-port=<端口号/协议> 设置默认区域不再允许该端口的流量
—list-port 显示默认区域允许的端口
Interface网卡相关指令
—get-zone-of-interface=<网卡名称> 查看接口在哪个区域
—add-interface=<网卡名称> 将源自该网卡的所有流量都导向某个指定区域
—remove-interface=<网卡名称> 删除接口
—change-interface=<网卡名称> 将接口与区域进行关联
地址源相关命令
—add-source= 添加来源地址
—remove-source= 移除来源地址
其他相关指令
—list-all 显示当前区域的网卡配置参数、资源、端口以及服务等信息
—reload 让”永久生效”的配置规则立即生效,并覆盖当前的配置规则
—panic-on 阻断一切网络连接
—panic-off 恢复网络连接

firewalld 工作常用的命令

启动

  1. systemctl start firewalld

重启

  1. systemctl restart firewalld

关闭

  1. systemctl stop firewalld

查看版本

  1. firewal-cmd --version

查看帮助

  1. firewal-cmd --help

查看打开的端口

  1. firewall-cmd --list-ports

更新防火墙规则

  1. firewall-cmd --reload

添加端口

  1. firewall-cmd --add-port=80/tcp

删除端口

  1. firewall-cmd --remove-port=80/tcp

禁用外部链接

  1. firewall-cmd --zone=block --change-source=0.0.0.0/0

检查当前配置

  1. firewall-cmd --list-all-zones

批量添加端口

  1. firewall-cmd --add-port=80-89/tcp --permanent

删除端口

  1. firewall-cmd --zone=public --remove-port=80/tcp --permanent

查看打开的端口

  1. firewall-cmd --list-ports

拉黑异常ip

  1. firewall-cmd --add-rich-rule="rule family=ipv4 source address=192.168.1.7 reject" --permanent

删除拉黑ip

  1. firewall-cmd --remove-rich-rule="rule family=ipv4 source address=192.168.1.7 reject" --permanent

查看拉黑ip 名单

  1. firewall-cmd --list-rich-rules

端口转发

  1. firewall-cmd --permanent --zone=public --add-forward-port=port=3000:proto=tcp:toaddr=192.168.1.101:toport=85
  2. port=port=3000 对外端口
  3. 192.168.1.101 数据层内网ip
  4. toport=85 转发的端口

实战案例

firewall 查看默认zone

  1. firewall-cmd --get-default

修改默认zone

  1. firewall-cmd --set-default-zone=work

把apache服务 加到work zone

  1. firewall-cmd --add-service=http --zone=work

把apache服务 加到work zone 永久生效

  1. firewall-cmd --add-service=ftp --zone=work --permanent

删除防火墙添加的服务规则

  1. firewall-cmd --remove-service=ftp --zone=work --permanent

添加端口 放行端口:

  1. firewall-cmd --add-port=80/tcp

永久生效 添加端口

  1. firewall-cmd --add-port=80/tcp --permanent

查看放行端口列表

  1. firewall-cmd --zone=public --list-ports

删除端口:

  1. firewall-cmd --remove-port=80/tcp --permanent

重载配置

  1. firewall-cmd --reload

批量添加批量端口放行:

  1. firewall-cmd --add-port=80-89/tcp --permanent

拉黑异常ip

  1. firewall-cmd --add-rich-rule="rule family=ipv4 source address=192.168.1.7 reject" --permanent

删除拉黑ip:

  1. firewall-cmd --remove-rich-rule="rule family=ipv4 source address=192.168.1.7 reject" --permanent

查看拉黑ip 名单:

  1. firewall-cmd --list-rich-rules

使用shell 自动化完成 拉黑ip

  1. #!/bin/bash
  2. est=$(netstat -an|grep EST|awk '{print $5}'|awk -F ":" '{print $1}'|sort|uniq -c| sort -nr|awk '{if($1>80) print $2}')
  3. for i in $est
  4. do
  5. firewall-cmd --add-rich-rule="rule family=ipv4 source address=$i reject" --permanent
  6. echo "********************************拉黑异常ip:$i*********************"
  7. done

实现3000端口流量转发到85端口

  1. firewall-cmd --permanent --zone=public --add-forward-port=port=对外端口:proto=tcp:toaddr=数据层内网ip:toport=数据

iptables

查看已有的防火墙规则链

  1. iptables -L

清空已有的防火墙规则链

  1. iptables -F

把 INPUT 规则链的默认策略设置为拒绝

  1. iptables -P INPUT DROP

向 INPUT 链中添加允许 ICMP 流量进入的策略规则

  1. iptables -I INPUT -p icmp -j ACCEPT

删除 INPUT 规则链中刚刚加入的那条策略

  1. iptables -D INPUT 1

把默认策略设置为允许

  1. iptables -P INPUT ACCEPT

将 INPUT 规则链设置为只允许指定网段的主机访问本机的 22 端口,拒绝来自其他所有主机的流量

  1. iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j REJECT

向 INPUT 规则链中添加拒绝所有人访问本机 12345 端口的策略规则

  1. iptables -I INPUT -p tcp --dport 12345 -j REJECT
  2. iptables -I INPUT -p udp --dport 12345 -j REJECT

向 INPUT 规则链中添加拒绝 192.168.10.5 主机访问本机 80 端口(Web 服务)的策略规则

  1. iptables -I INPUT -p tcp -s 192.168.10.5 --dport 80 -j REJECT

向 INPUT 规则链中添加拒绝所有主机访问本机 1000~1024 端口的策略规则

  1. iptables -A INPUT -p tcp --dport 1000:1024 -j REJECT
  2. iptables -A INPUT -p udp --dport 1000:1024 -j REJECT

使得命令再服务器重启后还能生效

  1. service iptables save