文章目录
四、防火墙
功能:主机或网络的边缘,对于进出的报文根据事先定义的规则进行检查,将那些能够被规则匹配到的报文做出相应处理
1.防火墙分类
1.1 按逻辑分类
-
主机防火墙
针对单主机进行防护
-
网络防火墙
处于网络边缘,针对网络入口进行防护,服务于背后的局域网
1.2 按物理分类
-
硬件防火墙
在硬件级别实现防火墙功能,性能高,价格高
-
软件防火墙
软件管理防火墙功能逻辑,性能低,价格低
2.程序管理机制tcp_wrapper
tcp_wrapper
tcp_wrapper工作在内核空间和应用程序中间的库层次中。在内核接收到数据包准备传送到用户空间时都会经过库层次,对于部分(只是部分)应用程序会在经过库层次时会被wrap库文件阻挡下来检查一番,如果允许通过则交给应用程序。
-
查看sshd是否支持wrapper
ldd $(which sshd) | grep wrap
[root@localhostr ~]#ldd /usr/sbin/sshd | grep wrap
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f5ae884e000)
-
通过hosts.allow和hosts.deny控制服务访问
格式
-
daemon_list: client_list [:options]
-
"daemon_list:"的表示方法
sshd:
sshd,vsftpd,in.telnetd:
ALL:
daemon@host: 控制连接某IP的服务
-
"client_list"的表示方法
单IP:192.168.100.8
网段:两种写法:"172.16."和10.0.0.0/255.0.0.0
主机名或域匹配:fqdn或".a.com"
宏:ALL、KNOWN、UNKNOWN、PARANOID、EXCEPT
-
:options的表达方式
ALLOW和DENY可以分别写入deny文件和allow文件,表示在allow文件中拒绝在deny文件中接受
:ALLOW
:DENY
:spawn
- spawn表示启动某程序的意思(/etc/inittab中的respawn表示重启指定程序)。例如启动一个echo程序。
- in.telnetd: 172.16 :spawn echo “we are good $(date) >> /var/log/telnetd.log”
-
-
tcpwrapper的检查顺序
hosts.allow --> hosts.deny --> 允许(默认规则)
3.数据包过滤机制Netfilter
3.1 iptables(CentOS 6)
3.1.1 netfilter(内核空间)
-
netfilter也是以模块化的形式存在于Linux中,所以每添加一个和netfilter相关的模块,代表着netfilter就多一个功能。
-
存放netfilter模块的目录
/lib/modules/$kernel_ver/kernel/net/{netfilter,ipv4/netfilter,ipv6/netfilter}。
$kernel_ver代表内核版本号。
-
hooks functions
钩子函数
- 每个钩子函数上可以放置N条规则,每条钩子上的多条规则被称为链(CHAIN),
每个功能包含多个链,被称为表(TABLE)
组成
- PREROUTING 进入本机后路由决策之前
- INPUT 到达本机内部
- OUTPUT 由本机发出
- FORWARD 由本机转发
- POSTROUTING 路由决策之后,离开主机之前
- 每个钩子函数上可以放置N条规则,每条钩子上的多条规则被称为链(CHAIN),
3.1.2 iptables(用户空间)
- 数据包处理流程图