Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1848703
  • 博文数量: 293
  • 博客积分: 10127
  • 博客等级: 上将
  • 技术积分: 3029
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-12 19:05
文章分类

全部博文(293)

文章存档

2011年(11)

2010年(282)

我的朋友

分类: BSD

2010-08-21 00:51:17

 

手册三

2、删除不必要的预置用户和组

禁止操作系统中不必要的预置帐号(每次升级或安装完都要检查一下)。FreeBSD系统中就提供这样一些你可能不需要的预置帐号。如果确实不需要这些帐号,就把它们删掉。系统中有越多的帐号,就越容易受到攻击。

bash-2.03# cat passwd

---------------------snip----------------------

# $FreeBSD: src/etc/master.passwd,v 1.25 1999/09/13 17:09:07 peter Exp $

#

root:*:0:0:Charlie &:/root:/usr/local/bin/bash

toor:*:0:0:Bourne-again Superuser:/root:

daemon:*:1:1:Owner of many system processes:/root:/sbin/nologin

operator:*:2:5:System &:/:/sbin/nologin

bin:*:3:7:Binaries Commands and Source,,,:/:/sbin/nologin

tty:*:4:65533:Tty Sandbox:/:/sbin/nologin

kmem:*:5:65533:KMem Sandbox:/:/sbin/nologin

games:*:7:13:Games pseudo-user:/usr/games:/sbin/nologin

news:*:8:8:News Subsystem:/:/sbin/nologin

man:*:9:9:Mister Man Pages:/usr/share/man:/sbin/nologin

bind:*:53:53:Bind Sandbox:/:/sbin/nologin

uucp:*:66:66:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico

xten:*:67:67:X-10 daemon:/usr/local/xten:/sbin/nologin

pop:*:68:6:Post Office Owner:/nonexistent:/sbin/nologin

nobody:*:65534:65534:Unprivileged user:/nonexistent:/sbin/nologin

---------------------snip----------------------

可以看到系统中预置了不少账户,其中如games账户并不是必要的,我们可以用rmuser命令删除它:

bash-2.03# rmuser –y games

对系统中的组也应该做相应处理,用vipw编辑/etc/group,删除不需要的组。

3、改变系统的核心变量达到对外屏闭服务器没有使用的端口

#sysctl -w net.inet.tcp.log_in_vain=1

#sysctl -w net.inet.udp.log_in_vain=1

这会把尝试向你的机器要求你没有的服务的连接请求记录起来。例如,如果在系统上没有跑 DNS server,而又有个人想要向你的机器要求 DNS 服务,这时候你就会看到

Connection attempt to UDP yourIP:53 from otherIP:X

