|
 |
栏目导栏 |
|
| |
|
|
|
|
 |
资料搜索 |
|
| |
|
|
|
|
 |
热门文章 |
|
| |
|
|
|
|
 |
最新文章 |
|
| |
|
|
|
| |
| |
|
|
|
|
Solaris的安全配置可以从以下几个方面来考虑: CjkLinux联盟 1. 本地安全增强 CjkLinux联盟 包括: 限制某些强大命令的访问 CjkLinux联盟 设置正确的文件权限 CjkLinux联盟 应用组和用户的概念 CjkLinux联盟 suid/sgid的文件最少 CjkLinux联盟 rw-rw-rw的文件最少等 CjkLinux联盟 CjkLinux联盟 2. 网络安全增强 CjkLinux联盟 包括: 使用安全的协议来管理 CjkLinux联盟 禁止所有不需要的服务 CjkLinux联盟 禁止系统间的信任关系 CjkLinux联盟 禁止不需要的帐号 CjkLinux联盟 增强认证需要的密码 CjkLinux联盟 保护存在危险的网络服务 CjkLinux联盟 限制访问等 CjkLinux联盟 CjkLinux联盟 3. 应用安全增强 CjkLinux联盟 包括: 限制用户的权限 CjkLinux联盟 限制进程所有者的权限 CjkLinux联盟 检查应用相关文件权限 CjkLinux联盟 限制访问其他系统资源 CjkLinux联盟 应用所依赖的suid/sgid文件最少 CjkLinux联盟 使用应用本身的安全特性 CjkLinux联盟 删除samples和其他无用的组件 CjkLinux联盟 CjkLinux联盟 4. 监控与警报 CjkLinux联盟 包括: 日志、完整性、入侵检测等一些使用工具等 CjkLinux联盟 CjkLinux联盟 下面就详细讲述具体的配置过程。 CjkLinux联盟 CjkLinux联盟 CjkLinux联盟 一、 操作系统配置 CjkLinux联盟 1. 安装 CjkLinux联盟 1.1 安装最新的补丁 CjkLinux联盟 安装patches对系统稳定和安全十分重要。 CjkLinux联盟 看系统中安装了那些补丁 #showrev –p CjkLinux联盟 更新更安全的补丁在 http://sunsolve.sun.com CjkLinux联盟 CjkLinux联盟 1.2 初始安装时需要创建 /var分区,/var分区是存放logfile以及系统变动文件的文件系统,因为它的易变化性,以及在系统运作过程中的不断扩大,所以不要把/var文件系统包括再root分区里,以免有恶意程序恶意扩大日志文件来dos根分区。 CjkLinux联盟 CjkLinux联盟 1.3 安装最小的系统 CjkLinux联盟 安装Solaris时,最好先最小化安装,然后再加上必要的软件,这样可以减小某个程序出现安全隐患的可能。 CjkLinux联盟 CjkLinux联盟 2. 打开审计功能 CjkLinux联盟 审计包括很多的内容,可以根据需求设置。可以参考本文档中的日志和监控部分。 CjkLinux联盟 CjkLinux联盟 3. 系统参数安全配置 CjkLinux联盟 3.1 OpenBoot的安全 CjkLinux联盟 OpenBoot是所有Sun SPARC启动PROM的固件部分,它包括关于SPARC系统如何启动的信息,以及用来检测SPARC系统硬件的内嵌命令。 CjkLinux联盟 注意:绝对不能让用户接触OpenBoot,能够访问OpenBoot的聪明用户可以从几乎所有的SCSI设备(外部硬盘或者CD-ROM)上启动系统,如果用户可以从他自己的媒体上启动系统,那么他将获得对系统的完全控制。OpenBoot的安全级别有3种:none、command和full。Sun系统在出厂的时候将OpneBoot安全级别设置为none,即不需要口令,所以必须要采用口令来保护系统的OpenBoot安全。 CjkLinux联盟 CjkLinux联盟 (1) 如何在Solaris中设置OpenBoot口令(作为超级用户) CjkLinux联盟 # eeprom security-password CjkLinux联盟 Changing PROM password: CjkLinux联盟 New password:xxxxxxxx CjkLinux联盟 Retype new password:xxxxxxxx CjkLinux联盟 CjkLinux联盟 (2) 如何在OpenBoot提示符下设置OpenBoot口令 CjkLinux联盟 ok password CjkLinux联盟 ok New password (only first 8 chars are used) :xxxxxxxx CjkLinux联盟 ok Retype new password:xxxxxxxx CjkLinux联盟 ok CjkLinux联盟 CjkLinux联盟 (3) 如何在Solaris中设置OpenBoot的安全级别 CjkLinux联盟 下面这个例子将把安全级别设置为command(作为超级用户) CjkLinux联盟 # eeprom security-mode=command CjkLinux联盟 # CjkLinux联盟 CjkLinux联盟 (4) 如何在OpenBoot提示符下设置OpenBoot安全级别 CjkLinux联盟 下面这个例子将把安全级别设置为command CjkLinux联盟 ok setenv security-mode command CjkLinux联盟 ok CjkLinux联盟 CjkLinux联盟 下面这个例子将把安全级别设置为full CjkLinux联盟 ok setenv security-mode full CjkLinux联盟 ok CjkLinux联盟 CjkLinux联盟 3.2 将coredump大小设置为0 CjkLinux联盟 在/etc/system中加入如下一行: CjkLinux联盟 set sys:coredumpsize = 0 CjkLinux联盟 将每次重启产生的coredump大小设置为0,不需要无用的信息。 CjkLinux联盟 CjkLinux联盟 3.3 修正堆栈错误,防止溢出(只对2.6后有效) CjkLinux联盟 黑客进入系统后大部分是利用buffer overflow取得root shell CjkLinux联盟 为了防止基于堆栈的缓冲区溢出,在/etc/system文件中加入 CjkLinux联盟 set noexec_user_stack=1 防止在堆栈中执行 CjkLinux联盟 set noexec_user_stack_log=1 当某人试图运行增加一个记录。 CjkLinux联盟 CjkLinux联盟 然后改变文件权限:#chmod 644 /etc/system CjkLinux联盟 CjkLinux联盟 3.4 只允许root进行电源管理(只对2.6及以后版本有效) CjkLinux联盟 编辑/etc/default/sys-suspend: CjkLinux联盟 将 PERMS=console-owner CjkLinux联盟 改为 PERMS=- CjkLinux联盟 并做 #/bin/chmod 0755 /usr/openwin/bin/sys-suspend CjkLinux联盟 此项防止SYN Flood攻击 CjkLinux联盟 CjkLinux联盟 3.5 设置/tmp目录粘滞位,mode 1777 CjkLinux联盟 创建文件/etc/rc3.d/S79tmpfix: CjkLinux联盟 /bin/cat << EOF >/etc/rc3.d/S79tmpfix CjkLinux联盟 #!/bin/sh CjkLinux联盟 #ident \"@(#)tmpfix 1.0 95/09/14\" CjkLinux联盟 if [ -d /tmp ] CjkLinux联盟 then CjkLinux联盟 /usr/bin/chmod g-s /tmp CjkLinux联盟 /usr/bin/chmod 1777 /tmp CjkLinux联盟 /usr/bin/chgrp sys /tmp CjkLinux联盟 /usr/bin/chown sys /tmp CjkLinux联盟 fi CjkLinux联盟 EOF CjkLinux联盟 改变S79tmpfix文件权限: CjkLinux联盟 #/usr/bin/chmod 755 /etc/rc3.d/S79tmpfix CjkLinux联盟 此项给/tmp加上粘滞位,只允许写而不允许删除。这样,当黑客往/tmp写.socket文件时不允许删除。 CjkLinux联盟 CjkLinux联盟 3.6 禁止stop-‘A’键 CjkLinux联盟 在/etc/default/kbd中,改变或加入“KEYBOARD_ABORT=disable”此项防止启动后,按stop-A或L1-A得到ok提示符,使用启动盘可以进入单用户模式,防止黑客物理接触机器。但此项不禁止可以作为密码丢失时的应急处理。 CjkLinux联盟 CjkLinux联盟 3.7 密码设置配置 CjkLinux联盟 (1) 添加或编辑/etc/default/passwd文件如下入口: CjkLinux联盟 PWMIN= 1 #密码可以被改变的最小时段。 CjkLinux联盟 CjkLinux联盟 (2) 添加或编辑/etc/default/passwd文件如下入口: CjkLinux联盟 PWMAX= 13 #密码的最大生存周期。 CjkLinux联盟 CjkLinux联盟 (3) 添加或编辑/etc/default/passwd文件如下入口: CjkLinux联盟 PWWARN= 4 #设定离用户密码过期的天数,当系统启动时提醒用户。 CjkLinux联盟 CjkLinux联盟 (4) 添加或编辑/etc/default/passwd文件如下入口: CjkLinux联盟 PWLEN= 8 #设定最小用户密码长度为8位。 CjkLinux联盟 CjkLinux联盟 3.8 登陆的安全配置 CjkLinux联盟 CjkLinux联盟 3.8.1 防止远程的root登陆 CjkLinux联盟 解决方法: CjkLinux联盟 添加或编辑/etc/default/login文件如下入口: CjkLinux联盟 CONSOLE=/dev/console #这样root只能从/dev/console这个设备登陆。 CjkLinux联盟 CjkLinux联盟 3.8.2 纪录所有root的登陆情况 CjkLinux联盟 添加或编辑/etc/default/login文件如下入口: CjkLinux联盟 SYSLOG= YES #syslog纪录root的登陆失败,成功的情况。 CjkLinux联盟 CjkLinux联盟 3.8.3 设置登陆会话超时时间 CjkLinux联盟 添加或编辑/etc/default/login文件如下入口: CjkLinux联盟 TIMEOUT= 120 CjkLinux联盟 CjkLinux联盟 3.8.4 确定登陆需要密码验证 CjkLinux联盟 添加或编辑/etc/default/login文件如下入口: CjkLinux联盟 PASSREQ= YES CjkLinux联盟 参考脚本: CjkLinux联盟 defloginparams.sh CjkLinux联盟 CjkLinux联盟 3.9 设置屏蔽掩码和umask CjkLinux联盟 (1)设置屏蔽掩码: CjkLinux联盟 添加或编辑/etc/default/login文件如下入口: CjkLinux联盟 LUMASK= 027 #这将设定标准掩码为:750,也可以将这行加到/etc/.login /etc/profile /etc/skel/local.cshrc /etc/skel/local.login /etc/skel/local.profile这些文件里。 CjkLinux联盟 CjkLinux联盟 (2)设置umask CjkLinux联盟 确定root的umask是027或077 CjkLinux联盟 检查root的.profile CjkLinux联盟 CjkLinux联盟 3.10 设置shell的环境变量 CjkLinux联盟 添加或编辑/etc/default/login文件如下入口: CjkLinux联盟 ALTSHELL= YES CjkLinux联盟 参考脚本: CjkLinux联盟 defloginparams.sh CjkLinux联盟 CjkLinux联盟 3.11 查是否每个用户都设置了密码 CjkLinux联盟 检查/etc/passwd和/etc/shadow,每个用户的密码栏是否为空。 CjkLinux联盟 CjkLinux联盟 3.12 编辑使用useradd的缺省配置,满足密码策略 CjkLinux联盟 编辑/etc/sadm/defadduser需要满足密码策略,例如: CjkLinux联盟 defgroup=15 CjkLinux联盟 defgname=users CjkLinux联盟 defparent=/export/home CjkLinux联盟 defskel=/etc/skel CjkLinux联盟 defshell=/usr/bin/ksh CjkLinux联盟 definact=30 CjkLinux联盟 defexpire= CjkLinux联盟 CjkLinux联盟 3.13 在所有path中,去掉所有”.”路径 CjkLinux联盟 检查所有缺省启动脚本和root启动脚本,在所有路径变量中删除“.”路径, 包括以下文件: CjkLinux联盟 /.login CjkLinux联盟 /etc/.login CjkLinux联盟 /etc/default/login CjkLinux联盟 /.cshrc CjkLinux联盟 /etc/skel/local.cshrc CjkLinux联盟 /etc/skel/local.login CjkLinux联盟 /etc/skel/local.profile CjkLinux联盟 /.profile CjkLinux联盟 /etc/profile CjkLinux联盟 CjkLinux联盟 3.14 使用sugroup来限制su CjkLinux联盟 将可以su的用户添加到这个组,在 /etc/group中创建特殊的组sugroup,将你的管理员帐号加到这个组。 CjkLinux联盟 CjkLinux联盟 改变 /bin/su 的权限为: r-sr-sr-x 1 root sugroup CjkLinux联盟 #chmod 550 /bin/su CjkLinux联盟 #chmod +s /bin/su CjkLinux联盟 #chown root:sugroup /bin/su CjkLinux联盟 #ls -al /bin/su CjkLinux联盟 -r-sr-s--- 1 root sugroup 18360 Jan 15 1998 /bin/su CjkLinux联盟 #grep sugroup /etc/group CjkLinux联盟 sugroup:root,httpadm,wspher CjkLinux联盟 这样,只有sugroup组中的用户可以使用su,提升为超级用户 CjkLinux联盟 另外一个可行的方法是使用sudo来替代su。 CjkLinux联盟 CjkLinux联盟 4 网络安全配置 CjkLinux联盟 4.1 禁止所有不需要的服务 CjkLinux联盟 用grep -v “^#”/etc/inetd.conf命令来察看你当前没有注释的服务 CjkLinux联盟 # vi /etc/inetd.conf CjkLinux联盟 在/etc/inetd.conf中注释掉左右不需要的服务,比如: CjkLinux联盟 name、shell、login、exec、comsat、talk、rusersd、printer、finger、uucp 所有以“r”开头的服务,对必须提供的服务采用tcpwapper来保护。 CjkLinux联盟 CjkLinux联盟 4.2 编译安装Tcp wapper CjkLinux联盟 安装tcpd,编辑inetd.conf中的服务为: CjkLinux联盟 CjkLinux联盟 ftp stream tcp nowait root /usr/local/bin/tcpd in.ftpd CjkLinux联盟 telnet stream tcp nowait root /usr/local/bin/tcpd in.telnetd CjkLinux联盟 CjkLinux联盟 4.3 Tcp_Wrappers CjkLinux联盟 在默认情况下,Solaris允许所有的服务请求。用Tcp_Wrappers来保护服务器的安全,使其免受外部的攻击,比想像的要简单和轻松的多。 CjkLinux联盟 在/etc/hosts.deny 文件中加入 ALL:ALL以禁止所有计算机访问服务器,然后在/etc/hosts.allow 文件中加入允许访问服务器的计算机。这种做法是最安全的。 CjkLinux联盟 Tcp_Wrappers是由两个文件控制的,它们是/etc/hosts.allow 和 /etc/hosts.deny。 CjkLinux联盟 CjkLinux联盟 第一步 编辑/etc/hosts.deny 文件 CjkLinux联盟 # vi /etc/hosts.deny CjkLinux联盟 加入下面这些行: CjkLinux联盟 CjkLinux联盟 ALL:ALL CjkLinux联盟 CjkLinux联盟 这样做的目的是:所有的服务、访问位置,如果没有被明确的允许,也就是在/etc/hosts.allow 中找不到匹配的项,就是被禁止的。 CjkLinux联盟 CjkLinux联盟 CjkLinux联盟 第二步 编辑/etc/hosts.allow 文件 CjkLinux联盟 # vi /etc/hosts.allow CjkLinux联盟 CjkLinux联盟 例:我们只希望允许同一个局域网的机器使用服务器的telnet功能,而禁止互联网上面的telnet服务请求,本地局域网由 202.39.154. 、202.39.153. 和202.39.152. 三个网段组成。在hosts.deny文件中,我们定义禁止所有机器请求所有服务: ALL:ALL。 在hosts.allow文件中,我们定义只允许局域网访问telnet功能: CjkLinux联盟 CjkLinux联盟 in.telnetd: 202.39.154. 202.39.153. 202.39.152. CjkLinux联盟 CjkLinux联盟 这样,当非局域网的机器请求telnet服务时,就会被拒绝。而局域网的机器可以使用telnet服务。 CjkLinux联盟 CjkLinux联盟 4.4 启动时提供的服务(rc.x) CjkLinux联盟 4.4.1 禁止所有不需要的服务 CjkLinux联盟 在rc.x目录中将不需要的服务改名,比如: CjkLinux联盟 # mv /etc/rc3.d/S92volmgt /etc/rc2.d/not_usedS92volmgt CjkLinux联盟 以下服务应该禁止(根据需要自己决定): CjkLinux联盟 CjkLinux联盟 snmpdx CjkLinux联盟 autofs (Automounter) CjkLinux联盟 volmgt (Volume Deamon) CjkLinux联盟 lpsched (LP print service) CjkLinux联盟 nscd (Name Service Cache Daemon) CjkLinux联盟 Sendmail CjkLinux联盟 keyserv (Keyserv Deamon is only used if NIS+ or NFS are installed, if used start with CjkLinux联盟 –d option so that the defaults “nobody” key is not allowed) CjkLinux联盟 rpcbind提供远程呼叫,依靠远程系统的ip地址和远程用户的ID进行验证,这样很容易伪造和改变。 CjkLinux联盟 CjkLinux联盟 4.4.2 禁止所有DMI服务 CjkLinux联盟 禁止所有DMI服务: CjkLinux联盟 # mv /etc/rc3.d/S??dmi /etc/rc3.d/K??dmi CjkLinux联盟 CjkLinux联盟 /etc/init.d/init.dmi中启动的dmi服务有: CjkLinux联盟 /usr/lib/dmi/dmispd CjkLinux联盟 /usr/lib/dmi/snmpXdmid CjkLinux联盟 /etc/dmi/ciagent/ciinvoke CjkLinux联盟 CjkLinux联盟 4.4.3 去掉mount系统的suid位 CjkLinux联盟 在/etc/rmmount.conf中加上: CjkLinux联盟 CjkLinux联盟 mount hsfs -o nosuid CjkLinux联盟 mount ufs -o nosuid CjkLinux联盟 CjkLinux联盟 4.4.4 检查所有的.rhosts文件 CjkLinux联盟 .rhosts允许不要密码远程访问 CjkLinux联盟 预先生成$HOME/.rhosts文件,并且设置为0000,防止被写入”+ +”。(攻击者经常使用类似符号链接或者利用ROOTSHELL写入)。 CjkLinux联盟 注:这种情况会导致一些如SSH的RCP命令无法使用(需要使用$HOME/.rhosts文件的一些命令) CjkLinux联盟 touch /.rhosts ;chmod 0 /.rhosts CjkLinux联盟 CjkLinux联盟 .rhosts可以被普通用户所创建在个人目录下。推荐使用脚本来发现.rhosts文件。并且利用cron自动检查,报告给特定用户。 CjkLinux联盟 Script for Find.rhost: CjkLinux联盟 #!/bin/sh CjkLinux联盟 /usr/bin/find /home -name .rhosts | (cat < this only find .rhost: CjkLinux联盟 EOF CjkLinux联盟 cat CjkLinux联盟 ) | /bin/mailx -s \"Content of .rhosts file audit report\" yourmailbox CjkLinux联盟 CjkLinux联盟 4.4.5 禁止使用.rhosts认证 CjkLinux联盟 在/etc/pam.conf中删除 CjkLinux联盟 rlogin auth sufficient /usr/lib/security/pam_rhosts_auth.so.1 CjkLinux联盟 CjkLinux联盟 将rsh的行改为: CjkLinux联盟 rsh auth required /usr/lib/security/pam_unix.so.1 CjkLinux联盟 CjkLinux联盟 4.4.6 检查信任关系 CjkLinux联盟 检查/etc/hosts.equiv文件,确保为空。 CjkLinux联盟 CjkLinux联盟 4.5 网络接口调整和安全优化 CjkLinux联盟 4.5.1 /etc/rc2.d/S??inet参数调整 CjkLinux联盟 在/etc/rc2.d/S??inet中做如下参数调整: CjkLinux联盟 CjkLinux联盟 缩短ARP的cache保存时间: CjkLinux联盟 ndd -set /dev/arp arp_cleanup_interval 60000 /* 1 min (default is 5 min)*/ CjkLinux联盟 CjkLinux联盟 缩短ARP表中特定条目的保持时间: CjkLinux联盟 ndd -set /dev/ip ip_ire_flush_interval 60000 /* 1 min (default is 20 min)*/ CjkLinux联盟 CjkLinux联盟 关闭echo广播来防止ping攻击 CjkLinux联盟 ndd -set /dev/ip ip_respond_to_echo_broadcast 0 # default is 1 CjkLinux联盟 CjkLinux联盟 关闭原路由寻址 CjkLinux联盟 ndd -set /dev/ip ip_forward_src_routed 0 # default is 1 CjkLinux联盟 CjkLinux联盟 禁止系统转发IP包 CjkLinux联盟 ndd -set /dev/ip ip_forwarding 0 # default is 1 CjkLinux联盟 CjkLinux联盟 禁止系统转发定向广播包 CjkLinux联盟 ndd -set /dev/ip ip_forward_directed_broadcasts 0 # default is 1 CjkLinux联盟 CjkLinux联盟 使系统忽略重定向IP包 CjkLinux联盟 ndd -set /dev/ip ip_ignore_redirect 1 # default is 0 CjkLinux联盟 CjkLinux联盟 使系统限制多宿主机 CjkLinux联盟 ndd -set /dev/ip ip_strict_dst_multihoming 1 # default is 0 CjkLinux联盟 CjkLinux联盟 再次确保系统关闭ICMP广播响应 CjkLinux联盟 ndd -set /dev/ip ip_respond_to_address_mask_broadcast=0 # default is 1 CjkLinux联盟 CjkLinux联盟 关闭系统对ICMP时戳请求的响应 CjkLinux联盟 ndd -set /dev/ip ip_ip_respond_to_timestamp=0 # default is 1 CjkLinux联盟 CjkLinux联盟 关闭系统对ICMP时戳广播的响应 CjkLinux联盟 ndd -set /dev/ip ip_ip_respond_to_timestamp_broadcast=0 # default is 1 CjkLinux联盟 CjkLinux联盟 禁止系统发送ICMP重定向包 CjkLinux联盟 ndd -set /dev/ip ip_send_redirects=0 # default is 1 CjkLinux联盟 CjkLinux联盟 4.5.2 改变TCP序列号产生参数 CjkLinux联盟 在/etc/default/inetinit中改变 CjkLinux联盟 TCP_STRONG_ISS=2 CjkLinux联盟 CjkLinux联盟 4.5.3 设置in.routed运行在静态路由模式 CjkLinux联盟 按如下步骤建立in.routed -q(静态模式): CjkLinux联盟 mv /usr/sbin/in.routed /usr/sbin/in.routed.orig CjkLinux联盟 CjkLinux联盟 创建文件/usr/sbin/in.routed为以下内容: CjkLinux联盟 #! /bin/sh CjkLinux联盟 /usr/sbin/in.routed.orig –q CjkLinux联盟 CjkLinux联盟 改变文件属性: CjkLinux联盟 chmod 0755 /usr/sbin/in.routed CjkLinux联盟 CjkLinux联盟 #动态的路由模式容易遭受到恶意的路由信息的亲篇和攻击,所以建议宁愿用静态路由,(路由的增加通过启动文件的route命令)也不建议用动态路由守护进程。 CjkLinux联盟 CjkLinux联盟 CjkLinux联盟 4.5.4 禁止路由功能 CjkLinux联盟 创建空文件notrouter: CjkLinux联盟 # touch /etc/notrouter CjkLinux联盟 CjkLinux联盟 4.5.5 利用ip-filter CjkLinux联盟 ip-filter是Solaris系统的内核模块,可以完成简单包过滤 CjkLinux联盟 CjkLinux联盟 二 应用程序安全配置 CjkLinux联盟 1. 总体安全考虑 CjkLinux联盟 应用程序以非特权用户运行 CjkLinux联盟 定义应用程序属主 CjkLinux联盟 删除所有的samples CjkLinux联盟 chroot,改变进程的root目录 CjkLinux联盟 具体应用考虑 CjkLinux联盟 CjkLinux联盟 2. NFS服务 CjkLinux联盟 2.1 禁止nfs服务 CjkLinux联盟 杀掉如下NFS进程: lockd、nfsd、statd、mountd CjkLinux联盟 CjkLinux联盟 NFS是由/etc/dfs/dfstab文件控制,为了禁止NFS服务的后台程序 CjkLinux联盟 将/etc/rc2.d/S15nfs.server文件改名 K15nfs.server CjkLinux联盟 将/etc/rc2.d/S73nfs.client文件改名 K13nfs.client CjkLinux联盟 CjkLinux联盟 /etc/dfs/dfstab 文件有几个选项 CjkLinux联盟 share –F nfs –o [rw/ro] /目录名 CjkLinux联盟 client端有读写权限, ro是client端只有读权限 [建议使用ro选项] CjkLinux联盟 CjkLinux联盟 2.2 如必须使用,则设置nfs特殊tcp、udp端口 CjkLinux联盟 CjkLinux联盟 ndd -set /dev/tcp tcp_extra_priv_ports_add 2049(设置TCP端口) CjkLinux联盟 CjkLinux联盟 ndd -set /dev/udp udp_extra_priv_ports_add 2049(设置UDP端口) CjkLinux联盟 CjkLinux联盟 2.3 打开nfs port monitoring功能 CjkLinux联盟 在/etc/system中加入: CjkLinux联盟 CjkLinux联盟 set nfssrv:nfs_portmon = 1 CjkLinux联盟 set nfs:nfs_portmon = 1 CjkLinux联盟 确定你的/etc/system文件的访问权限为644: CjkLinux联盟 # chmod 644 /etc/system CjkLinux联盟 CjkLinux联盟 CjkLinux联盟 2.4 一些nfs相关的服务 CjkLinux联盟 解决方法: CjkLinux联盟 nfsd CjkLinux联盟 mountd CjkLinux联盟 rpc.boot CjkLinux联盟 in.rarpd CjkLinux联盟 rpld CjkLinux联盟 CjkLinux联盟 3 NIS,NIS+ CjkLinux联盟 3.1 去除NIS,NIS+ CjkLinux联盟 建议不要运行NIS,NIS+服务,所以按一下步骤移除它: CjkLinux联盟 在文件/etc/domainname里移除域名: CjkLinux联盟 可以察看NIS大体的服务列表: CjkLinux联盟 # pkginfo |grep NIS CjkLinux联盟 # pkgrm CjkLinux联盟 system SUNWypr NIS Server for Solaris (root) CjkLinux联盟 system SUNWypu NIS Server for Solaris (usr) CjkLinux联盟 CjkLinux联盟 3.2 移除NIS,NIS+,DNS Lookup CjkLinux联盟 解决方法: CjkLinux联盟 编辑/etc/nsswitch.conf如下: CjkLinux联盟 CjkLinux联盟 passwd: files CjkLinux联盟 group: files CjkLinux联盟 hosts: files CjkLinux联盟 networks: files CjkLinux联盟 protocols: files CjkLinux联盟 rpc: files CjkLinux联盟 ethers: files CjkLinux联盟 netmasks: files CjkLinux联盟 bootparams: files CjkLinux联盟 publickey: files CjkLinux联盟 netgroup: files CjkLinux联盟 automount: files CjkLinux联盟 aliases: files CjkLinux联盟 services: files CjkLinux联盟 sendmailvars: files CjkLinux联盟 如果需要dns的话,可以再次修改这个文件。 CjkLinux联盟 CjkLinux联盟 4 Mail CjkLinux联盟 4.1 停止绑定在25端口的sendmail服务 CjkLinux联盟 解决方法: CjkLinux联盟 禁止sendmail服务,系统用户依然可以发信。含义是:sendmail仍然安装了,只是不要作为守护进程存在,你可以在sendmail.cf文件里限制系统的用户的权限。 CjkLinux联盟 # mv /etc/rc2.d/S88sendmail /etc/rc2.d/not_usedS88sendmail CjkLinux联盟 CjkLinux联盟 4.2 注释所有的并行邮件别名 CjkLinux联盟 解决方法: CjkLinux联盟 检查 /ect/aliases |可以并列。用#号注解。 CjkLinux联盟 CjkLinux联盟 4.3 限制sendmail的expn和vrfy两个命令来收集系统信息 CjkLinux联盟 解决方法: CjkLinux联盟 在/etc/senmmail.cf文件中修改如下限制远程连接25端口使用expn和vrfy命令: CjkLinux联盟 CjkLinux联盟 # O PrivacyOptions=authwarnings, goaway CjkLinux联盟 Opgoaway CjkLinux联盟 # O PrivacyOptions=noexpn, novrfy, authwarnings CjkLinux联盟 O LogLevel=5 CjkLinux联盟 CjkLinux联盟 4.4 隐藏smtp版本信息 CjkLinux联盟 解决方法: CjkLinux联盟 在/etc/mail/sendmail.cf文件里找到smtp版本信息,修改如下: CjkLinux联盟 # SMTP login message CjkLinux联盟 CjkLinux联盟 4.5 禁止邮件转发 CjkLinux联盟 解决方法: CjkLinux联盟 普通用户不可以选择转发者,而root可以通过/usr/local/forward/.forward.$u来控制邮件转发,修改/etc/sendmail.cf如下行: CjkLinux联盟 O ForwardPath=/usr/local/forward/.forward.$u CjkLinux联盟 设置/usr/local/forward正确的权限。 CjkLinux联盟 CjkLinux联盟 4.6 接收邮件 CjkLinux联盟 解决方法: CjkLinux联盟 如果真要在系统上接收外来的邮件(监听在25端口)。建议利用spam或smtpd/smtpfwdd来保证邮件服务的安全(加上anti-spam,安全配置)。 CjkLinux联盟 CjkLinux联盟 5 Ftp安全配置 CjkLinux联盟 5.1 安全FTP CjkLinux联盟 解决方法: CjkLinux联盟 建立或修改/etc/default/ftpd文件增加屏蔽码和ftp标志信息: CjkLinux联盟 UMASK= 077 CjkLinux联盟 BANNER=\"/bin/cat /etc/ftp-banner\" CjkLinux联盟 修改/etc/default/ftpd权限: CjkLinux联盟 chmod 644 /etc/default/ftpd CjkLinux联盟 CjkLinux联盟 5.2 建立ftp标示信息 CjkLinux联盟 解决方法: CjkLinux联盟 建立/etc/ftp-banner文件满足如下: CjkLinux联盟 例如:This system is for authorized users only. Monitoring may occur CjkLinux联盟 修改/etc/ftp-banner文件的权限: CjkLinux联盟 chmod 644 /etc/ftp-banner CjkLinux联盟 CjkLinux联盟 5.3 在/etc/passwd文件中 CjkLinux联盟 ftp:x:30000:30000:Anonymous FTP:/ftp目录:/nosuchshell CjkLinux联盟 CjkLinux联盟 5.4 在/etc/shadow文件中 CjkLinux联盟 ftp:NP:6445:::::: CjkLinux联盟 CjkLinux联盟 5.5 FTP-server的配置文件/etc/ftpaccess CjkLinux联盟 CjkLinux联盟 class local real * 重定义真实用户为local CjkLinux联盟 class remote guest,anonymous * 重定义匿名用户为 remote CjkLinux联盟 limit local 100 Any /ftp目录/msgs/limit.local限制登录用户数 CjkLinux联盟 limit remote 100 Any / ftp目录/msgs/limit.remote 限制登录用户数 CjkLinux联盟 banner /ftp目录/msgs/msg.banner CjkLinux联盟 loginfails 2 重试次数 CjkLinux联盟 readme README* login CjkLinux联盟 readme README* cwd=* CjkLinux联盟 message /ftp目录/msgs/welcome.msg login local remote CjkLinux联盟 message /ftp目录/msgs/cwd.msg cwd=* remote CjkLinux联盟 compress yes local,remote CjkLinux联盟 tar yes remote,local CjkLinux联盟 log commands real CjkLinux联盟 log transfers anonymous,real,guest inbound,outbound CjkLinux联盟 shutdown /ftp目录/msgs/shutmsg CjkLinux联盟 CjkLinux联盟 5.6 创建ftp banner CjkLinux联盟 创建Banner文件 /etc/ftp-banner CjkLinux联盟 CjkLinux联盟 5.7 创建/etc/ftpusers文件 CjkLinux联盟 把所有的系统账户加入到这个文件里: CjkLinux联盟 root daemon sys bin adm lp smtp uucp nuucp listen CjkLinux联盟 nobody noaccess news ingres audit admin sync nobody4 CjkLinux联盟 CjkLinux联盟 修改/etc/ftpuser文件的权限: CjkLinux联盟 # chmod 644 /etc/ftpusers CjkLinux联盟 CjkLinux联盟 6 Telnet安全配置 CjkLinux联盟 6.1 防止telnet程序显示系统版本信息 CjkLinux联盟 解决方法: CjkLinux联盟 移除/etc/default/telnetd文件里的信息:Banner=”” CjkLinux联盟 CjkLinux联盟 假如/etc/default/telnetd文件不存在,按如下步骤操作: CjkLinux联盟 # touch /etc/default/telnetd CjkLinux联盟 # echo \"BANNER=\\\"\\\"\">> /etc/default/telnetd CjkLinux联盟 # chmod 444 /etc/default/telnetd CjkLinux联盟 CjkLinux联盟 6.2 最好采用SSH代替Telnet CjkLinux联盟 CjkLinux联盟 7 X-Windows CjkLinux联盟 设置CDE为不接受任何XDMCP登陆连接 CjkLinux联盟 假如/usr/dt/config/Xaccess存在,则如下操作: CjkLinux联盟 cat </usr/dt/config/Xaccess CjkLinux联盟 # disable all XDMCP connections CjkLinux联盟 !* CjkLinux联盟 EOF CjkLinux联盟 假如/etc/dt/config/Xaccess存在,则如下操作: CjkLinux联盟 cat </etc/dt/config/Xaccess CjkLinux联盟 # disable all XDMCP connections CjkLinux联盟 !* CjkLinux联盟 EOF CjkLinux联盟 CjkLinux联盟 三 文件权限 CjkLinux联盟 1 删除所有不使用的suid文件 CjkLinux联盟 列出系统中所有 suid 文件 CjkLinux联盟 find / -type f \\( -perm -4000 \\) –exec ls –al {} \\; CjkLinux联盟 find / -type f \\( -perm -4000 \\) –exec ls –al {} \\; > $HOME/search-4-suid-files.txt CjkLinux联盟 CjkLinux联盟 首先备份 suid 文件 CjkLinux联盟 # mkdir /opt/backup/suid CjkLinux联盟 find / -type f \\( -perm -4000 \\) -print |cpio -pudm /opt/backup/suid CjkLinux联盟 删除前建立tar备份,不要删除suid-files.tar!! CjkLinux联盟 cd /opt/backup; tar –cvpf suid-files.tar /opt/backup/suid/* CjkLinux联盟 rm –r /opt/backup/suid CjkLinux联盟 去除所有suid 文件中的suid 位 CjkLinux联盟 CjkLinux联盟 find / -type f \\( -perm -4000 \\) –exec chmod –s {} \\; CjkLinux联盟 再查一遍 CjkLinux联盟 find / -type f \\( -perm –4000 \\) –exec ls –al {} \\; CjkLinux联盟 对一些常用文件建立suid 位 CjkLinux联盟 chmod u+s /usr/bin/su CjkLinux联盟 chmod u+s /usr/bin/passwd CjkLinux联盟 chmod u+s /usr/bin/ps CjkLinux联盟 CjkLinux联盟 2 删除所有不使用的sgid文件 CjkLinux联盟 列出系统中所有 suid 文件 CjkLinux联盟 find / -type f \\( -perm -2000 \\) –exec ls –al {} \\; CjkLinux联盟 find / -type f \\( -perm -2000 \\) –exec ls –al {} \\; > $HOME/search-4-sgid-files.txt CjkLinux联盟 CjkLinux联盟 首先备份 sgid 文件: CjkLinux联盟 mkdir /opt/backup/sgid CjkLinux联盟 find / -type f \\( -perm -2000 \\) -print |cpio -pudm /opt/backup/sgid CjkLinux联盟 删除前建立tar备份,不要删除sgid-files.tar!! CjkLinux联盟 cd /opt/backup; tar –cvpf sgid-files.tar /opt/backup/sgid/* CjkLinux联盟 rm –r /opt/backup/sgid CjkLinux联盟 去除所有sgid 文件中的sgid 位 CjkLinux联盟 CjkLinux联盟 find / -type f \\( -perm -2000 \\) –exec chmod –s {} \\; CjkLinux联盟 再查一遍 CjkLinux联盟 find / -type f \\( -perm –2000 \\) –exec ls –al {} \\; CjkLinux联盟 对一些常用文件建立sgid 位。 CjkLinux联盟 CjkLinux联盟 3 删除/etc下所有组可写文件 CjkLinux联盟 find /etc -type f \\( -perm -20 \\) –exec ls –al {} \\; CjkLinux联盟 find /etc -type f \\( -perm -20 \\) –exec ls –al {} \\; > search-4-group-writeable-in-etc.txt CjkLinux联盟 /etc下不应有组可写文件,去掉写权限 CjkLinux联盟 find /etc -type f \\( -perm –20 \\) –exec chmod g-w {} \\; CjkLinux联盟 CjkLinux联盟 4 删除/etc下所有用户可写文件 CjkLinux联盟 检查/etc目录下对用户可写文件: CjkLinux联盟 find /etc -type f\\( -perm 2 \\) | xargs ls –las CjkLinux联盟 不需要用户的可写权限,修改如下: CjkLinux联盟 find /etc -type f\\( -perm 2 \\) | xargs chmod g-w CjkLinux联盟 CjkLinux联盟 5 改变所有文件的rw-rw-rw权限为rw-r-r- CjkLinux联盟 首先列出文件: CjkLinux联盟 find / -type f -perm 666 |xargs ls -al > perm-666-before-change.txt CjkLinux联盟 改变权限: CjkLinux联盟 find / -type f -perm 666 |xargs chmod 644 CjkLinux联盟 find / -type f -perm 666 |xargs ls -al > perm-666-after-change.txt CjkLinux联盟 CjkLinux联盟 6 改变rwxrwxrwx文件的权限 CjkLinux联盟 首先列出文件: CjkLinux联盟 find / -type f -perm 777 |xargs ls -al > perm-777-before-change.txt CjkLinux联盟 改变权限: CjkLinux联盟 find / -type f -perm 777 |xargs chmod 755 CjkLinux联盟 find / -type f -perm 777 |xargs ls -al > perm-777-after-change.txt CjkLinux联盟 CjkLinux联盟 7 找出系统可写的目录 CjkLinux联盟 解决方法: CjkLinux联盟 find / -type d\\( -perm 2 \\) CjkLinux联盟 改变所需要的权限设置 CjkLinux联盟 CjkLinux联盟 8 确定每个root启动的脚本属于root CjkLinux联盟 检查启动脚本的文件属主: CjkLinux联盟 CjkLinux联盟 find /etc -type f -print | grep rc | egrep -v \"skel|tty|mail|snmp|Mail\" | xargs ls -al > rc-files-before-change.txt CjkLinux联盟 CjkLinux联盟 改变这些文件的文件属主: CjkLinux联盟 find /etc -type f -print | grep rc | egrep -v \"skel|tty|mail|snmp|Mail\" | xargs chown CjkLinux联盟 root:root CjkLinux联盟 CjkLinux联盟 find /etc -type f -print | grep rc | egrep -v \"skel|tty|mail|snmp|Mail\" | xargs ls -al > rc-files-after-change.txt CjkLinux联盟 CjkLinux联盟 ls -al /etc/init.d > etc-init.d-before.change.txt CjkLinux联盟 CjkLinux联盟 chown root:root /etc/init.d CjkLinux联盟 CjkLinux联盟 ls -al /etc/init.d > etc-init.d-after-change.txt CjkLinux联盟 CjkLinux联盟 经过这样的改变,所有的rcX.d里的脚本的文件属主都为root,所有的/etc/init.d目录里的脚本的文件属主文件组都是root了,为了防止特洛伊木马。 CjkLinux联盟 CjkLinux联盟 9 确保所有cron行为有记录 CjkLinux联盟 确定/etc/default/cron文件里有如下行: CjkLinux联盟 CRONLOG=YES CjkLinux联盟 删除/var/spool/cron/crontabs 目录中除了root文件外所有文件。 CjkLinux联盟 CjkLinux联盟 10 检查utmp,utmpx的权限 CjkLinux联盟 检查/var/adm目录下的文件权限: CjkLinux联盟 find /var/adm -type f\\( -perm 2 \\) | xargs ls -las CjkLinux联盟 修改文件: CjkLinux联盟 chmod 644 /var/adm/utmp CjkLinux联盟 CjkLinux联盟 11 查找无用户文件 CjkLinux联盟 1) find / -type f -nouser > files-nouser-before-change CjkLinux联盟 2) find / -type f -nouser | xargs chwon nobody:nobody CjkLinux联盟 3) find / -type f -nouser > files-nouser-after-change CjkLinux联盟 CjkLinux联盟 12 查找无组文件 CjkLinux联盟 1) find / -type f -nogroup > files-nogroup-before-change CjkLinux联盟 2) find / -type f -nogroup | xargs chgrp nobody CjkLinux联盟 3) find / -type f -nogroup > files-nogroup-after-change CjkLinux联盟 CjkLinux联盟 13 改变/var/cron权限 CjkLinux联盟 chmod 700 /var/cron && chown root /var/cron && chgrp sys /var/cron CjkLinux联盟 CjkLinux联盟 四 日志和监控 CjkLinux联盟 1 将cron logfiles的大小设为2M CjkLinux联盟 修改/etc/cron.d/logchecker如下: CjkLinux联盟 LIMIT=4096 CjkLinux联盟 CjkLinux联盟 2 记录所有inetd服务 CjkLinux联盟 修改/etc/init.d/inetsvc文件如下: CjkLinux联盟 /usr/sbin/ifconfig -au netmask + broadcast + CjkLinux联盟 /usr/ bin/inetd -s –t CjkLinux联盟 假如你运行了named,dhcpd, multicast,你必须作如上改动。 CjkLinux联盟 CjkLinux联盟 3 修改syslog.conf文件 CjkLinux联盟 编辑syslog.conf,增加 CjkLinux联盟 *.debug /var/adm/compass.messages #记录debug信息 CjkLinux联盟 CjkLinux联盟 4 创建/var/adm/loginlog来记录登陆失败信息 CjkLinux联盟 touch /var/adm/loginlog CjkLinux联盟 chmod 600 /var/adm/loginlog CjkLinux联盟 chown root /var/adm/loginlog CjkLinux联盟 chgrp sys /var/adm/loginlog CjkLinux联盟 CjkLinux联盟 五 其他安全建议 CjkLinux联盟 1 安装tripwire CjkLinux联盟 tripwire是一个特洛伊木马检查程序,他工作在提供的二进制文件的md5码的数据库以及你的配置上,建议每6个小时运行一次tripwire。 CjkLinux联盟 CjkLinux联盟 2 IDS CjkLinux联盟 建议安装运行snort工具来监测你的网络可能收到的如下攻击: CjkLinux联盟 - cgi-scan CjkLinux联盟 - portscans CjkLinux联盟 - virus CjkLinux联盟 根据你的需要参看/root/config/snort.rules文件。 CjkLinux联盟 CjkLinux联盟 3 日志文件观察者(swatch) CjkLinux联盟 建议安装运行swatch工具来监测你的日志文件,你可以在你的系统上启动多个监测进程,例如: CjkLinux联盟 - /var/adm/compass.messages CjkLinux联盟 - /var /adm/snort_portscan.log CjkLinux联盟 - /opt/AppServer/WebSphere/log/???? CjkLinux联盟 Swatch是一个用perl写的工具,所以你必须安装PERL MODULES。 CjkLinux联盟 CjkLinux联盟 4 设置启动标示 CjkLinux联盟 创建/etc/issue文件,添加需要的启动标示。
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论 |
|
|
|
|
|