code学习

Firewalld 学习与配置

Firewalld

安全

  1. 按照OSI参考模型
  2. 物理安全: 防火、防水、防雷、防鼠、防盗、防静电。
  3. 网络安全:IP、端口、协议、网络层、传输层
  4. 应用层安全:http协议 按照功能分类: ​主机防火墙 ​ 网络防火墙
  5. 防火墙 ​

    软件防火墙: 在当前软件系统上安装实现 ​

    硬件防火墙:软件和硬件捆绑

centos 6 :iptables

centos 7 : iptables、firewalld(默认)

目录

  • ​​Firewalld​​
  • ​​1.防火墙基本概念​​
  • ​​1.1 firewalld与iptables的不同点​​
  • ​​2.firewall区域概述​​
  • ​​2.1 Firewall区域规则​​
  • ​​2.2 注意:​​
  • ​​3.Firewalld相关配置文件​​
  • ​​4.防火墙基本指定参数​​
  • ​​5.防火墙区域配置策略​​
  • ​​5.1 案例:​​
  • ​​6.firewall端口转发策略​​
  • ​​6.1 流量转发命令格式为​​
  • ​​6.2 案例​​
  • ​​7.firewall富贵则策略​​
  • ​​8.firewall开启内部上网​​
  • ​​环境​​
  • ​​8.1 firewall翻过墙开启ip伪装,实现地址转换。​​

1.防火墙基本概念

Centos 7系统继承了多款防火墙管理工具,其中firewalld(Dynamic Firewalld Manager of Linux systems,Linux系统的动态防火墙管理器)服务是默认的防火墙配置管理工具,它拥有CLI(命令行界面)和基于GUI(图形用户界面)的两种管理方式。

Firewalld 学习与配置

1.1 firewalld与iptables的不同点

1、firewalld可以动态修改单条规则,不需要像iptables那样,在修改了规则后必须全部刷新猜可以生效。

2、firewalld在使用上比iptables人性化很多,即使不明白五表五链而且对TCP/IP协议不理解也可以实现大部分功能。

3、firewalld跟iptables比起来,不好的地方是每个服务都需要设置才能放行,因为默认是拒绝。而iptables里默认是每个服务是允许,需要拒绝的才去限制

2.firewall区域概述

简单来说,区域就是Firewalld预先准备的几套防火墙策略集合(策略模板),用户可以根据不同场景限制核实的策略集合,从而实现防火墙策略之间的快速切换

Firewalld 学习与配置

2.1 Firewall区域规则

Firewalld 学习与配置
Firewalld 学习与配置

2.2 注意:

  1. 一个zone区域只能绑定一个网卡,设定不同的匹配规则
  2. 一个zone区域又可以针对不同的源地址设置不同的规则

3.Firewalld相关配置文件

默认定义的区域模板配置文件/usr/lib/firewalld/

存储规则配置文件/etc/firewalld

4.防火墙基本指定参数

firewalld的规则分两种状态

runtime(运行时):修改规则马上生效,但是临时生效[不建议]

permanent(持久):修改后需要重启reload重载服务[强烈推荐]

firewall-cmd命令分类

参数 作用
Zone区域相关指令
–get-default-zone 查询默认的区名称
–set-default-zone=<区域名称> 设置默认的区域,使其永久生效
–get-active-zones 显示正当前正在使用的区域与网络名称
–get-zones 显示总共可用的区域
–new-zone=<区域名称> 新增区域
Service服务相关指令
–get-service 显示预先定义的服务
–add-service=<服务名> 设置默认区域允许该服务的流量
–remove-service=<服务明> 设置默认区域不再允许该服务的流量
Port端口相关指令
–add-port=<端口号/协议> 设置默认区域允许该端口的流量
–remove-port<端口号/协议> 设置默认区域不在允许该端口流量
Interface网卡相关指令
–add-interface=<网卡名称> 设置默认区域允许改网卡
–change-interface=<网卡名称>
其他相关命令
–list-all
–reload 重新加载firewalld

5.防火墙区域配置策略

​5.1.未来能正常使用firewalld服务和相关工具去管理防火墙​

​//禁用传统防火墙服务​

[root@zabbix ~]# systemctl mask iptables     //将服务关联到黑洞  关联后服务将无法启动
Created symlink from /etc/systemd/system/iptables.service to /dev/null.
[root@zabbix ~]# systemctl unmask iptables  //关闭服务关联到黑洞
Removed symlink /etc/systemd/system/iptables.service.      

​//启动firewalld防火墙,并加入开机启动服务​

[root@zabbix ~]# systemctl start  firewalld
[root@zabbix ~]# systemctl enable  firewalld      

//备份firewalld相关配置文件(重要)

5.1 案例:

要求:

1.设定默认区域为drop(拒绝所有)

2.设置白名单IP访问,将源192.168.101.0/24网段加入trusted区域

