赞
踩
Linux系统三级测评
一、身份鉴别
a)应对登录操作系统和数据库系统的用户进行身份标识和鉴别;
cat /etc/shadow cat /etc/passwd 查看shadow文件中第二字段是否不为空;(备注:部分系统实际密码均存放在/etc/shadow文件中,是否为空口令还需查看/etc/shadow文件);
find /-name ".rhosts" cat /etc/hosts.equiv 这两个文件都是和主机之间的信任关系相关,也就是允许另外一台机器上的用户不输入密码就可以rlogin到本机;(备注:若实际查看中,若是.rhosts文件和/etc/hosts.equiv文件中的用户和主机是需要的,则可认为符合);
主要安全问题:数据库MySQL登录不需要身份标识和鉴别,my.cnf中设置了skip-grant-tables,导致可以跳过鉴别授权直接登录。
b)操作系统和数据库系统管理用户身份标识应具有不易被冒用的特点,口令应有复杂度要求并定期更换;
cat /etc/login.defs | grep PASS 查看密码策略设置
1、密码最长有效期 PASS_MAX_DAYS:90 #登录密码有效期90天(99999:永久有期);
2、密码最短存留期 PASS_MIN_DAYS:2 #登录密码最短修改时间,增加可以防止非法用户短期更改多次;
3、密码长度最小值 PASS_MIN_LENS:8 #登录密码最小长度8位(但是使用pam_cracklib.so模块后,该参数不再有效);
4、密码有效期警告 PASS_WARN_AGE:7 #登录密码过期提前7天提示修改;
5、FAIL_DELAY:10 #登录错误时等待时间10秒;
6、FAILLOG_ENAB:yes #登录错误记录到日志;
7、SYSLOG_SU_ENAB:yes #当限定超级用户管理日志时使用;
8、SYSLOG_SG_ENAB:yes #当限定超级用户组管理日志时使用;
9、MD5_CRYPT_ENAB:yes #当使用MD5为密码的加密方法时使用;
chage -l root 查看用户的密码规则
[root@gsaxns ~]# chage -l root
Last password change : Apr 12, 2018 (上次口令更改时间)
Password expires : never (密码到期时间)
Password inactive : never (密码无效)
Account expires : never (账户到期时间)
Minimum number of days between password change : 0 (密码更改之间的最小天数)
Maximum number of days between password change : 99999 (密码更改之间的最长天数)
Number of days of warning before password expires : 7 (密码过期前的警告天数)
cat /etc/pam.d/system-auth |grep pam_cracklib 查看密码复杂度要求
1、password requisite pam_cracklib.so try_first_pass retry=3 type=XX minlen=8 ucredit=-2 lcredit=-2 dcredit=-1 ocredit=-1;
2、password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=5
retry=3 #定义登录/修改密码失败时,可以重试的次数;
type=xxx #当添加/修改密码时,系统给出的缺省提示符是什么,用来修改缺省的密码提示文本。默认是不修改的,如上例。
minlen=8 #最小密码长度;
ucredit=-1 #密码必须包含大写字母个数(1个);
lcredit=-2 #密码必须包含小写字母个数(2个);
dcredit=-1 #密码必须包含的数字字符个数(1个);
ocredit=-1 #密码必须包含的特殊字符号个数(1个);
remember=5 #修改用户密码时最近5次用过的旧密码就不能重用了;
注:(数字为负数,表示至少有多少个大写/小写字母/数字/特殊符号;数字为正数,表示至多有多少个大写/小写字母/数字/特殊符号);
主要安全问题:操作系统未配置口令策略且XXX用户口令为弱口令;
c)应启用登录失败处理功能,可采取结束会话、限制非法登录次数和自动退出等措施;
cat /etc/pam.d/system-auth | grep pam_tally 通过查看pam_tally.so模块跟踪不成功登录次数
1、auth required pam_tally[2].so onerr=fail deny=X unlock_time=300 even_deny_root root_unlock_time=10
deny=X #登录失败X次,即可锁定该账户;
even_deny_root #也限制root用户
root_unlock_time #设定root用户锁定后,多少时间后解锁,单位是秒;
unlock_time=300 #登录失败X次,锁定300秒;(解锁用户:faillog -u -r)
no_magic_root #连root用户也在限制范围,不给root特殊权限。
reset #模块对成功的实体,应复位到0
主要安全问题:服务器系统用户未开启登录失败锁定设置;
操作系统root账号未实现登录失败处理,违反安全策略,只有在/etc/pam.d/system-auth中设置even_deny_root unlock_time=600后才对root用户生效。
d)当对服务器进行远程管理时,应采取必要措施,防止鉴别信息在网络传输过程中被窃听;
rpm -qa | grep telnet/ftp 查看是否安装了telnet/ftp包
netstat -an 或lsof -i:21/22/23 或netstat -tunlp | grep 21/22/23 查询端口号的运行状态
21端口:FTP文件传输协议(控制)
22端口:SSH远程登录协议
23端口:telnet(终端仿真协议),木马Tiny Telnet Server开放此端口
pstree 查看当前系统进程数
e)应为操作系统和数据库系统的不同用户分配不同的用户名,确保用户名具有唯一性;
cat /etc/shadow cat /etc/passwd 查看操作系统和数据库系统不同的用户是否具有不同的用户名,用户名是否唯一
二、访问控制
a)应启用访问控制功能,依据安全策略控制用户对资源的访问;
ls -l /etc/passwd /etc/shadow /etc/xinetd.conf /etc/sudoers 查看其权限是否过大,例如777权限;
主要安全问题:服务器操作系统的关键系统配置文件/etc/passwd、/etc/shadow、/etc/xinetd.conf、/etc/sudoers等权限均为777,权限过大,违反安全策略。
e)应及时删除多余的、过期的帐户,避免共享帐户的存在;
cat /etc/shadow 对多余帐户进行删除、锁定或禁止其登录如:uucp、nuucp、lp、adm、sync、shutdown、halt、news、operator、gopher用户;(已锁定帐户其所在行第一个和第二个冒号之间的口令字段为“!!或*”)
三、安全审计
a)审计范围应覆盖到服务器和重要客户端上的每个操作系统用户和数据库用户;
service rsyslog status 检查系统日志功能 service auditd status 检查系统审计功能
auditd进程主要记录安全信息及对系统安全事件进行追溯,rsyslog进程用于记录系统中的各种信息(例如硬件报警信息和软件日志。Linux 在安全审计配置文件 /etc/audit/audit.rules中配置安全时间审计规则)
chkconfig --list | grep syslog 查看当前的日志在系统运行级别中的状态
runlevel 运行级别
b)审计内容应包括重要用户行为、系统资源的异常使用和重要系统命令的使用等系统内重要的安全相关事件;
cat /etc/rsyslog.conf | grep info 查看是否存在*.info;mail.none;authpriv.none;cron.none /var/log/messages(若此处是IP地址则为日志服务器的地址)
cat /etc/audit/auditd.conf 查看审计服务日志和性能等相关的配置
log_file:审计日志文件的位置
num_logs:审计日志文件的数量
max_log_file:审计日志文件的容量
max_log_file_action:当审计日志文件超过容量大小时候的操作,这里是rotate,会循环原来的日志文件
cat /etc/audit/audit.rules 查看审计的规则配置文件
auditctl -s 查看audit运行状态
auditctl -l 查看audit规则
[root@gsaxns audit]# auditctl -l
LIST_RULES: exit,always watch=/etc/passwd perm=rwxa
LIST_RULES: exit,always watch=/etc/shadow perm=rwxa
LIST_RULES: exit,always watch=/etc/xinetd.conf perm=rwxa
-w 监控文件路径 /etc/passwd,
-p 监控文件筛选 r(读) w(写) x(执行) a(属性改变)
-k 筛选字符串,用于查询监控日志
-S 监控系统调用
-F 给出更多监控条件(pid/path/egid/euid等)
a 属性
备注:配置此规则方法:vim /etc/audit/audit.rules
-w /etc/passwd -p rwxa
-w /etc/shadow -p rwxa
-w /etc/xinetd.conf -p rwxa
wq!
service auditd restart
注:LIST_RULES(监听规则): exit,always watch(监控文件路径)=/etc/hosts perm(监控文件筛选)=rwa key(关键字)=hosts-file(文件名称)。
主要安全问题:操作系统审计的重要用户行为不全面,audit.rules中设置了对/etc/passwd文件的访问审计-w /etc/passwd -p rwxa,但未对/etc/shadow、/etc/xinetd.conf等文件的读、写、执行产生审计日志,违反安全策略。
c)审计记录应包括事件的日期、时间、类型、主体标识、客体标识和结果等;
service --status-all 查看当前系统中所有运行的服务;
1、查看Linux系统中是否安装了相关的服务;
2、查看网络中其他的策略;
主要安全问题:操作系统NTP服务虽然已开启,但未配置NTP服务器地址指向系统中的NTP服务器,违反安全策略。
d)应能够根据记录数据进行分析,并生成审计报表;
1、查看网络中的审计设备能否对系统中的所有数据进行分析并生成审计报表;
e)应保护审计进程,避免受到未预期的中断;
1、查看网络中是否有其他的审计设备;
f)应保护审计记录,避免受到未预期的删除、修改或覆盖等。
1、ls -l /var/log/messages; ls -l /var/log/secure; ls -l /var/log/audit/audit.log; 查看日志信息所在文件的访问权限(推荐为640);
主要安全问题:服务器操作系统中普通用户也能查看和修改message等关键审计日志文件,能够导致审计记录遭未逾期修改和删除。
日志仅保存在本地,无日志服务器。
2、cat /etc/rsyslog.conf 查看网络中是否有日志服务器;
*.info;mail.none;authpriv.none;cron.none /var/log/messages(此处会变化为:@192.168.XXX.XXX)
四、入侵防范
a)应能够检测到对重要服务器进行入侵的行为,能够记录入侵的源IP、攻击的类型、攻击的目的、攻击的时间,并在发生严重入侵事件时提供报警;
1、查看系统中是否装有ClamAV、ClamTk、ChkrootKit、RookKit猎人、Comodo反病毒Linux版(CAVL)、Sophos For Linux、BitDefender For Unices、F-PROT对于Linux等杀毒软件;
b)应能够对重要程序的完整性进行检测,并在检测到完整性受到破坏后具有恢复的措施;
find / -name tripwire/crontab 查看Linux系统中是否安装了完整性保护软件
cat /etc/crontab 查看此文件中配置的完整性检测规则以及策略
crontab -l 列出目前的所有规则和策略
例:40 5 * * * usr/sbin/tripwire(存放路径)--check >> /var/log/tripwire.log 在每天的 5:40 将 Tripwire 的报告发到/var/log/tripwire.log
00 10 * * * su /home/tripwire/sbin/tripwire --check|mail -s "tripwire report" example@xiaomi.com
0 1 * * * tripwire -m c|mail -s "Tripwire Daily Report from {$HOSTNAME}" mailaddress
将tripwire -m c命令写入了crontab任务中,让系统定时对文件系统进行检查,在每天的第一分钟对系统进行检查,并发送到指定的root邮箱当中。
30 3 * * * /usr/sbin/tripwire --check | mail -s "Tripwire report for `uname -n`" your_email@domain.com 让tripwire在每天上午3:30运行
-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
主要安全问题:操作系统安装了完整性检查组件tripwire,也在/etc/crontab(系统级)中配置了定时检查策略0 11 * * * root /usr/sbin/tripwire –check >> /var/log/tripwire.log,单tripwire配置存在异常,无法在每天上午11点正常对系统服务器/usr/sbin/中重要程序的完整性进行检测,违反安全策略。
备注:在此查看时采用crontab -l命令查看不到策略时须在/etc/crontab文件中进行查看;
c)操作系统应遵循最小安装的原则,仅安装需要的组件和应用程序,并通过设置升级服务器等方式保持系统补丁及时得到更新。
uname -a cat /etc/centos-release cat /proc/version cat /etc/redhat-release lsb_release -a(输入此命令的前提是安装了lsb_release)
查看操作系统的版本号
rpm -q redhat-release 查看是否安装了最新的补丁程序
service --status-all 查看系统运行的服务 (备注:关闭了危险服务,如echo,login,shell等;关闭了非必要的服务,如talk、ntalk、sendmail等)
netstat -an-all 查询开启的端口号
netstat -nupl (UDP类型的端口)
netstat -ntpl (TCP类型的端口)
备注:sqlserver默认端口号为:1433 mysql 默认端口号为:3306 oracle 默认端口号为:1521
主要安全问题:服务器开启了多余的23端口,违反安全策略。
操作系统开启了多余的TCP端口25,违反安全策略。
五、恶意代码防护
a)应安装防恶意代码软件,并及时更新防恶意代码软件版本和恶意代码库;
cat /etc/crontab 查看相关的配置
查看系统中是否装有ClamAV、ClamTk、ChkrootKit、RookKit猎人、Comodo反病毒Linux版(CAVL)、Sophos For Linux、BitDefender For Unices、F-PROT对于Linux等杀毒软件;
主要全问题:操作系统安装了防恶意代码软件Clamav,且/etc/crontab(系统级配置)中设置定时任务在每天10点进行扫描,但其未对所发现的恶意代码(phpspy.php)进行及时清除,且未及时更新防恶意代码软件版本和恶意代码库,违反安全策略。
六、资源控制
a)应通过设定终端接入方式、网络地址范围等条件限制终端登录;
cat /etc/hosts.allow cat /etc/hosts.deny 查看可访问的网络地址范围
1、编辑:#vim /etc/hosts.allow
添加:sshd:192.168.10.0/255.255.255.0(表示仅允许192.168.10.0网段采用ssh远程登录)
编辑:#vi /etc/hosts.deny
添加:sshd:ALL(表示拒绝除192.168.10.1之外的所有IP地址ssh登录)
2、查看确认是否通过网络设备或硬件防火墙实现此项要求;
cat /etc/securetty 查看每个登录帐户的ttys 参数(tty尽量少,/etc/securetty中存在console项);
cat /etc/ssh/sshd_config | grep Root 查看登录用户的tty数
MaxAuthTries 6 最大尝试登陆次数
MaxSessions 10 最大连接数
PermitRootLogin no 不允许root远程登录
注:1、PermitRootLogin项是否已被注释;2、若PermitRootLogin yes 和 PermitRootLogin no 键值同时存在,位置靠前的是有效的配置(顺序执行);
service iptables status systemctl | grep firewalld 查看防火墙开启状态
iptables -L 查看现有防火墙所有策略
防火墙策略说明:INPUT指的是从外面(可以是互联网、其他主机)进到自己电脑的信息,都从INPUT策略经过,
OUTPUT正相反,指从自己主机出去,访问(互联网、其他主机)的信息,从这条策略经过;
FORWARD转向策略,假如A电脑想要访问C电脑,必须要经过B电脑,那在FORWARD中加入一条转向策略,将访问的方向转向C。
括号中policy的默认策略全部都是默认同意的,如果将ACCEPT(同意)改为DROP(终止),则不管是进来的信息,还是想要出去访问的信息,都将会被拒绝掉。
-p 协议(protocol)-s 源地址(source)-d 目的地址(destination)-j 执行目标(jump to target)-i 输入接口(input interface)-o 输出(out interface)-A chain – 指定要追加规则的链 firewall-rule – 具体的规则参数
例:iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT 接收目标端口为22的数据包
iptables -A INPUT -j DROP 拒绝所有其他数据包
主要安全问题:服务器未通过终端接入方式、网络地址范围等条件限制终端登录。
MySQL允许root用户远程从任意地址连接进行管理,违反安全策略。
操作系统未通过hosts.allow、hosts.deny等限制终端登录的网络地址范围;
数据库MySQL允许cmsadmin用户远程从任意地址(Host值为%)连接进行管理,违反安全策略。
b)应根据安全策略设置登录终端的操作超时锁定;
cat /etc/profile | grep TMOUT 查看是否存在export TMOUT=XX设置(查看登录终端的超时时间锁定,推荐值600s);
c)应对重要服务器进行监视,包括监视服务器的CPU、硬盘、内存、网络等资源的使用情况;
常见的监控软件以及命令有:Nagios、top – 进程活动监控命令、vmstat – 虚拟内存统计、w – 找出登录的用户以及他们在做什么、uptime – Linux 系统运行了多久、ps – 显示系统进程、free – 内存使用情况、iostat – CPU 平均负载和磁盘活动、sar – 监控、收集和汇报系统活动
、mpstat – 监控多处理器的使用情况、pmap – 监控进程的内存使用情况、netstat – Linux 网络统计监控工具、ss – 网络统计、iptraf – 获取实时网络统计信息、tcpdump – 详细的网络流量分析、iotop – I/O 监控 iotop 命令利用 Linux 内核监控 I/O 使用情况,它按进程或线程的顺序显示 I/O 使用情况
htop – 交互式的进程查看器、atop – 高级版系统与进程监控工具、ac 和 lastcomm、monit – 进程监控器、NetHogs – 找出占用带宽的进程、iftop – 显示主机上网络接口的带宽使用情况、vnstat – 基于控制台的网络流量监控工具、nmon – Linux 系统管理员的调优和基准测量工具
glances – 密切关注 Linux 系统、strace – 查看系统调用、/proc 文件系统 – 各种内核信息、Nagios – Linux 服务器和网络监控、Cacti – 基于 Web 的 Linux 监控工具、KDE 系统监控器 – 实时系统报告和图形化显示、GNOME 系统监控器
d)应限制单个用户对系统资源的最大或最小使用限度;
cat /etc/security/limits.conf 查看其中是否设置了用户进程优先级priority参数。
username|@groupname:设置需要被限制的用户名,组名前面加@和用户名区别。
core 0:表示禁止创建core文件;
nproc 20:把最多的进程数限制到20;
rss 5000:表示除了root之外,其他用户最多只能用5MB内存
*:表示的是所有登录到系统中的用户。
soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。
注:上面所有的设置只对登录到系统中的用户有效。
1、fsize 用户创建的文件大小限制; 2、core 生成的core文件大小的限制; 3、cpu 用户进程可用cpu的限定值; 4、data 进程数据段大小的限定值;
5、stack 进程堆栈段大小的限定值; 6、rss 进程常驻内存段的限定值; 7、nofiles 进程中打开文件的最大数量。
type:有 soft,hard 和 -,soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。soft 的限制不能比har 限制高。用 - 就表明同时设置了 soft 和 hard 的值。
注意:要使limits.conf配置文件生效,必须要确保pam_limits.so 文件被加入到启动文件中,
查看etc/pam.d/login文件中是否有:session required /lib/security/pam_limits.so #将配置文件加入到登录验证模块中(启动模块)
设置需要被限制的用户名,组名前面加@和用户名区别。
e)应能够对系统的服务水平降低到预先规定的最小值进行检测和报警。
1、查看当前系统中安装的监控软件是否能够设置阈值以及报警。
CNAS能力验证2016至2017年Linux测评试题对比
a)应对登录操作系统和数据库系统的用户进行身份标识和鉴别;(2017年试题)
主要安全问题:数据库MySQL登录不需要身份标识和鉴别,my.cnf中设置了skip-grant-tables,导致可以跳过鉴别授权直接登录。
b)操作系统和数据库系统管理用户身份标识应具有不易被冒用的特点,口令应有复杂度要求并定期更换;(2016年试题)
主要安全问题:操作系统未配置口令策略且XXX用户口令为弱口令;
c)应启用登录失败处理功能,可采取结束会话、限制非法登录次数和自动退出等措施;(2016、2017年试题)
主要安全问题:服务器系统用户未开启登录失败锁定设置;
操作系统root账号未实现登录失败处理,违反安全策略,只有在/etc/pam.d/system-auth中设置even_deny_root unlock_time=600后才对root用户生效。
d)当对服务器进行远程管理时,应采取必要措施,防止鉴别信息在网络传输过程中被窃听;(2016、2017年试题,无问题)
e)应为操作系统和数据库系统的不同用户分配不同的用户名,确保用户名具有唯一性;
f)应采用两种或两种以上组合的鉴别技术对管理用户进行身份鉴别。
a)应启用访问控制功能,依据安全策略控制用户对资源的访问;(2016、2017年试题)
主要安全问题:服务器操作系统的关键系统配置文件/etc/passwd、/etc/shadow、/etc/xinetd.conf、/etc/sudoers等权限均为777,权限过大,违反安全策略。
b)应根据管理用户的角色分配权限,实现管理用户的权限分离,仅授予管理用户所需的最小权限;
c)应实现操作系统和数据库系统特权用户的权限分离;
d)应严格限制默认帐户的访问权限,重命名系统默认帐户,修改这些帐户的默认口令;
e)应及时删除多余的、过期的帐户,避免共享帐户的存在;(2016、2017年试题,无问题)
f)应对重要信息资源设置敏感标记;
g)应依据安全策略严格控制用户对有敏感标记重要信息资源的操作。
a)审计范围应覆盖到服务器和重要客户端上的每个操作系统用户和数据库用户;
b)审计内容应包括重要用户行为、系统资源的异常使用和重要系统命令的使用等系统内重要的安全相关事件;(2017年试题)
主要安全问题:操作系统审计的重要用户行为不全面,audit.rules中设置了对/etc/passwd文件的访问审计-w /etc/passwd -p rwxa,但未对/etc/shadow、/etc/xinetd.conf等文件的读、写、执行产生审计日志,违反安全策略。
c)审计记录应包括事件的日期、时间、类型、主体标识、客体标识和结果等;(2017年试题)
主要安全问题:操作系统NTP服务虽然已开启,但未配置NTP服务器地址指向系统中的NTP服务器,违反安全策略。
d)应能够根据记录数据进行分析,并生成审计报表;
e)应保护审计进程,避免受到未预期的中断;
f)应保护审计记录,避免受到未预期的删除、修改或覆盖等。(2016、2017年试题)
主要安全问题:服务器操作系统中普通用户也能查看和修改message等关键审计日志文件,能够导致审计记录遭未逾期修改和删除。
日志仅保存在本地,无日志服务器。
a)应保证操作系统和数据库系统用户的鉴别信息所在的存储空间,被释放或再分配给其他用户前得到完全清除,无论这些信息是存放在硬盘上还是在内存中;
b)应确保系统内的文件、目录和数据库记录等资源所在的存储空间,被释放或重新分配给其他用户前得到完全清除。
a)应能够检测到对重要服务器进行入侵的行为,能够记录入侵的源IP、攻击的类型、攻击的目的、攻击的时间,并在发生严重入侵事件时提供报警;
b)应能够对重要程序的完整性进行检测,并在检测到完整性受到破坏后具有恢复的措施;(2017年试题)
主要安全问题:操作系统安装了完整性检查组件tripwire,也在/etc/crontab(系统级)中配置了定时检查策略0 11 * * * root /usr/sbin/tripwire –check >> /var/log/tripwire.log,单tripwire配置存在异常,无法在每天上午11点正常对系统服务器/usr/sbin/中重要程序的完整性进行检测,违反安全策略。
c)操作系统应遵循最小安装的原则,仅安装需要的组件和应用程序,并通过设置升级服务器等方式保持系统补丁及时得到更新。(2016、2017年试题)
主要安全问题:服务器开启了多余的23端口,违反安全策略。
操作系统开启了多余的TCP端口25,违反安全策略。
a)应安装防恶意代码软件,并及时更新防恶意代码软件版本和恶意代码库;(2017年试题)
主要全问题:操作系统安装了防恶意代码软件Clamav,且/etc/crontab(系统级配置)中设置定时任务在每天10点进行扫描,但其未对所发现的恶意代码(phpspy.php)进行及时清除,且未及时更新防恶意代码软件版本和恶意代码库,违反安全策略。
b)主机防恶意代码产品应具有与网络防恶意代码产品不同的恶意代码库;
c)应支持防恶意代码的统一管理。
a)应通过设定终端接入方式、网络地址范围等条件限制终端登录;(2016、2017年试题)
主要安全问题:服务器未通过终端接入方式、网络地址范围等条件限制终端登录。
MySQL允许root用户远程从任意地址连接进行管理,违反安全策略。
操作系统未通过hosts.allow、hosts.deny等限制终端登录的网络地址范围;
数据库MySQL允许cmsadmin用户远程从任意地址(Host值为%)连接进行管理,违反安全策略。
b)应根据安全策略设置登录终端的操作超时锁定;(2016年试题,无问题)
c)应对重要服务器进行监视,包括监视服务器的CPU、硬盘、内存、网络等资源的使用情况;(2016年试题,无问题)
d)应限制单个用户对系统资源的最大或最小使用限度;
e)应能够对系统的服务水平降低到预先规定的最小值进行检测和报警。
2019能力验证
去年应该是由于疫情的原因,没有举办能力验证。笔者有幸参加了2019能力验证,这里就聊一聊自己的一些感悟和他们出题的考察点吧。
这边看一下官方给出的概述
二、测评能力验证内容
2019年能力验证分3个考察内容:
1.测评对象和测评指标选取
2. 配置检查
3. 渗透测试
一般3个人一组进行能力验证,上午测评方面,下午渗透方面。我这边是测评方面,做的是配置核查,这里就写一下我当时的测评情况。
2.1 样品系统环境
本次能力验证配置检查所用样品系统环境由 1 台 Linux 服务器、 1 台 Windows服务器、 1 台 NTP 服务器组成。
2.2 拓扑图结构
2.3 测评对象范围及配置说明
2.4 配置检查内容
针对模拟系统中的 Windows 和 Linux 服务器操作系统, 开展安全计算环境(操作系统)方面的配置检查和验证测试 。这里我就以Linux系统为代表,针对本次考察内容来聊一聊。
首先,先看一下我们最终要提交的配置检查结果报告单。
上面“注意事项”中,明确表明了测评记录要详实足够支撑结果判定。下面就看看具体操作系统中配置是如何的,将违反条款标准或安全策略的点要写清楚。我这里就不一一描述结果记录该怎么写了,这里主要讨论该条款中的得分点,答出它预设的问题点才算得分,其余的内容其实不算得分点。
1)身份鉴别
a) 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;
根据这条条款,我们首先要从安全计算环境安全策略中找到关键的策略。
这条它规定了需要启用密码复杂度要求、密码长度要求最少8位,最长使用期限为30天。预设问题很可能就在这条安全策略中。
所以我们先要去/etc/pam.d/system-auth 文件下查看是否配置复杂度策略,密码复杂度要求,在/etc/shadow文件下查看当前用户的口令最长使用期限,在/etc/login.defs文件下去查看后续新增账户口令最长有效期PASS_MAX_DAYS。
最终我查询的结果是口令复杂度未配置,当前用户口令最长使用期限不对,PASS_MAX_DAYS值为30,同时在/etc/login.defs目录下查看PASS_MIN_LEN值为6。
我们再对照能力验证计划总结报告里面的预设测评要点进行分析:
很明显这个预设点的问题应该是让你知道PASS_MIN_LEN这个为6的参数其实是不生效的,如果不知道这个参数是什么意思的,可以去看看这里的文章,我感觉应该是你答出了这个就算有得分了。
b) 应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施;
同理我们先看安全策略,这里涉及到的内容有两条
所以针对本地登录和SSH登录,我们需要去查看两个文件,分别为:
/etc/pam.d/system-auth
/etc/pam.d/sshd
去看这两个文件下是否配置了登录失败处理功能;然后是否有设置TMOUT值。
我的查询结果为:已在/etc/sshd文件下配置auth required pam_tally2.so deny=5 unlock_time=600,本地登录情况没有配置登录失败处理功能。已在/etc/profile文件中设置TMOUT=600,且当前环境已生效。
通过上面结果,可能有人就下结论了,说未限制root账户的远程登录失败处理功能,但要看仔细,root账户已经被禁止SSH登录了,所以就要体现这一点。需要在结果记录中补充说明,已在/etc/ssh/sshd_config文件下配置:PermitRootLogin no
这里的预设问题就是要你答出本地和SSH远程登录的登录失败处理功能配置,然后需要强调说明root账户已禁止SSH远程登录,所以针对sshd文件下的root的锁定参数无需配置。
c) 当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听。
这一条没啥好说的,Linux系统采用SSH,符合
这题主要预设点为Windows系统的,那里开启了telnet服务,要求组策略中配置如下:远程(RDP)连接要求使用指定的安全层:SSL(TLS 1.0),设置客户端连接加密级别:高级别。这里就不细说了。
2)访问控制
d) 应及时删除或停用多余的、过期的账户,避免共享账户的存在;
先看安全策略
查看/etc/passwd文件/etc/shadow文件,发现存在多余test账户
这和预设问题点一样,可以看出这道基本送分,9成以上都回答出来了
e) 应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则。
安全策略:
这里有两点,第一点我认为是UID为0的账户仅为root,而且sudoers文件里面没有用户可以修改其他用户权限的命令存在。像命令那行,有用户存在ALL这样的肯定是不符合的。
第二点,仅sysadmin和sysauditor登录后可su账户,去查看这个控制点。具体我忘记了,好像是设置了wheel组的su权限,这两个账户隶属于wheel组,我具体也测试过,仅这两个账户可su root成功。因为原始记录丢了,记不太清了。。。
然后我们看看这里的预设问题点:
可以看出得分率很低,而且我也不确定我的回答是否正确,有知道的大佬可以留言告诉我。
3)安全审计
a) 应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计;
安全策略:
这里很明显,我们先正常检查syslog、audit服务是否正常运行,auditctl -s查看内核状态enabled值是否为1,这些都正常后,就去查看audit审计的具体规则了。
这里查看/etc/audit/audit.rules,也可以使用auditctl -l查看规则,查询结果为:
-w /etc/passwd -p rxa
-w /etc/shadow -p rxa
-w /etc/xinetd.conf -p rxa
很明显这里考察的就是你对audit审计规则配置的理解了,这里少了对“写”行为的审计,所以提出该点得分。
这里的得分率也是还可以的
b) 审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息。
安全策略:
所以这一条主要考察的就是ntp服务是否正常启用。
这里通过service ntpd status查看,发现为停止状态,然后查看ntp.conf文件,也未配置对应的service地址,同时该台为centos 6.x的机子,没有chronyd服务,所以只要看ntp即可。
预设问题也是一致的,查看ntp服务的启动状态。
4)入侵防范
a) 应遵循最小安装的原则,仅安装需要的组件和应用程序;
安全策略:
针对Linux来说他这边预设点就是去查看蓝牙组件是否禁用
这道我没做出来,我不清楚查看这个的命令是啥,百度也么找到,ps -ef服务进程之类的找过,没有发现blue关键字的进程之类的,有知道的大佬告告我。反正结果记录我是直接写未启用蓝牙组件。
预设问题也是一样的,就是查这个蓝牙组件。
b) 应关闭不需要的系统服务、默认共享和高危端口;
安全策略:
这里要求只查看tcp端口,直接netstat -tlnp即可,查看tcp哪些端口在进行监听,很多人可能只想到了这一步(我当时也是只查看了这个),但是看预设问题看起来留坑了。我们先来看下预设问题:
说明这里可能在防火墙的地方给你留坑了?而且得分率也比较低。
我猜测这里应该是还要使用 iptables -L -n查看对应防火墙规则。因为结果我当时的查询情况来看,监听的TCP端口仅有22、80,但是有可能防火墙有拒绝的规则,导致22(这个不可能,因为我们远程上去了)或者80(没有测试连通性)端口没有放通?暂时猜测是这样的,因为无从考证了。。
c) 应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制。
安全策略:
这里很明显叫你去查看是否仅这三个地址能远程访问服务器。一般我们在/etc/hosts.allow、/etc/hosts.deny中查看是否有相应参数,我觉得他这里很刁钻,我们先看看我当时看到的这两个文件下的配置:
hosts.deny
文件配置:ssh:all:deny
host.allow
文件配置:ssh:10.1.1.101,10.1.1.102,10.1.1.103:allow
是不是觉得好像没问题?因为给我们分配的地址也是这三个,所以能上去很正常。我第一眼也没发现有什么问题,但是我可能用了点小聪明,我把地址改成了104,发现还是能上,那么问题就来了,配置肯定哪里配置错了。再仔细看一眼,他配置为ssh,正确的应该是sshd,所以你指出这个错误就能得分了。
预设问题点也是如出一辙,为配置的正确性:
5)恶意代码防范
应采用免受恶意代码攻击的技术措施或主动免疫可信验证机制及时识别入侵和病毒行为,并将其有效阻断。
安全策略:
这里Linux服务器能力验证这块一般安装的都是clamav,他也不会考你运维的问题,比如安装错误,或者命令有问题什么的,所以你只要能看懂计划任务就行了。这里我们去/etc/crontab和crontab -l查看下是否有相应的计划任务。当时的查询结果为:0 10* root /usr/bin/clamscan -r /var/www/html -l /var/log/clamav/clamscan.log 但是我们别忘了另外一点,你crond这个服务没启动,这个计划任务是不生效的,所以经查看crond服务处于停止状态,这个就是不符合的点。
预设问题点:
6)数据保密性
b) 应采用密码技术保证重要数据在存储过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等。
安全策略:发现没有Linux的,让你自己去找。
这里我之前只考虑到了鉴别数据,正常情况下,Linux用户口令保存在/etc/shadow文件夹中,每行的第二节即为加密后的password字段,根据$类别,该版本采用MD5+salt的方式存储其用户口令,这里鉴别数据我就下了符合结论。重要业务数据之类的也不晓得看啥,反正直接cat也都能看,就下了个不符合的结论。
但是,后来和别人沟通,他们说Linux系统根目录下,有一个叫运维管理密码之类的文件,打开来里面存储的是明文的用户名和口令,所以找到这个问题,可能才是得分点。这个肯定是敏感文件,需要加密存储。我记得Windows查的时候是有个压缩包,需要压缩密码的。
预设问题点:
7)剩余信息保护
a) 应保证鉴别信息所在的存储空间被释放或重新分配前得到完全清除。
这条条款安全策略中没有进行说明,说明要自己去寻找答案。但是我认为这个应该是针对Windows系统来说的,当时Windows系统里面给了你一个mimikatz软件,并给了使用说明,一步步操作下来发现能抓取存储在内存中的用户口令。但Linux可能技术有限,我当时也不清楚这个点该怎么查,直接下的不符合结论,估计也不计入得分点吧。
后来我去网上查询资料,Linux系统可以通过mimipenguin这个软件,对Linux系统的用户的鉴别数据进行获取,所以也不清楚当时会不会给你配了这个环境?讲道理没这么复杂,先看看预设问题点吧。
预设问题点:很明显,他这里没有说Linux的相关问题,应该是主要考察你对Windows系统鉴别信息存储空间是否得到完全清除的的验证情况。
总结:
总体来说,我还是很幸运的代表公司参加了这一场能力验证,对自己知识认知、提高都有很大帮助。另外,由于笔者材料保管不善,当时的Windows截图,Linux会话日志保存在原来电脑,换了台电脑忘记将这个文档备份了,所以导致原材料丢失了……目前仅凭当时的记忆来复现了,针对于Windows系统的有点复杂,不太好搞,所以就目前仅聊聊Linux的配置情况吧,以后有机会能再次参加,再进行一下分享。同时,欢迎有想法的小伙伴们,对于能力验证技术方面的问题进行沟通,如有不正确的及时指正。
总之,等保也是一个成长的过程,能力验证也几乎代表了等保公司的测评水平,随着时代发展,万万不能落下对技术能力的提升啊~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。