linux系统安全与应用

一、账号安全控制

1.1 系统账号清理

1.将非登录用户的shell设为不可登陆
1)usermod -s /sbin/nologin 用户名 禁止用户登录
2)usermod -s /bin/false 用户名 禁止用户登录
2.锁定长期不使用的账号
1)usermod -L 用户名 锁定用户账户
2)passwd -l 用户名 锁定用户账户
3.删除无用的账号
userdel [-r] 用户名
4.锁定账号文件
1)chattr +i /etc/passwd /etc/shadow 锁定账号文件
2)lsattr /etc/passwd /etc/shadow 查看账号文件
3)chattr -i /etc/passwd /etc/shadow 解锁账号文件

1.2 密码安全控制

1.2.1 设置密码有效期

第一种方式:vi etc/login.defs (新建用户)

第二种方式:chage -M 30 test (已有用户)

1.2.2 要求用户下次登陆时更改密码

命令格式:chage -d 0 test


1.2.3 命令历史限制

减少记录的命令条数的第一种方法:history -c (暂时删除,重启又恢复了)

减少记录的命令条数的第二种方法:vi /etc/profile

登录时自动清空历史命令:vi ~/.bashrc


1.2.4 终端自动注销

修改配置文件 vi /etc/profile


1.3 su命令切换用户

1.3.1 用途及用法

1.用途:切换用户
2.格式:
1)su -目标用户 切换到目标用户的家目录
2)su 目标用户 还是本用户的家目录

1.3.2 密码验证

1.root→任意用户,不验证密码
2.普通用户→其他用户,验证目标用户的密码

1.3.3 限制使用su命令切换用户

步骤:1.将允许使用su命令的用户加入wheel组 2.启用pam_wheel认证模块



1.3.4 查看日志文件

1.4 PAM安全认证

1.4.1 su命令的安全隐患

1.默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险
2.为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换

1.4.2 PAM可插拔式认证模块

是一种高效而且灵活便利的用户级别的认证方式 也是当前Linux服务器普遍使用的认证方式

1.4.3 PAM认证原理

1.一般遵循的规律: Service(服务)→ PAM(配置文件)→ pam_*.so 2.首先要确定哪一项服务,然后加载相应的 PAM 的配置文件(位于 /etc/pam.d 下),最后调用认证文件(位于 /lib64/security 下)进行安全认证
3.用户访问服务器时,服务器的某一个服务程序把用户的请求发送到 PAM 模块进行认证
4.不同的应用程序所对应的 PAM 模块是不同的
5.如果想要查看某个程序是否支持 PAM 认证,可以使用 ls 命令,进行查看 /etc/pam.d/

1.4.4 每列解释(cat /etc/pam.d/su)

第一列代表PAM认证模块类型
内容 解释
auth 对用户身份进行识别,如提示输入密码,判断是否为root
account 对账号各项属性进行检查,如是否允许登录系统,账号是否已经过期,是否到达最大用户数等
password 使用用户信息来更新数据,如修改用户密码
session定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统
第二列代表PAM控制标记
内容 解释
required 表示需要返回一个成功值,如果返回失败,不会立即将失败结果返回,而是继续进行同类型的下一步验证,所有此类型的模块都执行完成后,再返回失败
requisite 与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败
sufficient 如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值
optional 不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于session类型)
include 表示在验证过程中调用其他的 PAM 配置文件。比如很多应用通过完整调用/etc/pam.d/system-auth (主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项
第三列代表PAM模块

1.默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径
2.同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数

第四列代表PAM模块的参数

1.根据所使用的模块进行添加,默认为空
2.传递给模块的参数,参数可以有多个,之间用空格分隔开

1.4.5 PAM安全认证流程


1.required验证失败时仍然继续,但返回Fail
2.requisite验证失败则立即结束整个验证过程,返回Fail
3.sufficient验证成功则立即返回,不再继续,否则忽略结果并继续
4.optional不用于验证,只显示信息(通常用于session类型)

1.5 使用sudo机制提升权限

1.5.1 su命令的缺点

默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险

1.5.2 sudo的用途和用法

1.用途:以其他用户身份(如root)执行授权的命令
2.用法:sudo 授权命令

1.5.3 配置sudo授权(visudo或者vi /etc/sudoers)

1.记录格式

用户 主机名=命令程序列表
用户 主机名=(用户) 命令程序列表
注:记录格式可使用通配符
1)* 代表表示所有
2)!代表取反符号,表示排除

