公司简介   产品资讯   客户服务   安全资源   顾问服务   合作伙伴 


 

SUPPORT
  SUPPORT -> 技术文章-> 一些FreeBSD 相关的安全问题 2

系统安全实务

一些FreeBSD 相关的安全问题

Crontab、at 问题

crontab 是一个比较强大的服务,有不少漏洞在 cron 发现过,普通用户最起码也可以浪费资源等操作,这里建议 'www'、'nobody'、'bind' 不能使用 crontab。

建立 /var/cron/allow 文件并把需要使用的用户放进去,如∶

# echo root > /var/cron/allow
# chmod 600 /var/cron/allow

并设置权限 crontab 不能由其他用户任意观看∶

# chmod 600 /etc/crontab

如果不需要使用 'at' 命令,就关闭这个服务,因为安全的原则始终是 "你不用它,就丢掉它",在 /etc/crontab 文件中 mark 掉下面一行∶

# */5 * * * * root /usr/libexec/atrun

inetd、rate 限制问题

Inetd 预设情况下是启用的,它控制了不少不安全的服务,如∶telnet、ntalk、finger。检查你所有 /etc/inetd.conf 中的服务,关闭任何你不需要的服务。如果没有一个用户需要,请在 /etc/rc.conf 中关闭 inetd∶

inetd_enable="NO"

如果你要使用 FreeBSD 的inetd。可以经由 ident 请求来控制 rate 的资源,如∶

auth stream tcp nowait/10/10 root internal auth -r -f -n -o UNKNOWN -t 30

第一个 10 表示我们允许的最大子进程数量 第二个值是每一个 IP 每一分钟连接的最大数量,一般 10/10 的值是较佳的

一般情况下不要使用这个 ident,我们一般也只在 IRC 里看到这个服务。

Securelevel 问题

FreeBSD 核心有一个安全等级(securelevel)的概念,这是指系统核心运作使用的安全等级,不同的等级具备不同的保护和检查机制。一般工作站运行在 securelevel 0 等级,因为他们可能需要运行 X11,而服务一般运行在 2 或者 1 等级上。

如果你要改变级别系统为 2,你可以在 /etc/rc.conf 中增加如下项目∶

kern_securelevel_enable="YES"
kern_securelevel="2"

你可以重新去启动,或者使用

# sysctl -w kern.securelevel=2

来启动

一些本地安全技巧

1. 编辑 /etc/ttys,把下面的一行的 secure 改为 insecure∶

console none unknown off secure

这样用户进入 single user mode 时会要求输入 ROOT 密码,当然这样也使你忘记 ROOT 密码时的恢复存在一定难度了。

2. 修改一些电脑相关设定,如 BIOS,不允许软碟启动,CDROM 启动等,即在硬碟驱动以前不允许其他媒介启动。并设定 BIOS 密码。

3. 关於虚拟终端和虚拟终端缓冲,虚拟终端缓冲中的内容在你登出以後并不清除,所有你在机器的操作活动可以被复查。你可以重新设定核心参数如∶

SC_NO_HISTORY # 取消历史记录
SC_DISABLE_DDBKEY # 取消 debug 键
SC_DISABLE_REBOOT # 取消 clt-alt-del 键

4. 对 /bin, /sbin 进行安全保护。

#chflags schg /bin/*
#chflags schg /sbin/*

讯息过滤问题

FreeBSD 的封包过滤工具拥有强大的设定规则来过滤你想阻挡的讯息,你可以使用 ipfw 来达成封包过滤,不过你需要在核心中有一定的选项设置,如∶

需要在编译核心时打开下面选项重新编译核心。
options IPFIREWALL
options IPFIREWALL_VERBOSE
options “IPFIREWALL_VERBOSE_LIMIT=100”
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPDIVERT

其中第一项 IPFIREWALL 设定是用於开启基本的封包过滤功能,只有使用它才能在核心支援封包过滤。IPFIREWALL_VERBOSE 和 IPFIREWALL_VERBOSE_LIMIT 是设定记录过滤日及日记录的限制。IPFIREWALL_DEFAULT_TO_ACCEPT 是设定 IPFIREWALL 的例外状况,在封包不符合所有的过滤规则的情况下进行转送,显然这是一种宽松的限制,此时系统主要用於阻挡特定位址和特定服务,而提供其他的例外网路功能。如果没有定义这个选项,系统就只能允许符合已定义规则的封包通过,而阻挡其他任何封包,这样在没有定义过滤规则的情况下,系统不能和其他电脑相互通信。最後一个选项 IPDIVERT 是用於定义 IPFIREWALL 与 natd 的 port。

建立 /etc/firewall.rules 建立自己的规则,并把文件设为 600 属性,下面的规则仅供参考∶
ipfw -q -f flush
ipfw -q add 00100 allow ip from any to any via lo0
ipfw -q add 00220 deny log ip from me to any in
#syn fin 封包,一般来说是 nmap 和 queso 扫描器使用,所以过滤
ipfw -q add 00225 deny log tcp from any to any in tcpflags syn,fin

# 检查通信状态
ipfw -q add 00230 check-state
ipfw -q add 00235 deny tcp from any to any in established
ipfw -q add 00240 allow ip from any to any out keep-state


# 控制 icmp 封包,只能通过 icmp 类型来限制
ipfw -q add 00300 allow icmp from any to any icmptype 3
ipfw -q add 00301 allow icmp from any to any icmptype 4
ipfw -q add 00302 allow icmp from any to any icmptype 11


# 允许 DHCP 通过
ipfw -q add 00401 allow udp from 192.168.2.1 67 to any 68
ipfw -q add 00402 allow udp from 192.168.1.1 67 to any 68


# allow ident requests
ipfw -q add 00500 allow tcp from any to any 113 keep-state setup


# log anything that falls through
ipfw -q add 09000 deny log ip from any to any


可以使用下面命令马上启动规则∶

# sh /etc/firewall.rules

如果你要在你日里查看有关丢弃封包的记录,你需要如下设置∶

# sysctl -w net.inet.ip.fw.verbose=1

如果你要所有这些设置在机器启动时候执行,编辑 /etc/rc.conf 增加下列项目∶

firewall_enable="YES"
firewall_logging="YES"
firewall_script="/etc/firewall.rules"


如果要记录这些讯息进行测试,不要忘了在 /etc/syslog.conf 中增加下列项目∶

!ipfw
*.* /var/log/ipfw.log


记得在 /etc/newsyslog.conf 中设置下列选项∶

/var/log/ipfw.log 600 3 100 * Z
Certification & Awards

2006-02
2005 MIS Best Choice

2006-02
DragonSoft Vulnerability Database - CVE-Compatibility Certificate

2005-12
Small and Medium Enterprise Business Start-Up Award

2005-12
Small and Medium Enterprise Innovation Research Award

2005-11
Golden Torch Award

2005-04
National Quality Guarantee Golden Award

2005-03
Golden Peak Award

2004-11
DragonSoft Secure Scanner - CVE-Compatibility Certificate
  Copyright© DragonSoft Security Associates, Inc. All rights reserved.
  台湾总部∶新竹市光复路一段 607 巷 30 号 5F   Tel: 03-563-0989 Fax: 03-579-7758
  台北业务处∶中和市中山路二段 351 号 9F   Tel: 02-8221-5408 Fax: 02-8221-5476