当前位置: 首页 > news >正文

Linux 服务器安全巡检与加固:从命令到实操(CentOS/Ubuntu 通用)

在服务器运维中,Linux 凭借稳定性成为主流,但 “无安全不运维”—— 未及时巡检会遗漏隐藏风险,缺乏加固则等于给攻击者留 “后门”。本文针对CentOSUbuntu两大主流发行版,梳理从账号、密码到服务、网络的全维度巡检命令,搭配可直接落地的加固方案,帮你快速筑牢服务器安全防线。

一、前提说明

  1. 操作权限:所有命令需以rootsudo权限执行,避免因权限不足导致结果不准确。
  2. 配置备份:修改任何系统配置文件(如/etc/ssh/sshd_config/etc/profile)前,建议先备份(例:cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak),防止配置错误导致服务异常。
  3. 适用范围:覆盖 CentOS 7+/Ubuntu 18.04+,部分命令因系统版本差异略有调整,执行后可根据提示微调。

二、安全巡检:先找风险点

巡检的核心是 “发现隐患”,需按「账号→密码→服务→日志→应用→网络」的逻辑逐层排查,以下是各模块的实操命令(分 CentOS 与 Ubuntu 标注差异)。

2.1 账号与权限巡检(最易被突破的入口)

账号是服务器的 “第一道门”,需重点检查空口令、超权账号(如 UID=0 的非 root 账号)和远程登录权限。

巡检项CentOS 命令Ubuntu 命令说明
空口令账号awk -F: '$2==""{print $1}' /etc/passwd同 CentOS输出为空则无空口令账号
UID=0 的 root 权限账号awk -F: '$3==0{print $1}' /etc/passwd同 CentOS正常仅输出root
可远程登录账号`awk -F: '{ if($2 !~ /^!^*/) {print $1} }' /etc/shadow`同 CentOS密码字段非 “!”“*” 的账号可远程登录
sudo 权限账号more /etc/sudoers | grep "ALL=(ALL)" | grep -v "^#"同 CentOS过滤注释后,查看拥有全量 sudo 权限的账号

2.2 密码与登录策略巡检(防止暴力破解)

弱密码和宽松的登录策略是暴力破解的 “温床”,需检查密码周期、复杂度、账户锁定等配置。

巡检项CentOS 命令Ubuntu 命令说明
密码周期策略`cat /etc/login.defsgrep "^\s*[^# \t].*$"grep ^PASS`同 CentOS查看密码有效期(PASS_MAX_DAYS)、最小长度(PASS_MIN_LEN)等
密码复杂度 + 账户锁定cat /etc/pam.d/system-auth密码复杂度:cat /etc/pam.d/common-password账户锁定:cat /etc/pam.d/common-auth检查是否包含pam_cracklib.so(复杂度)、pam_tally2.so(锁定)
SSH 登录锁定cat /etc/pam.d/sshd同 CentOS查看 SSH 登录是否启用失败锁定
连接超时配置`cat /etc/profilesed '/^#/d'grep -i TMOUT`同 CentOS输出为空则未设置超时,需加固

2.3 服务与端口巡检(关闭无用 “窗口”)

闲置服务和高危端口是攻击者的 “突破口”,需重点检查 telnet、未授权端口等。

巡检项通用命令说明
telnet 服务(高危)`netstat -angrep ":23"`有输出则 telnet 未关闭,需禁用
高危监听端口`netstat -anpegrep "LISTEN "awk '{print $4, $8, $9}'`输出端口、进程信息,排查非必要端口(如 3306 未授权访问)
计划任务(隐藏风险)当前用户:crontab -l系统级:cat /etc/crontab任务目录:ls -ll /etc/cron.d检查是否有未知计划任务(如恶意脚本定时执行)

2.4 日志与审计巡检(追溯安全事件)

日志是 “事后追溯” 的关键,需确认日志服务运行正常、配置合理。

