Linux 系统安全及应用(账号安全和引导登录控制)
一、账号安全控制
1.1 系统账号清理
将非登录用户的shell设置为 /sbin/nologin
锁定长期不使用的账号
删除无用的账号
锁定帐号文件passwd和shadow
使用chattr命令,可以锁定文件;lsattr命令可以查看权限
格式:chattr [选项] 文件名(可多跟)
格式:lsattr 文件名
-a 让文件和目录仅供附加用途,即只能往里面追加数据,但不能删除,适用于各种日志文件
-i 不得任意更动文件或目录
1.2 密码安全
-
对新建用户(适用于修改完文件后的新建用户)
对已存在用户
使用chage命令,对已存在用户进行修改
格式:chage [选项] [参数] [用户名]
-m 密码可更改的最小天数,0 代表任何时候都可以更改密码
-M 密码可更改的最小天数,0 代表任何时候都可以更改密码
-w 用户密码到期前,提前收到警告信息的天数
-E 帐号到期的日期,过了这天,此帐号将不可用
-d 上一次更改的日期
-I(大i) 停滞时期,如果一个密码已过期这些天,那么此帐号将不可用
-l 例出当前的设置,由非特权用户来确定他们的密码或帐号何时过期
1.4 设置超时时间
即超过多长时间,系统自动登出
1.5 su命令
su,全称 switch user,切换用户
- 格式:su 用户名
非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不完全切换
2 格式:su - 用户名
登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切换
(注:root su至其他用户无须密码;非root用户切换时需要密码)
我们在本章节要做的就是限制使用 su 命令的用户
1.6 sudo命令
sudo,全称 superuser do,允许系统管理员让普通用户执行一些或者全部的 root 命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录和管理时间,同样也提高了安全性;sudo使一般用户不需要知道超级用户的密码即可获得权限。
在一般用户需要取得特殊权限时,其可在命令前加上 sudo,此时sudo将会询问该用户自己的密码(以确认终端机前的是该用户本人),回答后系统即会将该命令的进程以超级用户的权限运行。之后的一段时间内(默认为5分钟,可在/etc/sudoers自定义),使用sudo不需要再次输入密码。由于不需要超级用户的密码,部分Unix系统甚至利用sudo使一般用户取代超级用户作为管理帐号,例如Ubuntu、Mac OS X等。
sudo特性:
sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示联系管理员
sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器
sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票
sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0440
root:列名为user,即用户
第一个ALL:列名为登入主机,可以是主机名,也可以是主机IP
第二个ALL:(ALL),列名为代表用户,即用什么样的用户身份来执行命令
第三个ALL:列名为运行命令,必须使用绝对路径
%wheel:列名为组,开头必须加%,其余都一样
同样,sudoers文件也支持别名
sudo别名有四种类型:
User_Alias(用户)
Runas_Alias(代表用户)
Host_Alias(登录主机)
Cmnd_Alias(命令)
User_Alias MYUSERS=hang,hang5
Host_Alias MYHOSTS=ALL
Runas_Alias RUN=(root)
Cmnd_Alias MYCMNDS=/sbin/*,!/sbin/reboot,!/sbin/poweroff,!/sbin/init,!/usr/bin/rm
MYUSERS MYHOSTS=(root) NOPASSWD:MYCMNDS
这条命令的意思是:hang 和 hang5 可以通过所有主机登入,并且可以使用 root 权限执行除 reboot、poweroff、init、rm 之外的所有超级管理员命令。
还有子目录:
vim /etc/sudoers.d/test,在 /etc/sudoers.d目录下创建一个test文件
所以,我们要将test文件权限设置为只读,这样别人无法修改test文件,而我们如果忘记了root密码,可以根据test文件中的设置的用户登录,从而再次获得管理员权限。
二、系统引导和登录控制
2.1开关机安全控制
2.1.1调整BIOS引导设置原则
将第一引导设备设为当前系统所在硬盘;
禁止从其他设备(光盘、 U盘、网络)引导系统;
将安全级别设为setup,并设置管理员密码。
禁用重启热键:Ctrl+Alt+Delete 避免因用户误操作重启
2.1.2GRUB菜单设置
未经授权禁止修改启动参数
未经授权禁止进入指定系统
2.1.3GRUB限制的实现
通常情况下在系统开机进入GRUB菜单时,按e键可以查看并修改GRUB引导参数,这对服务器是一个极大的威胁。可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。
使用grub2-mkpasswd-pbkdf2获得加密字符串;
修改/etc/grub.d/00_ header文件中, 添加密码记录;
生成新的grub.cfg配置文件。
法一:
使用grub2-mkpasswd-pbkdf2生成密钥并复制,然后备份两个配置文件。
修改/etc/grub.d/00_ header文件中, 添加密码记录,并存并退出
法二:
直接设置grub2—setpasswd 设置grub密码
生成新的grub.cfg文件,然后重启系统
验证结果
法一:
法二:
2.2终端及登录控制
2.2.1限制root用户只在安全终端登录
安全终端配置:/etc/securetty
步骤:
更改相关配置文件
切换至指定终端进行测试
切换至其他终端进行测试
2.2.2禁止普通用户登录
建立/etc/nologin文件
删除nologin文件或者重启后即恢复正常
三、弱口令检测、端口扫描
3.1弱口令检测—Joth the Ripper
一款密码分析工具,支持字典式的暴力破解;
通过对shadow文件的口令分析,可以检测密码强度;
官方网站:John the Ripper password cracker
3.1.1Joth the Ripper实例
安装方法 make clean 系统类型
主程序文件为john
把下载好的安装包用过rz命令下到目录opy下(sz可以把linux系统中的文件传到自己的windows系统中):
[root@localhost ~]#cd /opt
[root@localhost ~]#rz
[root@localhost opt]#ls
john-1.8.0.tar.gz
解压
[root@localhost opt]#tar zxvf john-1.8.0.tar.gz
安装软件编译工具
[root@localhost src]#yum install gcc gcc-c++ make -y
进行编译安装
[root@localhost src]#make clean linux-x86-64
准备待破解的密码文件
[root@localhost src]#cd … 切换至上级目录
[root@localhost src]#cp /etc/shadow /opt/shadow.txt 准备密码文件
执行暴力破解
[root@localhost src]#cd /opt/john-1.8.0/run/
[root@localhost run]#./john /opt/shadow.txt
7.查看已经破解出的密码
[root@localhost run]#./john --show /opt/shadow.txt
3.2网络扫描—NMAP
一款强大的网络扫描、安全 检测工具
官方网站:Nmap: the Network Mapper - Free Security Scanner
CentOS 7.3光盘中安装包 nmap-6.40-7.el7.x86_64.rpm
控制位:
控制位
SYN 建立链接
ACK 确认
FIN 结束断开
PSH 传送 0 数据缓存 上层应用协议
RST 重置
URG 紧急
常用格式:
nmap [扫描类型] [选项] <扫描目标>
netstat natp #查看正在运行的使用TCP协议的网络状态信息
netstat -natp | grep httpd #实际操作(httpd换成80也可以)
netstat -naup #查看正在运行的使用UDP协议的网络状态信息
[root@localhost run]#rpm -qa|grep nmap 查看nmap
[root@localhost run]#yum install -y nmap 安装nmap
常见 的选 项 选项的作用
-p 指定扫描的端口。
-n 禁用反向DNS解析(以加快扫描速度)
-sS TCP的SYN扫描(半开扫描),只向目标发出SYN数据包,如果收到SYNACK响应包就认为目标端口正在监听,并立即断开连接; 否则认为目标端口并未开放。
-sT TCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否 则认为目标端口并未开放。
-sF TCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对SYN数据包进行简单过滤,而 忽略了其他形式的TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性。
-sU UDP扫描,探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢。
-sP ICMP扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描。
-P0 跳过ping检测,这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放 弃扫描。
natstat常用选项 作用
-a 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)。
-n 以数字的形式显示相关的主机地址、端1等信息。
-t 查看TCP相关的信息。
-u 显示UDP协议相关的信息。
-p 显示与网络连接相关联的进程号、进程名称信息(该选项需要root权限)
-r 显示路由表信息。
-l 显示处于监听状态的网络连接及端口信息。
示例:
分别查看本机开放的TCP端口、UDP端口
检测192.168.59.0/24网段有哪些存活主机