Linux等级保护笔记

身份鉴别(S3)

a)应对登录操作系统的用户和数据库用户进行身份标识和鉴别;

检查系统帐号

cat /etc/passwd
检查系统账号,不存在重复的用户名
cat /etc/shadow
第2列中的*,表示帐号不能登录系统,且没有配置密码
第2列中的!!表示帐号被锁定
其他值表示被加密的口令
cat /etc/group
查看输出第一列是否存在重名组。
查看系统的可用帐号中,系统管理帐号和数据库管理帐号是否为不同的帐号,且不存在同名帐号

系统安装了如oracle 10g 的数据库系统,要为数据库应用单独建立数据库专用组和组中的不同权限的管理帐户,而除root、oracle 以外的其他已有的可用帐户不应具备操作、维护、修改数据库的任何权限。
建立组的命令如下:
group –g GID GroupName
建立帐户的命令如下:
useradd –u UID –g GID –d HomeDirectory –s Bash UserName
建立用户后,需要为用户设置口令,执行:
passwd UserName
两次输入口令

b)操作系统和数据库系统管理用户身份标识应具有不易被冒用的特点,口令应有复杂度要求并定期更换;

检查系统帐号密码策略

查看/etc/login.defs,访谈询问当前所设置的密码长度及更换周期;

1
2
3
4
PASS_MAX_DAYS   90 #密码有效期/天
PASS_MIN_DAYS 0 #更换密码的最小天数
PASS_MIN_LEN 8 #密码最小长度
PASS_WARN_AGE 7 #密码失效前多少天开始警告

检查系统帐户口令的设置情况

设置位数大于8 位,数字、字母混合,区分大小写的口令
查看/etc/pam.d/system-auth,确认密码复杂度要求。

1
2
3
4
5
6
7
password    requisite     pam_cracklib.so try_first_pass retry=3 type= #尝试密码三次
password requisite pam_cracklib.so minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1;
# minlen=8 最小密码长度为8
# ucredit=-1 至少需要有一个大写字母
# lcredit=-1 至少需要有一个小写字母
# dcredit=-1 至少需要有一个数字
# ocredit=-1 至少需要一个除字母数字以外的其他字符

定期更换检查

Linux

1
2
3
chage -l root
cat /etc/shadow
date -u -d "1970-01-01 UTC $((16749 * 86400 )) seconds"

AIX

1
2
cat /etc/security/passwd
perl -le 'print scalar localtime 1200982154'

c)应启用登录失败处理功能,可采取结束会话、限制非法登录次数和自动退出等措施;

检测系统帐号登录失败处理策略

查看/etc/pam.d/system-auth文件。

1
auth required pam_tally2.so  onerr=fail  deny=3  unlock_time=40 even_deny_root root_unlock_time=30

注意添加的位置,要写在第一行,即#%PAM-1.0的下面。
以上策略表示:普通帐户和 root 的帐户登录连续 3 次失败,就统一锁定 40 秒, 40 秒后可以解锁。如果不想限制 root 帐户,可以把 even_deny_root root_unlock_time
这两个参数去掉, root_unlock_time 表示 root 帐户的 锁定时间,onerr=fail 表示连续失败,deny=3,表示 超过3 次登录失败即锁定。
注意:用户锁定期间,无论在输入正确还是错误的密码,都将视为错误密码,并以最后一次登录为锁定起始时间,若果用户解锁后输入密码的第一次依然为错误密码,则再次重新锁定。
查看日志 tail -f /var/log/secure

d)当对服务器进行远程管理时,应采取必要措施,防止鉴别信息在网络传输过程中被窃听;

e)应为操作系统和数据库的不同用户分配不同的用户名,确保用户名具有唯一性;

检查用户名、UID

查看/etc/passwd文件中是否有用户名相同、UID(第三字段)相同的账号。
1、无同名账号;
2、UID具有唯一性;
3、UID=0只能为root用户。

f)应采用两种或两种以上组合的鉴别技术对管理用户进行身份鉴别。

操作系统登录是否采用口令+令牌、USB KEY等方式进行身份鉴别。


访问控制(S3)

a)应启用访问控制功能,依据安全策略控制用户对资源的访问;

设置用户权限分配表。

