目录
频道首页
📚iptables
收藏
0
xy20118 最近修改于 2024-05-28 08:44:54

前言

image

安全技术之网络安全

主要是指保障网络安全,防止黑客攻击、病毒入侵、数据泄露等问题。

  • 入侵检测系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供有针对性的指导措施和安全决策依据,类 似于监控系统一般采用旁路部署(默默的看着你)方式。
  • 入侵防御系统(Intrusion Prevention System):以透明模式工作,分析数据包的内容如:溢出攻击、拒绝服务攻击、木马、蠕虫、系统漏洞等进行准确的分析判断,在判定为攻击行为后立即予以 阻断,主动而有效的保护网络的安全,一般采用在线部署方式。(必经之路)
  • 防火墙( FireWall ):隔离功能,工作在网络或主机边缘,对进出网络或主机的数据包基于一定的规则检查,并在匹配某规则时由规则定义的行为进行处理的一组功能的组件,基本上的实现都是默 认情况下关闭所有的通过型访问,只开放允许访问的策略,会将希望外网访问的主机放在DMZ

防火墙

边界安全

边界安全是指通过一系列保护措施保护计算机网络和系统的周边区域,防止未经授权的访问或者攻击,而边界安全设备则分为防火墙,网闸两种,至于其他的多重安全网关技术,数据交换网技术等则是在这两种设备之上组合搭建起来的。

什么是防火墙?

防火墙是指设置在不同网络(如可信任的企业内部网和不可信的公共网)或网络安全域之间的一系列部件的组合。它可以通过监测、限制、更改跨越防火墙的数据流,尽可能地对外部屏蔽网络内部的信息、结构和运行状况,以此来实现网络的安全保护。

简单理解就是一种协助确保信息安全的设备,会依照特定的规则,允许或是限制传输的数据通过。

!!#00ffff 补充拓展:防水墙!! 防水墙 广泛意义上的防水墙:防水墙(Waterwall),与防火墙相对,是一种防止内部信息泄漏的安全产品。 网络、外设接口、存储介质和打印机构成信息泄漏的全部途径。防水墙针对这四种泄密途径,在事前、事 中、事后进行全面防护。其与防病毒产品、外部安全产品一起构成完整的网络安全体系。

防火墙作用

1.控制:在网络连接点上建立一个安全控制点,对进出数据进行限制。 2.隔离:将需要保护的网络与不可信任网络进行隔离,隐藏信息并进行安全防护。 3.记录:对进出数据信息 进行记录。

防火墙分类

1.按照保护范围划分

  • 主机防火墙:服务范围当前主机
  • 网络防火墙:服务范围为防火墙一侧的局域网 2.按照实现方式划分
  • 硬件防火墙:在专用硬件级别时间部分的功能的防火墙 :华为 天融信 绿盟 深信服等
  • 软件防火墙:运行于通用硬件平台之上的防火墙应用软件

3.网络协议划分

  • 网络层防火墙:OSI模型下4层,又称为包过滤防火墙
  • 应用层防火墙/代理服务器:proxy 代理网关,OSI模型七层。 包过滤防火墙 网络层对数据包进行选择,选择的依据是系统内设置的过滤逻辑,被称为访问控制列表(ACL),通过检查数据流中每个数据的源地址,目的地址,所用端口号和协议状态等因素,或他们的组合来确定是否 允许该数据包通过 优点:对用户来说透明,处理速度快且易于维护 缺点:无法检查应用层数据,如病毒等 应用层防火墙 应用层防火墙/代理服务型防火墙,也称为代理服务器(Proxy Server) 将所有跨越防火墙的网络通信链路分为两段 内外网用户的访问都是通过代理服务器上的“链接”来实现优点:在应用层对数据进行检查,比较安全 缺点:增加防火墙的负载 提示:现实生产环境中所使用的防火墙一般都是二者结合体,即先检查网络数据,通过之后再送到应用 层去检查

