您的位置:首页网络冲浪系统安全 → Solaris系统安全加固列表

Solaris系统安全加固列表

时间:2004/10/15 0:54:00来源:本站整理作者:蓝点我要评论(0)

    



        一、安全理念
1、安全的隐患更多来自于企业内部
2、对于管理员的要求:不要信任任何人
3、分层保护策略:假设某些安全保护层完全失效
4、服务最小化
5、为最坏的情况做打算

二、物理安全
1、记录进出机房的人员名单,考虑安装摄像机
2、审查PROM是否被更换,可以通过记录hostid进行比较
3、每个系统的OpenBoot口令应该不一样,口令方案不可预测
4、系统安装完毕移除CD-ROM
5、将版本介质放入不在本场地的介质储藏室中

三、账号与口令策略
1、超级用户的PATH(在/.profile中定义的)设置为:
PATH = /usr/bin:/sbin:/usr/sbin
任何用户的PATH或者LD_LIBRARY_PATH中都不应该包含“.”
2、口令文件、影像文件、组文件
/etc/passwd 必须所有用户都可读,root用户可写 –rw-r—r—
/etc/shadow 只有root可读 –r--------
/etc/group 必须所有用户都可读,root用户可写 –rw-r—r--
3、口令安全
Solaris强制口令最少6位,但是超级用户修改口令的时候不受这个限制
强迫test账号每隔30天修改一次口令
#passwd –n 30 test
强迫test账号在下次登录的时候修改口令
#passwd –f test
禁止test账号修改口令
#passwd –n 2 –x 1 test
封锁test账号,禁止登录
#passwd –l test
4、组口令
用newgrp 命令临时改变gid
由于sysadmin组可执行admintool,必须要保护好,增加组口令的过程:
删除不需要的成员(如果成员属于sysadmin,改变组时不需要口令)
#passwd (通常封锁的账号)
提取/etc/shadow中user的口令字符串插入到/etc/group中sysadmin的口令字段
封锁user账号
5、修改口令策略
/etc/default/passwd文件
MAXWEEKS=4 口令至少每隔4星期更改一次
MINWEEKS=1 口令至多每隔1星期更改一次
WARNWEEKS=3 修改口令后第三个星期会收到快要修改口令的信息
PASSLENGTH=6 用户口令长度不少于6个字符
6、限制使用su的组(只允许sysadmin组执行su命令)
#chgrp sysadmin /bin/su
#chmod o-rwx /bin/su
7、su的纪录
/etc/default/su文件
SULOG=/var/adm/sulog
SYSLOG=YES
CONSOLE=/dev/console
PATH=/usr/bin:
SUPATH=/usr/sbin:/usr/bin
8、禁止root远程登录
/etc/default/login中设置CONSOLE=/dev/null
在/etc/ftpusers里加上root。
在SSH 配置文件加:permitRootLogin = no
(Solaris 9自带SSH,缺省就禁止root登陆,对 Solaris 9,/etc/ftpusers 不再使用,FTP配置文件都在 /etc/ftpd/ 下面。如果 ftpd 启动时存在 /etc/ftpusers,它会被移动到 /etc/ftpd/下)


四、系统加固
1、为OpenBoot设置密码

在Solaris中设置密码 # eeprom security-password
在OpenBoot中设置密码 ok password
在Solaris中设置安全级别(command) # eeprom security-mode=command
在OpenBoot中设置安全级别(command) ok setenv security-mode command
在OpenBoot中设置安全级别(full) ok setenv security-mode full

2、取消不必须账号
移去或者锁定那些不是必须的帐号,比如sys\uucp\nuucp\listen等等,简单的办法是在/etc/shadow的password域中放上NP字符。
(简单办法是 passwd -l username)

3、文件系统
/etc目录中应该没有文件是组或者其他用户可写的
find /etc/ -type f –perm –g+w –print (查找组可写文件)
find /etc/ -type f –perm –o+w –print (查找其他用户可写文件)
chmod –R go-w /etc (改变任何错误的组/其他用户的写权限)
/var/adm/utmp和/var/adm/utmpx文件的权限应该是644

