- 论坛徽章:
- 0
|
本文在网上找到的,由于工作需要收藏,在此作为备份资料
作者:佚名 文章来源:不详 更新时间:2006-8-21 0:56:29
一 solaris系统安装
系统patch
解决方案:
连接站点
http://sunsolve.sun.com
寻找solaris的最新补丁路径
showrev -p [安装的补丁列表命令]
建立/var分区
解决方法:
/var分区是存放logfile以及系统变动文件的文件系统,因为它的易变化性,以及在系统运作过程中的不断扩大,所以不要把/var文件系统包括再root分区里,以免有恶意程序恶意扩大日志文件来dos根分区。
1) 在系统安装之初解决这个问题。
2) 划分较小的独立的文件系统给/var
3) 并挂接在/下。
二 系统
eeprom安全
安全层面:本地
解决方法:
先解释一下openboot安全级别:
none 不需要任何口令
command 除了boot和go之外的所有命令都需要口令。
Full 除了go命令之外的所有openboot命令都需要openboot口令
好!用# eeprom security-mode=command命令来改变openboot的安全级别到command级。当然,你首先得要用# eeprom security-password命令来给openboot设置强壮口令。
为什么要这样做:因为能够访问openboot的用户可以从几乎所有的scsi设备(外部硬盘或cdrom)上引导系统,这样用户如果从他们自己的媒体来引导系统的话,就等于完全控制了系统。同样,用户能够用stop-A停止系统,可以修改所有openboot环境变量。这是非常危险的事情。
置核心大小为零
安全层面:本地
解决方法:
添加行到:/etc/system文件里:
set sys:coredumpsize = 0
我建议这样做,因为你需要去分析内核,这样做可以防止由于你的误操作而损坏你的硬盘。
参考脚本:
disable-core.sh
三 用户管理
禁止所有的系统账户(system accounts)
安全层面:本地
解决方法:
编辑/etc/passwd文件使所有系统账户没有shell。如:noaccess:x 60002:60002:No Access User:/:/sbin/noshell
noshell.c应该这样写:
#include
void main() {
printf(“sorry!no shell with this account ”);
return 0;
}
gcc -o ./noshell ./noshell. c
cp /sbin/noshell /sbin/noshell.solaris
cp ~/noshell /sbin/noshell
禁止不需要的系统账户,在/etc/shadow文件中用NP标志放在那些用户的密码段,这样那些用户就被禁止了。
基本的sys V unix系统账户:bin, daemon,adm,lp,smtp,sys,uucp,nuucp,nobody,noaccess
用强壮的密码设置程序
安全层面:远程
解决方法:
对于所有用户账户而言都应该用强壮的密码,在solaris下有一个叫npasswd的工具运行的很好,利用npasswd代替passwd程序来让用户设置密码,它附带了一个配置文件,可以让用户设定密码的长度,字符,期限等控制信息。
设置默认的密码参数
安全层面:本地
解决方法:
添加或编辑/etc/default/passwd文件如下入口:
PWMIN= 1 #密码可以被改变的最小时段
设置密码的最大生存周期
安全层面:本地
解决方法:
添加或编辑/etc/default/passwd文件如下入口:
PWMAX= 13 #密码的最大生存周期
设定离用户密码过期的天数,当系统启动时提醒用户
安全层面:本地
解决方法:
添加或编辑/etc/default/passwd文件如下入口:
PWWARN= 4
设定最小用户密码长度
安全层面:本地
解决方法:
添加或编辑/etc/default/passwd文件如下入口:
PWLEN= 8 #设定最小用户密码长度为8位
防止远程的root登陆
安全层面:本地
解决方法:
添加或编辑/etc/default/login文件如下入口:
LCONSOLE=/dev/console #这样root只能从/dev/console这个设备登陆
纪录所有root的登陆情况
安全层面:本地
解决方法:
添加或编辑/etc/default/login文件如下入口:
LSYSLOG= YES #syslog纪录root的登陆失败,成功的情况
设置登陆会话超时时间
安全层面:本地
解决方法:
添加或编辑/etc/default/login文件如下入口:
LTIMEOUT= 120
设置默认的屏蔽掩码
安全层面:本地
解决方法:
添加或编辑/etc/default/login文件如下入口:
LUMASK= 027 #这将设定标准掩码为:750,也可以将这行加到/etc/.login /etc/profile /etc/skel/local.cshrc
/etc/skel/local.login /etc/skel/local.profile这些文件里
设置root的umask
安全层面:本地
解决方法:
确定root的umask是027或077
检查root的.profile
确定登陆需要密码验证
安全层面:本地
解决方法:
添加或编辑/etc/default/login文件如下入口:
LPASSREQ= YES
设置shell的环境变量
安全层面:本地
解决方法:
添加或编辑/etc/default/login文件如下入口:
LALTSHELL= YES
检查每个用户的密码档设置
安全层面:本地
解决方法:
检查/etc/passwd;/etc/shadow文件里的每个用户的加密行,如:
user:lRs.8R9EfQXx.:11137:0:10000::::
加密段有无被修改的迹象
去掉所有path环境变量里的“.”
安全层面:本地
解决方法:
从用户及root的初始化脚本中的path变量里去除“.”,比如如下脚本:
/.login /etc/.login /etc/default/login /.cshrc /etc/skel/local.cshrc
/etc/skel/local.login /etc/skel/local.profile /.profile /etc/profile
限制su命令,添加可以su的用户到sugroup里
安全层面:本地
解决方法:
1) 在/etc/group文件里建立一个特殊的组
2) 使你的admin账号在这个组里
3) 改变/bin/su的权限为:r-sr-sr-x 1 root sugroup
# chmod 550 /bin/su
# chmod +s /bin/su
# chown root:sugroup /bin/su
# ls -al /bin/su
-r-sr-s--- 1 root sugroup 18360 Jan 15 1998 /bin/su
# grep sugroup /etc/group
sugroup::600:root,httpadm,wsphere
只有是sugroup组里的用户才可以使用su命令
四 inetd超级进程
注释掉所有确实不需要的服务
安全层面:远程
解决方法:
用grep -v “^#”/etc/inetd.conf命令来察看你当前没有注释的服务
去掉一切你不是真正需要的服务,并且是那些没有注释的服务保护在tcp_wrapper之下。
对inetd的服务实现TCP wrapper
安全层面:远程
解决方法:
编译安装tcpd到/usr/local/bin目录下,编辑/etc/inetd.conf如下:
ftp stream tcp nowait root /usr/local/bin/ tcpd in.ftpd
telnet stream tcp nowait root /usr/local/bin/ tcpd in.telnetd
加固inetd
安全层面:远程
解决方法:
检查/etc/hosts.deny和/etc/hosts.allow文件,确定如下格式:
/etc/hosts.deny
ALL:ALL
开启的服务:
/etc/hosts.allow
:
关于xinetd
安全层面:本地
解决方法:
xinetd有这比inetd更强大的灵活性和安全性,所以尽量用xinetd来代替inetd。
五 系统启动服务(rc.X)
去掉不需要的启动服务
安全层面:远程
解决方法:
用mv命令来去掉不需要的启动服务,一个例子如下:
mv /etc/rc3.d/S92volmgt /etc/rc2.d/not_usedS92volmgt
这样vlomgt这个服务就被禁止启动了
下面一些服务最好禁止启动(不过具体情况具体决定):
snmpdx
autofs(Automounter)
volmgt(Volume Deamon)
lpsched(LP print service)
nscd (Name Service Cache Daemon)
Sendmail
Keyserv
禁止rpcbind服务,如果它不是一定需要的话。(以上列表可以代表所有不需要的服务,但具体情况请进入到rc.X目录里自行决定哪些服务需要,哪些不需要)
禁止DMI服务
安全层面:远程
解决方法:
禁止所有的dmi服务:mv /etc/rc3.d/S??dmi /etc/rc3.d/D??dmi
DMI服务通过/etc/init.d/init.dmi里的几个bin文件来运行:
/usr/lib/dmi/dmispd
/usr/lib/dmi/snmpXdmid
/etc/dmi/ciagent/ciinvoke
禁止默认的mounting suid features
安全层面:远程
解决方法:
在/etc/rmmount.Conf文件里添加行:
mount hsfs -o nosuid
mount ufs -o nosuid
检查所有的.rhosts文件
安全层面:远程
解决方法:
.rhosts文件允许用户或远程主机访问系统而不经过密码验证。假如一台远程的主机被攻破,这将成为极大的安全隐患。建议禁止任何.rhosts文件。
禁止基于rhosts的用户认证
安全层面:远程
解决方法:
更改并删除/etc/pam.conf文件里的:
rlogin auth sufficient /usr/lib/security/pam_rhosts_auth.so.1
改变rsh行:
rsh auth required /usr/lib/security/pam_unix.so.1
参考脚本:
pam-rhosts-2. 6.sh
检查信任关系
安全层面:远程
解决方法:
确定/etc/hosts.equiv文件为空。
启动服务脚本的屏蔽掩码
安全层面:远程
解决方法:
在每个rc.X目录中建立S00umask文件:
/etc/rc0.d/S00umask.sh
/etc/rc1.d/S00umask.sh
/etc/rc2.d/S00umask.sh
/etc/rc3.d/S00umask.sh
/etc/rcS.d/S00umask.sh
/etc/init.d/umask
参考脚本:
add-umask.sh
六 网络接口的调整和安全
缩短ARP缓存的存在周期
安全层面:远程
解决方法:
在/etc/rc2.d/S??inet脚本中添加如下:
ndd -set /dev/arp arp_cleanup_interval 60000 /* 1 min (default is 5 min)*/
缩短条目在arp-table里刷新的时间
安全层面:远程
解决方法:
在/etc/rc2.d/S??inet脚本中添加如下:
ndd -set /dev/ip ip_ire_flush_interval 60000 /* 1 min (default is 20 min)*/
禁止回应广播的的请求来防止一些特殊的具有危害性的ping包
安全层面:远程
解决方法:
添加或修改/etc/rc2.d/S??inet如下:
ndd -set /dev/ip ip_respond_to_echo_broadcast 0 # default is 1
启动时禁止源路由
安全层面:远程
解决方法:
添加或修改/etc/rc2.d/S??inet如下:
ndd -set /dev/ip ip_forward_src_routed 0 # default is 1
防止系统在启动时启动ip转发
安全层面:远程
解决方法:
添加或修改/etc/rc2.d/S??inet如下:
ndd -set /dev/ip ip_forwarding 0 # default is 1
设置系统禁止ip包转发
安全层面:远程
解决方法:
添加或修改/etc/rc2.d/S??inet如下:
ndd -set /dev/ip ip_ignore_redirect 1 # default is 0
(adds it into /etc/init.d/nddconfig)
设置系统精确的多路寻址
安全层面:远程
解决方法:
添加或修改/etc/rc2.d/S??inet如下:
ndd -set /dev/ip ip_strict_dst_multihoming 1 # default is 0
(adds it into /etc/init.d/nddconfig)
保证系统不响应icmp网络掩码请求
安全层面:远程
解决方法:
添加或修改/etc/rc2.d/S??inet如下:
ndd -set /dev/ip ip_respond_to_address_mask_broadcast= 0 # default is 0
(adds it into /etc/init.d/nddconfig)
防止系统响应icmp的时间戳请求
安全层面:远程
解决方法:
添加或修改/etc/rc2.d/S??inet如下:
ndd -set /dev/ip ip_ip_respond_to_timestamp= 0 # default is 1
(adds it into /etc/init.d/nddconfig)
防止系统响应icmp时间戳广播
安全层面:远程
解决方法:
添加或修改/etc/rc2.d/S??inet如下:
ndd -set /dev/ip ip_ip_respond_to_timestamp_broadcast= 0 # default is 1
(adds it into /etc/init.d/nddconfig)
防止系统发送icmp转发信息
安全层面:远程
解决方法:
添加或修改/etc/rc2.d/S??inet如下:
ndd -set /dev/ip ip_send_redirects= 0 # default is 1
(adds it into /etc/init.d/nddconfig)
改变TCP初始序列号生成参数
安全层面:远程
解决方法:
改变/etc/default/inetinit文件的条目:
TCP_STRONG_ISS= 2
设置in.routed在静态模式
安全层面:远程
解决方法:
按如下步骤建立in.routed -q(静态模式):
mv /usr/sbin/in.routed to /usr/sbin/in.routed.orig
建立/usr/sbin/in.routed如下内容:
#! /bin/sh
/usr/sbin/in.routed.orig -q
更改这个文件的权限:
chmod 0755 /usr/sbin/in.routed
#动态的路由模式容易遭受到恶意的路由信息的亲篇和攻击,所以建议宁愿用静态路由,(路由的增加通过启动文件的route命令)也不建议用动态路由守护进程
禁止路由
安全层面:远程
解决方法:
touch /etc/notrouter
七 小型服务
1 NFS
移除NFS
安全层面:远程
解决方法:
建议在DMZ中不要运行NFS服务,所以如果它运行着的话,建议移除它。如下步骤:
移除/etc/dfs/dfstab中的所有共享定义
杀掉NFS守护进程:lockd, nfsd, statd, mountd
重命名NFS的启动脚本:/etc/rc3.d/S??nfs.server 和 /etc/rc2.d/S??nfs.client
设置NFS的特定tcp端口
安全层面:远程
解决方法:
执行如下命令:
ndd -set /dev/tcp tcp_extra_priv_ports_add 2049
设置NFS的特定udp端口
安全层面:远程
解决方法:
执行如下命令:
ndd -set /dev/udp udp_extra_priv_ports_add 2049
开启NFS端口监听
安全层面:远程
解决方法:
添加行到/etc/system文件:
set nfssrv: nfs_portmon = 1
set nfs: nfs_portmon = 1
确定你的/etc/system文件的访问权限为644:
# chmod 644 /etc/system
一些nfs相关的服务
安全层面:远程
解决方法:
关掉如下服务:
nfsd
mountd
rpc.boot
in.rarpd
rpld
2 NIS,NIS+
去除NIS,NIS+
安全层面:远程
解决方法:
我们建议不要运行NIS,NIS+服务,所以按一下步骤移除它:
在文件/etc/domainname里移除域名:
你可以察看NIS大体的服务列表:
# pkginfo |grep NIS
# pkgrm
system SUNWypr NIS Server for Solaris (root)
system SUNWypu NIS Server for Solaris (usr)
移除NIS,NIS+,DNS Lookup
安全层面:远程
解决方法:
编辑/etc/nsswitch.conf如下:
passwd: files
group: files
hosts: files
networks: files
protocols: files
rpc: files
ethers: files
netmasks: files
bootparams: files
publickey: files
netgroup: files
automount: files
aliases: files
services: files
sendmailvars: files
如果需要dns的话,可以再次修改这个文件
3 MAIL
停止绑定在25端口的sendmail服务
安全层面:本地
解决方法:
禁止sendmail服务,你的用户依然可以发信。意思是,sendmail仍然安装了,只是不要作为守护进程存在,你可以在sendmail.cf文件里限制你的用户的权限。
mv /etc/rc2.d/S88sendmail /etc/rc2.d/not_usedS88sendmail
注释所有的并行邮件别名
安全层面:远程
解决方法:
检查 /ect/aliases |可以并列。用#号注解。
限制sendmail的expn和vrfy两个命令来收集系统信息
安全层面:远程
解决方法:
在/etc/senmmail.cf文件中修改如下限制远程连接25端口使用expn和vrfy命令:
# O PrivacyOptions=authwarnings, goaway
Opgoaway
# O PrivacyOptions=noexpn, novrfy, authwarnings
O LogLevel=5
隐藏smtp版本信息
安全层面:远程
解决方法:
在/etc/mail/sendmail.cf文件里找到smtp版本信息,修改如下:
# SMTP login message
禁止邮件转发
安全层面:远程
解决方法:
普通用户不可以选择转发者,而root可以通过/usr/local/forward/.forward.$u来控制邮件转发,修改/etc/sendmail.cf如下行:
O ForwardPath=/usr/local/forward/.forward.$u
设置/usr/local/forward正确的权限
接收邮件
安全层面:本地
解决方法:
如果真要在自己的系统上接收外来的邮件(监听在25端口)。我们建议利用spam或smtpd/smtpfwdd来保证邮件服务的安全(加上anti-spam,安全配置)。
4 FTP
安全FTP
安全层面:远程
解决方法:
建立或修改/etc/default/ftpd文件增加屏蔽码和ftp标志信息:
UMASK= 077
BANNER="/bin/cat /etc/ftp-banner"
修改/etc/default/ftpd权限:
chmod 644 /etc/default/ftpd
建立ftp标示信息
安全层面:远程
解决方法:
建立/etc/ftp-banner文件满足如下:
例如:This system is for authorized users only. Monitoring may occur
修改/etc/ftp-banner文件的权限:
chmod 644 /etc/ftp-banner
创建/etc/ftpusers文件
安全层面:远程:
解决方法:
创建/etc/ftpusers文件,把所有的系统账户加入到这个文件里
例如如下账户:
root daemon sys bin adm lp smtp uucp nuucp listen
nobody noaccess news ingres audit admin sync nobody4
修改/etc/ftpuser文件的权限:
chmod 644 /etc/ftpusers
5 TELNET
防止telnet程序现实系统版本信息
安全层面:远程
解决方法:
移除/etc/default/telnetd文件里的信息:
Banner=””
加入/etc/default/telnetd文件不存在,按如下步骤操作:
touch /etc/default/telnetd
echo "BANNER=""">> /etc/default/telnetd
chmod 444 /etc/default/telnetd
八 X-Windows
设置CDE为不接受任何XDMCP登陆连接
安全层面:远程
解决方法:
假如/usr/dt/config/Xaccess存在,则如下操作:
cat
假如/etc/dt/config/Xaccess存在,则如下操作:
cat
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/62349/showart_506808.html |
|