Username: Password:

为Linux安装套件强化系统安全
来源:作者: 发布时间:2007-12-05 06:22:04

 
内容摘要: 本文介绍系统安全防护策略, 让系统管理员借以阻绝入侵者。 针对不同的 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

喜欢本文,那就收藏到:

    Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
相关评论  我也要评论
还没有关于此文章的相关评论!
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 导航
    赞助商
    文章类别
    订阅