LINUX系统安全及应用
账号安全基本措施
系统账号清理:
将非登录用户的shell设为/sbin/nologin

举例:usermod -s /sbin/nologin 用户名
锁定长期不使用的账号:
举例:usermod -L 用户名 usermod -U 用户名 passwd -l 用户名 passwd -u 用户名 passwd -S 用户名

删除无用的账号:
举例:userdel [-r] 用户名

锁定账号文件passwd,shadow
chattr +i /etc/passwd /etc/shadow 锁定文件
lsattr /etc/passwd /etc/shadow 查看文件状态
chattr -i /etc/passwd /etc/shadow 解锁文件
举例:
密码安全控制:
设置密码有效期
要求用户下次登录时修改密码:
[root@localhost~]#vi /etc/login.defs 修改密码配置文件,适用于新建用户
PASS_MAX_DAYS 30 修改密码有效期30天,适用于新建用户
[root@localhost~]#chage -M 30 liergou 修改密码有效期30天,适用于已有用户
[root@localhost~]#cat /etc/shadow | grep liergou
[root@localhost~]#chage -d 0 liergou 强制在下次登录时修改密码,并且shadow文件中第三个字段被修改为0
实例:新建用户修改密码配置文件


实例2:已有用户修改密码配置文件


实例3:强制用户下次登录时修改密码

命令历史限制
减少记录的命令条数
[root@localhost ~]#vim /etc/profile 修改配置文件
export HISTSIZE=200 修改命令历史记录数量最大200,export为全局有效
[root@localhost ~]#source /etc/profile 刷新配置文件并立即生效
登录时自动清空命令历史
[root@localhost ~]#vim ~/.bashrc 修改/etc/profile配置文件,每次切换bash都执行
vim /etc/profile 修改/etc/profile配置文件,只执行一次
echo " " > ~/.bash_history
实例:1减少记录的命令条数



实例2:自动清空历史命令


终端自动注销
闲置n秒后自动注销
[root@localhost ~]#vim /etc/profile
export tmout=100
实例1:设置100秒注销


使用su命令切换用户
用途和用法:
用途:substitute user 切换用户
格式 su - 目标用户 “-”代表切换到目标用户的家目录
密码验证:
root→任意用户,不验证密码
普通用户→其他用户,验证目标用户的密码
[jerry@localhost ~]$su - root 带“-”选项表示将使用目标用户的登录shell环境
口令:[root@localhost ~]#whoami 查看当前用户
实例:切换用户

限制使用su命令的用户
将允许使用su命令的用户加入wheel组
启用pam_wheel认证模块
[root@localhost ~]#gpasswd -a tsengyia wheel
正在将用户“tsengyia"加入到”wheel"组中
[root@localhost ~]#vim /etc/pam.d/su 编辑/etc/文件
实例:将liergou,lierdan用户和root用户之间切换


查看su操作记录:

LINUX中的PAM安全认证
su命令的安全隐患:
默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(root)的登录密码,带来安全风险
为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换
PAM(Pluggable Authentication Modules)可拔插式认证模块
是一种高效而且灵活便利的用户级别的认证方式
也是当前linux服务器普遍使用的认证方式
PAM认证原理
PAM认证一般遵循的顺序:service(服务)→PAM(配置文件)→PAM_*.so;,
PAM认证首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证模块(位于/lib64/security/下)进行安全认证
用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证,不同的应用程序所对应的PAM模块也是不同的
如果想查看某个程序是否支持PAM认证,可以用ls命令进行查看/etc/pam.d/
PAM的配置文件中的每一行都是一个独立的认证过程,他们按从上往下的顺序依次由PAM模块调佣

使用sudo机制提升权限
su命令的缺点
sudo命令的用途及用法:
用途:以其他用户身份(root)执行授权的命令
用法:sudo 授权命令
配置sudo授权
visudo或者vi /etc/sudoers
记录格式: 用户 主机名=命令程序列表
[root@localhost ~]#visudo
可以使用通配符“*"号任意值和”!“号进行取反操作
权限生效后输入密码5分钟可以不用重新输入密码
语法格式
用户 主机名=命令程序列表
用户 主机名=(用户)命令程序列表
liergou ALL=(root) /sbin.ifconfig 实际操作
用户:直接授权指定用户名。或采用“&组名”的形式(授权一个组全部用户)
主机名:使用此规则的主机名。没配置过主机名时可用localhost,有配过主机名就用实际主机名,ALL代表所有主机
用户:用户能够以何种身份来执行命令,此项可省略,缺省时以root用户身份运行命令
命令程序列表:允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以“,”号进行分隔,ALL则代表系统中的所有命令
启用sudo操作日志
需启用defaults logfile配置
默认日志文件:/var/log/sudo
操作:在/etc/sudoers末尾添加defaults logfile="/var/log/sudo"
查询授权的sudo操作
sudo -l
实例:查看当前sudo配置文件


