<p>直接查看/etc/hosts内容是最快判断是否被非法修改的方式,重点关注三类异常:非本地IP映射、大量屏蔽常见网站、可疑域名;正常应仅含127.0.0.1 localhost等基础条目,并确认权限为-rw-r--r-- 1 root root、无uchg/schg标志。</p>

确认/etc/hosts是否被非法修改
直接查看文件内容是最快速的判断方式。在终端中执行:
sudo cat /etc/hosts
重点关注三类异常条目:一是指向非本地(非127.0.0.1、::1)且你不认识的IP地址的域名映射;二是大量屏蔽常见网站(如 google.com、github.com、microsoft.com)的记录;三是包含可疑域名(如带随机字符串、拼写错误或仿冒名称)的行。正常情况下,该文件应仅含少量基础条目,例如:
- 127.0.0.1 localhost
- ::1 localhost
- 127.0.1.1 your-hostname(部分发行版存在)
检查文件修改时间与权限状态
异常修改往往伴随时间戳突变或权限异常。运行以下命令获取关键信息:
- ls -l /etc/hosts —— 查看所有者、组和权限。合法状态应为 -rw-r--r-- 1 root root(即644权限)。若显示为可写(如666)、属主非root,或出现特殊flag(如chflags uchg /etc/hosts导致的“user immutable”),均属高风险信号。
- stat /etc/hosts —— 查看详细时间戳(Access/Modify/Change)。若Modify时间远早于你最近一次操作,或与系统日志中可疑活动时间吻合,需高度警惕。
关联排查系统入侵痕迹
/etc/hosts被篡改极少孤立发生,通常伴随其他入侵指标。同步执行以下检查:
GitHub Hosts 更新工具(仅限中国用户),安全更新系统hosts文件,保留原有非GitHub条目,仅替换GitHub相关地址。支持备份恢复和风险提示。用于解决GitHub访问问题。
- 查异常登录:last -n 20 和 grep "Accepted" /var/log/auth.log | tail -15,识别陌生IP或非工作时段登录。
- 查可疑进程:ps aux --sort=-%cpu | head -10,关注CPU占用高、名称模糊(如xmr、minerd、kthreadd)或路径异常(如/tmp、/dev/shm)的进程。
- 查近期文件变更:find /etc -type f -mtime -3 -ls 2>/dev/null,重点比对passwd、shadow、ssh/sshd_config等核心配置是否同步被改。
定位修改源头并恢复安全状态
确认被篡改后,分两步处置:
-
立即恢复文件:备份当前版本(sudo cp /etc/hosts /etc/hosts.bak.$(date +%s)),然后清空内容并重写最小安全配置:
echo -e "127.0.0.1 localhost\n::1 localhost" | sudo tee /etc/hosts -
加固防护机制:设置只读权限防止再次篡改:
sudo chmod 644 /etc/hosts && sudo chown root:root /etc/hosts
若系统支持,还可添加不可变标记(需谨慎):
sudo chflags schg /etc/hosts(解除用 chflags noschg)

