b)应根据管理用户的角色分配权限,实现管理用户的权限分离,仅授予管理用户所需的最小权限;

1、应在操作系统内建立下述几类帐户:管理员、审计员、操作员;
2、有各类帐户对用的用户权限分配表。
1、查看/etc/passwd文件中各帐户并询问其用途、类别;
2、查看用户权限分配表。
1、按最小授权原则分配,不赋予一般用户管理员权限。建立了权限分离的用户,如管理员、审计员、操作员等;
2、建有各类账户的用户权限分配表。

c)应实现操作系统和数据库系统特权用户的权限分离;

操作系统与数据库系统管理员无人员兼任。

d)应严格限制默认帐户的访问权限,重命名系统默认帐户,修改这些帐户的默认口令;

1、重命名系统默认帐户;
2、修改默认帐户的口令。

e)应及时删除多余的、过期的帐户,避免共享帐户的存在;

删除多与账户

f)应对重要信息资源设置敏感标记;

g)应依据安全策略严格控制用户对有敏感标记重要信息资源的操作。


安全审计(G3)

a)审计范围应覆盖到服务器和重要客户端上的每个操作系统用户和数据库用户;

查看操作系统审计进程是否开启

1
2
3
4
5
6
7
#系统日志服务
service syslog status #(CentOS6.4以上为rsyslog)
service auditd status
#或
service --status-all | grep running
#查看守护进程
ps -ef | grep auditd

b)审计内容应包括重要用户行为、系统资源的异常使用和重要系统命令的使用等系统内重要的安全相关事件;

异常配置记录

1
2
3
grep "@priv-ops" /etc/audit/filter.conf
grep "@mount-ops" /etc/audit/filter.conf
grep "@system-ops" /etc/audit/filter.conf

异常登陆

1
2
cat /etc/syslog.conf #查看日志记录配置文件中是否配置了记录系统登录信息的功能。
last #检查系统登录情况。

检查系统异常日志记录

1
2
3
4
#Red Hat Linux AS4
cat /etc/log/secure //记录pop3,telnet,ssh,ftp 登录信息的文件
last –R //查看前50 次登录系统用户的信息
cat /etc/log/messages //查看系统发生的错误信息(包括登录信息)

c)审计记录应包括事件的日期、时间、类型、主体标识、客体标识和结果等;

Linux系统默认符合,

d)应能够根据记录数据进行分析,并生成审计报表;

e)应保护审计进程,避免受到未预期的中断;

f)应保护审计记录,避免受到未预期的删除、修改或覆盖等。

1.检查日志文件的访问权限

1
2
3
4
ls -l /var/log/
ls -l /var/log/messages
ls -l /var/log/secure
ls -l /var/log/audit/audit.log


剩余信息保护(S3)

a)应保证操作系统和数据库系统用户的鉴别信息所在的存储空间,被释放或再分配给其他用户前得到完全清除,无论这些信息是存放在硬盘上还是在内存中;

默认符合

b)应确保系统内的文件、目录和数据库记录等资源所在的存储空间,被释放或重新分配给其他用户前得到完全清除。

默认符合


入侵防范(G3)

a)应能够检测到对重要服务器进行入侵的行为,能够记录入侵的源IP、攻击的类型、攻击的目的、攻击的时间,并在发生严重入侵事件时提供报警;

1.安装主机入侵检测系统并配置策略;
2.定期对主机入侵检测系统的特征库进行维护升级;
3.发生严重入侵事件时提供报警。

检查防火墙的启用和配置情况

执行:setup
选择Firewall configuration
查看防火墙服务启用情况。
执行:iptables –L 查看防火墙设置的规则。

b)应能够对重要程序的完整性进行检测,并在检测到完整性受到破坏后具有恢复的措施;

1、应安装完整性检测工具;
2、定期对系统进行备份。

c)操作系统应遵循最小安装的原则,仅安装需要的组件和应用程序,并通过设置升级服务器等方式保持系统补丁及时得到更新。

检查系统开启的服务

1
2
3
4
ps –ef
setup #通过图形界面记录系统开启的网络服务
chkconfig --list #查看各运行级别下系统开启的服务
who –r #查看系统当前运行级别

