[转] Solaris 服务器安全配置

Solaris 服务器安全配置

1.概述

Solaris的安全配置可以从以下几个方面来考虑:

1. 本地安全增强:

限制某些强大命令的访问

设置正确的文件权限

应用组和用户的概念

suid/sgid的文件最少

rw-rw-rw的文件最少等

2. 网络安全增强

使用安全的协议来管理

禁止所有不需要的服务

禁止系统间的信任关系

禁止不需要的帐号

增强认证需要的密码

保护存在危险的网络服务

限制访问等

3. 应用安全增强

限制用户的权限

限制进程所有者的权限

检查应用相关文件权限

限制访问其他系统资源

应用所依赖的suid/sgid文件最少

使用应用本身的安全特性

删除samples和其他无用的组件

4. 监控与警报

日志、完整性、入侵检测等一些使用工具等

2.用户管理

21 用户口令文件的权限管理

/etc/passwd 必须所有用户都可读,root用户可写 –rw-rr

/etc/shadow 只有root可读 –r--------

/etc/group 必须所有用户都可读,root用户可写 –rw-rr—

执行以下命令修改这些文件的读写权限:

chmod 644 /etc/passwd

chmod 600 /etc/shadow

chmod 644 /etc/group

22 禁止或删除不必要的系统帐号

移去或者锁定那些系统帐号,比如sysuucpnuucplistenlpadm等等,简单的办法是在/etc/shadowpassword域中放上NP字符。还可以考虑将/etc/passwd文件中的shell域设置成/bin/false

具体操作方法:

userdel lp ##表示删除lp用户

禁用某个用户:

编辑/etc/password /etc/shadow文件,比如:

uucp:NP:5:5:uucpAdmin:/usr/lib/uucp:

uucp:NP:6445::::::

具体需要禁止的帐号有:

bin,daemon,adm,lp,smtp,sys,uucp,nuucp,nobody,noaccess

23 修改口令策略

编辑/etc/default/passwd文件

MAXWEEKS=4 口令至少每隔4星期更改一次

MINWEEKS=1 口令至多每隔1星期更改一次

WARNWEEKS=3 修改口令后第三个星期会收到快要修改口令的信息

PASSLENGTH=6 用户口令长度不少于6个字符

24 限制使用su的组

只允许sysadmin组执行su命令

#chgrp sysadmin /bin/su

#chmod o-rwx /bin/su

25 su的纪录

编辑/etc/default/su文件,主要为了记录每个使用su命令切换用户的记录。

SULOG=/var/adm/sulog

SYSLOG=YES

CONSOLE=/dev/console

PATH=/usr/bin:

SUPATH=/usr/sbin:/usr/bin

26 禁止root远程登录

/etc/default/login中设置CONSOLE=/dev/null,将只允许普通用户在console登录然后suroot,当存在多个系统管理员的时候, 这种设置提供了更好的安全性。

/etc/ftpusers里加上root,主要为了限制root用户直接使用ftp

SSH 配置文件加:permitRootLogin = no ,不允许root直接使用ssh登录系统。

Solaris 9自带SSH,缺省就禁止root登陆, Solaris 9/etc/ftpusers 不再使用,FTP配置文件都在 /etc/ftpd/ 下面。如果 ftpd 启动时存在 /etc/ftpusers,它会被移动到 /etc/ftpd/下)

3.服务管理

31 关闭不使用的系统服务

检查/etc/rc2.d/etc/rc3.d目录下的所有"S"打头的脚本文件,将那些启动不必要服务的脚本文件改名,确认新文件名不以"S"打头。重启动确认这些变动生效,检查/var/adm/messages日志文件,用ps -elf检查是否还有无关进程启动。

/etc/init.d/一般需要关闭的服务有:

sendmail

lp

rpc

snmpdx

keyserv

nscd

volmgt

uucp

dmi

autoinstall

32 关闭系统内各种不使用的网络服务

检查系统提供的每一种网络服务是否是工作环境所必需的,如果不是,就屏蔽它。其中一部分在启动脚本中设置,另外一部分在/etc/inetd.conf文件中配置,注释掉不必要的网络服务,ps -ef | grep inetd | awk '{print $2;}' | xargs kill -1迫使修改后的/etc/inetd.conf文件生效。需要屏蔽的网络服务包括

tftp

systat

rexd

ypupdated

netstat

rstatd

rusersd

sprayd

walld

exec

comsat

rquotad

name

uucp

in.fingerd

如果要求系统非常安全,应该用一个只包含了telnetftp(如果这两个服务是必需的)服务的inetd.conf代替标准的inetd.conf文件。

33 关于NFS服务

防火墙主机不应该使用NFS,无论是client还是server

如果必须将防火墙主机配置成NFS server,应该将输出的文件系统限制成只有特定主机才能访问。尽可能只读输出文件系统,比如,在/etc/dfs/dfstab文件中

share -F nfs -o ro=trusted_clients /logs

如果必须将防火墙主机配置成NFS client,记得总是使用"nosuid"选项做mount操 作,比如

mount -F nfs -o nosuid,bg trustserver:/home /trustserver_home

4.系统文件权限

41 /etc的存取权限

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

42 限制.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

44 修改文件setuidsetgid的权限

Solaris上很多setuidsetgid程序只有root或者属主自己才会使用,完全可以取消setuidsetgid设置而不影响普通用户的工作。用如下命令找出系统中所有setuid过的程序

# find / -perm -4000 -print

考虑取消如下命令的setuid设置

/usr/bin/tip

/usr/bin/ct

/usr/bin/cu

/usr/bin/uuglist

/usr/bin/uuname

/usr/bin/uustat

/usr/lib/exrecover

/usr/bin/uux

/usr/lib/accton

