系统安全及应用

一、账号安全控制

  1. 系统账号管理
    • 清理非登录用户:
      • 将非交互式用户(如服务账号)的 Shell 设置为 /sbin/nologin:

usermod -s /sbin/nologin <用户名>

      • 锁定长期未使用的账号:

passwd -l <用户名> # 锁定

usermod -L <用户名>

      • 删除无用账号并清理残留文件:

userdel -r <用户名> # 连带删除家目录和邮件池

      • 锁定关键文件 /etc/passwd 和 /etc/shadow,防止非法修改:

chattr +i /etc/passwd /etc/shadow # 锁定

chattr -i /etc/passwd /etc/shadow # 解锁

    • 密码策略强化:
      • 复杂度要求 :
        编辑 /etc/security/pwquality.conf,设置最小长度(minlen=12)、字符类型(minclass=4)等规则。
      • 有效期控制:
        • 全局配置:修改 /etc/login.defs,设置 PASS_MAX_DAYS=90(密码最长使用天数)。
        • 用户级配置:使用 chage 命令:

chage -M 90 -m 7 -W 14 <用户名> # 设置密码 90 天过期,修改间隔 7 天,提前 14 天警告

    • 命令历史与终端安全:
      • 限制历史记录条数(/etc/profile 中设置 HISTSIZE=100)。
      • 终端闲置超时自动注销(export TMOUT=180)。
      • 注销时自动清空历史记录(.bash_logout 中添加 history -c)。
  1. 用户权限控制
    • 限制 su 命令使用:
      • 仅允许 wheel 组用户使用 su:

gpasswd -a <用户> wheel # 将用户加入 wheel 组

vi /etc/pam.d/su # 启用 `auth required pam_wheel.so use_uid`

    • 精细化 sudo 授权:
      • 通过 visudo 配置 /etc/sudoers,例如:

user1 ALL=(root) /usr/bin/systemctl restart httpd # 仅允许重启HTTP服务

%wheel ALL=(ALL) ALL # wheel组成员可执行所有命令

      • 启用 sudo 日志记录:

Defaults logfile="/var/log/sudo.log"

二、系统引导与登录控制

  1. 引导程序安全( GRUB )
    • 加密 GRUB 菜单:
      • 生成密码哈希:

grub2-mkpasswd-pbkdf2

      • 修改 /etc/grub.d/40_custom,添加:

set superusers="admin"

password_pbkdf2 admin <哈希值>

      • 更新配置:

grub2-mkconfig -o /boot/efi/EFI/openEuler/grub.cfg

    • 禁用高风险功能:
      • 禁止通过 Ctrl+Alt+Del 重启:

systemctl mask ctrl-alt-del.target

      • 关闭非必要服务(如 telnet):

systemctl disable telnet.socket

  1. 登录安全策略
    • SSH 加固:
      • 禁止 root 远程登录(修改 /etc/ssh/sshd_config):

PermitRootLogin no

PasswordAuthentication no # 强制使用密钥认证

MaxAuthTries 3 # 限制登录尝试次数

      • 启用登录失败锁定(PAM 配置):

auth required pam_tally2.so deny=5 unlock_time=600

    • 终端登录限制:
      • 限制 root 仅能在特定终端登录(修改 /etc/securetty)。
      • 设置登录警告横幅(编辑 /etc/issue.net)。

三、弱口令检测与防范

  1. 自动化检测工具
    • John the Ripper:
      • 提取哈希并破解:

unshadow /etc/passwd /etc/shadow > hashes.txt

john --wordlist=/usr/share/dict/rockyou.txt hashes.txt

      • 查看结果:

john --show hashes.txt

    • Cracklib 集成:
      • 修改 PAM 配置(/etc/pam.d/system-auth):

password requisite pam_pwquality.so retry=3 minlen=12 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1

  1. 强制密码策略
    • 定期扫描弱口令用户:

for user in (cut -d: -f1 /etc/passwd); do passwd -S user | grep "weak"; done

四、端口扫描与网络防护

  1. 端口扫描检测
    • 使用 nmap:

nmap -sS -p 1-65535 192.168.1.1 # SYN 半开扫描

nmap -sU -p 1-1000 192.168.1.1 # UDP 端口扫描

    • 监控端口变化:

ss -tuln > ports_$(date +%F).txt # 每日记录开放端口

diff ports_2023-10-01.txt ports_2023-10-02.txt

  1. 防火墙配置( firewalld )
    • 仅开放必要端口:

firewall-cmd --permanent --add-port=80/tcp

firewall-cmd --reload

    • 限制 IP 访问:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'

五、实施建议与高级防护

  1. 系统更新与审计
    • 启用自动更新:

dnf install dnf-automatic

systemctl enable --now dnf-automatic.timer

    • 启用 auditd 监控关键文件:

auditctl -w /etc/passwd -p wa -k user_changes

  1. 强制访问控制( SELinux )
    • 基础操作:

setenforce 1 # 临时启用

semanage port -a -t http_port_t -p tcp 8080 # 自定义端口标签

相关推荐
牛马工作号3 小时前
Mosquitto + ACME:从 Docker Compose 部署到 TLS 证书自动续期与加载
运维·docker·容器
Initialize-le5 小时前
Nginx 504 超时、499 一堆?网关排查法
运维·nginx
Android系统攻城狮8 小时前
Linux Gstreamer深度解析之gst_audio_ring_buffer_delay调用流程与实战(七十二)
linux·运维·服务器·gstreamer音视频·音视频进阶
快乐的韭菜根根8 小时前
ubuntu 安装slurm并配置
linux·运维·ubuntu
U-Mail邮件系统9 小时前
自建邮箱服务器有哪些软件?三款主流邮件服务器软件推荐
运维·服务器
倒头就睡的小比特10 小时前
Linux基础指令3
linux·服务器
天远数科10 小时前
零信任架构实战:基于天远贷前风险报告构建自动化消金信贷风控与多头共债排查网关
运维·人工智能·架构·自动化
梦帮科技10 小时前
Kali Linux Scapy 畸形报文构造学——深度解剖非法 TCP Flags 与反常序列号
linux·爬虫·神经网络·算法·数学建模·系统架构·模拟退火算法
半杯咖啡半行码11 小时前
Linux 驱动开发入门:内核模块编程基础
linux·服务器·网络
别动我齐刘海12 小时前
Linux 系统调试学习2
linux·运维·c++·人工智能·学习·机器学习·机器人