当前位置:Linux教程 - Linux - 装备Linux(续)

装备Linux(续)



        
    by Sinbad


    4.连接到你的服务器

    作为系统管理员,需要经常远程对系统进行管理和上传文件,这些通信过程必须要保证是安全的。这里讨论两种选择:ssh和TCP Wrappers。

    我偏向于ssh,它把你和防火墙之间的通信全部进行了加密,而TCP Wrappers并没有做到这一点,所以不能够防止网络中的监听。如果你十分在意网络中用户的监听,建议你用ssh完全取代telnet/ftp,它能够确保数据在网络中的安全传输。ssh和TCP Wrappers相似的地方就是它们都有自己的日志纪录,并且有访问控制策略。想了解更多关于ssh的信息,可以从http://www.ssh.org/download.html获得ssh的服务器端和客户
    端。建议使用1.2.x版本,2.x版本有一定的许可限制。另外一个关于ssh的选择是Openssh(http://www.openssh.org/)。

    TCP Wrappers尽管没有对数据进行加密,但是它有日志系统并且可以控制哪些人可以访问你的系统。它在inted中包装了其他的一些二进制文件,例如telnet和ftp。系统用TCP Wrappers进行inted监听连接,记录了所有请求并且与访问控制列表比较,如果允许连接,TCP Wrappers将调用实际的二进制文件来进行连接,例如telnet服务;如果被拒绝,连接将断开。对我们Linux用户来讲比较幸运的是,TCP Wrappers默认已经安装,我们所要作的就是编辑/etc/hosts.allow和/etc/hosts.deny这两个文件,它们
    决定了谁能访问系统和谁不能访问系统。默认情况下,Linux允许来自任何地方的连接,所以你需要修改配置,根据以下两个原则:

    1)使用IP,不要使用域名。
    2)编辑/etc/hosts.deny,禁止来自任何地方对所有服务的访问。语法为:ALL:ALL,然后在/etc/hosts.allow中添加某些允许访问的主机。

    更详细的例子请参看Linux的帮助文件。

    5.给那些真正的偏执狂

    我觉得上面所讲的应该可以改善你系统的安全性了,但不会是100%的安全,而且永远也不会是,呵呵。所以,添加了一些额外的步骤给那些偏执狂们。:)

    首先新建一个组,就叫wheel吧。这个组包含了一些用户,它们可以执行例如/bin/su等等强大的命令。通过控制其他用户执行这些命令,可以很好的改善系统的安全性。
    编辑/etc/groups,增加wheel组,然后给那些命令仅仅赋予拥有者和同组者的执行权,以/bin/su为例:

    # /bin/chgrp wheel /bin/su
    # /bin/chmod 4750 /bin/su

    第二步,锁定一些文件:.rhosts,.netrc和/etc/hosts.equiv,那些r命令可以通过这些文件远程进入你的系统。先touch出这些文件,然后chmod至0,就可以把它们锁定。

    # /bin/touch /root/.rhosts /root/.netrc /etc/hosts.equiv
    # /bin/chmod 0 /root/.rhosts /root/.netrc /etc/hosts.equiv

    Linux还有一个鲜为人知的命令:chattr,你如果对这些文件进行了+i的操作,即使是root,在-i之前也修改不了它们。够厉害吧。如果你有先见之明,提前在你的系统上把/etc/shadow,/etc/inetd.conf等文件chattr +i,可以避免一些exploits程序给你添个后门什么的,那就安全多了。

    第三,对/etc/shadow使用MD5加密,放弃crypt函数的DES加密,MD5比较难于破解。可以通过PAM来进行转化,更多关于PAM的信息,请参看:ftp://ftp.us.kernel.org/pu
    b/linux/libs/pam/Linux-PAM-html/pam.html。

    过去常常是手工对PAM配置来实现MD5,现在好了,Red Hat 6.0以后,在安装的时候可以直接选择MD5方式。如果安装的时候没有选择,事后亦可以在命令行敲入"setup"命令,选择"authentication configuration",再选中MD5。当然,用户需要重新设置密码才能使MD5生效。

    对bash用户来说,都比较讨厌.bash_history文件,谁也不希望其他人(包括root)知道自己敲了哪些命令。这里提供两种方法解决这个困扰:

    1)在自己的.bash_profile中,加入一行:

    HISTFILESIZE=0

    这样任何命令都不会被纪录到.bash_history中。注意:不要把HISTSIZE置零,那样将无法使用上下键来调用历史命令。

    2)先删除自己目录下的.bash_history,然后建立一个连接:

    $ ln -s /dev/null $HOME/.bash_history

    所有的历史命令都跑到/dev/null这个黑洞中了。

    最后要保证主机的物理安全,建议在/etc/lilo.conf中设置密码来控制Linux的启动,语法为password=xxxxxx(你的密码),如果仅仅限制启动其他level,就要加上restrict前缀,具体的请man lilo.conf。如果你的主机在电报大楼享受着VIP房间待遇,你却设置了启动密码,远程reboot一下释放资源,咦,10分钟了怎么还ping不通啊?哈哈,你去电报大楼的打车费别来找我报销,具体情况具体分析吗。:)

    记住一点,只要有人能够物理上接触你的机器,安全性就无法得到保证,很简单,即使进入不了系统,可以拿锤子斧头什么的替你修理修理的说,嘿嘿。
    发布人:netbull 来自:Sinbad网络安全