📄 0240network-secure-1.htm
字号:
<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en"><html><head> <meta http-equiv="Content-Type" content="text/html; "> <meta name="Author" content="VBird"> <meta name="GENERATOR" content="Mozilla/4.5 [zh-TW] (WinNT; I) [Netscape]"> <meta name="Description" content="認識 iptables 與 TCP_Wrappers 的概念!"> <title>鸟哥的 Linux 私房菜 -- Network Secure -- iptables and TCP_Wrappers</title><!-- saved from url=(0022)http://internet.e-mail --><style> <!-- body{background-image=url(http://linux.vbird.org/VBirdLinux.jpg);background-ATTACHMENT=FIXED} --></style></head><body nosave="" background="0240network-secure-1_files/VBirdLinux.jpg"><center><center><b><font size="+2" color="#3333ff"><font face="SimSun">鸟哥的</font><font face="Times New Roman,Times"> Linux </font><font face="SimSun">与</font><font face="Times New Roman,Times"> ADSL </font><font face="SimSun">私房菜</font></font></b><br><a href="http://linux.vbird.org/" target="_top"><img src="0240network-secure-1_files/VBirdTitle2.jpg" nosave="" border="0" height="25" width="90"></a><a href="http://linux.vbird.org/linux_basic"><img src="0240network-secure-1_files/icon_system.gif" nosave="" border="0" height="25" width="90"></a><a href="http://linux.vbird.org/linux_server"><img src="0240network-secure-1_files/icon_server.gif" nosave="" border="0" height="25" width="90"></a><a href="http://linux.vbird.org/linux_security"><img src="0240network-secure-1_files/icon_security.jpg" nosave="" border="0" height="25" width="90"></a><a href="http://phorum.vbird.org/" target="_blank"><img src="0240network-secure-1_files/icon_forums.gif" nosave="" border="0" height="25" width="90"></a><a href="http://linux.vbird.org/adsl"><img src="0240network-secure-1_files/icon_adsl.gif" nosave="" border="0" height="25" width="90"></a><br><hr width="100%"></center><font size="+2" color="#3333ff" face="SimSun"><a href="http://linux.vbird.org/linux_server/0240network-secure-1.php" target="_self">认识网络安全</a></font></center><div align="right"><font size="-1" color="#3333ff" face="SimSun">最近更新日期:2003/08/23</font></div><font size="-2" color="#3333ff" face="SimSun"> </font><table bgcolor="#ffcccc" border="1" cols="1" width="100%"><tbody><tr><td><font size="-1" color="#000099">在介绍了『<a href="http://linux.vbird.org/linux_server/0110network_basic.php">网络基础</a>』、『<a href="http://linux.vbird.org/linux_server/0210port_limit.php">限制联机port number </a>』、『<a href="http://linux.vbird.org/linux_server/0220upgrade.php">网络升级套件</a>』之后,再来准备要上Internet 了吗?!如果只是想要上 Internet 去浏览,那么自然没有问题,如果是想要对Internet 开放网络服务,那么最好还是先认识一下网络安全会比较好一些。什么?套件也更新了,port 也关闭了,还需要认识什么网络安全啊?!呵呵!当然啦!因为难保我们的主机不会被新的套件漏洞以及阻断式攻击(DoS)所困扰啊!在这个章节里面,我们会稍微介绍一些基础的网络防护观念,尤其是系统管理员应该要做的事情吶!</font></td></tr></tbody></table><font size="-2" color="#000099"> </font><br><font color="#000099"><font size="+1"><a href="#TCP_IP">TCP/IP 封包进入主机的基本流程</a></font>:</font><br><font color="#000099"> :<a href="#TCP_IP_TCP">认识 TCP/IP</a></font><br><font color="#000099"> :<a href="#TCP_IP_fllow">TCP 进入本机简易流程</a></font><br><font color="#000099"><font size="+1"><a href="#attack">一些常见的攻击手法</a></font>:</font><br><font color="#000099"><font size="+1"><a href="#secure_basic">主机防护计划</a></font>:</font><br><font color="#000099"><font size="+1"><a href="#admin">网管人员的技能</a></font>:</font><br><font color="#000099"><font size="+1"><a href="#repaire">被入侵后的修复工作</a></font>:</font><br><font color="#000099"><font size="+1"><a href="#review">重点回顾</a></font>:</font><br><font color="#000099"><font size="+1"><a href="#reference">参考数据</a></font>:</font><br><font color="#000099"><font size="+1"><a href="#ex">课后练习</a></font>:</font><br><hr width="100%"><a name="TCP_IP"></a><font size="+1" color="#000099">TCP/IP封包进入主机的基本流程:</font><ul>这一章的主要内容是在介绍网络安全与基础防护方面的观念与建议,既然是与网络安全有关,那么主要用在网络传输时的TCP 封包就不能不知道咯。这里就要来讨论一下,当有一个 TCP/IP 的封包要进入您的主机系统时,那个TCP 封包应该会经过哪些关卡呢!?知道这些关卡之后,才会知道有哪些入侵的管道呀!然后才能知道如何去防御他!OK!那么首先自然就要来了解一下,什么是TCP/IP 啰!<br> <br><hr width="100%"><a name="TCP_IP_TCP"></a><font color="#000099">认识 TCP/IP:</font><br> <br>由 <a href="http://linux.vbird.org/linux_server/0110network_basic.php">网络基础</a> 里头我们可以知道目前的网络联机协议以<a href="http://linux.vbird.org/linux_server/0110network_basic.php#packet_tcp">TCP/IP</a>为主要的架构,而其中相当重要的则是 TCP 封包,详细的 <a href="http://linux.vbird.org/linux_server/0110network_basic.php#packet_tcp">TCP封包</a>请再回到网络基础篇去看个仔细,我们这里再来简单的复习一下:<br> <ul><li><font color="#000066">主机的 IP 可以想成是地址;</font></li><li><font color="#000066">而主机启动的 port 可以想成是窗口或楼层;</font></li><li><font color="#000066">至于在两个 IP 之间传送数据的 TCP 封包则可以被想成是包裹</font>。</li></ul> <br>好了,既然 TCP 是个包裹,那么想当然尔,真正的数据是在包裹里面的 Messages/Data,但是由于要将包裹传送到正确的地点去,所以就有个表头 (Header),亦即在包裹不是都需要有填写数据的那一面吗?在这一面上面必须要填写正确的来源与目的之地址以及该地址的楼层,才能够正确的将这个包裹传送到正确的地方!当然啰,由于可能会收到回信,所以自然那个包裹上面,寄信的地址与楼层也需要填写正确啰!^_^。所以呢,您可以简单的将TCP 封包想成有两个主要的部分,一个是放置资料的 Messages/Data ,另一个则是表头(Header )数据填写区,在这个 Header 区域中,有相当多的数据,您可以回到网络基础去瞧一瞧<a href="http://linux.vbird.org/linux_server/0110network_basic.php#packet_tcp">TCP封包的完整格式</a>,我们这里将 TCP 封包的 Header 简化成为来源与目的之 IP及传送的 port !所以基本的 TCP 封包可以由下图来表示啰:<br> <center><img src="0240network-secure-1_files/0240network-secure-1.jpg" nosave="" height="184" width="153"></center> <br>由上图我们可以清楚的发现到,您的主机能不能接收这个 TCP 封包,就需要合乎TCP 封包的 IP 与 port 的规定啰!<br> <br><hr width="100%"><a name="TCP_IP_fllow"></a><font color="#000099">简易TCP 封包进入主机之流程:</font><br> <br>好了,现在我们知道主机收不收的到数据跟 TCP 上面的表头数据( Header )是有关系的!那么假如有个TCP 封包要进入到您的主机时,他会经过哪些步骤呢?基本上会有底下这些手续的啦:<br> <center><img src="0240network-secure-1_files/0240network-secure-2.jpg" nosave="" height="88" width="467"><br><font color="#000066">图一、TCP 封包进入本机要通过的管制步骤</font><br> </center><ol><li>首先, TCP 封包会先经过所谓的<font color="#000066">封包过滤机制 ( IP Filtering或称为 NetFilter </font>),这是 Linux 提供的第一层保护。IP Filter 可以将TCP 封包进行分析,并依据您所订定的过滤规则来将该封包进行处理。举例来说,我们知道TCP 封包的表头有 Port 与 IP 的信息,假如您知道有个黑客网站,因为恶名昭彰所以您不想要允许该网站的任何数据进入到主机的话,可以透过设定IP Filter 的机制,命令 IP Filter 只要分析到 TCP 封包是来自该黑客网站的IP 时,就将该 TCP 封包丢弃 (Drop) !这也是 Linux 本机的最外部的防火墙啰。任何TCP 封包要能进入到本机,就得先经过 IP Filter 这一关,如果能够通过您所设定的机制之后,TCP封包就会进入到下一关;</li><br> <li>通过 IP Filter 之后,TCP 封包会开始接受 Super daemons 及 TCP_Wrappers 的检验,那个是什么呢?呵呵!说穿了就是/etc/hosts.allow 与 /etc/hosts.deny 的设定文件功能啰。这个功能也是针对 TCP的 Header 进行再次的分析,同样您可以设定一些机制来抵制某些 IP 或 Port ,好让来源端的封包被丢弃或通过检验;</li><br> <li>经过了上两道基本的防火设施之后,再接下来则是每一项服务的个别设定功能!举例来说,如果是以FTP 联机的话,那么在 ftp 的设定档案当中,可能会经由 PAM 模块( 未来在网络安全当中会提及)来抵挡特殊的users ,当然也会以特别的设定来抵挡某些 TCP 封包!另外,以 WWW 服务器的设定来看,在WWW 的设定档 httpd.conf 里头也有类似的 deny 功能呦!不过要注意的是,当TCP 到达这个步骤时,其实已经算是进入到本机的服务范围内了,所以,<font color="#000066">要小心您的套件是否有漏洞啊</font>!</li><br> <li>假使上面的几道火墙都通过了,那么才能进入主机来登入!此时,一经登入就会被系统记录在『登录文件』当中,藉以了解主机的历史历程!</li></ol> <br>注意一下,上面的步骤是 Linux 预设具有的防备功能,当然您还可以在 IPFilter 之前外加硬件防火墙设备!不过,在这里我们主要以 Linux 系统本身具有的功能来进行说明喔!好了,那么如何利用Linux 所提供的这些功能来防备我们的主机呢?您可以尝试这样做:<br> <ul><li><font color="#000099">封包过滤( IP Filter ):</font></li><br>封包过滤是 Linux 提供的第一道防火墙呦!但是不同的核心版本会有不一样的封包过滤机制!<font color="#000066">以2.2.xx 为核心的 Linux 主要以 ipchains 作为过滤机制,至于目前新版的 2.4.xx则以 iptables 为机制</font>!OK!既然我们的新版 Linux  为 kernel 2.4.xx,所以自然以 iptables 来进行 IP 抵挡的工作啦!那么由于 TCP 封包里头有 IP及 port 嘛!所以要抵挡来源 IP 或者是自身的 port ,嘿嘿!自然就很容易来进行啦!您目前只要晓得,iptables 可以经由 TCP 的封包 Header 资料来进行分析的工作,并设定『特殊动作』,例如:符合我们iptables 的设定规则,就让他可以经过防火墙,若是该 TCP 封包在我们的不欢迎IP 的行列,那就将他丢弃,他就没有办法进入 Linux 主机啦!<br> <li><font color="#000099">Super daemons 与 TCP_Wrappers:</font></li><br>目前新推出的 Linux 所使用的 super daemons 是以 xinet 为主,至于抵挡封包的工作则可以让TCP_Wrappers 来进行!Wrappers 是包裹的意思,那么 TCP_Wrappers 自然就是要对TCP 这个包裹进行解析的工具啦!嘿嘿!没错,他可以再次的分析 TCP 的封包啊!利用每个服务的特色,来将TCP 封包抵挡,这个 TCP_Wrappers 主要以『 服务 , services』为主的抵挡方针,例如FTP, Telnet, SSH 都可以经由他来进行 IP 分析的动作呦!<br> <li><font color="#000099">服务过滤:</font></li><br>每个服务还有特别的自订的防火机制,例如 Apache 这个 WWW 的套件里头,就含有『deny from IP 』来抵挡某些不受欢迎的 IP 机制,而 ssh 也可以在设定档里头决定是否要开放root 的登入权限!FTP 当然也可以制定一些规则来挡掉不受欢迎的 IP 啦!不过,到这一步时,该封包已经进入主机的服务之内啰,是经由服务来关闭该IP 的联机的呦!而由于某些服务天生就有些小漏洞,呵呵, Cracker 相当的容易利用这些漏洞来进行破坏的行为!<font color="#000066">由于该封包已经进入主机了,万一服务真的有漏洞,那可就惨了</font>......所以,虽然我们可以利用每个服务器软件来设定抵挡的功能,但是如果该服务器软件本身就有漏洞的话,那么这一步就会行不通啰!<br> <li><font color="#000099">登入主机:</font></li><br>上面提到的大多是在某些服务里头来取用我们主机系统的资源,那么如果该封包是想要直接登入我们的主机呢(login )?这个时候就需要取得我们主机的『<font color="#000066">账号与密码,ID & PasswdWord</font>』的权限啦!如果通过 <font color="#000066">ID& pass word</font> 的验证之后,就可以进入我们的主机啦!最常见的就是SSH 或者是 telnet 以及 FTP 等软件了,这些软件在 Client 端的封包数据经过上面数道手续而进入后,再来就会要求client 端的使用者输入账号与密码,藉以分析对方的身份来开放权限给 Client的使用者登入。所以啦,在这个手续里面,最重要的就是密码啦!如果您的密码设定的太简单,或者是为了方便您的使用者,而让他们可以将密码设定的相当的简易,例如密码设定为123 之类的,那么您的系统的密码就很容易被猜出来!很危险吶!<br> <li><font color="#000099">登录文件记录:</font></li><br>『为了防止世界的破坏.....』喔!不!那个是皮卡丘的里头坏人的台词....这里要谈的是,『为了防止主机的破坏....可爱又迷人的角色...』那就是<font color="#000066">登录档</font>啦!为了记录历史历程,以方便管理者在未来的错误查询与入侵侦测,<font color="#000066">良好的分析登录档</font>的习惯是一定要建立的,尤其是<b><font color="#000066">/var/log/messages</font></b>与 <b><font color="#000066">/var/log/secure</font></b> 这些个档案!虽然各大主要Linux distribution 大多有推出适合他们自己的登录档分析套件,例如 Red hat
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -