Linux主机测评

安全计算环境

一.身份鉴别

a)应对登录的用户进行身份标识和身份鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换(此项部分符合)

在root权限下查看有关用户的配置文件

1)通过etc/password检查身份标识,看是否有没有uid重复的用户

2)通过etc/shadow来识别用户是否有密码

/etc/shadow配置文件参数详解

用户名:密码:密码最近改动的天数,密码不可改动的天数:密码需要重新变更的天数:密码需要变更前提示时间:密码过期宽限时间:账号失效时间:保留

3)通过/etc/login.defs来识别身份鉴别信息定期更换

在root权限下查看/etc/login.defs文件中相关配置参数,/etc/shadow的权限比/etc/login.defs优先级高

# Please note that the parameters in this configuration file control the
# behavior of the tools from the shadow-utils component. None of these
# tools uses the PAM mechanism, and the utilities that use PAM (such as the
# passwd command) should therefore be configured elsewhere. Refer to
# /etc/pam.d/system-auth for more information.
#
​
# *REQUIRED*
#   Directory where mailboxes reside, _or_ name of file, relative to the
#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
#   QMAIL_DIR is for Qmail
#
#QMAIL_DIR      Maildir
MAIL_DIR        /var/spool/mail   创建用户时,要在目录/vat/spool/mail中创建一个用户mail文件
#MAIL_FILE      .mail
​
# Password aging controls:
#
#       PASS_MAX_DAYS   Maximum number of days a password may be used.
#       PASS_MIN_DAYS   Minimum number of days allowed between password changes.
#       PASS_MIN_LEN    Minimum acceptable password length.
#       PASS_WARN_AGE   Number of days warning given before a password expires.
#
PASS_MAX_DAYS   99999      密码最大有效期,通常要求是90天
PASS_MIN_DAYS   0          俩次密码修改最小时间间隔
PASS_MIN_LEN    5          密码最小位数,对root无效,通常要求是7位
PASS_WARN_AGE   7          密码过期前多少天开始提示,通常要求是前7天
​
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN                  1000    最小UID
UID_MAX                 60000    最大UID
# System accounts
SYS_UID_MIN               201    
SYS_UID_MAX               999
​
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN                  1000    组id最少范围
GID_MAX                 60000    组id最大范围
# System accounts
SYS_GID_MIN               201
SYS_GID_MAX               999
​
#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD    /usr/sbin/userdel_local  删除用户要执行的脚本
​
#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME     yes   创建用户时创建用户目录
​
# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK           077  创建用户的初始值
​
# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes  使userdel能够在不存在成员的情况下删除用户组
​
# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512   密码加密模式
​

4)通过查看/etc/pam.d/system-auth来确认密码复杂性

查看是否符合密码健壮性要求

查看password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
#密码健壮性策略 
retry=3:重复修改次数,如果未达到密码强度要求,可以重新设置,避免重头再来
difok:=3:允许新旧密码相同的个数 
minlen=7:最小密码长度 
ucredir=-1:至少有一个大写字母
lcredit=-3:至少有一个大写字母 
dcredit=-3:至少有三个数字

加固

1)修改创建新用户的登录密码生效期限(/etc/login.def)

2)修改登录控制文件修改密码时候的策略(/etc/pam.d/system.auth)

b) 应具有登录失败处理功能,应配置并启用结束会话,限制非法登录次数和当登录连接时自动退出

1) 查看密码设置及登陆控制的文件 /etc/pam.d/system-auth

查看是否符合具有登录失败处理功能

在auth模块的第一行插入auth required pam-tally2.so onerr=fail deny=3 unlock_time=40 event_deny_root root_unlock_time=40
onerr表示登录失败
deny表示连续登录失败次数
unlock_time=40表示锁定40s 
event_deny_root:表示限制root用户
root_unlock_time=40:限制root用户登录时间40s

查看/etc/profile的TMOUT的参数查看超时锁定参数

cat /etc/profile | grep TMOUT -n
在/etc/profile中最后一行添加export TMOUT=300

auth 组件:认证接口,要求并验证密码 account组件:检测是否允许访问。检测账户是否过期或则在末端时间内能否登陆。 password组件:设置并验证密码 session组件:配置和管理用户sesison

