教你设置疯狗都咬不烂的防火墙

2023-11-29 23:01
文章标签 设置 防火墙 不烂 疯狗

本文主要是介绍教你设置疯狗都咬不烂的防火墙,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 安全技术和防火墙

1.1 安全技术

  • 入侵检测系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供有针对性的指导措施和安全决策依据,类 似于监控系统一般采用旁路部署(默默的看着你)方式。

  • 入侵防御系统(Intrusion Prevention System):以透明模式工作,分析数据包的内容如:溢出攻击、拒绝服务攻击、木马、蠕虫、系统漏洞等进行准确的分析判断,在判定为攻击行为后立即予以 阻断,主动而有效的保护网络的安全,一般采用在线部署方式。(必经之路)

  • 防火墙( FireWall ):隔离功能,工作在网络或主机边缘,对进出网络或主机的数据包基于一定的规则检查,并在匹配某规则时由规则定义的行为进行处理的一组功能的组件,基本上的实现都是默 认情况下关闭所有的通过型访问,只开放允许访问的策略,会将希望外网访问的主机放在DMZ (demilitarized zone)网络中.

1.2 防火墙的分类

按保护范围划分:

主机防火墙:服务范围为当前一台主机 网络防火墙:服务范围为防火墙一次的局域网

按实现方式划分: 硬件防火墙:在专用硬件级别实现部分功能的防火墙 软件防火墙:运行于通用硬件平台之上的防火墙应用软件Windows防火墙

按网络协议划分: 网络层防火墙:OSI模型下四层,又称为包过滤防火墙 应用层防火墙/代理服务器:proxy代理网关、OSI模型七层

1.3 Netfilter

Linux防火墙是由Netfilter组件提供的,Netfilter工作在内核空间,集成在linux内核中

Netfilter 是Linux 2.4.x之后新一代的Linux防火墙机制,是linux内核的一个子系统。Netfilter采用模块化设计,具有良好的可扩充性,提供扩展各种网络服务的结构化底层框架。Netfilter与IP协议栈是无缝契合,并允许对数据报进行过滤、地址转换、处理等操作

Netfilter官网文档:https://netfilter.org/documentation/

2 防火墙工具

2.1 iptables

由软件包iptables提供的命令行工具,工作在用户空间,用来编写规则,写好的规则被送往netfilter,告

诉内核如何去处理信息包

2.2 firewalld

从CentOS 7 版开始引入了新的前端管理工具

软件包:

firewalld

firewalld-config

管理工具:

firewall-cmd 命令行工具

firewall-config 图形工作

2.3 nftables

此软件是CentOS 8 新特性,Nftables最初在法国巴黎的Netfilter Workshop 2008上发表,然后由长期的

netfilter核心团队成员和项目负责人Patrick McHardy于2009年3月发布。它在2013年末合并到Linux内

核中,自2014年以来已在内核3.13中可用。

它重用了netfilter框架的许多部分,例如连接跟踪和NAT功能。它还保留了命名法和基本iptables设计的

几个部分,例如表,链和规则。就像iptables一样,表充当链的容器,并且链包含单独的规则,这些规

则可以执行操作,例如丢弃数据包,移至下一个规则或跳至新链。

从用户的角度来看,nftables添加了一个名为nft的新工具,该工具替代了iptables,arptables和

ebtables中的所有其他工具。从体系结构的角度来看,它还替换了内核中处理数据包过滤规则集运行时

评估的那些部分。

2.4 netfilter中的四表五链

三种报文流向

流入本机:PREROUTING --> INPUT-->用户空间进程(访问我的服务)

流出本机:用户空间进程 -->OUTPUT--> POSTROUTING(穿过我)

转发:PREROUTING --> FORWARD --> POSTROUTING(分摊流量)

五链:

pre-rouing:路由选择前

post-routing:路由选择后

input:处理进入本机的数据包

output 处理从本机出去的数据包

forward:处理转发数据包

四表:

raw表:确定是否对该数据包进行状态跟踪 mangle表:为数据包设置标记(标记优先级) nat表:修改数据包重的源、目标IP地址或端口(地址转换) filter表:确定是否放行该数据包(过滤)

流量:发给你的 需要你转发的
选择合理的链做规则
链决定了在什么地方控制流量
表的作用是存放链
表中有链 链中有规则
表的划分:如何控制流量

3 iptables

3.1 iptables的组成概述

Linux 的防火墙体系主要工作在网络层,针对 TCP/IP 数据包实施过滤和限制,属于典型的包过滤防火墙(或称为网络层防火墙)。Linux 系统的防火墙体系基于内核编码实现, 具有非常稳定的性能和高效率,也因此获得广泛的应用。

netfilter/iptables:IP 信息包过滤系统,它实际上由两个组件 netfilter 和 iptables组成。 主要工作在网络层,针对IP数据包,体现在对包内的IP地址、端口等信息的处理。

-netfilter/iptables关系: netfilter:

属于“内核态”又称内核空间(kernel space)的防火墙功能体系。linux 好多东西都是内核态 用户态,那我们运维人员关注的是用户态, 内核我们关注不是很多,内核基本是我们开发人员关心的事情是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。

iptables :

属于“用户态”(User Space, 又称为用户空间)的防火墙管理体系。是一种用来管理Linux防火墙的命令程序,它使插入、修改和删除数据包过滤表中的规则变得容易,通常位于/sbin/iptables目录下。 netfilter/iptables后期简称为iptables。iptables是基于内核的防火墙,其中内置了raw、mangle、 nat和filter四个规则表。表中所有规则配置后,立即生效,不需要重启服务。

3.2 基本格式

CentOS7默认使用firewalld防火墙,没有安装iptables,若想使用iptables防火墙。必须先关闭firewalld防火墙,再安装iptables

基本格式:

iptables -t 指定表 子命令 指定链 规则
数据包常见控制类型:
  • ACCEPT:允许数据包通过。 

  • DROP:直接丢弃数据包,不给出任何回 应信息。 

  • REJECT:拒绝数据包通过,必要时会给数据发送端一个响应信息。 

  • LOG:在/var/log/messages 文件中记录日志信息,然后将数据包传递给下一条规则。 

防火墙规则的“匹配即停止”对于 LOG 操作来说是一个特例,因为 LOG 只是一种辅助 动作,并没有真正处理数据包。

3.3 实际操作实验

不允许任何主机ping本主机

允许主机ssh端口 通过我的

允许任何主机tcp

允许任何主机udp

查看防火墙规则表

删除清空规则

设置默认策略(-般在生产环境中设置网络型防火墙、主机型防火墙时都要设置默认规则为DROP,并设置白名单.需要注意的是,当使用管理选项“-F”清空链时,默认策略不受影响。因此若要修改默认 策略,必须通过管理选项“-P”重新进行设置。另外,默认策略并不参与链内规则的顺序编排, 因此在其他规则之前或之后设置并无区别。)

加入拒绝,形成白名单(需要在这条命令之前加入可以通过的主机不然无法连接任何)

4 隐含扩展

iptables 在使用-p选项指明了特定的协议时,无需再用-m选项指明扩展模块的扩展机制,不需要手动加载扩展模块
要求以特定的协议匹配作为前提,包括端口、TCP标记、ICMP类型等条件。
端口匹配: --sport 源端口、--dport 目的端口
可以是个别端口、端口范围

4.1 拒绝tcp连接端口号1w-3w的数据包

4.2 ICMP

icmp 协议的扩展选项

[!] --icmp-type {type[/code]|typename} type/code 0/0 echo-reply icmp应答 8/0 echo-request icmp请求

小实验:服务机能ping通 PC1 PC1 不能ping通服务机
服务机:

1.禁止其它主机ping本机

2.允许本机ping其他主机

3.当本机ping不通其它主机时提示目标不可达

客户机:

5 显示扩展模块

显示扩展即必须使用-m选项指明要调用的扩展模块名称,需要手动加载扩展模块

[-m matchname [per-match-options]]

