当前位置:Linux教程 - Linux - 装备Linux

装备Linux



        
    by Sinbad

    1.安装

    首先与网络隔离进行系统的安装,选择custom方式,仅仅安装需要的软件。

    硬盘分区:如果用root分区纪录数据,例如log文件和email,就可能因为拒绝服务产生大量日志或垃圾邮件,导致系统崩溃。所以,建议为/var开辟单独的分区,用来存放日志和邮件,以避免root分区被溢出。还可以为特殊的应用程序单独开一个分区,特别是能产生大量日志的程序。如果有不怀好意的用户,建议为/home单独分一个区,这样他们就不能填满/分区。一般Server分区看来是这样:

    / - 根分区
    /var - 400 MB
    swap - 一般256 MB

    当系统安装完重新启动以后,就要打上安全补丁。对RedHat系统,可以在http://www.redhat.com/corp/support/errata/ 找到补丁,要经常更新。采用RPM的系统,可以很容易的升级,例如:

    rpm -Uvh wu-ftpd-2.6.0-14.6x.i386.rpm

    如果系统与Internet是连接的,可以直接从ftp站点升级:

    rpm -Uvh ftp://updates.redhat.com/6.1/i386/wu-ftpd-2.6.0-14.6x.i386.rpm

    RH6.1以后的版本带有一个工具up2date,它能够测定哪些RPM包需要升级,然后自动从RedHat的站点下载并完成安装。这个软件能够很好的被定制并且易于使用。


    2.关闭服务

    安装完软件包和补丁以后,下面作的就是装备系统。包括关闭一些服务、增加日志、修改一些文件和配置TCP Wrappers。

    首先我们来关闭一些服务。默认的linux是一个强大的系统,运行了很多服务。但是有许多服务是不需要的,很容易引起安全风险。第一个文件是/etc/inetd.conf,它指定了/usr/sbin/inetd将要监听的服务,你可能只需要其中的两个:telnet和ftp,其他的许多例如popd,imapd和rsh有可能引发安全问题。下面的命令显示出没有被注释掉的服务:

    grep -v "^#" /etc/inetd.conf

    下一个要启动的是.rc脚本,它们决定了init进程要启动哪些服务。RH系统下,这些脚本在/etc/rc.d/rc3.d(如果以GUI方式启动,就是/etc/rc.d/rc5.d,比如KDE,Gnome等等)。要在启动时禁止某个服务,只要把大写的S替换为小写的s,同时,RH也提供了一个很好的工具来关闭服务,只要输入/usr/sbin/setup,然后选择“system services”,就可以定制系统启动时跑哪些服务。另外一个选择是chkconfig命令,许多发
    行版本都自带这个工具。脚本名字中的数字是启动的顺序,以大写的K开头的是杀死进程用的。

    S05apmd (只有笔记本需要)
    S10xntpd (网络时间协议)
    S11portmap (运行rpc服务必需, 例如NIS或NFS)
    S15sound (声卡相关)
    S15netfs (nfs客户端)
    S20rstatd (避免运行r服务,远程用户能够从中得到很多信息)
    S20rusersd
    S20rwhod
    S20rwalld
    S20bootparamd (无盘工作站,应该很少需要此服务)
    S25squid (代理服务)
    S34yppasswdd (NIS服务器,此服务漏洞很多)
    S35ypserv (NIS服务器,此服务漏洞很多)
    S35dhcpd (dhcp服务)
    S40atd (和cron很相似的定时运行程序的服务)
    S45pcmcia (pcmcia卡,笔记本用)
    S50snmpd (SNMP, 远程用户能从中获得许多系统的信息)
    S55named (DNS服务,最近版本在http://www.isc.org/bind.html)
    S55routed (RIP,不要运行它除非你真的需要)
    S60lpd (打印服务)
    S60mars-nwe (Netware的文件和打印服务)
    S60nfs (NFS服务器,漏洞极多,尽量不要使用)
    S72amd (AutoMount,用来mount远程系统)
    S75gated (另外一种路由服务,例如OSPF)
    S80sendmail (邮件服务,如果你关闭sendmail,仍能够发信,只是不能收信和作中
    继)
    S85httpd (Web服务器,最近版本在http://www.apache.org)
    S87ypbind (NIS客户端)
    S90xfs (X font服务器)
    S95innd (News服务器)
    S99linuxconf (通过浏览器远程配置系统)

    查看在关闭启动脚本之前有多少服务在运行:

    ps aux | wc -l

    当你关闭一些服务以后,重新运行以上命令看看少了多少服务。运行的服务越少,系统越安全。同时,用下面的命令看看哪些服务还在运行:

    netstat -na --ip


    3.日志纪录和增强

    关闭一些不必要的服务以后,我们开始日志纪录,所有的日志都在/var/log目录下。默认情况linux的日志功能很完善,除了ftp。可以修改/etc/ftpaccess或者/etc/inetd.conf,一般都是修/etc/inetd.conf,下面的写法保证了每一个ftp连接的日志都能够记录下来:

    ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -L -i -o

    -l 每一个ftp连接都写到syslog
    -L 纪录用户的每一个命令
    -i 文件received,纪录到xferlog
    -o 文件transmitted,纪录到xferlog

    使用shadow密码,运行命令pwconv。(现在的6.2版本都默认用MD5)

    删除/etc/passwd&/etc/shadowv中的一些系统账号,如news等等。如果不需要匿名ftp服务,删除ftp用户。对一个邮件账号而言,其shell设置为/dev/null即可。

    /etc/ftpusers文件,包含了不能使用ftp的用户列表,root应该在其中。

    修改文件/etc/securetty,去除终端ttyp0-ttyp9,使root只能从console或者使用ssh登录。

    /etc/issue,不要让此文件透露系统的信息。同时要修改/etc/rc.d/rc.local。

    SUID程序是非常危险的,这些程序被普通用户以root的身份执行,只能有少量程序被设置为SUID。用以下命令列出系统的SUID二进制程序:

    find / -perm -4000 -print

    用chmod -s去掉那些不需要程序的SUID位。
    发布人:netbull 来自:Sinbad网络安全