参数状态

required:该模块必须success才能进行继续。即使失败用户也不会立刻获知,直到所有相关模块完成。 requisite:该模块必须success才能使认证继续进行。 suffifient:如果失败则忽略。 optinal:忽略结果,不管是否失败。

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so    
#登录后的环境变量
auth        required      pam_faildelay.so delay=2000000
auth        sufficient    pam_unix.so nullok try_first_pass
#验证用户密码的有效性。如果使用nullok参数,用户不输入密码就可以获得系统提供的服务。同时,也允许用户密码为
#空时更改用户密码。
#try_first_pass尝试在提示用户输入密码前,使用前面一个堆叠的auth模块提供的密码认证用户。sufficient表示#如果该模块执行成功则跳过其他所有模块返回结果。
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
#允许uid大于1000的用户在通过密码验证的情况下登录。
auth        required      pam_deny.so
#对所有不满足上述任意条件的登录请求直接拒绝
​
account     required      pam_unix.so
#主要执行建立用户帐号和密码状态的任务,然后执行提示用户修改密码,用户采用新密码后才提供服务之类的任务。
account     sufficient    pam_localuser.so
#要求将用户列于 /etc/passwd 中
account     sufficient    pam_succeed_if.so uid < 1000 quiet
#对用户的登录条件做一些限制,表示允许uid大于1000的用户在通过密码验证的情况下登录
account     required      pam_permit.so
#required表示一个错误则全返回错误,只不过最后返回错误
​
password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
#密码健壮性策略 retry=3:重复修改次数,如果未达到密码强度要求,可以重新设置,避免重头再来 deny=3:连续登录失败次数 difok:=3:允许新旧密码相同的个数 minlen=7:最小密码长度 ucredir=-1:至少有一个大写字母 lcredit=-3:至少有一个大写字母 dcredit=-3:至少有三个数字
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
#让用户更改密码的任务
password    required      pam_deny.so
​
session     optional      pam_keyinit.so revoke
#表示当用户登录的时候为其建立相应的密钥环,并在用户登出的时候予以撤销。
session     required      pam_limits.so
#限制用户登录时的会话连接资源,相关pam_limit.so配置文件是/etc/security/limits.conf,默认情况下对每个登录用户都没有限制。
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
#success=1时执行本行。default=ignore用来设置上面的返回值是无法达的行为时,那么这个模块的返回值将被忽略,不会被应用程序知道。对用户的登录条件做一些限制
session     required      pam_unix.so
#记录用户名和服务名到日志文件的工作,只不过最后返回错误

 

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

查找相应服务比如RFB、RDP、Telnet和SSH这些

查看系统服务是否使用了ssh服务或者telnet服务

1)ps -aux | grep 【RFB|RDP|Telnet|SSH】

ps -aux参数

USER用户名
PID进程ID(Process ID)
%CPU进程的cpu占用率
%MEM进程的内存占用率
VSZ进程所使用的虚存的大小(Virtual Size)
RSS进程使用的驻留集大小或者是实际内存的大小,Kbytes字节
TTY与进程关联的终端(tty)
STAT进程的状态
TIME进程使用的总cpu时间
COMMAND正在执行的命令行命令名称和参数

2)systemctl status |grep 【RFB|RDP|Telnet|SSH】

d)应采用口令,密码技术,生物技术等俩种或俩种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现

1)通过访谈去确认,看是否同时采用了密码和令牌技术

二.访问控制

a)应对登录的用户分配账户和权限

1)查看/etc/passwd文件权限,看普通用户权限是否和root用户一样,由下图可以看出root的用户的权限是读和写,而普通用户的权限是读,其他用户权限也是读

b)应重命名或删除默认账号,修改默认账户的默认口令

1)查看/etc/shadow文件发现存在默认账户root,root已经更换了默认口令,部分符合

2)查看root用户是否能远程登录,通过查看/etc/ssh/sshd_config的permitrootlogin来判断,应该让其不能直接通过root用户远程登录

加固

1)修改/etc/ssh/sshd_config的permitrootlogin的参数拒绝以root用户身份远程登录(一般情况下为了方便管理员是不会设置的)

c)应及时删除或停用多余,过期的账户,避免共享账户的存在

