Linux账户风险和安全策略
1、 身份鉴别-特权用户排查
[root@ansible ~]# awk -F: '($3 == 0){print $1}' /etc/passwd #不能包含root以外的UID为0的用户
【注】一般服务器被黑,黑客都会在服务器上创建一个高权限的账号,用于保证自己在服务器上的主导权。
2、身份鉴别-账号密码生命周期
对于采用静态口令认证的服务器,账户密码生命周期应小于90,且拒绝弱口令以及空口令。
使用more/etc/login.defs检查相关参数,建议以下设置:PASS_MAX_DAYS 90 #新建用户的密码最长使用天数
[root@ansible ~]# vim /etc/login.defs # 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 90 PASS_MIN_DAYS 0 # 新建用户的密码最短使用天数 PASS_WARN_AGE 7 # 新建用户的密码到期提前提醒天数
3、身份鉴别-密码强度
对于采用静态口令认证技术的设备,口令长度至少8位,并包括数字、小写字母、大写字母和特殊符号4类中至少2类。
[root@ansible ~]# vim /etc/pam.d/system-auth password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= #密码8位以上,含有至少1个大写字母、1个小写字母、1个数字 password requisite pam_cracklib.so retry=3 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password required pam_deny.so password requisite pam_cracklib.so difok=3 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1
difok 新密码与旧密码不同的个数
minlen 至少8位
ucredit 包含一位大写字母
lcredit 包含一位小写字母
dcredit 包含一位数字
4、身份鉴别-用户锁定
对于采用静态口令认证技术的设备,应配置当用户连续认证失败次数超过10次,锁定该用户使用的帐号。设置连续输错10次密码,帐号锁定5分钟,使用命令
[root@ansible ~]# vim /etc/pam.d/system-auth auth required pam_env.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth required pam_deny.so auth required pam_tally.so onerr=fail deny=10 unlock_time=300
注:解锁用户faillog -u <用户名> -r
5、访问控制-umask安全配置
检查umask的值是否是027:vim /etc/login.defs
[root@ansible ~]# vim /etc/login.defs # The permission mask is initialized to this value. If not specified, # the permission mask will be initialized to 022. UMASK 077 [root@ansible ~]# umask 0022
umask的作用: 默认情况下的umask值是022(用umask命令查看)。
此时你建立的文件默认权限是644(6-0,6-2,6-2),建立的文件夹的默认权限是755(7-0,7-2,7-2)
022表示默认创建新文件夹权限为755也就是rxwr-xr-x(所有者全部权限,属组读写,其它人读写)
027表示默认创建新文件夹权限为750也就是rxwr-x---(所有者全部权限,属组读写,其它人无)
6、访问控制-重要目录权限
执行以下命令检查目录和文件的权限设置情况:
ls -l /etc/ ls -l /etc/rc.d/init.d/ ls -l /tmp ls -l /etc/inetd.conf ls -l /etc/passwd ls -l /etc/shadow ls -l /etc/group ls -l /etc/security ls -l /etc/services ls -l /etc/rc*.d
#对于重要目录,建议执行如下类似操作:
chmod -R 750 /etc/rc.d/init.d/*
【注】这样只有root可以读、写和执行这个目录下的脚本。
7. 访问控制-查看未授权的SGID/SUID
(1)SUID/SGID的程序在运行时,将有效用户ID改变为该程序的所有者(组)ID。因而可能存在一定的安全隐患,经常性的对比SUID/SGID文件列表,以便能够及时发现可疑的后门程序。
(2)找出系统中所有含S“位的程序,把不必要的"S“位去掉或者把根本不用的直接删除,这样可以防止用户滥用及提升权限的可能性,其命令如下:
查找SUID可执行程序
[root@ansible ~]# find / -type f -perm -4000 -ls
查找SGID程序
[root@ansible ~]# find / -type f -perm -2000 -ls
查找SUID/SGID/或者两个都有
[root@ansible ~]# find / -type f -perm -6000 -ls
8、安全审计-syslog登录事件记录
必须要记录所有的登录事件,执行vim /etc/rsyslog.conf,查看是否有以下配置
[root@ansible ~]# vim /etc/rsyslog.conf kern.warning;*.err;authpriv.none\t@loghost *.info;mail.none;authpriv.none;cron.none\t@loghost *.emerg\t@loghost local7.*\t@loghost
解读:
第一行:内核所有日志
第二行:记录所有日志info级别,及大于info级别记录到message里面,但是邮件、验证信息和cron任务相关的信息除外。
第三行:所有大于或等于emerg级别信息以word方式发送给每个登录系统的人。
第四行:启动相关信息。
【注】既可以记录到本地文件中,也可以通过网络发送或接收其他服务器syslog日志,可以对多台设备syslog进行统一存储。
9、安全审计-设置history时间戳
在问题定位时,我们有时需要查看history命令记录,看是否有删除/移动文件、修改配置等误操作为history命令添上时间记录,可便于分析、定位问题。修改方法如下:
[root@ansible ~]# vim /etc/profile export HISTTIMEFORMAT="%F%T 'whoami'" source/etc/profile
10. 资源控制-登录超时
使用命令“vim /etc/profile”修改配置文件,添加"TMOUT="行开头的注释,建议设置为“TMOUT=180",即超时时间为3分钟。
[root@ansible ~]# vim /etc/profile TMOUT=180
11、资源控制-限制登录
(1)禁止ROOT用户远程登陆
[root@ansible ~]# cat /etc/ssh/sshd_config
确保PERMITROOTLOGIN为NO
(2)限定信任主机
# CAT /ETC/HOSTS.EQUIV # CAT /$HOME/.RHOSTS
查看上述两个文件中的主机,删除其中不必要的主机,防止存在多余的信任主机或直接关闭所有R系列远程服务
RLOGIN
RSH
REXEC
(3)禁用TELNET,使用SSH进行管理
[root@ansible ~]# service sshd start # 开启SSH服务
(4)限制能够登录本机的IP地址
[root@ansible ~]# vim /etc/ssh/sshd_config ALLOWUSERS MARGIN@10.1.1.3
【注】允许用户MARGIN通过地址10.1.1.3来登录本机
ALLOWUSERS *@10.1.*.*
【注】仅允许10.1.0.0/16网段所有用户通过SSH访问。
12、修改SSH端口
(1)编辑/etc/ssh/sshd_config
(2)修改banner信息
修改sshd_config
/etc/ssh/sshd_config
如存在,则将banner字段设置为NONE
查看修改motd
/etc/motd
查看该文件内容,更新成自己想要添加的内容
13. 入侵防范-使用防火墙
(1)Linux下的防火墙框架iptables
(2)包过滤
(3)NAT
(4)数据包处理
作者:UStarGao
链接:https://www.starcto.com/application_of_operational/94.html
来源:STARCTO
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
UCloud云平台推荐
随便看看
- 2023-08-18Linux 数据盘盘符变化导致启动异常
- 2021-02-28Linux账户风险和安全策略
- 2022-03-31MongoDB分片集群安装部署教程
- 2021-06-21MySQL字符集变量介绍
- 2021-02-21云计算