系统安全及应用基础
# 一、账号安全控制
# 1、基本安全措施
# 1、系统账号清理
grep "/sbin/nologin$" /etc/passwd // 查找登录 Shell 是 /sbin/nologin 的用户
usermod -L 账号名称 // 锁定账号
passwd -S 账号名称 // 查看账号状态
usermod -U 账号名称 // 解锁账号
chattr +i /etc/passwd /etc/shadow // 锁定文件
Isattr /etc/passwd /etc/shadow // 查看为锁定的状态
chattr -i /etc/passwd /etc/shadow // 解锁文件
Isattr /etc/passwd /etc/shadow // 查看为解锁的状态
# 2、密码安全控制
/etc/pam.d/password-auth
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= difok=1 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1
- difok= 定义新密码中必须要有几个字符和旧密码不同
- minlen = 新密码的最小长度
- ucredit= 新密码中可以包含的大写字母的最大数目。-1 至少一个
- lcredit = 新密码中可以包含的小写字母的最大数
- dcredit = 定新密码中可以包含的数字的最大数目
注:这个密码强度的设定只对 "普通用户" 有限制作用,root 用户无论修改自己的密码还是修改普通用户的时候,不符合强度设置依然可以设置成功
1、将密码的有效期设为 30 天,
# vim /etc/login.defs //适用于新建的用户
PASS_MAX_DAYS 30
# chage -M 30 lisi //适用于已有的用户
2
3
2、强制要求用户下次登录时重设密码
# chage -d 0 lisi
# 3、命令历史、自动注销
1、设置最多只记录 200 条历史命令
# vim /etc/profile //适用于新登录用户
HISTSIZE=200
# export HISTSIZE=200 //适用于当前用户
2
3
2、当用户退出已登录 Bash 环境以后,所记录的历史命令将自动清空
# vim ~/.bash_logout
history -c
clear
2
3
3、当超过指定的时间没有任何输入时即自动注销终端,闲置超时由变量 TMOUT 来控制,默认单位为秒估)
# vim /etc/profile //适用于新登录用户
export TMOUT=600
# export TMOUT=600 //适用于当前用户
2
3
# 2、用户切换与提权
# 1、su 命令:切换用户
# su - root
借助于 pam_wheel 认证模块,只允许极个别用户使用 su 命令进行切换
将授权使用 su 命令的用户添加到 wheel 组,修改 /etc/pam. d/su 认证配置以启用 pam_wheel 认证
# gpasswd -a zhangsan wheel
正在将用户“zhangsan”加入到“wheel”组中
# grep wheel /etc/group
wheel:x:10:lisi,zhangsan
# vim /etc/pam.d/su
auth required pam_wheel.so use_uid //去掉此行开头的#号
2
3
4
5
6
启用 pam_wheel 认证以后,未加入到 wheel 组内的其他用户将无法使用 su 命令
# su - zhangsan
[zhangsan@localhost ~]$ su - root
密码:
上一次登录:四 7月 16 20:31:08 CST 2020pts/0 上
# su - wangwu
[wangwu@localhost ~]$ su - root
密码:
su: 拒绝权限
2
3
4
5
6
7
8
# 2、 用户帐号限制
/etc/login.defs
配置文件是设置用户帐号限制的文件,可配置密码的最大过期天数,密码的最大长度约束等内容。该文件里的配置对 root 用户无效。此文件中的配置与
/etc/passwd
和/etc/shadow
文件中的用户信息有冲突时,系统会以/etc/passwd
和/etc/shadow
为准。/etc/login.defs
文件用于在 Linux 创建用户时,对用户的一些基本属性做默认设置,例如指定用户 UID 和 GID 的范围,用户的过期时间,密码的最大长度,等等。
设置项 | 含义 |
---|---|
MAIL_DIR /var/spool/mail | 创建用户时,系统会在目录 /var/spool/mail 中创建一个用户邮箱,比如 lamp 用户的邮箱是 /var/spool/mail/lamp。 |
PASS_MAX_DAYS 99999 | 密码有效期,99999 是自 1970 年 1 月 1 日起密码有效的天数,相当于 273 年,可理解为密码始终有效。 |
PASS_MIN_DAYS 0 | 表示自上次修改密码以来,最少隔多少天后用户才能再次修改密码,默认值是 0。 |
PASS_MIN_LEN 5 | 指定密码的最小长度,默认不小于 5 位,但是现在用户登录时验证已经被 PAM 模块取代,所以这个选项并不生效。 |
PASS_WARN_AGE 7 | 指定在密码到期前多少天,系统就开始通过用户密码即将到期,默认为 7 天。 |
UID_MIN 500 | 指定最小 UID 为 500,也就是说,添加用户时,默认 UID 从 500 开始。注意,如果手工指定了一个用户的 UID 是 550,那么下一个创建的用户的 UID 就会从 551 开始,哪怕 500~549 之间的 UID 没有使用。 |
UID_MAX 60000 | 指定用户最大的 UID 为 60000。 |
GID_MIN 500 | 指定最小 GID 为 500,也就是在添加组时,组的 GID 从 500 开始。 |
GID_MAX 60000 | 用户 GID 最大为 60000。 |
CREATE_HOME yes | 指定在创建用户时,是否同时创建用户主目录,yes 表示创建,no 则不创建,默认是 yes。 |
UMASK 077 | 用户主目录的权限默认设置为 077。 |
USERGROUPS_ENAB yes | 指定删除用户的时候是否同时删除用户组,准备地说,这里指的是删除用户的初始组,此项的默认值为 yes。 |
ENCRYPT_METHOD SHA512 | 指定用户密码采用的加密规则,默认采用 SHA512,这是新的密码加密模式,原先的 Linux 只能用 DES 或 MD5 加密。 |
# 二、系统引导和登录控制
# 1、开关机安全控制
# 1、调整 BIOS 引导设置
- (1)将第一优先引导设备 (First Boot Device) 设为当前系统所在磁盘。
- (2)禁止从其他设备 (如光盘、U 盘、网络等) 引导系统,对应的项设为 "Disabled"。
- (3)将 BOS 的安全级别改为 "setup",并设置好管理密码,以防止未授权的修改。
# 2、禁止 Ctrl+Alt+Del 快捷键重启
# systemctl mask ctrl-alt-del.target //禁止Ctrl+Alt+Del快捷键重启
Created symlink from /etc/systemd/system/ctrl-alt-del.target to /dev/null.
# systemctl daemon-reload //刷新配置
# systemctl unmask ctrl-alt-del.target //开启Ctrl+Alt+Del快捷键重启
# systemctl daemon-reload //刷新配置
2
3
4
5
# 3、限制更改 GRUB 引导参数
# grub2-mkpasswd-pbkdf2
输入口令:
Reenter password:
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.0231854D0AD301240629102B62FCFB09E7347E7E3254E34ACE0186A41BA65A2A749B6A5F59AC37B6431649D5D0F3238CFC2ED92C407468C0CE2B29C2F3FFF9A8.1906AC682652E7EEC736AC3F4E866D2C5038EB4AED72D980331CE80ED4D05A9929F043A5EB7190FD3775294CE50FCFA745C16E783A93E52F77E0D3A9695C246A
# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
# cp /etc/grub.d/00_header /etc/grub.d/00_header.bak
# vim /etc/grub.d/00_header
......
cat<< EOF
set superusers = "root"
password_pbkdf2 root grub.pbkdf2.sha512.10000.0231854D0AD301240629102B62FCFB09E7347E7E3254E34ACE0186A41BA65A2A749B6A5F59AC37B6431649D5D0F3238CFC2ED92C407468C0CE2B29C2F3FFF9A8.1906AC682652E7EEC736AC3F4E866D2C5038EB4AED72D980331CE80ED4D05A9929F043A5EB7190FD3775294CE50FCFA745C16E783A93E52F77E0D3A9695C246A
EOF
# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-1127.8.2.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1127.8.2.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-1062.18.1.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1062.18.1.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-957.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-957.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-fc8e001937cb4a35b289459e53090806
Found initrd image: /boot/initramfs-0-rescue-fc8e001937cb4a35b289459e53090806.img
done
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 2、终端登录控制
1、禁止 root 用户登录
# vim /etc/securetty //禁止root用户从tty5、tty6登录
tty1
tty2
tty3
tty4
#tty5
#tty6
tty7
tty8
2
3
4
5
6
7
8
9
2、禁止普通用户登录(root 用户不受限制),当手动删除 /etc/nologin 文件或者重新启动主机以后,即可恢复正常。
# touch /etc/nologin
#
三、弱口令检测、端口扫描
# 1、弱口令检测 ——John the Ripper
安装 John the Ripper
查看已破解出的账户列表
使用密码字典文件
清空己破解出的账户列表后重新分析
# 2、网络扫描 ——NMAP
# 1、安装 NMAP 软件包
# yum -y install nmap
1
参数 | 说明 | 参数 | 说明 |
---|---|---|---|
-p | 指定扫描的端口 | -n | 禁用反向 DNS 解析(以加快扫描速度) |
-sS | 查看目标端口是否正在监听,并立即断开连接;否则认为目标端口并未开放 | -sT | 查看目标端口正在监听服务,否则认为目标端口并未开放 |
-sF | 间接检测防火墙的健壮性 | -sU | 探测目标主机提供哪些 UDP 服务 |
-sP | 快速判断目标主机是否存活 | -P0 | 跳过 ping 检测 |
扫描常用的 TCP 端口
扫描常用的 UDP 端口
例如:
检查 192.168.4.0/24 网段中有哪些主机提供 FTP 服务:nmap -p 21 192.168.4.0/24
检测 192.168.4.0/24 网段中有哪些存活主机(能 ping 通):nmap -n -sP 192.168.4.0/24
检测 IP 地址位于 192.168.4.100-200 的主机是否开启文件共享服务:nmap -p 139,445 192.168.4.100-200