Linux 版 (精华区)
发信人: tcpip (干打雷,不下雨), 信区: Linux
标 题: UNIX/LINUX的网络安全问题!
发信站: 哈工大紫丁香 (Sat Jul 17 17:35:54 1999), 转信
在日益繁荣的INTERNET和INTRANET上,基于LINUX/UNIX的服务器/
主机占了绝大多数,由此而引发了基于LINUX/UNIX的安全问题,这始终是
网络安全讨论的一大主题!我们将就如下几个方面来讨论LINUX/UNIX的安
全问题!
主机信息的屏蔽和获取
在网络世界中收集有用的信息以及同时有效地保护自己的信息不被他人获取是
一个永恒的主题。
一般来说获取主机的信息不外乎一下的几种方法:
1、利用WindowNT和UNIX系统中的finger命令
finger是最常用的一条指令,用来查询目标主机的用户信息和主机的部分信息q
缦吕荆
# finger @my.target.server
[my.target.server]
user1 ??? pts/4 <Jun 16 10:21>
user2 ??? < . . . . >
user3 ??? < . . . . >
webmaster ??? pts/6 <Jun 1 11:26> 111.222.333.444
user4 ??? pts/4 <Jun 23 10:11> 555.666.777.888
这样我们就可以列出了在当前的系统上登陆的用户了!在有些系统上,我们还
可以获得主机的类型等信息。
如果我们还想知道更多的信息,可以在finger后面加上一个参数-l就可以得到
该用户的详细信息了
# finger -l webmaster@my.target.server
[my.target.server]
Login name: webmaster
Directory: /export/home/webmaster Shell: /sbin/sh
Last login Tue Jun 1 11:26 on pts/6 from 111.222.333.444
New mail received Thu Jul 1 19:57:48 1999;
unread since Tue Jun 29 19:29:24 1999
No Plan.
这样我们就得到了该用户的非常详细的信息了,我们可以知道该用户是从何处
登陆
所使用的shell的类型,用户目录等。
因此,finger可以算的上一条非常危险的指令了,所以很多系统的管理员都关
闭了finger的服务。但这
不一定时最好的方法!
2、利用uname获取主机信息
学过unix的人一定知道unix里的一条最入门的指令了uname。说他最入门是
因为在unix里介绍的第一条
指令就是他了。我们来看看他的具体执行情况:
dsp:~$ uname -a
dsp 2.2.9 #1 Tue Jun 8 10:40:39 CST 1999 i586 unknown
dsp:~$
很详细,他明白无误地告诉了我系统是linux系统,采用的内核是2.2.9的版
本。
而linux的内核2.2.x有一个致命的DOS攻击缺陷,很容易被人攻击成功!
我们看到利用这条uname指令,可以很轻松地获取主机的详细信息,包括它
的机器类型、操作系统类型 CPU类型等等。
3、利用telnet、ftp等登陆来获取系统的信息
当我们登陆到一台主机上时,它所提供的登陆信息也可以为我们提供有用的信
息
如下示:
Welcome to Linux 2.2.9.
dsp login:
和
SunOS 5.6
login:
分别告诉我们这是linux和sun的机器,剩下的我就不多说了。
当然还有别的许多方法。
二、主机信息和用户信息的屏蔽
上面我们提到了获取这些资源的方法和手段。现在我们来从防御的角度考虑如
何屏蔽这些信息的流失!
1、关闭finger服务
这是最直接了当的做法了!
在unix里,finger服务的提供者是fingerd,它是一段守护程序,专门用来监
听来自79号端口的服务请求如果我们把fingerd这个守护程序关闭,也就停止
了finger的服务功能了!
通常fingerd守护程序是由/etc/inetd.conf来加载的,所以我们只要修改
/etc/inetd.conf文件,就可以了 在inetd.conf中,我们可以找到如下的几
行:
finger stream tcp nowait nobody /usr/sbin/tcpd in.fingerd -u
在它的前面加上#,
#finger stream tcp nowait nobody /usr/sbin/tcpd in.fingerd -u
重新写入该文件
然后
# ps -aux|grep inetd
root 95 0.0 0.5 832 156 ? S Jun30 0:00 /usr/sbin/inetd
可以得到inetd守护程序的PID,在这里是95
# kill -1 95
就重新启动inetd了
这时,我们就会发现finger服务被关闭了!
2、修改finger服务
上面的描述中,我们知道fingerd守护程序和它的加载,那么,作为一个好
的管理员就应该考虑修改这个守护程序,使它按照我们的意愿来提供信息,这
样可以迷惑攻击者!并在一定程度上误导攻击者!
让我们来看
finger stream tcp nowait nobody /usr/sbin/tcpd in.fingerd -u
~~~~~~~
我们发现fingerd的守护程序是in.fingerd
那么只要修改它就可以了!
在一般的系统里这个程序是放在/usr/sbin/这个目录里的!
现在我们来做我们自己的fingerd!
# cat > in.fingerd
cho "IRIX 4.0 System"
echo "[my.target.server]"
echo "root root pts/4 <Jun 16 10:21>"
echo "fakeuser1 fakename1 pts/5 < . . . . >"
echo "fakeuser2 fakename2 pts/2 < . . . . >"
echo "fakeuser3 fakename3 pts/6 <Jun 1 11:26> 111.222.333.444"
echo "fakeuser4 fakename4 pts/4 <Jun 23 10:11> 555.666.777.888"
^D
#
然后重新启动inetd,呵呵,结果你就自己看吧!
3、修改登陆的提示信息!
我们知道登陆的提示信息有时会提供很多的信息,那如何不让这些信息被人知
道呢?
在unix系统里有个目录很重要,它就是/etc目录。具体的登陆信息就是放在
这个里面的!
而这两个文件
-rw-r--r-- 1 root root 26 Jun 30 19:14 issue
lrwxrwxrwx 1 root root 5 May 27 22:45 issue.net -> issue
中存放着登陆信息
# cat issue
Welcome to Linux 2.2.9.
那么下一步就是改动这个文件,把它改成我们想要的输出格式和内容!
但是,这个文件事每次开机由系统自己生成的!你这次改了,下次还要改!有
什么一劳永逸的方法吗?
有!
还是在/etc,这个目录里!
在这个目录里有个rc.d的目录,其中的脚本文件都是和系统启动有关的!让我
们来看看有什么发现把!
在rc.K里有这么一段程序!
# Setup the /etc/issue and /etc/motd to reflect the current kernel
level:
# THESE WIPE ANY CHANGES YOU MAKE TO /ETC/ISSUE
AND /ETC/MOTD WITH EACH
# BOOT. COMMENT THEM OUT IF YOU WANT TO MAKE
CUSTOM VERSIONS.
echo > /etc/issue
echo Welcome to Linux `/bin/uname -a | /bin/cut -d\ -f3`. >>
/etc/issue
echo >> /etc/issue
echo "`/bin/uname -a | /bin/cut -d\ -f1,3`." > /etc/motd
这下子,就不用我多说了把!
4、屏蔽uname
鉴于uname在系统中的重要性,作为一个负责的网络管理员,应该限制它的
使用范围,比如只限于管理员使用,我们通常是这样做的
# chmod 700 uname
还有一些别的方法,就不在这里说的,以后再写了!
本文由isbase成员编译或原创,如要转载请保持文章的完整性
欢迎访问我们的站点http://www.isbase.com
绿色兵团给你安全的保证
本文由isbase成员编译或原创,如要转载请保持文章的完整性
欢迎访问我们的站点http://www.isbase.com
绿色兵团给你安全的保证
--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: bin@mtlab.hit.edu.cn]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.940毫秒