Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2206660
  • 博文数量: 1058
  • 博客积分: 10018
  • 博客等级: 上将
  • 技术积分: 12641
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-23 19:24
文章分类

全部博文(1058)

文章存档

2010年(108)

2009年(736)

2008年(214)

我的朋友

分类: LINUX

2008-11-19 21:20:21

网络上的计算机很容易被黑客利用工具或其它手段进行扫描,以寻找系统中的漏洞,然后再针对漏洞进行攻击。通过伪装 Linux 系统,给黑客设置系统假象,可以加大黑客对系统的分析难度,引诱他们步入歧途,从而进一步提高计算机系统的安全性。下面以 Red Hat Linux 为例,针对几种黑客常用的途径介绍一些常用的 Linux 系统伪装的方法。

 

 

一、针对 HTTP 服务

通过分析 Web 服务器的类型,大致可以推测出操作系统的类型,比如,Windows 使用 IIS 来提供HTTP 服务,而 Linux 中最常见的是 Apache

默认的 Apache 配置里没有任何信息保护机制,并且允许目录浏览。通过目录浏览,通常可以获得类似“Apache/1.3.27 Server at apache.linuxforum.net Port 80” “Apache/2.0.49 (Unix) PHP/4.3.8”的信息。

通过修改配置文件中的 ServerTokens 参数,可以将 Apache 的相关信息隐藏起来。但是, Red Hat Linux 运行的 Apache 是编译好的程序,提示信息被编译在程序里,要隐藏这些信息需要修改Apache 的源代码,然后,重新编译安装程序,以实现替换里面的提示内容。

Apache 2.0.50 为例,编辑 ap_release.h 文件,修改

“#define  AP_SERVER_BASEPRODUCT \"Apache\"”

“#define AP_SERVER_BASEPRODUCT \"Mi-crosoft-IIS/5.0\"”。编辑 os/unix/os.h 文件,修改“#define PLATFORM \"Unix\"”“#define PLATFORM \"Win32\"”。修改完毕后,重新编译、安装 Apache

Apache     httpd.conf     “ServerTokens   Full” “ServerTokens Prod”;将“ServerSignature On”“ServerSignature Off”,然后存盘退出。重新启动 Apache 后,用工具进行扫描,发现提示信息中已经显示操作系统为 Windows

 

 

二、针对 FTP 服务

通过 FTP 服务,也 可以推测操作系统的 类型,比如, Windows 下的 FTP 服务多是 Serv-U,而Linux 下常用 vsftpdproftpd pureftpd 等软件。

proftpd 为例,修改配置文件 proftpd.conf,添加如下内容:

 

ServerIdent on \"Serv-U FTP Server v5.0 for WinSock ready...\"

 

存盘退出后,重新启动 proftpd 服务,登录到修改了提示信息的 FTP 服务器进行测试:

C:\\>ftp 192.168.0.1

Connected to 192.168.0.1.

220 Serv-U FTP Server v5.0 for WinSock ready...

User (192.168.0.1:(none)):

331 Password required for (none).

Password:

530 Login incorrect.

Login failed.

ftp > quit

221 Goodbye.

这样从表面上看,服务器就是一个运行着 Serv-U Windows 了。

 

 

三、针对 TTL 返回值

可以用 ping 命令去探测一个主机,根据 TTL 基数可以推测操作系统的类型。对于一个没有经过任何网关和路由的网络,直接 ping 对方系统得到的 TTL 值,被叫做“TTL 基数。网络中,数据包每经过一个路由器,TTL 就会减 1,当 TTL 0 时,这个数据包就会被丢弃。

通常情况下,Windows TTL 的基数是 128,而早期的 Red Hat Linux Solaris TTL 基数 255FreeBSD 和新版本的 Red Hat Linux TTL 基数是 64。比如,ping 一个 Red Hat 系统,显示如下:

 

Pinging 192.168.0.1 with 32 bytes of data:

 

 

Reply from 192.168.0.1: bytes=32 time <10ms TTL=64

 

 

Reply from 192.168.0.1: bytes=32 time <10ms TTL=64

 

 

Reply from 192.168.0.1: bytes=32 time <10ms TTL=64

 

 

Reply from 192.168.0.1: bytes=32 time <10ms TTL=64

 

 

Ping statistics for 192.168.0.1:

 

 

Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

Minimum = 0ms, Maximum = 0ms, Average = 0ms

 

用以下命令修改 Red Hat Linux TTL 基数为 128(本来为 64):

# echo 128 > /proc/sys/net/ipv4/ip_default_ttl

若想使设置永久生效,可以修改/etc/sysctl.conf 配置文件,添加如下一行:

 

net.ipv4.ip_default_ttl = 128

 

保存退出后,再 ping 192.168.0.1TTL 基数就变为 128 了。

 

 

四、针对 3389 端口和 22 端口

有时通过扫描 3389 端口和 22 端口,也可以推测操作系统的类型。Windows 下一般利用 TCP 协议 3389 端口进行远程控制,而 Linux 可能会用 TCP 协议的 22 端口,提供带有加密传输的 SSH 服务。

为了安全,可以利用 iptables 来限制 22 端口的 SSH 登录,让非授权的 IP 扫描不到 TCP 22 端口的存在:

#iptables -I INPUT -s ! xx.xx.xx.xx -p tcp --dport 22 -j DROP

利用 iptables,将本机的 TCP 3389 端口转移到其它开有 3389 端口的计算机上,给 Linux 系统伪装出一个提供服务的 TCP 3389 端口。命令如下:

#echo 1 > /proc/sys/net/ipv4/ip_forward

#iptables -t nat -I PREROUTING -p tcp --dport 3389 -j DNAT --to xx.xx.xx.xx

#iptables -t nat -I POSTROUTING -p tcp --dport 3389 -j MASQUERADE

第一条命令表示允许数据包转发;第二条命令表示转发 TCP 3389 xx.xx.xx.xx;第三条命令

表示使转发数据包实现双向通路,给数据包设置一个正确的返回通道。若想使转发永久生效,可以把以上命令添加到/etc/rc.local 文件中。

这样,当黑客扫描服务器所开端口的时候,就找不到 22 号端口,而是看到一个伪装的 3389 端口,从而不能正确判断出操作系统的类型。

 

 

五、针对 netcraft

netcraft 是一个很厉害的扫描引擎,它通过简单的 TCP 80,就可以知道所测服务器的操作系统、Web 服务程序和服务器开机时间(Uptime)等信息。

上面介绍的几种方法对 netcraft 来说,均不奏效。针对 netcraft,可利用 iptables 进行系统伪装,使 netcraft 错误判断操作系统:

#iptables -t nat -I PREROUTING -s 195.92.95.0/24 -p tcp  --dport 80 -j DNAT --to xx.xx.xx.xx

#iptables -t nat -I POSTROUTING -s 195.92.95.0/24 -p tcp --dport 80 -j MASQUERADE

由于通过抓包发现,netcraft 的服务器不止一台,所以需要对它所在网段进行转发欺骗处理。

 

 

六、小结

以上方法只能从某种角度上防止和阻挠黑客对系统漏洞的分析,在一定程度上可减少计算机被攻击的可能性,但仍然是防君子,不防小人,仅是给大家提供一个活学活用的新思路。

 

阅读(898) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~