1)由b)所查shadow文件知道,存在过期的账户,!!表示已过期,*表示账户被锁定,!表示被禁用

2)要通过访谈管理员是否设置安全管理员,系统管理员,审计管理员,是否是通过一个账户来登录的

整改方案

usermod -L 用户名:将用户锁定
usermod -U 用户名,将用户解锁

d)应授予管理用户所需的最少权限,实现管理用户权限分离(部分满足)

1)查看root用户权限是否授予了其他用户,通过查看/etc/sudoers来识别

e)应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则

1)询问是否有专门的安全管理员负责对访问控制权限的工作,是否基于安全管理员的安全策略配置来进行访问控制

答:该系统并没有设置专门的安全管理员,且没有根据安全管理员的安全策略配置来进行访问控制,不符合

f)访问控制的粒度应达到主体为用户级或进程级,客体为文件,数据表级

符合

g)应对重要主体和客体设置安全标记,并控制主体对有安全标记信息资源的访问(不符合)

要明确系统中是否存在敏感信息,比如shadow和passwd文件,在主体用户或进程划分级别并设置敏感标记,在客体文件设置敏感标记,测试是否依据主体客体安全标记控制主体对客体访问的强制访问控制策略

查看selinux,seLinux是linux系统的内核,也是linux安全子系统模块

1)cat /etc/selinux/config

enforcing强制访问模式,作用是违反selinux规则的行为将被阻止,并记录在日志中

​
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled   linux默认是关闭的,应该将系统开启,也就是调到enforcing模式
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

2)ls -Z /etc/passwd

-rw-r--r--. root root system_u:object_r:passwd_file_t:s0 /etc/passwd
system_u表示登录用户的类型,是系统方面的,user_u表示是普通用户的
object_r:为角色定义文件进程和用户的用途,object_r表示文件或目录资源,system_r表示进程
passwd_file_t:指定数据类型
s0:为限制访问的需要,一般最少为三级

三.安全审计

a)应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计(符合)

以root用户登录系统查看服务进程,如果运行了安全审计服务,查看安全审计的守护进程是否正常

linux系统中有audited审计工具,一般是默认安装的

查看audited状态

auditctl -s

enabled 1     #0代表未开启,1代表开启,可以记录日志,2代表审计规则被锁定不能修改升级规则,当enable状态为1,但守护进程未开启,审计记录会保存在/var/log/messages
failure 1
pid 682
rate_limit 0
backlog_limit 8192
lost 0
backlog 0
loginuid_immutable 0 unlocked

查看auditctl的守护进程

service auditd status

systemctl status auditd

查看日志记录

aureport -i

b)审计记录包括事件的日期和时间,用户,事件类型,事件是否成功及其他审计相关信息(符合)

查看audited日志内容

type=PROCTITLE msg=audit(1569155811.890:194): proctitle=2F7573722F7362696E2F6970367461626C65732D726573746F7265002D77002D6E
type=SERVICE_STOP msg=audit(1569155822.099:195): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=NetworkManager-dispatcher comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
type=SERVICE_START msg=audit(1569156003.407:196): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=NetworkManager-dispatcher comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
type=SERVICE_STOP msg=audit(1569156014.546:197): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=NetworkManager-dispatcher comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
type=NETFILTER_CFG msg=audit(1569156228.344:198): table=filter family=2 entries=82
type=SYSCALL msg=audit(1569156228.344:198): arch=c000003e syscall=54 success=yes exit=0 a0=4 a1=0 a2=40 a3=77a0e0 items=0 ppid=720 pid=1612 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="iptables-restor" exe="/usr/sbin/xtables-multi" subj=system_u:system_r:iptables_t:s0 key=(null)
type=PROCTITLE msg=audit(1569156228.344:198): 

c)应对审计记录进行保护,定期备份,避免受到未预期的删除,修改和覆盖(部分符合)

询问管理员,审计记录的存储,备份,保护措施,是否将操作系统日志定期发送到日志服务器上

日志的保护通过查看日志的权限来判断,另一方面查看日志存储规则

查看日志存储规则

cat /etc/audit/auditd.conf

