firewalld防火墙

1、firewalld防火墙

netfilter:内核态,使用的内核与iptables相同。

firewalld:用户态,提供了图形化配置界面和富语言的命令语句设置。比iptables的功能更多。

2、firewalld数据处理流程

firewalld检查数据来源的源地址,匹配区域规则
1.如果源地址关联到特定的区域,则执行该区域指定的规则。
2.若源地址未关联到特定的区域,则使用传入网络接口的区域并执行该区域所制定的规则
3.若网络接口未关联到特定的区域,则使用默认区域并执行该区域所制定的规则


3、firewalld的安全区域

firewalld默认创建了9个安全区域,分为两大类,第一类通行区域,默认限定允许通行什么类型的数据。第二类拒绝区域,什么数据都不允许通行的区域。
所有区域的通行规则是:允许任何数据发出,拒绝任何数据传入,除指定类型的数据流量。

trusted:信任区域,允许所有数据的发出和传入。
public:     公共区域,是所有接口的默认区域,除ssh和dhcp客户端
work:     办公区域,除ssh,dhcpv6-client,ipp-client等预定义服务
home:     家庭区域,除ssh,dhcpv6-client,ipp-client,mdns,samba-client等预定义服务
internal:内部区域,除ssh,dhcpv6-client,ipp-client,mdns,samba-client等预定义服务
external:外部区域,除ssh等预定义服务
dmz:     隔离区域,除ssh等预定义服务
block:     限制区域,拒绝任何数据传入
drop:     丢弃区域,拒绝任何数据传入,并且不产生ICMP错误信息


4、firewalld配置命令

firewall-config    #进入图形化配置界面

firewall-cmd       #firewall配置命令

1.显示firewall安全区域

firewall-cmd --get-zones

2.显示默认区域

firewall-cmd --get-default-zone

3.显示当前活动的区域

firewall-cmd --get-active-zones

一般情况下,网卡接口加入哪个区域,哪个区域就是活动的。

4.显示指定接口绑定的区域

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

5.显示所有区域和配置规则

firewall-cmd --list-all-zones

显示的信息说明:
home (active)            #区域名称及状态(active活动状态)
  target: default        #匹配默认规则
  icmp-block-inversion: no    #未启用ICMP消息过滤
  interfaces: ens33        #当前连接网络接口
  sources:             #源地址规则
  services: dhcpv6-client mdns samba-client ssh    #允许访问服务
  ports:             #允许访问的端口
  protocols:             #允许访问的协议
  masquerade: no        #地址伪装未启用
  forward-ports:         #端口转换
  sourceports:             #源端口号
  icmp-blocks:             #icmp消息过滤类型
  rich rules:             #富语言

6.显示指定区域的所有规则

firewall-cmd --zone=home --list-all


5、第二类命令,添加修改规则类

1.在指定的区域中添加网卡接口

一个网卡接口只能加入一个安全区域,而一个安全区域能够添加多个网卡接口。

firewall-cmd --zone=internal --add-interface=ens33


2.在指定的区域中添加服务

firewall-cmd --zone=internal --add-service=http

注意:每条语句只能添加一个服务


3.删除指定区域中的网卡接口

当一个网卡接口从安全区域中被删除后,会进入默认区域。

firewall-cmd --zone=internal --remove-interface=ens33

4.删除指定区域中的服务

firewall-cmd --zone=internal --remove-service=http


1、第二类命令,添加修改规则类

1.在指定区域中添加端口号

例:修改本地服务器的ssh服务端口号为2200,添加到firewalld的internal区域中

firewall-cmd --zone=internal --add-port=2200/tcp

2.在指定的区域中添加连续范围的端口号

firewall-cmd --zone=internal --add-port=4000-4005/tcp

3.删除指定区域中的端口号

firewall-cmd --zone=internal --remove-port=4000-4005/tcp


4.在指定区域中添加icmp的拒绝消息

firewall-cmd --zone=internal --add-icmp-block=echo-request

5.在指定区域中删除icmp的拒绝消息

firewall-cmd --zone=internal --remove-icmp-block=echo-request


2、配置模式

--reload   读取firewalld的配置信息,加载配置规则。相当于重启服务,重新读取配置。

firewall-cmd --reload

--permanent    永久保存,将规则配置写入配置文件中,当前不生效,只能在重启服务或重新加载配置后生效。

注意:在输入规则时,不写--permanent选项,规则是临时生效的,重新启动服务,重启系统,重新加载配置都会丢失以添加的规则。一般使用临时规则的方式进行测试,功能实现后,再添加--permanent选项设置为永久生效。


3、直接规则

firewalld中的直接规则设置的是一种流程性的规则选项,描述在过程中要做那些事。配置难度相对较高,不建议初学者设置。

例:将ip地址为10.3的主机加入黑名单,设置每分钟记录一次日志,并且丢弃数据包。

1.创建类型为ipv4的黑名单容器

