1.前言
当一个来自网络上的连接要求进入我们的主机时,这个网络数据包在进入主机实际取得数据的整个流程是怎样的呢?
了解了整个流程之后,你才会发现,原来系统操作的基本概念如此重要,这样才能知道如何保护我的主机安全
2.网络数据包进入主机的流程
(1)经过防火墙的分析
- Linux系统有内建的防火墙机制,连接能不能成功首先要通过防火墙才行
- 默认的linux防火墙有两个机制,这两个机制都是独立存在的,因此我们就默认为有两个防火墙
- 第一层是数据包过滤式的Net Filter防火墙
- 第二层是通过软件管理的TCP Wrappers防火墙
数据包过滤防火墙:IP Filtering 或者 Net Filter
要进入Linux本机的数据包都会先通过Linux内核的预置防火墙,也就是Net Filter
也就是iptables这个软件所提供的防火墙功能,为什么叫做数据包过滤防火墙呢?
它主要是针对TCP/IP的数据包头部来进行过滤的机制
主要分析的是OSI的第二、三、四层
主要控制的是MAC、IP、ICMP、TCP与UDP的端口与状态(SYN、ACK等等)
第二层防火墙
通过Net Filter之后,网络数据包会开始接受Supper Daemons以及TCP Wrappers的检验
其实也就是/etc/hosts.allow 与 /etc/hosts.deny的配置文件功能
其实这个功能也就是针对TCP的Header进行再次分析
同样也可以设置一些机制来过滤某些IP或者Port,好让来自源端的数据包通过检验或者被丢弃
总结:通过防火墙机制,我们可以将大部分来自因特网的垃圾链接丢弃
只允许自己开放的服务链接进入本机,从而达到最基础的安全防护
(2)服务的基本功能
内置的防火墙是linux的内建功能,但是防火墙主要管理的是MAC、IP、Port等数据包头部方面的信息
如果想要某些目录可以进入,某些目录不可以进入,那就需要通过权限以及服务器软件提供相关的功能了
(3)SELinux对网络服务的详细权限控制
为了避免上一个步骤的权限误用,或者是程序有问题造成的安全问题,因此Security Enhanced Linux(安全强化Linux)就发挥功能了
selinux可以针对网络服务的权限来设置一些规则,让程序能够拥有的功能有限
因此当用户的文件权限设置错误,以及程序有问题的时候,即使使用的是root权限,改程序能够执行的操作也是被限制的
(4)使用主机的文件系统资源
我们使用浏览器连接到WWW主机最主要的目的是读取主机的WWW数据了
WWW数据其实就是文件,因此网络数据包最终是要向主机获取文件系统数据的
(5)其余步骤
除此之外,linux以及相关的软件都还具有支持登录文件记录的功能
为了记录历史过程,以方便管理者在未来的错误查询与入侵检测,良好的分析日志文件的习惯一定要建立
尤其是/var/log/messages与/var/log/secure这些文件
总结:只有知道了对方想要怎么破坏,我们才能够想出办法来增强系统的安全性