账号管理
多余账户锁定策略
应锁定与设备运行、维护等工作无关的账号。
查看锁定用户:
# cat /etc/passwd,查看哪些账户的shell域中为nologin;
锁定用户:
通过#passwd –l username锁定账户;
只有具备超级用户权限的使用者方可使用#passwd –l username锁定用户,用#passwd –d username解锁后原有密码失效,登录需输入新密码。
root账户远程登录限制
限制具备root权限的用户远程登录。
仅允许key登录。
修改/etc/ssh/sshd_config文件,将PermitRootLogin yes改为PermitRootLogin no,重启sshd服务。
删除不必要的系统账户
将系统自带的用户和用户组删除掉
查看系统中的所有用户:
[root@CentOS1 init.d]# cat /etc/passwd | awk -F : ‘{print $1}’
删除的用户,如adm,lp,sync,shutdown,halt,news,uucp,operator,games,gopher。
删除的组,如adm,lp,news,uucp,games,dip,pppusers,popusers,slipusers。
口令配置
口令复杂度策略
口令长度至少8位,并包括数字、小写字母、大写字母和特殊符号4类中至少3类。
打开/etc/pam.d/system-auth文件,找到password模块接口的配置部分,找到类似如下的配置行:
password requisite /lib/security/$ISA/pam_cracklib.so minlen =8
修改为:
password requisite pam_cracklib.so retry=3 difok=3 minlen=10 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1
参数说明如下:
1、retry=N,确定用户创建密码时允许重试的次数;
2、minlen=N,确定密码最小长度要求,事实上,在默认配置下,此参数代表密码最小长度为N-1;
3、dcredit=N,当N小于0时,代表新密码中数字字符数量不得少于(-N)个。例如,dcredit=-2代表密码中要至少包含两个数字字符;
4、ucredit=N,当N小于0时,代表则新密码中大写字符数量不得少于(-N)个;
5、lcredit=N,当N小于0时,代表则新密码中小写字符数量不得少于(-N)个;
口令最长生存期策略
要求操作系统的账户口令的最长生存期不长于90天。
编辑/etc/login.defs
密码过期期限修改为90,密码长度修改为8
PASS_MAX_DAYS 90
PASS_MIN_DAYS 0
PASS_MIN_LEN 8
PASS_WARN_AGE 7
常用密码禁用
禁止使用最近用过的5个密码
sudo vi /etc/pam.d/system-auth
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
认证授权
系统关键目录权限控制
根据安全需要,配置某些关键目录其所需的最小权限;
重点要求password配置文件、shadow文件、group文件权限。
/etc/passwd 所有用户都可读,root用户可写 –rw-r—r—
配置命令:chmod 644 /etc/passwd
/etc/shadow 只有root可读 –r——–
配置命令:chmod 600 /etc/shadow;
/etc/group 必须所有用户都可读,root用户可写 –rw-r—r—
配置命令:chmod 644 /etc/group
用户缺省权限控制
控制用户缺省访问权限,当在创建新文件或目录时应屏蔽掉新文件或目录不应有的访问允许权限,防止同属于该组的其它用户及别的组的用户修改该用户的文件或更高限制。
操作步骤
默认通过全局脚本/etc/bashrc设置所有用户的默认umask值,修改脚本即可实现对用户默认umask值的全局性修改,通常建议将umask设置为027以上
日志审计
统一远程日志服务器配置
当前系统应配置远程日志功能,将需要重点关注的日志内容传输到日志服务器进行备份。
修改配置文件vi /etc/syslog.conf,
加上这一行:
authpriv.* @x.x.x.x
重新启动syslog服务,执行下列命令:
services syslogd restart
设置history
配置history时间戳,便于审计。
在/etc/bashrc文件中增加如下行:
export HISTTIMEFORMAT=”%F %T”
入侵服务器后,攻击者通过历史命令可以获取更多的信息,如mysql密码、FTP密码、内网服务与结构等等
可以编辑/etc/profile文件,修改其中的选项如下:
histsize=30
登录管理
SSH登录限制配置
SSH监听内网IP地址和跳板机地址
在/etc/ssh/sshd_config文件中修改
ListenAddress 0.0.0.0
为内网IP地址和跳板机地址
SSH登录失败锁定
配置普通账户和root账户登录失败5次后,锁定账户300S
# vim /etc/pam.d/login
在#%PAM-1.0的下面,即第二行,添加内容
auth required pam_tally2.so deny=5 lock_time=300 even_deny_root root_unlock_time=300
各参数含义如下:
even_deny_root 也限制root用户;
deny 设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户
unlock_time 设定普通用户锁定后,多少时间后解锁,单位是秒;
root_unlock_time 设定root用户锁定后,多少时间后解锁,单位是秒;
服务安全
关闭不必要的系统服务
根据每台机器的不同角色,关闭不需要的系统服务。
首先查看当前服务列表:
#chkconfig –list
关闭不必要的服务项,操作步骤如下:
#service <服务名> stop
#chkconfig <服务名> off
chkconfig auditd off
chkconfig blk-availability off
chkconfig ip6tables off
chkconfig lvm2-monitor off
chkconfig udev-post off
禁止Control-Alt-Delete键盘关闭命令
编辑/etc/init/control-alt-delete.conf
找到
start on control-alt-delete
更改为
#start on control-alt-delete
修改系统相关信息
[root@localhost ~]# echo “Welcome to Server” >/etc/issue
[root@localhost ~]# echo “Welcome to Server” >/etc/redhat-release
关闭SELinux
[root@localhost~]# vi /etc/selinux/config
SELINUX=disabled