文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>一步步提高Linux的安全性

一步步提高Linux的安全性

时间:2006-01-10  来源:xiaophedap

   通过以下的步骤,能让你的Linux系统比默认安装的更加安全可靠。其中有些步骤是需要系统管理员定期来操作的,当然,如果你比较懒惰,而你的水平又足够,完全可以通过crontab来实现。    这篇关于提高Linux安全性的文章肯定还不够全面,如果你有什么好的意见,可以直接写mail给我:[email protected]      提高Linux安全性的步骤:    1. 设置BIOS密码       这是最基本的步骤了,而且一定要给Bios设置密码,以防通过在Bios中改变启动顺序,而可以从软盘启动。这样可以阻止别人试图用特殊的启动盘启动你的系统,还可以阻止别人进入Bios改动其中的设置(比如允许通过软盘启动等)。     2. 设置LILO或GRUB的启动密码       在"/etc/lilo.conf"文件中加入下面三个参数:time-out,restricted,password。这三个参数可以使你的系统在启动lilo时就要求密码验证。       这里只是简单介绍一下LILO密码的设定,再另一篇文章中,我会详细说到LILO和GRUB密码的设定问题。       (1)编辑lilo.conf文件(vi /etc/lilo.conf),加入和改变以下三个参数:          boot=/dev/hda  
         map=/boot/map  
         install=/boot/boot.b  
         time-out=00   #把这行该为00 
         prompt  
         Default=linux  
         restricted   #加入这行 
         password=   #加入这行并设置自己的密码 
         image=/boot/vmlinuz-2.2.14-12  
         label=linux  
         initrd=/boot/initrd-2.2.14-12.img  
         root=/dev/hda6  
         read-only
      (2)"/etc/lilo.conf"文件中包含明文密码,所以要把它设置为root权限读取          #chmod 600 /etc/lilo.conf       (3)更新,以便对"/etc/lilo.conf"文件做的修改起作用          #/sbin/lilo -v       (4)使用"chattr"命令使"/etc/lilo.conf"文件变为不可更改          #chattr +i /etc/lilo.conf    3. 删除所有你并不需要使用到的特殊账户       你应该删除所有你并不使用的缺省用户和组账户(比如lp,sync,shutdown,halt,news,uucp,operator,games,gopher等)       (1)删除用户          #userdel lp       (2)删除用户组          #groupdel lp    4. 设定密码长度       在你安装linux时默认的密码长度是5个字节。但这并不够,要把它设为8。修改最短密码长度需要编辑login.defs文件(vi /etc/login.defs)。修改如下内容:       PASS_MIN_LEN    5       修改为       PASS_MIN_LEN    8       说明:login.defs文件是login程序的配置文件。    5. 设定安全可靠的密码       这一点就不想多说了,谁都知道一个不安全可靠的密码往往是第一个被攻破的对象。    6. 打开密码的shadow支持功能       这一点在Linux安装的过程中也可以选择,不过,如果在安装的过程中没有打开此功能,你可以通过如下方法来实现。       使用"/usr/sbin/authconfig"工具打开shadow功能。然后分别使用"pwcov,grpconv"命令把已有的密码和组转变为shadow格式。    7. root账户的时限问题       在unix系统中root账户是具有最高特权的,这就好比是windows系统中的Administrator账户。如果系统管理员在离开系统之前忘记注销root账户,可以让系统自动注销。这样可以有效的避免别人利用此空当用root来操作。       通过修改账户中"TMOUT"参数,可以实现此功能。TMOUT按秒计算。编辑你的profile文件(vi /etc/profile),在"HISTFILESIZE="后面加入下面这行       TMOUT=3600       3600,表示60*60=3600秒,也就是1小时。这样,如果系统中登陆的用户在一个小时内都没有动作,那么系统会自动注销这个账户。你可以在个别用户的".bashrc"文件中添加该值,以便系统对该用户实行特殊的自动注销时间。改变这项设置后,必须先注销用户,再用该用户登陆才能激活这个功能。    8. 取消普通用户reboot,halt,shutdown之类的权限       应该取消普通用户的控制台访问权限,比如shutdown、reboot、halt等命令。       #rm -f /etc/security/console.apps/你要注销的程序名    9. 取消并反安装所有不用的服务       取消并反安装所有不用的服务,这样你的担心就会少很多。察看"/etc/inetd.conf"文件,通过注释取消所有你不需要的服务(在该服务项目之前加一个"#")。然后用"sighup"命令升级"inetd.conf"文件。          (1)更改"/etc/inetd.conf"权限为600,只允许root来读写该文件             #chmod 600 /etc/inetd.conf          (2)确定"/etc/inetd.conf"文件所有者为root             #ls -l /etc/inetd.conf          (3)编辑/etc/inetd.conf文件(vi /etc/inetd.conf),取消下列服务(你不需要的):ftp,telnet,shell,login,exec,talk,ntalk,imap,pop-2,pop-3,finger,auth等等。把不需要的服务关闭可以使系统的危险性降低很多。          (4)给inetd进程发送一个HUP信号             #killall -HUP inetd          (5)用chattr命令把/ec/inetd.conf文件设为不可修改,这样就没人可以修改它             #chattr +i /etc/inetd.conf             这样可以防止对inetd.conf的任何修改。唯一可以取消这个属性的人只有root。如果要修改inetd.conf文件,首先要是取消不可修改性质:             #chattr -i /etc/inetd.conf             需要提醒的是,修改完了以后,不要忘记再次将它的属性修改成不可更改的。    10. TCP_WRAPPERS的设置       使用TCP_WRAPPERS可以使你的系统安全面对外部入侵。最好的策略就是阻止所有的主机(在"/etc/hosts.deny"文件中加入"ALL: ALL@ALL, PARANOID"),然后再在"/etc/hosts.allow"文件中加入所有允许访问的主机列表       (1)编辑hosts.deny文件(vi /etc/hosts.deny),加入下面的内容:          # Deny access to everyone          ALL: ALL@ALL, PARANOID          这表明除非该地址包好在允许访问的主机列表中,否则阻塞所有的服务和地址。       (2)编辑hosts.allow文件(vi /etc/hosts.allow),加入允许访问的主机列表,比如:          # Allow crystal.chen ftp          ftp: 10.1.1.10 crystal.chen          10.1.1.10和crystal.chen是允许访问ftp服务的ip地址和主机名称。       (3)tcpdchk程序是tepd wrapper设置检查程序。它用来检查你的tcp wrapper设置,并报告发现的潜在的和真实的问题。设置完后,运行下面这个命令:          #tcpdchk    11. 禁止系统信息暴露       当有人远程登陆时,禁止显示系统欢迎信息。你可以通过修改"/etc/inetd.conf"文件来达到这个目的。       把/etc/inetd.conf文件下面这行:       telnet  stream  tcp     nowait root    /usr/sbin/tcpd  in.telnetd       修改为:       telnet  stream  tcp     nowait  root    /usr/sbin/tcpd  in.telnetd -h       在最后加"-h"可以使当有人登陆时只显示一个login:提示,而不显示系统欢迎信息。    12. 修改"/etc/host.conf"文件       "/etc/host.conf"说明了如何解析地址。编辑"/etc/host.conf"文件(vi /etc/host.conf),加入下面这行:       # Lookup names via DNS first then fall back to /etc/hosts.       order bind,hosts       # We have machines with multiple IP addresses.       multi on       # Check for IP address spoofing.       nospoof on       第一项设置首先通过DNS解析IP地址,然后通过hosts文件解析。第二项设置检测是否"/etc/hosts"文件中的主机是否拥有多个IP地址(比如有多个以太口网卡)。第三项设置说明要注意对本机未经许可的电子欺骗。    13. 使"/etc/services"文件免疫       即将/etc/services文件的属性设定成不可更改       #chattr +i /etc/services    14. 不允许从不同的控制台进行root登陆       "/etc/securetty"文件允许你定义root用户可以从那个TTY设备登陆。你可以编辑"/etc/securetty"文件,在不需要登陆的TTY设备前添加"#"标志,来禁止从该TTY设备进行root登陆。    15. 禁止任何人通过su命令改变为root用户       su(Substitute User替代用户)命令允许你成为系统中其他已存在的用户。如果你不希望任何人通过su命令改变为root用户或对某些用户限制使用su命令,你可以在su配置文件(在"/etc/pam.d/"目录下)的开头添加下面两行(vi /etc/pam.d/su):       auth sufficient /lib/security/pam_rootok.so debug       auth required /lib/security/Pam_wheel.so group=wheel       这表明只有"wheel"组的成员可以使用su命令成为root用户。你可以把用户添加到"wheel"组,以使它可以使用su命令成为root用户。    16. Shell logging       Bash shell在"~/.bash_history"("~/"表示用户目录)文件中保存了500条使用过的命令,这样可以使你输入使用过的长命令变得容易。每个在系统中拥有账号的用户在他的目录下都有一个".bash_history"文件。修改此属性,让Bash shell保存少量的命令,并且在每次用户注销时都把这些历史命令删除。       (1)"/etc/profile"文件中的"HISTFILESIZE"和"HISTSIZE"行确定所有用户的".bash_history"文件中可以保存的旧命令条数。强烈建议把把"/etc/profile"文件中的"HISTFILESIZE"和"HISTSIZE"行的值设为一个较小的数,比如30。编辑profile文件(vi /etc/profile),把下面这行改为:       HISTFILESIZE=30       HISTSIZE=30       这表示每个用户的".bash_history"文件只可以保存30条旧命令。       (2)还应该在"/etc/skel/.bash_logout"文件中添加下面这行"rm -f $HOME/.bash_history"。这样,当用户每次注销时,".bash_history"文件都会被删除。       编辑.bash_logout文件(vi /etc/skel/.bash_logout),添加下面这行:       rm -f $HOME/.bash_history     17. 禁止Control-Alt-Delete键盘关闭命令       windows的用户一定对这个键盘组合非常熟悉,而Linux中默认也有该组合。系统安装完以后,一定要禁掉该组合。       在"/etc/inittab"文件中注释掉下面这行(使用#):       ca::ctrlaltdel:/sbin/shutdown -t3 -r now       修改为       #ca::ctrlaltdel:/sbin/shutdown -t3 -r now       为了使这项改动起作用,输入下面这个命令:       #/sbin/init q    18. 给"/etc/rc.d/init.d"下script文件设置权限       给执行或关闭启动时执行的程序的script文件设置权限。       #chmod -R 700 /etc/rc.d/init.d/*       这表示只有root才允许读、写、执行该目录下的script文件。    19. 隐藏系统信息       在缺省情况下,当你登陆到linux系统,它会告诉你该linux发行版的名称、版本、内核版本、服务器的名称。对于黑客来说这些信息足够它入侵你的系统了。你应该只给它显示一个"login:"提示符。       (1)编辑"/etc/rc.d/rc.local" 文件,在下面显示的这些行前加一个"#",把输出信息的命令注释掉。       # This will overwrite /etc/issue at every boot. So, make any changes you       # Want to make to /etc/issue here or you will lose them when you reboot.       #echo "" > /etc/issue       #echo "$R" >> /etc/issue       #echo "Kernel $(uname -r) on $a $(uname -m)" >> /etc/issue       #cp -f /etc/issue /etc/issue.net       #echo >> /etc/issue       (2)删除"/etc"目录下的"isue.net"和"issue"文件:       #rm -f /etc/issue       #rm -f /etc/issue.net    20. 禁止不使用的SUID/SGID程序       如果一个程序被设置成了SUID root,那么普通用户就可以以root身份来运行这个程序。应尽可能的少使用SUID/SGID程序,禁止所有不必要的SUID/SGID程序。       查找root-owned程序中使用's'位的程序:       #find / -type f \( -perm -04000 -o -perm -02000 \) \-exec ls -lg {} \;       用下面命令禁止选中的带有's'位的程序:       # chmod a-s [program_name]       经过以上步骤以后,就能够在一定程度上提高系统的安全性。虽然这些步骤操作起来的确麻烦一些,但是对系统的稳定安全的运行有很大的好处。比较起发生问题以后再来进行的补救措施,这些麻烦,也就显示出必要了。    最后,还需要说明的是,不要以为做了以上操作,系统就绝对安全了,最不安全的系统,是一个麻痹大意的管理员所管理的系统,牢记这句话才是提高系统安全性的最佳措施。
相关阅读 更多 +
排行榜 更多 +
崩溃大陆2鱼竿如何获取

崩溃大陆2鱼竿如何获取

冒险解谜 下载
狙击手行动

狙击手行动

冒险解谜 下载
狙击突围行动最新版

狙击突围行动最新版

冒险解谜 下载