01-系统安全加固-Linux¶
检查是否存在空密码的帐户¶
配置项描述 | 检查是否存在空密码的帐户,非法用户可通过该账户直接登录系统,威胁系统安全。 |
---|---|
操作步骤 | 1、执行:# awk -F: '( $2 == "" ) { print $1 }' /etc/shadow2、为帐户设置满足密码复杂度的密码:#passwd username。 |
检测方法 | 执行:# awk -F: '( $2 == "" ) { print $1 }' /etc/shadow返回值应为空。 |
删除与设备运行、维护等工作无关的账号¶
配置项描述 | 删除或锁定与设备运行、维护等工作无关的账号。 |
---|---|
操作步骤 | 1、 参考配置操作 删除用户:#userdel username; 锁定用户: 1)修改/etc/shadow 文件,用户名后加*LK* 2)将/etc/passwd 文件中的 shell 域设置成/bin/false 3)#passwd -l username 只有具备超级用户权限的使用者方可使用,#passwd -l username 锁定用户,用#passwd –d username 解锁后原有密码失效,登录需输入新密码,修改/etc/shadow 能保留原有密码。 2、 补充操作说明需要锁定的用户:listen,gdm,webservd,nobody,nobody4、noaccess。注:无关的账号主要指测试帐户、共享帐号、长期不用账号(半年以上未用)等 |
检测方法 | *1*、被删除或锁定的账号无法登录成功;2、检测操作使用删除或锁定的与工作无关的账号登录系统;3、需要锁定的用户:listen,gdm,webservd,nobody,nobody4、noaccess |
检查除root之外的UID为0的用户¶
配置项描述 | 检查是否存在除root之外UID为0的用户 |
---|---|
操作步骤 | 删除除root外的UID为0的用户:#userdel username |
检测方法 | 执行:# awk -F: '($3 == 0) { print $1 }' /etc/passwd返回值应只有root |
设置口令策略满足复杂度要求¶
配置项描述 | 设置口令策略满足复杂度要求和口令生存周期,确保口令具有足够的复杂性,可抵抗穷举攻击 |
---|---|
操作步骤 | 1、执行备份:#cp -p /etc/login.defs /etc/login.defs_bak#cp -p /etc/pam.d/system-auth /etc/pam.d/system-anth2、修改策略设置:#vi /etc/login.defs修改PASS_MAX_DAYS为90、PASS_MIN_LEN为8、PASS_MIN_DAYS为1、PASS_WARN_AGE为7#vi /etc/pam.d/system-auth修改或新增行:password requisite pam_cracklib.so difok=3 dcredit=-1 lcredit=-1 ucredit=-1 credit=-1注释:PASS_MAX_DAYS 90 #密码最长过期天数 PASS_MIN_DAYS 1 #密码最小过期天数 PASS_MIN_LEN 8 #密码最小长度 PASS_WARN_AGE 7 #密码过期警告天数 difok=N:新密码必需与旧密码不同的位数;dcredit=N: N >= 0:密码中最多有多少个数字;N < 0 密码中最少有 多少个数字;lcredit=N 小写字母的个数;ucredit=N 大写字母的个数;credit=N 特殊字母的个数; |
检查方法 | 1、执行:#more /etc/login.defs检查PASS_MAX_DAYS、 PASS_MIN_LEN、PASS_MIN_DAYS、PASS_WARN_AGE参数#more /etc/ pam.d/system-auth检查:password requisite pam_cracklib.so difok=3 dcredit=-1 lcredit=-1 ucredit=-1 credit=-1 |
检查文件与目录缺省权限¶
配置项描述 | 系统umask设置,规范用户对目录和文件的操作 |
---|---|
操作步骤 | 修改umask设置:#vi /etc/profile将umask值修改为027,保存退出 |
检测方法 | 执行:# more /etc/profile 检查系统umask值 |
检查用户最小授权¶
配置项描述 | 检查用户是否是最小授权 |
---|---|
操作步骤 | Chmod 400 /etc/shadowChmod 644 /etc/groupChmod 644 /etc/passwd |
检查方法 | 检查文件权限ll /etc/shadowll /etc/groupll /etc/passwd |
检查root目录权限是否为700¶
配置项描述 | 检查root目录权限是否为700,保证仅有系统管理员拥有对其的访问控制权限。 |
---|---|
操作步骤 | 设置700权限:#chown root:root /root #chmod 700 /root |
检查方法 | 执行:#ls –lad /root查看/root权限 |
查看字符交互界面超时退出¶
配置项描述 | 检查字符交互界面超时时间 |
---|---|
操作步骤 | 1 执行备份:#cp -p /etc/profile /etc/profile_bak2 在/etc/profile文件增加以下两行:#vi /etc/profileTMOUT=300export TMOUT改变这项设置后,重新登录才能有效备注:增加 TMOUT=300(单位:秒,可根据具体情况设定超时退出时间,要求不小于300秒),注销用户,再用该用户登录激活该功能 |
检查方法 | 1 执行:#more /etc/profile | grep –i TMOUT |
配置SYSLOG¶
配置项描述 | 日志功能设置,记录系统日志及应用日志 |
---|---|
操作步骤 | 1、修改配置:#vi /etc/rsyslog.conf配置形如*.err;kern.debug;daemon.notice; /var/log/messages的语句,保存退出*.err;kern.debug;daemon.notice; /var/log/messagescron.* /var/log/cronauthpriv.* /var/log/secure 2、重启syslog服务#/etc/init.d/rsyslog stop#/etc/init.d/rsyslog start |
检测方法 | 执行:#more /etc/rsyslog.conf存在类似如下语句:.err;kern.debug;daemon.notice; /var/log/messagescron. /var/log/cronauthpriv.* /var/log/secure |
设置日志服务器¶
配置项描述 | 设备配置远程日志功能,将需要重点关注的日志内容传输到日志服务器。 |
---|---|
操作步骤 | 1、修改配置:#vi /etc/rsyslog.conf加上这一行: . @192.168.0.1可以将"."替换为你实际需要的日志信息。比如:kern.* / mail.* 等等。192.168.0.1修改为实际的日志服务器。*.*和@之间为一个Tab。2、重启syslog服务#/etc/init.d/rsyslog stop#/etc/init.d/rsyslog start |
检测方法 | 执行:#more /etc/rsyslog.conf存在类似如下语句:. @192.168.0.1 |
远程登录取消telnet采用ssh¶
配置项描述 | 远程登录取消telnet,采用ssh。telnet缺少对口令和用户名的有效保护措施,所有数据采用明文传输方式,存在较大安全隐患,ssh采用加密方式保护用户数据,数据内容和用户信息更为安全。 |
---|---|
操作步骤 | 关闭telent开启ssh:1、备份#cp -p /etc/xinetd.d/telnet /etc/xinetd.d/telnet_bak2、编辑#vi /etc/xinetd.d/telnet文件,把disable项改为yes,即disable = yes 然后运行services xinetd restart,telnet就可以关闭掉了3、安装ssh软件包,通过#/etc/init.d/sshd start来启动SSH。 |
检测方法 | 查看SSH、telnet服务状态:# netstat –an|grep 22# netstat –an|grep 23SSH服务状态查看结果为:有LISTEN状态记录;telnet服务状态查看结果为:无LISTEN状态记录。 |
限制具备root权限的用户远程ssh登录¶
配置项描述 | 远程执行管理员权限操作,应先以普通权限用户远程登录后,再切 换到超级管理员权限账号后执行相应操作。 |
---|---|
操作步骤 | 1、参考配置操作: 编辑/etc/passwd,帐号信息的 shell 为/sbin/nologin 的为禁止远程登录,如要允许,则改成可以登录的 shell 即可,如/bin/bash2、补充操作说明:如果限制 root 从远程 ssh 登录,修改/etc/ssh/sshd_config 文件,将 PermitRootLogin yes改为PermitRootLogin no,重启sshd 服务。 |
检测方法 | 1、判定条件: root 远程登录不成功,提示“没有权限” ; 普通用户可以登录成功,而且可以切换到 root用户;2、检测操作:root 从远程使用 telnet 登录; 普通用户从远程使用 telnet 登录; root 从远程使用 ssh 登录; 普通用户从远程使用 ssh登录;3、补充说明:限制 root 从远程 ssh 登录,修改/etc/ssh/sshd_config 文件,将 PermitRootLogin yes改为PermitRootLogin no,重启sshd 服务。 |
禁止任何人su到root,添加wheel组用户¶
配置项描述 | 使用PAM禁止任何人su为root |
---|---|
操作步骤 | 1、编辑su文件(vi /etc/pam.d/su),在开头添加下面行:auth required pam_wheel.so group=wheel2、补充操作说明:上述添加表明只有whell组的成员可以使用su命令成为root用户。可以把有需求的用户添加到whell组,以使它可以使用su命令成为root用户。添加方法:#usermod –G wheel username |
检测方法 | 查看/etc/pam.d/su是否存在以下行:auth required pam_wheel.so group=wheel |
检查登录尝试失败后锁定用户帐户¶
配置项描述 | 配置当用户连续认证失败次数超过6次(不含6次),锁定该用户使用的账号。注意仅对自然人使用的帐号做此限制。 |
---|---|
操作步骤 | 修改策略设置:#vi /etc/pam.d/system-auth 增加:auth required pam_tally2.so deny=6 unlock_time=300 even_deny_root root_unlock_time=30(添加在第二行)保存退出。 |
检查方法 | 执行:#/etc /pam.d/system-auth检查是否存在:auth required pam_tally2.so deny=6 unlock_time=300 even_deny_root root_unlock_time=30(在第二行) |
检查ssh端口¶
配置项描述 | 隐藏ssh信息 |
---|---|
操作步骤 | Vi /etc/ssh/sshd_config 修改 Port 22 修改成其他端口,迷惑非法试探者 例:Linux下SSH默认的端口是22,为了安全考虑,现修改SSH的端口为1433,修改方法如下 :/usr/sbin/sshd -p 1433 |
检查方法 | Cat /etc/ssh/sshd_config 判断 port 字段 |
删除潜在危险文件¶
配置项描述 | 检查帐户目录中是否存在.netrc/.rhosts文件,该文件通常会被系统或进程自动加载并执行,对系统带来安全隐患 |
---|---|
操作步骤 | 删除.netrc/.rhosts文件#rm -f filename |
检测方法 | 执行:# find / -name .netrc# find / -name .rhosts返回值应为空 |
禁止root登录FTP¶
配置项描述 | 禁止root登陆FTP |
---|---|
操作步骤 | 参考配置操作: 在ftpaccess文件中加入下列行 root |
检测方法 | 使用 root 帐号登录 ftp 会被拒绝 |
禁止匿名FTP¶
配置项描述 | 禁止匿名FTP |
---|---|
操作步骤 | 参考配置操作: 以 vsftpd 为例: 打开vsftd.conf文件,修改下列行为: anonymous_enable=NO |
检测方法 | 匿名账户不能登录 |
系统Banner设置¶
配置项描述 | 修改系统 banner,避免泄漏操作系统名称,版本号,主机名称等, 并且给出登陆告警信息 |
---|---|
操作步骤 | 删除“/etc”目录下的isue.net和issue文件:#mv /etc/issue /etc/issue.bak#mv /etc/issue.net /etc/issue.net.bak |
检测方法 | 查看“/etc”目录下是否存在isue.net和issue文件 |
关闭不必要的服务、端口¶
*服务名称* | *端口* | *应用说明* | *关闭方法* | *处置建议* |
---|---|---|---|---|
daytime | 13/tcp | RFC867 白天协议 | chkconfig daytime off | 建议关闭 |
13/udp | RFC867 白天协议 | chkconfig daytime off | ||
time | 37/tcp | 时间协议 | chkconfig time off | |
37/udp | 时间协议 | chkconfig time-udp off | ||
echo | 7/tcp | RFC862_回声协议 | chkconfig echo off | |
7/udp | RFC862_回声协议 | chkconfig echo-udp off | ||
discard | 9/tcp | RFC863 废除协议 | chkconfig discard off | |
9/udp | chkconfig discard-udp off | |||
chargen | 19/tcp | RFC864 字符产生协议 | chkconfig chargen off | |
19/udp | chkconfig chargen-udp off | |||
ftp | 21/tcp | 文件传输协议(控制) | chkconfig gssftp off | 根据情况选择开放 |
telnet | 23/tcp | 虚拟终端协议 | chkconfig krb5-telnet off | 根据情况选择开放 |
sendmail | 25/tcp | 简单邮件发送协议 | chkconfig sendmail off | 建议关闭 |
nameserver | 53/udp | 域名服务 | chkconfig named off | 根据情况选择开放 |
53/tcp | 域名服务 | chkconfig named off | 根据情况选择开放 | |
apache | 80/tcp | HTTP 万维网发布 | chkconfig httpd off | 根据情况选 |
服务 | 择开放 | |||
login | 513/tcp | 远程登录 | chkconfig login off | 根据情况选择开放 |
shell | 514/tcp | 远程命令, no passwd used | chkconfig shell off | 根据情况选择开放 |
exec | 512/tcp | remote execution, passwd required | chkconfig exec off | 根据情况选择开放 |
ntalk | 518/udp | new talk, conversation | chkconfig ntalk off | 建议关闭 |
ident | 113/tcp | auth | chkconfig ident off | 建议关闭 |
printer | 515/tcp | 远程打印缓存 | chkconfig printer off | 强烈建议关闭 |
bootps | 67/udp | 引导协议服务端 | chkconfig bootps off | 建议关闭 |
68/udp | 引导协议客户端 | chkconfig bootps off | 建议关闭 | |
tftp | 69/udp | 普通文件传输协议 | chkconfig tftp off | 强烈建议关闭 |
kshell | 544/tcp | Kerberos remote shell -kfall | chkconfig kshell off | 建议关闭 |
klogin | 543/tcp | Kerberos rlogin -kfall | chkconfig klogin off | 建议关闭 |
portmap | 111/tcp | 端口映射 | chkconfig portmap off | 根据情况选择开放 |
snmp | 161/udp | 简单网络管理协议(Agent) | chkconfig snmp off | 根据情况选择开放 |
snmp trap | 161/tcp | 简单网络管理协议(Agent) | chkconfig snmp off | 根据情况选择开放 |
snmp-trap | 162/udp | 简单网络管理协议(Traps) | chkconfig snmptrap off | 根据情况选择开放 |
syslogd | 514/udp | 系统日志服务 | chkconfig syslog off | 建议保留 |
lpd | 515/tcp | 远程打印缓存 | chkconfig lpd off | 强烈建议关闭 |
nfs | 2049/tcp | NFS 远程文件系统 | chkconfig nfs off | 强烈建议关闭 |
2049/udp | NFS 远程文件系统 | chkconfig nfs off | 强烈建议关闭 | |
nfs.lock | 动态端口 | rpc 服务 | chkconfig nfslock off | 强烈建议关闭 |
ypbind | 动态端口 | rpc 服务 | chkconfig ypbind off | 强烈建议关闭 |
更新最新稳定版本os补丁¶
要求内容 | 在保证业务网络稳定运行的前提下,安装 新的 OS 补丁。补丁在安装前需要测试确定。 |
---|---|
操作指南 | 1、 参考配置操作 看版本是否为 新版本。 执行下列命令,查看版本及大补丁号。 #uname –a 2、 补充操作说明 |
检测方法 | 1、 判定条件 看版本是否为 新版本。 # uname –a 查看版本及大补丁号 RedHat Linux:http://www.redhat.com/support/errata/ Slackware Linux:ftp://ftp.slackware.com/pub/slackware/ SuSE Linux:http://www.suse.com/us/support/security/index.html TurboLinux:http://www.turbolinux.com/security/ 2、 检测操作 在系统安装时建议只安装基本的 OS 部份,其余的软件包则以必要为原则,非必需的包就不装。 3、 补充说明 |