分享
 
 
 

一些FreeBSD相关的安全问题

王朝system·作者佚名  2006-11-23
窄屏简体版  字體: |||超大  

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

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

的可能性。

对于sshd,你可以通过下面的方法来限制组用户或者光是单独用户来访问SHELL:

AllowGroups shellusers

或者

AllowGroups wheel

或者

AllowUsers xundi

当然你如果要改变原来的用户访问SHELL属性,如要把用户改变成/sbin/nologin

而不让它访问shell,你可以使用下面的命令直接改变:

chsh -s /sbin/nologin user

最后你最好使用tcpwrappers来限制一些访问,你修改/etc/hosts.allow文件,注释

掉"ALL : ALL : allow", 去掉其他无关控制访问,增加如下内容:

sshd : localhost : allow

sshd : friendlycomputer : allow

sshd : all : deny

FreeBSD默认情况下不把ssh登陆失败的内容记录下来,你需要对/etc/security

进行修改,下面的补丁只检测密码无效的登陆并记录下来,你可以增加对dsa/rsa

key登陆失败或者不合法用户登陆的检测:

--- /etc/security Mon Jun 11 15:45:02 2001

+++ /etc/security Mon Jun 11 15:48:29 2001

@@ -44,6 +44,7 @@

sort -t. -r -n +1 -2 |

xargs zcat -f

[ -f $LOG/messages ] && cat $LOG/messages

+ [ -f $LOG/security ] && cat $LOG/security

}

sflag=FALSE ignore=

@@ -188,6 +189,12 @@

separator

echo "${host} login failures:"

n=$(catmsgs | grep -i "^$yesterday.*login failure" | tee /dev/stderr | wc -l)

+[ $n -gt 0 -a $rc -lt 1 ] && rc=1

+

+# Show "${host} SSH login failures:"

+separator

+echo "${host} login failures:"

+n=$(catmsgs | grep -i "^$yesterday.*failed password" | tee /dev/stderr | wc -l)

[ $n -gt 0 -a $rc -lt 1 ] && rc=1

# Show tcp_wrapper warning messages

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

网络部分

---------

默认情况下FreeBSD和许多操作系统在关闭的端口上接受到TCP SYN段的时候,会

发送RST信息包,也就是告诉攻击者这个端口关闭了,导致攻击者继续扫描下一个

端口,一般情况下我们都不愿意使端口扫描简单化,和不想浪费过多的CPU时间

在DoS攻击上。因此我们可以使用FreeBSD系统中叫blackhole的特征,blackhole

sysctl(8) MIB用来控制当对一些没有socket监听的TCP或者UDP端口接收到连接

请求时所操作的行为,你可以使用man blackhole获得详细的信息,当设置这个

选项后,对那些连接没有socket监听的TCP或者UDP端口的连接,系统将马上丢弃

这个包而不发RST包。连接端将看到"Connection reset by peer".下面的操作

将激活这个特征:

sysctl -w net.inet.tcp.blackhole=2

sysctl -w net.inet.udp.blackhole=1

你可以通过下面的操作马上启动实现这个特征:

# /bin/sh /etc/rc.sysctl

当然这个特征不能作为ipfw(8)工具的替代品来防卫系统,要建立更高安全的

系统,你当然需要使用Ipfw(8)或者Ipfilter工具实现。

修改/etc/rc.conf,把不需要的服务关闭,i)portmap服务,如果你没有NFS, NIS

等需要。再/etc/rc.conf中加入:

portmap_enable="NO"

你可能经常发现有人讨厌的扫描你整个网络,目标端口为111的信息,这是有人

想查找是否有rpc服务漏洞的扫描,你可以在你的边缘路由器中丢弃dstport为

111的信息包。

ii)除非你运行mail服务器或者mail网关,这里建议你把sendmail置于queueing only

模式,如果你确实需要SMTP网关,建议你安装postfix.

sendmail_flags="-q1m"

iii)建议你丢弃icmp重定向,可以防止Dos攻击或劫持进程(hijack sessions),

你也可以记录icmp重定向,不过这里你要区分一些信息,因为有的时候Cisco

路由器也会产生重定向而不是攻击信息,要记录这些信息,使用如下条目:

icmp_log_redirect="YES"

当然你要完全去掉不确定信息记录,你可以在你的CISCO路由器上关闭重定向:

"no ip send-redirects"

(IV)你可以设置系统丢弃SYNFIN信息包,不过这个你可以更好的通过IPFW来过滤

这种信息包,但是你也可以在/etc/rc.conf中增加如下条目来激活这种选项:

tcp_drop_synfin="YES"

当然你需要在kernel配置中增加如下配置:

options TCP_DROP_SYNFIN

v)关闭对广播类型的响应

#sysctl -w net.inet.icmp.bmcastecho=0

过滤icmp响应这后,服务器无法ping通,这有助提高部份安全性能。

vi)对udp包的校验和计算

#sysctl -w net.inet.udp.checksum=1

可以防止不正确的udp包的攻击。

vii)设置rc.sysctl, rc.conf 和 sysctl.conf 权限:

# chmod 600 /etc/rc.sysctl

# chmod 600 /etc/rc.conf

# chmod 600 /etc/sysctl.conf

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

Crontab和at问题

----------------

crontab是一个比较强大的服务,有不少漏洞在cron发现过,普通用户最起码

也可以浪费资源等操作,这里建议'www', 'nobody' 和 'bind' 不能使用crontab.

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

# echo root > /var/cron/allow

# chmod 600 /var/cron/allow

并设置权限crontab不能由其他用户任意访问:

# chmod 600 /etc/crontab

不过你如果不需要使用'at'命令,就关闭这个服务,因为安全的原则始终是"

你不许它,丢掉它",在/etc/crontab文件中注释掉下面一行:

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

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

inetd和rate限制问题

---------------------

Inetd默认情况下是启用的,它控制了不少不安全的服务,如:telnet, ntalk

和finger。检查你所有/etc/inetd.conf中的服务,关闭任何你不需要的服务。

如果没有一个用户需要,请在/etc/rc.conf中关闭inetd启动:

inetd_enable="NO"

如果你要使用FreeBSD的inetd.你可以通过inent请求来控制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级别上,关于

内核安全级别的详细资料中文你可以参看王波的"FreeBSD使用大全连载 "。

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

kern_securelevel_enable="YES"

kern_securelevel="2"

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

# sysctl -w kern.securelevel=2

来激活。

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

一些本地安全tip

---------------

i)编辑/etc/ttys,把下面的一行的secure改为insecure:

console none unknown off secure

这样用户进入单用户模式时会要求输入ROOT密码,当然这样也使你忘记ROOT密码

时恢复存在一定难度了。

ii)修改一些计算机相关设置,如BIOS,不允许软盘启动,CDROM启动等,即在装载

硬盘驱动以前不允许其他媒介启动。设置BIOS密码,保护机器物理安全(如果人家

带着榔头,炸弹,一盆水来那就没办法了)。

iii)关于虚拟终端和虚拟终端缓冲,虚拟终端缓冲中的内容在你logoff以后并

不刷新,所有你在机器来操作的活动可以被复查。你可以重新配置内核参数如:

SC_NO_HISTORY #取消历史记录

SC_DISABLE_DDBKEY # 取消debug键

SC_DISABLE_REBOOT # 取消clt-alt-del 键

iv)对/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的接口(摘自王波-FreeBSD使用大全连载)。

你可以建立/etc/firewall.rules建立自己的规则,并把文件设置为600属性,

下面的规则仅供参考:

ipfw -q -f flush

ipfw -q add 00100 allow ip from

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有