频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

Unix系统高级安全设置

来源: 作者:KCN 出处:巧巧读书 2006-09-18 进入讨论组
上一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 下一页 
访问 http://www.qqread.com/unix/h209529.html
  3.2.2.16 更好地控制mount上的文件系统

  可以用一些选项,如:noexec、nodev和nosuid,更好地控制mount上的文件系统,如:“/home”和“/tmp”。这些都在“/etc/fstab”文件中设定。fstab文件包含了各个文件系统的描述信息。如果想知道在这个文件中可以设定哪些选项,请用man命令查看关于mount的帮助。

  编辑fstab文件(vi /etc/fstab),并根据需要把这两行:

  /dev/sda11 /tmp ext2 defaults 1 2

  /dev/sda6 /home ext2 defaults 1 2

  改变成:

  /dev/sda11 /tmp ext2 nosuid,nodev,noexec 1 2

  /dev/sda6 /home ext2 nosuid,nodev 1 2

  “nodev”表示不允许在这个文件系统上有字符或特殊的块设备。“nosuid”表示不允许设定文件的suid(set-user-identifier)和sgid(set-group-identifier)许可位。“noexec”表示不允许文件系统上有任何可执行的二进制文件。

  注意:上面的例子中,“/dev/sda11”mount到“/tmp”目录上,而“/dev/sd6”mount到“/home”目录上。当然这和你的实际情况会有所不同,这些取决于你是怎么分区的以及用什么样的硬盘,例如:IDE硬盘是hda、hdb,等等,而SCSI硬盘是sda、sdb,等等。

  3.2.2.17 把rpm程序转移到一个安全的地方,并改变默认的访问许可

  一旦在Linux服务器上用rpm命令安装完所有需要的软件,最好把rpm程序转移到一个安全的地方,如:软盘或其它你认为安全的地方。因为如果有人入侵了你的服务器,他就不能用rpm命令安装那些有害的软件。当然,如果将来要用rpm安装新的软件,你就要把rpm程序拷回原来的目录。

  把rpm程序移到软盘上,用下面的命令:

  [root@cnns]# mount /dev/fd0 /mnt/floppy/

  [root@cnns]# mv /bin/rpm /mnt/floppy/

  [root@cnns]# umount /mnt/floppy

  注意:千万不要把rpm程序从系统中卸载掉,否则以后就不能重新安装它,因为安装rpm程序或其它软件包本身就要用rpm命令。

  还有一点要注意的是,把rpm命令的访问许可从默认的755改成700。这样非root用户就不能使用rpm命令了。特别是考虑到万一在安装完新软件之后忘了把rpm程序移到一个安全的地方,这样做就更有必要了。

  改变“/bin/rpm”默认的访问权限,用下面这个命令:[root@cnns]# chmod 700 /bin/rpm

  3.2.2.18 登录shell

  为了方便重复输入很长的命令,bash shell可以在“~/.bash_history”文件(“~/”是家目录,每个用户都是不一样的)中存500个曾经输入过的命令。每一个有自己帐号的用户,在自己的家目录中,都会有“.bash_history”文件。可能会有这种情况,用户在不该输入口令的地方输入了口令,而输入的口令会在“.bash_history”文件中保存下来。而且“.bash_history”文件越大这种可能性也越大。

  在“/etc/profile”文件中HISTFILESIZE和HISTSIZE这两行决定了系统中所有用户的“.bash_history”文件可以保存多少命令。我建议把“/etc/profile”文件中的HISTFILESIZE和HISTSIZE都设成一个比较小的值,如:20。 编辑profile文件(vi /etc/profile),把这些行改成:HISTFILE0HIST0

  这样每个用户家目录下的“.bash_history”就最多只能存20个命令。如果黑客试图在用户的“~/.bash_history”文件中发现一些口令,他就没有什么机会了。

  3.2.2.19 “/etc/lilo.conf”文件

  LILO是Linux上一个多功能的引导程序。它可以用于多种文件系统,也可以从软盘或硬盘上引导Linux并装入内核,还可以做为其它操作系统的“引导管理器”。根(/)文件系统对LILO来说很重要,有下面这两个原因:第一:LILO要告诉内核到那里去找根文件系统;第二:LILO要用到的一些东西,如:引导扇区、“/boot”目录和内核就存放在根文件系统中。引导扇区包括LILO引导程序的第一部分,这个部分在引导阶段的后半部分还要装入更大的引导程序。

  这两个引导程序通常存在“/boot/boot.b”文件中。内核是由引导程序装入并启动的。在RedHat Linux系统中,内核通常在根目录或“/boot”目录下。

  因为LILO对Linux系统非常重要,所以我们要尽可能地保护好它。LILO最重要的配置文件是“/etc”目录下的“lilo.conf”文件。用这个文件我们可以配置或提高LILO程序以及Linux系统的安全性。下面是LILO程序的三个重要的选项设置。

  1)加入:timeout=00

  这项设置设定LILO在引导默认的系统之前,等候用户输入的时间。C2安全等级规定这个时间间隔必须设成0,因为多重引导会使系统的安全措施形同虚设。除非想用多重引导,否则最好把这项设成0。

  2)加入:restricted

  当LILO引导的时候,输入参数linux single,进入单用户(single)模式。因为单用户模式没有口令验证,所以可以在LILO引导时,加上口令保护。“restricted”选项只能和“password”合起来用。注意要给每个内核都要加上口令保护。

  3)加入:password=

  用单用户模式启动Linux系统的时候,系统要求用户输入这个口令。口令是大小写敏感的,而且要注意,要让“/etc/lilo.conf”文件,除了root之外,其他用户没有读的权限,这样也就看不到口令了。下面是用“lilo.conf”文件保护LILO的一个具体例子。

  第一步:

  编辑lilo.conf文件(vi /etc/lilo.conf),加上或改变下面介绍的三个设置:

  boot=/dev/sda

  map=/boot/map

  install=/boot/boot.b

  prompt

  timeout=00 ? change this line to 00.

  Default=linux

  restricted ? add this line.

  password= ? add this line and put your password.

  image=/boot/vmlinuz-2.2.12-20

  label=linux

  initrd=/boot/initrd-2.2.12-10.img

  root=/dev/sda6

  read-only

  第二步

  因为“/etc/lilo.conf”配置文件里,存在没有经过加密的口令,所以只有root才能有读的权限。用下面的命令改变文件的权限:

  [root@cnns]# chmod 600 /etc/lilo.conf (will be no longer world readable).

  第三步

  使改变后的“/etc/lilo.conf”配置文件生效:

  [root@cnns]# /sbin/lilo -v (to update the lilo.conf file).

  第四步

  为了更安全一点,可以用chattr命令给“lilo.conf”文件加上不可改变的权限。让文件不可改变用下面的命令:

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

  这样可以避免“lilo.conf”文件因为意外或其它原因而被改变。如果想要改变“lilo.conf”文件,必须先清除它的不可改变标志。

  清除不可改变的标记用下面的命令:

  [root@cnns]# chattr -i /etc/lilo.conf

  3.2.2.20 使Control-Alt-Delete关机键无效

  把“/etc/inittab”文件中的一行注释掉可以禁止用Control-Alt-Delete关闭计算机。如果服务器不是放在一个安全的地方,这非常重要。

  编辑inittab文件(vi /etc/inittab)把这一行:

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

  改为:

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

  用下面的命令使改变生效:

  [root@cnns]# /sbin/init q

  3.2.2.21 改变“/etc/rc.d/init.d/”目录下的脚本文件的访问许可改变启动和停止daemon的脚本文件的权限。

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

  这样只有root可以读、写和执行这个目录下的脚本。我想一般用户没有什么必要知道脚本文件的内容。

  注意:如果你安装或升级了一个程序,要用到“/etc/rc.d/init.d/”中system V脚本,不要忘记再检查一下改变和检查这个脚本文件的许可。

  3.2.2.22 “/etc/rc.d/rc.local”文件

  在默认情况下,当登录装有Linux系统的计算机时,系统会告诉你Linux发行版的名字、版本号、内核版本和服务器名称。这泄露了太多的系统信息。最好只显示一个“Login:”的提示信息。

  第一步

  编辑“/ect/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”目录下的“issue.net”和“issue”文件:

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

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

  注意:“/etc/issue.net”文件是用户从网络登录计算机时(例如:telnet、SSH),看到的登录提示。同样在“/etc”目录下还有一个“issue”文件,是用户从本地登录时看到的提示。

  这两个文件都是文本文件,可以根据需要改变。但是,如果想删掉这两个文件,必须向上面介绍的那样把“/etc/rc.d/rc.local”脚本中的那些行注释掉,否则每次重新启动的时候,系统又会重新创建这两个文件。

  3.2.2.23 带“s”位的程序

  用ls -l命令列出来的文件,如果文件的权限位中出现“s”,则这些文件的SUID(-rwsr-xr-x)或SGID(-r-xr-sr-x)位被设定了。因为这些程序给执行它的用户一些特权,所以如果不需要用到这些特权,最好把这些程序的“s”位移去。可以用下面这个命令“chmod a-s <文件名>”移去相应文件的“s”位。

  可以清除“s”位的程序包括但不限于:

  1)从来不用的程序

  2)不希望非root用户运行的程序

  3)偶尔用用,但是不介意先用su命令变为root后再运行。

  下面加了星号(*)的程序,我个人认为有必要移去“s”位。注意,系统可能需要一些SUID的程序才能正常运行,所以要千万小心。

  用下面的命令查找所有带“s”位的程序:

  [root@cnns]#find / -type f \( -perm -04000 -o -perm -02000 \) \-exec

  ls -lg {} \;

  

  *-rwsr-xr-x 1 root root 35168 Sep 22 23:35 /usr/bin/chage

  *-rwsr-xr-x 1 root root 36756 Sep 22 23:35 /usr/bin/gpasswd

  *-r-xr-sr-x 1 root tty 6788 Sep 6 18:17 /usr/bin/wall

  -rwsr-xr-x 1 root root 33152 Aug 16 16:35 /usr/bin/at

  -rwxr-sr-x 1 root man 34656 Sep 13 20:26 /usr/bin/man

  -r-s--x--x 1 root root 22312 Sep 25 11:52 /usr/bin/passwd

  -rws--x--x 2 root root 518140 Aug 30 23:12 /usr/bin/suidperl

  -rws--x--x 2 root root 518140 Aug 30 23:12 /usr/bin/sperl5.0050

  3

  -rwxr-sr-x 1 root slocate 24744 Sep 20 10:29 /usr/bin/slocate

  *-rws--x--x 1 root root 14024 Sep 9 01:01 /usr/bin/chfn

  *-rws--x--x 1 root root 13768 Sep 9 01:01 /usr/bin/chsh

  *-rws--x--x 1 root root 5576 Sep 9 01:01 /usr/bin/newgrp

  *-rwxr-sr-x 1 root tty 8328 Sep 9 01:01 /usr/bin/write

  -rwsr-xr-x 1 root root 21816 Sep 10 16:03 /usr/bin/crontab

  *-rwsr-xr-x 1 root root 5896 Nov 23 21:59 /usr/sbin/usernetctl

  *-rwsr-xr-x 1 root bin 16488 Jul 2 10:21 /usr/sbin/traceroute

  -rwxr-sr-x 1 root utmp 6096 Sep 13 20:11 /usr/sbin/utempter

  -rwsr-xr-x 1 root root 14124 Aug 17 22:31 /bin/su

  *-rwsr-xr-x 1 root root 53620 Sep 13 20:26 /bin/mount

  *-rwsr-xr-x 1 root root 26700 Sep 13 20:26 /bin/umount

  *-rwsr-xr-x 1 root root 18228 Sep 10 16:04 /bin/ping

  *-rwxr-sr-x 1 root root 3860 Nov 23 21:59 /sbin/netreport

  -r-sr-xr-x 1 root root 26309 Oct 11 20:48 /sbin/pwdb_chkpwd

  用下面的命令禁止上面选出来的SUID的程序:

  [root@cnns]# chmod a-s /usr/bin/chage

  [root@cnns]# chmod a-s /usr/bin/gpasswd

  [root@cnns]# chmod a-s /usr/bin/wall

  [root@cnns]# chmod a-s /usr/bin/chfn

  [root@cnns]# chmod a-s /usr/bin/chsh

  [root@cnns]# chmod a-s /usr/bin/newgrp

  [root@cnns]# chmod a-s /usr/bin/write

  [root@cnns]# chmod a-s /usr/sbin/usernetctl

  [root@cnns]# chmod a-s /usr/sbin/traceroute

  [root@cnns]# chmod a-s /bin/mount

  [root@cnns]# chmod a-s /bin/umount

  [root@cnns]# chmod a-s /bin/ping

  [root@cnns]# chmod a-s /sbin/netreport

  如果你想知道这些程序到底有什么用,可以用man命令查看帮助。

  例如:[root@cnns]# man netreport 更多文章 更多内容请看路由安全配置专题系统优化大全系统安全设置专题,或进入讨论组讨论。
上一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 下一页 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
最新论坛文章
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章