128
centos6.X防火墙

(1.0)防火墙机制介绍

Centos5.X 6.X的防火墙机制为什么称为iptables呢?因为这个防火墙软件里面有多个表格(table),每个表格都定义自己的默认策略与规则,且每个表用途都不同。

Centos5.X 6.X 主要表格(table)有三个 Filter(过滤器) NAT(地址转换) Mangle(破坏者)。

image.png 

默认情况下,Iptables根据功能和表的定义划分包含三个表,FilterNAT、Mangle,其中每个表又包含不同的操作链
    下面的表格展示了表和链的对应关系:

image.png 

 

(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)图解命令及参数 举例

image.png 

 

中一些参数注解:

 

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这个命令来查看防火墙规则,它会列出完整的防火墙规则,只是并没有格式化输出而已。如图六。

image.png 

 

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的好处在于容易诊断和调试网络设备或防火墙造成的问题;坏处上面也说了,你给骗子回个电话,相当于暴露了自己的服务器信息。

所以一般的建议是在上游防火墙中使用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))


这条帮助是否解决了您的问题? 已解决 未解决

提交成功!非常感谢您的反馈,我们会继续努力做到更好! 很抱歉未能解决您的疑问。我们已收到您的反馈意见,同时会及时作出反馈处理!