巡检项通用命令说明
日志服务状态`systemctl list-units --type=servicegrep "rsyslog|auditd"`确保 rsyslog(系统日志)、auditd(审计日志)为active
日志轮转配置`cat /etc/logrotate.confgrep "^\s*[^# \t].*$"`查看日志是否按周期轮转(避免日志过大占满磁盘)
历史命令记录`historytail -n 5`查看最近执行的命令,排查异常操作

2.5 应用与组件巡检(防范漏洞攻击)

Web 组件(如 Tomcat、Nginx)和第三方库(如 FastJSON、Shiro)常存在漏洞,需确认版本安全性。

巡检项通用命令说明
Web 服务器排查find / -name *apach*find / -name *nginx*find / -name *tomcat*定位服务安装目录,确认版本是否有已知漏洞
高危组件排查find / -name "*shiro*.jar" 2>/dev/nullfind / -name "*fastjson*.jar" 2>/dev/nullfind / -type f -name "*struts*.jar" 2>/dev/null过滤错误输出,排查是否存在漏洞版本(如 FastJSON 1.2.24)

2.6 网络安全巡检(拦截非法访问)

通过hosts配置和防 SYN 攻击优化,减少外部非法连接。

巡检项通用命令说明
访问控制配置允许列表:`cat /etc/hosts.allowgrep "^\s*[^# \t].*$"<br>拒绝列表:cat /etc/hosts.denygrep "^\s*[^# \t].*$"`检查是否限制了未知 IP 的访问
防 SYN 攻击配置`more /etc/sysctl.confgrep net.ipv4.tcp_max_syn_backlog`输出值建议≥1024,否则需优化

三、安全加固:针对性补漏洞

巡检发现风险后,需按 “先关键(账号 / 密码)后次要(端口 / 日志)” 的顺序加固,以下是可直接执行的方案。

3.1 账号加固:收紧 “第一道门”

  1. 删除空口令账号:若巡检发现空口令账号(如test),执行userdel -r test-r删除用户家目录,避免残留文件)。
  2. 禁止 root 远程登录:编辑 SSH 配置文件vim /etc/ssh/sshd_config,将PermitRootLogin改为PermitRootLogin no,保存后重启服务:
    • CentOS:systemctl restart sshd
    • Ubuntu:systemctl restart ssh
  3. 清理冗余 sudo 账号:编辑sudoers文件visudo(避免直接 vim 导致语法错误),删除非必要账号的sudo权限行。

3.2 密码与登录加固:防暴力破解

  1. 设置密码周期与复杂度
    • 编辑/etc/login.defs,修改参数(示例值):
      PASS_MAX_DAYS   90    # 密码最长有效期90天
      PASS_MIN_DAYS   7     # 密码修改间隔7天
      PASS_MIN_LEN    10    # 密码最小长度10位
      PASS_WARN_AGE   7     # 密码过期前7天提醒
      
    • 启用密码复杂度(CentOS):编辑/etc/pam.d/system-auth,在password sufficient pam_unix.so前添加:
      password    requisite    pam_cracklib.so try_first_pass retry=3 minlen=10 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
      
      (含义:重试 3 次,最小 10 位,含至少 1 个大写、小写、数字、特殊字符)
  2. 设置连接超时:执行echo "export TMOUT=1800" >> /etc/profile(1800 秒 = 30 分钟无操作自动退出),生效命令:source /etc/profile

3.3 服务与端口加固:关闭无用窗口

  1. 禁用 telnet 服务
    • CentOS:systemctl stop telnet.socket && systemctl disable telnet.socket
    • Ubuntu:apt remove -y telnetd(彻底卸载 telnet 服务)
  2. 关闭高危端口服务:若巡检发现非必要端口(如 8080 未使用),先定位进程netstat -anpe | grep ":8080",再终止进程kill -9 进程ID,最后禁用对应服务(如systemctl disable tomcat)。

