linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > article > unix > unix提高 >
栏目导栏
资料搜索
热门文章
·20%的SOLARIS知识解决80%的问题
·Solaris启动过程详解 zt
·查看Solaris系统硬件配置的命令
·STRUTS 源码学习笔记
·Unix系列shell程序编写(中)
·SOLARIS技巧篇
·snort源码分析
·Unix系列shell程序编写(下)
·在solaris 10/x86下安装oracle
·Apache源代码分析——关于模块
·solaris 10 硬盘安装
·Solaris安全配置手册
·HP-UX基本指令快速参考
· Tomcat Server源码启动分析
·Solaris8 双网卡配置(路由器用
最新文章
·solaris系统安全配置
·RHEL5.0操作系统下NFS服务的配
·Solaris Linux 9下Vsftpd的配置
·在HP-UX下建立只归属于某个目录
·SolarWinds2002使用说明
·从外部存储划盘并加入vg,为fs扩
·因带库问题导致系统光纤卡报错
·Unix下多线程中条件变量的使用
·UNIX和Linux中信号的个数
·不同的类UNIX操作系统密码破解
·AIX系统下Domino邮件服务器安装
·限制ROOT用户远程登陆UNIX系统
·Unix操作系统入侵追踪反击战
·AIX CDE不能启动的故障一般性解
·CentOS4.4用VSFTPD架设FTP服务
Google
 
solaris系统安全配置
[ 作者:  加入时间:2008-02-15 10:24:23  来自:Linux联盟收集整理 ]
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论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·Solaris 管理员常用的168条命令  (2008-02-15 10:22:10)
 ·solaris raid 制作大集合  (2008-02-15 10:21:42)
 ·Linux操作系统的口令文件安全问题详解  (2008-02-15 10:12:46)
 ·Ubuntu Server版系统的用户安全优化方法  (2008-02-04 10:07:18)
 ·Solaris Linux 9下Vsftpd的配置方法介绍  (2008-01-14 09:49:04)
 ·在Solaris下使用USB存储设备  (2008-01-14 09:48:31)
 ·一个完整、安全的PHP用户登录系统  (2007-12-28 06:14:35)
 ·采取有效的安全措施远程使用MySQL GUI工具  (2007-12-25 10:38:20)
 ·Slackware系统下缺省网络配置的安全问题  (2007-12-19 15:09:39)
 ·如何制定全面的网络安全计划  (2007-12-03 11:09:02)