一些FreeBSD相关的安全问题

FreeBSD的日志安全
--------------------
I)如果你安装了sshd(也强烈建议安装sshd,因为默认的telnetd程序存在严重
的安全问题) 。请编辑你的/etc/syslog.conf文件,一般修改
security.* /var/log/security条目内容如下:

security.*;auth.info /var/log/security

原因很简单,这样syslogd就把连接到sshd的日志信息记录下来 。

当然如果你愿意,也可以建立其他的日志文件,不过如果你建立新的日志文件,
你必须检查更新/etc/newsyslog.conf是否建立相关条目,如:

/var/log/auth 600 10 100 * Z

其中/var/log/auth表示日志文件名,600是日志文件指定的属性,10表示包括
要归档的文件数,100表示文件字节大小,以K为单位,*表示间隔时间或者指定
时间,其中*表示日志归档是以字节(size)来判断的 。最后一个Z表示指定归档
要处理的格式,Z表示使用gzip(1)来压缩归档日志来节约空间,具体更多信息
你可以使用man newsyslog来获得 。

这里建立你修改newsyslog.conf中的一些全局可读属性,如maillog和messages
log,一般把它们的属性设置为600 。如下所示:

/var/log/messages 600 5 100 * Z
/var/log/maillog 600 7 * @T00 Z

当然如果你要把信息记录到其他主机上更好,你可以修改/etc/syslog.conf中的
如下条目,把其中的注释去掉,并修改loGhost为要记录的机器名字:

#*.* @loghost

最后你防止任意用户读取这些文件,你使用下面命令修改文件属性:

# chmod 600 /etc/syslog.conf
# chmod 600 /etc/newsyslog.conf

=========================================================================

关于SSH配置
-------------

就象上面所说的,telnetd守护程序存在严重的缓冲溢出可以导致远程ROOT SHELL
的获得,这里强烈建议你如果需要远程控制的话,就使用SSH工具,并且保证是最
新的版本,至少目前为止还没有很严重的漏洞出现(当然也有几个漏洞大家可以参考
一些安全资料) 。

sshd控制文件是/etc/ssh/sshd_config,如果你没有使用SSH protocol 1的机会,
这里建议你关闭protocol 1的使用,因为ssh protocol 1不如protocol 2安全,
还可以有效的阻止攻击者通过修改包携带的版本banner来劫持(hijacking)启动
会话进程并降级你到protocol 1,理论上可以迫使使用ssh 1 协议来通信 。你
必须注释掉Protocol 2,1而使用下面的一行来代替:

Protocol 2

第二,SSH在运行的时候消耗比较多的内存,是个"耗粮"大户,这也是cisco产品
近来发现有关SSH存在拒绝服务攻击的原因 。每一个连接使用一大块可观的内存,
FreeBSD默认使用"MaxStartups"来管理,默认的值是一个比较健康的值,如:

MaxStartups 5:50:10

因为一个系统你除非有很多人管理系统或者提供SHELL服务,一般情况下这个值
是足够了,MaxStartups不是意味着总的连接数,只是指还没有认证的连接数,
这意味着,在任一(意)时刻,多达5人可以(能)同时唤起登陆进程 。

默认情况下,FreeBSD的OpenSSH配置关闭了远程ROOT登陆和空密码登陆,这里还
建议里关闭X11Forwarding,你可以把X11Forwarding 这行改为:

X11Forwarding no

如果你的机器作为服务器在运行,就不需要安装X服务程序,因为使用了
X11Forwarding on,就可能被受控制了的远程主机发送进程把自己attach你的
X11会话进程,从而可以记录击键记录,显示一些杂乱信息和捕获你的显示内容 。

强烈建议不使用静态密码,而使用DSA或者RSA KEY,你修改如下内容就可以关闭
使用密码认证:

PassWordAuthentication no

因为使用密码验证毕竟不是一种安全的方法,存在着社会工程,猜测,窃取

推荐阅读