3.4 网络与攻击防护:优化防御配置

  1. 防 SYN 攻击优化:编辑/etc/sysctl.conf,添加以下参数:
    net.ipv4.tcp_max_syn_backlog = 2048
    net.ipv4.tcp_synack_retries = 2
    net.ipv4.tcp_syn_retries = 2
    
    执行sysctl -p生效配置。
  2. 配置访问控制:编辑/etc/hosts.allow,仅允许指定 IP 访问关键服务(示例:仅允许 192.168.1.0/24 网段访问 SSH):
    sshd: 192.168.1.0/24
    
    编辑/etc/hosts.deny,拒绝所有其他 IP:
    sshd: ALL
    

四、巡检与加固后验证

加固完成后,需再次执行巡检命令验证效果,核心验证点:

  1. more /etc/ssh/sshd_config | grep PermitRootLogin:确认输出PermitRootLogin no
  2. cat /etc/profile | grep TMOUT:确认输出export TMOUT=1800
  3. systemctl status rsyslog auditd:确认两个服务均为active (running)
  4. netstat -an | grep ":23":无输出则 telnet 已禁用。

五、总结与最佳实践

  1. 定期巡检:建议每周执行 1 次全量巡检,可将巡检命令整理为脚本(如security_check.sh),定时执行crontab -e添加任务:0 2 * * 0 /root/security_check.sh > /var/log/security_check.log 2>&1(每周日凌晨 2 点执行,日志输出到指定文件)。
  2. 及时更新:定期执行yum update -y(CentOS)或apt upgrade -y(Ubuntu),修复系统漏洞。
  3. 日志监控:使用 ELK、Zabbix 等工具监控日志,实时告警异常登录(如异地 IP 登录)、恶意命令执行。
http://www.dtcms.com/a/507165.html

相关文章:

  • 网站如何让百度收录官网seo是什么意思
  • STM32U5G9J-DK2开发板获取RAM占用
  • 从架构到运营:AIOps与O-AA™ 如何实现智能化企业运营
  • 徐州手机网站定制公司哪家好西安大型网站制作
  • 【Day 80】Linux-NAS 和 SAN 存储
  • C++可变参数模板
  • Python下载实战技巧的技术文章大纲
  • PostgreSQL高级特性解析:窗口函数与CTE
  • OpenBMC: BmcWeb处理WebScoket2 产生WebSocket对象
  • 构建AI智能体:六十九、Bootstrap采样在大模型评估中的应用:从置信区间到模型稳定性
  • 图论基础:探索节点与关系的复杂网络
  • 免费建网站 建站之星百度指数免费添加
  • python如何写数据到excel示例
  • Spring Cloud - Spring Cloud 注册中心与服务提供者(Spring Cloud Eureka 概述、微服务快速入门、微服务应用实例)
  • 测试经验分享,登录功能+购物车+限时秒杀(测试点)汇总
  • 腾讯云TVP走进美的,共探智能制造新范式
  • OpenAI 的 Sora 2来了:一场创意革命与失控的狂欢
  • 直播预告 | 时序数据赋能核电数字化转型,TDengine 引领创新新范式
  • 动漫网站建设规划书模板广州网站建设策划
  • 使用imapsync增量同步邮件到新邮局服务器
  • iOS 混淆与 IPA 加固全流程,多工具组合实现无源码混淆、源码防护与可审计流水线(iOS 混淆|IPA 加固|无源码加固|App 防反编译)
  • java数据结构--ArrayList与顺序表
  • 【IEEE/EI/Scopus检索】2026年IEEE第七届计算,网络与物联网国际会议(CNIOT 2026)
  • 大数据计算引擎-Hudi对Spark Catalyst 优化器的RBO、CBO做了什么
  • 设计模式之:建造者模式
  • 阿里云 RDS MySQL 可观测性最佳实践
  • 【含文档+PPT+源码】基于spring boot的固定资产管理系统
  • 企业门户网站建设新闻柳州seo培训
  • 广东长海建设工程有限公司网站众筹网站建设报价
  • 航运、应急、工业适用,AORO P1100三防平板引领行业数字化变革