全部博文(408)
分类: LINUX
2006-06-19 18:55:48
|
内容摘要: 本文介绍系统安全防护策略, 让系统管理员借以阻绝入侵者。 针对不同的 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 版本的程式已经老旧了。 下列是摘自 网页的资料: Ssh (Secure Shell) 是一个用来登入网路主机、在远端主机上执行指令、 或是在两台主机间搬移档案的程式。它提供了强大的认证功能,并确保能够在网路上进行安全的资料通讯。 它额外还能够处理一些事情, 可能会是有心钻研之高手所感兴趣的。 请由 下载 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 可以在 找到, 不然, 请将它们全部关闭掉。 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 的「修正网页」上找到, ( 请查阅, 找出适合您版本的修补程式码 ), 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:
Breaking Into it 所提供的 Improving the Security of Your Site: http://www.alw.nih.gov/Security/Docs/admin-guide-to-cracking.101.html Slashdot 提供最新而及时的消息:
想要知道最新的软体更新状况, 请参考 FreshMeat regularly:
Smashing the stac: http://reality.sgi.com/nate/machines/security/P49-14-Aleph-One 收集整理 |