Linux-系统安全及应用

# 系列文章目录

提示:仅用于个人学习,进行查漏补缺使用。

1.Linux介绍、目录结构、文件基本属性、Shell

2.Linux常用命令

3.Linux文件管理

4.Linux 命令安装(rpm、install)

5.Linux账号管理

6.Linux文件/目录权限管理

7.Linux磁盘管理/文件系统

8.Linux逻辑卷管理LVM

9.Linux磁盘配额

10.Linux服务器硬件及RAID配置实验

11.Linuxu引导过程与服务控制

12.Linux-进程和计划任务管理


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

本章大概内容有:

账号安全控制 usermod passwd、系统引导和登录控制、PAM安全认证、sudo命令、弱口令检测、JR、端口扫描、NMAP命令、补充、netstat命令等等
提示:以下是本篇文章正文内容,下面案例可供参考

一、账号安全控制

  • 账号安全基本措施
    • 将非登录用户的Shell设为/sbin/nologin【禁止用户登录】
shell 复制代码
usermod -s /sbin/nologin	用户名
  • 锁定长期不使用的账号
shell 复制代码
usermod -L 	用户名
passwd -l 	用户名
passwd -S		用户名
  • 删除无用的账号【定期清理、手动删除】
shell 复制代码
userdel [-r]	用户名
/etc/shadow		###例如:手动删除修改【慎用】
  • 锁定账号文件passwd、shadow
shell 复制代码
chattr +i /etc/passwd /etc/shadow			###锁定文件并查看状态
lsattr /etc/passwd /etc/shadow				###查看文件锁定状态											
chattr -i /etc/passwd /etc/shadow			###解锁文件
  • 小结
    • 账号安全:
      • 缩小权限集合
      • 密码更换周期缩短 root wheel
      • 账号注销时间

二、系统引导和登录控制

  • 密码安全控制
    • 设置密码有效期
    • 要求用户下次登录时修改密码
shell 复制代码
vi /etc/login.defs		###修改密码配置文件,适用于新建用户
......
chage -M 30 lisi
cat /etc/shadow | grep lisi
  • 命令 历史限制
    • 减少记录的命令条数
    • 登录时自动清空命令历史
shell 复制代码
vi /etc/profile												###设置系统上所有用户的shell环境变量
export HISTSIZE=200										###设置历史记录中保存的命令行数量是200
source /etc/profile			
###使得`/etc/profile`文件中定义的环境变量对当前shell生效。
###实际上是在当前shell会话中重新加载配置文件。
vi ~/.bashrc													###打开用户家目录下的`.bashrc`文件修改shell配置
echo "" >~/.bash_history							###清空用户的家目录下的`.bash_history`文件
  • 终端自动注销
    • 闲置600秒自动注销
shell 复制代码
vi /etc/profile												###设置系统上所有用户的shell环境变量
......
export TMOUT=600											###设置bash shell的超时时间为600秒,即10分钟
source /etc/profile									  ###重新加载配置文件

ps:若设置了6秒自动注销怎么办?
1.复制/etc/profile覆盖
2.脚本

  • 使用SU命令切换用户
    • 用途 及用法
      • 用途: Substitute User 切换用户
      • 格式: su -目标用户
    • 密码验证
      • root->任意用户,不验证密码
      • 普通用户->其他用户,验证目标用户的密码
    • 限制使用su命令的用户
      • 将允许使用su命令的用户加入wheel组
      • 启用pam_wheel认证模块 【PAM:系统相关的认证权限管理,Linux系统中较为全面的安全管理的程序】
shell 复制代码
pgasswd -a tsengyia wheel 				###将用户`tsengyia`添加到名为`wheel`的用户组中。
tsengyia 
正在将用户"tsengyia" 加入到"wheel"组中

vi /etc/pam.d/su								
#%PAM-1.0
......
  • Linux中的PAM安全认证

    • su命令的安全隐患
      • 默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险
      • 为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换
    • PAM(Pluggable Authentication Moudules)可插拔认证模块
      • 是一种高效而且灵活便利的用户级别的认证方式
      • 也是当前Linux服务器普遍使用的认证方式
  • PAM认证原理

    • 一般遵循的顺序
      • Service(服务)->PAM(配置文件)->pam*.so_
    • 首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证
    • 用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
    • 不同的应用程序所对应的PAM模块是不同的
  • PAM认证的构成

    • 查看某个程序是否支持PAM模块认证
shell 复制代码
ls /etc/pam.d | grep su
  • 查看su的PAM配置文件: cat /etc/pam.d/su
    • 每一行都是一个独立的认证过程
    • 每一行可以区分为三个字段
      • 认证类型
      • 控制类型
      • PAM模块及其参数
  • PAM安全认证流程
    • 控制类型也称做Control Flags,用于PAM验证类型的返回结果
      1. 服务启动 :服务启动时,会调用PAM进行用户认证。
      2. 加载PAM模块 :PAM加载负责认证的模块。
      3. 用户认证 :认证模块要求用户提供凭证(如密码)。
      4. 验证凭证 :认证模块检查提供的凭证是否有效。
      5. 继续或失败 :如果凭证有效,PAM继续调用下一个模块;如果无效,认证失败。
      6. 会话管理:所有认证模块执行完毕后,PAM管理会话,服务根据认证结果继续或拒绝操作。
  • 使用sudo机制提升权限
    • su命令的缺点(安全,历史命令等等)
    • sudo命令的用途及用法
      • 用途:授权普通用户、记录审计、控制权限等等。
    • 配置sudo授权
      • visudo或者 vi /etc/sudoers
      • 记录格式
