系统安全及应用

一,账号安全控制

1. 基本安全措施

(1)系统账号清理

  • 检查系统账户:系统账户通常记录在/etc/passwd/etc/shadow文件中。可以使用命令如awk -F: '($7!="/sbin/nologin" && $7!="/bin/false") {print $1}' /etc/passwd来列出所有可登录的账户。
  • 识别未使用账户:检查日志文件(如lastlog)来发现长时间未登录的账户。使用命令lastlog -b 365查看一年内未登录的用户。
  • 删除账户:使用userdel命令彻底删除账户。例如,移除账户及其家目录:
  sudo userdel -r unnecessary_user
  

(2)密码安全控制

  • 设置密码策略:编辑/etc/login.defs文件,可以设置密码最小长度、最大年龄、最小年龄、警告期限等。例如:
  PASS_MAX_DAYS   90     # 密码最大使用天数
  PASS_MIN_DAYS   7      # 密码最小使用天数
  PASS_MIN_LEN   8       # 密码最小长度
  
  • 强制密码复杂度:使用pam_cracklib.so模块在/etc/pam.d/common-password中设置密码复杂度规则,例如:
  password    requisite     pam_cracklib.so retry=3 minlen=10 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
  

(3)命令历史与自动注销

  • 命令历史记录:在用户的.bashrc.bash_profile文件中设置历史记录的大小和持久化。例如:
  HISTSIZE=10000
  HISTFILESIZE=20000
  PROMPT_COMMAND='history -a' # 实时保存历史记录
  
  • 自动注销:在用户的.bash_profile.bashrc中设置TMOUT变量来自动注销不活跃的会话,如:
  export TMOUT=300 # 5分钟后自动注销
  

2. 用户切换与提权

(1)su命令——切换用户

  • 切换到指定用户:不带--l选项,仅切换用户身份而不重置环境变量:
  su other_user
  
  • 完全切换环境:使用--l选项以目标用户的完整环境执行命令:
  su - root
  

(2)sudo命令——提升执行权限

  • 基本使用:允许特定用户或组以root权限执行命令,需预先配置/etc/sudoers文件。例如,允许用户执行重启命令:
  sudo systemctl restart service_name
  
  • sudoers配置:使用visudo命令安全编辑/etc/sudoers文件,避免语法错误导致系统无法使用sudo。示例配置:
  # 允许admin组成员无需密码执行所有命令
  %admin ALL=(ALL) NOPASSWD:ALL
  # 用户jane可以无密码执行apt-get update
  jane ALL=NOPASSWD:/usr/bin/apt-get update
  

二,系统引导和登录控制

1:开机安全控制

(1):调整BIOS引导设置

(1)将第一优先引导设备(First Boot Device)设为当前系统所在磁盘。

(2)禁止从其他设备(如光盘、U盘、网络等)引导系统,对应的项设为“Disabled”

(3)将 BIOS的安全级别改为“setup”,并设置好管理密码,以防止未授权的修改。

(2)限制更改GRUB引导参数
  • 编辑GRUB配置文件:以管理员权限编辑/etc/default/grub文件。
    • 为了限制GRUB编辑,可以注释掉或删除GRUB_TERMINAL=consoleGRUB_TERMINAL_INPUT=console行,仅允许通过图形界面修改。
    • 添加GRUB_DISABLE_OS_PROBER=true可以阻止自动检测其他操作系统,减少引导菜单被篡改的风险。
  • 加密GRUB:使用命令grub-mkpasswd-pbkdf2生成加密密码,并将输出添加到GRUB配置中。例如,在/etc/grub.d/40_custom/etc/grub.d/00_header文件末尾添加:
  set superusers="root"
  password_pbkdf2 root <your_generated_hash>
  
  • 更新GRUB:执行sudo update-grub命令应用改动,确保更改生效。
2. 终端及登录控制
(1)禁止root用户登录
  • SSH服务:编辑/etc/ssh/sshd_config文件,找到或添加PermitRootLogin no行,并确保该行未被注释,之后重启SSH服务:
  sudo systemctl restart ssh
  
  • TTY登录:在PAM配置文件/etc/pam.d/login中添加以下行,以阻止root直接登录TTY:
  auth required pam_wheel.so use_uid
  

并且确保root用户不是/etc/group文件中wheel组的成员。

