-
教你如何配置安全的
SOLARIS
系统
一、帐号和口令安全策略
1.1
p>
更改口令文件、影像文件、组文件的权限
/etc/passwd <
/p>
必须所有用户都可读,
root
用户可写
–
rw-r
—
r
—
/etc/shadow
只有<
/p>
root
可读
–
r--------
/etc/group
必须所有
用户都可读,
root
用户可写
p>
–
rw-r
—
r<
/p>
—
1.2
修改不必要的系统帐号
移去或者锁定那些系统帐号,
比如
sys
、
uucp
、
nuucp
、
listen
、
lp
、
ad
m
等等,简单的办法
是在
/etc/s
hadow
的
password
域中放
上
NP
字符。还可以考虑将
/etc/
passwd
文件中的
shell
域<
/p>
设置成
/bin/false
1.3
修改口令策略
修改
/etc/default/passwd
文件
MAXWEEKS=4
p>
口令至少每隔
4
星期更改一次
MINWEEKS=1
口令至多每隔
1
星期更改一次
WARNWEEKS=3
修改口令后第三个星期会收到快要修改口令的信息
PASSLENGTH=6
用户
口令
长度不少于
6
个字符
二、用户授权安全策略
2.1
移去组及其它用户对
/etc
的写权限。
p>
执行命令
#chmod -R go-w /etc
2.2
禁止
root
远程登录
在
/etc/default/l
ogin
中设置
CONSOLE=/dev/concle
2.3setuid
和
setgid
特殊权限。
Setuid
是指设置程序的有效执行用户身份
(uid)
为该文件
的属主
,
而不是调用该程序进程的用
户
身份。
Setgid
与之类似。
Set
uid
和
setgid
用
1s
-1
显示出来为
s<
/p>
权限
,
存在于主人和属组的执
行权限的位置上。系统设置特殊权限,使用户执行某些命令时
,
具有
root
的执行权限
,
命令执行
完成
,
root
身份也随之消失。因此特殊权限关系系统的安全,可执行命令
#find
/
-perm
-4000
-print
寻找系统
中具有
setuid
权限的文件,存为列表文件,定时检查有没
有这之外的文件被设
置了
setuid
权限。
2.4
审计并日志所有以
root
身份的登陆情况
添加或编
辑
/etc/default/login
文件如下:
SYSLOG= YES
syslog
记录
root
的登陆失败,成功的情况。
2.5
设置远程登陆会话超时时间
添加或编辑
< br>/etc/default/login
文件如下:
TIMEOUT= 300
2.6
确定登陆需要密码验证
添加或编辑
< br>/etc/default/login
文件如下:
PASSREQ= YES
2.7
UMASK
设置
umask
命令设置用户文件和目
录的文件创建缺省屏蔽值
,
若将此命令放入
.profile
文件
,
就可控<
/p>
制该用户后续所建文件的存取许可
.umask
< br>命令与
chmod
命令的作用正好相反
< br>,
它告诉系统在创
建文件时不给予什么存取许可
.
安装
配置完操作系统之后确认
root
的
u
mask
设置是
077
或者
027
,执行
/usr/bin/umask [-S]
确认。
2.7.1
增加或修改
/etc/default/login
文件中如下行
UMASK=027
2.7.2
并增加上行到如下的文件
中:
/etc/.login /etc/.profile /etc/skel/
/etc/skel/
/etc/skel/e
2.8
用户环境配置文件的
PATH
或者
L
D_LIBRARY_PATH
中移去
―.‖
。
从
如
下
的
p>
文
件
中
移
走
‖.‖,
确
认
root
的
PATH
环
境
变
量
设<
/p>
置
是
安
全
的
,
应
该
只
包
含
/usr/bin
:/sbin:/usr/sbin
,避免当前工作目录
.
p>
出现在
PATH
环境变量中,这有助于对抗
特洛伊木
马。
#echo $$PATH | grep
确认
/.login /etc/.login
/etc/default/login
/.cshrc /etc/skel/e /etc/skel/
/.profile
/etc/skel/ /etc/profile
三、网络与服务安全策略
3.1
关闭不用的服务
3.1.1
在
中关闭不
用的服务
首先复制
/etc/inet/
。
< br>
#cp /etc/inet/ /etc/inet/
然后用
vi
编辑器编辑
文件,对于需要注释掉的服务在相应行开头标记
―#‖
字符即可。
3.1.2
p>
在
Services
中关闭不用的服务
p>
首
先复制
/etc/inet/services
。
#cp /etc/inet/services /etc/inet/
然后用
vi
编辑器编辑
Services
文件,对于需要注释掉的服务在相应行开头标记
―#‖
字符即可。
在
、
services
< br>中进行修改后,找到
inetd
进程的
< br>ID
号,用
kill
向其发送<
/p>
HUP
信号进行
刷新。举例如下。
#ps -ef | grep inetd
#kill -HUP
进程号
或
/usr/sbin/inetd
–
s
–
t
增加
-t
选项以加强网络访问控制
3.1.3
根据需要关闭不用的服务
可关闭如下服务:
tftp
、
ypupdate(NIS
程序
)
、
dtspcd(
邮件收发程序
)
p>
、
rquotad
、
name
、
uucp(
网络实用系统
)
、
snmp(
简单网络管理协议
)
等。
3.2
关闭系统的自启动服务
在系统
/etc/rc*.d
的目录下,根据需要停用以下服务
:
sendmail
把
/etc/rc2.d/S88sendmai
更名为
tc/rc2.d/X88sendmail
DNS
将
/etc/rc2.d/S72inetsv
注释掉
一项
lp
把
/etc/rc2.d/S8
0lp
更名为
/etc/rc2.d/X80lp
uucp
把
/etc/rc2.d/S70uucp
更名为
/etc/
rc2.d/x70uucp
< br>snmp
把
/etc/rc3.d/S76snmpdx
和
/etc/rc3.d/S77dmi
更名
为
/e
tc/rc3.d/s76snmpdx
和
/etc/rc3.
d/s77dmi
autoinstall
把
/etc
/rc2.d/S72autoinstallg
更名为
/et
c/rc2.d/s72autoinstall
3.
3
加强
FTP
服务安全
3.3.1
禁止系统用户的
FTP
服务
把所有的系统账户加入到
/etc
/ftpusers(solaris
9
的该文件现更改为<
/p>
/etc/ftpd/ftpusers)
文
件:
root
、
daemon
、
sys
、
bin
、
adm
、
lp
p>
、
uucp
、
nu
ucp
、
listen
、
nobody
3.3.2
< br>禁止
FTP&
服务暴露系统敏感信息
编
辑
/etc/default/ftpd
文
件
,
假
如
文
件
不
存
在
就
新
建
一
个
,
在
文<
/p>
件
中
的
加
进
入
下
一
项:
BANNE
R=XXXX(XXXX
可以任意改变为任何一个版本信息
)<
/p>
,将该系统版本信息屏蔽
.
3.3.3ftp
服务会话日志记录
/etc/inet/
中的
ftpd
为(记录)
ftp
stream tcp nowait root /usr/sbin/
–
dl
3.4
加强
Telnet
服务安全<
/p>
3.4.1
禁止
< br>Telnet
服务暴露系统敏感信息
防
止
telnetd
banner
泄
露
信
息
,
修
改
/etc/default/telnetd
文<
/p>
件
,
加
入
以
下
一
项
:
BANNER=XXXX(XXXX
可以任意改变为任何一个版本信息
)
,将该系统
版本信息屏蔽
.
3.4.2<
/p>
更改
Telnet
服务端口号
修改文件
/etc/services
的
Tel
net
一项,将端口号改为非
23
,使
用
Telnet
服务时需注明端口
号。
3.5
加强
NFS
服务安全
检查
/etc/dfs/dfstab
文件
share
语句,缺省时共享目录为可读可写,加入
―
-
o‖
选项增加安全,
―
-
o rw‖
可读可写,
―
-
o
ro‖
只读,可授权某系统和某用户。
3.6
防止
TCP
序列号预测攻击
(ip
欺骗
p>
)
在
/etc/default/inetinit
中
增
加
设
置
来
防
止
TCP
序
列
号
预
测
攻
击
(ip
欺
骗
)TCP_STRONG_ISS=2
3.7
系统路由安全
如果
Solaris
机器有超过一块的网卡的话,
它将会在不同网卡
间转发数据包,
这一行为可以在
/etc/init.d/in
etinit
中得到控制。要在
Solaris
2.4
或者更低版本机器下关闭它,可以将
ndd
-set
/dev/ip ip_forwarding 0
添加于在
inetinit
文件未尾。
在
Solaris
2.5
以上,
只要
touch /et
c/notrouter
.
网络系统用静态路由比较安全。
p>
3.8
调整网络参数,加强网络安全
使
IP
forwarding
和
sourec routing(
p>
源路
)
由无效
在
I
netinit
中使
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
禁止系统转发
IP
包:
#ndd -set /dev/ip ip_forwarding 0
缩短
ARP
的
cache
保存时间
: (default is 5 min)
#ndd -set /dev/arp
arp_cleanup_interval 2 min
关闭
echo
广播来防止
ping
攻击(
# default is 1
)
#ndd -set
/dev/ip ip_respond_to_echo_broadcast 0
四、防止堆栈缓冲益出安全策略
入侵者常常使用的一种利用系
统漏洞的方式是堆栈溢出,他们在堆栈里巧妙地插入一段代
码,
利用它们的溢出来执行,
以获得对系统的某种权限。
要让你的系
统在堆栈缓冲溢出攻击中更
不易受侵害,你可以在
/etc/s
ystem
里加上如下语句:
set
noexec_user_stack=1
set
noexec_user_stack_log =1
第一句可以防止在堆栈中执行插入的代码,第二句则是在入
侵者想运行
exploit
的时候会做
记录。
五、日志系统安全策略
5.1
定时检查系统日志文件
Solaris
系统通过
syslogd
进程运行日志系统,配置文
件
/etc/
,可编辑此文件让日
志系
统记录更多信息,需重启
/usr/sbin/syslogd
进程,重读取配置文件。通常日志系统的文件分
别存放在两个位置,
/var/adm
保存本地系统日志,
/var/log<
/p>
保存登录其它系统时日志。
p>
5.2
设置
utmpx
和
wtmpx
文件权限,确保日志系统安全。
文件
/var/adm/utmpx
记录了所有当前登录到系统中的用户,
文件
/var/adm/wtmpx
记
录了系
统所有的登录和注销。这两个文件是以数据库的格式存在的。
设置权限
#chmod
544 /var/adm/utmpx
#chmod 544
/var/adm/wtmpx
六、其它系统安全设置
6.1
crontab
命令
6.1.1
不要使用
crontab
–
e
命令,因为它会在
/tmp
下建立所有用户都可读的
crontab
p>
副本访问
cron
系统。用如下的方法:<
/p>
编辑文件:
mycronfile
文件 Setuid <
br>而不是调用该程序的进
<
br>同时设
crontab
6.1.2
在
/etc/default/cron
文件中增加如下行:
CRONLOG=YES
记录所有的
crontab
行为
6.2
对
su
的纪录<
/p>
创建
/etc/default/su
文件
SULOG=/var/adm/sulog
SYSLOG=YES
CONSOLE=/dev/console
PATH=/usr/bin:
SUPATH=/usr/sbin:/usr/bin
6.3
为
O
penBoot
设置密码
在
Solaris
中设置密码
#eeprom security-password
在
OpenBoot
中设置密码
ok password
在
Solaris
中设置安全级别(<
/p>
command
)
#eeprom
security-mode=command
在
OpenBoot
中设置安全级别(
command
)
ok setenv
security-mode command
在
OpenBoot
中设置安全级别(
full
)
ok setenv
security-mode full
6.4
限制
.rhosts
和
/etc/
文件的使用
配置文件具有两种功能:
r
系列命令使用这些文件来访问系统
;
在某用户
的目录下存在
.rhosts
文件或
/
etc/
文件配有某系统,任何用户都可以通过
rlogin<
/p>
不需要口令以该用户的身
份登录到系统。因此要为这些文件加锁,
先创建它们,然后修改其属性为零即可。这样除了
root
p>
用户就没有其它用户能创建或修改它们了。
/usr/bin/touch
/.rhosts
/etc/
/usr/bin/chmod
0
/.rhosts
/etc/
.rhosts
文件可以作为
一个典型的后门文件使用,运行下面的命令全局查找
.rhosts
#find
-
name―.rhosts‖
-print
6.5
给系统打补丁
象其它的系统一样,
Solaris
系统也有它的漏洞,
其中的一些
从性质上来说是相当严重的。
SUN
公司长期向客户提供各种版
本的最新补丁,放在
网站。可用
#sh
owrev
–
p
命令检查系统已打的
补丁或到
/var/sadm/patch
目录下查已打过的补
丁号,用
patchadd
命令
给系统
打补丁。
七、
Setuid
p>
设置和
Solaris
操作系统安全
在
Solaris
中
,
文件除了读、写、执行权限外,还有一些特殊权限。
Setu
id
和
setgid
是其中的
一类。它与
Solaris
系统的安全关系紧密
。
是指设置程序的有效的执行用户身份
(
uid
)
为该文件的主人,
程的
uid
。
Setgid
与之类似。
Setu
id
和
setgid
用
ls
–
l
显示出来为
s
权限,存在于主人和属组的执
行权限的位置
上。
这种权限的设置方法如下:
只设
setuid
:
chmod 4xxx filename
(xxx
为一般读、写、执行权限
)
只设
setgid
:
chmod
2xxx filename
setuid
和
setg
id
:
chmod 6xxx
filename
取消两种权限:
chmod
0xxx filename
这种权限怎么用?
举个例子来说,假如某一命令(程序)的主人是
root
用户,并且该文件有
setuid
属性,但
是该文件的读、写、执行权限的属性表明普通用户
user1
可以执行该命令,那么就表示:当该用
户执行该命令时,他具有
root
的执行身份,并获得相应的权
限。一旦该命令执行完成,该身份
也随之消失。
为什么系统中需要有这样的权限呢?请执行以下操作:
7.1. $$ ls
–
l /etc/shadow /bin/passwd
-r-sr-
sr-x 3 root sys 99792 1999
2
月
12 /bin/passwd
-r-------- 1 root sys 261 1
月
3 13
:
12
/etc/shadow
/etc/shadow
文件由于存有用户的加密口令信息,对系统的安全至关重要,
因此权限很严,
只有
root
凭其对系
统的至高无上的权限才得以对
/etc/shadow
可读可写
。
但是系统必须允许普通
用户也能修改自己的口令。要让他们对
/etc/shadow
可写,又不能可读,而且可写又不能允
许他
们改别人的口令,怎么办?系统就采取这样一个办法:做一个程序,
也就是
/bin/passwd
,通过
它可以在不显示文件内容的情况下直接修改
/etc
/shadow
文件。
可是这个程序怎么能有这样的权
限?因为系统赋予它
setuid
权限,而且它
属于
root.
这样,用户在使用
/b
in/passwd
改口令时就
有
ro
ot
权限
.
由于
/bin/passwd
命令本身功能的局限性,用户并不能用它做更多的不利于系统
安
全的事。
7.2.
用普通用户身份修改口令
$$ passwd
Enter login password:
****
New
password:******
Re-enter new password:******
Passwd(SYSTEM): passwd successfully changed for
xxx .
可以成功。
7.3.
用超级用户修改
/bin/passwd
的权限
# chmod 0555
/bin/passwd
7.4.
再重复
2
< br>,是否还成功?当然不。
7.5
.把
/bin/passwd
的权限恢复原状。
# chmod 6555
/bin/passwd
对此可以打一个生动的比喻:有一个绝密机关,不得已必须有一些不能见这些秘密的人进
来
做一些事情。于是授权一些特殊的
―
车辆
‖
(没有窗户,门紧闭,所以看不到外面。只有一个小洞<
/p>
允许乘坐的人伸出一只手臂)
,
带着所乘
坐的人开到要去的地方,
允许它办完事情马上带他出来。
这样是
不是很安全?不一定。如果
―
车辆
‖<
/p>
没有经过精挑细选是有很多
―
门窗
‖
,那系统可就危险
了。
这种安全威胁在<
/p>
Solaris
中也有可能出现。比如做一下下面这个实验:
p>