#
# This file controls the configuration of the audit daemon
#
​
local_events = yes
write_logs = yes
log_file = /var/log/audit/audit.log
log_group = root
log_format = RAW
flush = INCREMENTAL_ASYNC
freq = 50
max_log_file = 8
num_logs = 5
priority_boost = 4
disp_qos = lossy
dispatcher = /sbin/audispd
name_format = NONE
##name = mydomain
max_log_file_action = ROTATE
space_left = 75
space_left_action = SYSLOG
verify_email = yes
action_mail_acct = root
admin_space_left = 50
admin_space_left_action = SUSPEND
disk_full_action = SUSPEND
disk_error_action = SUSPEND
use_libwrap = yes
##tcp_listen_port = 60
tcp_listen_queue = 5
tcp_max_per_addr = 1
##tcp_client_ports = 1024-65535
tcp_client_max_idle = 0
enable_krb5 = no
krb5_principal = auditd
##krb5_key_file = /etc/audit/audit.key
distribute_network = no

d)应对审计进程进行保护,防止未授权的中断(部分符合)

切换成普通用户,看普通用户是否能将auditd进程中断,结果失败

四.入侵防范

a)应遵循最小安装的原则,仅安装需要的组件和应用程序

b)应关闭不需要的系统服务,默认共享和高危端口

查看所有服务

systemctl list -units -all --type=service

查看所有端口

netstat -anp

查看默认共享

rpm -qi samba

c)应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制

主要就是限制远程端口连接的ip,比如ssh服务,一般可以用防火墙或者hosts.allow或者hosts.deny,或者通过ssh配置文件config文件来判断

查看防火墙,发现未开启

加固

1)设置白名单,允许某些ip接入

2)在hosts.denyz中在拒绝所有人访问

d)应提供数据有效性检验功能,保证通过人机接口输入或通过通信接口输入的内容符合系统设定要求

不适用

e)应能够发现可能存在的已知漏洞,并在经过充分测试评估后,及时修补漏洞

检查甲方自查的漏扫报告,或者是通过第三方检查的漏洞报告有没有高风险漏洞检查补丁安装的情况,补丁更新的机制和流程

rpm -qa grep patch

f)应能够检测到对重要节点进行入侵的行为,并在发生严重入侵事件时提供报警

询问是否安装入侵检测系统,检测系统的配置情况是否具有报警功能

五.恶意代码防范

应采用免受恶意代码攻击技术措施或主动免疫可信验证机制及时识别入侵和病毒行为,并将其有效阻断

检测是否有IDS,IPS系统,是否有火绒,360,卡巴斯基等软件,但市面上大部分防护软件没有linux版本,卡巴斯基只提供小部分防护功能

六.可信验证

不符合

七.数据完整性

a)应采用校验技术或密码技术保证重要数据在传输过程中的完整性,包括但不限于鉴别数据,重要业务数据,重要审计数据,重要配置数据,重要视频数据和重要个人信息

此项不适用,应用系统或数据库软件适用

b)应采用校验技术或密码技术保证重要数据在存储过程中的完整性,包括但不限于鉴别数据,重要业务数据,重要审计数据,重要配置数据,重要视频数据和重要个人信息

linux默认是符合的,例如/etc/shadow文件中的密码项,是采用加密后再保存的

八.数据保密性

a)应采用密码技术保证重要数据在传输过程中的保密性,包括但不限于鉴别数据,重要业务数据和重要个人信息等

此项不适用,应用系统或数据库软件适用

b)应采用密码技术保证重要数据在存储过程中的保密性,包括但不限于鉴别数据,重要业务数据和重要个人信息等

linux默认是符合的,例如/etc/shadow文件中的密码项,是采用加密后再保存的

九.数据备份与恢复

a)应提供重要数据的本地数据备份与恢复功能

b)应提供异地实时备份功能,利用通信网络将重要数据实时备份至备份场地

c)应提供重要数据处理系统的热冗余,保证系统的高可用性

十.剩余信息保护

a)应保证鉴别信息所在存储空间被释放或重新分配前得到完全清除

linux默认是符合的

b)应保存有敏感数据的存储空间被释放或重新分配前得到完全清除

linux默认是符合的

十一.个人信息保护

linux服务器不适用此项

a)应仅采集和保存业务必需的用户个人信息

b)应禁止未授权访问和非法使用用户个人信息

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值