实例:配置相关文件,使liergou可以通过sudo命令使用ifconfig
1.切换到liergou用户上先测试下

在sudo配置文件里末尾行插入下列命令

测试


系统引导和登录控制
1.调整BIOS引导设置
将第一引导设备设为当前系统所在硬盘
禁止从其他设备,如:光盘,U盘,网络等引导系统
将安全级别设为setup,并设置管理员密码
2.GRUB限制
使用grub2-mkpasswd-pbkdf2生成密钥
修改/etc/grub.d/00_ header文件中, 添加密码记录
生成新的grub.cfg配置文件
3.限制更改GRUB引导参数
通常情况下在系统开机进入GRUB菜单时,按e键可以查看并修改GRUB引导参数,这对服务器是一个极大的威胁。可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数
实例操作:
1.

2.使用grub2-mkpasswd-pbkdf2生成密钥并复制,然后备份两个配置文件





限制root只在安全终端登录
安全终端配置:/etc/securetty
tty1~ 6是文本型控制台,tty7 是X Window图形显示管理器。可以通过CtrI+Alt+F1 (F1-F7键) 切换到对应的登录控制台
实例:
1.更改配置文件

之后可以重启虚拟机用其他用户登录测试下,这里就不演示了
系统弱口令检测(Joth the Ripper,检测JR)
1.介绍:
一款密码分析工具,支持字典式的暴力破解;
通过对shadow文件的口令分析,可以检测密码强度;
官方网站:http://www.openwall.com/john
2.安装JR工具
安装方法 make clean 系统类型
主程序文件为john
3.检测弱口令账户
获得Linux/Unix服务器的shadow文件;
执行john程序,将shadow文件作为参数
4.密码文件的暴力破解
准备好密码字典文件,默认为psaaword.lst
执行john程序,结合–wordlist=字典文件(有更强大的字典可以使用).
实例操作:
1.首先将准备好的john工具包通过xshell直接拖到/opt目录下,并进行解压

2.编辑安装指定程序



3.准备待破解的密码文件,密码文件我们知道在/etc/passwd里面,我们复制这个文件到opt目录下面,并命名
cp /etc/shadow /opt/shadow.txt
4.运行程序进行暴力破解
cd /opt/john-1.8.0/run
/john /opt/shadow.txt
使用密码字典文件
john.pot #清空已破解出的账户列表,以便重新分析
./john --wordlist=./password.lst /opt/shadow.txt #使用指定的字典文件进行破解
网络端口扫描
NMAP
一款强大的网络扫描、安全 检测工具
官方网站:http://nmap.org/
CentOS 7.3光盘中安装包 nmap-6.40-7.el7.x86_64.rpm
nmap [扫描类型] [选项] <扫描目标>
netstat natp #查看正在运行的使用TCP协议的网络状态信息
[root@cheng0307 ~]# netstat -natp | grep httpd #实际操作(httpd换成80也可以)
netstat -naup #查看正在运行的使用UDP协议的网络状态信息
————————————————
常见的选项 选项的作用
-p 指定扫描的端口。
-n 禁用反向DNS 解析(以加快扫描速度)
-sS TCP的SYN扫描(半开扫描),只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放。
-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攻击包。这种类型的扫描可间接检测防火墙的健壮性。
-sU UDP扫描,探测目标主机提供哪些UDP 服务,UDP扫描的速度会比较慢。
-sP ICMP 扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描。
-P0 跳过ping检测,这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描
natstat命令常用选项:
常用选项 作用
-a 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)。
-n 以数字的形式显示相关的主机地址、端1等信息。
-t 查看TCP相关的信息。
-u 显示UDP协议相关的信息。
-p 显示与网络连接相关联的进程号、进程名称信息(该选项需要root权限)
-r 显示路由表信息。
-l 显示处于监听状态的网络连接及端口信息。
本文详细介绍了LINUX系统的安全措施,包括账号安全、su命令使用、PAM认证和sudo权限管理。讲解了如何清理和锁定账号,设置密码有效期,限制命令历史,以及如何启用sudo操作日志。此外,还探讨了系统引导和登录控制,如GRUB限制和限制root只在安全终端登录。最后,提到了弱口令检测工具Joth the Ripper的使用和网络端口扫描工具NMAP的应用。
5297





