扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
如果有人尝试攻击你的系统而且失败了, 你的系统纪录便不会被伪造。但如果你的系统己经被攻陷了, 而且 /var/log 整个被干掉了呢 !?还是有方法可以防止的。 其一便是在你的网络系统中再架一台机器拿来纪录整个网络中发生的事, 而且也不要再干其它的事了。除了 UDP port 514 之外, 其它的也都不用再开了。这样子一来你便可以纪录下所有机器 (routers, firewalls, serves, workstations) 发生的所有事。你可以只送敏感的讯息给它, 或者任何你觉得重要的。这台机器可以是老旧 486, 但有颗大大的硬碟。记得要设定好正确的 \"-a\" 选项, 免得搞出没收到纪录的乌龙事。你也可以接台老旧的点阵打印机给它, 以印出敏感的事件(像是失败的登入尝试)。如果你把系统纪录印到纸上, 一位攻击者要清除它是很困难的。还有其它的方法,例如透过 serial port (cuaaN) 或是 parallel port (lpN) 送
出纪录到别台机器上。
每个人都有不同的记录需求。但是有一件事我通常会做的是在 /etc/syslog.conf 加入这一行:
auth.* /var/log/authlog
FreeBSD 出厂时便包含了 newsyslog。这玩意会定时压缩纪录文件并清除掉旧的纪录。
设定档位于 /etc/newsyslog.conf - 请看一下 man page 以得到更多的信息:
% man newsyslog
不像 syslogd, newsyslog 不是一直都在执行的。它是从 crontab 激活的:
% grep newsyslog /etc/crontab
0 * * * * root /usr/sbin/newsyslog
%
你可以修改 /etc/newsyslog.conf 以符合你的需求。我通常会改变它预设的档案模式, 从 664 改成 660 - 因为没有必要让一般的使用者去查看你的系统纪录。你应该这么做:
# cd /var/log
# chmod g-w,o-r * ; chmod a+r wtmp
这会防止一般使用者读取纪录文件, 除非它们在适当的 group (wheel 或之类的)。还有,记得把记录文件的 group 都改成 wheel -- 这纯粹只是为了方便: 如果你是在 wheel 这个 group; 你当然是可以 su(1) 到 root 然后读记录文件。但是这么做以后你便可以直接读记录文件了, 岂不方便乎!?你还要在 /etc /newsyslog.conf 中加入 \"root.wheel\":
/var/log/maillog root.wheel 640 7 100 * Z
/var/log/authlog root.wheel 640 7 100 * Z
/var/log/messages root.wheel 640 7 100 * Z
这会在记录文件达到 100K 时将它压缩并加以编号, 将 mode 改成 640, chown成root.wheel, 并将旧的记录文件干掉 - 这就是我们要的。
当然,标准的 Unix 还有其它不同的 syslog 程序可供选择,其中之一是 CORE EDI 的ssyslog (secure syslog). 可以在以下的地方找到:
http://www.core-sdi.com/ENGLISH/CoreLabs/ssyslog/download.html
另外还有 nsyslog (new syslog),这是写 bpfilter 那一伙人写出来的,你可以在 http://cheops.anu.edu.au/~avalon/nsyslog.html 找到这个程序。
不管你选用那一种程序 (标准的 syslog , ssyslog ,或 nsyslog),你应该也去看看一些帮你分析系统 log 的程序,帮你省下去用 grep 查询 log file 的麻烦。
其中之一是 logcheck , 可以在这个地方下载: http://www.psionic.com/abacus/abacus_logcheck.html
另外一个类似的程序叫做 logsurfer , 你可以从这个网页下载: http://www.cert.dfn.de/eng/team/wl/logsurf/
5.1.2 Misc. hints and tips
5.1.2.1 LKM
在正式提供服务的系统上, 也许该关掉 LKM。为什么? 请看:
Phrack Magazine Volume 7, Issue 51 September 01, 1997, article 09
要关掉 LKMs, 在 kernel 设定档中加入这一行:
options NOLKM
5.1.2.2 Portmap
FreeBSD 出厂的默认值会将 portmap 这项功能打开。如果你不需要它的话,把它关掉。如果你没有跑任何需要呼叫 RPC 的程序的话,你就不需要跑这个程序。如果要关掉portmap这个程序,你可以去修改 /etc/rc.conf , 把
portmap_enable=\"YES\" # Run the portmapper service (or NO).
改成
portmap_enable=\"NO\" # Run the portmapper service (or NO).
5.1.2.3 Sendmail
FreeBSD 出厂的默认值也会执行 sendmail 的功能。从很久以前 sendmail 就以不安全且漏洞百出闻名。最近人们努力的将 sendmail 中的错误清除,但是由于 sendmail是一个很肥大的程序,要将所有的错误都抓出来相当的困难。换句话说:如果你不需要它的话,最好把它关掉。如果你真的需要它的话,最好到 sendmail 的网站去看看有没有新的patches 或是 hacks, sendmail 的网站在 http://www.sendmail.org 。
此外,如果你的 sendmail 版本是 8.8 以后的版本,请设定好你的系统,以防止 spammer利用你的系统去干坏事。设定 anti-spam 的信息可以在 http://www.sendmail.org/antispam.html 下找到。
如果你决定要把 sendmail 关掉的话,只要去修改 /etc/rc.conf (没错,又是它)中的:
sendmail_enable=\"YES\" # Run the sendmail daemon (or NO).
改成
sendmail_enable=\"NO\" # Run the sendmail daemon (or NO).
5.1.2.4 Ports and Packages
在一台高安全性的系统上, 最好不要使用 ports 或 packakges。 你不会真正知道是不是安装 suid 的程序进你的系统 -- 而且你不会想再多这些 suid 的东西了, 相信我。尽管你在 pkg_add 时可以使用不同的选项(如 \"-v\" 或 \"-n\"), 最好还是自己来: 抓回它的 source code, 自己 compile, 再手动安装完成。
5.1.2.5 Filesystem quota
如果你的系统是 \"shell\" type server,你可能希望设定使用者的 quota (可用空间)。
如此一来可以保护你的系统免受 Denial of Service 攻击方式的侵扰(不论是有意或是无意的)。在未设定 quota 的系统上使用者可以随意的灌爆你的硬盘。要把 quota这项功能打开,你可以修改 /etc/rc.conf 中的这项设定:
check_quotas=\"NO\" # Check quotas (or NO).
改成
check_quotas=\"YES\" # Check quotas (or NO).
请先看看以下的 man page,这些文件说明如何使用 quota 的各项设定,并且有一些设定的范例: quotaon, edquota, repquota, quota 请确定在 /etc/fstab 中有加入 \"userquota\" , 详见 man 5 fstab。
5.1.2.6 Crontab
如果你使用了 /etc/crontab 的话,这项功能有可能提供入侵者一些额外的信息。
请确定你做过 \"chmod 640 /etc/crontab\"
5.1.2.7 BPF
BPF 是 berkeley packet filter 的缩写,要使用这项功能前你必须修改 kernel,以达成监听网络的目的。像 tcpdump 和 NFR 这些程序都使用 BPF。然而 BSD的监听程序也都透过 BPF 来达成,如果有人拿到你系统的 root 权限的话,在系统上设定 BPF 功能反而帮助他们更容易的监听你的网络。如果没有必要的话,不要设定 kernel 中 BPF的功能。 FreeBSD 出厂的设定值是将这个功能关闭起来的。
5.1.2.8 CVSup, CVS, 等等
如果你是使用 CD-ROM 安装你的系统的话,很有可能当你拿到你的 CD-ROM时,已经发现某些程序有错误存在了。在大部份的情况下(我们希望如此),这些错误与系统安全无关。然而,我建议你将你的系统升级到最新的 -current (或是 -stable,视你的喜好而定) 版本。如此你可以确定你系统上的的是最新版本的系统原始码。
你需要的信息在这边可以找到:
http://www.freebsd.org/handbook/handbook264.html#508
在更新你操作系统的原始码后你必须去 \"make world\",详细的文件在:
http://www.nothing-going-on.demo ... rld/make-world.html
5.1.2.9 SSH
使用 ssh 以代替 telnet, ftp, rlogin, rsh 等的重要性, 再怎么强调都是不够的。对于使用慢速线路的人 (dial-up, 56K frame), ssh 有 -C 选项:
-C 将数据压缩后再传出去, 包括了 stdin, stdout, stderr还有透过 X11 还有TCP/IP。压缩的算法同 gzip, 而且可以指定压缩的 level。对于 moden users 和使用慢速线路的人, 这功能是不错的。 但有高速线路的人, 这么搞只会拖慢速度。在主机对连时可以设默认值, 请再参照文件。
这会让你用起来快一点 总之就是用 SSH 就对了啦! 拜托, 拜托, 使用 ssh。 如果你硬是不信邪, 再也没什么安全措施可以帮助你了 !!
5.1.2.10 Related URLs
1) FreeBSD Hardening Project:
http://www.watson.org/fbsd-hardening/
2) FreeBSD ipfw Configuration Page:
http://www.metronet.com/~pgilley/freebsd/ipfw
3) FreeBSD Security advisories:
ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/
4) FreeBSD Security web page:
http://www.freebsd.org/security/security.html
5) Security tools in FreeBSD:
http://www.samag.com/archive/0705/feature.html
5.2 sco 系列
5.2.1 抓好网内主机的管理是网络安全管理的前提
用户名和密码管理永远是系统安全管理中最重要的环节之一,对网络的任何攻击,都不可能没有合法的用户名和密码(后台网络应用程序开后门例外)。但目前绝大部分系统管理员只注重对特权用户的管理,而忽视对普通用户的管理。主要表现在设置用户时图省事方便,胡乱设置用户的权限(id)、组别(group)和文件权限,为非法用户窃取信息和破坏系统留下了空隙。
金融系统UNIX的用户都是最终用户,他们只需在具体的应用系统中工作,完成某些固定的任务,一般情况下不需执行系统命令(shell)。以农业银行全国电子汇兑为例,用户名为dzhd,它在/etc/passwd文件中描述如下:
dzhd:x:200:50: :/usr/dzhd:/bin/sh
它的.profile内容大致如下:
COBSW=+R+N+Q-10
DD_PRINTER=“1p-s”
PATH=/etc:/bin:/usr/binHOME/bin:/usr/dzhd/obj:
MAIL=/usr/spool/mail/logname
umask 007
eval`test -m ansi:ansi -m:\\?ansi -c -s -Q`
export PATH MAIL COBSW DD_PRINTER
cd usr/dzhd/obj
runx hdg
exit
用户正常登录后,如果按下中断键“delete”,关掉终端电源,或同时键入“Ctrl”“ \\”,那么用户将进入shell命令状态。例如他可以在自己的目录不断创建子目录而耗尽系统的I节点号、或用yes>aa创建一个其大无比的垃圾文件而耗尽硬盘空间等导致系统的崩溃、瘫痪;如果文件系统的权限设置不严密,他可运行、窥视甚至修改它;还可通过su等命令窃取更高的权限;还可登录到其它主机上去捣乱……令你防不胜防,危险性可想而知。这一些问
题都与用户设置有关。所以,尽量不要把用户设置成上述形式。如果必须这样,可根据实际需要,看看能否把用户的sh变成受限sh,如rsh等,变成如下形式:
dzhd:x:200:50: :/usr/dzhd/obj:/bin/rsh
或如下形式:
dzhd:x:200:50: :/usr/dzhd:./main
在main(.porfile)首部增加如下一行:
trap\' \' 0 1 2 3 5 15
那么上述一切问题都可避免。
此外定期检查你的/etc/passwd文件,看看是否有来历不明的用户和用户的权限;定期修改用户密码,特别是uucp、bin等不常用的用户的密码,以防有人在此开个活动的天窗--一个可自由进出的用户;删除所有睡眠用户等。
5.2.2设置好自己的网络环境是阻止非法访问的有效途径
网上访问的常用工具有telnet、ftp、rlogin、rcp、rcmd等网络操作命令,对它们的使用必须加以限制。最简单的方法是修改/etc/services中相应的服务端口号。但这样做会使网外的一切访问都被拒绝,即使是否法访问也不例外。这种闭关自守的做法不值得提倡,因为这样会使本网和网外隔绝开,也会给自己带来不便。通过对UNIXt系统的分析,我们认为有可能做到有条件限制(允许)网上访问。
5.2.2.1 建立etc/ftpusers文件(不受欢迎的ftp用户表)。
与之相关的命令是ftp。配置如下:
#用户名
dgxt
dzhd
…
以上都是本机内的一些用户,侵入者使用以上用户名ftp访问本网会被拒之门外。
5.2.2.2 保存.netrc文件
注意保存好.netrc文件(远程注册数据文件)。与之有关的命令是ftp。.netrc包含注册到网络上用ftp作文件转移的远程主机的数据。通常驻留在用户当前目录中,文件权限必须为0600。格式如下:
machine对方主机名login对方主机内用户名password对方用户密码macdef init ftp的操
作命令集。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者