网站建设如何上传文件,wordpress列表自定义数据表,泰安房产交易信息网,网站建设论坛快速建站目录安全技术Netfilter防火墙工具介绍iptablesfirewalldnftablesiptables的组成概述netfilter与iptables关系iptables的四表五链结构介绍iptables安装iptables的命令格式数据包的常见控制类型iptables 命令常用管理选项添加规则删除规则修改规则 #xff08;不推荐使用#x…
目录安全技术Netfilter防火墙工具介绍iptablesfirewalldnftablesiptables的组成概述netfilter与iptables关系iptables的四表五链结构介绍iptables安装iptables的命令格式数据包的常见控制类型iptables 命令常用管理选项添加规则删除规则修改规则 不推荐使用显示匹配IP范围匹配备份与还原iptables规则设置SNAT和DNATtcpdump抓包工具的运用安全技术
入侵检测系统Intrusion Detection Systems 特点是不阻断任何网络访问量化、定位来自内外网络的威胁情况主要以提供报警和事后监督为主提供有针对性的指导措施和安全决策依据,类似于监控系统,一般采用旁路部署默默的看着你方式。入侵防御系统Intrusion Prevention System 以透明模式工作分析数据包的内容如溢出攻击、拒绝服务攻击、木马、蠕虫、系统漏洞等进行准确的分析判断在判定为攻击行为后立即予以阻断主动而有效的保护网络的安全一般采用在线部署方式。必经之路防火墙 FireWall 隔离功能工作在网络或主机边缘对进出网络或主机的数据包基于一定的规则检查并在匹配某规则时由规则定义的行为进行处理的一组功能的组件基本上的实现都是默认情况下关闭所有的通过型访问只开放允许访问的策略,会将希望外网访问的主机放在DMZ (demilitarized zone)网络中。防水墙 广泛意义上的防水墙防水墙Waterwall与防火墙相对是一种防止内部信息泄漏的安全产品。 网络、外设接口、存储介质和打印机构成信息泄漏的全部途径。防水墙针对这四种泄密途径在事前、事中、事后进行全面防护。其与防病毒产品、外部安全产品一起构成完整的网络安全体系。 (华为的ensp就是类似与防水墙不透明的工作你干什么都会记录但是你自己不知道)
传输层 端口 防火墙 网络层 ip 路由器 三层 数据链路层 mac 交换机
按保护范围划分 主机防火墙服务范围为当前一台主机 网络防火墙服务范围为防火墙一侧的局域网
按实现方式划分: 硬件防火墙在专用硬件级别实现部分功能的防火墙另一个部分功能基于软件实现 如华为山石hillstone,天融信 启明星辰绿盟深信服, PaloAlto , fortinet, Cisco, Checkpoint NetScreen(Juniper2004年40亿美元收购)等 软件防火墙运行于通用硬件平台之上的防火墙的应用软件Windows防火墙
按网络协议划分 网络层防火墙OSI模型下四层又称为包过滤防火墙 应用层防火墙/代理服务器proxy 代理网关OSI模型七层
包过滤防火墙 网络层对数据包进行选择选择的依据是系统内设置的过滤逻辑 被称为访问控制列表ACL通过检查数据流中每个数据的源地址 目的地址所用端口号和协议状态等因素或他们的组合来确定是否允许该数据包通过
优点对用户来说透明处理速度快且易于维护 缺点无法检查应用层数据如病毒等
应用层防火墙 应用层防火墙/代理服务型防火墙也称为代理服务器Proxy Server) 将所有跨越防火墙的网络通信链路分为两段 内外网用户的访问都是通过代理服务器上的“链接”来
实现优点在应用层对数据进行检查比较安全 缺点增加防火墙的负载 提示现实生产环境中所使用的防火墙一般都是二者结合体即先检查网络数据通过之后再送到应用层去检查
Netfilter
Linux防火墙是由Netfilter组件提供的Netfilter工作在内核空间集成在linux内核中 Netfilter是Linux 2.4.x之后新一代的Linux防火墙机制是linux内核的一个子系统。 Netfilter采用模块化设计具有良好的可扩充性提供扩展各种网络服务的结构化底层框架。 Netfilter与IP协议栈是无缝契合并允许对数据报进行过滤、地址转换、处理等操作。 Netfilter官网文档https://netfilter.org/documentation/
防火墙工具介绍
iptables
由软件包iptables提供的命令行工具工作在用户空间用来编写规则写好的规则被送往netfilter告诉内核如何去处理信息包 [rootlocalhost ~]# iptables --version iptables v1.4.21
firewalld
从CentOS 7版开始引入了新的前端管理工具 软件包 firewalld firewalld-config
管理工具 firewall-cmd 命令行工具 firewall-config 图形工作
nftables
此软件是CentOS 8 新特性,Nftables最初在法国巴黎的Netfilter Workshop 2008上发表然后由长期的 netfilter核心团队成员和项目负责人Patrick McHardy于2009年3月发布。它在2013年末合并到Linux内核中自2014年以来已在内核3.13中可用。
它重用了netfilter框架的许多部分例如连接跟踪和NAT功能。它还保留了命名法和基本iptables设计的 几个部分例如表链和规则。就像iptables一样表充当链的容器并且链包含单独的规则这些规 则可以执行操作例如丢弃数据包移至下一个规则或跳至新链。 从用户的角度来看nftables添加了一个名为nft的新工具该工具替代了iptablesarptables和ebtables中的所有其他工具。从体系结构的角度来看它还替换了内核中处理数据包过滤规则集运行时评估的那些部分。
iptables的组成概述
Linux的防火墙体系主要工作在网络层针对数据包实施过滤和限制属于典型的包过滤防火墙或称为网络层防火墙。 Linux系统的防火墙体系基于内核编码实现具有非常稳定的性能和高效率也因此获得广泛的应用。
netfilter/iptablesIP信息包过滤系统它实际上由两个组件 netfilter 和 iptables组成。 主要工作在网络层针对IP数据包体现在对包内的IP地址、端口等信息的处理。
通信五元素: 源/目的 端口 源/目的 IP 协议tcp/udp SCTP在网络连接两端之间同时传输多个数据流的协议。SCTP提供的服务与UDP和TCP类似 通信四元素源/目的 端口 源/目的 IP
netfilter与iptables关系
netfilter 属于“内核态”又称内核空间kernel space的防火墙功能体系。 linux 好多东西都是内核态 用户态 那我们运维人员关注的是用户态 内核我们关注不是很多 内核基本是我们开发人员关心的事情是内核的一部分 由一些信息包过滤表组成这些表包含内核用来控制信息包过滤处理的规则集。
iptables : 属于“用户态”(User Space 又称为用户空间)的防火墙管理体系。 是一种用来管理Linux防火墙的命令程序它使插入、修改和删除数据包过滤表中的规则变得容易通常位于/sbin/iptables目录下。 netfilter/iptables后期简称为iptables。 iptables是基于内核的防火墙其中内置了raw、mangle、 nat和filter四个规则表。 表中所有规则配置后立即生效不需要重启服务。
iptables的四表五链结构介绍
iptables由四个表table和五个链chain以及一些规则组成SELinux也是一个表但它是独立的不在我们讨论的范围内 四个表tablefilter、nat、mangle、raw
filter过滤规则表根据预定义的规则过滤符合条件的数据包,默认表 natnetwork address translation 地址转换规则表 mangle修改数据标记位规则表 raw关闭启用的连接跟踪机制加快封包穿越防火墙速度
#security也算一个表 security用于强制访问控制MAC网络规则由Linux安全模块如SELinux)实现 #了解即可
优先级由高到低的顺序为 security --raw–mangle–nat–filter
四表 iptables规则分为四个表 Filter表用于过滤数据包可以控制数据包的进出以及是否接受或拒绝数据包。 NAT表用于网络地址转换可以改变数据包的源地址和目标地址以便实现不同的网络连接。 Mangle表用于修改数据包的头部信息可以更改数据包的TTL、QoS等信息。 Raw表用于控制数据包的状态跟踪可以决定是否跳过后续的处理流程。
除了四个表以外iptables五条链是
PREROUTING链处理数据包进入本机之前的规则。 INPUT链处理数据包进入本机的规则。 FORWARD链处理数据包转发到其他主机的规则。 OUTPUT链处理本机发出的数据包的规则一般不做处理。 POSTROUTING链处理数据包离开本机之后的规则。
在iptables中路由选择是指根据不同的目的地址将数据包路由转发到不同的网络接口
可以把这些表和链类比成一个检查站数据包需要通过这些检查站才能被接受或者拒绝。 这些规则可以帮助我们保证网络的安全性和稳定性。 内核中数据包的传输过程 当一个数据包进入网卡时数据包首先进入PREROUTING链内核根据数据包目的IP判断是否需要转送出去。 如果数据包是进入本机的数据包就会沿着图向下移动到达INPUT链。 数据包到达INPUT链后 任何进程都会收到它。本机上运行的程序可以发送数据包这些数据包经过OUTPUT链然后到达 如果数据包是要转发出去的且内核允许转发数据包就会向右移动经过FORWARD链然后到达POSTROUTING链输出
三种报文流向 流入本机PREROUTING -- INPUT–用户空间进程 httpd服务-目的转换-httpd 流出本机用户空间进程 --OUTPUT– POSTROUTING httpd服务-out-源地址 转发PREROUTING -- FORWARD -- POSTROUTING -----FOR------
nat PREROUTING 目的地址转换要把别人的公网IP换成你们内部的IP nat POSTROUTING 源地址转换要把你的内网地址转换成公网地址才能上网一般用于对外发布内网的服务
规则内的匹配顺序 自上向下按顺序依次进行检查找到相匹配的规则即停止LOG策略例外表示记录相关日志 若在该链内找不到相匹配的规则则按该链的默认策略处理未修改的状况下默认策略为允许
总结 四表五链 规则表的作用容纳各种规则链 规则链的作用容纳各种防火墙规则 总结表里有链链里有规则
iptables安装
CentOS7默认使用firewalld防火墙没有安装iptables,若想使用iptables防火墙。必须先关闭firewalld防火墙再安装iptables。
1.关闭firewalld防火墙
systemctl stop firewalld.service systemctl disable firewalld.service
2.安装iptables 防火墙
yum -y install iptables iptables-services
3.设置iptables开机启动
systemctl start iptables.service systemctl enable iptables.service
4.iptables防火墙的配置方法: 1、使用iptables命令行。 2、使用system-config-firewall centso7不能使用 centos 6可以使用
iptables的命令格式
iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]
-t如果不指定 默认是filter 表名、链名用来指定 iptables 命令所操作的表和链未指定表名时将默认使用 filter 表
管理选项:表示iptables规则的操作方式如插入、增加、删除、查看等 匹配条件:用来指定要处理的数据包的特征不符合指定条件的数据包将不会处理 控制类型指的是数据包的处理方式如允许、拒绝、丢弃等。
注意事项 不指定表名时默认指filter表 不指定链名时默认指表内的所有链一般不这么操作 除非设置链的默认策略否则必须指定匹配条件 选项、链名、控制类型使用大写字母其余均为小写
数据包的常见控制类型
对于防火墙数据包的控制类型非常关键直接关系到数据包的放行、封堵及做相应的日志记录等。 在 iptables 防火墙体系中最常用的几种控制类型如下 ACCEPT允许数据包通过。 DROP 直接丢弃数据包不给出任何回 应信息。 REJECT拒绝数据包通过必要时会给数据发送端一个响应信息。 SNAT 修改数据包的目标地址 DNAT 修改数据包的源地址 LOG 在/var/log/messages 文件中记录日志信息然后将数据包传递给下一条规则。
iptables 命令常用管理选项
管理选项 用法示例
-A 在指定链末尾追加一条 iptables -A INPUT 操作 -I 在指定链中插入一条新的未指定序号默认作为第一条 iptables -I INPUT 操作 -P 指定默认规则 iptables -P OUTPUT ACCEPT 操作 -D 删除 iptables -t nat -D INPUT 2 操作 -R 修改、替换某一条规则 iptables -t nat -R INPUT 操作 -L 查看 iptables -t nat -L 查看 -n 所有字段以数字形式显示比如任意ip地址是0.0.0.0而不是anywhere比如显示协议端口号而不是服务名 iptables -L -n,iptables -nL,iptables -vnL 查看 | -v 查看时显示更详细信息常跟-L一起使用 查看 –line-numbers 规则带编号 iptables -t nat -L -n --line-number iptables -t nat -L --line-number -F 清除链中所有规则 iptables -F 操作 -X 清空自定义链的规则不影响其他链 iptables -X -Z 清空链的计数器匹配到的数据包的大小和总和iptables -Z -S 看链的所有规则或者某个链的规则/某个具体规则后面跟编号
匹配的条件 作用 -p 指定要匹配的数据包的协议类型 -s 指定要匹配的数据包的源IP地址 -d 指定要匹配的数据包的目的IP地址 -i 指定数据包进入本机的网络接口 -o 指定数据包离开本机做使用的网络接口 –sport 指定源端口号 –dport 指定目的端口号
添加规则
添加规则的两个常用选项 -A在末尾追加规则。 -I在指定位置前插入规则。如果不指定则在首行插入 添加新的防火墙规则时使用管理选项“-A”、“-I”前者用来追加规则后者用来插入规则。 例如若要在 filter 表 INPUT 链的末尾添加一条防火墙规则可以执行以下操作其中 “-p 协议名”作为匹配条件。 iptables -F #清空规则 如果不写表名和链名默认清空filter表中所有链里的所有规则 iptables -t filter -A INPUT -p icmp -j REJECT #禁止所有主机ping本机 iptables -t filter -A INPUT -p icmp -j ACCEPT #允许ping通-A在前一条规则后添加 iptables -t filter -I INPUT 1 -p icmp -j ACCEPT #指定序号插入插入到第一条 iptables -t filter -A INPUT -p tcp -j REJECT #允许任何主机tcp iptables -I INPUT 1 -p udp -j ACCEPT #允许任何主机udp iptables -nL --line-number #查看行规则的位置 iptables -t filter -A INPUT -s 192.168.154.11 -p icmp -j REJECT#拒绝某一台主机其他的可以 iptables -t filter -A INPUT -s 192.168.154.11,192.168.154.11 -p icmp -j REJECT#拒绝多台主机 iptables -t filter -A OUTPUT -s 192.168.154.11 -p icmp -j REJECT#不允许21的数据包出去其他的就都ping不通了 iptables -t filter -A INPUT -p tcp --dport 22 -j REJECT#指定端口 iptables -t filter -A INPUT -s 192.168.154.11 -p tcp --dport 22 -j REJECT#指定IP地址的服务端口拒绝 iptables -t filter -A INPUT -s 192.168.154.11 -p tcp --dport 80 -j REJECT#禁止192.168.154.21:80的端口入访问 删除规则
D删除 1.根据序号删除内容 [rootlocalhost ~]# iptables -D INPUT 1 #删除指定的INPUT链中的第一条规则 2、内容匹配删除有两个相同的则作用为去重 如果有两个重复的规则则删除序号较小的 [rootlocalhost ~]# iptables -D INPUT -p icmp -j REJECT #删除序号小的 演示删除序号较小的 [rootlocalhost ~]# iptables -t filter -A INPUT -p icmp -j REJECT [rootlocalhost ~]# iptables -t filter -A INPUT -p icmp -j ACCEPT [rootlocalhost ~]# iptables -t filter -A INPUT -p icmp -j REJECT [rootlocalhost ~]# iptables -nL INPUT --line-number Chain INPUT (policy ACCEPT) num target prot opt source destination 1 REJECT icmp – 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable 2 ACCEPT icmp – 0.0.0.0/0 0.0.0.0/0 [rootlocalhost ~]# iptables -D INPUT -p icmp -j REJECT #第二次就时删除指定。 [rootlocalhost ~]# iptables -nL INPUT --line-numbers Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT icmp – 0.0.0.0/0 0.0.0.0/0 注意按照内容匹配删除规则只能每次删除内容相同序号较小的规则。 直到删除最后一条时才能将该规则全部清除 。 一定要报保证该匹配的内容存在且完全匹配规则才能删除不然报错。
修改规则 不推荐使用
-R 直接修改。 为了保险起见我们可以尝试着先添加一条新的规则确保新规则不会带来任何不利的影响再删除旧的规则也能达到替换的效果 [rootlocalhost ~]# iptables -t filter -A INPUT -p icmp -j ACCEPT [rootlocalhost ~]# iptables -nL INPUT --line-number #查看规则 Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT icmp – 0.0.0.0/0 0.0.0.0/0 [rootlocalhost ~]# iptables -R INPUT 1 -p icmp -j REJECT #替换 [rootlocalhost ~]# iptables -nL INPUT --line-number #ACCEPT替换成了REJECT Chain INPUT (policy ACCEPT) num target prot opt source destination 1 REJECT icmp – 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable 修改默认规则 默认策略是指四表五链中链的默认策略INPUT,FORWARD,OUTPUT,filter三条链的默认值为ACCEPT就像是设定黑名单一样默认其他的协议操作都是允许的只有指定加入的且声明权限的为DROP 或 REJECT是拒绝禁止的对象。 [rootlocalhost ~]#iptables -P INPUT DROP [rootlocalhost ~]# iptables -t filter -A INPUT -p ICMP -j ACCEPT #在主机配置一条允许的相当与设置了白名单 1.-F 仅仅是清空链中的规则并不影响 -P 设置的规则默认规则需要手动进行修改 2.-P 设置了DROP后使用 -F 一定要小心 #防止把允许远程连接的相关规则清除后导致无法远程连接主机此情况如果没有保存规则可重启主机解决
此时的解决方案有三种 第一种我的防火墙设置只是临时设置并为保存重启服务器即可
第二种操作服务器重启iptables服务
第三种进入机房操作该服务器将设置恢复重新修改规则炸
在生产中都是默认DROP
通用匹配: 网络协议、IP地址、网络接口等条件。 协议匹配: -p协议名 地址匹配: -s 源地址、-d目的地址 #可以是IP、网段、域名、空(任何地址) 接口匹配: -i入站网卡、-o出站网卡 感叹号”!”表示取反
网络协议 [rootlocalhost ~]# iptables -A INPUT ! -p icmp -j ACCEPT #除了icmp以外所有的协议都可以进入 #这是假的取反。定义的默认策略还在执行ACCEPT只有该变默认策略才能生效 [rootlocalhost ~]#iptables -P INPUT DROP #这时候才能取反 #其他的服务不受影响这个时候把策略清空所有的协议都将被DROP [rootlocalhost ~]#iptables -F #只能进虚拟机重启 IP地址 [rootlocalhost ~]# iptables -A INPUT -s 192.168.233.22 -j DROP #禁止22的数据进入 网络接口 [rootlocalhost ~]# iptables -I INPUT 1 -i ens33 -s 192.168.233.0/24 -j DROP #禁止指定的网络设备名称ens33的所有网段 #怎么使整个网段不能用指定的端口 [rootlocalhost ~]# iptables -t filter -A INPUT -s 192.168.233.0/24 -p tcp --dport 80 -j REJECT #禁止整个网段访问80端口 ICMP模块 ICMP类型可以是字符串、数字代码:
ICMP类型 含义 Echo-Request 代码为8 表示请求 Echo–Reply 代码为0 表示回显 #回复信息显示 Dest ination-Unreachable 代码为3 表示目标不可达 [rootlocalhost ~]# iptables -A INPUT -p icmp --icmp-type 8 -j REJECT #拒绝请求 其他的主机都不能ping本机,本机还是可以ping其他主机 [rootlocalhost ~]# iptables -A INPUT -p icmp --icmp-type 0 -j REJECT #拒绝回显本机ping不了其他的主机且没有任何显示 #其他的主机还是ping通本机因为出入的数据并没有被屏蔽只针对自己。 [rootlocalhost ~]# iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT ##当本机ping 不通其它主机时提示目标不可达,需要其他主机设置REJECT 在23上设置拒绝才能生效了解即可 [rootlocalhost ~]# iptables -A INPUT -s 192.168.154.10 -p icmp -j REJECT 显示匹配
1、多端口匹配 要求以“-m 扩展模块”的形式明确指出类型包括多端口、MAC地址、IP范围、数据包状态等条件 -m multiport --sport 源端口列表 -m multiport --dport 目的端口列表 [rootlocalhost ~]# iptables -A INPUT -p tcp -m multiport --dport 80,22,21,20,53 -j REJECT 多端口匹配一次性禁止多个tcp网络协议的端口匹配规则
[rootlocalhost ~]# iptables -A INPUT -p udp -m multiport --dport 53,54,55 -j ACCEP 多端口匹配一次性放通多个udp网络协议的端口匹配规则
IP范围匹配
-m iprange --src-range 源IP范围 -m iprange --dst-range 目的IP范围 [rootlocalhost ~]# iptables -A INPUT -p icmp -m iprange --src-range 192.168.233.20-192.168.233.30 -j REJECT #禁止网段内的ip地址ping主机
备份与还原iptables规则设置
我们对iptables命令行中的设置都是临时设置只要遇到服务器关机或者服务重启时所有的设置都会清空且还原为原本的设置。为此我们可以对已经测试完毕符合我们需求的防火墙设置进行备份在必要时可以一键还原
备份iptables设置
格式iptables-save /指定的文件 [rootlocalhost ~]# iptables-save /opt/iptables.bak 一键导入设置为当前防火墙设置 [rootlocalhost ~]#iptables-restore /opt/iptables.bak 修改iptables的默认设置 iptables的默认配置文件存在于 cat /etc/sysconfig/iptables 直接把配置导入配置文件cat /opt/iptables.bak /etc/sysconfig/iptables #立即生效了实验环境下了解就可以了。不要尝试 [rootlocalhost opt]# systemctl restart iptables #重启之后生效的就是配置文件中的内容操作需谨慎注意拍快照方便还原 自定义链使用 自定义链添加iptables -N custom(链名) 创建链
自定义链改名iptables -E custom(原来名称) test (新名称) 自定义链改名
创建自定义链规则iptables -t filter -I test -p icmp -j REJECT 创建自定义规则, iptables的链中添加一条对应到自定义链中才能生效
iptabales创建对应链规则然后跳转自定义链webiptables -t filter -I INPUT -p icmp -j custom
删除自定义规则链先删除iptables INPUT链中的对应关系然后删除自定义链中的规则。 iptables -D INPUT 1 iptables -D test 1
然后再用 iptables -X test 删除这个链
SNAT和DNAT
SNAT又称源地址转换。 源地址转换是内网地址向外访问时发起访问的内网ip地址转换为指定的ip地址 可指定具体的服务以及相应的端口或端口范围这可以使内网中使用保留ip地址的主机访问外部网络 即内网的多部主机可以通过一个有效的公网ip地址访问外部网络。
就是把内网地址转成指定的IP地址这个iP地址可以访问公网
DNAT目的地址转换的作用是将一组本地内部的地址映射到一组全球地址。 通常来说合法地址的数量比起本地内部的地址数量来要少得多。
私网地址只能作为源地址来访问公网IP而无法作为目标地址被其他主机访问 所以DNAT将私网中web服务器映射到公网IP使其公网IP作为目标地址被公网中主机进行访问
tcpdump抓包工具的运用
wireshark 抓包工具只在windows中使用。
tcpdump 可以在Linux系统中使用。
tcpdump是Linux系统中自带抓包工具 [rootlocalhost opt]# tcpdump tcp -i ens33 -t -s0 -c 100 and dst port 80 and src net 192.168.154.0/24 -w ./target.cap tcp∶ ip、icmp、arp、rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置用来过滤数据报的类型。 -i ens33 只抓经过接口ens33的包。
-t不显示时间戳
-s0 抓取数据包时默认抓取长度为68字节。加上-s0后可以抓到完整的数据包。
-c 100 只抓取100个数据包。
dst port ! 22 不抓取目标端口是22的数据包。
src net 192.168.154.0/24 数据包的源网络地址为192.168.154.0/24。Net网段host主机。
-w ./target.cap ∶ 保存成cap文件方便用ethereal 即wireshark分析。
进行动态抓包处理一旦遇到有指定数据包的出现开始运转 [rootlocalhost opt]# tcpdump -i ens33 -s0 -w ./ens33.cap