4、X-Windows手工锁定(当管理员离开电脑的时候)
CDE中面板上的加锁图标
OpenWindows中-鼠标右键-Utilities-Lock Screen

5、/etc的存取权限
用chmod -R g-w /etc命令来移去组用户对/etc的写权限。

6、打开数据包转发
#ndd –set /dev/ip ip_forwarding 1 (在系统作为路由器的情况中执行)
关闭数据包转发
#ndd –set /dev/ip ip_forwarding 0 (建议把这条命令加入/etc/init.d/inetinit中)
忽略重定向数据包(否则有遭到DOS的隐患)
#ndd –set /dev/ip ip_ignore_redirects 1 (加入/etc/init.d/inetinit)
不发送重定向数据包
#ndd –set /dev/ip ip_send_redirects 0 (加入/etc/init.d/inetinit)
禁止转发定向广播(如果网桥连结则不禁止)
#ndd –set /dev/ip ip_forward_directed_broadcasts 0 (加入/etc/init.d/inetinit)
禁止转发在数据源设置了路由的数据包
#ndd –set /dev/ip ip_forward_src_routed 0 (加入/etc/init.d/inetinit)

7、利用/etc/notrouter关闭IP转发
创建/etc/notrouter文件,重启计算机(入侵者如果可以访问根目录,可以使用ndd命令重新开启IP转发)
/etc/inet/hosts中的配置
127.0.0.1 Localhost (所有系统都有这一项)
192.168.0.13 Loghost (syslog使用的)
192.168.0.109 wy_solaris (主机IP和主机名)
/etc/defaultrouter包含了默认路由器的名称或者IP
如果使用了默认路由器,在/etc/inet/hosts文件中必须包含路由器的名称,因为如果设置了路由表,系统将不会运行任何目录服务(DNS、NIS或者NIS+)

8、cron(任务在/var/spool/cron/crontabs/ 一般行为在/etc/default/cron)
格式:minute hour day-of-month month day-of-week command
(每项间用空格,同一项两个数字间用逗号,每项为数字或者星号)
配置:
查看命令 crontab –l
(1)进入只有本用户可读的目录
(2)crontab –l > mycronfile
(3)编辑mycronfile
(4)crontab < mycronfile
不要使用crontab –e命令,因为它会在/tmp下建立所有用户都可读的crontab副本
访问cron系统
/etc/cron.d/cron.allow (允许)
/etc/cron.d/cron.deny (不允许)
存在cron.allow,其中没有某用户,则不允许此用户访问cron系统
存在cron.deny,其中没有某用户,则允许此用户访问cron系统
在/etc/default/cron里设置了"CRONLOG=yes" 来记录corn的动作
PATH中不应包含“/tmp”“~”“.”字样
at(任务在/var/spool/cron/atjobs)
/etc/cron.d/at.allow和/etc/cron.d/at.deny和cron文件完全一样

9、增加静态路由
格式: route add net net-address subnet-mask router hops
例如: route add net 10.15.0.0 255.255.0.0 10.14.48.2 1
(要到达10.15.x.x的网络,需要将数据包送往路由器10.14.48.2,距离10.15.x.x有一个跃点。这个命令将增加到启动文件/etc/rc2.d/S72inetsvc)
增加动态路由(会带来安全隐患)
在/etc/rc2.d/S72inetsvc中增加和是的命令行
运行in.routed或者in.rdisc
诊断工具snoop可以sniff,只有root可以使用,可以把snoop从不需要的UNIX机器上删除

10、root的umask设置错误
修改/etc/profile文件,将umask设为077或者027

