1.1、防火墙
1、防火墙的定义
所谓防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的界面上 构造的保护屏障.是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使 Internet 与 Intranet 之间建立起一个安全网关(Security Gateway),从而保护内部网免受非法用户的侵入,防火 墙主要由服务访问规则、验证工具、包过滤和应用网关 4 个部分组成,防火墙就是一个位于计算机和它所连接的网络之间的软件或硬件(其中硬件防火墙用的较少,例如国 防部以及大型机房等地才用,因为它价格昂贵)。该计算机流入流出的所有网络通信均要经过此防火墙。
2、防火墙的功能
防火墙对流经它的网络通信进行扫描,这样能够过滤掉一些攻击,以免其在目标计算机上被执行。防火墙 还可以关闭不使用的端口。而且它还能禁止特定端口的流出通信,封锁特洛伊木马。最后,它可以禁止来自 特殊站点的访问,从而防止来自不明入侵者的所有通信。
3、以设备划分防火墙的种类
1):软件防火墙
软件防火墙就是保护计算机的一套软件,装在计算机里面,以提供保护计算机的功能。如用 Linux 主机 架设一个防火墙。
2):硬件防火墙
硬件防火墙主要是由厂商设计好的硬件,里面有自己的操作系统,以提供封包过滤机制,故性能较佳。
4、以技术划分防火墙
1):包过滤型
主要依据是网络中的分包传输技术。包过滤技术的优点是简单实用,实现成本较低
2):网络地址转换
将封包中的来源或者目的 IP 进行更改,可以使私有网络连上互连网
3):代理性防火墙
可以代理客户端将需要的资料进行查找并返回给客户端,安全性较高,但是性能要求较高
4):监测型防火墙
可以对各个网络层进行主动的数据分析,安全性极高,但性能要求很高
5、Linux 下的防火墙软件
Linux 防火墙直接由内核进行处理,安全性高,不同的 Linux 内核使用的防火墙机制 内核版本 使用的软件
2.0 ipfwadm
2.2 ipchains
2.4 与 2.6 iptables
1.2、iptables
1、iptables 介绍
iptables 是建立在 netfilter 架构基础上的一个包过滤管理工具。
用户通过 /sbin/iptables 命令来管理 iptables,和 route 命令相同,iptables 命令的效果在重新启动以后就不再有效。
可以使用 /etc/rc.d/init.d/iptables save 将当前 iptables 规则写到 /etc/sysconfig/iptables 文 件中,那么每次开机时/etc/rc.d/init.d/iptables start 命令会使 /etc/sysconfig/iptables 中的规 则生效。
2、iptables 防火墙框架图
3、表
iptables 是由几张表所组成,每张表又由几条链组成,每张表负责不同的封包处理机制,每条链负责不 同的封包走向,具体采取的策略由链里的规则设定
filter 表: 用于过滤封包
Nat 表 : 用于做地址转换
mangle 表: 允许改变包的内容来进一步矫正包
4、链
INPUT 链: 存在于 filter 表,主要用于处理进入本机的封包
OUTPUT 链: 存在于 filter 表,主要用于处理离开本机的封包
FORWARD 链: 存在于 fileter 表,主要用于处理穿过本机的封包
PREROUTING 链: 存在于 nat 表,主要用于修改目的地址(DNAT)
POSTROUTING 链: 存在于 nat 表,主要用于修改来源地址(SNAT)
1.3、iptebles 文件
1、防火墙配置保存文件
/etc/sysconfig/iptables
2、防火墙配置保存命令
service iptables save
3、防火墙的启动/停止/重启
service iptables start
service iptables stot
service iptables restart
1.4、iptables 的配置
1、iptables 的标准语法
iptables [-t table] 命令 [chain] [rules] [-j target]
table——指定表名
NAT 和一般的 mangle 用 -t 参数指定要操作哪个表。filter 是默认的表,如果没有 -t 参数,就默认对
filter 表操作。
命令——对链的操作命令
chain——链名
rules——规则
target——动作如何进行
example:
iptables -A INPUT -p icmp -j DROP
设置 INPUT 规则,将所有基于 icmp 协议的数据包全部丢弃
2、对链的操作
2、对链的操作
-L 列出当前的 iptables 的规则
-vnL 列出所有 iptables 相关规则的详细参数
-A 追加一条规则(默认添加道最后)
iptables -A INPUT -s 200.200.200.200 -j DROP 追加一条 INPUT 记录,将源目的地址为200.200.200.200 的数据包丢弃
-I 插入一条规则
iptables -I INPUT 1 -s 200.200.200.200 -j DROP 插入一条 INPUT 记录,将源目的地址为200.200.200.200 的数据包丢弃
-D 删除一条规则
iptables -D INPUT 1
iptables -D INPUT -s 200.200.200.200 -j DROP
-P 设置某条链的默认规则
iptables -P OUTPUT DROP 设置所有发送的数据包丢弃
-F 清空规则
iptables -F 清空所有 iptables 规则
3、操作命令
按网络接口匹配:
-i eth0 匹配数据进入的网络端口
-o eth0 匹配数据流出的网络端口
按来源目的地址匹配:
-s ip 匹配来源 IP
-d ip 匹配目的 IP
example:
iptables -A INPUT -i eth0 –s 200.200.200.200 –j DROP
在 INPUT 链里追加一条规则,所有从 eth0 口进入的源地址为 200.200.200.200 的数据包全部丢弃
按协议匹配:
协议可以是 TCP,UDP,ICMP,也可以不加
example:
iptables –A INPUT -p tcp -s 200.200.200.200 -j ACCEPT
在 INPUT 链里追加一条规则,所有源地址为 200.200.200.200 的基于 tcp 协议的数据包允许通过
动作处理:
-j ACCEPT 允许封包通过而不拦截
-j DROP 不允许封包通过
指定碎片:
在 TCP/IP 通讯中,每个网络接口都有一个最大的传输单元(MTU),用来定义了通过数据包大小的最大范 围,如果数据大于 MTU 时,系统会将大数据包分割成多个小数据包来传输(我们把这些包称为 IP 碎片), 接收方再对数据进行重组,来还原整个包。
在进行包过滤的时候,IP 碎片会导致一个问题,第一个数据包会包含完整的包头信息,而后续的数据包 只有部分包头信息,当存在这样一条规则的时候
iptables -A FORWARD -p tcp -s 200.200.200.200/24 -d 200.200.200.1 –dport 80 -j ACCEPT
iptables -P FORWARD DROP
系统会把第一个以后的包过滤掉
我们可以添加一条规则来解决这个问题
iptables -A FORWARD -f -s 200.200.200.200/24 -d 200.200.200.1 -j ACCEPT
指定非:
在某些选项前加上!来表示非指定值
example: -s -!200.200.200.1/24 代表除 200.200.200.1 以外的 IP 地址
-p -!icmp 代表除了 icmp 以外的协议。