firewalld

firewalld服务

firewalld简介

◆ firewalld是CentOS 7.0新推出的管理netfilter的工具

◆ firewalld是配置和监控防火墙规则的系统守护进程。可以实现iptables,ip6tables,ebtables的功能

◆ firewalld服务由firewalld包提供

◆ firewalld支持划分区域zone,每个zone可以设置独立的防火墙规则

◆ 归入zone顺序:

  • 先根据数据包中源地址,将其纳为某个zone
  • 纳为网络接口所属zone
  • 纳入默认zone,默认为public zone,管理员可以改为其它zone

◆ 网卡默认属于public zone,lo网络接口属于trusted zone

firewalld zone分类

预定义服务

firewalld配置

◆ firewall-cmd --get-services 查看预定义服务列表
◆ /usr/lib/firewalld/services/*.xml预定义服务的配置
◆ 三种配置方法

  • firewall-config (firewall-config包)图形工具
  • firewall-cmd (firewalld包)命令行工具
  • /etc/firewalld 配置文件,一般不建议

firewall-cmd 命令选项

◆ --get-zones

  • 列出所有可用区域

◆ --get-default-zone

  • 查询默认区域

◆ --set-default-zone=<ZONE>

  • 设置默认区域

◆ --get-active-zones

  • 列出当前正使用的区域

◆ --add-source=<CIDR>[–zone=<ZONE>]

  • 添加源地址的流量到指定区域,如果无–zone= 选项,使用默认区域

◆ --remove-source=<CIDR> [–zone=<ZONE>]

  • 从指定区域中删除源地址的流量,如无–zone= 选项,使用默认区域

◆ --add-interface=<INTERFACE> [–zone=<ZONE>]

  • 添加来自于指定接口的流量到特定区域,如果无–zone= 选项,使用默认区域

◆ --remove-service=<SERVICE> [–zone=<ZONE>]

  • 从区域中删除指定服务,禁止该服务流量,如果无–zone= 选项,使用默认区域

◆ --remove-port=<PORT/PROTOCOL> [–zone=<ZONE>]

  • 从区域中删除指定端口和协议,禁止该端口的流量,如果无–zone= 选项,使用默认区域

◆ --reload

  • 删除当前运行时配置,应用加载永久配置

◆ --list-services

  • 查看开放的服务

◆ --list-ports

  • 查看开放的端口

◆ --list-all [–zone=<ZONE>]

  • 列出指定区域的所有配置信息,包括接口,源地址,端口,服务等,如果无–zone= 选项,使用默认区域

firewall-cmd 命令示例

◆ 查看默认zone

  • firewall-cmd --get-default-zone

◆ 默认zone设为dmz

  • firewall-cmd --set-default-zone=dmz

◆ 在internal zone中增加源地址192.168.0.0/24的永久规则

  • firewall-cmd --permanent --zone=internal --add-source=192.168.0.0/24

◆ 在internal zone中增加协议mysql的永久规则

  • firewall-cmd --permanent –zone=internal --add-service=mysql

◆ 加载新规则以生效

  • firewall-cmd --reload

实验:配置firewalld

◆ systemctl mask iptables

◆ systemctl mask ip6tables

◆ systemctl status firewalld

◆ systemctl enable firewalld

◆ systemctl start firewalld

◆ firewall-cmd --get-default-zone

◆ firewall-cmd --set-default-zone=public

◆ firewall-cmd --permanent --zone=public --list-all

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

◆ firewall-cmd —reload

其它规则

◆ 当基本firewalld语法规则不能满足要求时,可以使用以下更复杂的规则

◆ rich-rules 富规则,功能强,表达性语言

◆ Direct configuration rules 直接规则,灵活性差

◆ 帮助:man 5 firewalld.direct

管理rich规则

◆ rich规则比基本的firewalld语法实现更强的功能,不仅实现允许/拒绝,还可以实现日志syslog和auditd,也可以实现端口转发,伪装和限制速率
◆ rich语法:

  • rule
    [source]
    [destination]
    service|port|protocol|icmp-block|masquerade|forward-port
    [log]
    [audit]
    [accept|reject|drop]

规则

◆ 规则实施顺序:

  • 该区域的端口转发,伪装规则
  • 该区域的日志规则
  • 该区域的允许规则
  • 该区域的拒绝规则

◆ 每个匹配的规则生效,所有规则都不匹配,该区域默认规则生效

rich规则选项

rich日志规则

◆ log [prefix="<PREFIX TEXT>" [level=<LOGLEVEL>] [limit value="<RATE/DURATION>"]

◆ <LOGLEVEL> 可以是emerg,alert, crit, error, warning, notice, info, debug.

◆ <DURATION> s:秒, m:分钟, h:小时, d:天

◆ audit [limit value="<RATE/DURATION>"]

伪装和端口转发

NAT网络地址转换,firewalld支持伪装和端口转发两种NAT方式

伪装NAT

firewall-cmd --permanent --zone=<ZONE> --add-masquerade

firewall-cmd --query-masquerade 检查是否允许伪装

firewall-cmd --add-masquerade 允许防火墙伪装IP

firewall-cmd --remove-masquerade 禁止防火墙伪装IP


示例:
firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.0.0/24 masquerade'

端口转发

◆ 端口转发:将发往本机的特定端口的流量转发到本机或不同机器的另一个端口。通常要配合地址伪装才能实现

firewall-cmd --permanent --zone=<ZONE> --add-forwardport=port=<PORTNUMBER>:proto=<PROTOCOL>[:toport=<PORTNUMBER>][:toaddr=<IPADDR>]

◆ 说明:toport= 和toaddr= 至少要指定一个

rich规则

◆ rich规则语法:

forward-port port=<PORTNUM> protocol=tcp|udp [toport=<PORTNUM>] [to-addr=<ADDRESS>]

示例:
    转发从192.168.0.0/24来的,发往80/TCP的流量到防火墙的端口8080/TCP
firewall-cmd --zone=work --add-rich-rule='rule family=ipv4 source address=192.168.0.0/24 forward-port port=80 protocol=tcp toport=8080'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值