linux防火墙iptables

Linux防火墙是由Netfilter组件提供的,Netfilter工作在内核空间,集成在linux内核中 而iptables 由软件包iptables提供的命令行工具,工作在用户空间,用来编写规则,写好的规则被送往netfilter,告诉内核如何去处理信息包。

netfilter:属于“内核态”又称内核空间(kernel space)的防火墙功能体系 iptables :属于“用户态”(User Space, 又称为用户空间)的防火墙管理体系。 可以增 删 改 插入 过滤表中的规则。

四表五链

iptables是基于内核的防火墙,其中内置了raw、mangle、 nat和filter四个规则表。且规则配置后,立即生效,不需要重启服务(修改时慎重)

表(table)将处理同一类型的数据包规则聚合在一起。内核中内置有4张表,分别是rawmanglenatfilter。每一张表都只包含同一类型的数据包规则,比如nat表只包含与网络地址转换相关的规则。

链(chain)每一张表包含若干链,其规定了相关规则在什么时候执行。内核中内置有5条链,分别对应netfilter提供的5个Hook点。链能够让管理员在数据包传输过程中的某一个点通过相关规则控制数据包的走向。

规则(rules):规则存在于链中,每一条链包含若干规则。当链被调用时,数据包处理函数将按照顺序依次匹配对应链中的所有规则。每条规则都由匹配部分+动作部分组成,如果数据包满足匹配规则,则会执行相关动作对数据包进行处理。

总结:表中有链,链中有规则 table优先级:由高到低排列为 当有多个table包含同一类型的chain时,所有的table都会按照上面table优先级被遍历,执行table中实际的chain下的规则。

raw ----> mangle ----> nat ----> filter

Linux内核内置的表其实有五个,分别为:filter、nat、mangle、raw、security。 | 表名 | 作用 | | ------ | ------ | | filter(常用) | 过滤规则表,根据预定义的规则过滤符合条件的数据包,默认表 | | nat(常用) | network address translation 地址转换规则表 | | mangle | 修改数据标记规则表 | | raw | 关闭启用的连接跟踪机制,加快封包穿越防火墙速度 | | security | 用于强制访问控制ACL 网络规则。 |

Raw iptables提供一个有状态的防火墙,基于netfilter上建立了连接跟踪的特性,即connection tracking,简称conntrack。iptables在处理数据包时都会依赖之前已经判断过的数据包。例如一条NAT记录,在第一次处理过后就会被存储在conntrack的哈希表中,下次有相同的数据包,则复用处理结果。 raw表提供的功能很简单:提供且仅提供一个让数据包绕过连接跟踪的框架

Mangle mangle表提供修改数据包IP头部的功能,例如,修改数据包的TTL等。此外,mangle表中的规则还可以对数据包打一个仅在内核内有效的标记(mark),后续对于该数据包的处理可以用到这些标记。

Nat nat表顾名思义是用来做网络地址转换的。当数据包进入协议栈后,nat表中的相关规则将决定是否修改以及如何修改数据包的源/目标地址,从而改变数据包被路由的行为。nat表通常用于将数据包路由到外部网络无法直接访问到的局域网络中。

应用场景: - 企业路由或者网关主机做SNAT,实现共享上网(通过POSTROUTING链) - 做内部网络和外部网络的IP地址一对一映射,常用于dmz区域(通过PREROUTING链) - 硬件防火墙映射IP到内部服务器; - 可以做单个端口的映射,直接将外部的80相关端口映射到内部Web服务器非80端口上。

Filter filter表是iptables中最常用的表,用来判断一个数据包是否可以通过。在防火墙领域,filter表提供的功能通常被称为“过滤”包。这个表提供了防火墙的一些常见功能。Filter表负责的主要是和主机自身相关的数据包处理手段,是真正负责主机防火墙功能的一张表。

应用场景:主机防火墙

