前言:针对solaris7,8操作系统的一个完全的安全配置手册,供系统管理员参考。
Solaris安全配置流程1
一,solaris系统安装3
系统patch3
建立/var分区3
二,系统4
eeprom安全4
置核心大小为零4
三,用户管理4
禁止所有的系统账户(system accounts)4
用强壮的密码设置程序5
设置默认的密码参数5
设置密码的最大生存周期5
设定离用户密码过期的天数,当系统启动时提醒用户。5
设定最小用户密码长度6
防止远程的root登陆6
纪录所有root的登陆情况6
设置登陆会话超时时间6
设置默认的屏蔽掩码6
设置root的umask6
确定登陆需要密码验证7
设置shell的环境变量7
检查每个用户的密码档设置7
去掉所有path环境变量里的“.”7
限制su命令,添加可以su的用户到sugroup里7
四,inetd超级进程8
注释掉所有确实不需要的服务8
对inetd的服务实现TCP wrapper8
加固inetd8
关于xinetd8
五,系统启动服务(rc.X)9
去掉不需要的启动服务9
禁止DMI服务9
禁止默认的mounting suid features9
检查所有的.rhosts文件10
禁止基于rhosts的用户认证10
检查信任关系10
启动服务脚本的屏蔽掩码10
六,网络接口的调整和安全11
缩短ARP缓存的存在周期11
缩短条目在arp-table里刷新的时间11
禁止回应广播的的请求来防止一些特殊的具有危害性的ping包11
启动时禁止源路由11
防止系统在启动时启动ip转发11
设置系统禁止ip包转发12
设置系统精确的多路寻址12
保证系统不响应icmp网络掩码请求12
防止系统响应icmp的时间戳请求12
防止系统响应icmp时间戳广播12
防止系统发送icmp转发信息13
改变TCP初始序列号生成参数13
设置in.routed在静态模式13
禁止路由13
八,小型服务14
1,NFS14
2,NIS,NIS+15
3,MAIL15
4,FTP16
5,TELNET17
九,X-Windows17
十,文件许可权限18
去掉不用的suid文件18
去掉不用的sgid程序18
删除一切/etc目录下的组用户可写的文件19
移除/etc目录下一切对用户可写的文件19
改变所有文件的rw-rw-rw权限为rw-r-r-19
改变文件的rwxrwx???19
找出可写的目录20
确定所有应用服务的启动脚本的用户属主和用户组是root20
打开cron程序的记账20
检查utmp,utmpx的权限20
寻找没有用户关联的文件21
寻找没有组关联的文件21
检查/var/cron的权限21
十一,登录和记账21
设置cronlogfile的保存空间为2m21
记账所有的inetd服务22
修改syslog.conf文件22
安装tripwire22
IDS22
日志文件观察者(swatch)22
禁止telnet远程管理,用ssh23
十二,其他23
设置启动标示23
一 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 <stdio.h>
void main() {
printf(“sorry!no shell with this account\n”);
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
<service>:<source-ip>
关于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 <NIS-Package>
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 <<EOF >/usr/dt/config/Xaccess
# disable all XDMCP connections
!*
EOF
假如/etc/dt/config/Xaccess存在,则如下操作:
cat <<EOF >/etc/dt/config/Xaccess
# disable all XDMCP connections
!*
EOF
十,文件许可权限
去掉不用的suid文件
安全层面:本地
解决方法:
许多运行在solaris上的suid程序都只属于root,检查这些程序,有没有是属于其他用户的:
步骤:
1)找出所有的suid程序
2)创建备3)份目录(如:/opt/backup/usr/local/bin)
4)把这些suid程序备5)份在以上目录里
6)把这些程序用tar打成包(使find程序在备7)份目录里找不8)到这些程序)
9)删掉备10)份目录
11)去掉所有的suid程序的s权位
12)只保留一些必须的suid程序。如:passwd,13)su等
14)再次执行一遍find程序,15)看看输出情况
必须用到的一些命令:
find / -type f\( -perm -4000 \) |xargs ls -a
find / -type f\( -perm -4000 \) |xargs chmod -s
去掉不用的sgid程序
安全层面:本地
解决方法:
许多运行在solaris上的sgid程序都只属于root,检查这些程序,有没有是属于其他用户的:
1)出所有的sgid程序
2)创建备3)份目录(如:/opt/backup/usr/local/bin)
4)把这些sgid程序备5)份在以上目录里
6)把这些程序用tar打成包(使find程序在备7)份目录里找不8)到这些程序)
9)删掉备10)份目录
11)去掉所有的sgid程序的s权位
12)只保留一些必须的sgid程序。如:passwd,13)su等
14)再次执行一遍find程序,15)看看输出情况
必须用到的一些命令:
find / -type f\( -perm -2000 \) |xargs ls -a
find / -type f\( -perm -2000 \) |xargs chmod -s
删除一切/etc目录下的组用户可写的文件
安全层面:本地
解决方法:
检查/etc目录下所有的组可写文件:
find /etc -type f\( -perm 20 \) | xargs ls -las
不需要组的可写权限,修改如下:
find /etc -type f\( -perm 20 \) | xargs chmod g-w
移除/etc目录下一切对用户可写的文件
安全层面:本地
解决方法:
检查/etc目录下对用户可写文件:
find /etc -type f\( -perm 2 \) | xargs ls -las
不需要用户的可写权限,修改如下:
find /etc -type f\( -perm 2 \) | xargs chmod g-w
改变所有文件的rw-rw-rw权限为rw-r-r-
安全层面:本地
解决方法:
首先列出文件:
find / -type f -perm 666 |xargs ls -al > perm-666-before-change.txt
改变权限:
find / -type f -perm 666 |xargs chmod 644
find / -type f -perm 666 |xargs ls -al > perm-666-after-change.txt
改变文件的rwxrwx???
安全层面:本地
解决方法:
首先列出文件:
find / -type f -perm 777 |xargs ls -al > perm-777-before-change.txt
改变权限:
find / -type f -perm 777 |xargs chmod 755
find / -type f -perm 777 |xargs ls -al > perm-777-after-change.txt
找出可写的目录
安全层面:
本地
解决方法:
find / -type d\( -perm 2 \)
改变你所需要的权限设置
确定所有应用服务的启动脚本的用户属主和用户组是root
(这些可以影响补丁的程序和出错信息)
安全层面:本地
解决方法:
检查启动脚本的文件属主:
find /etc -type f -print | grep rc | egrep -v "skel|tty|mail|snmp|Mail" | xargs ls -al > rc-files-before-change.txt
改变这些文件的文件属主:
find /etc -type f -print | grep rc | egrep -v "skel|tty|mail|snmp|Mail" | xargs chown
root:root
find /etc -type f -print | grep rc | egrep -v "skel|tty|mail|snmp|Mail" | xargs ls -al > rc-files-after-change.txt
ls -al /etc/ init. d > etc-init.d-before.change.txt
chown root:root /etc/ nit.d
ls -al /etc/init.d > etc-init.d-after-change.txt
经过这样的改变,所有的rcX.d里的脚本的文件属主都为root,所有的/etc/init.d目录里的脚本的文件属主文件组都是root了,为了防止特洛伊木马。
打开cron程序的记账
安全层面:本地
解决方法:
确定/etc/default/cron文件里有如下行:
CRONLOG=YES
检查utmp,utmpx的权限
安全层面:本地
解决方法:
检查/var/adm目录下的文件权限:
find /var/adm -type f\( -perm 2 \) | xargs ls -las
修改文件:
chmod 644 /var/adm/utmp
寻找没有用户关联的文件
安全层面:本地
解决方法:
find / -type f -nouser
如下步骤:
1) find / -type f -nouser > files-nouser-before-change
2) find / -type f -nouser | xargs chwon nobody:nobody
3) find / -type f -nouser > files-nouser-after-change
寻找没有组关联的文件
安全层面:本地
解决方法:
find / -type f -nogroup
如下步骤:
1) find / -type f -nogroup > files-nogroup-before-change
2) find / -type f -nogroup | xargs chgrp nobody
3) find / -type f -nogroup > files-nogroup-after-change
检查/var/cron的权限
安全层面:本地
解决方法:
如果/etc/cron文件的文件属主不是root,组不是sys,修改该文件的权限:
chmod 700 /var/cron && chown root /var/cron && chgrp sys /var/cron
十一,登录和记账
设置cronlogfile的保存空间为2m
安全层面:本地
解决方法:
修改/etc/cron.d/logchecker如下:
LIMIT=4096
记账所有的inetd服务
安全层面:本地
解决方法:
修改/etc/init.d/inetsvc文件如下:
/usr/sbin/ifconfig -au netmask + broadcast +
/usr/ bin/inetd -s -t
假如你运行了named,dhcpd, multicast,你必须作如上改动
修改syslog.conf文件
安全层面:远程
解决方法:
编辑/etc/syslog.conf文件,让日志进程纪录更多的系统信息。
添加如下行:
*.debug /var/adm/compass.messages
安装tripwire
安全层面:远程
解决方法:
tripwire是一个特洛伊木马检查程序,他工作在提供的二进制文件的md5码的数据库以及你的配置上,建议每6个小时运行一次tripwire。
IDS
安全层面:远程
解决方法:
建议安装运行snort工具来监测你的网络可能收到的如下攻击:
- cgi-scan
- portscans
- virus
根据你的需要参看/root/config/snort.rules文件。
日志文件观察者(swatch)
安全层面:远程
解决方法:
建议安装运行swatch工具来监测你的日志文件,你可以在你的系统上启动多个监测进程,例如:
- /var/adm/compass.messages
- /var /adm/snort_portscan.log
- /opt/AppServer/WebSphere/log/????
Swatch是一个用perl写的工具,所以你必须安装PERL MODULES。
禁止telnet远程管理,用ssh
安全层面:远程
解决方法:
安装openssl,openssh的最新版本来代替telnetd,密切关注最新版本的security report。
十二,其他
设置启动标示
安全层面:本地
解决方法:
修改/etc/default/telnetd文件设置启动banner,格式如下:
BANNER=”…..”
创建/etc/issue文件编辑启动信息。