shell 复制代码
visudo
.......
  • 查看sudo操作记录
    • 需启用Defaults logfile 配置
    • 默认日志文件: /var/log/sudo
shell 复制代码
visudo
Defaults logfile = "/var/log/sudo"
tail /var/log/sudo
.....
  • 查看授权的sudo操作

    • sudo -l
  • 终端登录安全控制

    • 安全终端配置: /etc/securetty
    • 禁止普通用户登录
      • 建立/etc/noglogin文件
      • 删除nologin文件或重启后即恢复正常
shell 复制代码
touch /etc/nologin
rm -rf /etc/nologin

三、弱口令检测

  • Joth the Ripper,简称为 JR
    • 一款密码分析工具,支持字典式的暴力破解
    • 通过对shadow文件的口令分析,可以检测密码强度
    • 官方网站:http://www.openwall.com/john/

四、端口扫描

  • 网络端口扫描
    • NMAP
      • 一款强大的网络扫描、安全检测工具,支持 ping 扫描、多端口检测等多种技术。
      • 官方网站:http://nmap.org/
      • CentOS 7.3光盘中安装包 nmap-6.40-7.el7.x86_64.rpm
    • 安装
shell 复制代码
rpm -qa | grep nmap
yum install -y nmap
  • NMAP的扫描
shell 复制代码
nmap [扫描类型] 【选项】 《》
  • 示例
    • -sS、-sT、-sF、-sU、-sP、-P0
    • 分别查看本机开放的TCP端口、UDP端口
shell 复制代码
nmap -sT 127.0.0.1
nmap -sU 127.0.0.1
复制代码
  - **检测192.168.4.0/24网段有哪些主机提供FTP服务**
shell 复制代码
nmap -p 21 192.168.4.0/24
复制代码
  - **检测192.168.4.0/24网段有哪些存活主机**
shell 复制代码
nmap -n -sP 192.168.4.0/24
  • nmap命令常用的选项和扫描类型
选项 描述
-p 指定要扫描的端口。例如:nmap -p 22,80,443 target
-n 禁用反向DNS解析,以加快扫描速度。
-sS TCP的SYN扫描(半开扫描),只向目标发送SYN数据包。
-sT TCP连接扫描,建立完整的TCP连接。
-sF TCP的FIN扫描,开放的端口会忽略这种数据包。
-sU UDP扫描,用于探测目标主机提供的UDP服务。
-sP ICMP扫描,快速判断目标主机是否存活,不进行其他扫描。
-P0 跳过ping检测,认为所有目标主机都是存活的。

ps: 这些选项可以单独使用,也可以组合使用,以适应不同的扫描需求。 例如,nmap -p 80,443 -sS target将执行针对目标主机的80和443端口的SYN扫描。

五、补充

  • netstat命令
    • 概述
      • 用来显示各种网络相关信息,如网络连接、路由表、接口统计等。
    • 常用选项
选项 描述
--all-a 显示所有活动和非活动的连接。
--numeric-n 直接使用数字地址和端口号,不进行域名解析。
--listening-l 只显示监听中的服务(监听的套接字)。
--route-r 显示路由表。
--interfaces-i 显示网络接口信息。
--programs-p 显示与网络连接相关的程序名称。
--timers-o 显示超时信息。
--extend-e 显示额外的网络统计信息。
--statistice-s 显示协议统计信息。
  • 输出列
列标题 描述
Proto 网络协议类型,如TCP、UDP、ICMP等。
Recv-Q 接收队列的大小,表示尚未被应用程序读取的数据包数量。
Send-Q 发送队列的大小,表示尚未被网络层发送的数据包数量。
Local Address 本地的IP地址和端口号。
Foreign Address 远程的IP地址和端口号。
State 连接的状态,如ESTABLISHED(已建立)、SYN_SENT(SYN已发送)、TIME_WAIT(等待时间)等。
User 拥有该连接的用户。
PID/Program Name 对应连接的进程ID和进程名称。
  • 示例
    • netstat -a 显示所有连接
    • netstat -l 显示监听中的服务
    • netstat -r 显示路由表
    • netstat -s | grep TCP 显示TCP连接状态统计
    • netstat -i 显示所有网络接口信息
相关推荐
甲鱼9296 小时前
MySQL 实战手记:日志管理与主从复制搭建全指南
运维
Johny_Zhao20 小时前
OpenClaw安装部署教程
linux·人工智能·ai·云计算·系统运维·openclaw
用户962377954481 天前
DVWA 靶场实验报告 (High Level)
安全
NineData1 天前
数据库迁移总踩坑?用 NineData 迁移评估,提前识别所有兼容性风险
数据库·程序员·云计算
数据智能老司机1 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机1 天前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954481 天前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star1 天前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954481 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
chlk1232 天前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统