CSDN博客

img hem

系统管理员必读:为 Linux 安装套件强化系统安全!

发表于2001/6/7 15:05:00  765人阅读

系统管理员必读:为 Linux 安装套件强化系统安全!

发布日期: 1999-12-6
内容:

内容摘要: 本文介绍系统安全防护策略, 让系统管理员借以阻绝入侵者。 针
对不同的 Linux 系统, 讨论一些改善方式。 


--------------------------------------------------------------------------------


导读

不少人开始广泛谈论入侵网路主机的话题, 而 Linux 与 FreeBSD 则成为近
日主要的攻击对象, 包括像 imapd 与 BIND 程式里的 buffer overflow 问
题。 每天, 各式各样的「系统漏洞」, 都会在 BUGTRAQ 邮递论坛中宣布,
此一邮递论坛已有将近 20,000 位订阅者。 ( 若是您只想订阅一份系统安全
相关的邮递论坛, 那麽这个不容错过 )。 

假设上述的 19,305 位订阅者当中, 有至少一位打算写个 for() 回圈, 配
合公开的系统漏洞攻击程式, 藉以快速取得网路上主机的控制权... 事实上
这样的假设并不为过。 

如此一来, 您的电脑早晚会成为下一个遭受攻击的目标, 到时候, 您可能
就措手不及了。 

或许有些「专家」已经让您以为, 安装及维护一部安全的电脑, 有如「太空
科学」般地复杂, 事实上没那麽难啦。 拥有一套完善而健全的系统管理措
施, 才能保障您免於来自全球网路的威胁, 而本文讨论的便是, 我在规画
Red Hat Linux 网路系统时, 一般会采取的预防措施。 虽然文中提供了保障
系统安全的指引, 但它绝不是一份完整的参考说明。 

下列的步骤, 用意在使您的系统, 不要成为网路程式安全漏洞公开後的受害
者。 请特别注意: 如果您不确定清楚自己在做什麽, 那麽就别动手。 有些
步骤是假设, 您已经具备程度之上的相关知识。 文末另外还附上一些建议的
参考读物。 


系统安全之实作步骤 

1. 将系统中所有没必要的网路服务全部移除。 可以连到您电脑的方式越少,
表示入侵者恶闯的途径越少。 把 /etc/inetd.conf 档案中, 所有不需要的
项目都加注取消, 如果系统并不需要 telnet, 那就将它取消, 诸如 
ftpd、 rshd、 rexecd、 gopher、 chargen、 echo、 pop3d 等, 也是同样
的处理原则。 改完 inetd.conf 档案後, 别忘了要做个 'killall -HUP
inetd' 动作。 另外, 也别忽略 /etc/rc.d/init.d 目录里的东西, 有些网
路服务 ( 像 BIND、 印表机伺服程式 ) 是独自执行的程式, 透过目录里的
命令稿来启动。 

2. 安装 SSH。 SSH 是一个用来取代 'r' 系列指令的程式, 原本那些
Berkeley 版本的程式已经老旧了。 下列是摘自 http://www.cs.hut.fi/ssh
网页的资料: 

Ssh (Secure Shell) 是一个用来登入网路主机、
在远端主机上执行指令、 或是在两台主机间搬移档案的程式。
它提供了强大的认证功能, 并确保能够在网路上进行安全的资料通讯。

它额外还能够处理一些事情, 可能会是有心钻研之高手所感兴趣的。 请由
http://ftp.rge.com/pub/ssh 下载 SSH 程式。 

3. 使用 vipw(1) 把所有不淮登入的帐号全都锁起来。 值得注意的是, 那些
没有指定 login shell 的帐号, Red Hat Linux 会预设将它们指定为
/bin/sh, 这种情况可能不是你所期望的。 同时要确定, 您的使用者帐号中
没有把密码栏给空下来, 下列是一个正常之密码档案的部份内容: 

  daemon:*:2:2:daemon:/sbin:/bin/sync
  adm:*:3:4:adm:/var/adm:/bin/sync
  lp:*:4:7:lp:/var/spool/lpd:/bin/sync
  sync:*:5:0:sync:/sbin:/bin/sync
  shutdown:*:6:0:shutdown:/bin:/sync
  halt:*:7:0:halt:/sbin:/bin:/sync
  mail:*:8:12:mail:/var/spool/mail:/bin/sync
  news:*:9:13:news:/var/spool/news:/bin/sync
  uucp:*:10:14:uucp:/var/spool/uucp:/bin/sync
  operator:*:11:0:operator:/root:/bin/sync
  games:*:12:100:games:/usr/games:/bin/sync
  gopher:*:13:30:gopher:/usr/lib/gopher-data:/bin/sync
  ftp:*:14:50:FTP User:/home/ftp:/bin/sync
  nobody:*:99:99:Nobody:/:/bin/sync                    

4. 移除所有 root 所拥有之程式的 's' 位元权限, 如果它根本不需要这样
的权限。 这个动作可以由 'chmod a-s' 指令完成, 後面接的参数, 便是您
要改的档名。 

上述所提之程式包括以下各类, 但不限於此: 

a) 您从来不会去使用的程式 
b) 您不希望 root 之外的使用者会去执行的程式 
c) 偶而会用, 但以 su(1) 变成 root 再去执行, 也无所谓的程式 

我把自己会取消权限的程式列在下面, 并在前面放了星号 (*)。 记住, 由
於您的系统仍然需要一些 suid root 的程式, 才能正常地执行, 因此要特
别地小心。 

