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 显示所有网络接口信息
相关推荐
努力的小T几秒前
Linux apt-mirror 同步搭建本地源详解教程
linux·运维·服务器·ubuntu·云计算·debian
ly21st11 分钟前
elasticsearch安全认证
安全·elasticsearch
Mitch31111 分钟前
【漏洞复现】CVE-2014-3120 & CVE-2015-1427 Expression Injection
运维·web安全·elasticsearch·docker·apache
路飞雪吖~23 分钟前
【Linux】编写简易shell && 深度理解命令行解释器 && 环境变量 && 内建命令
linux·运维·服务器
BUG制造机.24 分钟前
修炼之道 ---其四
linux·c++
神奇侠20241 小时前
基于Centos7.X系统端口占用处理
linux·运维·服务器
cdprinter1 小时前
涉密行业跨网数据摆渡,光盘审计刻录输出,生产音视频刻录,电子档案长期保存应用
安全·自动化·音视频
百家方案1 小时前
「下载」阿里云智慧办公园区解决方案:打造全息数字园区,助力商业地产数字化转型
阿里云·云计算·智慧园区
daopuyun2 小时前
GB/T34944-2017 《Java语言源代码漏洞测试规范》解读——安全功能
java·开发语言·安全
阿智@112 小时前
Node.js 助力前端开发:自动化操作实战
运维·前端·node.js·自动化