一、账号安全
1. 基础操作:查户口、锁大门、清历史,一个都不能少
1)系统账号大扫除:
- 给“隐身人”设结界
:把那些不需要登录的账号的shell统统改成 /sbin/nologin
,让他们有号没法登! - 给“僵尸号”上锁
:长期不用的账号,直接锁定,省得夜长梦多。 - “钉子户”必须拆
:删除那些压根没用的账号,减少安全隐患。 - 给“命根子”加BUFF
:锁定账号文件 passwd
和shadow
,就像给银行金库上锁一样重要!
2)密码安全:
- 密码也得“996”
:设置密码有效期,比如 chage -M 30 用户名
,强制用户每月一换,告别“一条密码用到老”。 - “下次一定”
:用 chage -d 0 用户名
命令,让用户下次登录时必须改密码,不给懒人留机会。
3)命令历史:别让你的操作“裸奔”
- “阅后即焚”
:减少记录的命令条数,历史记录默认1000条?太长了! - “挥一挥衣袖,不留下痕迹”
:注销时自动清空命令历史,防止“社死”现场。
4)终端自动注销:
- “人走茶凉”
:闲置600秒(10分钟)后自动注销,防止“人在工位,号被盗用”。
2. su
命令:小心驶得万年船
su - 用户名
:切换用户身份的神器!
- Root用户
: 切换到任何用户,无需密码,毕竟是“皇亲国戚”。 - 普通用户
: 想切换到其他用户?先老老实实输入目标用户的密码!
1)限制 su
命令:
默认情况下,谁都能用 su
?简直是给黑客送人头!赶紧用 pam_wheel
认证模块,只允许“自己人”切换。
实现步骤:
- 拉帮结派
:把允许使用 su
的用户加入wheel
组。 - 修改认证配置
:编辑 /etc/pam.d/su
,启用pam_wheel
认证。
/etc/pam.d/su
文件配置解读:
vim /etc/pam.d/su #auth sufficient pam_rootok.so #auth required pam_wheel.so use_uid
- a) 默认状态(2开,6关):
允许所有人用 su
命令,但root切换到普通用户不用输密码(pam_rootok.so
模块的功劳)。 - b) 两行都注释(2开,6关):
还是允许所有人用,但root切换也要输密码。 - c) 开启第二行(2关,6开):
只有 root 和 wheel
组的成员才能用su
。 - d) 注释第一行,开启第二行(2关,6开):
只有 wheel
组能用,root 也被 ban 了!
2)启用 pam_wheel
认证:
gpasswd -a 用户名 wheel # 添加用户到 wheel 组 grep wheel /etc/group # 确认 wheel 组成员 auth required pam_wheel.so use_uid # 去掉这行开头的 #
启用后,非 wheel
组成员想用 su
?“Permission denied!”没商量。而且,所有 su
操作都会被记录在 /var/log/secure
日志里,方便你“秋后算账”。
3. PAM:Linux 的“安全卫士”
1)su
命令的“阿喀琉斯之踵”
- 谁都能
su
?太危险! - PAM 来救场
:用 PAM 认证模块,控制 su
的使用权限。
2)PAM 是个啥?
- 可插拔式认证模块
:高效、灵活、便捷! - Linux 服务器标配
:安全认证,就靠它了!
3)PAM 原理:
- 服务 -> PAM配置 -> 认证文件
:层层把关! - 确定服务
:加载对应的 PAM 配置文件( /etc/pam.d/
)。 - 安全认证
:调用认证文件( /lib/security/
)。 - 用户请求
:服务程序把用户请求发给 PAM 模块。 - PAM 认证
:不同应用对应不同的 PAM 模块。
想知道某个程序是否支持 PAM?ls /etc/pam.d/
看看有没有它的身影!
PAM 配置文件,每一行都是一个独立的认证过程,按顺序执行。
4)PAM 配置的“术语”:
第一列:认证模块类型
auth
:用户身份验证,比如输密码、判断 root 权限。 account
:账号属性检查,比如是否允许登录、账号是否过期、是否达到最大用户数。 password
:更新用户信息,比如改密码。 session
:会话管理,比如登录连接信息、用户数据的打开和关闭、挂载文件系统。 第二列:控制标记
required
:必须成功,失败了也要继续执行,最后才返回失败。 requisite
:和 required
类似,但失败了立刻停止,直接返回失败。sufficient
:成功了就直接返回成功,不用管其他模块。 optional
:不返回成功或失败,一般用于显示信息。 include
:调用其他 PAM 配置文件。 第三列:PAM 模块
默认在 /lib64/security/
目录下,不在的话要写绝对路径。同一个模块在不同类型中执行不同的操作。 第四列:PAM 模块参数
根据模块来添加,多个参数用空格分隔。
5)控制标记进阶:
required
:“宁可错杀一千,不可放过一个!” 必须所有带 required
标记的模块都成功才能通过认证,而且即使有模块失败,也会继续执行完所有模块才返回错误信息,不给黑客任何线索。requisite
:“一票否决!” 只要一个带 requisite
标记的模块失败,立刻停止认证,并返回错误信息。sufficient
:“免死金牌!” 只要一个带 sufficient
标记的模块成功,直接通过认证,后面的模块统统忽略。但如果失败了,就当optional
处理。所以用sufficient
要慎重!optional
:“打酱油的!” 失败了也继续执行,不影响认证结果。
6)PAM 认证的“三要素”:
- 认证类型
- 控制类型
- PAM 模块及其参数
7)PAM 认证流程:
required
失败继续,但最终返回 Fail。 requisite
失败立即结束,返回 Fail。 sufficient
成功立即返回,否则忽略结果并继续。 optional
不用于验证,只显示信息。
4. sudo
:给你的权限“开个小灶”(重点!)
su
虽然好用,但也有缺点:
1)sudo
的“正确用法”:
- 用途
:以其他用户(比如 root)的身份执行授权的命令。 - 用法
: sudo 授权命令
编辑 /etc/sudoers
:
visudo # 推荐 # 或者 vi /etc/sudoers # 但保存退出时要用 ":wq!" 强制执行
语法格式:
用户 主机名 = 命令程序列表 用户 主机名 = (用户) 命令程序列表
- 用户
:指定用户名,或者用 %组名
授权给整个组。 - 主机名
:使用规则的主机名,可以用 localhost
或实际主机名,ALL
代表所有主机。 - (用户)
:以什么身份执行命令,省略则默认为 root。 - 命令程序列表
:允许执行的特权命令,必须写完整路径,多个命令用逗号分隔, ALL
代表所有命令。
示例:
Tom ALL=/sbin/ifconfig Jerry localhost=/sbin/* ,!/sbin/reboot, !/sbin/poweroff %wheel ALL=NOPASSWD:ALL # wheel 组成员无需密码即可 sudo Mike ALL=(root)NOPASSWD:/bin/kill,/usr/bin/killall gpasswd -M lisi wheel # 李四加入 wheel 组
*
:通配符,表示所有。 !
:取反符号,表示排除。
2)sudo
命令选项:
-l
:列出用户可用的和被禁止的命令。 -v
:验证时间戳,一段时间内不用输密码。 -u
:指定以某个用户执行操作。 -k
:删除时间戳,下次需要重新输入密码。
案例一:
wangliu 可以使用 useradd 和 usermod 命令,但想以 root 权限运行:
配置:
visudo wangliu ALL=(root) /usr/sbin/useradd, /usr/sbin/usermod # 或者 wangliu ALL=(root) NOPASSWD:/usr/sbin/useradd,/usr/sbin/usermod # 前面不用输密码,后面要输
验证:
[wangliu@kgc root]$ sudo /usr/sbin/useradd tom [sudo] wangliu 的密码: [wangliu@kgc root]$ tail -2 /etc/passwd wangliu:x:1005:1005::/home/wangliu:/bin/bash tom:x:1006:1006::/home/tom:/bin/bash
3)用户别名:
授权用户或命令太多?用别名!用户、主机、命令都可以定义别名(必须大写),分别用 User_Alias
、Host_Alias
、Cmnd_Alias
关键字。
User_Alias
:包含用户、用户组( %组名
)、其他用户别名。User_Alias OPERATORS=zhangsan,tom,lisi
Host_Alias
:主机名、IP、网络地址、其他主机别名、取反。 Host_Alias MAILSVRS=smtp,pop
Cmnd_Alias
:命令路径、目录(目录内所有命令)、其他命令别名。 Cmnd_Alias PKGTOOLS=/bin/rpm,/usr/bin/yum
案例一:
Host_Alias MYHOSTS = kgc , localhost User_Alias MYUSERS zhangsan , wangwu , lisi Cmnd_Alias MYCMNDs = /sbin/*, ! /sbin/reboot, !/sbin/poweroff, ! /sbin/init, ! /usr/bin/rm MYUSERS MYHOSTS=NOPASSWD:MYCMNDS
案例二:
允许 wangliu、wangliu 组、useradmin 组在 smtp 和 pop 主机上执行 rpm 和 yum 命令:
User_Alias USERADMIN = wangliu, %wangliu , %useradmin Cmnd_Alias USERADMINCMND=/usr/sbin/useradd,/usr/sbin/usermod, /usr/sbin/userdel,/usr/bin/passwd, ! /usr/bin/passwd root # 取反优先级最高 USERADMIN ALL=(root) NOPASSWD: USERADMINCMND
启用 sudo 操作日志:
visudo Defaults logfile = "/var/log/sudo"
或者查看 /var/log/secure
日志。
查看当前用户获得哪些 sudo 授权:
gpasswd -a 用户名 wheel # 添加用户到 wheel 组 grep wheel /etc/group # 确认 wheel 组成员 auth required pam_wheel.so use_uid # 去掉这行开头的 #
0
5. GRUB:锁住启动项,防止“后门”
在 GRUB 菜单按 e
键可以修改引导参数?太危险!给 GRUB 菜单设置密码!
gpasswd -a 用户名 wheel # 添加用户到 wheel 组 grep wheel /etc/group # 确认 wheel 组成员 auth required pam_wheel.so use_uid # 去掉这行开头的 #
1
重启系统,按 e
键需要输入账号密码才能修改引导参数。
一步到位:
gpasswd -a 用户名 wheel # 添加用户到 wheel 组 grep wheel /etc/group # 确认 wheel 组成员 auth required pam_wheel.so use_uid # 去掉这行开头的 #
2
二、开关机安全:细节决定成败
BIOS 设置
第一引导设备设为当前系统硬盘。 禁止从其他设备引导。 安全级别设为 setup,并设置管理员密码。 GRUB 限制
用 grub2-mkpasswd-pbkdf2
生成密钥。修改 /etc/grub.d/00_header
文件,添加密码记录。生成新的 grub.cfg
配置文件。
三、弱口令检测:揪出你的“猪队友”
1)系统弱口令:
用 John the Ripper 破解弱口令:
gpasswd -a 用户名 wheel # 添加用户到 wheel 组 grep wheel /etc/group # 确认 wheel 组成员 auth required pam_wheel.so use_uid # 去掉这行开头的 #
3
2) 网络端口扫描:
TCP 协议控制位:
SYN:建立链接 ACK:确认 FIN:结束断开 PSH:传送数据 RST:重置 URG:紧急
安装 nmap:
gpasswd -a 用户名 wheel # 添加用户到 wheel 组 grep wheel /etc/group # 确认 wheel 组成员 auth required pam_wheel.so use_uid # 去掉这行开头的 #
4
nmap 常用选项和扫描类型:
-p
:指定扫描端口。 -n
:禁用反向 DNS 解析,加快扫描速度。 -sS
:TCP SYN 扫描(半开扫描),只发 SYN 包,收到 SYN/ACK 就认为端口开放,否则认为未开放。 -sT
:TCP 连接扫描,完整 TCP 扫描,建立 TCP 连接,成功则认为端口开放,否则认为未开放。 -sF
:TCP FIN 扫描,开放端口忽略 FIN 包,关闭端口回应 RST 包。可检测防火墙健壮性。 -sU
:UDP 扫描,探测 UDP 服务,速度较慢。 -sP
:ICMP 扫描,类似 ping,快速判断主机是否存活,不做其他扫描。 -P0
:跳过 ping 检测,认为所有主机都存活。
再扩展:
用 PAM 模块防止 SSH 暴力破解:
gpasswd -a 用户名 wheel # 添加用户到 wheel 组 grep wheel /etc/group # 确认 wheel 组成员 auth required pam_wheel.so use_uid # 去掉这行开头的 #
5
尝试登陆失败超过3次,普通用户600秒解锁,root 用户1200秒解锁。
手动解除锁定:
查看用户错误登陆次数: pam_tally2 --user 用户名
例如: pam_tally2 --user work
清空用户错误登陆次数: pam_tally2 --user 用户名 --reset
例如: pam_tally2 --user work --reset
黑客/
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...