Linux中的火墙策略安全及其优化(iptables firewalld)

Linux中的火墙策略安全及其优化iptables firewalld

    • 1.火墙介绍
    • 2.火墙管理工具切换
    • 3 firewalld
    • 3.1firewalld的开启
    • 3.2.关于 firewalld 的域
    • 3.3.关于 firewalld 的设定原理及数据存储
    • 3.4firewalld 的管理命令
    • 3. 5. firewalld 的高级规则
    • 3. 6.firewalld 中的 NAT
    • 3.6.1 SNAT 源地址伪装
    • 3.6.2DNAT 目的地地址伪装 ``
    • 4. iptables 的使用
    • 5.火墙默认策略
    • 5.1默认策略中的 5 条链
    • 5.2默认的 3 张表
    • 5.3iptables 命令
    • 5.4在添加的火墙策略时写入数据包的状态
    • 5.4.1 为什么要进行数据包的状态转变:
    • 5.4.2 数据包状态
    • 5.4.3 添加火墙策略时写入数据包状态的命令
    • 5.5地址伪装功能

1.火墙介绍

1.netfilter

netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。

2.iptables

IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。
防火墙在做数据包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的数据包过滤表中,而这些表集成在 Linux 内核中。在数据包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP 数据包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。
虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成。
netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易

3.iptables|firewalld

iptables的防火墙策略是交由内核层面的netfilter网络过滤器来处理的,而firewalld则是交由内核层面的nftables包过滤框架来处理,相较于iptabels防火墙来说,firewalld支持动态更新技术并加入了区域的概念,即不同的防火墙策略集合,用户可以根据生产场景的不同而选择合适的测率集合,从而实现防火墙策略之间的快速切换

2.火墙管理工具切换

firewalld和iptables只能有一个打开==

在 rhel8 中默认使用的是 firewalld
firewalld----->iptables 打开iptables ,关闭firewalld

dnf install iptables-services 安装iptables-services systemctl stop firewalld ###关闭火墙 systemctl disable firewalld systemctl mask firewalld ##锁住 systemctl enable --now iptables ####打开iptables

[root@lzy Desktop]# dnf search iptables
iptables-services.x86_64 
[root@lzy Desktop]# dnf install iptables-services.x86_64 -y    ###安装iptables服务
[root@lzy Desktop]# systemctl stop firewalld        ###关闭火墙
[root@lzy Desktop]# systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@lzy Desktop]# systemctl mask firewalld        ###锁住火墙
Created symlink /etc/systemd/system/firewalld.service → /dev/null.

[root@lzy Desktop]# systemctl enable --now iptables.service  ##打开iptables
Created symlink /etc/systemd/system/basic.target.wants/iptables.service → /usr/lib/systemd/system/iptables.service.


iptales -------> fiewalld 关闭iptables.打开firewalld
dnf install firewalld -y
systemctl stop iptables
systemctl disable iptables
systemctl mask iptables
systemctl enable --now firewalld


________________
[root@lzy Desktop]# systemctl stop iptables.service     ##先关闭iptables
[root@lzy Desktop]# systemctl disable iptables.service 
Removed /etc/systemd/system/basic.target.wants/iptables.service.
[root@lzy Desktop]# systemctl mask iptables.service   ###锁住iptables
Created symlink /etc/systemd/system/iptables.service → /dev/null.
[root@lzy Desktop]# systemctl enable --now firewalld    ###打开不了,显示锁住
Failed to enable unit: Unit file /etc/systemd/system/firewalld.service is masked.
[root@lzy Desktop]# systemctl unmask firewalld.service   ####解锁
Removed /etc/systemd/system/firewalld.service.
[root@lzy Desktop]# systemctl enable --now firewalld   ###打开火墙
Created symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service → /usr/lib/systemd/system/firewalld.service.
Created symlink /etc/systemd/system/multi-user.target.wants/firewalld.service → /usr/lib/systemd/system/firewalld.service.
____________________________________

3 firewalld

Cockpit 是红帽开发的网页版图像化服务管理工具,优点是无需中间层,且可以管理多种服务。

根据其项目主站描述,Cockpit 有如下特点:
    从易用性考虑设计,方便管理人员使用,而不是仅仅的终端命令按钮化。
    不会打乱已有终端或脚本服务配置,通过 Cockpit 启用的服务可以在终端停止,脚本运行的错误亦会被 Cockpit 捕获。
    支持一次性管理多个服务,实现自动化和批处理。

Linux中的火墙策略安全及其优化(iptables firewalld)_第1张图片Linux中的火墙策略安全及其优化(iptables firewalld)_第2张图片Linux中的火墙策略安全及其优化(iptables firewalld)_第3张图片
Linux中的火墙策略安全及其优化(iptables firewalld)_第4张图片Linux中的火墙策略安全及其优化(iptables firewalld)_第5张图片
Linux中的火墙策略安全及其优化(iptables firewalld)_第6张图片Linux中的火墙策略安全及其优化(iptables firewalld)_第7张图片

