本章目录
一.账号安全控制
1.1 系统账号清理
- 将非登录用户的shell设为/sbin/nologin
- 锁定长期不使用的账号
- 删除无用的账号
- 锁定账号文件passwd,shadow
为了确保系统安全,这些用户的登录shell通常是/sbin/nologin,表示禁止终端登录,应确保不被人为改动
- grep “/sbin/nologin$” /etc/passwd ‘#查看非登录用户’
- grep “bash$” /etc/passwd ‘查看当前可以登录的用户’
- 锁定长期不使用的账号
对于长期不用的用户账号,若无法确定是否删除,可以暂时将其锁定,(passwd,usermod命令都可以用来锁定和解锁账号)
passwd -l lisi (或者 usermod -L lisi ) ‘#锁定用户lisi’
锁定用户 lisi 的密码 。
usermod -U lisi (或者 passwd -u lisi) ‘#解锁用户lisi’
passwd -S lisi ‘#查看账号状态’
-
删除无用的账号
在非登录用户中,还有一部分是很少用到的,如news,uucp,games,gopher等,这些用户可视为冗余账号,可以直接删除。 -
锁定账号文件passwd,shadow
如果服务器中的用户账号已经固定,不在进行更改,还可以采取锁定账号配置文件的方法
使用chattr命令,分别结合“+i”“-i”选项来锁定,解锁文件,使用lsattr命令可以查看文件锁定情况
chattr命令基本格式
chattr +i [目标文件] ‘锁定目标文件’
chattr -i [目标文件] ‘解锁目标文件’
lsattr [目标文件] ‘查看目标文件’
例如
chattr +i /etc/passwd /etc/shadow ‘锁定目标文件’
lsattr /etc/passwd /etc/shadow ‘查看目标文件是否被锁定’
chattr -i /etc/passwd /etc/shadow ‘解锁目标文件’
lsattr /etc/passwd /etc/shadow ‘查看目标文件是否解锁’
1.2 密码安全控制
含义:
- 设置密码有效期
- 要求用户下次登录时更改密码
vi /etc/login.defs //对于未创建的用户,使用此命令修改配置文件’
chage -M 30 lisi //适用于已有的lisi用户
1.3 命令历史和自动注销
- 命令历史限制
减少记录的命令条数:bash终端环境中,历史命令的记录条数由变量HISTSIZE控制,默认为1000条。通过修改/etc/profile文件中的HISTSIZE变量值,可以影响系统中 的所有用户
例如:可以设置最多只记录 200 条历史命令。
vi /etc/profile //适用于新登录用户
export HISTSIZE=200 //适用于当前用户
还可以修改用户宿主目录中的~/.bash_logout 文件,添加清空历史命令的操作语句。这样,当用户退出已登录 Bash 环境以后,所记录的历史命令将自动清空。
vi ~/.bash_logout
history -c
clear
- 终端自动注销
bash终端环境中,可以设置一个闲置超时时间,当超过指定时间没有任何输入时即自动注销终端,这样可以有效避免当管理员不在时其他人员对服务器的误操作风险。闲置时间有变量TMOUT来控制,默认单位为秒
1.4 用户切换与提权
大多数 Linux 服务器并不建议用户直接以 root 用户进行登录。一方面可以大大减少因误操作而导致的破坏,另一方面也降低了特权密码在不安全的网络中被泄露的风险。鉴于这 些原因,需要为普通用户提供一种身份切换或权限提升机制,以便在必要的时候执行管理任 务。
Linux 系统为我们提供了 su、sudo 两种命令,其中 su 命令主要用来切换用户,而 sudo命令用来提升执行权限。
1.su 命令 —— 切换用户
(1)su 命令用法
su - root
密码: //输入用户root 的口令
[root@localhost ~]# //验证成功后获得root 权限
1.4.1 限制使用su命令的用户
- 将允许使用su命令的用户加入wheel组
- 启用pam_wheel认证模块
例如:gpasswd -a tzhangsan wheel
//表示将用户zhangsan加入到“wheel”组中
启用pam_wheel认证模块
1.5 Linux中的PAM安全认证
1.5.1 su命令的安全隐患
默认情况下,任何用户都允许使用su命令,从而有机会反复尝试其他用户的登录密码,带来风险
借助pam_wheel认证模块,可以实现指定允许的用户使用su命令
1.5.2 PAM认证原理
PAM(Pluggable Authentication Modules)可插拔式认证模块,它是一种高效而且灵活便利的用户级别的认证方式,它也是当前Linux服务器普遍使用的认证方式
PAM认证一般遵循的顺序:Service(服务)→PAM(配置文件)→pam_*.so(.so 后缀代表模块文件)
PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证
用户访问服务器的时候,服务器的某一个服务程序把用户的不同请求发送到PAM模块进行认证
不同的应用程序所对应的PAM模块也是不同的
1.5.3 PAM认证的构成
- 查看某个程序是否支持PAM认证,可以用ls命令进行查看。
例如查看su是否支持PAM模块认证
语法: ls /etc/pam.d | grep su
查看su的PAM配置文件:cat /etc/pam.d/su
- 每一行都是一个独立的认证过程
- 每一行可以区分为三个字段
(认证类型,控制类型,PAM模块及其参数)
1.6 PAM安全认证流程
1.7 sudo机制提权
1.8 终端登录安全控制
二.端口扫描
2.1 网络端口扫描
NMAP 是一个强大的端口扫描类安全评测工具,官方站点是 http://nmap.org/。NMAP 被设计为检测众多主机数量的巨大网络,支持 ping 扫描、多端口检测、OS 识别等多种技术。使用 NMAP 定期扫描内部网络,可以找出网络中不可控的应用服务,及时关闭不安全的服务,减小安全风险。
1.安装 NMAP 软件包
在 CentOS 7 系统中,既可以使用光盘自带的 nmap-6.40-7.el7.x86_64.rpm 安装包, 也可以使用从 NMAP 官方网站下载的最新版源码包,这里以 YUM 方式安装的 nmap 软件包为例。
[root@localhost ~]# yum install -y nmap
2.扫描语法及类型
NMAP 的扫描程序位于/usr/bin/nmap 目录下,使用时基本命令格式如下所示。
nmap [扫描类型] [选项] <扫描目标…>
2.2 扫描端口的用法
1.扫描常用的TCP端口
#nmap 127.0.0.1
2.扫描常用的UDP端口
#nmap -sU 127.0.0.1
3.扫描21端口查看192.168.1.0/24网段中有哪些主机提供FTP服务
#nmap -p 21 192.168.1.0/24
4.快速检测192.168.1.0/24网段的有多少存活的主机(能ping通)
#nmap -n -sP 192.168.1.0/24
5.检测IP地址位于192.168.1.100-200的主机是否开启文件共享服务
#nmap -p 139,445 192.168.1.100-200
三. 弱口令检测
通过使用John the RIpper,可以检测Linux系统用户的密码强度
下载并安装John the Ripper,官网http://www.openwall.com/john/
##tar zxvf john-1.9.0.tar.gz
doc 手册文档
scr 源码文件
#make clean linux-x86-64 执行编译过程
run 运行程序
编译完成后,会在run目录下生成一个名为john的可执行程序
自定义密码字典破解 shadow文件密码
#vi /opt/liangpeihua.txt ##在文件里编译一些密码##
#./john --wordlist=/opt/liangpeihua.txt /root/shadow.txt
或者:./john --w:/opt/liangpeihua.txt /root/shadow.txt
#vi /john.pot ##在/john.pot里查看破解后的密码##
暴力破解,使用默认提供的字典文件passwd.1st
#[root@locallhost run]./john --wordlist=./passwd.1st /root/shadow.txt
#vi /john.pot