Linux系统安全
账户安全
用户的基本概念
账户风险与安全策略
- 特权用户排查
# 不能包含root以外的UID为0的用户
awk -F: '($3 ==0){print $1}' /etc/passwd
文件系统安全
文件系统的格式
安全访问与权限设置
- 排查任何人都有写权限的目录
find / -xdev -type f \(-perm -0002 -a !-perm -1000 \) -print
find / -xdev -type d \(-perm -0002 -a !-perm -1000 \) -print
- 配置默认的umask值:027
- 检查未授权的SGID/SUID
find / -type f -perm -6000 -ls
日志分析
系统日志的分类
对于日常服务器的运行状态是否正常、遭受攻击时如何查找被攻击的痕迹等情况,Linux日志系统都提供了相应的解决方案。日志系统可以记录当前系统中发生的各种事件,比如登录日志记录每次登录的来源和时间、系统每次启动和关闭的情况、系统错误等。
日志的主要用途:
- 系统审计:记录登录系统的用户和日常行为
- 监测追踪: 系统遭受到攻击时如何追踪溯源到攻击者
- 分析统计:系统的性能、错误等统计
/var/log/messages
这是Linux最核心的日志文件,假若某个服务没有定义日志文件,那么该服务尝试的日志文件就会记录到这个文件中,该日志每周归档一次,默认只保留5次。归档的方法都是由/etc/logrotate.conf
这个文件来控制的。
/var/log/wtmp
查看用户的登录,注销信息,同时记录系统的启动,重启,关机等事件。不能用cat
直接查看,必须用last
查看
/var/log/btmp
和wtmp类似,也不能用cat直接查看,用lastb
查看,记录用户登录无效的历史。
/var/log/maillog
用来记录邮件相关的日志,比如发给谁,是否发出去
/var/log/cron
记录了系统定时任务相关的日志
/var/log/cpus/
记录cpu信息的日志
/var/log/lastlog
记录所有用户的最后一次登录时间,只可能通过lastlog命令查看
/var/log/sudo.log
记录使用sudo发出的命令,需要先配置/etc/sudoers
的 logfile=/var/log/sudo.log
日志分析工具
- Logrotate
logrotate是操作系统用来管理日志的工具,支持日志的切割、压缩、清理以及邮件报警等,通过crontab服务定时运行,也可以用这个工具来管理我们自己的服务日志,只需要简单配置下配置文件即可
Logrotate使用方法
- 默认配置文件路径:
/etc/logrotate.conf
- 单次执行:
logrotate -f /etc/logrotate.conf
- 定时执行:
/etc/crontab */5 * * * * root /sbin/logrotate /etc/logrotate.conf
5分钟执行一次
Logrotate配置参数
Rotate
:保留多少个历史文件
Weekly
: 每周执行
Missingok
: 忽略文件缺失信息
Notifempty
: 如果文件为空,不切分文件
Delaycompress
: 转存的文件下一次转存压缩
Sharedescripts:postrotate
脚本只执行一次
Postrotate/endscript
:切割后执行的命令
系统日志的审计方法
- 查看系统中的用户:
cat /etc/passwd | grep /bin/bash
- 登录用户和登录时候的IP
w
- 查询历史命令
history
- 分析登录IP,在
wtmp
中 - 定时任务,
sudo.log
排查