配置原因: 黑客和不法分子经常会利用默认用户进行密码爆破入侵,比如默认的root用户;在云服务器和内网的使用场景必须开启ssh才能方便进行远程管理,经常会被批量扫描和慢速爆破。
所以我们要设置不允许root直接远程登录,如若需要使用root,应通过普通用户登录,然后通过sudo su切换为root权限来使用。
说明:ubuntu是默认禁止root用户登录的,centos默认允许root登录,需要手动去设置。
设置步骤:
vi /etc/ssh/sshd_config
# PermitRootLogin yes
修改为:确保去掉#注释符号,并将yes改为no。
PermitRootLogin no
systemctl restart sshd
操作步骤:输入/etc/ssh/sshd_config查看port是否为22等容易猜疑到的端口(默认就是22端口),如果是则需要修改为其它端口,以防范批量化的扫描;然后重启ssh服务即可,centos重启命令sudo systemctl restart sshd
。
修改/etc/login.defs
密码策略如下:
PASS_MAX_DAYS 90(生命期最大为90天)
PASS_MIN_DAYS 0(密码最短周期0天)
PASS_MIN_LEN 10(密码最小长度10位)
PASS_WARN_AGE 7(密码到期前7天提醒)
口令复杂度:
口令长度8位以上,并包含数字、字母、特殊字符三种形式
前言: 黑客和不法分子找到服务器ip之后,第一件事就是扫描ssh服务端口,找到后就会进行用户名密码的暴力破解,如果没有输错密码的锁定策略,很可能短时间就被破解出来。
建议: 对于采用静态口令认证技术的设备,应配置当用户连续认证失败次数超过5次,锁定该用户使用的帐号。登录失败次数可以依据自己的需要进行设置,不建议超过10次。
设置连续输错5次密码,帐号锁定5分钟使用命令 vi /etc/pam.d/system-auth修改配置文件,添加
auth required pam_tally.so onerr=fail deny=10 unlock time=300
最好是有锁定登录ip的策略,不然的话还能换其它用户进行再次破解。
用户登录后离开窗口长时间在线不操作容易引起安全风险,被其它人操作;应根据业务需求修改/etc/profile中的TMOUT参数,例如修改成180,就是3分钟无操作后退出。
应用安装运行的时候,不要使用root用户直接安装运行用户,应该创建相对的最小权限应用账户,比如nginx和mysql等应用。输入命令ps –aux来查看进程启动的用户是否为root,一般nginx的运行用户需要是nginx,mysql也同理。
日志审计-syslog登录事件记录,确保/etc/rsyslog.conf的相关日志已打开记录,主要是secure和message、console。
history默认不带时间戳,不好用于定位分析问题,操作如下:
echo 'HISTTIMEFORMAT="%F %T "' >>/etc/profile
source /etc/profile
限制远程ssh封路访问的的源IP,避免其它具有风险的地址访问ssh端口。
服务器需要安装杀毒软件等工具来进行范恶意代码防范,安装服务器安全管理软件,首次安装后需要进行全盘病毒查杀,并正确使用和开启病毒库自动更新。
为解决本地日志存储和未授权删除篡改问题,需要将服务器本地日志外发到第三方审计平台。
修改/etc/rsyslog.conf 配置文件,
在该文件内容最后增加一行:. @10.x.x.x
审计功能已开启,包括:用户的添加和删除、审计功能的启动和关闭、审计策略的调整、权限变更、系统资源的异常使用、重要的系统操作(如用户登录、退出)等设置
审计记录包括事件的日期、时间、类型、主体标识、客体标识和结果等内容
如果没有设置外发日志则本地需要留存180天,如果有外发设置,本地只需要存储200M大小的日志。
检测操作步骤:
修改/etc/logrotate.conf 中的
/path/to/logfile {
missingok
monthly
create 0644 root root
rotate 6
compress
delaycompress
notifempty
}
保存后
重启 rsyslog 服务
sudo systemctl restart rsyslog
检查防火墙(iptables或firewall-cmd)是否已开启,并且对应的端口服务仅开放给管理员和业务用户使用。
操作思路:
默认拒绝所有源IP访问所有目的IP,然后开放需要对外提供服务的端口;