firewall-cmd --direct --permanent --add-chain ipv4 raw blacklist

2.将10.3加入到黑名单

firewall-cmd --direct --permanent --add-rule ipv4 raw PREROUTING 0 -s 192.168.10.3 -j blacklist

3.设置每分钟记录一次日志

firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 0 -m limit --limit 1/min -j LOG --log-prefix "blacklisted"

4.设置丢弃黑名单中的数据包

firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 1 -j DROP


4、富语言规则

富语言是firewalld防火墙提供的一种新的规则表达式,在iptables的基础上运行,用户不会iptables也能够学习使用,功能比iptables更多。

富语言管理操作语法:

1.添加富语言规则

firewall-cmd --permanent --zone=internal --add-rich-rule='规则表达式'

2.删除富语言规则

firewall-cmd --permanent --zone=internal --remove-rich-rule='规则表达式'

3.显示指定区域的富语言规则

firewall-cmd --zone=internal --list-rich-rules


4.规则表达式语法

source  源ip地址:source address=192.168.10.3 或 192.168.10.0/24

destination  目标IP地址:destination address=192.168.10.2 或 192.168.10.0/24

log 日志管理:log  prefix=前缀文本  level=日志级别  limit  value=条目数/时间  (s,m,h,d)

audit  审核:审核执行动作  ACCEPT   REJECT  DROP

element  其他要素:
    service name=服务名
    port port=端口号或端口范围
    protocol=tcp或udp
    icmp-block  name=icmp类型(request  replay)
    masquerade  规则里的IP伪装
    forward-port   端口与地址转换
    family=ipv4    指定地址类型ipv4或ipv6

例:允许来自192.168.10.0/24的ipv4地址连接http,并使用系统日志,每分钟记录一次

firewall-cmd --zone=internal --add-rich-rule='rule family=ipv4 source address=192.168.10.0/24 service name=http log prefix=aaa level=info limit value=1/m accept'

练习案例:
1、允许新的ipv4和ipv6连接FTP,并使用审核每分钟记录一次。
2、为RADIUS协议拒绝所有来自:1:2:3:4:5:6:: 的新IPV6连接,日志前缀为"dns",级别为info,并每分钟最多记录3次。接受来自其他发起端新的IPV6连接。
3、将源地址192.168.10.2加入白名单,允许来自这个源地址的所有连接。
4、拒绝来自public区域中IP地址192.168.20.11的所有流量。
5、丢弃来自默认区域中任何位置的所有传入的ipsec esp协议包。
6、在192.168.1.0/24子网的dmz区域中,接收端口号7900-7905的所有TCP包。
7、接收从work区域到ssh的新连接,以notice级别,并且每分钟最多三条消息的方式将新连接记录到syslog
8、在接下来的5分钟内,拒绝从默认区域中的192.168.2.0/24子网到DNS的链接,并且拒绝的链接将记录到audit系统,且每小时最多一条消息。
 

1、案例讲解

1.允许新的ipv4和ipv6连接FTP,并使用审核每分钟记录一次。

firewall-cmd --zone=internal --add-rich-rule='rule family=ipv4 service name=ftp log prefix=ftp level=info limit value=1/m audit accept'


firewall-cmd --zone=internal --add-rich-rule='rule family=ipv6 service name=ftp log prefix=ftp level=info limit value=1/m audit accept'


2.为RADIUS协议拒绝所有来自:1:2:3:4:5:6:: 的新IPV6连接,日志前缀为"dns",级别为info,并每分钟最多记录3次。接受来自其他发起端新的IPV6连接。

firewall-cmd --zone=internal --add-rich-rule='rule family=ipv6 source address=1:2:3:4:5:6:: service name=radius log prefix=redius level=info limit value=3/m drop'

firewall-cmd --zone=internal --add-rich-rule='rule family=ipv6 service name=radius accept'


3.在192.168.1.0/24子网的dmz区域中,接收端口号7900-7905的所有TCP包。

firewall-cmd --zone=dmz --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 port port=7900-7905 protocol=tcp accept'


2、firewalld配置地址转换

1.地址伪装

external区域默认配置了地址伪装选项。只要将外网接口添加到external区域中,直接就能访问外网。

其他区域启用地址伪装功能:

firewall-cmd --zone=work  --add-masquerad

取消地址伪装功能:

firewall-cmd --zone=external  --remove-masquerad


2.目标地址转换 DNAT

将内网中的服务器发布到外网

在external区域中添加http服务,允许external区域接收http访问请求。

firewall-cmd --zone=external --add-service=http
firewall-cmd --zone=external --add-service=https

在external区域中添加转换规则

方法一:富语言简写语句
firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=192.168.20.2

方法二:富语言标准语句

firewall-cmd --zone=external --add-rich-rule='rule family=ipv4 destination address=192.168.30.1 forward-port port=80 protocol=tcp to-addr=192.168.20.2'
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据库从删库到跑路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值