5.1 multiport扩展

以离散方式定义多端口匹配,最多指定15个端口,原公式不支持离散的端口号

5.2 iprange扩展

指明连续的(但一般不是整个网络)ip地址范围

--src-range from[-to] 源IP地址范围

--dst-range from[-to] 目标IP地址范围

5.3 mac扩展

mac 模块可以指明源MAC地址,,适用于:PREROUTING, FORWARD,INPUT chains

5.4 string扩展

对报文中的应用层数据做字符串模式匹配检测

<span style="background-color:#f8f8f8"><span style="color:#333333">[root@localhost ~]#iptables -A OUTPUT -p tcp --sport 80 -m string --algo bm --from 62 --string "bilibili" -j REJECT 
#注意  请求的包不带字符,回复的包带字符  所以要 output</span></span>

5.5 time模块

根据将报文到达的时间与指定的时间范围进行匹配

<span style="background-color:#f8f8f8"><span style="color:#333333">[root@localhost ~]#date
#中国标准时间
2022年 08月 14日 星期日 22:26:07 CST
[root@localhost ~]#date -u
#美国标准时间
2022年 08月 14日 星期日 14:26:09 UTC
​
[root@localhost ~]#iptables -A INPUT  -m time --timestart 14:00 --time 16:00 -j REJECT 
iptables v1.4.21: unknown option "--time"
Try `iptables -h' or 'iptables --help' for more information.
[root@localhost ~]#rpm -ql iptables|grep time
/usr/lib64/xtables/libxt_time.so</span></span>

5.6 connlimit扩展

根据每客户端IP做并发连接数数量匹配

可防止Dos(Denial of Service,拒绝服务)攻击

--connlimit-above N #连接的数量大于N时匹配

--connlimit-upto N #连接的数量小于等于N时匹配

5.7 state扩展

  • NEW:新发出请求;连接追踪信息库中不存在此连接的相关信息条目,因此,将其识别为第一次发出的请求

  • ESTABLISHED:NEW状态之后,连接追踪信息库中为其建立的条目失效之前期间内所进行的通信状态

  • RELATED:新发起的但与已有连接相关联的连接,如:ftp协议中的数据连接与命令连接之间的关系

  • INVALID:无效的连接,如flag标记不正确

  • UNTRACKED:未进行追踪的连接,如:raw表中关闭追踪

设置新用户不可访问 老用户可以访问

这篇关于教你设置疯狗都咬不烂的防火墙的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/434661

相关文章

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

Debian系和Redhat系防火墙配置方式

《Debian系和Redhat系防火墙配置方式》文章对比了Debian系UFW和Redhat系Firewalld防火墙的安装、启用禁用、端口管理、规则查看及注意事项,强调SSH端口需开放、规则持久化,... 目录Debian系UFW防火墙1. 安装2. 启用与禁用3. 基本命令4. 注意事项5. 示例配置R

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

小白也能轻松上手! 路由器设置优化指南

《小白也能轻松上手!路由器设置优化指南》在日常生活中,我们常常会遇到WiFi网速慢的问题,这主要受到三个方面的影响,首要原因是WiFi产品的配置优化不合理,其次是硬件性能的不足,以及宽带线路本身的质... 在数字化时代,网络已成为生活必需品,追剧、游戏、办公、学习都离不开稳定高速的网络。但很多人面对新路由器

linux hostname设置全过程

《linuxhostname设置全过程》:本文主要介绍linuxhostname设置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录查询hostname设置步骤其它相关点hostid/etc/hostsEDChina编程A工具license破解注意事项总结以RHE

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

mtu设置多少网速最快? 路由器MTU设置最佳网速的技巧

《mtu设置多少网速最快?路由器MTU设置最佳网速的技巧》mtu设置多少网速最快?想要通过设置路由器mtu获得最佳网速,该怎么设置呢?下面我们就来看看路由器MTU设置最佳网速的技巧... 答:1500 MTU值指的是在网络传输中数据包的最大值,合理的设置MTU 值可以让网络更快!mtu设置可以优化不同的网