当前位置: 首页 > news >正文

Linux下的火墙管理及优化

一、什么是防火墙

从功能角度来讲

防火墙是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进

从功能实现角度来讲

火墙是系统内核上的一个模块netfilter(数据包过滤机制),通过netfiler来管理kernelspace中的策略

二、什么是内核空间的iptables

lptables 本质上是包含了5个规则表,而规则表则包含了一些列的报文的匹配规则以及操作目标

1、raw表:

第一优先级的表,设置raw表规则后,不会对数据包进行链接跟踪和NAT转换,使用于PREROUTING和OUTPUT链,对应的动作为NOTRACK。

2、mangle表:

第二优先级的表,根据规则,修改数据包的TOS(TypeOfService,服务类型)、TTL(TimeToLive,生存周期)以及设置Mark标记,以实现Qos以及策略路由等:

3、nat表:

第三优先级的表,网络地址转换表,用于修改源和目的的地址,分SNAT(源目的地址转换)和DNAT(目的地址转换)。

4、filter表:

第四优先级的表,用于控制到达链(forward链、input链、output链)上的数据包,是放行(accepte)、丢弃(drop)或者拒绝(reject)。

5、security表:

最不常用的表(通常,我们说iptables只有4张表,security表是新加入的特性),用于在数据包上应用SELinux。

三iptables服务

iptables服务是用户管理内核空间的iptables的管理工具,通过iptables书写内核空间的iptables策略iptables的规则是至上而下的读取方式,遇到与数据包信息匹配的规则后直接采用iptables的规则默认保存在内存中,如果需要永久保存需要把策略以字符的形式保存到/etc/sysconfig/iptables中。

3.1.iptables命令的语法格式及常用参数

语法格式

iptables-t表名<-A/I/D/R>规则链名[规则号]<-i/o 网卡名>-p协议名<-s 源IP/源子网>--sport 源端口<-d 目标IP/目标子网>--dport 目标端口 -j动作

常用参数

-t 对指定的表进行操作,table必须是raw,nat,filter,mangle中的一个。默认是filter表。

-p  指定要匹配的数据包协议类型

-d  地址格式同上,但这里指定地址为目的地址,按此进行过滤

-o  指定数据包出去的网络接口。只对OUTPUT,FORWARDPOSTROUTING 三个链起作用

-i  指定数据包的来自来自网络接口,比如最常见的 eth0。注意:它只对INPUT,FORWARD,PREROUTING这三个链起作用。如果没有指定此选项,说明可以来自任何一个网络接口。同前面类似,"!"表示取反

-L  列出链 chain 上面的所有规则,如果没有指定链,列出表上所有链的所有规则

-A  在指定链 chain 的末尾插入指定的规则,也就是说,这条规则会被放到最后,最后才会被执行。规则是由后面的匹配来指定

-D  -delete chain rule-specification -D, --delete chain rulenum:在指定的链 chain 中删除 一个或多个指定规则

-R num   Replays替换/修改第几条规则

-P   为指定的链 chain 设置策略 target。注意,只有内置的链才允许有策略,用户自定义的是不允许的

-F   清空指定链 chain 上面的所有规则。如果没有指定链,清空该表上所有链的所有规则

实例

1、查看当前iptables策略

iptables -nL

iptables -t nat -nL

2、清空指定表中的策略

iptables -t filter -F

3、允许本机回环接口访问

iptables -A INPUT -i 10 -j ACCEPT

4、允许本机sshd的22端口被访问

iptables -A INPUT -p tcp -d port 22 -j ACCEPT

5、仅允许172.25.254.100访问22端口

iptables -A INPUT -p tcp –d port 22 ! -s 172.25.254.100 -j REJECT

6、删除filter表中INPUT链的第三条策略

iptables -D INPUT 3

7、修改filter表中INPUT链的第2条策略

Iptables -R INPUT 2 -p tcp –d port 80 -j ACCEPT

8、删除EASYLEE链

iptables -X EASYLEE

9、snat地址转换

iptables -t nat-A POSTROUTING -o eth0 SNAT --to-source172.25.254.200

10、dnat地址转换

iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-dest192.168.0.200

四、实现过程

配置好三台主机的ip,一个双网卡,一个仅主机,一个nat

dnf install iptables-services -y

关闭firewalld服务并锁定关闭

systemctl disable --now firewalld

 systemctl mask firewalld

开启iptables服务

systemctl enable --now iptables.service

这里拿snat地址转换示例,snat的功能:将内部网络(私有网络)发起的连接中的源 IP地址转换 为一个在外部网络(公有网络)中可以 路由 的IP地址

  1. 开启内核

  1. 编写nat的iptables策略

  1. 另一台测试

连接成功

再拿dnat的地址转换示例

dnat的功能:将外部请求的目标IP地址转换为内部网络中的特定IP地址

在服务端上输入下列代码是dnat生效

再测试机上

五、.firewalld