(X 是某个 high port #)

你用 "dmesg" 命令就可以看到这一行。Dmesg 显示出的是系统的 kernel message buffer。然而,这个 buffer 的空间是有限的, 所以系统也会把这些信息写入到 /var/log/messages 里面去:

bash-2.03# tail -1 /var/log/messages

Jun 12 19:36:03 ugh /kernel: Connection attempt to UDP yourIP:53 from otherIP:X

这对发现可能的入侵企图是很有帮助的。

4、关闭对广播类型的响应

#sysctl -w net.inet.icmp.bmcastecho=0

过滤icmp响应这后,服务器无法ping通,这有助提高部份安全性能。

5、对udp包的校验和计算

#sysctl -w net.inet.udp.checksum=1

可以防止不正确的udp包的攻击。

6、设置取消ctrl-alt-del组合键重启系统

为了防止用户无意中重新启动系统,还需要取消Ctrl-Alt-Del热键的重新启动能力,这需要重新定制内核时使用以下选项。

bash-2.03# cd /usr/src/sys/i386/conf

bash-2.03# ls

GENERIC LINT NEWCARD

bash-2.03# grep SC_DISABLE_REBOOT LINT

options SC_DISABLE_REBOOT # disable reboot key sequence

可以把以上的内核选项加入到自己定制的内核配置文件中。

四、参考FreeBSD技巧

1、更改shell并在配置文件中做设置

a.用chsh或者vipw命令,将root所使用的shell改成bash,如:

[root@redhat /root]#chsh

---------------------snip----------------------

#Changing user database information for root.

Login: root

Password: U1fRnHvjHLdU6

Uid [#]: 0

Gid [# or name]: 0

Change [month day year]:

Expire [month day year]:

Class:

Home directory: /root

Shell: /usr/local/bin/bash

---------------------snip----------------------

b.更改/root/.bashrc

[root@redhat /root]# cat .bashrc

---------------------snip----------------------

umask 077

PS1="[\u@\h \W]\\$ "

alias ls='ls -F'

alias ps='ps -auxf'

---------------------snip----------------------

c.建立/root/.bash_profile

---------------------snip----------------------

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin:$HOME/bin; export PATH

umask 077

PS1="[\u@\h \W]\\$ "

alias ls='ls -F'

---------------------snip----------------------

2、更改telnet banner

修改/etc/gettys中有default的行,改成如下:

default:\

:cb:ce:ck:lc:fd#1000:im=\r\nRed Hat Linux release 6.2 (Zoot)\r\nKernel 2.2.14-50 on an i686\r\n:sp#1200

这是更改telnet的banner,令人telnet时看到的是:

---------------------snip----------------------

[root@redhat /etc]# telnet localhost

Trying 127.0.0.1...

Connected to localhost.netguard.com.cn.

Escape character is '^]'.

Red Hat Linux release 6.2 (Zoot)

Kernel 2.2.14-50 on an i686

login:

---------------------snip----------------------

3、更改ftp banner

修改/usr/src/libexec/ftpd/ftpd.c

将其中static char version[]的定义改为

static char version[] = "Version wu-2.6.0(1) Mon Feb 28 10:30:36 EST 2000";

然后

[root@redhat ftpd]# make;make install

我们来看看效果:

---------------------snip----------------------

[root@redhat ftpd]# ftp

ftp> o localhost

Connected to localhost.netguard.com.cn.

220 redhat.netguard.com.cn FTP server (Version wu-2.6.0(1) Mon Feb 28 10:30:36 EST 2000) ready.

Name (localhost:quack):

---------------------snip----------------------

五、参考安全工具

1、tripwire

作为一个优秀的完整性检查工具,tripwire可以对系统做一个快照,当怀疑系统遭受入侵的时候,系统管理员可以通过事前备份保存的快照文件与当前系统作比较,从而得出系统被更改文件列表。为事后审查做一个比较好的准备。

2、john

口令检查工具,由于部份帐号使用者可能使用简单帐号,john有几种模式,对简单密码很容易能够判断,这样可以一定程度上防止口令攻击。

3、nmap

nmap是一个端口扫描及操作系统堆栈判断工具,能够辅助系统管理员检查自己域内机器端口开放情况。

3,目前本系统的补丁情况

一、FreeBSD补丁方法

1、下载并检查完整性

比如:

ftp://ftp.freebsd.org/pub/FreeBSD/CERT/patches/SA-01:49/telnetd-crypto.patch

ftp://ftp.freebsd.org/pub/FreeBSD/CERT/patches/SA-01:49/telnetd-crypto.patch.asc

使用自己的pgp工具对文件完整性进行检查

2、patch源文件

# cd /usr/src/

# patch -p < /path/to/patch

3、编译安装

# cd /usr/src/secure/libexec/telnetd

# make depend && make all install

4、攻击测试

# ./telnet_exploit -c localhost

7350854 - x86/bsd telnetd remote root

by zip, lorian, smiler and scut.

check: FAILED

aborting

二、FreeBSD补丁下载地点

http://www.freebsd.org/security/

ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/

三、FreeBSD官方安全邮件列表

有两个FreeBSD的官方安全邮件列表

freebsd-security General security related discussion

freebsd-security-notifications Security notifications (moderated mailing list)

发送邮件到majordomo@FreeBSD.ORG,主题是"subscribe freebsd-security"就可以了。

% echo "subscribe freebsd-security" | mail majordomo@FreeBSD.org

4,系统应用程序可能存在的安全问题

从1996年至今(2001年8月),与FreeBSD操作系统相关的系统及应用程 序漏洞共167条,全部可在FreeBSD官方网站上获得基本资料,根据这些情况分析,使用FreeBSD操作系统时,需要对运行于其上的应用程序做基本 安全审核。这通常需要具体情况具体分析,对系统运行的所有进程及其程序的安全行做基本考察。比如所有版本的FreeBSD 4.x prior to 4.4中,tcpdump都存在一个format string的漏洞,入侵者可以通过构造特殊的字串来对系统进行攻击,导致tcpdump崩溃,甚至有可能可以执行任意代码。而tcpdump通常是由 root身份运行的,因此远程用户可以通过这一漏洞获取系统最高权限。存在同样问题的应用程序或者服务在最近一段期间有licq、xinetd等等许多。 有些会导致远程的root级别的威胁,有些则是suid程序,会导致本地用户有可能越权执行程序或任务。

同样情况,在FreeBSD上如果运行了Apache、php、Mysql等各种服务或者应用程序,用户需要对这些应用程序的安全性有一定程序的了解,而不仅依赖于操作系统的安全性。

5,施工注意事项

一、配置

1、对极其重要,不能中止服务的主机

必需要做的项目如下:

a. 设单用户模式需要密码

b. 关闭或者修补telnetd服务器

c. 关闭或者修补ftpd服务器

d. 在inetd.conf及rc.conf中去除不必要的服务

e. 强烈建议用ssh及scp替代telnet和ftp

2、对可以暂时停止服务进行配置工作的主机

除了以上选项之外

a. 建议重新编译内核加入ipfilter支持。

b. 建议使用sysctl对系统核心参数做进一步调整。

二、审核

1、如何发现入侵

如果的系统已经被入侵者控制,或者入侵者已经获得了一些权限,那么系统总会有一些症状反映出来,有些症状也往往暗示着有人正在打你系统的主意,你的系统将被入侵。

a.异常的访问日志

入侵者在入侵并控制系统之前,往往会先用自动或者手动扫描这个系统,以获取更多的信息,了解并入侵您的系统。

系统被扫描的征兆:

a-1.一个IP连续多次出现在系统的各种服务日志中,并试图访问越权访问管理程序,这很有可能是入侵者在试图寻找并尝试漏洞。

a-2.一个IP连续多次在同一系统多个服务建立了空连接,这很有可能是入侵者在搜集服务的版本信息。

a-3.有人访问了系统不必要的服务,或者系统不存在的但是有严重安全隐患的漏洞。

比如:finger、rpc.statd。

a-4.有人telnet、ftp、pop3、su等服务日志连续出现了大量的连续性失败登入日志,着很有可能是入侵者在尝试猜测系统的密码。

b.网络流量增大

如果一台服务器突然间流量大了许多,这就预示着你的系统有可能已经被入侵者控制,并用来扫描和攻击其它的服务器。事实证明,流量突然过大不容忽视,许多入侵者都用中间主机下载并提供扫描软件,对远程主机扫描、分析和测试漏洞,进而造成网络流量突然增大。

c.非法访问

如果你发现某个用户试图访问控制并修改/etc/shadow、系统日志和系统配置文件,那么很有可能这个用户已经被入侵者控制,并且试图夺取更高的权限。

d.正常服务终止

比如系统的日志服务突然奇怪的停掉了,你的syslogd程序突然终止,这暗示着入侵者试图停掉这些有威胁的服务,在系统上留下空日志来逃避管理员的追查。

e.可疑的进程,非法服务

系统中任何可疑的进程都应该仔细检查,比如以root启动的httpd服务,系统中本来关闭的服务重新被启动。这些可疑进程和服务,很有可能是入侵者启动的攻击进程、后门进程、sniffer进程。

f.系统文件或用户数据被更改

入侵者通常会更改系统中的配置文件来逃避追查,或者加载后门、攻击程序之类,比如修 改syslog.conf文件去掉secure的条目来躲避login后门的审计;修改hosts.deny、hosts.allow来解除 tcpwrapper对入侵者IP的过滤;增加一个条目在rc.d里面,以便系统启动的时候,同时启动后门程序;增加了一个用户、一个suid程序都意味 着你的系统已经被入侵着控制了。

g.可疑的数据

系统中出现了诸如" "(空格空格)、".. "(点点空格)、"..^M"(点点ctrl+M)、"..."(点点点)这样可疑的目录,入侵者经常在这样的目录中使用和隐藏文件.系统命令被修改(比 如安装了lrk,ps输出有变化),有些目录里面(特别是/tmp)出现了常用扫描器的产生的临时文件,攻击程序,磁盘空间突然变小,主页被修改,用户数 据被修改。

h.系统被sniffer

系统入侵发生时,入侵者经常在UNIX系统上安装一个网络监视程序,通常称为 sniffer,用于捕获用户账号和密码信息。是否有进程把任何网络设备置成混杂模式是判断sniffer存在的证据,如果任一网络设备处于混杂模式,那 系统中就有sniffer程序在运行。传统的sniffer不能在交换环境成功使用,交换环境通过mac地置发送数据,这就产生了各种ARC欺骗工 具,sniffer和snoop永远都是同时存在的。

2、紧急处理需知

a.立刻断开网络连接

入侵着控制了系统,往往得到的都是root权限,如果不把被入侵的主机从网络上断 开,入侵者可能连入这台主机并撤销你所做的恢复工作。他们知道了管理员发现了自己,也可能会做出一些破坏性举动,诸如发出 rm -rf / &等指令来彻底清除自己的罪证,为了防止这种情况发生,请先断开网络连接,并且启用备份域服务器。紧急情况下可以直接拔掉自己的网线,关掉相关的 网络设备,如交换机和路由器等。

b.制作遭受入侵的系统的镜象

如果你有一块备用的磁盘,大小和型号都与被入侵主机上的磁盘相同,可以使用UNIX的dd命令制作被入侵系统的一个额外拷贝。如果你有磁带机可用ufsdump为系统做一个0级备份。

例如,在一个有两个SCSI硬盘的Linux系统,以下命令将在相同大小和类型的备份硬盘(/dev/sdb)上复制被侵入系统(在/dev/sda盘上)的一个精确拷贝。

# dd if=/dev/sda of=/dev/sdb

建立一个备份非常重要,你可能会需要将系统恢复到侵入刚被发现时的状态。它对法律调查可能有帮助。记录下备份的卷标、标志和日期,然后保存到一个安全的地方以保持数据的完整性。

c.报案、通知cert

向当地公安局报案,使你的损失在以后能得到赔偿。通知cert,引起大家注意,以免internet上其他主机也收到同样的攻击。

3、如何进行审核

a.检查入侵者对系统软件和配置文件的修改

二进制文件,系统配置文件都是黑客喜欢更改的地方。

b.检查被修改的数据

比如web cgi程序,很可能会被植入后门。

c.检查入侵者留下的工具和数据

搜索主要可以集中于以下方向

检查UNIX系统/dev/、man目录下意外的ASCII文件。一些特洛伊木马二进制文件使用的配置文件通常在这些目录中。

仔细检查系统中的隐藏文件和隐藏目录。如果入侵者在系统中建立一个一个新的帐户,那么这个新帐户的起始目录以及他使用的文件可能是隐藏的。

检查一些名字非常奇怪的目录和文件,例如:...(三个点)、..(两个点)以及空白(在UNIX系统中)。入侵者通常会在这样的目录中隐藏文件。对于NT,应该检查那些名字和一些系统文件名非常接近的目录和文件。

d.审查系统日志文件

/etc/syslogd.conf下定义的日志文件。

e.检查网络嗅探器

判断系统是否被安装了嗅探器,首先要看当前是否有进程使你的网络接口处于混杂 (Promiscuous)模式下。如果任何网络接口处于promiscuous模式下,就表示可能系统被安装了网络嗅探器。注意如果你重新启动了系统或 者在单用户模式下操作,可能无法检测到Promiscuous模式。使用ifconfig命令就可以知道系统网络接口是否处于promoscuous模式 下(注意一定使用没有被侵入者修改的ifconfig):

正常输出:

su-2.05# ifconfig ed0

ed0: flags=8843

inet 192.168.168.52 netmask 0xffffff00 broadcast 192.168.168.255

inet 192.168.168.54 netmask 0xffffff00 broadcast 192.168.168.255

inet 192.168.168.55 netmask 0xffffff00 broadcast 192.168.168.255

ether 00:80:c8:f6:0d:61

处于混杂模式下的输出:

su-2.05# ifconfig ed0

ed0: flags=8943

inet 192.168.168.52 netmask 0xffffff00 broadcast 192.168.168.255

inet 192.168.168.54 netmask 0xffffff00 broadcast 192.168.168.255

inet 192.168.168.55 netmask 0xffffff00 broadcast 192.168.168.255

ether 00:80:c8:f6:0d:61

f.检查是否有kld后门

小组开发的ksec软件,可以部份地检查出FreeBSD系统中存在的kld后门。

g.检查网络上的其它系统

除了已知被侵入的系统外,你还应该对网络上所有的系统进行检查。主要检查和被侵入主机共享网络服务(例如:NIX、NFS)或者通过一些机制(例如:hosts.equiv、.rhosts文件,或者kerberos服务器)和被侵入主机相互信任的系统。

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