(2)禁止普通用户登录
  • SSH服务:如果希望阻止特定普通用户通过SSH登录,可以在/etc/ssh/sshd_config中使用DenyUsers指令,如:
  DenyUsers user1 user2
  
  • TTY登录:通过编辑/etc/pam.d/common-session或相应的PAM配置文件,利用PAM的account模块,例如使用pam_listfile.so
  account required pam_listfile.so item=user sense=deny file=/etc/nologin.users onerr=fail
  

创建文件/etc/nologin.users,列出不允许登录的用户名,每行一个用户名。

三,弱口令检测,端口扫描

1:弱口令检测——John the Ripper

1. 下载并安装John the Ripper

在云环境或Linux服务器上安装John the Ripper,通常涉及以下步骤:

  • 使用包管理器安装:对于大多数Linux发行版,可以使用系统自带的包管理器进行安装。例如:

    • Ubuntu/Debian:
    sudo apt-get update
    sudo apt-get install john
    
  • CentOS/RHEL:
    sudo yum install john
    # 对于CentOS 8+/RHEL 8+ 使用DNF
    sudo dnf install john
    
  • 手动编译安装:如果需要最新版本或特定功能,可以访问John the Ripper官网下载源代码,并按提供的安装指南进行编译安装。

2. 检测弱口令账号

  • 导出哈希值:首先,需要从系统中导出用户密码的哈希值。在大多数Linux系统中,这些哈希值存储在/etc/shadow文件中,但直接访问该文件通常需要root权限。
  • 破解哈希值:使用John the Ripper对导出的哈希值进行破解。假设已将哈希值保存至hashes.txt,运行命令如下:
  john hashes.txt
  

3. 使用密码字典文件

  • 选择字典:选择或创建一个密码字典文件,字典应该包含可能的密码组合。高质量的字典可以大大提高破解效率。
  • 指定字典路径:通过--wordlist选项指定字典文件路径,例如:
  john --wordlist=/path/to/your/dictionary.txt hashes.txt
  
  • 利用规则增强破解:John支持使用规则来修改字典中的单词,生成更多密码变体。启用规则,可以这样做:
  john --wordlist=/path/to/your/dictionary.txt --rules hashes.txt
  

2:网络扫描——NMAP

(1)安装NMAP软件包

在Linux系统中安装Nmap,通常使用包管理器进行安装:

  • Debian/Ubuntu:
  sudo apt-get update
  sudo apt-get install nmap
  
  • CentOS/RHEL
  sudo yum install nmap
  # 对于CentOS 8+/RHEL 8+ 使用DNF
  sudo dnf install nmap
  
  • Fedora:
  sudo dnf install nmap
  
(2)扫描语法及类型

Nmap提供了丰富的命令行选项,以下是一些基础语法和扫描类型:

  • 基本扫描:扫描目标主机是否在线。
  nmap target
  
  • 端口扫描类型
    • 快速扫描 (-F): 快速扫描最常见的100个端口。
    nmap -F target
    
  • 全端口扫描 (-p-): 扫描所有65535个端口。
    nmap -p- target
    
  • 指定端口扫描 (-p PORT[,PORT]...): 扫描指定的端口或端口范围。
    nmap -p 22,80,443 target
    
  • 高级扫描选项
    • 服务和版本检测 (-sV): 探测开放端口上运行的服务及版本信息。
    nmap -sV target
    
  • 操作系统检测 (-O): 尝试识别目标主机的操作系统。
    nmap -O target
    
  • 扫描技术:
    • TCP SYN扫描 (-sS): 半开放扫描,隐蔽且快速。
      nmap -sS target
      
- **TCP Connect扫描 (-sT)**: 标准的三次握手,容易被防火墙记录。
  
      nmap -sT target
      
- **ACK扫描 (-sA)**: 测试防火墙规则和隐身扫描。
- **UDP扫描 (-sU)**: 扫描UDP端口。
(3)扫描操作示例
  • 扫描本地网络寻找存活主机
  nmap -sn 192.168.1.0/24
  
  • 扫描指定IP,探测开放服务及其版本
  nmap -v -sV 192.168.1.10
  
  • 扫描整个子网,同时检测操作系统
  nmap -p- -A 192.168.1.0/24
  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值