Windows的加固步骤比较熟,Linux的加固命令不太熟,记录一下,工作备忘。
再次声明:不同系统、相同系统的不同版本之间命令存在差别。

0x01 Linux-安全加固

1. 查看系统版本

内核版本: cat /proc/version
其他linux: lsb_release -a
CentOS: cat /etc/redhat-release
SuSE: cat /etc/SuSE-release

2. 查看空口令账户

查看空口令用户: awk -F: '($2=="")' /etc/shadow
显示所有用户名: cat /etc/passwd | cut -f 1 -d :

3. 查看密码策略

密码文件: cat /etc/login.defs
pass

MAX_DAY  180  密码可用的最长时间
MIN_DAY  10   修改密码最短间隔天数
MIN_LEN  8   密码最小长度
WARE_AGE  21   密码过期前警告天数
注意:这个地方只对新加的账号有效,对已存在的账号需要用chage命令自己修改
root-pas

chage -l root  list 列出用户的详细密码状态
chage -M 180 root 天数 Maxdays 密码有效期
chage -m 10 root 天数 mindays 修改两次密码修改间隔时间
chage -W 21 root 天数 warning 密码过期前警告天数
chage -d 2021-11-11 root 日期 date 修改密码最后一次更改日期

4.查看密码复杂度

cat /etc/pam.d/system-auth
fuza
minlen=8(密码最小长度) ucredit=-1(至少包含一个大写字母) lcredit=-1(至少包含一个小写字母
dcredit=-1(至少包含一个数字) ocredit=-1(至少包含一个其他字符)
注意:针对改密码时生效,若之前账户存在弱口令,弱口令仍存在

5.登录失败策略

cat /etc/pam.d/sshd
login-fail
注释: 连续输错密码3次,锁定账户5分钟。

6. 修改unask值

umask
系统默认的umask值是0022;对于普通用户,系统默认的umask值是0002
注意:umask命令只能临时修改权限,永久修改umask数值请修改/etc/bashrc文件,添加一行 umask 027,此时你创建的文件是750权限,表示文件所有者读写和运行,组成员读和执行权限,其他成员无权限。

7. 接入日志服务器

vim /etc/rsyslog.conf
log
注释:设置成日志服务器的地址即可。有的系统是syslog.conf,有的系统不加514端口

8. 设置登录超时

vim /etc/profile
TMOUT
注释:添加TMOUT=180 表示3分钟闲置超时,在工作站工作人员需要时刻观察参数,不做此加固项

9. 登录地址限制

修改vim /etc/hosts.allow文件,加入堡垒机和管理员的IP地址
allow
修改vim /etc/hosts.deny文件,添加拒绝所有
deny

10. 关闭FTP匿名服务

vim /etc/vsftpd.conf
anonymous_enable=NO

0x02 Linux-应急检查

1. 检查用户登录情况

who  查看当前登录用户(tty本地登陆 pts远程登录)
last  查看登录过的用户和登录的时间
lastlog  查看所有用户上次登录的时间
uptime  查看登陆多久、多少用户,负载

2. 查看有无其他特权账号

awk -F: '$3==0{print $1}' /etc/passwd
一般情况下,默认root为特权账号,防止其他用户例如数据库等账号被恶意提权

3. 查看历史命令记录

history
通过历史命令可以判断是否是人为恶意入侵事件,不同用户的历史记录存在在/home/user/目录下

4. 查看异常端口

netstat -antlp | more
netstat

5. 检查异常进程

ps aux

6. 检查定时任务

crontab -u root -l
corntab
通过-u指定不同的用户名,重点关注数据库等用户

6. 检查异常文件

查看敏感目录,如/tmp、/opt等目录下的文件,特别注意带隐藏属性的文件,必要时使用stat查看文件修改时间。
stat
若在WEB目录下发现可疑文件可以将WEB目录备份下来利用D盾或其他在线Webshell查杀工具进行查杀--https://n.shellpub.com

7. 查看登录成功失败的IP

查看登陆成功的用户的日期、用户名和IP
grep "Accepted" /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
secced

查看登陆失败的用户IP信息
grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c
faild