web安全之防⽕墙的安全配置
iptables介绍
iptables是与最新的2.6.x版本的linux内核集成的ip信息包过滤系统。如果linux系统连接到因特⽹lan、服务器或链接lan和因特⽹的代理服务器,则该服务器有利于在linux系统上更好的控制ip信息包过滤和防⽕墙配置。
neitfilter/iptables ip信息包过滤系统是⼀种强⼤的⼯具,可⽤于添加、编辑和出去规则,这些规则是在做信息包过滤时决定的防⽕墙所遵循和组成的规则。这些规则存储在专⽤的信息包过滤表中,⽽这些表集成在linux内核中。在信息包过滤表中,规则被分组放在我们所谓的链中。
隋坦netfilter/ iptables ip信息包过滤系统被称为单个实体,但实际上有两个组件netfilter和iptables组成。
neitfilter组件也称为内核空间(kernelspace),是内核⼀部分,由⼀些信息包过滤表组成,这些表包含内核⽤来控制信息包过滤处理的规则集。
iptables组件是⼀种⼯具,也成为⽤户空间(userpace),它使插⼊、修改和除去信息包过滤表中的规则变得容易。除⾮晋正在使⽤RED HAT LINUX 7.1或更⾼版本
,否则需要下载该⼯具并安装使⽤它。
包交换和状态监测
防⽕墙通常使⽤的安全控制⼿段主要有包过滤、状态监测、代理服务。包过滤服务是⼀种简单、有效的安全控制技术。它通过在⽹络间相互连接的设备上加载允许、禁⽌来⾃某些特定的原地址、⽬的地址、TCP端⼝号等规则,对通过设备的数据包经⾏检测,限制数据包进出内部⽹络。
包过滤的最⼤优点是对⽤户透明,传输性能⾼。反由于安全控制层次在⽹络层、传输层。安全控制⼒度也只限于原地址、⽬的地址和端⼝号。因⽽只能进⾏较为初步的安全监测,对于恶意的拥塞攻击、内存覆盖或病毒等⾼层次的攻击⼿段,则⽆能为⼒。
状态监测是⽐包过滤更为有效的安全控制⽅法。对新建的应⽤连接,状态监测监察与此案时⾄的安全规则,允许符合规则的连接通过,并在内存中记录下该链接的相关信息,⽣成状态表。对该连接的后续数据包,只要符合状态表就可以通过。这种防治的好处在于:由于不需要对每⼀个数据包进⾏规则检查,⽽是⼀个连接的后续数据包(通常是⼤量的数据包)通过散列算法,直接进⾏状态检查,从⽽使得性能得到较⼤提⾼:⽽且由于状态表⽰动态的,因⽽可以有选择的、动态开通1024号以上端⼝,使得安全性得到进⼀步的提⾼。
现在防⽕墙主要分为以下三种类型:包过滤、应⽤代理、状态监测
包过滤防⽕墙:现在静态包过滤防⽕墙市⾯上已经看不到了,取⽽代之的是动态包过滤技术的防⽕墙哈~
代理防⽕墙:因为⼀些特使的报⽂可以轻松突破包过滤防⽕墙的保护,⽐如⼤家知道的SYN攻击、ICMP 洪⽔攻击,所以⼀代理服务器作为专门卫⽤户保密或者突破访问限制的数据转发通道的应⽤failing防⽕墙出现了哈~ 其实⽤了⼀种应⽤协议分析的新技术。
状态监测防⽕墙:其基于动态包过滤技术发展⽽来,加⼊了⼀种状态监测的模块,近⼀点发展了 会话过滤功能,会话状态的保留是有时间限制的,此防⽕墙还可以对报的内通进⾏分析,从⽽避免开放过多的端⼝。
iptables 功能介绍
基础的操作⽅法
启动指令:service iptables start
重启指令:service iptables restart
关闭指令: service iptables stop
iptables 的表与链
iptables具有Filter.NAT,Mangle,RAW四种内建表:
1Filter表
Filter表⽰iptables的默认表,因此如果你没有⾃定义表,那么久默认使⽤filter表,它具有以下三种内件链:
INPUT链-处理来⾃外部的数据。
OUTPOT链-处理向外发送的数据。
FORWARD链-将数据转达到本机的其他⽹卡设备上。
2 NAT表
NAT 表有三种内建链:
PREROUTING 链-处理刚到达本机并在路由转发前的数据包。他会转换数据包中的⽬标IP 地址(destination ip address ),通常⽤于
DNAT(destination NAT).
POSTROUTING链-处于即将离开本机的数据包。他会转换数据包中的原IP 地址(source ip address ) ,通常⽤于SNAT(source NAT)。 OUTPUT链-处理本机产⽣的数据包。
3 Mangle 表
Mangle 表⽤于指定如何处理数据包。他能改变TCP 头总的QoS位。Mangle表具有5个内建链:
PREROUTING
OUTPUT
FORWARD
INPUT
POSTROUTING
4 Raw 表⽤于处理异常,他具有2个内建链:
PREROUTING chain
PUTPUT chain
下⾯展⽰了Iptables的三个內建表:
⼆、IPTABLES 规则(Rules)
牢记以下三点式理解iptables规则的关键:
RULES 包括⼀个条件和⼀个⽬标(target)
如果满⾜条件,就执⾏⽬标(target)中的规则或者特定值。
如果不满⾜条件,就判断下⼀条Rules
⽬标值(Target Values)
下⾯是你可以在target例指定的特殊值:
ACCEPT- 允许防⽕墙接收数据包
DROP -防⽕墙丢弃包
QUEUE-防⽕墙数据包移交发哦⽤户空间
RETURN -防⽕墙停⽌当前连接中的后续Rules .并返回到调⽤链(the calling chain)中。
如果你执⾏iptables --list你将关防⽕墙上的可⽤规则、下列说明当前系统没有定义防⽕墙,你可以看到,他显⽰了默认的filter表,以及内默认的input连弩, forward链,output链。
查看mangle表:
查看NAT表:
查看RAW表
三、清空所有iptables规则
在配置iptables之前,你通常需要⽤iptables --list命令或者iptables-save命令查看有⽆存在规则,因为有时需要删除现有的iptables规则:这两条命令式等效的。但是并⾮执⾏后就万事⼤吉了。你仍然需要检查规则是不是真的清空了,因为有linux发型版上的这个命令不会清除NAT中的规则,除此之外,此时只能⼿动清除:
四、永久⽣效
当你删除、添加规则后,这些更改并不能永久⽣效,这些规则很有可能在系统重启后恢复原样。为了让配置永久⽣效,根据平台不同,具体操作也不同,下⾯进⾏简单介绍:
1 Ubuntu
⾸先,保存现有规则:
然后新建⼀个bash 脚本,并保存到/etc/network/if-pre-up.d/⽬录下:
这样,每系统重启后Iptables规则都会被⾃动加载。
/!注意:不要尝试在。bashbrc 或者.profile中执⾏以上命令,因为⽤户通常不是root,⽽且这只能在登录时加载iptables规则。
2 CentOS,Red Hat
查看当前规则:
五、追加Iptables规则
可以使⽤iptables -A命令追加新规则,其中-A 表⽰Append。因此,新的规则将追加到链尾。
⼀般⽽⾔,最后⼀条规则⽤于丢弃(DROP)所有数据包。如果你已经有这样的规则了,并且使⽤-A参数添加新规则,那么就是⽆⽤功。
1语法
Iptables -A chain firewall-rule
-A chain -指定添加规则链
filewall-rule -具体的规则参数
2 描述规则的基本参数
以下这些规则参数⽤于描述数据包的协议、原地址、⽬的地址、允许经过的⽹络接⼝,以及如何处理这些数据包。这些描述是对规则的基本描述
-P 协议(protocol)
指定的协议,如tcp,udp,icmp等,可以使⽤all来指定所有协议。
如果不指定-P 参数,则默认是all值。这并不明智,请总是明确指定协议名称。
ubuntu网络配置可以使⽤协议(如tcp),或者协议值(⽐如6代表tcp)来指定协议。映射关系请查看/etc/protocols
还可以使⽤-protocol参数代替-P参数
-S 原地址(source)
指定数据包的原地址
参数可以使⽤ip地址、⽹络地址、主机名
例如:- s 192.168.1.101指定ip地址
例如: -s 192.168.1.10/24 指定⽹络地址
如果不指定-s参数,就代表所有地址
还可以使⽤-src或者-source
-d ⽬的地址(destination)
指定⽬的地址
参数-S 相同
还可以使⽤-dst或者-destination
-j 执⾏⽬标(jump to target)
-j 代表jump to target
-j 指定了当与规则(Rule)匹配第如何处理数据包
可能的值是ACCEPT DROP QUEUE RETURN
还可以指定其他链(Chain)作为⽬标
-i 输⼊接⼝(input interface)
-i 代表输⼊接⼝(input interface)
-i 指定了要处理来⾃哪个接⼝的数据包
这些数据包即将进⼊INPUT FORWARD PREROUTE
例如: -i etho 制定了要处理经由etho进⼊的数据包
如果不指定-i参数,那么将处理进⼊所有接⼝的数据包
如果出现! -i etho,那么将处理所有经由etho以外的接⼝进⼊的数据包
如果出现-i eth +,那么将处理所有经由eth开头进⼊的数据包
还可以使⽤-in-interface参数
-o 输出(out interface)
-o 代表 out interface
-o 指定了数据包由哪个接⼝输出
这些数据包即将进⼊FORWARD OUTPUT POSTROUTING 链
如果不指定-o etho 那么系统上的所有接⼝都可以作为输出接⼝
如果出现! -o etho ,那么将从etho以为的接⼝输出
如果出现-i eth+,那么将仅从eth开头的接⼝输出
还可以使⽤-out -interface参数
3 描述规则的扩展参数
对规则有了⼀个基本描述之后,有时候我们还希望指定宽⼝、tcp标志 ICMP类型等内容。 - sport 源端⼝(source port)针对-p tcp 与-sport ssh
/etc/services⽂件描述了上述映射关系。
从性能上将,使⽤端⼝号更好
使⽤冒号可以匹配端⼝范围,如 -sport 22:100
还可以使⽤ -source-port
--dport ⽬的端⼝(destination port)针对-p tcp 或者-p udp
参数和-sport类似
还可以使⽤-- destination-port
--tcp-flags TCP 标志针对-p tcp
可以指定由都好=分隔开的多个参数
有效值可以是:SYN ACK FIN RST URG PSH
可以使⽤all或者NONE
--icmp-type ICMP 类型针对-p icmp
-icmp-type 0 表⽰Echo Reply
-icmp-type 8 表⽰Echo
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论