Linux中的火墙策略安全及其优化(iptables firewalld)_第8张图片

3.1firewalld的开启

systemctl stop iptables
systemctl disable iptables
systemctl mask iptables
systemctl unmask firewalld
systemctl enable --now firewalld

3.2.关于 firewalld 的域

trusted 接受所有的网络连接
home ##用于家庭网络,允许接受 ssh mdns ipp-client samba-client dhcp-client
work ##工作网络 ssh ipp-client dhcp-client
public ##公共网络 ssh dhcp-client
dmz ##军级网络 ssh
block ##拒绝所有
drop ##丢弃 所有数据全部丢弃无任何回复
internal ##内部网络 ssh mdns ipp-client samba-client dhcp-client
external ##ipv4 网络地址伪装转发 sshd

.

3.3.关于 firewalld 的设定原理及数据存储

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

3.4firewalld 的管理命令

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 ##更改网络接口到指定域

firewalld-cmd --state ###查看火墙状态

在这里插入图片描述firewall-cmd --list-all ###查看默认域中的火墙策略

Linux中的火墙策略安全及其优化(iptables firewalld)_第9张图片
firewall-cmd --get-active-zones ###查看当前火墙中生效的域
Linux中的火墙策略安全及其优化(iptables firewalld)_第10张图片firewall-cmd --get-default-zone ##查看默认域

Linux中的火墙策略安全及其优化(iptables firewalld)_第11张图片firewall-cmd --set-default-zone=public 设定默认域
在这里插入图片描述firewall-cmd permanent --remove/add-service=cockpit ##添加,删除服务
firewall-cmd --reload ####reload之后才会生效

Linux中的火墙策略安全及其优化(iptables firewalld)_第12张图片
firewall-cmd --get-services ##查看所有可以设定的服务

Linux中的火墙策略安全及其优化(iptables firewalld)_第13张图片firewall-cmd --list-all --zone=work ####查看指定域的火墙策略
Linux中的火墙策略安全及其优化(iptables firewalld)_第14张图片firewall-cmd --add(remove/change)-interface=enp7s0 --zone=public ##删除,添加,改变指定域的网络接口
firewall-cmd --reload
Linux中的火墙策略安全及其优化(iptables firewalld)_第15张图片firewall-cmd --permanent --add-source=172.25.254.0/24 --zone=block ##指定数据来源访问指定域
block:拒绝所有
Linux中的火墙策略安全及其优化(iptables firewalld)_第16张图片无法ping通
Linux中的火墙策略安全及其优化(iptables firewalld)_第17张图片firewall-cmd --permanent --remove-source=172.25.254.0/24 --zone=block ##删除数据来源访问指定域

Linux中的火墙策略安全及其优化(iptables firewalld)_第18张图片可以ping通
Linux中的火墙策略安全及其优化(iptables firewalld)_第19张图片

3. 5. firewalld 的高级规则

firewall-cmd --direct --get-all-rules##查看高级规则 firewall-cmd --direct --add-rule ipv4 filter INPUT 0 ! -s 172.25.254.0/24 -p tcp --dport 22 -j REJECT ##除了设定的ip,其他主机均无法连接本机

双网卡主机中

防火墙开着

[root@lzy network-scripts]# firewall-cmd --get-active-zones    ##查看当前火墙生效的域
libvirt
  interfaces: virbr0
public
  interfaces: enp1s0 enp7s0     1;172.25.254.117   7:1.1.1.117

[root@lzy network-scripts]#  firewall-cmd --direct --get-all-rules                   ##查看高级规则

[root@lzy network-scripts]#   firewall-cmd --direct --add-rule ipv4 filter INPUT 0 ! -s 172.25.254.17 -p tcp --dport 22 -j REJECT    ##设定只有172.25.254.17主机可以连接本机。

[root@lzy network-scripts]# firewall-cmd --direct --get-all-rules  ##查看高级规则
ipv4 filter INPUT 0 '!' -s 172.25.254.17 -p tcp --dport 22 -j REJECT

[root@lzy network-scripts]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     tcp  -- !172.25.254.17        0.0.0.0/0            tcp dpt:22 reject-with icmp-port-unreachable
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:53
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:53
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:67
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:67

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            192.168.122.0/24     ctstate RELATED,ESTABLISHED
ACCEPT     all  --  192.168.122.0/24     0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:68

测试:172.25.254.17主机中
··
17主机可以连接本机
··

[root@localhost Desktop]# ssh [email protected]    
[email protected]'s password: 
Web console: https://lzy.westos.com:9090/ or https://172.25.254.117:9090/

This system is not registered to Red Hat Insights. See https://cloud.redhat.com/
To register this system, run: insights-client --register

Last login: Tue Aug 11 02:56:07 2020 from 172.25.254.104
[root@lzy ~]# 

测试:172.25.254.104,:无法连接117主机

[root@localhost Desktop]# ssh [email protected]   ## 主机104 不能连接 
ssh: connect to host 172.25.254.117 port 22: No route to host

3. 6.firewalld 中的 NAT