Security ecurity表的作用是给数据包打上SELinux标记。SELinux以及可以解读SELinux安全上下文的系统在处理由security表做了标记的数据包时,行为会相应做出改变。

| 链 | 作用 | | ------ | ------ | | INPUT | 处理入站数据包,匹配目标IP为本机的数据包 | | OUTPUT | 处理出站数据包,一般不在此链上做配置 | | FORWARD | 处理转发数据包,匹配流经本机的数据包 | | PREROUTING | 进行路由选择前处理数据包,用来修改目的地址,用来做DNAT。 | | POSTROUTING | 在进行路由选择后处理数据包,用来修改源地址,用来做SNAT。 | image 内核中数据包的传输过程

  1. 当一个数据包进入网卡时,数据包首先进入PREROUTING链,内核根据数据包目的IP判断是否需要 转送出去
  2. 如果数据包是进入本机的,数据包就会沿着图向下移动,到达INPUT链。数据包到达INPUT链后, 任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包经过OUTPUT链,然后到达
  3. 如果数据包是要转发出去的,且内核允许转发,数据包就会向右移动,经过FORWARD链,然后到达POSTROUTING链输出

三种报文流向 主机防火墙:

  • 流入本机:PREROUTING --> INPUT-->用户空间进程
  • 流出本机:用户空间进程 -->OUTPUT--> POSTROUTING

网络型防火墙(需要经过防火墙转发数据包)

  • 转发:PREROUTING --> FORWARD --> POSTROUTING

各表中包含的链。 image

链中匹配规则

  • 自上向下依次进行检查匹配,意境匹配立即停止(个别除外)
  • 修改后,立即生效
  • 若在该链内找不到相匹配的规则,则按该链的默认策略处理(未修改的状况下,默认策略为允许 全部黑名单)

iptbales实际操作使用

1.操作前准备

安装软件

#centos7默认是firewalld 使用前需要关闭 并且安装iptables 
[root@sv1 ~]# systemctl stop firewalld #关闭防火墙
# systemctl disable  --now  firewalld.service 开机不自启 立即关闭。
[root@sv1 ~]# yum install iptables-services.x86_64  iptables -y 
#安装软件iptables 
[root@sv1 ~]# rpm -q iptables
iptables-1.4.21-18.0.1.el7.centos.x86_64

2.了解规则

规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“!!#00ff00 如果数据包头符合这样的条件,就这样处理这个数据包!!”。规则存储在内核空间的信息 包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。 当!!#00ff00 数据包与规则匹配时!!,iptables就根据规则所定义的方法来处理这些数据包,如!!#00ff00 放行(accept),拒绝(reject)和丢弃(drop)!!等。配置防火墙的主要工作是添加,修改和删除等规则。 规则表(实际使用中大写): | 规则类型| 效果 | | ------ | ------ | | match | 匹配,符合指定的条件,比如指定的ip地址和端口 | | drop | 丢弃,当数据包到达时 简单丢弃 不做任何处理| | accept | 接受,接受数据包,让其通过 | | reject | 拒绝,和丢弃类似,但它还会向发送这个包的源主机发送错误消息,消息可以指定,也可以自动产生 | | target | 目标,指定的动作 说明如何处理,比如:丢弃,接受,或拒绝 | | jump | 跳转,指定另一个链,表示要跳转到那个链上。 | | rule | 规则,一个或多个匹配及其对应的目标。 | | log | 日志,文件中记录日志信息,然后将数据包传递给下一条规则 | | snat | 修改数据包的源地址 | |dnat|修改数据包的目的地址。 |MASQUERAD|装成一个非固定公网IP地址。

3.基本语法

iptables的基本语法格式 iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转]

[root@sv1 ~]# iptables -t filter  -A INPUT -s 192.168.64.64 -j DROP 

#表名、链名:用于指定iptables命令所操作的表和链
命令选项:用于指定管理iptables规则的方式(比如:插入、增加、删除、查看等)
条件匹配:用于指定对符合什么样 条件的数据包进行处理
目标动作或跳转:用于指定数据包的处理方式 ,匹配"rule"进行处理
# -t   nat  filter    如果不指定  默认是filter
选项、链名、控制类型使用大写字母,其余均为小写。

