主要内容:
一、账号安全控制。
二、系统引导和登录控制。
三、弱口令检测。
四、端口扫描。
一、账号安全控制
1.系统账号清理
(1)将非登录用户的Shell设为/sbin/nologin
首先我们用命令“grep "bash$" /etc/passwd”查看一下可以登录的用户。
如果我们不想让“lisi”这个用户登录,我们可以用”usermod -s /sbin/nologin”命令禁止他登录,再去切换“lisi”用户发现不能登录。
(2)锁定长期不使用的账号
锁定与解锁账号有两组命令,“passwd -l”与“passwd -u”命令、“usermod -L”与“usermod -U”命令。我们分别演示一下,显示密码信息用的是“passwd -S”命令。
(3)删除无用的账号
删除账户用的是“userdel”命令,我们可以用“-r”选项,在删除用户时连同用户目录一同删除。
(4)锁定账号文件passwd、shadow
当我们不想别人在系统创建新的用户时,可以锁定账号文件passwd、shadow。用“lsattr”命令查看文件的锁定状态。“chattr +i”命令锁定账号文件,“chattr -r”命令解锁已经锁定的账号文件。此命令也可以用于其它文件。
2.密码安全控制
(1)设置密码有效期
用vim编辑器对“/etc/login.defs”配置文件中的“PASS_MAX_DAYS”后面的数值进行修改来改变密码有效期,不过这种方法只对新建用户有效,已存在用户是不会改变的。首先查看“lisi”用户的密码有效期是99999,相当于永久。
我们将“/etc/login.defs”配置文件中的“PASS_MAX_DAYS”后面的数值修改为30(密码有效期30天),然后查看“lisi”用户的密码有效期任然是99999(天)。
我们添加一个新用户“wangwu”,再查看“wangwu”用户的密码有效期是30(天)。
当我们想修改已有用户的密码有效期时,可以用“chage -M”命令来修改。
(2)设置用户下次登录时修改密码
我们用命令“chage -d 0 用户名”即可强制用户在下次登录时更改密码。但用了这条命令后,用户在更改密码就不能设置简单的密码了。密码最少8位字符,而且不能有连续的数字或字母(如:123、abc等)。
我们在终端用wangwu账户去登录,在输入密码后系统要求我们更改新密码,我输入“abcd1234”系统显示密码不合格。
当我输入“qwer2019”没有连续的数字、字母是时,密码设置成功。
3.命令历史限制
(1)减少记录的命令条数
我们在系统输入命令进行操作时,系统会自动记录历史命令,默认是记录1000条。我们用“history”命令可以查看。
有时候我们的命令历史中会有一些密码之类的隐私信息,别人很容易通过“history”命令查看到。所以我们可以通过减少记录命令的条数,来减少这种风险。直接用vim编辑器对“/etc/profile”配置文件进行修改即可。
修改完后是不会立即生效的,我们需要用“source /etc/profile”命令让它生效。再用“history”命令查看命令历史,命令历史记录条数已经变成10条了。
(2)注销时自动清空命令历史
前面我们知道命令历史可能会泄露我们的一些隐私信息,而且命令历史在系统注销后是不会清空的。如果我们想要在注销时自动清空命令历史,可以通过vim编辑器在“.bash_logout”配置文件里添加“history -c”与“clear”命令。
4.终端自动注销
我们可以设置终端闲置超时时间,当一段时间没有进行操作时系统自动自动注销终端。这样可以介绍别人趁我们不在时对系统进行操作的风险,通过vim编辑器在“/etc/profile”配置文件最后一行添加“export TMOUT”的时间即可。
在配置完毕别忘了用“source /etc/profile”命令让它生效。
二、系统引导和登录控制
1.su命令切换用户
(1)使用su命令切换用户(格式:su [-] 目标用户)
当我们想切换用户时可以用“su”命令,加上“-”选项将使用目标用户的登录Shell环境。root用“su”命令切换到任意用户都不需要密码验证,而普通切换到其他用户,需要验证目标用户的密码。“exit”命令可以返回到用“su”命令切换前的用户。
2.Linux中的PAM安全认证
(1)PAM简介:
全称PAM可插拔式认证模块(Pluggable Authentication Modules ),是由Sun提出的一种认证机制,通过提供一些动态链接库和一套统一的API,将系统提供的服务 和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。它是一种高效而且灵活便利的用户级别的认证方式,它也是当前Linux服务器普遍使用的认证方式。
(2)PAM认证原理:
- PAM认证一般遵循的顺序: Service (服务) →PAM (配置文件) →pam_* .so
- PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证
- 用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
- 不同的应用程序所对应的PAM模块也是不同的
(3)PAM认证的构成:
查看某个程序是否支持PAM认证,可以用Is命令进行查看,例如查看su命令是否支持PAM模块认证我们可以输入“ls /etc/pam.d | grep su”命令行。
查看su的PAM配置文件输入“cat /etc/pam.d/su”即可,其中每一行都是一个独立的认证过程,每一行可以区分为三个字段。认证类型、控制类型、PAM模块及其参数。
(4)PAM安全认证流程:
控制类型也可以称做ControlFlags,用于PAM验证类型的返回结果
- required验证失败时仍然继续,但返回Fail
- requisite验证失败则立即结束整个验证过程,返回Fail
- sufficient验证成功则立即返回,不再继续,否则忽略结果并继续
- optional不用于验证,只显示信息(通常用于session类型)
5.终端登录安全控制
(1)限制root只能在安全终端登录
当我们想限制root用户在某个终端上登录时,只需用vim编辑器将“/etc/securetty”文件里的那个终端加上“#”注释掉即可,例如我们不想root在tty10、tty11终端登录,直接把这两个终端注释掉。
(2)禁止普通用户登录
当我们对服务器进行备份或调试等工作时,不希望用户登录。可以直接建立一个/etc/nologin文件即可,删除文件或重启即可恢复登录。
三、弱口令检测
我们用到的工具是Joth the Ripper ,简称JR。是一款密码分析工具,支持字典式的暴力破解,通过对shadow文件的口令分析,可以检测密码强度。
官方网站:http://www.openwall.com/john/
首先咱们将自己本地的JR工具安装包匿名共享出去,同时用Linux输入“smbclient -L //192.168.100.3/ ”查看共享。
直接用“mount.cifs //192.168.100.3/share /mnt/”命令,将“share”文件夹挂载到“/mnt/”目录下。
我们先用“cd”命令进入“/mnt/”目录中,输入“tar -zxvf john-1.8.0.tar.gz -C /opt/”命令将工具包解压到“/opt/”目录。
用“cd”命令进入到“/opt/john-1.8.0/src/”源码包目录,但是源码包是用C语言写的,我们需要进行编译,所以我们需要用“yum install gcc gcc-c++ -y”命令安装编译工具。
直接用“make linux-x86-64”命令将源码包编译为适合系统版本的格式。
我们cd到脚本所在的“run”目录,然后输入命令“./john /etc/passwd /etc/shadow”让它去分析passwd和shadow文件,稍作等待就直接分析出我系统用户的密码(因为我这个密码较简单,有些密码复杂性强的是分析不出来的,能否分析出来主要跟它的字典有关,如果字典足够强悍也是可以分析出复杂的密码的)
四、端口扫描
我们用来扫描网络端口的是NMAP工具,它是一款强大的网络扫描、安全检测工具。
NMAP的扫描语法:nmap [扫描类型] [选项] <扫描目标...>
我们直接输入“yum install nmap -y”命令,来从yum源安装NMAP工具即可。
我们用命令“netstat -ntap”查看一下系统开启的TCP端口。如果查看UDP端口直接用命令“netstat -nuap”即可
用nmap工具扫描一下本地的TCP端口,输入“nmap -sT 127.0.0.1”。
扫描本地UDP端口直接输入“nmap -sU 127.0.0.1”即可。
最后附上一些常用的扫描类型:
扫描类型 | 例子 | 描述 |
---|---|---|
-sS | nmap -sS 192.168.1.1 | TCP SYN端口扫描(默认) |
-sT | nmap -sT 192.168.1.1 | TCP连接端口扫描(默认无root权限) |
-sU | nmap -sU 192.168.1.1 | UDP端口扫描 |
-P0 | nmap -P0 192.168.1.1 | 允许你关闭 ICMP pings |
-sP | nmap -sP 192.168.1.1 | 判断主机状态 |