3.6.1 SNAT 源地址伪装

firewall-cmd --permanent --add-masquerade ###打开源地址伪装功能
firewall-cmd --reload
双网卡主机中打开源地址伪装功能
Linux中的火墙策略安全及其优化(iptables firewalld)_第20张图片测试:不同网段的IP可以ping通
在这里插入图片描述

3.6.2DNAT 目的地地址伪装 ``

firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toaddr=172.25.254.117 117主机是伪装的目的地地址
firewall-cmd --reload
双网卡主机lzy 1.1.1.17 172.25.254.17
Linux中的火墙策略安全及其优化(iptables firewalld)_第21张图片单网卡主机172.25.254.117:
Linux中的火墙策略安全及其优化(iptables firewalld)_第22张图片单网卡1.1.1.117主机
Linux中的火墙策略安全及其优化(iptables firewalld)_第23张图片在双网卡主机中打开目的地址伪装功能;伪装为172.25.254.117
Linux中的火墙策略安全及其优化(iptables firewalld)_第24张图片
测试:
Linux中的火墙策略安全及其优化(iptables firewalld)_第25张图片

4. iptables 的使用

#火墙策略的永久保存#
/etc/sysconfig/iptables ##iptables 策略记录文件
永久保存策略
iptales-save > /etc/sysconfig/iptables
service iptables save
安装iptables
Linux中的火墙策略安全及其优化(iptables firewalld)_第26张图片

5.火墙默认策略

5.1默认策略中的 5 条链

input 输入
output 输出
forward 转发
postrouting 路由之后
prerouting 路由之前

5.2默认的 3 张表

filter 经过本机内核的数据(input output forward)
nat 不经过内核的数据(postrouting,prerouting,input,output)
mangle 当 filter 和 nat 表不够用时使用(input output forwardpostrouting,prerouting,)

5.3iptables 命令

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

关闭火墙。打开iptables
Linux中的火墙策略安全及其优化(iptables firewalld)_第27张图片Linux中的火墙策略安全及其优化(iptables firewalld)_第28张图片-nL -n:不做解析 -L:查看
Linux中的火墙策略安全及其优化(iptables firewalld)_第29张图片-t指定表类型
Linux中的火墙策略安全及其优化(iptables firewalld)_第30张图片
Linux中的火墙策略安全及其优化(iptables firewalld)_第31张图片-F 刷新
Linux中的火墙策略安全及其优化(iptables firewalld)_第32张图片-A:添加策略 -p:协议,–dport:端口 -s:来源 -j:动作
Linux中的火墙策略安全及其优化(iptables firewalld)_第33张图片-D:删除规则
Linux中的火墙策略安全及其优化(iptables firewalld)_第34张图片-I:插入规则:插入到之前设定规则的之前
Linux中的火墙策略安全及其优化(iptables firewalld)_第35张图片

-R:更改规则
Linux中的火墙策略安全及其优化(iptables firewalld)_第36张图片-N:新建链
Linux中的火墙策略安全及其优化(iptables firewalld)_第37张图片-E:更改链接名称

Linux中的火墙策略安全及其优化(iptables firewalld)_第38张图片-P协议
Linux中的火墙策略安全及其优化(iptables firewalld)_第39张图片

5.4在添加的火墙策略时写入数据包的状态

5.4.1 为什么要进行数据包的状态转变:

为了解决掉在传输数据包时由于火墙策略所导致的的延迟问题。可以让检测过的数据包再次传输时直接通过火墙策略。

5.4.2 数据包状态

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

5.4.3 添加火墙策略时写入数据包状态的命令

1.设定建立和正在连接的数据包的火墙策略为允许
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
2.设定本机的回环接口允许新的数据包
iptables -A INPUT -m state --state NEW -i lo -j ACCEPT
3.对于新的指定服务的数据包添加火墙策略:设定为允许
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT
4.添加火墙策略。设定除指定ip的所有主机都可以进行的服务
iptables -A INPUT -m state --state NEW ! -s 172.25.254.11 -p tcp --dport 22 -j ACCEPT (!表示非)

5.永久保存火墙策略
service iptables save

Linux中的火墙策略安全及其优化(iptables firewalld)_第40张图片测试:11主机无法连接111主机
Linux中的火墙策略安全及其优化(iptables firewalld)_第41张图片

5.5地址伪装功能

nat 表中的 dnat snat
snat
iptable -t nat -A POSTROUTING -o ens160 -j SNAT --to-source 192.168.0.20
Linux中的火墙策略安全及其优化(iptables firewalld)_第42张图片源地址伪装为172网段
在这里插入图片描述测试:172.25.254.117主机可以连接双网卡主机中的1网段ip
Linux中的火墙策略安全及其优化(iptables firewalld)_第43张图片

dnat
iptables -t nat -A PREROUTING -i ens160 -j DNAT --to-dest 172.25.254.30
在这里插入图片描述Linux中的火墙策略安全及其优化(iptables firewalld)_第44张图片

你可能感兴趣的:(linux,基础学习,linux,iptables,运维)