Linux是指UNIX克隆或类UNIX风格的操作系统,在源代码级别兼容绝大部分UNIX标准(IEEE POSIX, System V, BSD),是一种支持多用户、多进程、多线程的实时性较好且功能强大而稳定的操作系统。
Linux服务器的等级测评主要涉及六个方面的内容,分别是
身份鉴别、访问控制、安全审计、入侵防范、恶意代码防范和可信验证
本文主要是前两块,身份鉴别和访问控制
安全要求:
对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定时更换
安全解读:
linux中/etc/login.defs是登录程序的配置文件(配置密码过期天数、密码长度约束等参数)
若/etc/pam.d/system-auth文件中有与/etc/login.defs相同的配置选项,以/etc/pam.d/system-auth为准
优先级:/etc/pam.d/system-auth > /etc/login.defs
linux中有调用PAM的应用程序认证用户,登录服务、屏保等功能
其中重要文件是
/etc/pam.d/system-auth(Redhat、CentOS、Fedora系统)
/etc/pam.d/common-passwd(Debian、Ubuntu、Linux Mint系统)
上面两个配置文件优先级高于其他
测评方法:
(1)访谈系统管理员,了解系统用户是否设置密码;核查登录过程中系统账户是否用密码进行登录
用有相应权限的用户身份登录操作系统,用more命令查看/etc/shadow文件,核查系统中是否存在空口令用户
(2)用more命令查看**/etc/login.defs文件,核查是否设置了密码长度和密码定期更换规则**;用more命令查看**/etc/pam.d/system-auth**文件,核查是否设置了密码长度和密码定期更换规则
(3)核查是否存在旁路或身份鉴别措施可绕过的安全风险(应该不存在)
预期结果(证据):
登录需要密码
不存在空口令
得到如下反馈
PASS_MAX_DAYS 90
PASS_MIN_DAYS 0
PASS_MIN_LEN 7
PASS_WARH_AGE 7 密码登录过期前7天提示
不存在可绕过的安全风险
安全要求:
有登录失败的处理功能,配置并启用 结束会话、限制非法登录次数、登录连接超时自动退出等相关措施
安全解读:
(1)Linux操作系统有调用PAM的应用程序认证。登录功能
(2)在Redhat5后 的版本,用pam_tally2.so模块控制用户密码认证失败的次数
(3)本地登录失败处理功能在**/etc/pam.d/system-auth 或 /etc/pam.d/login** 中配置
(4)SSH远程登录失败处理在**/etc/pam.d/sshd**文件中配置
测评方法:
(1)核查系统中是否配置启用登录失败处理功能
Root身份登录操作系统,
核查/etc/pam.d/system-auth 或 /etc/pam.d/login 中本地登录失败配置情况
(2)核查/etc/pam.d/sshd 中远程登录失败配置情况
(3)核查**/etc/profile** 文件中TIMEOUT环境变量是否配置了超时锁定参数
预期结果(证据):
(1)查看本地登录失败处理功能相关参数,
/etc/pam.d/system-auth或/etc/pam.d/login 文件中存在
"auth required pam_tally2.so onerr=fail deny=5 unlock_time=300 even_ deny_root root3mlock_time=10”。
(2)查看远程登录失败处理功能相关参数,/etc/pamdsshd文件中存在
"auth required pam_tally2.so onerr=fail deny=5 unlock_time=300 even_deny_root root_unlock_ time=10"
(3)/etc/pro£le文件中设置了超时锁定参数,例如在该文件中设置了 TMOUT=300s
安全要求:
远程管理时,采取措施防止鉴别信息在网络传输中被窃听
安全解读:
本地化管理不适用
测评方法:
(1)问系统管理员远程管理方式,root登录系统
查看是否运行sshd服务
Service -status-all | grep sshd
查看相关端口是否打开
netstat -an | grep 22
若未使用SSH远程管理,查看是否用Telnet协议进行远程管理
Service --status-all | grep running
(2)抓包工具查看协议是否加密
预期结果(证据):
(1)使用SSH协议进行远程管理(防止鉴别信息在传输过程中被窃听)
(2)Telnet协议 默认不符合此项。
(3)抓包工具截获的信息为密文,无法读取,协议为加密协议。
安全要求:
采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份 鉴别,且其中一种必须是密码技术
安全解读:
测评方法:
问管理员是否采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份 鉴别,核查其中一种必须是密码技术
预期结果(证据):
和上面类似
目的是保证系统资源被合法使用,用户不能越权只能使用自己权限访问系统资源
安全要求:
对登录的用户分配账户和权限
安全解读:
配置文件≤644
可执行文件≤755
测评方法:
用相应权限账户身份登录系统,用ls-l 文件名 查看重要文件和目录权限设置是否合理,ls -l /etc/passwd 显示744
644 -rw-r–r–
744 -rwxr–r–
预期结果(证据):
配置文件≤644
可执行文件≤755
安全要求:
重命名或删除默认账户,修改默认账户的默认口令
安全解读:
Linux中提供了很多账户,账户越多,越容易受到攻击
应删除 adm 、lp、 sync、 shutdown 、halt、 mail、 uucp、 operator、 games 、gopher 、ftp等
禁止root远程登录
测评方法:
(1)用相应权限身份登录系统,执行more命令查看/etc/shadow 中是否存在以上没用账户
(2)查看root账户能否远程登录(通常不能)
预期结果(证据):
不存在默认无用账号
将/etc/ssh/sshd_config
文件中的PermitRootLogin
参数设置为no
(PermitRootLoginno)表示不允许root远程登录
安全要求:
及时删除停用多余过期账户,避免共享账户存在
安全解读:
多余过期账户会影响审计中追踪定位自然人
测评方法:
核查是否存在多余账户,查看games、news、ftp、lp、等默认账户是否被禁用,特权账户halt、shatdown是否被删除
访谈管理员,核查不同的账户是否使用不同的账户登录系统
预期结果(证据):
禁用删除不需要的系统默认账户
各类管理员均使用自己特定权限账户登录,不存在多余过期账号
安全要求:
授予管理用户所需最小权限,实现管理用户权限分离
安全解读:
避免出现权限漏洞
在sudoer.conf
中使用sudo命令授予普通用户root权限
测评方法:
用相应权限身份登录系统,执行more命令,查看 /etc/passwd文件中的非默认用户,了解各用户的权限,核查是否实现了管理用户的权限分离。
用相应权限的账户身份登录Linux操作系统,执行more命令,查看 /etc/sudoers
文件,核查哪些用户拥有root权限。
预期结果(证据):
(1)各用户均仅具备最小权限,且不与其他用户的权限交叉。设备支持新建多用户角 色功能。
(2)管理员权限仅分配给root用户。
安全要求:
由授权主体(安全管理员)配置访问控制策略,访问控制策略规定主体对客体的访问规则。
安全解读:
由安全管理员进行配置
测评方法:
(1)问系统管理员,是否由指定授权人对操作系统访问控制权进行配置
(2)核查账户权限配置,了解是否一句安全策略配置各账户访问规则
预期结果(证据):
有专门安全员负责访问控制权限的授权工作
各账户权限基于安全员的安全策略配置进行访问控制
安全要求:
访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级。
安全解读:
重点目录的访问控制主体可•能为某个用户 或某个进程,应能够控制用户或进程对文件、数据库表等客体的访问。
测评方法:
(1)使用“ls -l 文件名”命令查看重要文件和目录权限的设置是否合理
(例如“# ls -l /etc/passwd #744”)。
(2)重点核查文件和目录权限是否被修改过。
预期结果(证据):
(1)管理用户进行用户访问权限的分配
(2)用户依据访问控制策略对各类文件和数据库表进行访问
(3)重要文件和目录的权限在合理范围内
(4)用户根据自身拥有的对文件不同权限操作
安全要求:
对重要主体和客体设置安全标记,并控制主体对有安全标记信息资源的访问。
安全解读:
通过对重要信息资源设置敏感标记,可以决定主体以何种权限对客体进行操作,实现强制访问控制
安全增强型Linux(SELinux)是一个Linux内核模块,在其中决定资源能否被访问的因素:用户权限、每一类进程对某一类资源的访问权限
这种权限管理机制的主体是进程(强制访问控制)
SElLinux中,主体=进程,客体是主体访问的资源(文件、目录、端口、设备)
SELinux三种工作模式
enforcing强制模式,违反SELinux规则的行为,被阻止并记录
到日志中
permissive宽容模式,违反规则,记录
到日志
disabled关闭SELinux,不使用SELinux
测评方法:
(1 )核查系统中是否有敏感信息。
(2)核查是否为主体用户或进程划分级别并设置敏感标记,是否在客体文件中设置敏感标记。
(3 )测试验证是否依据主体和客体的安全标记来控制主体对客体访问的强制访问控制策略。
(4)相应权限身份登录Linux操作系统,使用more命令查看 /etc/selinux/config 文件中 SELinux 的参数。
预期结果(证据):
Linux服务器默认关闭SELinux服务