Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

Linux环境下发现并阻止系统攻击

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

  我们通过举几个例子来说明这个问题:

  例一:我们只希望允许同一个局域网的机器使用服务器的ftp功能,而禁止副广域网上面的ftp服务请求, 本地局域网由 202.39.154. 、202.39.153. 和202.39.152. 三个网段组成。在hosts.deny文件中, 我们定义禁止所有机器请求所有服务: ALL:ALL 在hosts.allow文件中,我们定义只允许局域网访问ftp功能: in.ftpd -l -a: 202.39.154 202.39.153. 202.39.152. 这样,当非局域网的机器请求ftp服务时,就会被拒绝。而局域网的机器可以使用ftp服务。 ALL:ALL 然后重新启动你的 inetd进程: /etc/rc.d/init.d/inet restart 但是hosts.deny文件只能控制/etc/inetd.conf文件中包含的服务的访问这些服务有/usr/bin/tcpd管 理。TCP wrapper监听接入的网络请求,然后与在hosts.allow和hosts.deny的中的服务比较,然后做出允 许或拒绝的决定。 但是对于wrapper没有包含的服务你就需要采用其他方法了

二、

  保护你的系统最简单有效的的方法是TCP wrapper.Linux系统在跟踪对你的机器的访问记录方面作了大量的工作。wrapper拒绝对你的系统的某些访问的同时,系统在一些LOG文件中增加了一些信息内容。在/var/log
目录下,一般可以看到如下文件:

  boot.log  cron cron.1    cron.2    dmesg     httpd
   lastlog   lastlog.1      maillog   maillog.1
   maillog.2 
   messages  messages.1     netconf.log   
   netconf.log.1
   netconf.log.2  secure    secure.1  secure.2
   secure.3  secure.4  spooler   spooler.1 spooler.2
   uucp      wtmp      wtmp.1    xferlog   xferlog.1
   xferlog.2 

  可以看到某些LOG文件有1,2等扩展名。这是由于系统运行cron.daily引起的。实际上,cron.daily是在/etc下面的子目录,包含了很多系统自动运行的管理script文件。不需要你参与,这些script实现一些任务的自动化:如轮转log文件使其不会变的过分大。作为管理员你应该熟悉如何通过修改这些script来定时运行程序。当然 ,现在有很多功能完善的文本模式或图形模式的log文件分析器,自动发现危险的攻击迹象,然后象管理者发送信件。在http://www.freshmeat.net/tucows等可以找到很多这样的工具。

  从攻击者的观点而言,他们对你的你服务器上的安全文件最感兴趣。若你关闭外部网络对你的服务器的访问。你可能会遇到这样的情况:

   [root@linux /]#grep refused /var/log/secure*
    Sep 12 07:52:42 netgate in.rlogind[7138]: refused
    connect from 2??.?.5?.?42
    Sep 12 07:52:52 netgate in.rshd[7139]: refused
    connect from 2??.?.5?.?42
    Sep 12 07:52:55 netgate in.rexecd[7144]: refused
    connect from 2??.?.5?.?42
    Sep 12 07:52:59 netgate imapd[7146]: refused connect
    from 2??.?.5?.42
    Sep 12 07:52:59 netgate in.fingerd[7142]: refused
    connect from 2??.?.5?.?42
    Sep 12 07:53:00 netgate ipop3d[7143]: refused
    connect from 2??.?.5?.?42
   Sep 12 07:53:07 netgate in.ftpd[7147]: refused
    connect from 2??.?.5?.?42
    Sep 12 07:53:10 netgate gn[7145]: refused connect
    from 2??.?.5?.?42
    Sep 12 07:53:22 netgate in.telnetd[7149]: refused
    connect from 2??.?.5?.?42
    Sep 12 07:56:34 netgate imapd[7150]: refused connect
    from 2??.?.5?.?42

  正如你看到的那样,攻击者已经试图连接服务器上的若干个端口。但是由于服务器关闭了inetd启动的所有服务,所以LOG系统记录下了这些访问拒绝。若在你的机器中没有发现这样的服务拒绝并不能说明你的机器没有被攻击。maillog文件将保存那些通过服务器被转发的email信息。xferlog保存ftp的log信息等等。

  若你希望查看wtmp,你可以使用last命令

  # last | more fishduck ttyp6 nexus Tue Sep 28 16:03 
         still logged in birdrat ttyp5 speedy Tue Sep 28 15:57 still logged 
		 in root tty1 Tue Sep 28 12:54 still logged in 

  将显示谁什么时候登陆进来,登陆了多长时间等信息。通过查看你可以发现非法登陆者信息。 你也可以查看以前的wtmp文件如wtmp.1, 你可以用命令: # last -f /var/log/wtmp.1 | more 但是你还需要注意你的log文件的状态信息,如果它特别小 或者大小为0 则说明可能有攻击者进入系统,并 且修改了这个文件。为了防止任何用户修改某些文件,如对log文件只允许添加,而不允许删除操作等等: 可以通过使用Linux Intrusion Detection System可以防止攻击者修改LOG文件password 文件等。该工具 可以在启动lilo时来决定是否允许对某些特定文件的修改。该工具的详细信息可以通过访问 www.soaring-bird.com.cn/oss_proj/lids/index.html获得。 系统的所有进程的祖父进程被成称为'init',其进程ID号是1。你可以通过下面的命令,看到init进程信息。 # ps ax | grep init 1 ? S 6:03 init 系统在启动时的init进程将会启动'inetd'进程,正如前面提到的该进程实现监听网络请求,监听是通过网 络端口号来实现的。 例如你telnet到你的linux服务器上时,实际上你上请求inetd进程启动进程in.telnetd进 程在23端口来处理你的访问请求实现通信。随后,in.telnetd进程启动一个询问你的用户名和密码的进程, 然后你 就登陆到机器了。inetd同时监听很多端口来等待访问请求,然后激活完成相关服务的程序。你可以通过查看文件/etc/services来看哪个服务使用哪个端口。从节省资源角度来说,利用一个进程而不是每 种服务对应一个进程是有意义的。 当一个攻击者第一次访问你的站点时,他们往往使用成为端口扫描仪的工具,通过该工具攻击者来查看 你开放了那些系统服务。LInux上比较出名的一个端口扫描仪是nmap. 可以从http://www.insecure.org/nmap/index.html

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:ProFtpd快速指南   下一篇:Sendmail环境下利用DRAC杜绝垃圾邮件

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号