Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18937973
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类: 网络与安全

2008-05-31 21:09:14

第四部分 总结
  没有绝对安全的网络系统,网络信息对抗是一个长期的研究课题,安全问题是多种多样,且随着时间技术的变化而变化,而黑客的侵入手段也随之不断变化,所以安全防护也是非常重要的,保持清醒正确的认识,同时掌握最新的安全问题情况,再加上完善有效的安全策略,是可以阻止大部分的网络入侵,从而保持最小程度的经济损失。
  
  
  第五部分 附录
  
  5.1 Free BSD系列
  
  FreeBSD 是一个非常安全的操作系统。也正因为它的 source code 是可以免费的取得,这个 OS 长久以来不断的有人改进加强。尽管 FreeBSD 一出厂就非常安全, 但是仍然有更多加强安全性的措施,这份 HOW-TO 会教你一些步骤, 以更加强你机器的整体安全。
  5.1.1 网络
  5.1.1.1 inetd (Inet Daemon)
  网络在系统安全上扮演了一个很重要的角色。FreeBSD 的根基是有着内建网络功能, 且具有最稳最快的 TCP/IP stacks 的 4.4BSD。这个 stack 支持了非常多的协议像是telnet, ftp
  , talk, rsh 等... 这些 service 的的主设定档便是 /etc/inetd.conf。要编辑这个档, 请
  输入 "vi /etc/inetd.conf" (在这个例子里, 我使用 vi 。你可以使用其它你较为上手的编
  辑器。或许你可以试试 pico)。如果你要使用 pico, 请在启动它时加上 -w 选项:
  -w 关掉自动断行。(因此可以容许超过 80 字符的行存在)
  这选项在编辑 /etc/inetd.conf 时非常有用。
  当然了, 你也可以使用 ee - 它随着 FreeBSD 一起 "出厂" 的, 而且也是 root 预设的编辑
  器。不过, 请再 "echo $EDITOR" 确认一次。 开启了这个档案后, 你可以看到里面怎么描
  述每个 service 怎么激活, 要以那位使用者执行等等的信息。(man 5 inetd.conf)既然这个
  档案是许多 internet service 的主要设定档, 好好的设定它便是一件十分重要的事。你要
  关掉一个 service的话,只消在那一行前面加个 "#" 符号。基本的概念是, 关掉些你不熟悉
  的 services - 如果你不知道那个 service 是啥, 或者不知道它可以干啥。理想状态下, 你
  不须要把所有的 service 都打开。例如, 你的器只是要跑 web server。这种情况下, 你只
  要激活 ssh 和 httpd 便够了。关于啥是ssh, 下面会说明。如果你啥 service 都不想跑,
  最直接干脆的方法是-关掉 inetd。做法很简单, 只要编辑 /etc/rc.conf 并且把
  inetd_enable="YES"改成inetd_enable="NO"就可以了。
  如此一来没人可以 telnet, rlogin, 或 ftp 到计算机中。如果你决定要激活你的 inetd 的
  话, 记得激活 log 选项, 并提高一个 service 每分钟激活的上限数目。(默认值是 256, 我
  建议提高到 1024-自行参照下面解说调整吧!)为什么要这么做呢...? 就 modem user 或是低
  速专线用户是没什么差别。但高速线路的人, 上限值太低会蹦出一个 DoS attack(Denial o
  f Service)。某个坏心的人可以简单的用一个 shell script 同时搞出超过 256 个 connec
  tions, 这么一来你的 inetd会很不幸的阵亡。换句话说, 如果你想让每分钟每个 service
  可接受的connection 数多点, 记得做如下的设定, 不然来个坏心的人就可以搞垮你的计算机
  。因此, 在这行inetd_enable="YES"
  下面的:
  inetd_flags=""
  要改成:
  inetd_flags="-l -R 1024"
  这会将联机的动作都 log 下来(-l 参数)而且将同时最大联机数从预设的 256 增加到1024。
  你还须要对你的 /etc/syslog.conf 作些修改, 这些等会儿会提到。
  5.1.1.2 SSH
  在以下提到的案例中, 你完全不须要 run inetd。例如, 如果你只有跑 web, news, 或是 n
  fs server, 那么就没有必要在你的机器上再跑其它的services。但是你一定会问,"我要怎么
  控制我的机器啊!?" 嗯嗯, 所以现在要介绍 SSH。你可以透过 SSH (SecureShell) 来登入你
  的机器。Secure Shell 当初便是设计来取代 rsh, rlogin 等其它的Berkeley r* 命令。相
  信你很快就会了解 SSH 是如何有用,而且开始使用它,来代替其它的程序像是 telnet 和 ft
  p。SSH 具有很多功能,但是最为人知的是, 它的加密通讯方式, 也就是防止你的密码和资料
  以明码的方式在网络上传输。如果你使用 telnet,你的通讯内容可能会被"窃听": 传输中的
  资料被改变, 通讯内容被看到。(不是有 S/Key可以解决吗? 很不幸的, 它还是有着插入资料
  和连接时被破解的问题) 我希望你可以完全的关掉 inetd 而使用 SSH。如果你认为完全不靠
  inetd 来激活某些 services,是完完全全不可能的事, 那么希望你至少激活 log 功能, 而
  且要增加每分钟同一个 servi-ce 可激活的次数。 (原因上面有提到)
  你可以从 ftp://ftp.funet.fi/pub/unix/security/login/ssh 下载 SSH。
  若你想要更简单的方法:
  # cd /usr/ports/security/ssh
  # make install
  5.1.1.3 inetd (part II)
  好吧, 你仍然执意要使用 inetd。那么我们来看看在 inetd.conf 有那些选项, 可以增进你
  的系统安全。在攻击某系统之前, 攻击者都会先收集该系统的相关信息。就 telnetd 而言,
  你可以试试在 telnetd 那行后面加个 -h:
  telnet stream tcp nowait root /usr/libexec/telnetd telnetd -h
  从 telnetd 的 man page 可以知道:
  -h Disable the printing of host-specific information before login
  has been completed.
  当有很多管道可以获得系统信息的同时, 这招和下面的那招是个不错的解决方案。如果你认
  为跑 telnet daemon 是没有必要的, 那么只消加个 "#" 在该行的最前面就行了:
  #telnet stream tcp nowait root /usr/libexec/telnetd telnetd
  有个极不错的措施是, 你可以拒绝没有完整 FQDN 的人来联机。要做到这点, 也只要加个 -
  U 选项到 telnetd 后面:
  telnet stream tcp nowait root /usr/libexec/telnetd telnetd -h -U
  这是个小动作, 但是对你的系统安全有莫大的助益。
  5.1.1.4 ftpd
  现在来看看 ftp。 对于 ftp FreeBSD 已经做了一些 log 的动作 。 可以看到在/etc
  /inetd.conf 里面 ftpd 那一行已经加了 "-l"。然而, 你还是要设定你的syslogd, 使它可
  以接受 ftp daemon 产生的 log。从 man page 可以得知:
  每个成功或是失败的 ftp 登入尝试, 都会以 LOG_FTP 机制纪录起来。如果这个选项被指定
  了两次, 所有的下载 (get), 上载(put), 新增, 删除,建立目录, 及更名的动作和文件名字
  都会被纪录下来。 又: LOG_FTP 讯息预设是不会被 syslogd(8) 纪录下来的。你还要在 s
  yslogd(8) 的设定文件里面激活这个功能才行。
  让我们开启 syslogd 纪录 ftpd log 的功能吧~ 这个档案是 /etc/syslog.conf (别忘了顺
  便看看 man 5 syslog.conf)。把下面这一行加到这个设定档里:
  ftp.* /var/log/ftpd
  也不要忘了执行这个指令 "touch /var/log/ftpdlog", 因为 syslogd 不能写入到一个没有
  被开启过的档案。如果你想要你的 ftpd 提供你更多的 log 讯息, 那么就在 ftp那一行多加
  个 "-l" 吧:
  ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l -l
  如果你想要确定你的使用者们都用 scp (Secure Copy, 附属在 SSH 里面), 但是又想要提供
  anonymous ftp 服务, 也只消加个 "-A" 在 ftp 那行后面就行了:
  ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l -A
  你也可以编辑 /etc/ftpwelcome, 说明目前接受 anonymous ftp 登入, 但是系统内的使用者
  就得使用 rcp 了。如果你有提供 anonymous ftp, 你可以使用 -S 选项来记录传输的情形:
  ftp stream tcp nowait root /usr/libexec/ftpd ftpd -A -S
  5.1.1.5 fingerd
  Finger 服务默认值还算安全: 它不容许不带 user name 的 query。这是一件不错的事(tm)
  。然而, 就是有些人无论如何也不想 run fingerd。这种情形下, 你只要简单的给它加个 "
  #" 在这行的最前面就可以了。又, 你想要 log 住谁来 finger 的话, 加个"-l" 也就行了
  :
  finger stream tcp nowait nobody /usr/libexec/fingerd fingerd -s -l
  Fingerd 产生的 log 信息预设是写到 /var/log/messages。如果你想要这些信息写入到特定
  的档案里去, 那么就在 /etc/syslog.conf 加入这一行:
  daemon.notice /var/log/fingerd
  /* !fingerd anyone? */
  $ man 5 syslog.conf
  除了 ftp, telnet 和 finger 之外, 你实在不须要在 /etc/inetd.conf 中再多激活任何东
  西了。通常我都会关掉 talk 及 comsat等我个人不须要的东西。如同我之前讲的,如果你不
  知到某个 servcie 是干嘛用的, 而且你也不须要它, 那么就关掉它。一些和网络有关而且很
  有用的 man page 是: inetd, ftpd, telnetd, fingerd, syslogd,comsat, talkd, rshd,
  rlogind, inetd.conf。并且记得要看 man page 的"SEE ALSO"部份, 以获得更多的相关信息
  。
  5.1.1.6 ipfw (IP FrewWall)
  IP FireWall 做的是 packet 过滤的工作。没错, 就是只有这样。然而, 你要考虑的事是,
  你的 kernel 要有支持 ipfw。 通常在我管的机器上, 我都会重编核心使其支持ipfw。大
  概看起来是这样:
  options IPFIREWALL #finger the net
  options IPFIREWALL_VERBOSE #log the net
  
阅读(298) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~