/usr/lib/fs/ufs/ufsrestore

/usr/bin/uucp

/usr/lib/news/inews

/usr/lib/fs/ufs/ufsdump

/usr/lib/uucp/uuxqt

/usr/lib/uucp/uucico

/usr/lib/uucp/remote.unknown

/usr/lib/uucp/uusched

/usr/sbin/allocate

类似的,用如下命令找出系统中所有setgid过的程序

# find / -perm -2000 -print

考虑取消如下命令的setgid设置

/usr/bin/mailx

/usr/bin/netstat

/usr/bin/nfsstat

/usr/bin/write

/usr/bin/ipcs

/usr/lib/fs/ufs/ufsdump

/usr/sbin/arp

/usr/sbin/prtconf

/usr/bin/swap

/usr/sbin/sysdef

/usr/sbin/wall

/usr/sbin/dmesg

/usr/openwin/bin/wsinfo

/usr/openwin/bin/ff.core

/usr/kvm/crash

/usr/openwin/bin/mailtool

/usr/openwin/bin/xload

/usr/kvm/eeprom

/usr/vmsys/bin/chkperm

创建一份系统中剩余setuidsetgid程序的列表,定期检查是否有变化,比如多出其他setuidsetgid程序来。

43 umask命令

umask设置用户文件和目录的文件创建缺省屏蔽值,若将此命令放入.profile文件,就可控制该用户后续所建文件的存取许可。umask命令与chmod命令的作用正好相反,它告诉系统在创建文件时不给予什么存取许可。

安装配置完操作系统之后确认rootumask设置是077或者027,执行/usr/bin/umask -S 确认,即查看当前用户的读写文件的默认权限。

5.系统优化

51 系统数据包转发参数:

打开数据包转发

#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

52 系统网络参数:

利用/etc/notrouter关闭IP转发,创建/etc/notrouter文件,重启计算机(入侵者如果可以访问根目录,可以使用ndd命令重新开启IP转发)

编辑/etc/inet/hosts中的配置

127.0.0.1 Localhost (所有系统都有这一项)

192.168.0.13 Loghost syslog使用的,指定syslog日志记录的主机机)

192.168.0.109 test_solaris(主机IP和主机名)

/etc/defaultrouter包含了默认路由器的名称或者IP

如果使用了默认路由器,在/etc/inet/hosts文件中必须包含路由器的名称,因为如果设置了路由表,系统将不会运行任何目录服务(DNSNIS或者NIS+),即系统在有数据包进行路由时直接路由,不需要有DNS或者NIS来指定。

53 堆栈缓冲溢出攻击防护设置

至少90%以上的安全问题都是来自“堆栈溢出”。攻击者通过给一个以root身份运行的程序提供比它所预期的输入长得多的字符串,使被攻击程序无法处理而改变执行流程去执行攻击者指定的代码。

操作步骤:

root用户登录。

/etc/system文件做个拷贝:

cp /etc/system /etc/system.BACKUP

用编辑器编辑/etc/system文件

到文件的最后,插入以下几行:

set noexec_user_stack=1

set noexec_user_stack_log=1

保存文件,退出编辑器,一旦重启机器,这些改变就会生效。

(对 Solaris 9,可以对单个程序设定堆栈不可执行属性,前提是有该程序的源码,例如:# cc -M /usr/lib/ld/map.noexstk myprogram.c

54 使IP forwardingsourec routing(源路)由无效

Inetinit中使IP forwardingsourec 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

55 防止TCP序列号预测攻击(ip欺骗)

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

56 使多路广播(multicasting)无效

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

57 设置正确的环境变量PATH

确认rootPATH环境变量设置是安全的,应该只包含/usr/bin:/sbin:/usr/sbin

避免当前工作目录.出现在PATH环境变量中,这有助于对抗特洛伊木马。

echo $PATH | grep ":."

检查所有缺省启动脚本和root启动脚本,在所有路径变量中删除“.”路径, 包括以下文件:

/.login

/etc/.login

/etc/default/login

/.cshrc

/etc/skel/local.cshrc

/etc/skel/local.login

/etc/skel/local.profile

/.profile

/etc/profile

58只允许root进行电源管理

编辑/etc/default/sys-suspend:

PERMS=console-owner

改为 PERMS=-

并做 #/bin/chmod 0755 /usr/openwin/bin/sys-suspend

此项配置防止SYN Flood攻击

6.日志管理

61 配置系统syslog日志服务

缺省情况下,syslog提供了最小程度的系统日志功能,修改/etc/syslog.conf文件,使得syslog记录更多日志信息,根据日志重要程度分别记录到不同地方。任何与安全相关的日志信息应该加密后存放到文件中。不幸的是,必须重启syslog才能读取新的配置文件。

62 日志查看:

目前使用solaris的系统管理员都知道在/var区下有个目录adm,在这个目录下有messagssyslogsulogutmp等诸多日志文件,它们记录着solaris系统产生的各种消息日志。

messages记载来自系统核心的各种运行日志,包括各种精灵,如认证,inetd等进程的消息及系统特殊状态,如温度超高等的系统消息,可以说它是系统最重要的日志之一。

sulog中记载着普通用户尝试su成为其它用户的纪录。它的格式为:发生时间 +/-(成功/失败) pts号 当前用户欲su成的用户。

su 04/15 1635 + pts/6 yiming-root
su 04/15 16
43 + pts/4 root-yiming
su 04/17 08
20 - pts/5 cheny-root
su 04/18 16
36 - pts/4 cheny-root
su 04/19 02
57 + pts/11 lizhao-root

utmp,utmpx这两个文件是不具可读性的,它们记录着当前登录在主机上的用户,管理员可以用wwho等命令来看,下面为who的输出结果,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值