Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1494118
  • 博文数量: 408
  • 博客积分: 10036
  • 博客等级: 上将
  • 技术积分: 4440
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-06 13:57
文章分类

全部博文(408)

文章存档

2011年(1)

2010年(2)

2009年(1)

2008年(3)

2007年(7)

2006年(394)

我的朋友

分类: LINUX

2006-06-19 18:55:48

为Linux安装套件强化系统安全

[ 作者:  加入时间:2006-06-07 06:59:33  来自: ]



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

 

收集整理
阅读(633) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~