目录
一:账号安全控制
1.基本安全措施
(1)系统账号清理
(2)密码安全控制
(3)命令历史,自动注销
2.用户切换与提权
(1)su命令的用法
(2)PAM认证
3.sudo命令 --提升执行权限
(1)在配置文件/etc/sudoers中添加授权
(2)通过sudo执行特权命令
二:系统引导和登录控制
1.开关机安全控制
(1)调整BIOS引导设置
(2)限制更改GRUB引导参数
2.终端及登录控制
(1)禁止root用户登录
(2)禁止普通用户登录
三:弱口令检测,端口扫描
1.弱口令检测--John the Ripper
(1)下载并安装John the Ripper
(2)检测弱口令账号
2.网络扫描-NMAP
(1)安装NMAP软件包
(2)扫描语法及类型
(3)扫描操作示例一
(4)扫描示例二
(5)扫描示例三
(6)扫描示例四
一:账号安全控制
用户账号是计算机使用者的身份凭证或标识,每个要访问系统资源的人,必须凭借其用户账号才能进入计算机。在Linux系统中,提供了多种机制来确保用户账号的正当、安全使用。
1.基本安全措施
(1)系统账号清理
在Linux系统中,除了用户手动创建的各种账号之外,还包括随系统或程序安装过程而生成的其他大量账号。除了超级用户root之外,其他大量账号只是用来维护系统运作、启动或保持服务进程,一般是不允许登录的,因此也称为非登录用户账号。
常见的非登录用户账号包括 bin、daemon、adm、lp、mail 等。为了确保系统安全,这些用户账号的登录 Shel1 通常是/sbin/nologin,表示禁止终端登录,应确保不被人为改动,如下所示、

各种非登录用户账号中,还有相当一部分是很少用到的,如game5。这些用户账号可以视为冗余账号,
直接删除即可。除此之外,还有一些随应用程序安装的用户账号,若卸载程序以后未能自动删除,则需要 管理员手动进行清理。
对于Linux服务器中长期不用的用户账号,若无法确定是否应该刷除,可以智时将其锁定。例如,
若要锁定、解锁名为zhangsan的用户账号,可以执行以下操作(passad、usermod命令都可用来锁定、 解锁账号)
锁定账号:
解锁账号:
如果服务器中的用户账号己经固定,不再进行更改,还可以采取领定账号配置文件的方法。使用
chattr命令,分别结合“+i ” “-i”选项来锁定、解锁文件,使用lsattr命令可以查看文件锁定情况
锁定文件:

解锁文件:

在账号文件被锁定的l情况下,其内容将不允许变更,因此无法添加、删除账号,也不能更改用户的密
码、登录 Shell、宿目录等属性信息。
(2)密码安全控制
在不安全的网络环境中,为了降低密码被猪出或被暴力破解的风险,用户应养成定期更改密码的习惯,
避免长期使用同一个密码。管理员可以在服务器端限制用户密码的最大有效天数,对于密码已过期的用户 登录时将被要求重新设置密码,否则将拒绝登录。
执行以下操作可将密码的有效期设为30天(chage命令用于设置密码时限)
针对于已存在用户

针对于新用户


执行以下操作可强制要求用户 zhangsan 下次登录时重设密码

(3)命令历史,自动注销
shell环境的命令历史机制为用户提供了极大的便利,但另一方面也给用户带来了潜在的风险。只要 获得用户的命令历史文件,该用户的命令操作过程将会一览无余,如果曾经在命令行输入明文的密码,则 无意之中服务器的安全壁垒又多了一个缺口。
Bash终编环境中,历史命令的记录条数由变量HISTSIZE控制,默认为1000条。通过修改 /etc/profle文件中 HISTSIZE变量值,可以影响系统中的所有用户。
查看历史命令
示例:可以设置最多只记录 200条历史命令。
除此之外,还可以修改用户宿主目录中的~/,bash-logout文件,添加清空历史命令的操作语句。 这样,当用户退出己登录 Bash环境以后,所记录的历史命令将自动清空。

bash终增环境中,还可以设置一个闲置超时时间,当超过指定的时间没有任何输入时即自动注销终
端,这样可以有效避免当管理员不在时其他入员对服务器的误操作风险。闲置超时由变量TMOUT来控制。 默认单位为秒(s)。

2.用户切换与提权
大多数Linux服务器并不建议用户直接以root用户进行登录。一方面可以大大减少因误操作而导 致的破坏,另一方面也降低了特权密码在不安全的网络中被泄露的风险。整于这些原因,需要为普通用户
提供一种身份切换或权限提升机制,以便在必要的时候执行管理任务。
Linux系统为我们提供了su、sudo两种命令,其中su命令主要用来切换用户,而sudo命令用
来提升执行权限,下面分别进行介绍。
(1)su命令的用法
使用su命令,可以切换为指定的另一个用户,从而具有该用户的所有权限。当然,切换时需要对目
标用户的密码进行验证(从root用户切换为其他用户时除外)
示例:使用 su 切换用户zhangsan

