linux系统检查列表剖析.docx
《linux系统检查列表剖析.docx》由会员分享,可在线阅读,更多相关《linux系统检查列表剖析.docx(19页珍藏版)》请在冰豆网上搜索。
linux系统检查列表剖析
Linux主机检查流程
二〇〇七年五月
安氏互联网安全系统(中国)有限公司
1系统信息
1.1主机名
1.2域名
1.3信息检查
1.3.1说明:
得到系统主机名、域名
1.3.2检查方法:
hostnamedomainname
1.1.1结果分析方法:
#hostname
#domainname
(none)
1.4系统版本信息检查
1.4.1说明:
得到系统版本信息
1.4.2检查方法:
uname-a
1.5网卡信息以及混杂模式检查
1.5.1说明:
得到网卡信息
1.5.2检查方法:
ifconfig-a
1.6系统路由信息检查
1.6.1说明:
得到系统路由信息
1.6.2检查方法:
netstat-r
1.7系统加载模块信息检查
1.7.1说明:
查看系统已加载的模块
1.7.2检查方法:
lsmod
2补丁安装情况
2.1系统已安装的rpm包信息检查
2.2说明:
得到系统已经安装的rpm包列表
2.3检查方法:
rpm-qa
2.4结果分析方法:
#rpm-qa
3帐号和口令
3.1系统空密码帐号信息检查
3.1.1说明:
查看系统是否存在空密码帐号
3.1.2检查方法:
awk-F:
'($2==""){print$1}'/etc/shadow
3.2系统uid=0帐号信息检查
3.2.1说明:
分析系统是否存在uid=0帐号以及其他uid相同帐号
3.2.2检查方法:
cat/etc/passwd|awk-F:
'{OFS="||";print$1,$3,$4,$7}'
3.3系统缺省用户(组)信息检查
3.3.1说明:
得到系统缺省用户(组)
3.3.2检查方法:
cat/etc/passwd
cat/etc/group
3.3.3结果分析方法:
查看是否存在系统缺省帐号以及缺省系统组,如:
lp, sync, shutdown, halt, news, uucp, operator, games, gopher等
3.4系统帐号shell变量以及noshell文件真实性信息检查
3.4.1说明:
得到系统帐号shell变量
3.4.2检查方法:
cat/etc/passwd|awk–F:
‘{print$7}’|xargsls-al
3.5passwd、shadow文件检查
3.5.1说明:
检查系统passwd、shadow文件,确保系统中每个用户都有密码,并且密码被shadow。
3.5.2检查方法:
pwck
3.5.3结果分析方法:
#pwck
3.6系统缺省密码最短长度检查
3.6.1说明:
得到系统缺省密码最短长度
3.6.2检查方法:
cat/etc/login.defs|grepPASS_MIN_LEN
3.7系统自动注销帐号登录检查
3.7.1说明:
得到超时后系统自动注销帐号登录信息
3.7.2检查方法:
cat/etc/profile|grepTMOUT
3.7.3结果分析方法:
#cat/etc/profile|grepTMOUT
3.7.4备3.7.5注:
本例输出表示并未对自动注销帐号登录作设置
3.8rootPATH环境变量检查
3.8.1说明:
得到rootPATH环境变量,是否包含当前目录“.”
3.8.2检查方法:
echo$PATH|grep“:
.”
3.8.3结果分析方法:
#echo$PATH|grep“:
.”
3.8.4备3.8.5注:
此检查有一定的局限性,只检查了当前用户的路径设置。
3.9禁止使用ftp的帐号检查
3.9.1说明:
得到禁止使用ftp的帐号
3.9.2检查方法:
cat/etc/ftpusers
ftplocalhost
ftp
enter
3.11允许su为root的帐号信息检查
3.11.1说明:
检查是否允许任何人su为root
3.11.2检查方法:
vi/etc/pam.d/su
3.11.6bashshell保存少量命令检查以及shellhistory输出文件路径检查
3.11.7说明:
得到bashshell能保存的命令条数
3.11.8检查方法:
cat/etc/profile|grepHISTSIZE
cat/etc/profile|grepHISTFILE
3.12用户对主机使用的限制检查
3.12.1说明:
得到系统限制用户对主机使用的信息
3.12.2检查方法
检查是否加载了/lib/security/pam_limits.so动态连接库
cat/etc/pam.d/login|grep“/lib/security/pam_limits.so”
若存在检查
cat/etc/security/limits.conf
3.13系统是否允许guest或匿名3.14连接信息检查
3.13.1说明:
查看系统是否允许guest或匿名连接
3.13.2检查方法:
cat/etc/ftpaccess|grepclass
3.13.3结果分析方法:
#cat/etc/ftpaccess|grepclass
#Userclasses...
classallreal,guest,anonymous*
4网络与服务
4.1系统运行r进程检查
4.1.1说明:
得到系统运行进程
4.1.2检查方法:
ps-aux
4.1.3结果分析方法:
#ps-aux
4.1.4备5.1.5注:
计算系统运行进程个数:
#ps-aux|wc-l
4.2系统打开端口信息检查
4.2.1说明:
得到系统打开的端口信息
4.2.2检查方法:
netstat–an
5xinetd/inetd服5.6务信息检查
5.6.1说明:
查看系统是否运行xinetd/inetd服务
5.6.2检查方法:
ps-ef|grepinetd;grep–v“#”/etc/inetd.conf;
ps-ef|grepxinetd;grep“disable”/etc/xinetd.d/*
5.7/etc/hosts.conf信息检查
5.7.1说明:
得到系统解析地址顺序
5.7.2检查方法:
cat/etc/host.conf
5.8/etc/hosts.equiv信息检查
5.8.1说明:
查看是否存在/etc/hosts.equiv文件
5.8.2检查方法:
ls-al/etc/hosts.equiv&&cat/etc/hosts.equiv
5.9检查/etc/rc.d/rc?
?
?
.d自动运行脚本文件权限修日期分析
5.9.1说明:
得到当前系统运行等级
ps–ef|grepinit
5.9.2检查方法:
ls-al/etc/rc?
?
?
.d/
若发现不正常启动脚本检查其中包含字符串
string文件路径
5.10开放端口与进程信息检查
5.10.1说明:
查看某个开放端口由哪个进程打开
5.10.2检查方法:
假设要查看的开放端口是2401,执行fuser-ntcp2401,返回的进程ID为pid,
-u参数查看当前进程uid相关的所有进程
再执行ps-ef|greppid
5.11/etc/rc.d/rc[0-6].d各个等级脚本运行/关闭信息检查
5.11.1说明:
查看/etc/rc.d/rc[0-6].d下运行的脚本
5.11.2检查方法:
chkconfig–list
5.12系统ping响应信息检查
5.12.1说明:
查看系统是否响应ICMP请求
5.12.2检查方法:
cat/proc/sys/net/ipv4/icmp_echo_ignore_all
输出为0不使用该功能
输出为1使用该功能
5.13系统是否安装ftp以及当前使用版本信息检查
5.13.1说明:
查看系统是否安装ftp软件包
5.13.2检查方法:
rpm-qa|grepftp
ftplocalhost
5.14系统是否存在sendmail服务.极其版本检查
5.14.1说明:
查看系统是否存在sendmail服务或relay进程
5.14.2检查方法:
ps–ef|grepsendmail
telnetlocalhost25
6文件系统
6.1初始文件创建权限信息检查
6.1.1说明:
查看系统初始文件创建权限
6.1.2检查方法:
touch/tmp/test
ls–al/tmp/test
或者
umask-S
6.1.3关键文件极其目录属性信息检查
6.2说明:
查看系统关键文件属性
6.2.1检查方法:
ls-alfile_name
6.2.2结果分析方法:
应对于如下系统关键文件属性进行检查:
/etc/shadow/var/log/messages/var/log/wtmp/var/run/utmp
/etc/rc.d/init.d/etc/inittab/etc/group/etc/crontab/var/spool/cron
/etc/securetty/etc/lilo.conf/etc/grub.conf/usr/sbin/init
6.3/tmp属性信息检查
6.3.1说明:
查看/tmp目录属性
ls–al/|greptmp
6.3.2备6.4.5注:
本例输出表示/tmp目录已设置sticky位
6.5系统特殊文件信息检查
6.5.1说明:
查看系统存在的特殊文件(SUID/SGID程序,/dev下的非设备文件,非/dev下的设备文件,所有可写的文件,没有属主的文件)
6.5.2检查方法:
查找SUID/SGID程序:
#find/-typef(-perm-04000-o-perm-02000)-ls
查找/dev下的非设备文件:
#find/dev-typef-execls-l{}\;
查找非/dev下的设备文件:
#find/\(-typeb-o-typec\)-print|grep-v'^/dev/'
查找所有可写的文件:
#find/-perm-2!
-typel-ls
查找没有属主的文件:
#find/\(-nouser-o-ongroup\)-print
6.6系统分区加载信息检查
6.6.1说明:
查看系统分区加载情况
6.6.2检查方法:
mount
cat/etc/fstab
6.6.3结果分析方法:
#mount
#cat/etc/fstab
6.7NFS共享文件系统信息检查
6.7.1说明:
查看本地是否存在NFS服务
shoumount–e若成功则检查
cat/etc/exportt
6.8是否挂载载nfs文件系统信息检查
6.8.1说明:
查看系统加载的nfs文件系统信息
6.8.2检查方法:
df-k
6.8.3结果分析方法:
#df-k
7日志审核
7.1系统AUTH日志信息检查
7.1.1说明:
查看系统AUTH日志信息
7.1.2检查方法:
catsyslog.conf|grepauth
7.1.3结果分析方法:
#catsyslog.conf|grepauth
#Don'tlogprivateauthenticationmessages!
*.info;mail.none;authpriv.none;cron.none/var/log/messages
#Theauthprivfilehasrestrictedaccess.
authpriv.*/var/log/secure
7.1.4备7.1.5注:
本例输出表示AUTH日志信息均发往/var/log/secure
8本地安全增强性
8.1系统启动LILO密码设置检查
8.1.1说明:
查看系统启动LILO是否设置密码
8.1.2检查方法:
cat/etc/lilo.conf|greppasswd
8.2系统禁止Control-Alt-Delete键盘关闭命令信息检查
8.2.1说明:
查看系统是否禁止Control-Alt-Delete键盘关闭命令
8.2.2检查方法:
cat/etc/inittab|grepca
8.3检查以下文件是否为空防止login泄露系统版本
8.3.1说明:
查看系统是否屏蔽提示信息
8.3.2检查方法:
查看/etc/issue、/etc/以及/etc/redhat-release文件
8.4系统启动时默认init运行等级信息检查
8.5.1说明:
查看系统启动时默认init运行等级
8.5.2检查方法:
cat/etc/inittab|grepid
8.5.3结果分析方法:
#cat/etc/inittab|grepid
id:
3:
initdefault:
8.6系统控制台访问信息检查
8.6.1说明:
查看哪些系统帐号可以从控制台登录
8.6.2检查方法:
检查pam验证模块是否使用了该功能
cat/etc/pam.d/login|grep/lib/security/pam_access.so
若存在则检查是否设置了access用户登陆控制列表
cat/etc/security/access.conf|grep-v"#""
8.7系统虚拟设备8.8检查
8.8.1说明:
查看哪些系统虚拟设备允许远程连接
8.8.2检查方法:
cat/etc/securetty|grep-v"tty"
8.8.3结果分析方法:
#cat/etc/securetty|grep-v"tty"
8.8.3.1说明查看当前模块符号列表是否和核心export一至性
检查是否有非法插入模块
/sbin/lsmod|grepunused
检查是否存在失效模块
/sbin/lsmod|grepautoclean
检查核心内存符号输出表
然后比对/sbin/lsmod符号表输出表export的模块命是否一至
/sbin/ksyms-a|grepinsmod
检查是否劫持syscall[]表调用
cat/proc/ksyms|grepsys_call
彻底检查第三方检测工具kstat将直接检查/dev/kmem核心内存输出正确核心符号列表地址防止有些非法模块劫持核心符号输出
kstat是第三方检测工具请从s0ftpj.org下载原代码版本编译
然后执行kstat|grepinsmod比对/sbin/ksyms-a|grepinsmod结果
2.1.1使用usermod的L参数来锁定用户口令
2.1.2查看根用户是否限制了SHELLHISTORY记录大小以及是否清空HISTFILE中储存的shell命令记录
2.1.3检查方法
echo$HISTSIZE
2.1.4对于本地网络协议层安全性配置参数检查
2.1.5检查方法
proc/sys/net/ipv4/ip_local_port_range向外发送数tcp/udp连接端口发起范围
/proc/sys/net/ipv4/ip_forward是否禁止ip转发
/proc/sys/net/ipv4/icmp_echo_ignore_all是否禁止本地主机icmp数据包响应
/proc/sys/net/ipv4/conf/all/log_martians是否将伪造地址等消息记录到
/var/log/messages
/proc/sys/net/ipv4/conf/eth0/forwarding是否接受含有原路由信息的ip包
2.1.6检查本地默认连接的网关是否静态配置了MAC/IP绑定
2.1.7说明减少arp欺骗可能
2.1.8检查方法
cat/etc/ether&&arp–a
2.1.9初步审核wtmpwtmpx日志审核
查看每个用户连接时间统计
ac–p
查讯该用户上次登陆时间
lastlog用户名
lastlog–t10查看离现在10天前的用户log情况
last–u指定uid用户登陆情况
若安装TCP_Wrappers请检查tcpd.log
若syslog.conf为默认值请检查
/var/log/maillog记录
2.1.10日志安全性评估极其系统默认输出日志检查检查本地syslog是否默认记录到默认目录
2.1.11检查方法
more/etc/syslog.conf
特别是auth以及kernel等记录输出位置
检查/var/log/srcure文件中服务层登陆情况
检查核心错误输出极其消息根据/etc/syslog.conf中kernel输出文件来检查
检查/var/log/sulog审核用户su成功和失败记录
2.1.12检查本地sysctl配置文件查看是否严格限制了本地网络配置参数
2.1.13检查方法
检查判断本地网络数据层安全性极其是否为默认不安全配置
more/etc/sysctl.conf
2.1.14检查是否存在这两个核心模块和核心函数漏洞
2.1.15重要漏洞一ptrace/kmod漏洞本地提升权限
2.1.16检查方法
more/proc/sys/kernel/modprobe
2.1.17重要漏洞二brk()dobrk()本地提升权限
2.1.18检查方法
查看当前内核版本uname–a来确定是否肯能存在上述漏洞小于〈2.4.23
版本基本都存在这两个问题
查看普通用户内存分布map图
cat/proc/self/maps是否为默认map结构
2.1.19检查rpc服务开放状态
2.1.20说明linuxrpc服务中许多服务都存在远程利用
2.1.21检查方法
rpcinfo–p
检查以下关键字walldstatdmountlockcmsdpasswd
2.1.22对openssh安全性做检查
2.1.23检查方法
telnetlocalhost22
moreopenssh安装目录/sshd_config
moreopenssh安装目录/ssh_host_key
moreopenssh安装目录/ssh_host_key
ls–alopenssh安装目录/
2.1.24备注若使用openssh请检查openssh版本是否为3.6p1以上请确保sshd_configssh_configssh_host_key文件为属性为0440
2.1.25检查apache安全性
2.1.26说明apache配置不正确会带来很多远程访问层上的问题
catapache安装目录/conf/httpd.conf|grepLimitRequest
若启用ssl验证
检查openssl版本是否等于或者小于0.9.6a
rpm–iqa|grepopenssl
2.1.27说明检查是否存在proxy等不必要模块
2.1.28说明是否安装了不安全apacheweb服务处理模块
2.1.29检查方法
apache安装目录/bin/httpd–l
2.1.30备注若使用apache检查conf/httpd.conf文件确保apache关闭用户主页目录发布功能若启用ssl请检查openssl版本是否小于0.9.6b以及httpd加载模块情况
2.1.31确认以下文件不存在系统任何目录.forward.rhosts.netrc
2.1.32说明以下文件存在高风险机制
2.1.33检查方法
find/-name“.forward”
find/-name“.rhosts”
find/-name“.netrc”
9后门与日志检查
10第三方安全产品安装情况
10.1产品名10.2称版本号管理方式用途
ssh#rpm-qa|grepssh
#ssh-V
10.3产品名10.4称版本号管理方式用途
TCPWrapper#cat/etc/hosts.allow
#cat/etc/hosts.deny
10.4.1注:
由于产品安装可能无法检测,同时考虑到管理员可能伪装版本号,建议使用询问管理员的方式进行填写。
管理方式填写时选择Web,Telnet/SSH,Console