4.命令选项

| 控制选项 | 效果 | | ------ | ------ | | -A | 在指定链的末尾添加一条新的规则如,iptables -A INPUT | | -D |删除,指定链中的某一条规则,可以按规则序号和内容删除 如:iptables -t nat -D INPUT 2 | | -l| 在指定链中插入一条新的规则,默认在第一行添加,iptables -I INPUT | | -P | 指定默认规则 如:iptables -P OUTPUT ACCEPT | | -R | 修改、替换(replace)指定链中的某一条规则,可以按规则序号和内容替换 | | -p |服务名称 icmp tcp | | -L | 列出(list)指定链中所有的规则进行查看(默认是filter表,如果列出nat表的规则需要添加-t,即iptables -t nat -L) | | -n | 所有字段以数字形式显示(比如任意ip地址是0.0.0.0而不是anywhere,比如显示协议端口号而不是服务名) iptables -L -n,iptables -nL,iptables -vnL (查看) | | -N |新建一条用户自己定义的规则链 | | -v |查看规则表详细信息,常跟-L一起使用 | | -V | 查看版本,清除链中所有规则如:iptables -F | | -F |清空 | | -X |删除指定表中用户自定义的规则链如: iptables -X | | -E | 重命名用户定义的链,不改变链本身 | |-Z | 将所有表的所有链的字节和数据包计数器清零 iptables -Z | | -S | 看链的所有规则或者某个链的规则/某个具体规则后面跟编号 | | -h | 帮助 |

匹配条件: -s:源ip地址,或者源网段 -d:表示目标ip地址,或者目标网段 -p:指定协议,如tcp、udp、icmp、dhcp等等 --sport:表示源端口,基于协议的,所以是-p的子命令选项 --dport:表示目标端口,基于协议的,所以是-p的子命令选项 -i:表示流量流入的网卡 -o:表示流量流出的网

5.保存规则

iptables-save把规则保存到文件中,再由目录rc.d下的脚本(/etc/rc.d/init.d/iptables)自动装载 使用命令iptables-save来保存规则。 一般用: iptables-save > /etc/sysconfig/iptables 生成保存规则的文件/etc/sysconfig/iptables, 也可以用: service iptables save 它能把规则自动保存在/etc/sysconfig/iptables中。 当计算机启动时,rc.d下的脚本将用命令iptables-restore调用这个文件,从而就自动恢复了规则。

6.实际操作

添加新的防火墙规则

[root@sv1 ~]# iptables -t filter -A INPUT -p icmp -j REJECT  #不允许任何ping。
[root@sv1 ~]# iptables -vnL #查看规则表
[root@sv1 ~]# iptables -I INPUT 2 -p tcp --dport 22 -j ACCEPT 
iptables: Index of insertion too big.  #没有序号1的时候 不能直接插入序号2
[root@sv1 ~]# iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT

image

查看规则列表

[root@sv1 ~]# iptables -vnL #查看规则表
[root@sv1 ~]# iptables -n -L INPUT  #查看对应链里面的规则
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     icmp --  0.0.0.0/0  

替换 删除 清空规则列表

[root@sv1 ~]# iptables -R INPUT 1 -p icmp -j ACCEPT #替换 允许本机被ping 
root@sv1 ~]# iptables -n -L  INPUT  
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0  
[root@sv1 ~]# iptables -D INPUT 1 #删除链下面 对应序号的规则

image

清空规则列表

iptables -F INPUT

常用的黑白名单规则

[root@sv1 ~]# iptables -P FORWARD DROP  #默认规则修改为丢弃所有数据包 
内容大纲
批注笔记
📚iptables
ArticleBot
z
z
z
z
主页
会议室
Git管理
文章
云文档
看板