2.记录说明
记录组成部分 说明
用户 直接授权指定的用户名,或采用“组名"的形式(权一个组的所有用户)
主机名 使用此规则的主机名。没配置过主机名时可用localhost,有配过主机名则用实际的主机名,ALL则代表所有主机
(用户) 用户能够以何种身份来执行命令。此项可省略,缺省时以root用户的身份来运行命令
命令程序列表 允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号 "," 进行分隔。ALL则代表系统中的所有命令
3.具体操作




1.5.4 查看sudo操作记录

第一步visudo进入配置文件
第二步提添加默认日志文件

第三步:查看(cat)

1.5.5 查询授权的sudo操作

sudo -l

二、开关机安全机制

2.1 调整BIOS引导设置

1.将第一引导设备设为当前系统所在盘
2.禁止从其他设备(光盘、U盘、网络)引导系统
3.将安全级别设为setup,并设置管理员密码

2.2 GRUB限制

2.2.1 概述

通常情况下在系统开机进入GRUB菜单时,按e键可以查看并修改GRUB参数,这对服务器是一个极大的威胁。这样我们可以为GRUB菜单设置一个密码,就能提高安全性了

2.2.2 简要操作

1.使用 grub2-mkpasswd-pbkdf2 密钥
2.修改 /etc/grub.d/00_header 件中,添加密码记录
3.生成新的 grub.cfg 配置文

2.2.3 具体操作







三、终端登录安全控制

3.1 限制root只在安全终端登录(/etc/securetty)



3.2 限制普通用户登录

1.建立/etc/nologin文件
2.删除nologin文件或重启即可恢复




四、系统弱口令检测

4.1 Joth the Ripper ,简称JR

1.一款密码分析工具,支持字典式的暴力破解
2.通过对 shadow 文件的口令分析,可以检测密码强度
3.官网网站:http://www.openwall.com/john/

4.2 安装JR工具

1.安装方法:make clean 系统类型
2.主程序文件为 john

4.3 检测弱口令账号

1.获得Linux/Unix服务器的shadow文件
2.执行john程序,将shadow文件作为参数

4.4 密码文件的暴力破解

1.准备好密码字典文件,默认为password.lst
2.执行john程序,结合–wordlist=字典文件

4.5 具体步骤

4.5.1 导入安装包

4.5.2 解压安装包,并安装编译工具



4.5.3 切换到src目录进行编译安装

4.5.4 准备好待破解的文件,进行暴力破解



五、网络扫描:NMAP

5.1 NMAP

1.NMAP是一个强大的端口扫描类安全评测工具,支持ping扫描、多端口检测等多种技术
2.安装NMAP软件包:
1)rpm -qa |grep nmap
2)yum install -y nmap

5.2 nmap常用的选项和扫描类型

选项 说明
-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通而放弃扫描

5.3 举例

5.3.1 查看本机开放的端口


5.3.2 检测主机

1.检测192.168.10.0/24网段有哪些主机提供http服务
nmap -p 80 192.168.10.0/24
2.检测192.168.10.0/24网段有哪些存活主机
nmap -n -sP 192.168.10.0/24

六、控制台命令:netstat

6.1 常用格式

1.netstat -natp 查看正在运行的使用TCP协议的网络状态信息
2.netstat -naup 查看正在运行的使用UDP协议的网络状态信息

6.2 常用选项

选项 说明
-a 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)
-n 以数字的形式显示相关的主机地址、端口等信息
-t 查看TCP协议相关的信息-u显示UDP协议相关的信息
-p 显示与网络连接相关联的进程号、进程名称信息(该选项需要root权限)
-r 显示路由表信息
-l 显示处于监听状态的网络连接及端口信息
posted @ 2021-06-25 13:27  落寞1111  阅读(110)  评论(0)    收藏  举报