一、firewalld服务管理方式与iptables的管理方式区别

iptables是基于Linux内核的Netfilter子系统构建的,直接操作Netfilter;而firewalld则通过libnftables库与Netfilter交互,提供了一个更高的抽象层

iptables使用基于表的规则集,包括filter、nat、mangle、raw及securty五个表;firewalld采用基于区域的规则集,包括default、public、internal、external和dmz五个区域

iptables的配置较为复杂,需要用户掌握特定的命令行语法:firewalld提供了更直观和灵活的配置方式,支持命令行和图形界面

二、firewalld域介绍

区域

默认规则策略

阻塞区域(block)

拒绝流入的流量,除非与流出的流量相关

工作区域(work)

拒绝流入的流量,除非与流出的流量相关

家庭区域(home)

拒绝流入的流量,除非与流出的流量相关

公共区域(public)

拒绝流入的流量,除非与流出的流量相关

信任区域

(trusted)

允许所有的数据包。

丢弃区域(drop)

拒绝流入的流量,除非与流出的流量相关

内部区域

(internal)

等同于home区域

外部区域

(external)

外部区域

(external)

firewalld中默认使用的域是pubic

三、firewall-cmd命令详解

这里给大家讲一些常用命令和参数

参数

--get-default-zone

--set-default-zone=<区域名称>

查询默认的区域名称

设置默认的区域,使其永久生效

--get-services

--get-active-zones

显示预先定义的服务

显示当前正在使用的区域与网卡名称

--add-source=

将源自此IP或子网的流量导向指定的区域

--remove-source=

不再将源自此IP或子网的流量导向某个指定区域

--list-all

--list-all-zones

显示当前区域的网卡配置参数、资源、端口以及服务等信息

显示所有区域的网卡配置参数、资源、端口以及服务等信息

--add-service=<服务名>

--add-port=<端口号/协议>

设置默认区域允许该服务的流量

设置默认区域允许该端口的流量

--remove-service=<服务名>

--remove-port=<端口号/协议>

设置默认区域不再允许该服务的流量

设置默认区域不再允许该端口的流量

--reload

让“永久生效”的配置规则立即生效,并覆盖当前的配置规则

--panic-on

--panic-off

开启应急状况模式

关闭应急状况模式

3.2 实施方式

关闭iptables服务开启firewalld服务,并且更改firewalld的配置文件,将其改成iptables

systemctl  disable --now iptables.service

systemctl mask iptables.service

systemctl unmask firewalld.service

systemctl enable firewalld.service

vim /etc/firewalld/firewalld.conf

火墙信息查看

管理ip

firewall-cmd --add-source 172.25.254.101 --zone=trusted

此时172.25.254.101可以访问双网卡这台主机

192.168.0.100访问不了

管理网卡

此时172.25.254.101可以访问双网卡这台主机

192.168.0.100访问不了

四、firewalld的高级规则

4、1 地址伪装

101这台机子本来无法访问,经过地址伪装后就可以访问

重启服务失效

4.2端口转发

用101主机登陆200主机。查看IP发现是192的

本次实验共三台主机一台为双网卡主机,有nat模式与仅主机模式的两块网卡

ip为:172.25.254.200与192.168.0.200

一台网卡为nat模式的主机

ip为:172.25.254.101

一台网卡为仅主机模式的主机

ip为:192.168.0.100


http://www.mrgr.cn/news/78289.html

相关文章:

  • 目标检测,图像分割,超分辨率重建
  • CTF之密码学(费纳姆密码)
  • c++学习笔记(二)
  • CSS - CSS One-Line
  • Java爬虫:深入探索1688接口的奥秘
  • C++初阶学习第十三弹——容器适配器和优先级队列的概念
  • C语言蓝桥杯组题目
  • WonderJourney 学习笔记
  • Qt获取文件夹下的文件个数(过滤和不过滤的区别)
  • 第 4 章 Java 并发包中原子操作类原理剖析
  • 【Jenkins】docker 部署 Jenkins 踩坑笔记
  • 类和对象--中--初始化列表(重要)、隐式类型转化(理解)、最后两个默认成员函数
  • Android 布局菜单或按钮图标或Menu/Item设置可见和不可见
  • 《Vue 初印象:快速上手 Vue 基础语法》
  • PostgreSQL详细安装教程
  • 基于SpringBoot共享汽车管理系统【附源码】
  • Docker容器运行CentOS镜像,执行yum命令提示“Failed to set locale, defaulting to C.UTF-8”
  • linuxCNC(三)ini配置文件说明
  • 利用编程思维做题之最小堆选出最大的前10个整数
  • 网络基础二
  • 数据结构代码合集
  • 【cocos creator】下拉框
  • 16_嵌入式开发编译不同Linux平台的依赖库
  • 数据结构_图的应用
  • Qt中2D绘制系统
  • 达梦数据库V8报错insert语句内容超长,解决