另一种方式, 您可以建立一个叫做 'suidexec' 的特殊群组名称, 然後将可
信赖的使用者帐号设在里面, 使用 chgrp(1) 指令将所有 suid 的程式改成
属於 suidexec 此一群组, 并将其他使用者可以执行的权限除掉。 

     
# find / -user root -perm "-u+s"    
*/bin/ping              
*/bin/mount              -- 应该只有 root 才可以挂上档案系统
*/bin/umount             -- 同上
/bin/su                  -- 别乱改它啊!
/bin/login
/sbin/pwdb_chkpwd
*/sbin/cardctl           -- PCMCIA 卡的控制工具程式
*/usr/bin/rcp            -- 改用 ssh
*/usr/bin/rlogin         -- 同上
*/usr/bin/rsh            --  "
*/usr/bin/at             -- 改用 cron, 或两者都停用
*/usr/bin/lpq            -- 改装 LPRNG
*/usr/bin/lpr            -- "
*/usr/bin/lprm           -- "
*/usr/bin/mh/inc
*/usr/bin/mh/msgchk
/usr/bin/passwd          -- 别乱改它啊!
*/usr/bin/suidperl       -- 每个新版的 suidperl 好像都有
                            buffer overflow 的问题
*/usr/bin/sperl5.003     -- 只有必要时才用它
/usr/bin/procmail        -- 
*/usr/bin/chfn
*/usr/bin/chsh
*/usr/bin/newgrp
*/usr/bin/crontab               
*/usr/X11R6/bin/dga      -- X11 里也有许多 buffer overflow 的问题
*/usr/X11R6/bin/xterm    -- "
*/usr/X11R6/bin/XF86_SVGA   -- "    
*/usr/sbin/usernetctl           
/usr/sbin/sendmail
*/usr/sbin/traceroute    -- 您应该可以忍受偶而打一下 root 密码吧

5.升级 sendmail。 从 ftp://ftp.sendmail.org/pub/sendmail 下载最新的
原始码档案, 解开後阅读其说明文件, 如果您还有点多余的时间, 可以安
装 smrsh ( 附随在 sendmail 里 ), 许多人所关心的 sendmail 安全问题,
如寄信给某些危害安全的程式, 这个程式大都考虑到了。 最後编辑
sendmail.cf 档案, 把 'PrivacyOptions' 选项设定为 'goaway': 

        O PrivacyOptions=goaway

如果您不打算收取网际网路上的电子邮件, 千万不要将 sendmail 以收信状
态 (sendmail -bd) 来执行! 在上述的情况下, 请将
/etc/rc.d/init.d/sendmail.init 取消, 并执行 'killall -TERM
sendmail' 命令。 不过, 您还是可以寄信到外面的。 

6.如果您有使用 BIND, 也要记得升级。 最新版的 BIND 可以在
http://www.isc.org 找到, 不然, 请将它们全部关闭掉。 

7.重新编译核心程式。 如果预设的核心程式太大, 我通常就会重新编译它。
提示: 请将有关防火墙的选项全部打开, 即使您的电脑并不是防火墙。 

       
        CONFIG_FIREWALL=y
        CONFIG_NET_ALIAS=y
        CONFIG_INET=y
        # CONFIG_IP_FORWARD is not set
        # CONFIG_IP_MULTICAST is not set
        CONFIG_SYN_COOKIES=y
        CONFIG_RST_COOKIES=y
        CONFIG_IP_FIREWALL=y
        CONFIG_IP_FIREWALL_VERBOSE=y
        # CONFIG_IP_MASQUERADE is not set
        # CONFIG_IP_TRANSPARENT_PROXY is not set
        CONFIG_IP_ALWAYS_DEFRAG=y
        CONFIG_IP_ACCT=y
        # CONFIG_IP_ROUTER is not set
        # CONFIG_NET_IPIP is not set
        CONFIG_IP_ALIAS=m

8.进行程式修补 所有已知的软体问题, 都可以在 RedHat 的「修正网页」上
找到, ( 请查阅 http://www.redhat.com/support/docs/errata.html, 找
出适合您版本的修补程式码 ), RedHat 在维护更新这些网页上, 确实做得
相当不错。 同时, 这些网页还包括一些 RPM 档案的连结, 您应该用得著,
请依照说明指示进行安装。 

9.设定 tcp_wrappers: tcp_wrappers 可以用来管理网路上, 哪些电脑可以
与您的电脑进行「沟通」。 这一套程式, 是由一位系统安全高手 Wieste
Venema 所写成, 它会管理那些经由 inetd ( 或与 inetd 程式库相连结 )
所启动的程式, 分析它们的设定档案, 以决定是否拒绝或同意某一个网路连
线要求。 举例来说, 为了允许您从家里能够透过 ISP 进行 telnet 及 
ftp, 同时间又要拒绝所有其他的连线, 可以在 /etc/hosts.allow 档案里
写入: 

        in.ftpd : .dialup.your-isp.com : allow
        all : all : deny 

像 SSH、 sendmail 及其他程式, 都可以做成与 tcp_wrappers 相互支援。
请阅读 tcpd(1) 的说明文件, 以取得进一步的资讯。 

Solar Designer 所提供的 Secure Linux patches:
http://www.false.com/security/li nux/

replay.com 提供的 RedHat crypto pages:
http://www.replay.com/redhat/

Breaking Into it 所提供的 Improving the Security of Your Site:
http://www.alw.nih.gov/Security/Docs/admin-guide-to-cracking.101.html

Slashdot 提供最新而及时的消息:
http://www.slashdot.org

想要知道最新的软体更新状况, 请参考 FreshMeat regularly:
http://www.freshmeat.net

Smashing the stac:
http://reality.sgi.com/nate/machines/security/P49-14-Aleph-One

                                     文由 Penelope Marr 所翻译
0 0

相关博文

我的热门文章

img
取 消
img