默认情况下,任何用户都允许使用su命令,从而有机会反复尝试其他用户(如root)的登录密码,
这样带来了安全风险。
所以系统默认禁止普通用户使用 su 登录root,但可以借助于pamwheel认证模块,只允许极个别
用户使用su命令进行切换
实现过程如下:将授权使用su命令的用户添加到wheel组,修改 /etc/pam.d/su 认证配置以启用 pam_wheel 认证。

(2)PAM认证
PAM(PluggableAuthenticationrodules),是Linux系统可插拔认证模块,是一种高效而且灵
活便利的用户级别的认证方式,它也是当前Linux服务器普遍使用的认证方
PAM提供了对所有服务进行认证的中央机制,适用于login,远程登录(telnet,rlogin,fsh,ftp),
su等应用程序中。系统管理员通过PMM配置文件来制定不同应用程序的不同认证策略。
PAM认证原理如下:
-
认证一般遵循的顺序:5ervice(服务)-PA(配置文件)+pam_“so
-
认证首先要确定哪一项服务,然后加载相应的PA的配置文件(位于/etc/pam.d下),
后调用认证文件(位于/lib/security下)进行安全认证;
-
户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不
同的应用程序所对应的 PAM 模块也是不同的
如果想查看某个程序是否支持PAN认证,可以用15命令进行查看,例如执行以下命令可以查看su
是否支持 PAM模块认证。

su 的 PAM 配置文件的具体内容如下所示。

每一行都是一个·独立的认证过程
每一行可以区分为三个字段:
认证管理(authentication management):接受用户名和密码, 进而对该用户的密码进行认证;
户管理(accountmanagenent);检查帐户是否被允许登录系统,帐号是否已经过期,帐号的登
录是否有时间段的限制等;
密码管理(passwordmanagement);主要是用来修改用户的密码:
会话管理(session management):主要是提供对会话的管理和记账。
制类型也可以称做Contro1F1ags,用于PAN验证类型的返回结果。
-
required 验证失败时仍然继续,但返回 Fail
-
sufficient 验证成功则立即返回,不再继续,否则忽略结果并继续
-
optional不用于验证,只是显示信息(通常用于 session 类型)
3.sudo命令 --提升执行权限
(1)在配置文件/etc/sudoers中添加授权
sudo机制的配置文件为/etc/sudoers,文件的默认权限为440,需使用专门的visudo工具进行 编辑。虽然也可以用vi进行编辑,但保存时必须执行“w”命令来强制操作,否则系统将提示为只读 文件而拒绝保存。
配置文件/etc/sudoers中,授权记录的基本配置格式如下所示
user MACHINE=COMMANDS
授权配置主要包括用户、主机、命令三个部分,即授权哪些人在哪些主机上执行哪些命令。各部分的 具体含义如下。
-
用户(user):直接授权指定的用户名,或采用“%组名”的形式(授权一个组的所有用户
-
主机(MAHINE):使用此配置文件的主机名称。此部分主要是方便在多个主机间共用同一份
sudoers文件,一般设为 localhost 或者实际的主机名即可。
-
命令(COMMANDS):允许授权的用户通过sudo方式执行的特叔命令,需填写命令程序的完整
路径,多个命令之间以逗号“,”进行分隔。
如,若要授权用户zhangsan可以执行/sbin/目录下除ifconfig route 以外的其他所有命令程序,可以执行以下操作。
(2)通过sudo执行特权命令
对于已获得授权的用户,通过sudo方式执行特权命令时,只需要将正常的命令行作为sudo命令的
参数即可。由于特权命令程序通常位于/sbin、/usr/sbin等目录下,普通用户执行时应使用绝对路径
以下操作验证了使用 sudo 方式执行命令的过程。

若要查看用户自己获得哪线sudo授权,可以执行“sudo-1”命令,未授权的用户将会得到“maynot
runsudo”的提示,己授权的用户则可以看到自己的sudo配置。

二:系统引导和登录控制
1.开关机安全控制
对于服务器主机,其物理环境的安全防护是非常重要的,不仅要保持机箱完好、机柜锁闭,还要严格
控制机房的人员进出、硬件设备的现场接触等过程。在开关机安全控制方面,除了要做好物理安全防护以 外,还要做好系统本身的一些安全措施。
(1)调整BIOS引导设置
-
第一优先引导设备(F1rst BootDev1ce)设为当前系统所在磁盘
-
止从其他设备(如光盘、U盘、网络等)引导系统,对应的项设为“Disabled“
-
BIOS的安全级别改为“setup”,并设置好管理密码,以防止未授权的修改
(2)限制更改GRUB引导参数
在之前的课程中介绍过通过修改GRUB引导参数,对一些系统问题进行修复。从系统安全的角度来看, 如果任何人都能够修改6UB引导参数,对服务器本身显然是一个极大的威胁。为了加强对引导过程的安 全控制,可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数
为GRUB菜单设置的密码建议采用“grub2-mkpasswd-pbkdf2”命令生成,表现为经过PKDF2算
法加密的字符串,安全性更好。生成密码后在/etc/grub,d/oeheader配置文件中,添加对应的用户、
密码等配置,具体添加内容如下所示。
根据提示指定密码:



使用grub2-mkconfig命令生成新的grub,cfg配置文件

通过上述配置,重新开机进入GRU8菜单时,按E键将无法修改引导参数。若要获得
编辑权限,必须根据提示输入正确的6RUB密码,如图所示。

2.终端及登录控制
在Linux服务器中,默认开启了六个tty终端,允许任何用户进行本地登录。关于本地登录的安
全控制,可以从以下几个方面着手
(1)禁止root用户登录
在Linux系统中,1og1n程序会读取/etc/securetty文件,以决定允许root用户从哪些络编(安 全终端》登录系统。若要禁止root用户从指定的终确登录,只需从该文件中删除或者注释掉对应的行即 可
例如:若要禁止root用户从tty5、tty6登录,可以修改/etc/securetty文件,将tty5、tty6 行注释掉


(2)禁止普通用户登录
当服务器正在进行备份或调试等维护工作时,可能不希望再有新的用户登录系统。这时候,只需要简
单地建立/etc/nologtn文件即可。login程序公检查/etc/nologin文件是否存在,如果存在,则拒
绝普通用户登录系统(root 用户不受限制)。
三:弱口令检测,端口扫描
1.弱口令检测--John the Ripper
Johnthe Ripper是一款开源的密码破解工具,能够在已知带文的情况下快速分析出明文的密码字 段,文持DE5、MD5等多种加密算法,而且允许使用密码字典(包含各种密码组合的列表文件)来进行暴力破解。通过使用]ohntheRipper,可以检测Linux/UNIx系统用户账号的密码强度
(1)下载并安装John the Ripper
Johnthe Ripper的官方网站是http://aw.openwall,com/john/,通过该网站可以获取稳定版
源码包,如 john-1.8,0,tar,gz。

切换到src子目录并执行“makecleanlinux~x86-64”命令,即可执行编译过程,若单独执行make
命令,将列出可用的编译操作、文持的系统类型。编译完成以后,run子目录下会生成一个名为john的
可执行程序。

确认可执行程序

(2)检测弱口令账号
在安装有]ohntheRipper的服务器中,可以直接对/etc/shadow文件进行检测。对于其他Linux
服务器,可以对shadow文件进行复制,并传递给john程序进行检测,只需执行run目录下的john程序,将待检测的shadow文件作为命令参数行:
准备待破解的密码文件:
执行暴力破解:
默认情况下,john将针对常见的弱口令设置特点,尝试破 解已识别的所有密文字串,如果检测的时间太长,可以按Ctrl+C组合键强行终止。 破解出的密码信息 自动保存到john.pot文件中,可以结合“--show”选项进行查看。

