solaris安全手册
网络整理 - 06-30
Preparation
Initial OS installation
Stripping/configuring OS: st pass
Connect to test network
Installing tools & sysadmin software
Stripping/configuring OS: nd pass
Create Tripwire image backup test
Install test harden applications
Install on live network test
Preparation
最小限度保证安全的方法是只在主机上运行一个或两个服务使用一个机器比只使用
一个拥有所有权利的机器安全的多因为这样可以隔离方便查找问题所在总之
在你的机器上运行你一些最必要的服务考虑拆除键盘屏幕这样可以避免使用X
和知道命令行所示在一个隔离的信任的网络段中进行测试明确你的系统和硬件配
置能产生什么样的结果如在安装SUN的Disksuite时要考虑
你是否需要RPC服务因为DISKSUITE必须使用RPC服务明确各种应用程序是怎样工作
的如使用什么端口和文件
初始化安装操作系统
连接串口控制台开机当出现OK提示时发送StopA信息(~#~%b或者F主要取决
于你使用tipcu或者vt终端)然后开始安装过程boot cdrom install
使用最小安装 end user bundle(除非你要额外的server/developer工具)设置主机
名终端IP参数时区等等不要激活NIS或者NFS及不要激活电源管理选择手工
划分分区把/usr和/opt和ROOT分离开来以便这些分区可以以只读方式挂(mount)起来
考虑把大的/var文件系统和拥有较多的数据量如(webftp)划分为独立的分区
如果硬盘是GB建议MB / (+var) MB swap MB /usr及 GB 给 /opt
如果硬盘是GB建议MB / (+var+opt) MB swap MB /usr
给ROOT设置一个到字符大小写结合等比较强壮的密码再重启动
接着安全由SUN的安全补丁一般的在CD上就包含这些安全补丁包重启动及作为ROO
T重启动后你可以使用showrev p查看补丁列表
配置操作系统
磁盘共享(mount):为了减少木马和不授权的修改在/etc/vfstab在mount /时请使用
remountnosuid选项在/var上请带上nosuid选项在/tmp后加上
size=mnosuid选项(允许/tmp只能使用M空间及不允许执行SUID程序)
如果软盘不需要的话再把/dev/fd行注释掉
(下面的命令假定你使用的是cshell)
使NFS无效
rm /etc/rcd/{SnfsclientKnfsserver} /etc/rcd/Snfsserver /etc/
dfs/dfstab使Sendmail守护程序无效虽然sendmail不是作为一个守护程序来运行的
但两进制程序是依然存在的EMAIL还可以通过它了发送(但不能接受)设定只要一
个主机来接受EMAIL另必须使用smap或其他等同命令来把sendmail危险程度降低到最
底
rm /etc/rcd/Ssendmail
再在cron行中增加处理邮件队列的命令
* * * * /usr/lib/sendmail q
在关闭一些其他的服务
rm /etc/rcd/{SautofsSsysidsysSautoinstall}
rm /etc/rcd/{ScacheosfinishScachefsdaemonSPRESERVE}
rm /etc/rcd/{SpowerKdmi}
rm /etc/rcd/Sdmi
If you have server/developer packages:
rm /etc/rcd/{SaspppSbdconfigSuucp}
使RPC无效这一般来说是建议关闭此功能的但一些程序如DISKSUITE会开启RPC服务
所以一般建议不使用DISKSUITE工具如果你不想使RPC无效则一定要使用信息包
过滤器
rm /etc/rcd/Srpc
使打印服务无效(除非有一个本地打印机存在)
rm /etc/rcd/{SlpSspc}
使naming Services Caching Daemon(名字服务缓冲守护程序)服务无效:
mv /etc/rcd/Snscd /etc/rcd/Snscd
使CDE程序无效(除非你坚持要使用图形控制台)
rm /etc/rcd/Sdtlogin
使NTPNETWORK TIME PROTOCOL无效(NTP会增加带宽和不安全的因素建议使用
rdate到一台使用NTP的机器来获得精确时间)
rm /etc/rcd/Sxntpd
使SNMP无效
rm /etc/rcd/Ksnmpdx /etc/rcd/Ssnmpdx
在Inetinit中是IP forwarding和sourec routing(源路)由无效(假如有超过一个网络
接口的话)在/etc/initd/inetinit中增加下面所示设置:
ndd set /dev/ip ip_forward_directed_broadcasts
ndd set /dev/ip ip_forward_src_routed
ndd set /dev/ip ip_forwarding
根据RFC建议在/etc/default/inetinit中增加如下的生成初始化序列号设置来防
止TCP序列号预测攻击(ip欺骗):
TCP_STRONG_ISS=
在/etc/system中增加如下设置来防止某些缓冲溢出攻击这些保护是那些需在堆栈中
执行的攻击方式但需要硬件的支持(只在sunu/sund/sunm系统中有效)
set noexec_user_stack=
set noexec_user_stack_log=
使用默认路由在/etc/defaultrouter中增加IP地址或使用route在/etc/rcd/
Sstatic_routes中建立启动文件为了使动态路由无效
touch /etc/notrouter
为了使多路广播(multicasting)无效请在/etc/initd/inetsvc中注解掉
route add 周围的几行
为了记录INETD连接的所有信息在inetd低端的启动行中增加t参数
即:: /usr/sbin/inetd s t
在/etc/hosts中配置一些你想取舍的主机(一些你不想通过DNS解析的)
/etc/nf:
先使所有服务无效
配置你真正需要的服务但必须使用FWTK netacl或tcp wrappers来允许最小限度的I
P地址访问和各种记录
连接并测试网络
系统通过上面的安全剥离和筛选你必须肯定系统能正常工作把它连接到一个安全
隔离的网络重起并以ROOT身份登录控制台检查控制台启动时的错误信息并根据需
要进行修改
安装系统管理工具软件
这部分将安装标准的工具和实用程序最重要的是SSH这些工具必须在其他机器上编
译和精心测试过的
环境
DNS客户端在/etc/nf中增加域名和DNS服务在/etc/nf中增
加DNS入口的主机
EMAIL如果主机不需要在子网外发送EMAIL就不需要使用mailhost的别名否则的
话必须编辑/etc/mail/aliases在/etc/hosts中设置mailhost在/etc/mail/sendm
ailcf取消Dj行的注释并把它设置为Dj$wYOURDOMAINCOM
如果DNS没有配置就在 /etc/hosts中增加这太机器的别名hostnameYOURDOMAINCO
M
现在发送一封测试EMAIL:mailx v s test_email root 在/cshrc/profile中设置别名变量如VISUAL EDITOR和PATH但不要包含号
为LOGIN登录进程安装SSH配置SSH守护程序(/etc/sshd_config)以便访问限制在带有
known public keys的主机(/etc/ssh_known_hosts)并使rhosts认证无效如果远程管
理确实需要的话使用shosts要比rhosts好的多检查Inetd中的telnetd/ftpd是否
仍然激活如果是的话请在/etc/nf中注释掉在进行SSH测试
安装一些其他的一些必须工具如gzip;traceroute;top(不带SUID);lsof
安装和建立Perl到/bin/perl
在/secure中安装安全脚本如rotate_cron rotate_log wtrimpl rdistd
并改变属性来保护/secure:chmod R /secure; chown R root /secure
在次配置和筛选系统安全
许多在CD中OS的补丁是不够及时的因此从sunsolvesunch中获取patchdiag
工具来查看安全补丁并下载安装这些补丁
配置登录记录
在/etc/default/su中使SU记录有效
使用以下方法使尝试登录失败记录有效
touch /var/log/loginlog;
chmod /var/log/loginlog;
chgrp sys /var/log/loginlog
SYSLOG记录根据nf例子来分散LOG分析记录即把多项服务的记录
分散到各个独立的LOG文件有条件的话在(/etc/hosts)中指定一台机器作为loghost
syslog loghost
需要一个大的磁盘作为LOG记录的存储介质
建立空的LOGS文件并设立相应的权限
cd /var/log; touch daemonlog authlog kernlog userlog maillog lprlog
cronlog newslog locallog alertlog;
chmod daemonlog authlog kernlog userlog maillog lprlog cronlog
newslog locallog alertlog;
kill `pgrep syslogd`
使用rotate_log来修剪和压缩LOGS文件在root cron中增加如下条目:
## Prune syslog logs weekly keeping the last months or so:
* * /secure/rotate_log L /var/log c m M c s n al
ertlog
* * /secure/rotate_log L /var/log c m M c s n au
thlog
* * /secure/rotate_log L /var/log c m M c s n cr
onlog