欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

linux中的火墙策略优化

程序员文章站 2024-02-26 20:53:58
...

实验环境

一台单网卡主机westosb
ip 1.1.1.211

一台双网卡主机westosa
ip 172.25.254.111
   1.1.1.111

 hostnamectl set-hostname westosa.westos.org
    2  cd /etc/sysconfig/network-scripts/
    3  ls
    4  rm -fr ifcfg-westos

编写ens3网卡配置文件

[[email protected] network-scripts]# cat ifcfg-ens3
DEVICE=ens3
ONBOOT=yes
BOOTPROTO=none
IPADDR=172.25.254.111
PREFIX=24

 复制网卡文件

cp ifcfg-ens3 ifcfg-ens11  ##复制网卡文件

编写ens11网卡配置文件

[[email protected] network-scripts]# cat ifcfg-ens11
DEVICE=ens11
ONBOOT=yes
BOOTPROTO=none
IPADDR=1.1.1.111
PREFIX=24

删除多余网络

nmcli connection delete Wired\ connection\ 1

更新网络

nmcli connection reload 

查看是否成功

[[email protected] ~]# cd /etc/sysconfig/network-scripts/
[[email protected] network-scripts]# ls
ifcfg-ens11  ifcfg-ens3
   ping 172.25.254.11   ##都可以ping通
   ping 1.1.1.211    ##可以ping通

火墙管理工具切换

在rhel8中默认使用的是firewalld

如果需要使用iptables来管理火墙,需要进行如下操作:

firewalld----->iptables

dnf install iptables-services -y   ##在westosa中从软件仓库中安装火墙管理软件iptables-services
systemctl stop firewalld  ##停止firewalld服务
systemctl disable firewalld  ##关闭firewalld服务
systemctl mask firewalld   ##冻结(mask)firewalld服务
systemctl enable --now iptables

iptables -------> fiewalld

dnf install firewalld -y
systemctl stop iptables ##停止iptables服务
systemctl disable iptables  ##关闭iptables服务
systemctl mask iptables  ##冻结(mask)iptables服务
systemctl unmask  firewalld   ##解锁(unmask)后开启firewalld服务
systemctl enable --now firewalld     ##开启firewalld服务

firewalld

systemctl stop iptables   ####停止firewalld服务
systemctl disable iptables  ##关闭firewalld服务
systemctl mask iptables    ##冻结(mask)firewalld服务
systemctl unmask firewalld ##解锁(unmask)后开启firewalld服务
systemctl enable --now firewalld   ##开启firewalld服务

火墙的图形管理

dnf install firewall-config-0.8.0-4.el8.noarch -y
在Applications--->Sundry--->Firewall打开

2、关于firewalld的域

firewalld通过将网络划分成不同的区域,制定出不同区域之间的访问控制策略来控制不同程序区域间传送的数据流,具体划分区域如下:

        区域                            区域策略描述
    trusted (信任)                接受所有的网络连接
    home(家庭网络)        仅仅接受家庭网络内经过选择的连接
    work (工作网络)        仅仅接受工作网络内经过选择的连接
    public (公共网络)    仅仅接受公共区域内经过选择的连接
    dmz (非军事区)        此区域内可公开访问有限内部网络,仅仅接收经过选择的连接
    block (限制)                拒绝所有网络连接
    drop (丟弃)                 所有接收的网络数据包全部丢弃无任何回复
    internal (内部网络)    仅仅内部网络接受经过选择的连接
    external (外部网络)    即经过ipv4网络地址伪装转发的外部网络,只能接收经过选择的连接

3、关于firewalld的设定原理及数据存储

/etc/firewalld		##火墙配置目录
/lib/firewalld		##火墙模块目录

4.、firewalld的管理命令

firewall-cmd --state		##查看火墙状态 
firewall-cmd --get-active-zones ##查看当前火墙中生效的域
firewall-cmd --get-default-zone ##查看默认域
firewall-cmd --list-all		##查看默认域中的火墙策略
firewall-cmd --list-all --zone=work ##查看指定域的火墙策略

firewall-cmd --set-default-zone=trusted  ##设定默认域

firewall-cmd --get-services 	##查看所有可以设定的服务

firewall-cmd --permanent --remove-service=cockpit	##移除服务
firewall-cmd --reload 

firewall-cmd --permanent --add-source=172.25.254.0/24 --zone=block ##指定数据来源访问指定域
firewall-cmd --reload 

firewall-cmd --permanent --remove-source=172.25.254.0/24 --zone=block ##删除自定域中的数据来源

firewall-cmd --permanent --remove-interface=ens224 --zone=public ##删除指定域的网络接口 
firewall-cmd --permanent --add-interface=ens224 --zone=block 	##添加指定域的网络接口
firewall-cmd --permanent --change-interface=ens224 --zone=public ##更改网络接口到指定域

5、firewalld的高级规则

实验:

 dnf install httpd -y   ##下载http
   53  firewall-cmd --permanent --add-service=http   ##将http添加到火墙允许访问服务
   54  firewall-cmd --reload   ##重载火墙服务

****   64  firewall-cmd --direct --get-all-rules   ##查看高级规则 
****   65  firewall-cmd --direct --add-rule ipv4 filter INPUT 1 ! -s 172.25.254.11 -p tcp --dport 80 -j REJECT   ##设定高级规则:只有172.25.254.11可以访问本机http
       firewall-cmd --reload    ##reload之后设置的规则会被清空,不想清空,设置永久规则,--add-forward-rule

注意: direct命令进行高级规则设定时,必须先开启对应的服务,如果服务本身不被允许,相应的高级规则设定后仍无法生效

6、firewalld中的NAT

