玄華 發表於 2025-11-25 09:11:13

Linux系统云服务器被入侵排查和解决方法

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">1. 确认入侵迹象</a></li><ul class="second_class_ul"><li><a href="#_lab2_0_0">1.1 异常的服务器行为</a></li><li><a href="#_lab2_0_1">1.2 日志文件的可疑条目</a></li><li><a href="#_lab2_0_2">1.3 攻击者的痕迹</a></li></ul><li><a href="#_label1">2. 排查入侵方式</a></li><ul class="second_class_ul"><li><a href="#_lab2_1_3">2.1 弱口令攻击</a></li><li><a href="#_lab2_1_4">2.2 服务漏洞攻击</a></li><li><a href="#_lab2_1_5">2.3 Web 应用漏洞</a></li><li><a href="#_lab2_1_6">2.4 后门和恶意程序</a></li><li><a href="#_lab2_1_7">2.5 未授权的端口 暴露</a></li></ul><li><a href="#_label2">3. 解决入侵问题</a></li><ul class="second_class_ul"><li><a href="#_lab2_2_8">3.1 隔离服务器</a></li><li><a href="#_lab2_2_9">3.2 删除恶意文件和进程</a></li><li><a href="#_lab2_2_10">3.3 恢复系统文件</a></li><li><a href="#_lab2_2_11">3.4 更新和打补丁</a></li><li><a href="#_lab2_2_12">3.5 更改所有密码</a></li></ul><li><a href="#_label3">4. 加强服务器安全防护</a></li><ul class="second_class_ul"><li><a href="#_lab2_3_13">4.1 配置防火墙</a></li><li><a href="#_lab2_3_14">4.2 启用 SSH 安全策略</a></li><li><a href="#_lab2_3_15">4.3 安装安全工具</a></li><li><a href="#_lab2_3_16">4.4 定期备份</a></li></ul><li><a href="#_label4">5. 总结</a></li><ul class="second_class_ul"></ul></ul></div><p class="maodian"><a name="_label0"></a></p><h2>1. 确认入侵迹象</h2>
<p>首先,需要判断服务器是否真的被入侵。常见的入侵迹象包括:</p>
<p class="maodian"><a name="_lab2_0_0"></a></p><h3>1.1 异常的服务器行为</h3>
<p><strong>CPU、内存、带宽异常</strong>:</p>
<ul><li>使用 <code>top</code>、<code>htop</code> 或 <code>sar</code> 检查是否有异常的进程占用大量资源。</li><li>使用 <code>iftop</code> 或 <code>nload</code> 检查网络流量,注意是否有异常的外发流量(如流量暴增)。</li></ul>
<p><strong>文件异常</strong>:</p>
<ul><li>系统文件被篡改,如 <code>/etc/passwd</code>、<code>/etc/shadow</code> 或 <code>/etc/hosts</code>。</li><li>可疑的文件被创建在 <code>/tmp</code>、<code>/var/tmp</code>、<code>/dev/shm</code> 或其他目录。</li></ul>
<p><strong>服务异常</strong>:</p>
<ul><li>系统服务被劫持或新服务被添加,常见目标是 SSH、Web 服务等。</li></ul>
<p class="maodian"><a name="_lab2_0_1"></a></p><h3>1.2 日志文件的可疑条目</h3>
<ul><li><strong>系统日志</strong>:</li></ul>
<p>查看 <code>/var/log/auth.log</code> 或 <code>/var/log/secure</code>,检查是否有异常的 SSH 登录尝试,如大量失败登录或未知 IP 登录成功。</p>
<div class="jb51code"><pre class="brush:bash;">grep "Failed password" /var/log/auth.log
grep "Accepted password" /var/log/auth.log
</pre></div>
<ul><li><strong>登录记录</strong>:</li></ul>
<p>通过 <code>last</code> 或 <code>lastb</code> 检查登录历史,注意是否有异常 IP 或时间段的登录。</p>
<div class="jb51code"><pre class="brush:bash;">last
lastb
</pre></div>
<ul><li><strong>其他日志</strong>:</li></ul>
<p>检查 Web 服务日志(如 Nginx 的 <code>/var/log/nginx/access.log</code>)是否有异常访问(如高频 POST 请求或尝试访问管理后台)。</p>
<p class="maodian"><a name="_lab2_0_2"></a></p><h3>1.3 攻击者的痕迹</h3>
<p><strong>异常进程</strong>:</p>
<ul><li>使用 <code>ps aux</code> 查看是否有异常进程(如未知的脚本或恶意程序)。</li><li>配合 <code>lsof -p &lt;PID&gt;</code> 查看进程打开的文件,确认可疑进程的活动。</li></ul>
<p><strong>定时任务</strong>:</p>
<ul><li>检查定时任务是否被篡改:</li></ul>
<div class="jb51code"><pre class="brush:bash;">crontab -l
cat /etc/crontab
ls /etc/cron.d/
</pre></div>
<p><strong>网络连接</strong>:</p>
<ul><li>检查是否有可疑的网络连接,使用 <code>netstat</code> 或 <code>ss</code>:</li></ul>
<div class="jb51code"><pre class="brush:bash;">netstat -tulnp
ss -tulnp
</pre></div>
<ul><li>注意是否有连接到陌生 IP,尤其是持续的外发流量。</li></ul>
<p><strong>文件完整性</strong>:</p>
<ul><li>如果有文件完整性检查工具(如 <code>Tripwire</code> 或 <code>AIDE</code>),可以验证系统文件是否被篡改。</li></ul>
<p class="maodian"><a name="_label1"></a></p><h2>2. 排查入侵方式</h2>
<p>入侵的方式可能多种多样,常见的路径包括:</p>
<p class="maodian"><a name="_lab2_1_3"></a></p><h3>2.1 弱口令攻击</h3>
<p><strong>检查 SSH 登录安全性</strong>:</p>
<ul><li>是否使用了简单密码(如 <code>123456</code>、<code>root</code> 等)被暴力 破解。</li><li>是否允许了密码登录而非密钥登录。</li></ul>
<p><strong>解决方法</strong>:</p>
<ul><li>禁用密码登录,仅允许密钥登录:</li></ul>
<div class="jb51code"><pre class="brush:bash;">vi /etc/ssh/sshd_config
# 修改以下配置
PasswordAuthentication no
</pre></div>
<ul><li>重启 SSH 服务:</li></ul>
<div class="jb51code"><pre class="brush:bash;">systemctl restart sshd
</pre></div>
<p class="maodian"><a name="_lab2_1_4"></a></p><h3>2.2 服务漏洞攻击</h3>
<ul><li><strong>检查服务版本</strong>:</li></ul>
<p>是否有未更新的服务存在已知漏洞,如 Apache、Nginx、MySQL、PHP 等。</p>
<div class="jb51code"><pre class="brush:bash;">apache2 -v
nginx -v
mysql --version
php -v
</pre></div>
<ul><li><strong>解决方法</strong>:</li></ul>
<p>升级相关服务到最新版本:</p>
<div class="jb51code"><pre class="brush:bash;">apt update &amp;&amp; apt upgrade -y# Ubuntu/Debian
yum update -y                # CentOS/RHEL
</pre></div>
<p class="maodian"><a name="_lab2_1_5"></a></p><h3>2.3 Web 应用漏洞</h3>
<p><strong>排查 Web 应用安全</strong>:</p>
<ul><li>检查是否有文件上传漏洞、SQL 注入、XSS(跨站脚本攻击)等。</li><li>查看是否有恶意文件被上传到 Web 应用目录(如 <code>/var/www/html</code>)。</li></ul>
<p><strong>解决方法</strong>:</p>
<ul><li>删除恶意文件。</li><li>修复 Web 应用的漏洞,使用 WAF(Web 应用防火墙)保护。</li></ul>
<p class="maodian"><a name="_lab2_1_6"></a></p><h3>2.4 后门和恶意程序</h3>
<p><strong>查找后门文件</strong>:</p>
<ul><li>搜索可疑文件或脚本,常见后门文件位置:</li></ul>
<div class="jb51code"><pre class="brush:bash;">find / -type f \( -name "*.sh" -o -name "*.py" -o -name "*.php" \) -mtime -7
</pre></div>
<ul><li>检查系统是否存在已知的恶意程序:</li></ul>
<div class="jb51code"><pre class="brush:bash;">clamscan -r /# 使用 ClamAV 扫描全系统
</pre></div>
<p><strong>解决方法</strong>:</p>
<ul><li>删除后门文件,并重启服务器保证新进程未加载恶意代码。</li></ul>
<p class="maodian"><a name="_lab2_1_7"></a></p><h3>2.5 未授权的端口 暴露</h3>
<ul><li><strong>检查开放端口</strong>:</li></ul>
<div class="jb51code"><pre class="brush:bash;">netstat -tulnp
</pre></div>
<ul><li><strong>解决方法</strong>:</li></ul>
<p>禁用未使用的端口,并在防火墙中限制不必要的外部访问:</p>
<div class="jb51code"><pre class="brush:bash;">ufw allow 22      # 允许 SSH
ufw deny 3306   # 禁止 MySQL 外部访问
ufw enable      # 启用防火墙
</pre></div>
<p class="maodian"><a name="_label2"></a></p><h2>3. 解决入侵问题</h2>
<p class="maodian"><a name="_lab2_2_8"></a></p><h3>3.1 隔离服务器</h3>
<ul><li>确保服务器不再继续被攻击:</li></ul>
<p>临时关闭网络连接或限制入站流量:</p>
<div class="jb51code"><pre class="brush:bash;">iptables -P INPUT DROP
</pre></div>
<p>或在云服务商管理界面禁用服务器的外网访问。</p>
<p class="maodian"><a name="_lab2_2_9"></a></p><h3>3.2 删除恶意文件和进程</h3>
<ul><li>找出并清理恶意文件。</li><li>杀死可疑的恶意进程:</li></ul>
<div class="jb51code"><pre class="brush:bash;">kill -9 &lt;PID&gt;
</pre></div>
<p class="maodian"><a name="_lab2_2_10"></a></p><h3>3.3 恢复系统文件</h3>
<ul><li>如果系统文件被篡改,使用备份恢复或重新部署操作系统。</li></ul>
<p class="maodian"><a name="_lab2_2_11"></a></p><h3>3.4 更新和打补丁</h3>
<p>确保操作系统、服务和应用程序都更新到最新版本:</p>
<div class="jb51code"><pre class="brush:bash;">apt update &amp;&amp; apt upgrade -y# 对于 Ubuntu/Debian
yum update -y                # 对于 CentOS/RHEL
</pre></div>
<p class="maodian"><a name="_lab2_2_12"></a></p><h3>3.5 更改所有密码</h3>
<ul><li>更改服务器用户、数据库和后台管理系统的密码,确保使用强密码(16 位以上,包含数字、字母、特殊字符)。</li></ul>
<p class="maodian"><a name="_label3"></a></p><h2>4. 加强服务器安全防护</h2>
<p class="maodian"><a name="_lab2_3_13"></a></p><h3>4.1 配置防火墙</h3>
<p>使用 <code>ufw</code> 或 <code>iptables</code> 限制访问:</p>
<div class="jb51code"><pre class="brush:bash;">ufw allow 22/tcp
ufw deny 3306/tcp
ufw enable
</pre></div>
<p class="maodian"><a name="_lab2_3_14"></a></p><h3>4.2 启用 SSH 安全策略</h3>
<p>禁用 Root 登录:</p>
<div class="jb51code"><pre class="brush:bash;">vi /etc/ssh/sshd_config
# 修改为
PermitRootLogin no
</pre></div>
<p>更改默认 SSH 端口(如改为 2222):</p>
<div class="jb51code"><pre class="brush:bash;">vi /etc/ssh/sshd_config
# 修改为
Port 2222
</pre></div>
<p class="maodian"><a name="_lab2_3_15"></a></p><h3>4.3 安装安全工具</h3>
<ul><li><strong>Fail2Ban</strong>:自动封禁暴力 破解 IP。</li><li><strong>ClamAV</strong>:扫描系统中的木马和恶意文件。</li><li><strong>rkhunter</strong>:检测 Rootkit。</li></ul>
<p class="maodian"><a name="_lab2_3_16"></a></p><h3>4.4 定期备份</h3>
<ul><li>配置定期备份方案,确保数据可以在遭到攻击后快速恢复:<ul><li>使用 <code>rsync</code> 备份文件。</li><li>结合云服务商的快照功能备份整个系统。</li></ul></li></ul>
<p class="maodian"><a name="_label4"></a></p><h2>5. 总结</h2>
<p>被入侵的 Linux 服务器需要快速响应,按照以下步骤进行修复和防护:</p>
<ol><li>确认入侵迹象,分析入侵路径。</li><li>隔离服务器,删除恶意文件和进程。</li><li>修复漏洞,更新系统和服务。</li><li>加强安全防护,配置防火墙和 SSH 策略。</li><li>定期备份,确保数据安全。</li></ol>
<p>通过这些手段,可以最大限度地降低安全风险,并确保服务器的长期稳定。</p>
頁: [1]
查看完整版本: Linux系统云服务器被入侵排查和解决方法