zoukankan      html  css  js  c++  java
  • Linux 安全配置指南

    1、Bios Security

      一定要给Bios设置密码,以防通过在Bios中改变启动顺序,而可以从软盘启动。这样可以阻止别人试图用特殊的启动盘启动你的系统,还可以阻止别人进入Bios改动其中的设置(比如允许通过软盘启动等)。

    2、LILO Security

      在"/etc/lilo.conf"文件中加入下面三个参数:time-out,restricted,password。这三个参数可以使你的系统在启动lilo时就要求密码验证。

      第一步:

      编辑lilo.conf文件(vi /etc/lilo.comf),假如或改变这三个参数:

      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

      第二步:

      因为"/etc/lilo.conf"文件中包含明文密码,所以要把它设置为root权限读取。

      [root@kapil /]# chmod 600 /etc/lilo.conf

      第三步:

      更新系统,以便对"/etc/lilo.conf"文件做的修改起作用。

      [Root@kapil /]# /sbin/lilo -v

      第四步:

      使用"chattr"命令使"/etc/lilo.conf"文件变为不可改变。

      [root@kapil /]# chattr +i /etc/lilo.conf

      这样可以防止对"/etc/lilo.conf"改变

    3、删除所有的特殊账户

      你应该删除所有不用的缺省用户和组账户(比如lp, sync, shutdown, halt, news, uucp, operator, games, gopher等)。

      删除用户:

      [root@kapil /]# userdel LP

      删除组:

      [root@kapil /]# groupdel LP

    4、最短密码

      在选择正确密码之前还应作以下修改:

      修改密码长度:在你安装linux时默认的密码长度是5个字节。但这并不够,要把它设为8。修改最短密码长度需要编辑login.defs文件(vi /etc/login.defs),把下面这行

      PASS_MIN_LEN    5

      改为

     

      PASS_MIN_LEN    8

      login.defs文件是login程序的配置文件。

    5、打开密码的shadow支持功能:

      你应该打开密码的shadow功能,来对password加密。使用"/usr/sbin/authconfig"工具打开shadow功能。如果你想把已有的密码和组转变为shadow格式,可以分别使用"pwcov,grpconv"命令。

      6、设置root账户

      在unix系统中root账户是具有最高特权的。如果系统管理员在离开系统之前忘记注销root账户,系统会自动注销。通过修改账户中"TMOUT"参数,可以实现此功能。TMOUT按秒计算。编辑你的profile文件(vi /etc/profile),在"HISTFILESIZE="后面加入下面这行:

      TMOUT=3600

      3600,表示60*60=3600秒,也就是1小时。这样,如果系统中登陆的用户在一个小时内都没有动作,那么系统会自动注销这个账户。你可以在个别用户的".bashrc"文件中添加该值,以便系统对该用户实行特殊的自动注销时间。

      改变这项设置后,必须先注销用户,再用该用户登陆才能激活这个功能。

    7、取消普通用户的控制台访问权限

      你应该取消普通用户的控制台访问权限,比如shutdown、reboot、halt等命令。

      [root@kapil /]# rm -f /etc/security/console.apps/

      是你要注销的程序名。

    8、取消并卸载所有不用的服务

      取消并卸载所有不用的服务,这样你的担心就会少很多。察看"/etc/inetd.conf"文件,通过注释取消所有你不需要的服务(在该服务项目之前加一个"#")。然后用"sighup"命令升级"inetd.conf"文件。

      第一步:

      更改"/etc/inetd.conf"权限为600,只允许root来读写该文件。

      [Root@kapil /]# 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信号:

      [root@kapil /]# killall -HUP inetd

      第五步:

      用chattr命令把/ec/inetd.conf文件设为不可修改,这样就没人可以修改它:

      [root@kapil /]# chattr +i /etc/inetd.conf

      这样可以防止对inetd.conf的任何修改(以外或其他原因)。唯一可以取消这个属性的人只有root。如果要修改inetd.conf文件,首先要是取消不可修改性质:

      [root@kapil /]# chattr -i /etc/inetd.conf

      别忘了该后再把它的性质改为不可修改的。

      9、TCP_WRAPPERS

      使用TCP_WRAPPERS可以使你的系统安全面对外部入侵。最好的策略就是阻止所有的主机(在"/etc/hosts.deny" 文件中加入 "ALL: ALL@ALL, PARANOID" ),然后再在"/etc/hosts.allow" 文件中加入所有允许访问的主机列表。

      第一步:

      编辑hosts.deny文件(vi /etc/hosts.deny),加入下面这行

      # Deny access to everyone.

      ALL: ALL@ALL, PARANOID

      这表明除非该地址包好在允许访问的主机列表中,否则阻塞所有的服务和地址。

      第二步:

      编辑hosts.allow文件(vi /etc/hosts.allow),加入允许访问的主机列表,比如:

      ftp: 202.54.15.99 foo.com

      202.54.15.99和 foo.com是允许访问ftp服务的ip地址和主机名称。

      第三步:

      tcpdchk程序是tepd wrapper设置检查程序。它用来检查你的tcp  wrapper设置,并报告发现的潜在的和真实的问题。设置完后,运行下面这个命令:

      [Root@kapil /]# tcpdchk

    10、禁止系统信息暴露

      当有人远程登陆时,禁止显示系统欢迎信息。你可以通过修改"/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:提示,而不显示系统欢迎信息。

    11、修改"/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地址(比如有多个以太口网卡)。第三项设置说明要注意对本机未经许可的电子欺骗。

      12、"/etc/services"文件免疫

      使"/etc/services"文件免疫,防止未经许可的删除或添加服务:

      [root@kapil /]# chattr +i /etc/services

      13、不允许从不同的控制台进行root登陆

      "/etc/securetty"文件允许你定义root用户可以从那个TTY设备登陆。你可以编辑"/etc/securetty"文件,再不需要登陆的TTY设备前添加"#"标志,来禁止从该TTY设备进行root登陆。

      14、禁止通过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 debug

      auth required /lib/security/Pam_wheel.so group=wheel

      这表明只有"wheel"组的成员可以使用su命令成为root用户。你可以把用户添加到"wheel"组,以使它可以使用su命令成为root用户。

    15、Shell logging

      Bash shell在"~/.bash_history"("~/"表示用户目录)文件中保存了500条使用过的命令,这样可以使你输入使用过的长命令变得容易。每个在系统中拥有账号的用户在他的目录下都有一个".bash_history"文件。bash shell应该保存少量的命令,并且在每次用户注销时都把这些历史命令删除。

      第一步:

      "/etc/profile"文件中的"HISTFILESIZE"和"HISTSIZE"行确定所有用户的".bash_history"文件中可以保存的旧命令条数。强烈建议把把"/etc/profile"文件中的"HISTFILESIZE"和"HISTSIZE"行的值设为一个较小的数,比如 30。编辑profile文件(vi /etc/profile),把下面这行改为:

      HISTFILESIZE=30

      HISTSIZE=30

      这表示每个用户的".bash_history"文件只可以保存30条旧命令。

      第二步:

      网管还应该在"/etc/skel/.bash_logout" 文件中添加下面这行"rm -f  $HOME/.bash_history" 。这样,当用户每次注销时,".bash_history"文件都会被删除。

      编辑.bash_logout文件(vi /etc/skel/.bash_logout) ,添加下面这行:

      rm -f $HOME/.bash_history

      16、禁止Control-Alt-Delete 键盘关闭命令

      在"/etc/inittab" 文件中注释掉下面这行(使用#):

      ca::ctrlaltdel:/sbin/shutdown -t3 -r now

      改为:

      #ca::ctrlaltdel:/sbin/shutdown -t3 -r now

      为了使这项改动起作用,输入下面这个命令:

      [root@kapil /]# /sbin/init q

      17、给"/etc/rc.d/init.d" 下script文件设置权限

      给执行或关闭启动时执行的程序的script文件设置权限。

      [root@kapil/]# chmod -R 700 /etc/rc.d/init.d/*

      这表示只有root才允许读、写、执行该目录下的script文件。

    18、隐藏系统信息

      在缺省情况下,当你登陆到linux系统,它会告诉你该linux发行版的名称、版本、内核版本、服务器的名称。对于黑客来说这些信息足够它入侵你的系统了。你应该只给它显示一个"login:"提示符。

      第一步:

      编辑"/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

      第二步:

      删除"/etc"目录下的"isue.net"和"issue"文件:

      [root@kapil /]# rm -f /etc/issue

      [root@kapil /]# rm -f /etc/issue.net

      19、禁止不使用的SUID/SGID程序

      如果一个程序被设置成了SUID root,那么普通用户就可以以root身份来运行这个程序。网管应尽可能的少使用SUID/SGID 程序,禁止所有不必要的SUID/SGID程序。

      查找root-owned程序中使用's'位的程序:

      [root@kapil]# find / -type f ( -perm -04000 -o -perm -02000 ) -exec ls -lg {} ;

      用下面命令禁止选中的带有's'位的程序:

      [root@kapil /]# chmod a-s [program]

      根据以上基本设置后,系统管理员会拥有一个相对安全的系统。但管理员必须清楚,安全不是一时的,任何情况下都需要一个持续的过程和不断的改进。

  • 相关阅读:
    我要好offer之 二叉树大总结
    我要好offer之 字符串相关大总结
    楼层扔鸡蛋问题[转]
    Linux System Programming 学习笔记(十一) 时间
    Linux System Programming 学习笔记(十) 信号
    Linux System Programming 学习笔记(九) 内存管理
    Linux System Programming 学习笔记(八) 文件和目录管理
    Linux System Programming 学习笔记(七) 线程
    Linux System Programming 学习笔记(六) 进程调度
    APUE 学习笔记(十一) 网络IPC:套接字
  • 原文地址:https://www.cnblogs.com/ht-927/p/4475963.html
Copyright © 2011-2022 走看看