11、堆栈缓冲溢出攻击防护设置
在/etc/system里加上如下语句,禁止缓冲溢出:
echo "set noexec_user_stack=1" >> /etc/system
echo "set noexec_user_stack_log=1" >> /etc/system
(对 Solaris 9,可以对单个程序设定堆栈不可执行属性,前提是有该程序的源码,例如:# cc -M /usr/lib/ld/map.noexstk myprogram.c)

12、使IP forwarding和sourec routing(源路)由无效
在Inetinit中使IP forwarding和sourec routing(源路)由无效(假如有超过一个网络接口的话)。在/etc/init.d/inetinit中增加下面所示设置:
ndd -set /dev/ip ip_forward_directed_broadcasts 0
ndd -set /dev/ip ip_forward_src_routed 0
ndd -set /dev/ip ip_forwarding 0

13、防止TCP序列号预测攻击(ip欺骗)
建议在/etc/default/inetinit中增加如下的生成初始化序列号设置来防止TCP序列号预测攻击(ip欺骗):TCP_STRONG_ISS=2

14、(如果有ftp服务)不要使用匿名ftp
/etc/inet/inetd.conf中的ftpd为(记录)
ftp stream tcp nowait root /usr/sbin/in.ftpd in.ftpd –dl
决不能用root身份使用ftp(口令不加密)
/etc/ftpusers中的增加超级用户(这里的账号禁止用ftp连接系统)
FTP 服务暴露系统敏感信息
编辑/etc/default/ftpd文件,假如文件不存在就新建一个,在文件中的加进以下一项:BANNER=XXXX(XXXX可以任意改变为任何一个版本信息),将该系统版本信息屏蔽.

15、关闭NFS服务

16、用SSH替代Telnet服务

17、限制.rhosts、.netrc和/etc/hosts.equiv文件的使用
限制.rhosts、.netrc和/etc/hosts.equiv文件的使用。r系列命令使用这些文件来访问系统。要为这些文件加锁,先创建它们,然后修改其属性为零即可。这样除了root用户就没有其它用户能创建或修改它们了。
/usr/bin/touch /.rhosts /.netrc /etc/hosts.equiv
/usr/bin/chmod 0 /.rhosts /.netrc /etc/hosts.equiv
.rhosts文件可以作为一个典型的后门文件使用,在某用户的目录下存在.rhosts文件的话,任何用户都可以通过rlogin不需要口令以该用户的身份登录到系统。
运行下面的命令全局查找.rhosts文件
# find –name “.rhosts” –print

18、使多路广播(multicasting)无效
为了使多路广播(multicasting)无效请在/etc/init.d/inetsvc中注解掉"route add 224.0.0.0"周围的几行。

19、关闭系统的snmp服务
更改 /etc/rc2.d/K07snmpdx 和/etc/rc3.d/S76snmpdx文件名

20、X-Windows不安全,可以使用ssh对其加密

21、加强网络访问控制
编辑/etc/inet.d/inetsvc,在inetd后面加上-t选项
类似命令/usr/sbin/inetd –s –t
停止再运行inetd
运行的使用使用 #/usr/sbin/inetd –s –t

22、网络访问控制
原则:去掉不必要的网络访问,在所需要的网络访问周围简历访问控制

Solaris网络服务(/etc/inet/services)[没有被注释/* */的服务可关闭]
#ident "@(#)services 1.27 00/11/06 SMI" /* SVr4.0 1.8 */
#
#
# Copyright (c) 1999-2000 by Sun Microsystems, Inc.
# All rights reserved.
#
# Network services, Internet style
#
tcpmux 1/tcp /*必须*/
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users
daytime 13/tcp
daytime 13/udp
netstat 15/tcp
chargen 19/tcp ttytst source
chargen 19/udp ttytst source
ftp-data 20/tcp /*依服务可选*/
ftp 21/tcp /*依服务可选*/
ssh 22/tcp /*依服务可选*/
telnet 23/tcp /*依服务可选*/
smtp 25/tcp mail /*依服务可选*/
time 37/tcp timserver
time 37/udp timserver
name 42/udp nameserver
whois 43/tcp nicname # usually to sri-nic
domain 53/udp /*依服务可选*/
domain 53/tcp /*依服务可选*/
bootps 67/udp # BOOTP/DHCP server
bootpc 68/udp # BOOTP/DHCP client
hostnames 101/tcp hostname # usually to sri-nic
pop2 109/tcp pop-2 # Post Office Protocol - V2
pop3 110/tcp # Post Office Protocol - Version 3
sunrpc 111/udp rpcbind
sunrpc 111/tcp rpcbind
imap 143/tcp imap2 # Internet Mail Access Protocol v2
ldap 389/tcp # Lightweight Directory Access Protocol
ldap 389/udp # Lightweight Directory Access Protocol
submission 587/tcp # Mail Message Submission
submission 587/udp # see RFC 2476
ldaps 636/tcp # LDAP protocol over TLS/SSL (was sldap)
ldaps 636/udp # LDAP protocol over TLS/SSL (was sldap)
#
# Host specific functions
#
tftp 69/udp
rje 77/tcp
finger 79/tcp
link 87/tcp ttylink
supdup 95/tcp
iso-tsap 102/tcp
x400 103/tcp # ISO Mail
x400-snd 104/tcp
csnet-ns 105/tcp
pop-2 109/tcp # Post Office
uucp-path 117/tcp
nntp 119/tcp usenet # Network News Transfer
ntp 123/tcp # Network Time Protocol
ntp 123/udp # Network Time Protocol
netbios-ns 137/tcp # NETBIOS Name Service
netbios-ns 137/udp # NETBIOS Name Service
netbios-dgm 138/tcp # NETBIOS Datagram Service
netbios-dgm 138/udp # NETBIOS Datagram Service
netbios-ssn 139/tcp # NETBIOS Session Service
netbios-ssn 139/udp # NETBIOS Session Service
NeWS 144/tcp news # Window System
slp 427/tcp slp # Service Location Protocol, V2
slp 427/udp slp # Service Location Protocol, V2
mobile-ip 434/udp mobile-ip # Mobile-IP
cvc_hostd 442/tcp # Network Console
#
# UNIX specific services
#
# these are NOT officially assigned
#
exec 512/tcp
login 513/tcp
shell 514/tcp cmd # no passwords used
printer 515/tcp spooler # line printer spooler
courier 530/tcp rpc # experimental
uucp 540/tcp uucpd # uucp daemon
biff 512/udp comsat
who 513/udp whod
syslog 514/udp /*依服务可选*/
talk 517/udp
route 520/udp router routed
ripng 521/udp
klogin 543/tcp # Kerberos authenticated rlogin
kshell 544/tcp cmd # Kerberos authenticated remote shell
new-rwho 550/udp new-who # experimental
rmonitor 560/udp rmonitord # experimental
monitor 561/udp # experimental
pcserver 600/tcp # ECD Integrated PC board srvr
sun-dr 665/tcp # Remote Dynamic Reconfiguration
kerberos-adm 749/tcp # Kerberos V5 Administration
kerberos-adm 749/udp # Kerberos V5 Administration
kerberos 750/udp kdc # Kerberos key server
kerberos 750/tcp kdc # Kerberos key server
krb5_prop 754/tcp # Kerberos V5 KDC propogation
ufsd 1008/tcp ufsd # UFS-aware server
ufsd 1008/udp ufsd
cvc 1495/tcp # Network Console
ingreslock 1524/tcp
www-ldap-gw 1760/tcp # HTTP to LDAP gateway
www-ldap-gw 1760/udp # HTTP to LDAP gateway
listen 2766/tcp # System V listener port
nfsd 2049/udp nfs # NFS server daemon (clts)
nfsd 2049/tcp nfs # NFS server daemon (cots)
eklogin 2105/tcp # Kerberos encrypted rlogin
lockd 4045/udp # NFS lock daemon/manager
lockd 4045/tcp
dtspc 6112/tcp # CDE subprocess control /*依服务可选*/
fs 7100/tcp # Font server /*依服务可选*/

执行方法:
/etc/inet/services在相应服务前加“#”注释掉
/etc/inet/inetd.conf中注释掉services中相应的条目
查找并重启inetd进程
#ps –ef | grep inetd (获得进程号)
#kill –HUP <进程号>
停止在上述列表中没有定义的服务
方法:将文件改名(用mv命令,可以将S改为X)
停止相应进程
服务:
服务 文件 进程
sendmail /etc/rc2.d/S88sendmail Sendmail
DNS /etc/rc2.d/S72inetsvc中in.named一项注释掉 in.named
named.xfer
NFS /etc/rc3.d/S15nfs.server
注释掉/etc/dfs/dfstab中条目 Nfsd
Automounter /etc/rc2.d/S74autofs
删除/etc/auto_*
ntp /etc/rc2.d/S74xntpd Xntpd
syslog /etc/rc2.d/S74syslog Syslogd
打印 /etc/rc2.d/S80lp lpshut

23、使Sendmail更安全
使用最新版本的Berkeley sendmail (see section 3),从/etc/aliases里删除decode 将/etc/aliases的权限设为644,关掉expn和vrfy命令。将
O PrivacyOptions=authwarning
改成
O PrivacyOptions=goaway
检查 Sendmail 是否支持发信认证
参考devtools/Site/README文件在devtools/Site下建立如下site.config.m4 文件:
APPENDDEF(`conf_sendmail_ENVDEF', `-DSASL')
APPENDDEF(`conf_sendmail_LIBS', `-lsasl')
给Sendmail编译进SASL支持。
cd sendmail; 执行:sh Build 编译sendmail。
到cf/cf 目录下,拷贝 generic-linux.mc 为 sendmail.mc, 在sendmail.mc 中增加以下内容:
define(`confSMTP_LOGIN_MSG',`$m Server')dnl
改变sendmail欢迎信息
define(`confAUTH_MECHANISMS', `LOGIN')dnl
Unix帐号认证
define(`confPRIVACY_FLAGS',`novrfy,noexpn,noverb')dnl 禁用命令
define(`confMAX_DAEMON_CHILDREN', `128')dnl
define(`confCONNECTION_RATE_THROTTLE', `32')dnl
(抗拒绝服务攻击)

24、增加DNS服务安全
关闭 zone 转换选项
不使用文件. named ,转而使用 /var/bind
关闭 lame server log messages
在/var/bind里面加入
options {
directory "/var/named";
forwarders{
202.106.120.1;
};
version "InterSoft Super DNS Server 2.0.4";
allow-transfer {none;};
};

logging {
category "lame-servers" { "null"; };
};

25、鉴于更改s位程序有可能影响正常服务,建议不要改动,但是可定期查看s位程序列表,对比是否有增减。
# find / -perm -4000 -print

26、使CDE程序无效(除非你坚持要使用图形控制台) [此项可选]
使CDE程序无效(除非你坚持要使用图形控制台)
将 /etc/rc2.d/S99dtlogin 改名

五、使用sun的补丁检查工具检查系统安装的补丁情况
运行该工具检查系统补丁的如下情况:
- latest revisions
- recommended patches
- security patches
- year 2000 patches
- other patches relevant to the software environment
(Sun 网站有专门的补丁检查工具)
及时修补最新漏洞、打上补丁,以上是操作系统的加固,还有针对服务的安全策略、SSH的使用、日志分析等。

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 U盘传播的病毒 _ U盘病打开U盘才不会中毒的方 alg.exe是什么进程?能不能关闭?nsis error是什么?及解决方法蓝屏错误代码解析 看代码解决问题dotnetfx.exe是什么

人气排行 alg.exe是什么进程?能不能关闭?qq修复工具怎么用如何更改ie收藏夹地址位置(路径)无光驱,无U盘启动,怎样重装系统?nsis error是什么?及解决方法Generic Host Process for Win32 开机后总是六种修复崩溃后WindowsXP系统的技巧exp1orer.exe 病毒清除办法