1、SSH
主要的安全配置文件是/etc/ssh/sshd_config文件,我们编辑该文件。
(1) 使用protocol 2代替protocol 1,SSH2更加安全,可以防止攻击者通过修改携带的版本banner来劫持(hijacking)启动会话进程并降低到protocol 1。注释掉protocol 2,1 改用下面语句代替:
protocol 2
(2) 合理设置最大连接数量, 防止DOS攻击
MaxStartups 5:50:10
(3)关闭X11forwording ,防止会话劫持
X11Forwarding no
(4)建议不使用静态密码,而使用DSA 或RSA KEY,修改如下内容可以关闭使用密码认证:
PasswordAuthentication no
(5)可以限制某个组或光是单个用户访问shell
AllowGroups wheel
或者
AllowUsers heiyeluren
(6) 限制root用户登陆,主要是为了防止暴力破解
PermitRootLogin no
(7) 不允许口令为空的用户登陆
PermitEmptyPasswords no
(使用TCP wrappers来限制一些访问,修改/etc/hosts.allow文件,注释掉"ALL : ALL : allow",增加如下内容:
sshd:localhost:allow
sshd:friendlcomputer:allow
sshd:all : deny
#相关命令:
#chsh -s /sbin/nologin user
2、Unix/Linux上的后门技术和防范
对黑客来讲,入侵一个系统只是万里长征的开始,最主要的是长期占有一个肉鸡(傀儡机),所以,后门技术往往非常重要。对于我们来讲,总是处于被动的地位,百密一疏,总有没有做到位的地方,谁都不能保证自己的系统是绝对安全的,所以不能避免我们可能会被入侵。黑客入侵后肯定会留后门,当然,除了那些高手,境界非常高,入侵只是为了测试或者技术挑战,对于一般黑客来讲,入侵之后留个后门是很重要的,我们要防范,当然就要了解常用的后门技术,下面就简单的讲将在Unix/Linux系统中比较常见的后门技术。
1. 帐号后门
最普通和原始的后门技术,一般就是在系统中添加一个管理员帐户。
# echo "username:*:0:0::/root:/bin/sh" >> /etc/passwd
# echo "username::0:0::0:0::/root:/bin/sh" >> /etc/shadow
给系统增加一个 uid和gid都为0(root)的帐号,无口令。
FreeBSD的密码是存储在 /etc/master.passwd里面的,那么后面的命令就应该改成:
# echo "username:::::::::" >> /etc/master.passwd
也可以使用程序来实现:
/* Add super user */
#i nclude "stdio.h"
#define PASSWD_PATH "/etc/passwd"
#define SHADOW_PATH "/etc/master.passwd"
main()
{
FILE *fd;
fd = fopen(PASSWD_PATH, "a+");
fprintf(fd, "heiyeluren:*:0:0::/root:/bin/sh\n");
fclose(fd);
fd = fopen(SHADOW_PATH, "a+");
fprintf(fd, "heiyeluren::0:0::0:0::/root:/bin/sh\n");
fclose(fd);
}
# gcc -o adduser adduser.c
# ./adduser
这种方法比较傻,一般比较容易发现,特别是系统帐户不多的时候。也有的用户名起的比较迷惑人,比如起个r00t的用户名,uid和gid都是0,这样如果不注意,可能就会被蒙混过关了。
* 防范方法:
这种方法虽然比较容易发现,但是我们还是要防范,要多注意观察系统的帐户情况,本来我们系统帐户就不多,检查起来比较方便,另外也要注意那些比较少使用的帐户是不是被更改过,比如默认的帐户有bind,它的shell是 /usr/sbin/nologin,就是不能登陆的,但是黑客入侵后把它改了,比如改为/bin/csh,那么对方就能登陆了,但是你确不知道。所以最好办法是把/etc/passwd另外备份一份,不定期的检查,同时把/etc/passwd和/etc/master.passwd设为只有root才能查看。
2. shell后门
这个比较常用,也比较流行。一般就是把root执行的shell程序通过setuid的形式把shell程序拷贝到其他能够执行的地方,然后只要用小权限用户执行该shell就能够直接获取root权限。
比如:
# cp /bin/sh /tmp/.backdoor
# chown root:root /tmp/.backdoor
# chmod +s /tmp/.backdoor
这样只是把sh复制了,如果你喜欢其他shell,比如ksh、csh也可以,具体你看各个不同的操作系统而定。你就可以把那个加了s标记的shell程序放到任何目录,最好是深一点,不容易被人发现的地方,比如/usr/local/share/man之类的目录,然后你使用小权限用户登陆后执行该shell就可以了,比如我们上面复制的shell,我们只要用小权限用户登陆后执行:
$ /tmp/.backdoor
#
就可以了,当然,如何获得小权限用户,你可以使用暴力破解一些帐户,或者自己创建一个小权限的帐户。
* 防范方法:
首先给各个主要目录加上我们上面说的文件指纹校验,知道某个目录下有什么文件,如果多出了可疑文件可以仔细检查。还有使用find命令来查找有没有危险的root suid程序:
find / -type f (-perm -4000 -o -perm -2000 ) -print
3. Crontab服务后门
crontab命令就相当于windows下的at命令,定期执行某些任务。对黑客来讲,比如定期建立一个帐户,然后过多久就删除,这样管理员永远看不到系统中有后门,这样是非常保险的。。
* 防范方法:
cron的服务默认是存储在 /var/spool/crontab/root目录下,定期检查cron服务,看是否有异常的任务在执行,或者如果你不使用cron的话,直接关闭掉它。
4. rhosts后门
Rhosts文件常常被黑客利用来制作后门,如果系统开了rlogin、rexec等r的服务,因为象rlogin这样的服务是基于rhosts文件里的主机名使用简单的认证方法,所以黑客只要将.rhosts文件设置成"++",那么就允许任何人从任何地方使用该用户名,无须口令登陆513端口的rlogin服务就行。而且r之类的服务没有日志能力,不容易被发现。
实现方法:
# echo "++" > /usr/heiyeluren/.rhosts
# rlogin -l heiyeluren localhost
这样就不需要任何密码,直接输入用户名heiyeluren就登陆到了系统。
* 防范办法:
不要使用rlogin等服务,同时也不推荐使用telnet等服务,因为telnetd等守护进程溢出漏洞一堆,而且在数据传输过程中是没有加密的,很容易被嗅探,建议使用ssh等经过安全加密的服务来替代。
5. Login后门
login程序通常用来对telnet来的用户进行口令验证. 入侵者获取login的原代码并修改使它在比较输入口令与存储口令时先检查后门口令. 如果用户敲入后门口令,它将忽视管理员设置的口令让你长驱直入。
* 防范方法:
一般针对这类后门,一般都是使用"string"命令搜索login程序中是否有中是否有密码等字符串来进行检查。如果密码经过加密,那么就对login文件进行指纹记录和MD5值的记录,觉得异常时进行检测。
6. Bind后门
就是通过常用的网络连接协议 TCP/UDP/ICMP 来建立连接的后门,这个在Windows下可是轰轰烈烈。
比较普遍的有TCP协议的后门都是写一段程序开一个指定的端口进行监听,然后从客户端进行连接后登陆系统。也有黑客为了隐蔽使用UDP协议来连接。icmp后门也常见,一般是。有时候可能bind后门跟服务后门结合,黑客通过自己写的bind后门来替换inetd中的服务。
* 防范方法:
经常使用netstat命令检查有没有非法的端口打开,最好直接用防火墙屏蔽除了正常访问的端口之外的端口。对于ping后门的话,直接在防火墙上禁止ping服务器
7. 服务后门
一般是替换或者添加服务来实现后门。比如在 /etc/inetd.conf 中添加或者替换某个服务来运行自己的后门程序,或者在某些服务中加入自己的后门代码。如果是替换服务的话,该服务必须不被使用,而且不容易发现。如果是自己添加的服务,那么必须在/etc/services中设置对应的服务和端口才能使用。
* 防范方法:
经常检查服务,最好备份 /etc/inetd.conf 、/etc/services等文件,同时在FreeBSD下也要时常检查 /usr/loca/etc/rc.d 下面的脚本是否是合法的并且是否那些脚本里面有没有启动非法程序。如果是在服务程序中添加自己的代码,那么就要对文件的指纹进行校验,比如md5值看是否匹配。
8. rootkit后门
rootkit后门一般是替换管理员使用的工具,比如ls、ps、netstat、who等常用文件,把那些程序替换成被黑客加了特殊代码的程序,那样就能达到控制的效果。而且现在已经有很多现成能下载使用的rootkit。
* 防范方法:
按照我们前面的方法,给每个文件建立系统指纹档案和md5校验值,如果觉得不对劲的时候查看文件指纹是否匹配,有没有别修改过,就知道是否着了rootkit的道。
9. 内核后门
通过加载内核模块的方式来加载后门,比较复杂。一般内核后门都是针对操作系统而言的,不同的操作系统内核模块设置编写方法都不一样,一般不通用。内核后门一般无法通过md5校验等来判断,所有基本比较难发现,目前针对内核后门比较多的是Linux和Solaris下。
* 防范方法:
FreeBSD下通过我们上面讲的设置内核安全等级来控制加载内核模块。
10. 其他后门
还有包括.forward等其他各类后门,另外很多后门可能是结合多种技术,比如把rootkit和内核后门结合在一起,实际过程中,黑克是会更难对付的。当然还有许多我们没有发现高手独门秘诀,这需要灵活检查,不过只要勤劳一点,安全会提升很多。
安全是一个整体,即使那么服务你设置的非常安全,但是不能保证永远安全,安全是动态的,必须不断的充实自己的知识,发现新漏洞、新技术。如果你需要更安全的系统,一定要自己有时常能够手工作入侵检测或者使用部分工具帮助你进行入侵检测。同时推荐你安装一些网络入侵检测系统(NIDS),比如Snort。