系统安全及应用
一、账号安全控制
【1】基本安全措施
(1)系统账号清理
1)将非登陆用户的shell设为/sbin/nologin
Usermod -s /sbin/nologin 用户名 ###########该用户不允许登录
Usermod -s /bin/bash 用户名 ##############默认,允许登录
2)锁定长期不使用的账号
Usermod -L 用户名 ###########锁定账号
Usermod -U 用户名 ##############解锁账号
Passwd -S 用户名 ##############显示密码信息
3)删除无用的账号
Userdel -r 用户名
4)锁定账号文件passwd、shadow
chattr +i /etc/passwd /etc/shadow ############锁定账号文件
lsattr /etc/passwd /etc/shadow ##############查看是否锁定
Chattr -i /etc/passwd /etc/shadow #############解锁账号文件
(2)密码安全控制(chage)
-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数。
-w:用户密码到期前,提前收到警告信息的天数。
-E:帐号到期的日期。过了这天,此帐号将不可用。
-d:上一次更改的日期。
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
1)设置密码有效期
Chage -M 60 用户名 ##############对已有用户设置密码最大有效天数是60天
Vi /etc/login.defs ###############还没有建的用户永久设置密码有效期60天
PASS_MAX_DAYS 9999(60)
2)要求用户下次登录重新设置密码
Chage -d 0 用户名
(3)命令历史,自动注销
1)减少记录的命令条数
Vi /etc/profile HISTSIZE=200多少行命令
Source /etc/profile 生效命令
Export histsize=200 临时环境
2)注销时自动清空命令历史
Vim .bash_logout history -c clear
Cd /home/zhangsan
Vim .bash_logout history -c clear
3)闲置600秒后自动注销
Echo ”export TMOUT=600” >> /etc/profile
Source /etc/profile
【2】用户切换与提权
(1)使用su命令切换用户
用途:substitute user,切换用户
格式:su - 目标用户
(2)查看su操作记录
安全日志文件:/var/log/secure
(3)su命令的缺点
Su切换root必须要有密码,但root密码是超级用户的。为解决这个问题,使用下面这个命令
(4)Sudo(提升权限)命令的用途及用法
1)用途:以其他用户身份(root)执行授权的命令
2)用法:sudo+命令
3)配置sudo授权
配置文件:Visudo或者vi /etc/sudoers
记录格式:用户 主机名列表=命令程序列表
用户(zhangsan)localhost=/sbin/**. !/sbin/reboot(不包括的命令)
切换张三:sudo ifconfig ens33:0 192.168.60.23/24 ######ifconfig查看会有一个网络子接口的ip地址
4)如果对多个用户进行限制,可使用wheel组,把用户加入到这个组里面,在visudo里面修改组的配置文件:%wheel(对所有组)ALL(任何主机)=all(任何命令)。设置主机别名User Aliases ADMINS=用户名,主机的别名:Host Alias MATLSERVERS=主机名,命令的别名:command Aliases NETWORKING=命令绝对路径
ADMINS MATLSERVERS=NETWORKING(组合使用)
5)查看sudo操作记录
需启用defaults logfile配置
默认日志文件:/var/log/sudo
在visudo中行末加入defaults=/var/log/sudo
查询授权sudo操作:sudo -l
【3】PAM安全认证
Pluggable Authentication Modules可插拔式认证模块(可配置某个用户有什么使用命令)
(1)su命令的安全隐患
默认情况下,任何用户都使用su命令,从而有机会反复尝试其他用户(root)的登录密码,带来安全风险。为了加强su命令的使用机制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换。
(2)PAM可插拔认证模块
它是一种高效而灵活便利的用户级别的认证方式,也是Linux系统普遍使用的认证方式。可编辑,可定制。
(3)PAM服务及应用
提供了对所有服务进行认证的中央机制(下面的服务都交给PAM进行处理),适用于login,远程登录,su等应用程序中。
(4)PAM配置文件制定
管理员通过PAM配置文件来制定不同应用程序的不同的认证策略
(5)PAM认证原理
PAM一般遵循的顺序:service(服务)–PAM(配置文件)–pam_*.so(模块),首先确定哪一项服务,然后加载相应的pam的配置文件(/etc/pam.d),最后调用认证文件(/lib/security)进行安全认证,用户访问服务器的时候,服务器的某一服务程序把用户的请求发送到PAM模块进行认证,不同的应用程序所对应的PAM模块也是不同的。
如果想查看某个程序是否支持PAM认证,可以用ls命令进行查看,例如查看su是否支持PAM模块认证:ls /etc/pam.d |grep su
(6)PAM认证的构成
例如查看su的PAM配置文件:cat /etc/pam.d/su
每一行都是一个独立的认证过程,并且可以分为三个字段:认证类型、控制类型、PAM模块及参数
(7)常见的四种认证类型
1)认证管理:接收用户和密码,进而对该用户的密码进行认证
2)账户管理:检查账户是否允许登录系统,是否过期,是否有时间限制等。
3)密码管理:主要是用来修改用户的密码
4)会话管理:主要是提供对会话的管理和记账(等于一个界面,简单来说是连接,但比连接复杂)
(8)控制类型
用于PAM验证类型的返回结果,主要有一下四种:
1)required:验证失败仍然继续,但返回fail
2)Requisite:验证失败立即结束整个过程,返回fail
3)Sufficient:验证成功则立即返回,不再继续,否则忽略结果则继续往下认证
4)Optional:不用于验证,只显示信息(通常用于session类型)
(9)案例说明
控制用户使用su命令进行切换
步骤:
1)启用/etc/pam.d/su中的pam_wheel模块
Auth required pam_wheel.so use_uid
Pam_rootok:检查用户是否为超级用户,如果是超级用户(UID=0)则无条件地通过认证。
pam_wheel:只允许wheel组的用户有超级用户的存取权限
2)添加授权用户tom到wheel组中
gpasswd -a tom wheel
Grep wheel /etc/group
3)测试
tom可以切换到root,其他用户不能切换。
二、系统引导和登录控制
【1】调整BIOS引导设置
将第一引导设备设为当前系统所在硬盘,禁止从其他设备(光盘、U盘、网络)引导系统,将安全级别设为setup,并设置管理员密码。
【2】禁用重启热键Ctrl+alt+del
避免因用户操作导致重启
Vi /etc/init/control-alt-del
在start on和exec /sbin前面加#注释掉
【3】grub菜单限制
未经授权禁止修改启动参数
未经授权禁止进入指定系统
(1)密码设置方式(grub.conf)
Password 明文密码串
Password --md5 加密密码串
(2)密码记录位置
全局部分(第一个title之前)
系统引导部分(每个title部分之后)
(3)grub限制的实现
1)使用grub-md5-crypt获得加密的字符串
2)备份并修改grub.conf(它的软连接是menu.lst)文件,添加密码记录
3)进入这个配置文件在第一个title之前添加:passwd --md5 加密字符串
4)重启,按照提示按“p”进入单用户模式就可以修改root用户的密码了。
【4】终端登录安全控制
(1)减少开放终端个数
Vi /etc/init/start-ttys.conf
修改env ACTIVE_CONSOLES=/dev/tty[456]
Vi /etc/sysconfig/init
ACTIVE_CONSOLES=/dev/tty[456]重启
(2)限制root只在安全终端登录,配置文件/etc/securetty.
#tty5 #tty6 …
(3)禁止普通用户登录
在/etc/nologin文件,删除就可以恢复。当服务器正在备份或者调试等维护工作时,可能不希望再有新的用户登录。
[root@localhost~]#touch /etc/nologin
三、弱口令监测和端口扫描
【1】弱口令监测—John the Ripper
通俗点来说就是管理员找到弱口令账户,采取进一步的安全措施。
步骤:
(1)安装JR工具
上传下载的JR压缩包到系统/root目录中
[root@localhost~]#tar zxvf john-1.11.0.tar.gz
[root@localhost~]#cd john-1.11.0
[root@localhost john-1.11.0]#ll
####是否有相关目录run、src、doc等#####
[root@localhost john-1.11.0]#cd /src
[root@localhost src]#make clean Linux-x86-64
[root@localhost src]#ll ./run/john
####确认已生成可执行程序john#######
(2)检测弱口令账号
[root@localhost run]#cp /etc/shadow /root/shadow.txt
[root@localhost run]#./john /root/shadow.txt //执行暴力破解
[root@localhost run]#./john --show /root/shadow.txt
(3)密码文件的暴力破解
[root@localhost run]#:>john.pot //覆盖式清空列表
[root@localhost run]#./john --wordlist=./passwd.lst /root/shadow.txt //JR默认提供的字典文件为passwd.lst。
【2】网络端口扫描—NMAP
Nmap 扫描类型 选项 扫描目标(主机,服务等)
(1)常用的扫描类型
-sS,tcp syn扫描(半开)
-sT,tcp 连接扫描(全开)
-sF,tcp fin扫描(闭着的端口会回应rst包)
-sU,udp扫描
-sP,ICMP扫描
-P0,跳过ping检测扫描
【3】网络端口扫描的应用
(1)针对本机进行扫描,检查开放了那些常用的TCP端口,UDP端口
(2)检查192.168.60.0/24网段中有哪些主机提供FTP服务
(3)快速检测192.168.60.0/24中有哪些存活的主机
(4)检测IP地址位于192.168.60.10-100的主机是否开启文件共享服务