SNAT

 vim /etc/sysconfig/network  ##先设置单王卡网关
//
GATEWAY=1.1.1.111
//
78  firewall-cmd  --permanent --add-masquerade    ##开启火墙的地址伪装功能即可
   
   80  firewall-cmd  --reload    ##刷新火墙使设定生效

此时在1.1.1网段的虚拟机westosb中可以ping通172.25.254网段的真实主机

DNAT目的地地址转换

 注意: 进行DNAT转换时,防火墙的地址伪装功能必须打开

firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=1.1.1.211   ##在防火墙中添加策略,将所有通过22端口输入、使用tcp协议的访问请求数据包转发给虚拟机westosb 1.1.1.211的22端口
firewall-cmd  --reload 
firewall-cmd --remove-forward-port=port=22:proto=tcp:toport=22:toaddr=1.1.1.211   ##在防火墙中添加策略,将所有通过22端口输入、使用tcp协议的访问请求数据包转发给虚拟机westosb 1.1.1.211的22端口
  w -i   ##查看是谁刚才访问的本机

火墙默认策略—三表五链

默认策略中的5条链

             默认策略中的5条链                    含义
            input                                           输入
            output                                        输出
            forward                                       转发
            postrouting                                路由之后
            prerouting                                  路由之前

                 默认策略中的3张表
            默认表               表中存放数据
            filter                经过本机内核的所有数据(input output forward)
            nat                不经过内核的数据(postrouting prerouting input output)
            mangle        当filter和nat表不够用时使用,表中记录对链数据的补充解释说明(input output forward postrouting prerouting)

iptables命令

iptables
			-t ##指定表名称
			-n ##不做解析
			-L ##查看
			-A ##添加策略
			-p ##指定协议
			--dport ##指定目的地端口
			-s ##指定来源
			-j ##指定动作 
				ACCEPT ##允许
				DROP ##丢弃
				REJECT ##拒绝
				SNAT ##源地址转换
				DNAT ##目的地地址转换
			-F ##清空表中策略
			-N ##新建链
			-E ##更改链名称
			-X ##删除链
			-D ##删除规则
			-I ##插入规则
			-R ##更改规则
			-P ##更改默认规则

实验

需要使用iptables来管理火墙,进行如下操作:

firewalld----->iptables
       dnf install iptables-services -y
  111  systemctl stop firewalld
  112  systemctl disable firewall
  113  systemctl disable firewalld
  114  systemctl mask firewalld

 systemctl unmask iptables   ##如果iptables被冻结(mask)的话执行此条命令
  118  systemctl enable --now iptables

实验iptables命令:
  119  iptables -t filter -L   ##-L查看指定filter表,可以看到表中包含的经过本机内核的数据链input、output、forward
  120  iptables -t filter -nL  ##-nL查看指定filter表,可以看到表中的源地址、目的地地址未做解析

  121  iptables -t filter -F   ##使用-F参数清空filter表
  122  iptables -t filter -nL   ##-nL查看filter表可以看到表中无数据

  123  systemctl restart iptables.service   ##重启iptables服务可以重新查看到表中数据
  125  iptables  -nL  ##-nL不指定表名称时默认查看的是filter表
  124  iptables -t filter -nL  ##使用-t参数可以指定其他需要进行操作的表
  
       iptables  -A INPUT -j ACCEPT   ##在filter表的INPUT链中添加策略
       iptables  -nL  ##-nL查看filter表可以看到添加成功
       iptables  -D INPUT 1   ##删除在INPUT链中添加的策略

火墙数据通过优化策略

1、跟踪数据包状态

防火墙中传输的数据包有以下三种状态,为了提高火墙数据传输速度,我们可以跟踪防火墙中数据包状态,根据数据包的状态设定火墙策略:

    数据包状态                       含义
    RELATED                        建立过连接的
    ESTABLISHED                正在连接的
    NEW                                 新的

实验:

   iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT    ##接受所有建立过连接、正在连接的数据包
  147  iptables -A INPUT -m state --state NEW -i lo -j ACCEPT    ##接受所有来自本机回环接口的新的数据包
  148  iptables -A INPUT -m state --state NEW  -p tcp --dport 80 -j ACCEPT    ##接受所有通过22端口、使用tcp协议进行访问请求的新的数据包
  149  iptables -A INPUT -m state --state NEW  -p tcp --dport 22 -j ACCEPT   ##接受所有通过80端口、使用tcp协议进行访问请求的新的数据包
  150  iptables -A INPUT -m state --state NEW  -j ACCEPT   ##拒绝其他所有新的数据包(-m参数表示指定特殊匹配模式)
  151  iptables-save > /etc/sysconfig/iptables
       iptables -nL

SNAT源地址转换

SNAT源地址转换是在路由之后POSTROUTING链中进行的

 iptables -F     ##-F清空之前filter表的设定,避免影响实验效果
  163  iptables -t nat -nL
  164  iptables -t nat -A POSTROUTING -o ens3 -j SNAT --to-source 172.25.254.111   ##在nat表的POSTROUTING链中添加策略,指定对所有从ens3接口(254网段)输出的数据SNAT转换其源地址为172.25.254.111

       做完规则设定后还要检查内核路由功能是否开启
  165  sysctl -a | grep ip_forward  ##检查内核路由功能是否开启
//
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_update_priority = 1
net.ipv4.ip_forward_use_pmtu = 0
//
  166  vim /etc/sysctl.conf 
//
net.ipv4.ip_forward =1
//
  167  sysctl -p  ##使开启设定生效  

此时在虚拟机westosb(1.1.1.211)中可以ping通真实主机,也可以远程连接上真实主机,连接后显示的是从westosa的172.25.254.111连接的真实主机。

相关标签: linux