centos6.X防火墙 |
(1.0)防火墙机制介绍 Centos5.X 6.X的防火墙机制为什么称为iptables呢?因为这个防火墙软件里面有多个表格(table),每个表格都定义自己的默认策略与规则,且每个表用途都不同。 Centos5.X 6.X 主要表格(table)有三个 Filter(过滤器) NAT(地址转换) Mangle(破坏者)。
默认情况下,Iptables根据功能和表的定义划分包含三个表,Filter、NAT、Mangle,其中每个表又包含不同的操作链
(2.0)常用命令介绍 1) 关闭或开启防火墙,永久性生效,重启后不会复原 开启: chkconfig iptables on 关闭: chkconfig iptables off 2) 关闭或开启防火墙,即时生效,重启后复原 开启: service iptables start 关闭: service iptables stop 3)查看防火墙的状态 service iptables status chkconfig --list iptables (3.0)图解命令及参数 举例
对图五中一些参数注解:
Table:filter #意思是查看的为filter(过滤器)这个表,这个有一般有至少有两个链(chain)INPUT OUTPUT。
Chain INPUT (policy ACCEPT) #Chain是链 这个链与INPUT(想要进入主机的数据包)有关,policy就是默认策略,默认策略为可接受。
target #代表要进行的操作 ACCEPT放行 REJECT拒绝 DROP丢弃 prot #代表使用的数据包协议,主要有TCP UDP ICMP 3种数据包格式。 opt #额外选项说明 source #代表此规则针对哪个来源IP限制。 destination #代表此规则针对哪个目标IP进行限制。
图五中七条规则做下解释 1),只要数据包状态为 state、RELATED、ESTABLISHED 就予以接受。
2),只要是数据包协议是ICMP类型的,就予以放行。
3),无论任何来源的(0.0.0.0/0)且要去任何目标的数据包,不论任何数据包格式(prot为all),一律都接受。
4),只要是传给端口22的主动式连接TCP数据包就接受。5)6)同理。
7)全部数据包信息一律拒绝。 注意:有趣的是第三条规则,怎么会所有的数据包信息都予以接受呢,如果都接受的话,那么后面的规则就根本没有用了。其实那个规则是仅针对每部主机都有的内部循环测试网络(lo)接口,没有列出接口就很容易搞错。可以使用iptables-save这个命令来查看防火墙规则,它会列出完整的防火墙规则,只是并没有格式化输出而已。如图六。
(4.0)iptables 详解一 软件在/etc/sysconfig/目录内
iptables [-AI 链名][-io 网络接口 ][-p 协议][-s 来源IP/网络][-d 目标IP/网络] -j [ACCEPT|DROP|REJECT] -AI 链名 针对某条链进行规则的“插入”或“累加” -A:新增一条规则,该规则增加在原规则的最后面。例如原来已经有四条规则,使用-A就可以加上第五条规则 -I:插入一条规则。如果没有指定此规则顺序,默认是插入变成第一条规则。 -D:删除一条规则。 #iptables –D INPUT 3 意思是删除第三条规则 链:有 INPUT、OUTPUT、FORWARD
-io 网络接口:设置数据包进出的接口规范 -i:数据包所进入的那个网络接口,例如 eth0、lo等接口。需与INPUT链配合 -o:数据包所传出的那个网络接口,需与OUTPUT链配合
-p 协定:设置此规则适用于哪种数据包格式 主要数据包格式有:tcp、udp、icmp、及all。
-s 来源 IP/网络:设置此规则之数据包的来源地,可指定单纯的IP或网络,例如: IP:192.168.0.100 网络:192.168.0.0/24 或 192.168.0.0/255.255.255.0 均可。 若规范为“不许”时,则加上“!”即可,例如: -s ! 192.168.0.0/24 表示不接受 192.168.0.0/24发来的数据包;
-d 目标 IP/网络:同 –s,只是这里指的目标的IP或网络。
-j 后面接操作主要操作有、接受(ACCEPT)、丢弃(DROP)、拒绝(REJECT)、记录(LOG)
--dport:目的端口 --sport:来源端口 --icmp-type 类型
注解:DROP 与REJECT的区别 “就好象骗子给你打电话,DROP就是直接拒收。REJECT的话,相当于你还给骗子回个电话。” DROP比REJECT好在节省资源,而且延缓黑客攻击的进度(因为不会给黑客返回任何有关服务器的信息);坏在容易让企业的网络问题难以排查,而且在DDoS攻击的情况容易耗尽所有的带宽。 所以一般的建议是在上游防火墙中使用REJECT,在比较危险的面向外网的基础防火墙上,使用DROP要相对安全一些。 (4.1)范例举例iptables 实际运用:
1,来自192.168.100.230 这个“恶意”来源就丢弃 iptables -A INPUT -s 192.168.100.230 -j DROP 2,允许外部数据访问本机80端口 iptables -A INPUT -p tcp --dport 80 -j ACCEPT 3,允许外部来自80端口的数据访问本机 iptables -A INPUT -p tcp --sport 80 -j ACCEPT #注意2,3例的不同 4,删除“图五”中 第5条规则 iptables -D INPUT 5 5,来自192.168.1.0/24网络15-59928端口的数据包,不允许访问本机ssh端口。 iptables -A INPUT -p tcp -s 192.168.1.0/24 --sport 15:59928 --dport ssh -j DROP 6,设置对本机的禁PING iptables -A INPUT -p icmp --icmp-type 8 -j DROP # type 8 就是 echo request (回传需求), 注意:这条规则使用的是-A添加 如果防火墙策略本身有允许icmp type 8 则这条规则不会生效,需要使用-I 这个参数插入规则。
以上规则执行后只是临时生效重启后会失效,如果要永久生效必须写入配置文件 写入防火墙规则配置文件:/etc/init.d/iptables save
dport(目标端口) 和sport(来源端口)字面意思来说很好理解,一个是数据要到达的目的端口,一个是数据来源的端口。 但是在使用的时候要分具体情况来对待,这个具体情况就是你的数据包的流动行为方式。(INPUT还是OUTPUT) 比如范例2,iptables -A INPUT -p tcp --dport 80 -j ACCEPT, 注意里面的INPUT参数,这个代表你的这条数据包的进行的 “进入” 操作! 那么这条数据包可以这么描述:凡进从外部进入本机的,数据要访问的目标端口(dport)为80,都允许以上数据行为。(这里的目标端口就是80)
再看范例3:iptables -A INPUT -p tcp -sport 80 -j ACCEPT 那么这条数据包可以这么描述:凡进从外部进入本机的,数据来源端口(sport)为80的(对方的数据包是80端口发送过来的),都允许以上数据行为。
(5.0)iptables 详解二之外挂模块
Iptables –A INPUT [-m state] [--state 状态] 选项与参数: -m:一些 iptables 的外挂模块,主要常见的有: state:状态模块 mac :网卡硬件地址 --state:一些数据包的状态,主要有 INVALID :无效的数据包,例如数据破损对的数据包状态 ESTABLISHED:已经连接成功的连接状态 NEW :想要新建立的数据包状态 RELATED :这个最常用,表示这个数据包是与主机发送出去的数据包有关。 #参考《鸟哥服务器架设篇》第275页
(5.1)范例举例iptables外挂模块实际运用 1,只要已建立连接或与已发送数据相关的数据包就予以通过,不合法数据包丢弃。 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -m state --state INVALID -j DROP 2,针对局域网内 aa:bb:cc:dd:ee:ff 主机开放其连接 iptables -A INPUT -m mac --mac-source aa:bb:cc:dd:ee:ff -j ACCEPT --mac-source 就是来源主机的mac 3,不允许本机访问117.27.159.157的80端口 (此例和外挂模块无关,补的一条举例) iptables -A OUTPUT -p tcp -d 117.27.159.157 --dport 80 -DROP
以上规则执行后只是临时生效重启后会失效,如果要永久生效必须写入配置文件 写入防火墙规则配置文件:/etc/init.d/iptables save(这点同(4)) |