​//将当前默认区域修改为drop​

[root@zabbix ~]# firewall-cmd --permanent  --set-default-zone=drop      

​//将网络接口关联之drop区域​

[root@zabbix ~]# firewall-cmd --permanent --change-interface=ens192 --zone=drop      

​//将192.168.0.0/16加入到trusted白名单​

[root@zabbix ~]# firewall-cmd --permanent --add-source=192.168.0.0/16 --zone=trusted
[root@zabbix ~]# firewall-cmd --reload
[root@zabbix ~]# firewall-cmd --get-active-zone
drop
  interfaces: ens33 ens192
public
  interfaces: ens224
trusted
  sources: 192.168.0.0/16      

6.firewall端口转发策略

端口转发是指传统的目标地址映射,实现外网访问内网资源

6.1 流量转发命令格式为

//创建
firewall-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标ip地址>
//删除
firewall-cmd --permanent --zone=<区域> --remove-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标ip地址>      

端口转发是指内网的目标地址,实现外网访问资源

6.2 案例

​1.添加本机端口转发将555/tcp端口转发到22策略,要求当前和长期有效​

[root@nginx-web01 ~]# firewall-cmd --permanent --add-forward-port=port=555:proto=tcp:toport=22
success
[root@nginx-web01 ~]# firewall-cmd --reload
success      

​2.如果需要将本地的192.168.101.82:6666端口转发至后端172.16.20.105:22端口​

​#1.开启ip伪装​

[root@nginx-web01 ~]# firewall-cmd --add-masquerade --permanent 
success      

​#2.配置转发​

[root@nginx-web01 ~]# firewall-cmd --permanent --add-forward-port=port=6666:proto=tcp:toport=22:toaddr=172.16.20.90
success[root@nginx-web01 ~]# firewall-cmd --reload
success
[root@nginx-web01 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192 ens224
  sources: 
  services: dhcpv6-client http https ssh zabbix-agent
  ports: 
  protocols: 
  masquerade: yes       //yes开启ip伪装模式
  forward-ports: port=6666:proto=tcp:toport=22:toaddr=172.16.20.90
  source-ports: 
  icmp-blocks: 
  rich rules:      

7.firewall富贵则策略

firewalld中的富贵则表示更细致、更详细的防火墙策略,它可以针对系统服务、端口号、源地址和目标地址等诸多信息进行更有针对性的策略配置,优先级在所有的防火墙略中也是最高的。

[root@zabbix ~]# man firewall-cmd 
[root@zabbix ~]# man firewalld.richlanguage
rule
   [source]
   [destination]
   [service|port|protocol|icmp-block|icmp-type|masquerade|forward-port|source-port
   [log]
      [audit]
      [accept|reject|drop|mark]

rule [family="ipv4|ipv6"]
source address="address[/mask]" [invert="true"]
destination address="address[/mask]" invert="true"
server name="service name"
port port="port value" protocol="tcp|udp"
protocol value="protocol value"
forward-port port="port value" protocol="tcp|udp" to-port="port value" to-addr="address" 
log [prefix="prefix text"] [level="log level"] [limit value="rate/duration"]
accept | reject [type="reject type "] | drop      

​1.允许192.168.101.0/24网段中192.168.101.176主机访问http服务。其他同网段主机无法访问,当前和永久生效​

[root@zabbix ~]# firewall-cmd --permanent --add-source=192.168.101.0/24 --zone=public
success
[root@zabbix ~]# firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.101.176/32 service name=http accept'
success
[root@zabbix ~]# firewall-cmd --reload
success      

​2.拒绝192.168.101.82主机发起ssh请求,当前和永久生效​

[root@zabbix ~]# firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.101.82/32 service name=ssh drop'
success
[root@zabbix ~]# firewall-cmd --reload
success      

​3.将远程192.168.101.176主机请求firewalld的5551端口,转发至firewalld防火墙22端口​

[root@zabbix ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.101.176/32 forward-port port=5551 protocol=tcp to-port=22' --permanent
success
[root@zabbix ~]# firewall-cmd --reload
success      

​4.将远程192.168.101.176主机的请求firewall的6661端口,转发至后端主机172.16.20.102的22端口​

[root@zabbix ~]# firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.101.176/32 forward-port port=6661 protocol=tcp to-port=22 to-addr=172.16.20.102'
success
[root@zabbix ~]# firewall-cmd --reload
success      

8.firewall开启内部上网

环境

firewalld 192.168.101.85 172.16.20.105

web01 182.168.101.102

8.1 firewall翻过墙开启ip伪装,实现地址转换。

[root@lb01 ~]# firewall-cmd --permanent  --add-masquerade 
success
[root@lb01 ~]# firewall-cmd --reload
success
#1.将客户端网关指向firewalld
#2. 客户端访问公网