Linux作为是一个开放源代码的免费操作系统,
以其高效隐定的*质量,越来越受到用户们的欢迎,并在全世界不断普及开来。
相信在不久的将来Linux还会得到更大更快的发展。
虽然,Linux和Unix很相似,但是它们之间还是有不少重要的差别。
对于很多习惯了UNIX和Windows的系统管理员来讲
如何保证Linux操作系统的安全可靠将面临许多新的挑战。
本文在此将给大家介绍一些Linux管理安全的基本技巧,希望能对大家有所帮助。
首先我想从系统的安全配置,开始我们的话题。
因为我个人认为一位管理员要能充分利用系统提供的安全机制、
挖掘系统自身的潜力来对服务器进行高效安全的维护,才能称得上*。
我并不是完全反对使用防火墙等工具,但是正如人一样,
我们可以消毒、可以带口罩,却没有我们自身体魄强健、有抗体来得好。
Linux是完全开放源代码的免费操作系统,其可开发的潜力极大,
有能力的管理员甚至可以通过自行改编内核来满足自己服务器优良工作的需要。
当然,在此我们只讲一些基本,但实用的配置技巧。
一、 ILO的安全设置
LILO是Linux
Loader的缩写,它是LINUX的启动模块。
我们可通过修改「/etc/lilo.conf」文件中的内容来对它进行配置。
在文件中加上,如下两个参
数:restricted,password
。这两个参数可以使您的系统在启动lilo时就要求密码验证。
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=00 #把这行该为00,这样系统启动时将不在等待,而直接启动LINUX
message=/boot/message
linear
default=linux
restricted #加入这行
password= #加入这行并设置自己的密码
image=/boot/vmlinuz-2.4.2-2
label=linux
root=/dev/hda6
read-only
因为"/etc/lilo.conf"文件中包含明文密码,所以要把它设置为root权限读取。
# chmod 0600 /etc/lilo.conf
还要使用「chattr」命令使"/etc/lilo.conf"文件变为不可改变。
# chattr +i /etc/lilo.conf
这样可以对「/etc/lilo.conf」文件起到很好的保护作用。(对其它文件的保护也可以采用此方法)
后要使lilo.conf文件生效要用
# /sbin/lilo -v
更新一下系统。
二、 口令安全
口令可以说是系统的道防线,
目前网络上大部分的系统入侵都是从猜测口令或者截获口令开始的,所以口令安全至关重要。
首先要杜绝不设口令的账号存在。
这可以通过查看/etc/passwd文件来发现。
例如,存在用户名为test的账号,没有设置口令,则在/etc/passwd文件中就有如下一行:
test::100:9::/home/test:/bin/bash
其第二项为空,说明test这个账号没有设置口令,这是非常危险的!应将该类账号删除或者设置口令。
其次,在旧版本的linux中,在/etc/passwd文件中是包含有加密的密码的,
这就给系统的安全性带来了很大的隐患,
简单的方法就是可
以用暴力破解的方法来获得口令(如,用John等工具)。
可以使用命令
/usr/sbin/pwconv或者/usr/sbin/grpconv
来建立
/etc/shadow或者/etc/gshadow文件,
这样在/etc/passwd文件中不再包含加密的密码,
而是放在/etc/shadow文件
中,该文件只有超级用户root可读!
第三点是修改一些系统账号的Shell变量,
例如uucp,ftp和news等,
一些仅仅需要FTP功能的账号,
一定不要给他们设置
/bin/bash或者/bin/sh等 Shell变量。
可以在/etc/passwd中将它们的Shell变量置空,
例如设为/bin/false或者
/dev/null等,
也可以使用usermod -s /dev/null
username命令来更改username的Shell为/dev/null。
这样使用这些账号将无法Telnet远程登录到系统中来!
第四点是修改缺省的密码长度:在安装linux时默认的密码长度是5个字节。
但这并不够,要把它设为8。
修改短密码长度需要编辑login.defs文件(vi/etc/login.defs),把下面这行
PASS_MIN_LEN 5
改为
PASS_MIN_LEN 8
login.defs文件是login程序的配置文件。
后别忙了为root加上一个强壮的密码,8位以上,好包含特殊字符。
三、 登录安全
1、自动注销账号的登录,在unix系统中root账户是具有高特权的。
如果系统管理员在离开系统之前忘记注销root账户,那将会带来很大的
安全隐患,应该让系统会自动注销。
通过修改账户中「TMOUT」参数,可以实现此功能。
TMOUT按秒计算。编辑您的profile文件(vi
/etc/profile),
在"HISTFILESIZE="后面加入下面这行:
TMOUT=300
300,表示300秒,也就是表示5分钟。这样,如果系统中登陆的用户在5分钟内都没有动作,那么系统会自动注销这个账户。可以在个别用户的「.bashrc」文件中添加该值,以便系统对该用户实行特殊的自动注销时间。
改变这项设置后,必须先注销用户,再用该用户登陆才能激活这个功能。
2、使用PAM(可插拔认证模块)禁止任何人通过su命令改变为root用户
su(Substitute User替代用户)
命令允许您成为系统中其它已存在的用户。
如果不希望任何人通过su命令改变为root用户或对某些用户限制使用su命令,
可以在su配置文件(在"/etc/pam.d/"目录下)的开头添加下面两行:
编辑su文件(vi /etc/pam.d/su),在开头添加下面两行:
auth sufficient /lib/security/pam_rootok.so
auth required /lib/security/Pam_wheel.so group=wheel
这表明只有"wheel"组的成员可以使用su命令成为root用户。
您可以把用户添加到「wheel」组,以使它可以使用su命令成为root用户。
添加方法可以用这个命令:chmod -G10 username 。
四、控制台访问安全
1、取消普通用户的控制台访问权限,您应该取消普通用户的控制台访问权限。
比如shutdown、reboot、halt等命令。
# rm -f /etc/security/console.apps/
是您要注销的程序名。
2、不允许从不同的控制台进行root登陆
"/etc/securetty"文件允许定义root用户可以从那个TTY设备登陆。
您可以编辑"/etc/securetty"文件,
在不需要登录的TTY设备前添加「#」标志,来禁止从该TTY设备进行root登陆。
在/etc/inittab文件中有如下一段话:
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
#3:2345:respawn:/sbin/mingetty tty3
#4:2345:respawn:/sbin/mingetty tty4
#5:2345:respawn:/sbin/mingetty tty5
#6:2345:respawn:/sbin/mingetty tty6
系统默认的可以使用6个控制台,即Alt+F1,Alt+F2...,这里在3,4,5,6前面加上「#」,注释该句话,这样现在只有两个控制台可供使用,好保留两个。然后重新启动init进程,改动即可生效!
五、服务安全
取消并反安装所有不用的服务
取消并反安装所有不用的服务,这样的担心就会少很多。
察看「/etc/inetd.conf」文件,通过注释取消所有您不需要的服务(在该服务项目之前加一个「#」)。
然后用「sighup」命令升级「inetd.conf」文件。
步:
更改「/etc/inetd.conf」权限为600,只允许 oot来读写该文件。
# chmod 600 /etc/inetd.conf
第二步:
确定「/etc/inetd.conf」文件所有者为root。
第三步:
编辑 /etc/inetd.conf文件(vi /etc/inetd.conf),
取消下列服务(不需要的):
ftp,
telnet, shell, login, exec, talk, ntalk, imap, pop-2, pop-3, finger,
auth等等。
把不需要的服务关闭可以使系统的危险性降低很多。
第四步:
给inetd进程发送一个HUP信号:
# killall -HUP inetd
第五步:
用chattr命令把/ec/inetd.conf文件设为不可修改,这样就没人可以修改它:
# chattr +i /etc/inetd.conf
这样可以防止对inetd.conf的任何修改(意外或其它原因)。
可以取消这个属性的人只有root。
如果要修改inetd.conf文件,首先要是取消不可修改性质:
# chattr -i /etc/inetd.conf
同时修「/etc/services」文件的属性,防止未经许可的删除或添加服务:
# chattr +i /etc/services
别忘了以后要修改时,再把它们的性质改为可修改的就行了。