当前位置:网站首页>CentOS操作系统安全加固
CentOS操作系统安全加固
2022-07-24 05:23:00 【踩坑之路】
1. 禁用或删除无用的账号
删除账号:userdel name
锁定账号:passwd -l name
解锁账号:passwd -u name
2. 检查是否存在空口令和root权限的账号
查看空口令账号: awk -F: '($2=="")' /etc/shadow
查看UID为0的账号:awk -F: '($3==0)' /etc/passwd,确认UID为0的账号只有root
为空口令账号设定密码:passwd name
3. 加强口令的复杂度等,降低被猜解的可能性
3.1 修改配置文件 /etc/login.defs
vim /etc/login.defs
PASS_MAX_DAYS 90 # 新建用户的密码最长使用天数
PASS_MIN_DAYS 0 # 新建用户的密码最短使用天数
PASS_WARN_AGE 7 # 新建用户的密码到期提前提醒天数3.2 使用chage命令修改用户设置
表示将此用户的密码最长使用天数设为30,最短使用天数设为0,密码2000年1月1日过期,过期前七天警告用户。
chage -m 0 -M 30 -E 2000-01-01 -W 7设置连续输错三次密码,账号锁定五分钟。
vim /etc/pam.d/common-auth
# 修改配置文件,在配置文件中添加
auth required pam_tally.so onerr=fail deny=3 unlock_time=3004. 限制能su到root的用户
vi /etc/pam.d/su
# 修改配置文件,在配置文件中添加行。
# 例如,只允许test组用户su到root,则添加
auth required pam_wheel.so group=test5. 禁止root用户直接登陆
5.1 创建普通权限账号并配置密码,防止无法远程登录;
5.2 使用命令 vi /etc/ssh/sshd_config 修改配置文件将 PermitRootLogin的值改成no,并保存,然后重启sshd服务。
6. 关闭不必要的服务
使用命令systemctl disable设置服务在开机时不自动启动。
说明: 对于部分老版本的Linux操作系统(如CentOS 6),可以使用命令chkconfig \--level off设置服务在指定init级别下开机时不自动启动。
7. SSH服务安全加固
使用命令 vim /etc/ssh/sshd_config 编辑配置文件。
- 不允许root账号直接登录系统。
设置 PermitRootLogin 的值为 no。 - 修改SSH使用的协议版本。
设置 Protocol 的版本为 2。 - 修改允许密码错误次数(默认6次)。
设置 MaxAuthTries 的值为 3。
配置文件修改完成后,重启sshd服务生效。
8. 文件系统
8.1 设置umask值
设置默认的umask值,增强安全性。
使用命令 vim /etc/profile 修改配置文件,添加行 umask 027, 即新创建的文件属主拥有读写执行权限,同组用户拥有读和执行权限,其他用户无权限。
8.2 设置登录超时
设置系统登录后,连接超时时间,增强安全性。
使用命令 vim /etc/profile 修改配置文件,将以 TMOUT=开头的行注释,设置为TMOUT=180,即超时时间为三分钟。
9. 日志
9.1 syslogd日志
启用日志功能,并配置日志记录。
Linux系统默认启用以下类型日志:
- 系统日志(默认)/var/log/messages
- cron日志(默认)/var/log/cron
- 安全日志(默认)/var/log/secure
注意:部分系统可能使用syslog-ng日志,配置文件为:/etc/syslog-ng/syslog-ng.conf。
可以根据需求配置详细日志。
9.2 记录所有用户的登录和操作日志
通过脚本代码实现记录所有用户的登录操作日志,防止出现安全事件后无据可查。
在配置文件 /etc/profile 末尾输入以下内容:
history
USER=`whoami`
USER_IP=`who -u 2>/dev/null | awk '{print NF}'|sed -e 's/[()]//g'`
if [ "USER_IP" = "" ]; then
USER_IP=`hostname`
fi
if [ ! -d /var/log/history ]; then
mkdir /var/log/history
chmod 777 /var/log/history
fi
if [ ! -d /var/log/history/{LOGNAME} ]; then
mkdir /var/log/history/{LOGNAME}
chmod 300 /var/log/history/{LOGNAME}
fi
export HISTSIZE=4096
DT=`date +"%Y%m%d_%H:%M:%S"`
export HISTFILE="/var/log/history/{LOGNAME}/{USER}@{USER_IP}_DT"
chmod 600 /var/log/history/{LOGNAME}/*history* 2>/dev/null
运行加载配置生效 source /etc/profile
注意: /var/log/history 是记录日志的存放位置,可以自定义。
通过上述步骤,可以在 /var/log/history 目录下以每个用户为名新建一个文件夹,每次用户退出后都会产生以用户名、登录IP、时间的日志文件,包含此用户本次的所有操作(root用户除外)。
边栏推荐
猜你喜欢
随机推荐
awk的使用
mysql 忘记退出直接关闭窗口现在要删除整个文件夹如何删除
服务器硬件及RAID配置实战
Dameng database_ Small matters needing attention during use
[218] what are the advantages and disadvantages of CS architecture and BS architecture and data on the server and client?
进程和计划任务管理
Do not rent servers, build your own personal business website (1)
Custom MVC 1.0
Polkadot | interprets how liberty plan, which subverts traditional social media, will be launched in Poka
[301] grotesque behavior - predictable irrationality
leetcode剑指offer JZ25 合并两个排序的链表
Leetcode sword finger offer jz73 flip word sequence
IP课总结(3)
Data warehouse and data warehouse modeling
本地搭建WordPress个人博客,并内网穿透发布上线 (22)
将内网映射到公网【无需公网IP】
Summary of ten common vulnerabilities (principle, harm, defense)
IP课(OSPF)综合实验
IP notes (12)
Process and planned task management








