目录
一、系统账号清理
- 将非登录用户的shell设为/sbin/nologn // usermod -s /sbin/noolgn 用户名
- 锁定长期不使用的账号 //usermod -L 用户名 (-L/l 锁定 -U/u 解锁 )
- 删除无用的账号 //userdel [ -r ] 用户名
[root@tanpw ~]# usermod -s /sbin/nologin dingyi #使dingyi用户不能登录
[root@tanpw ~]# cat /etc/passwd | grep dingyi #查看dingyi用户信息
dingyi:x:1004:1004::/market/market3/dingyi:/sbin/nologin #/bin/bash改为了/sbin/nologin
[root@tanpw ~]# userdel -r xiaoxu #删除xiaoxu用户及其家目录
usermod -L 用户名 锁定用户 passwd -l 用户名 锁定用户
usermod -U 用户名 解锁用户 passwd -u 用户名 解锁用户
4 .锁定账号文件 passwd 、shadow
chatter 命令 用于修改文件或目录的属性,设置文件的特殊属性,使其具有更高级的保护或控制
chatter 选项 文件名
+i :将文件设置为“不可修改”,即无法被删除、重命名、修改内容或链接的操作
-i :取消对文件的“不可修改”属性
+a:只能向文件中添加内容,无法修改或删除已有内容
chattr +i/etc/passwd /etc/shadow 锁定文件并查看状态
chattr -i/etc/passwd /etc/shadow 解锁文件
二、账号安全基本措施
1.密码安全控制
设施密码有效期,要求用户下次登录时修改密码等
1.1对于新用户设置密码规则
vim /etc/login.defs
PASS_MAX_DAYS: #用户密码最长有效天数
PASS_MIN_DAYS: #用户可修改密码的最小间隔天数
PASS_MIN_LEN: #用户密码的最小长度
PASS_WARN_AGE: #指定在密码过期前几天向用户发出警告
1.2 对已有用户修改密码
chage [选项] 用户名
chage -d 0 zhangsan # 强制张三用户下一次登录时要修改密码
-m:密码可更改的最小天数,m=0 代表任何时候都可以更改密码
-M:密码保持有效的最大天数
-w:用户密码到期前,提前收到警告信息的天数
-E:帐号到期的日期。过了这天,此帐号将不可用
-d:上一次更改的日期
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
2.命令历史限制
减少记录的命令条数,登陆时自动清空历史命令
修改全局配置文件
vim /etc/profile
export HISTSIZE=20 #使用histor命令时,可查询到的历史命令为20条
source /ect/profile #重新加载配置文件
————————
注销时清空历史命令
vim .bash_logout
echo " " > /root/.bash_hostaty #空文件导入,将空行替换到.bash_hostary
登录后会自动运行上述命令,即登录时自动清理命令的历史记录
3.终端自动注销
vi /etc/profile
export TMOUT=600 #设置终端闲置600秒后自动注销
source /etc/profile #重新加载配置文件
三、用户切换和用户提供
1.su命令
su命令及swich user,命令可以切换用户身份,并且以指定用户的身份执行命令
su 用户名 #切换到其他用户,切换到其他用户时需要密码(root到其他用户不需要密码)
whomi # 显示当前登录的用户
2.sudo 命令
2.1用户提权
sudo命令以超级用户的身份去执行命令
sudo [选项] 命令
2.2配置sudo授权
vi sudo 或 vi /etc/sudoers #此文件默认权限为440,保存退出时必须使用"wq!"命令强制执行
语法格式:
用户 主机名=命令程序列表
用户 主机名=(用户)命令程序列表
用户: 直接授权指定的用户名,或采用“%组名”的形式(授权一个组的所有用户)。
主机名:使用此规则的主机名。没配置过主机名时可用localhost,有配过主机名则用实际的主机名,ALL则代表所有主机
(用户): 用户能够以何种身份来执行命令。此项可省略,缺省时以root用户的身份来运行命令
命令程序列表: 允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号“,”进行分隔。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 #用户Mike无需密码即可作为root用户执行命令
使用关键字 User_Alias、Host_Alias、Cmnd_Alias 来进行设置别名(别名必须为大写)
User_Alias USERS=Tom,Jerry,Mike #指定用户设置别名
Host_Alias HOSTS=localhost,bogon #为用户主机名设置别名
Cmnd_Alias CMNDS=/sbin/ifconfig,/usr/sbin/useradd,/usr/sbin/userdel #为命令设置别名
2.3 查看sudo操作日志
visudo #编辑sudo配置
Defaults logfile = "/var/log/sudo" #设置sudo命令的默认日志文件路径
tail /ver/log/sudo #查看sudo操作日志
3.禁止root用户登录
在 Linux 系统中,login 程序会读取/etc/securetty 文件,以决定允许 root 用户从哪些终端(安全终端)登录系统。
vi /etc/securetty
tty5
tty6 #禁止root用户从终端tt5 tt6登录
4. 禁止普通用户登录
禁止普通用户登录需要建立/etc/nologin 文件
touch /etc/nologin #禁止普通用户登录
rm -rf /etc/nologin #删除nologin文件后重启恢复正常
四、Linux中的PAM安全认证
1.PAM概念
PAM(Pluggable Authentication Modules)可插拔式认证模块。是一种高效而且灵活便利的用户级别的认证方式,也是当前Linux服务器普遍使用的认证方式。
2.su命令的安全隐患
默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险。为了加强su命令的使用控制,可借助于PAM认证模块只允许极个别用户使用su命令进行切换
3.PAM认证原理
一般遵循的顺序:Service (服务)——>PAM(配置文件)——>pam_*.so
- 首先要确定哪一项服务,然后加载相应的PAM的配置文(牛(位于/etc/pam.d下),最后调用认证文件(位于/ib64/security下)进行安全认证
- 用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
- 不同的应用程序所对应的PAM模块是不同的
4.PAM 认证构成
ls /etc/pam.d | grep su #ls查看su是否支持PAM模式认证
car /etc/pam.d/su #查看su的PAM配置文件
- 每一行都是一个独立的认知过程
- 每一行可以分为三个字段:认证类型,控制类型,PAM模块及其参数
控制类型也可以称作Control Flags,用于PAM验证类型的返回结果
- required验证失败时仍然继续,但返回Fail
- requisite验证失败则立即结束整个验证过程,返回Fail
- sufficient验证成功则立即返回,不在继续,否则忽略结果并继续
- optional不用于验证,只显示信息(通常用于session(会话)类型)
五、网络端口扫描
nmap :一款强大的网络扫描、安全检测工具
nmap [扫描类型] [选项] <扫描目标...>
nmap命令常用的选项和扫描类型
选项 | |
---|---|
-p | 指定扫描的端口 |
-n | 禁用反向DNS解析(加快扫描速度) |
-sS | TCP的SYN扫描(半开扫描),只向目标发出SYN数据包,如果收到SYN\ACK响应包就认为目标端口正在监听服务,并立即断开连接;否则认为目标端口并未开放。 |
-sT | TCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放。 |
-sF | TCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙对SYN数据包进行简单过滤,而忽略了其他形式的TCP。这种类型的扫描可间接检测防火墙的健壮性。 |
-sU | UDP扫描,探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢。 |
-sP | ICMP扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描。 |
-P0 | 跳过ping检测,这种方式认为所有的目标主机是活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃 。 |
yum install -y nmap #首先安装nmap程序
nmap -sT 127.0.0.1
nmap -sU 127.0.0.1 #分别查看本机开放的TCP端口、UDP端口
nmap -p 80 192.168.4.0/24 #检测192.168.4.0/24网段有哪些主机提供HTTP服务
nmap -n -sP 192.168.4.0/24 #检测192.168.4.0/24网段有哪些存活主机