频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

FreeBSD相关的安全问题

来源:ChinaITLab 作者: 出处:巧巧读书 2006-08-08 进入讨论组

  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观看地址: http://www.qqread.com/net-saft/s197077.html 更多文章 更多内容请看路由安全配置专题系统安全设置配置安全的操作系统专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章