2.网络扫描-NMAP
NMAP是一个强大的端口扫描类安全评测工具,官方站点是http://nmap.org/。NMAP 被设计为检测众多主机数量的巨大网络,支持ping 扫描、多端口检测、OS识别等多种技术。使用NMAP 定期扫描内部网络,可以找出网络中不可控的应用服务,及时关闭不安全的服务,减小安全风险。
(1)安装NMAP软件包
在 Linux系统中,既可以使用光盘自带的nmap-6.40-7.e17.x86_64.rpm 安装包,也可以使用从NMAP 官方网站下载的最新版源码包,这里以YM方式安装的nmap 软件包为例。

(2)扫描语法及类型
NMAP 的扫描程序位于/usr/bin/nmap 目录下,使用时基本命令格式如下所示
nmap[扫描类型][选项]<扫描目标...>
其中,扫描目标可以是主机名、IP地址或网络地址等,多个目标以空格分隔;常用的选项有“-p”“-n”分别用来指定扫描的端口、禁用反向DNS解析(以加快扫描速度);扫描类型决定着检测的方式,也直接影响扫描的结果。
比较常用的几种扫描类型如下。
- -sS,TCPSYN 扫描(半开扫描):只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放
- -sT,TCP连接扫描:这是完整的TCP扫描方式,用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放。
- -sF,TCPFIN 扫描:开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对SYN 数据包进行简单过滤,而忽略了其他形式的TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性。
- -sU,UDP扫描:探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢。
- -SP,ICMP 扫描:类似于ping检测,快速判断目标主机是否存活,不做其他扫描。
- -P0,跳过ping检测:这种方式认为所有的目标主机是存活的心当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描。
(3)扫描操作示例一
针对本机进行扫描,检查开放了哪些TCP端口,UDP端口
扫描常用的TCP端口

扫描常用的UDP端口

(4)扫描示例二
检测192.168.4.0/24网段中有哪些主机提供FTP服务

(5)扫描示例三
快速检测192.168.4.0/24网段中有哪些主机存活(能ping通)

(6)扫描示例四
检测ip位于192.168.4.100~200的主机是否开放文件共享服务
