第十章、系统安全及运用
一、账号安全控制
1.1 系统账号清理
1.1.1更改登录shell环境
将非登录用户的shell设为/sbin/nologin——usermod -s/sbin/nologin
1.1.2 锁定长期不使用的账号
①usermod -L +用户名
②passwd -I +用户名
③passwd -S +用户名
1.1.3 删除无用账号
①userdel [-r]
②/etc/shadow——更改参数,如账号注销时间
1.1.4 锁定账号文件——passwd、shadow
①chattr +i /etc/passwd/ 或者/etc/shadow/——锁定文件并查询状态
②lsattr /etc/passwd 或者/etc/shadow
③chattr -i /etc/passwd 或者/etc/shadow——解锁文件
1.1.5 示例
[root@xiaolei ~]# mkdir AA
[root@xiaolei ~]# ls
AA anaconda-ks.cfg
[root@xiaolei ~]# cd AA
[root@xiaolei AA]# touch 1.txr
[root@xiaolei AA]# echo 'hello word' >> 1.txt
[root@xiaolei AA]# cat 1.txt
hello word
[root@xiaolei AA]# chattr +i 1.txt ###锁定文件
[root@xiaolei AA]# ll 1.txt ###ll看不出区别
-rw-r--r--. 1 root root 11 Aug 12 13:28 1.txt
[root@xiaolei AA]# lsattr 1.txt
----i----------- 1.txt ###已锁定
[root@xiaolei AA]# vi 1.txt
[root@xiaolei AA]# chattr -i 1.txt ###解锁文件
[root@xiaolei AA]# lsattr 1.txt
---------------- 1.txt ###已解锁
1.2 密码安全控制
1.2.1 设置密码有效期
1.2.2 要求用户下次登录时修改密码
①修改密码配置文件,适用于新建用户
[root@xiaolei ~]# vi /etc/login.defs
……………
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used. ###密码最长使用天
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
②chage -M 30 dn——适用于已有用户 ###修改密码有效期
③chage -d 0 dn——强制在下次登录成功时修改密码(/etc/shadow第三个字段被修改为0)
示例
[root@xiaolei ~]# chage -M 30 dn xiaowang
Usage: chage [options] LOGIN
Options:
-d, --lastday LAST_DAY set date of last password change to LAST_DAY
-E, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE
-h, --help display this help message and exit
-I, --inactive INACTIVE set password inactive after expiration
to INACTIVE
-l, --list show account aging information
-m, --mindays MIN_DAYS set minimum number of days before password
change to MIN_DAYS
-M, --maxdays MAX_DAYS set maximum number of days before password
change to MAX_DAYS
-R, --root CHROOT_DIR directory to chroot into
-W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS
1.3 命令历史限制
1.3.1 减少记录的命令条数
[root@xiaolei ~]# vi /etc/profile
export HISTSTZE=200
[root@xiaolei ~]# source /etc/profile
1.3.2 登录时自动清空命令历史
[root@xiaolei ~]# vi ~/.bash_history
echo "" >~/.bash_history
1.4 终端自动注销
1.4.1 闲置600秒后自动注销
[root@xiaolei ~]# vi /etc/profile
…………
export TMOUT=600
[root@xiaolei ~]# source /etc/profile ###加载生效
1.5 使用su命令切换用户
1.5.1 用途及用法
①用途:Substitute User——切换用户
②格式:su +目标用户
1.5.2 密码验证
①root切换任意用户,不用验证密码
②普通用户切换其他用户,验证目标用户的密码
[root@xiaolei ~]# su - xiaowang ###带‘-’表示将使用目标用户的登录shell环境
Last login: Mon Aug 12 18:59:30 CST 2024 on pts/0
[xiaowang@xiaolei ~]$ whoami
xiaowang
1.5.3限制使用su命令的用户
①将允许使用su命令的用户加入wheel组
②启用pam_wheel认证模块
[root@xiaolei ~]# gpasswd -a xy03 wheel ###将xy03用户加入到wheel组中
[root@xiaolei ~]# vi /etc/pam.d/su
#%PAM-1.0
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth required pam_wheel.so use_uid
auth substack system-auth
auth include postlogin
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
password include system-auth
session include system-auth
session include postlogin
session optional pam_xauth.so
~
~
~
~
~
~
~
~
~
"/etc/pam.d/su" 14L, 540C
1.5.4 补充:PAM_wheel认证模块
①PAM系统相关的认证权限管理
②Linux中较为安全的安全管理程序
1.5.5 查看su操作记录
安全日志文件——/var/log/secure
1.6 Linux中的PAM安全认证
1.6.1 su命令的安全隐患
①默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险
②为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换
1.6.2 PAM(Pluggable Authentication Modules)可插拔式认证模块
①是一种高效而且灵活便利的用户级别的认证方式
②也是当前Linux服务器普遍使用的认证方式
1.6.3 PAM认证原理
①一般遵循的顺序——Service(服务)→PAM(配置文件)→pam_*.so
②首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/ib64/security下)进行安全认证
③用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
④不同的应用程序所对应的PAM槽是不同的
1.6.4 PAM认证的构成
①查看某个程序是否支持PAM认证,可以使用ls命令
示例:
[root@xiaolei ~]# ls /etc/pam.d/ | grep su
su
sudo
sudo-i
su-l
②查看su的PAM配置文件——cat /etc/pam.d/su
A. 每一行都是一个独立的认证过程
B. 每一行可以区分为三个字段
a. 认证类型
b. 控制类型
c. PAM模块及其参数
示例:
[root@xiaolei ~]# cat /etc/pam.d/su
#%PAM-1.0
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth required pam_wheel.so use_uid
auth substack system-auth
auth include postlogin
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
password include system-auth
session include system-auth
session include postlogin
session optional pam_xauth.so
1.6.5PAM安全认证流程
控制类型也称做Control Flags,用于PAM验证类型的返回结果
A.required验证失败时仍然继续,但返回Fail
B.requisite验证失败则立即结束整个验证过程,返回Fail
C.sufficient验证成功则立即返回,不再继续,否则忽略结果并继续
D.optional不用于验证,只显示信息(通常用于session类型)
1.7 使用sudo机制提升权限
1.7.1 su命令的缺点
1.7.2 sudo命令的用途及用法
①用途:以其他用户身份(如root)执行授权的命令
②用法:sudo+授权命令
1.7.3 配置sudo授权
①visudo或者vi /etc/sudoers(此文件的默认权限为 440,保存退出时必须执行“:wq!”命令来强制操作)
[root@xiaolei ~]# visudo
visudo: /etc/sudoers.tmp unchanged
②语法格式
A.用户 主机名=命令程序列表
B.用户 主机名=(用户)命令程序列表
C.用户:直接授权指定的用户名,或采用“%组名”的形式(授权一个组的所有用户——)
D.主机名:使用此规则的主机名。没配置过主机名时可用localhost,有配过主机名则用实际的主机名,ALL则代表所有主机
E.(用户):用户能够以何种身份来执行命令。此项可省略,缺省时以root用户的身份来运行命令
F.命令程序列表:允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号进行分隔。ALL则代表系统中的所有命令
示例:
Tom ALL=/sbin/ifconfig
Jerry localhost=/sbin/*,!/sbin/reboot,!/sbin/poweroff ###通配符“*”表示所有,取反符号“!”表示排除
%wheeI ALL=NOPASSWD: ALL ###表示wheel组成员无需验证密码即可使用sudo执行任何命令
Mike ALL=(root)NOPASSWD: /bin/kill, /usr/bin/killal
1.7.4 查看sudo操作记录
①需启用Defaults logfile 配置
②默认日志文件:/var/log/sudo
1.7.5 查询授权的sudo操作
[root@xiaolei ~]# sudo -l
Matching Defaults entries for root on xiaolei:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin,
env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User root may run the following commands on xiaolei:
(ALL) ALL
1.8、开关机安全控制
1.8.1 调整BIOS引导设置
①将第一引导设备设为当前系统所在硬盘
②禁止从其他设备(光盘、U盘、网络)引导系统
③将安全级别设为setup,并设置管理员密码
1.8.2 GRUB限制
①使用grub2-mkpasswd-pbkdf2生成密钥
②修改/etc/grub.d/00 header文件中,添加密码记录
③生成新的grub.cfg配置文件
1.8.3 限制root只在安全终端登录
安全终端配置:/etc/securetty
[root@xiaolei ~]# vi /etc/securetty
……
#tty5
#tty6 ###禁止root用户从终端tty5、tty6登录
1.8.4 禁止普通用户登录
①建立/etc/nologin文件
②删除nologin文件或重启后即恢复正常
[root@xiaolei ~]# touch /etc/nologin ###禁止普通用户登录
[root@xiaolei ~]# rm-rf /etc/nologin ###取消上述登录限制
2、系统引导和登录控制
三、弱口令检测
1、系统弱口令检测
1.1joth the Ripper,简称为 JR
1.1.1 一款密码分析工具,支持字典式的暴力破解
1.1.2 通过对shadow文件的口令分析,可以检测密码强度
1.1.3 官方网站:http://www.openwall.com/john/
四、端口扫描
1、网络端口扫描
1.1 NMAP——检测暴露端口
1.1.1 一款强大的网络扫描、安全检测工具
1.1.2 官方网站:http://nmap.org
1.1.3 CentOSO 7.3光盘中安装包 nmap-6.40-7.el7.x86 64.rpm
1.2 NMAP的扫描
1.2.1 基本格式:
nmap +[扫描类型]+[选项]+[扫描目标]
1.2.2 常用的扫描类型
①-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检测,快速判断目标主机是否存活,不做其他扫描。
⑧-Po——跳过ping检测,这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping 通而放弃扫描。
1.2.3 分别查看本机开放的TCP端口、UDP端口
①nmap -sT 127.0.0.1——查看本机开放的TCP端口
[root@xiaolei ~]# nmap -sT 127.0.0.1
Starting Nmap 6.40 ( http://nmap.org ) at 2024-08-12 18:12 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00053s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
②nmap -sU 127.0.0.1——查看本机开放的UDP端口
[root@xiaolei ~]# nmap -sU 127.0.0.1
Starting Nmap 6.40 ( http://nmap.org ) at 2024-08-12 18:14 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000020s latency).
All 1000 scanned ports on localhost (127.0.0.1) are closed
Nmap done: 1 IP address (1 host up) scanned in 2.00 seconds
1.2.4检测192.168.4.0 /24 网段有哪些主机提供FTP服务
nmap -p 21 192.168.4.0 /24
1.2.5检测192.168.4.0 /24 网段有哪些存活主机
nmap -n -sP 192.168.4.0 /24
五、补充:
1、路由器之间发送数据的报文格式
源MAC 目标MAC
源IP 目标IP
校验位
TCP协议——TCP协议头部信息
上层数据
三握四挥
ACK
SYN
FIN
2、云计算——运维角度
运维思想:稳定性、健壮性(安全)、解决故障、节省净利润(合理、更合理)
CPU基本职能之一——管控资源
20s latency).
All 1000 scanned ports on localhost (127.0.0.1) are closed
Nmap done: 1 IP address (1 host up) scanned in 2.00 seconds
#### 1.2.4检测192.168.4.0 /24 网段有哪些主机提供FTP服务
nmap -p 21 192.168.4.0 /24
#### 1.2.5检测192.168.4.0 /24 网段有哪些存活主机
nmap -n -sP 192.168.4.0 /24