一、系统账号清理
1.将非登录用户的shell设为/sbin/nologin
usermod -s /sbin/nologin 加上用户名
2.锁定长期不使用的账号
usermod -L 加用户名
passwd -l 加用户名
passwd -S 加用户名
3.删除无用的账号
userdel -r 加用户名(家目录一起删除)
4.锁定账号文件 passwd 、shadow
chattr +i /etc/passwd /etc/shadow 锁定文件
lsattr /etc/passwd /etc/shadow 查看锁定的文件
chattr -i /etc/passwd 解锁文件
5.临时清空历史记录
history -c临时清空历史记录 ,关机重启还会显示历史记录,不能永久清空,例
二、使用su命令切换用户
su 用户名 在当前目录切换
su - 用户名 切换到用户的家目录
-
限制用户使用su命令
将允许使用su命令的用户加入wheel组\ 启用pam_wheel认证模块
2.su命令的安全隐患
- 默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全隐患
- 为了加强su命令的控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换
在/etc/pam.d/su文件里设置禁止用户使用su命令
1. #vim /etc/pam.d/su
2. #auth sufficient pam_rootok.so
3. #auth required pam_wheel.so use_uid
三、Linux中的PAM安全认证
1.su命令的安全隐患
默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险 为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换
2.PAM可插拔式认证模块
是一种高效而且灵活便利的用户级别的认证方式
也是当前Linux服务器普遍使用的认证方式
3.PAM认证原理
一般遵循的规律:Service(服务)→ PAM(配置文件)→ pam_*.so
首先要确定哪一项服务,然后加载相应的 PAM 的配置文件(位于 /etc/pam.d 下),最后调用认证文件(位于 /lib64/security 下)进行安全认证
用户访问服务器时,服务器的某一个服务程序把用户的请求发送到 PAM 模块进行认证
不同的应用程序所对应的 PAM 模块是不同的
如果想要查看某个程序是否支持 PAM 认证,可以使用 ls 命令,进行查看 /etc/pam.d/
4.各列名词解释
第一列代表PAM认证模块类型
- auth:对用户身份进行识别,如提示输入密码,判断是否为root。
- account:对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等。
- password:使用用户信息来更新数据,如修改用户密码。
- session:定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统。
第二列代表PAM控制标记
- required:表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败。
- requisite:与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败。
- sufficient:如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值。
- optional:不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于 session 类型)。
- include:表示在验证过程中调用其他的PAM配置文件。比如很多应用通过完整调用/etc/pam.d/system-auth(主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项。
第三列代表PAM模块,默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。
第四列代表PAM模块的参数,这个需要根据所使用的模块来添加。
四、使用sudo机制提权
- sudo是一个授权命令
用途:以其他用户身份(如root)执行授权的命令
- 配置sudo授权
- vim /etc/sudoers
- visudo
两种方式进入配置
2.语法格式:
用户 主机名=命令程序列表 格式没有空格
用户 主机名=(用户)命令程序列表
- 用户:直接授权指定的用户名,或采用“%组名”的形式(授权一个组的所有用户)。
- 主机名:使用此规则的主机名。没配置过主机名时可用localhost,有配过主机名则用实际的主机名,ALL则代表所有主机
- 用户能够以何种身份来执行命令。此项可省略,缺省时以root用户的身份来运行命令
- 允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号“,”进行分隔。ALL则代表系统中的所有命令
五、netstat命令(用于查看本机开启的端口)
| 选项 | 含义 |
|---|---|
| -a | 显示朱继忠所有活动的网络连接 |
| -n | 以数字形式显示相关的主机地址、端口等信息 |
| -t | 查看TCP相关的信息 |
| -u | 显示UDP协议相关的信息 |
| -p | 显示与网络连接相关联的进程号、进程名称等信息(要root权限) |
| -r | 显示路由表信息 |
| -l | 显示处于监听状态的网络连接及端口信息 |