检查系统开启的端口

1
2
netstat –antp #查看开启的tcp 端口
netstat –anup #查看开启的udp 端口

检查R 族服务运行情况

1
2
3
4
5
6
7
8
9
10
11
ps -ef|grep rpc
rpc 2429 1 0 19:37 ? 00:00:00 portmap
root 2473 1 0 19:37 ? 00:00:00 rpc.statd
root 2517 1 0 19:37 ? 00:00:00 rpc.idmapd
root 17103 16584 0 23:38 pts/2 00:00:00 grep rpc
[root@localhost etc]# ps -ef|grep rexec
root 17105 16584 0 23:38 pts/2 00:00:00 grep rexec
[root@localhost etc]# ps -ef|grep rsh
root 17109 16584 0 23:39 pts/2 00:00:00 grep rsh
根据输出结果,系统开启了rpc 服务。
系统不应该开启不需要的R 族服务,如rcp、rexec、rsh 等。

检查操作系统版本及补丁升级情况

1
2
3
4
5
6
7
8
9
10
#查看Linux 内核版本
cat /proc/version
uname –a
uname –r
#查看Linux 版本:
lsb_release –a
cat /etc/redhat-release
cat /etc/centos-release
rpm -q redhat-release
rpm -q centos-release


恶意代码防范(G3)

a)应安装防恶意代码软件,并及时更新防恶意代码软件版本和恶意代码库;

b)主机防恶意代码产品应具有与网络防恶意代码产品不同的恶意代码库;

c)应支持防恶意代码的统一管理。


资源控制(A3)

a)应通过设定终端接入方式、网络地址范围等条件限制终端登录;

1、查看/etc/securetty(使用SSH登录则查看/etc/ssh/sshd_config);
2、查看/etc/hosts.allow和/etc/hosts.deny文件内是否配置可访问的IP或通过询问、查看方式确认是否通过网络设备或硬件防火墙实现此项要求;
3、#service iptables status

b)应根据安全策略设置登录终端的操作超时锁定;

cat /etc/profile | grep TMOUT

c)应对重要服务器进行监视,包括监视服务器的CPU、硬盘、内存、网络等资源的使用情况;

d)应限制单个用户对系统资源的最大或最小使用限度;

1
2
3
4
5
6
7
8
9
10
11
12
cat /etc/security/limits.conf
#1、fsize 用户创建的文件大小限制;
#2、core 生成的core文件大小的限制;
#3、cpu 用户进程可用cpu的限定值;
#4、data 进程数据段大小的限定值;
#5、stack 进程堆栈短大小的限定值;
#6、rss 进程常驻内存段的限定值;
#7、nofiles 进程中打开文件的最大数量。

#1、fsize core cpu data rss stack nofiles都不能为-1;
#2、采取了实时资源监控措施,且当前资源足够,可以判定为符合;
#3、服务器上只运行了单一的应用,且该服务器各种资源的平均利用率较低。

*e)应能够对系统的服务水平降低到预先规定的最小值进行检测和报警。**


其他检查项

检查系统磁盘空间使用情况

当磁盘使用率超过85%可以认定磁盘使用率过高,可能会影响系统正常运行。

1
2
3
4
5
6
[root@localhost ~]# df -h
Filesystem 容量已用可用已用% 挂载点
/dev/sda1 6.9G 388M 6.2G 6% /
none 125M 0 125M 0% /dev/shm
/dev/sda3 6.0G 2.5G 3.2G 45% /usr
/dev/sda2 6.0G 121M 5.5G 3% /var

要求:

  1. 系统分区或者数据分区磁盘空间将近溢满,磁盘利用率超过90%,并且系统磁盘剩余空间不足以满足近期的业务需求。
  2. 系统分区或者数据分区磁盘空间将近溢满,磁盘利用率超过85%,并且系统磁盘剩余空间不足以满足近一段时间的业务需求。

检查登录旗标是否存在敏感信息

远程登录系统时,应提供文字界面,不要提供图形界面,察看登录界面是否
显示操作系统的版本及所提供的服务等信息。
可以执行以下命令:

1
2
cat /etc/issue
cat /etc/issue.net

登录界面不应该暴露操作系统以及做提供的服务等信息