Linux系统账号安全
1、系统账号限制方式
- 缩小权限集合
- 密码更换周期缩短
- 账号注销时间
- 禁止登陆
- 定期清理
- 锁定账号
相关命令
- 设置用户禁止登录
usermod -s/sbin/nologin 用户名
- 锁定用户账号
usermod -L 用户名
passwd -S 用户名
passwd-1 用户名
- 删除无用的账号
userdel[-r] 用户名
- 锁定账号文件passwd、shadow
chattr +i/etc/passwd /etc/shadow
- 锁定文件并查看状态
lsattr/etc/passwd /etc/shadow
- 解锁文件
chattr -i/etc/passwd /etc/shadow
密码安全控制
- 设置密码有效期
- 要求用户登陆修改密码
vi /etc/login.defs
PASS MAX DAYS 30
chage -M 30 huhu
2、系统安全以及应用
pam-权限管理
PAM体系通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序。
1)PAM体系概述
1. 目标和作用
- PAM的主要目标是为程序的开发人员提供一套统一的认证接口。
- 它通过将认证过程从应用程序中分离出来,实现了认证机制的可插拔性,便于向系统中添加新的认证手段。
2. 主要组成部分
- PAM模块:动态链接库,位于
/lib/security
或/lib64/security
目录下,负责实际的认证工作。 - PAM配置文件:位于
/etc/pam.d
目录下,每个服务或程序都有一个对应的配置文件,用于定义该服务的认证方式和规则。
2)PAM认证原理
PAM认证一般遵循以下顺序:
- Service(服务):确定需要认证的服务或程序。
- PAM配置文件:加载与该服务对应的PAM配置文件(位于
/etc/pam.d
目录下)。 - pam_*.so:根据PAM配置文件中的规则,调用相应的PAM模块(位于
/lib/security
或/lib64/security
目录下)进行认证。
PAM认证过程包括多个阶段,如用户身份识别(auth)、账号属性检查(account)、密码更新(password)和会话管理(session)等。每个阶段都可以配置多个PAM模块,按照顺序依次执行。
3)PAM配置方式
1. 配置文件位置
PAM的配置文件主要存放在/etc/pam.d
目录下,每个服务或程序都有一个以该服务或程序名命名的配置文件。
2. 配置文件格式
PAM配置文件中的每一行都是一个独立的认证过程,通常包含以下几个部分:
- 模块类型:如auth、account、password、session等,表示该行的PAM模块用于哪个阶段。
- 控制标记:用于控制PAM模块的行为,如required、requisite、sufficient、optional等。
- 模块路径:PAM模块的路径,通常为
/lib/security/pam_*.so
或/lib64/security/pam_*.so
。 - 模块参数:传递给PAM模块的参数,用于定制PAM模块的行为。
3. 示例
auth required pam_unix.so
account required pam_unix.so
session required pam_unix.so
这个示例配置了对某个服务的认证、账号检查和会话管理阶段,都使用了pam_unix.so
模块,并且都是必须的(required)。
4)PAM控制标记
PAM控制标记用于控制PAM模块的行为,常见的控制标记包括:
- required:表示该模块是必需的,如果该模块失败,则整个PAM认证过程也会失败,但其他模块仍然会被执行。
- requisite:与required类似,但如果该模块失败,则整个PAM认证过程会立即失败,不再执行其他模块。
- sufficient:表示如果该模块成功,则整个PAM认证过程也会成功,但其他模块仍然会被执行。
- optional:表示该模块是可选的,无论成功还是失败,都不会影响整个PAM认证过程的结果。
这些控制标记使得系统管理员可以根据需要灵活地配置PAM认证过程,以满足不同的安全需求。
综上所述,PAM体系通过提供一套可插拔的认证机制,实现了认证过程的灵活性和可扩展性。通过合理的配置PAM配置文件和控制标记,系统管理员可以轻松地为不同的服务配置不同的认证方式,从而提高系统的安全性和易用性。
visudo-组账号控制
visudo
是 Linux 系统中用于安全编辑 /etc/sudoers
文件的命令。/etc/sudoers
文件是 sudo 权限控制的核心配置文件,它决定了哪些用户和组可以以什么方式执行哪些命令。关于使用 visudo
来控制组账号的 sudo 权限。
1)visudo 的基本作用
- 安全编辑:
visudo
命令通过锁定文件、检查语法错误等方式,确保/etc/sudoers
文件的安全编辑。 - 语法检查:在保存文件之前,
visudo
会对/etc/sudoers
文件的语法进行严格的检查,避免因为语法错误导致 sudo 无法正常工作。
2)使用 visudo 控制组账号的 sudo 权限
1. 编辑 /etc/sudoers 文件
- 使用 root 用户执行
visudo
命令,这将以安全的方式打开/etc/sudoers
文件进行编辑。
2. 添加组权限条目
- 在
/etc/sudoers
文件中,你可以添加类似于以下格式的条目来控制组的 sudo 权限:
这里,%组名 ALL=(ALL) ALL
%组名
表示一个用户组,ALL
(第一个)表示该规则适用于所有主机,ALL
(第二个,在括号内)表示可以切换到任何用户身份执行命令,ALL
(第三个)表示可以执行任何命令。
例如,如果你想让wheel
组的所有成员都有执行所有命令的权限,可以添加如下条目:%wheel ALL=(ALL) ALL
3. 设置无需密码的 sudo 权限
- 如果你想让某个组的成员在执行 sudo 命令时无需输入密码,可以在命令前添加
NOPASSWD:
。例如:%mygroup ALL=(ALL) NOPASSWD: ALL
4. 保存并退出
- 在
visudo
编辑器中完成编辑后,保存并退出。
3)注意事项
- 在编辑
/etc/sudoers
文件时,错误的配置可能会导致 sudo 无法正常工作。 - 使用
visudo
而不是直接编辑/etc/sudoers
文件,可以大大降低出错的风险。 - 在为组设置 sudo 权限时,要考虑安全性,避免给过多的用户或组不必要的权限。
Nmap-网络扫描工具
Nmap网络扫描工具概述
Nmap(网络映射器)是一款强大的网络连接端口扫描工具,用于扫描网上电脑开放的网络连接端口,确定哪些服务运行在哪些端口上,并推断计算机运行的操作系统。
功能
Nmap具备以下主要功能:
- 主机发现:用于发现目标主机是否处于活动状态,支持多种主机在线检测机制。
- 端口状态扫描):扫描端口并将端口识别为开放、关闭、过滤等状态。Nmap默认可以扫描1660个常用端口。
- 应用程序版本探测:扫描占用端口的应用程序,并识别应用程序版本和使用的协议。
- 操作系统探测:识别目标主机的操作系统类型、版本编号及设备类型,支持1500个操作系统或设备的指纹数据库。
- 防火墙/IDS逃避和欺骗:探查目标主机的状况,如IP欺骗、IP伪装、MAC地址伪装等。
- 支持测试对象交互脚本:用于增强主机发现、端口扫描、版本侦测和操作系统侦测等功能,并可扩展高级功能,如Web扫描、漏洞发现和漏洞利用等。
场景
Nmap广泛应用于以下场景:
- 网络安全评估:网络管理员使用Nmap来评估网络系统的安全性,发现潜在的安全漏洞。
- 渗透测试:渗透测试人员使用Nmap来发现目标主机的弱点和漏洞,为进一步的攻击测试做准备。
- 网络设备和服务管理:网络管理员使用Nmap来扫描网络设备和服务,了解其配置和状态,以便进行管理和维护。
基本格式
Nmap的基本使用格式如下:
nmap [选项] [目标]
其中,目标可以是单个主机、网络子网或整个网络,例如IP地址、域名、IP范围或CIDR表示法等。
常用选项
常用选项 | 含义 |
---|---|
-A | 进行全面扫描,包括操作系统探测和版本侦测。 |
-p <端口号或范围> | 指定要扫描的端口号或端口范围。 |
-sP | 进行Ping扫描,仅显示在线主机。 |
-sT | 进行TCP连接扫描。 |
-sS | 进行TCP SYN扫描,也称为半开扫描。 |
-sU | 进行UDP扫描。 |
-O | 启用操作系统检测。 |
-v | 提高扫描的详细程度。 |
-Pn | 禁止对目标进行Ping操作,直接进行扫描(无Ping扫描)。 |
–script <脚本名> | 执行指定的NSE脚本。 |
示例
- 全面扫描指定IP:
该命令会对192.168.0.1进行全面扫描,包括操作系统探测和版本侦测。nmap -A 192.168.0.1
- 扫描指定IP的特定端口:
该命令会扫描192.168.0.1的80和443端口。nmap -p 80,443 192.168.0.1
- 无Ping扫描:
该命令会对192.168.0.0/24网段内的所有IP进行无Ping扫描,直接进行端口扫描。nmap -Pn 192.168.0.0/24
- 使用NSE脚本进行Web敏感目录扫描:
该命令会使用http-enum.nse脚本对192.168.0.1的80端口进行Web敏感目录扫描。nmap -p 80 --script=http-enum.nse 192.168.0.1