ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Linux安全加固五层清单:从账号、网络服务到文件系统

Linux安全加固五层清单:从账号、网络服务到文件系统

简介:《LINUX安全加固手册》是一份面向Linux运维人员、系统管理员及安全入门者的实用加固指南,围绕系统安装、用户帐号安全、网络服务安全等核心环节,梳理出从基础配置到服务防护的完整思路,用于解决密码策略薄弱、远程服务暴露、访问控制不严等常见隐患。资源仅含1个PDF文件,压缩包大小约40KB,文档共16页,目录结构清晰,便于按专题快速定位与查阅。目前已有1333人学习下载。手册具体覆盖密码安全策略、密码强度检查、Password Shadowing、密码管理,以及服务过滤、/etc/inetd.conf、R服务、Tcp_wrapper、/etc/hosts.equiv等网络服务安全机制,并延伸至NFS、tftp、Sendmail、finger等常见服务的安全配置要点,每一部分都给出可操作的检查项与配置建议,适合直接对照系统逐项加固。对从事服务器基线检查、等保合规或日常安全运维的读者,这仍是一份短小精悍的速查手册,可帮助快速建立Linux安全加固的整体框架。

1. LINUX 安全加固的全局地图:先关内门,再关外窗

第一次做 LINUX 安全加固的人,最容易犯的错是直奔防火墙。把端口一封就以为安全了,结果漏洞全在帐号和服务里。安全不是单点防御,而是一张从装系统到文件权限的分层清单:安装阶段清理多余组件,帐号阶段管住密码和入口,网络服务阶段把暴露面压到最小,系统设置阶段关掉内核对探测的响应,最后用文件系统权限和备份兜底。这份 LINUX 安全加固手册的目录顺序本身就暗示了正确的操作顺序——先关内门,再关外窗。适合所有想系统梳理加固思路、或者准备运维安全类考核的人,照着这个层次去核对,不容易漏。

2. 用户帐号安全:密码、入口与最小化账户的三层防线

2.1 密码策略:先定义"什么是坏密码"

手册给出的密码基线是:口令至少 6 位,并且包含特殊字符。以今天的标准看这个长度已经偏短,但理解这条规则背后的思路比背数字更重要——口令不能太简单,不能由生日、电话、姓名拼音或缩写、单位简称构成。这些信息在社交工程场景里几乎等于公开资料,拿姓名拼音加生日组合去试密码,成功率极高。

除构造规则外,口令还必须有有效期,并且一旦发现有人长时间猜测口令,要立即更换。这里容易漏掉的是后半句:有效期通常靠/etc/login.defs强制执行,而"发现有人猜测口令"要靠日志和审计才能发现,手册把这件容易被忽略的事单独点出来,说明它和设置强密码同样重要。整理成清单是这样的:

  • 最小长度加特殊字符,拒绝个人信息构成的口令
  • 口令设置有效期,到期强制更换
  • 发现暴力猜测痕迹立即换口令,不等待到期
  • 口令规则要落到配置文件里,不能只靠管理员口头叮嘱

2.2 密码体检:定期"黑"自己的系统

检查密码是否安全,手册推荐了两类工具:一类是 JOHN、Crack 这种暴力猜测工具,直接对 shadow 文件跑字典;另一类是在线穷举工具,包括 Emailcrk、流光等。思路是模拟攻击者的手法去验证自己的口令,而不是等攻击者来验证。

最容易忽略的是 shadow 文件里的空口令检查。启用 shadow 之后密文被隐藏,很多人就默认密码安全了,但空口令账户仍然可能存在。手册给了一条命令:

awk -F: 'length($2)==0 {print $1}' /etc/shadow

这条命令以冒号分割 shadow 文件的每一行,第二段是密码密文或特殊标记。length($2)==0判断第二段长度为 0,也就是该账户没有口令,{print $1}把这类账户的用户名打出来。列出的每一个名字都意味着可以免密登录,属于最危险的后门之一。运行环境里如果输出为空,说明没有空口令账户,但这个命令应该定期执行,而不是只在加固当天跑一次。

2.3 管理密码:login.defs 与 su 的白名单

密码生命周期管理集中在/etc/login.defs:设置口令有效最长时限,以及口令最短字符数。手册提到当时的默认值是 5,可以通过编辑这个文件修改。注意这里管的是"新建用户时系统强制执行的下限",对存量用户不会立刻生效,配完要结合密码过期策略一起观察。

su的准入控制更关键。默认情况下任何知道 root 密码的人都能切到 root,而手册的做法是把 su 限制在 wheel 组内。编辑/etc/pam.d/su,在文件头部加两行:

auth sufficient /lib/security/pam_rootok.so debug auth required /lib/security/pam_wheel.so group=wheel

第一行的pam_rootok.so让 root 自己执行 su 时免密,这是给管理员留的后门,避免把自己锁在外面;第二行pam_wheel.so要求执行 su 的用户必须属于 wheel 组。两行配合的效果是:只有 root 和 wheel 组成员能切换到 root,其它用户即使知道 root 密码也切不过去。

把普通用户加入 wheel 组的命令是:

usermod -G 10 admin

-G 10中的 10 是当时发行版里 wheel 组的 GID,不同发行版可能有差异,执行前先grep wheel /etc/group确认组 ID。这一步是"su 白名单"落地的关键,只加 PAM 规则不把管理员加进 wheel 组,下一秒就会被自己锁在门外。

2.4 账户精简与文件不可变位

手册要求清除不必要的系统帐户:adm、lp、sync、shutdown、halt、news、uucp、operator、games、gopher、ftp。不使用 X Window 时连games一起删,不使用 FTP 服务时ftp也删。逐一执行:

userdel adm userdel lp userdel sync userdel shutdown userdel halt userdel news userdel uucp userdel operator userdel games userdel gopher userdel ftp

这些账户大多是系统安装时预置的服务或历史遗留账户,日常根本不会用,但每一个都是一个可尝试的登录入口。删除后还要检查/etc/passwd里是否残留个人信息,防止被 finger 类程序泄露。

接下来是容易被忽略的写保护步骤。修改passwd、shadow、group、gshadow四个文件的不可改变位:

chattr +i /etc/passwd chattr +i /etc/shadow chattr +i /etc/group chattr +i /etc/gshadow

+i表示 immutable,设置后即使 root 也不能直接修改或删除文件,入侵者想通过追加一个带 uid 0 的账户来提权会直接失败。代价是日常维护用户时要先chattr -i解除再改,改完立刻重新加上。这一步很容易漏,因为在加固清单上它排在「删除账户」后面,很多人删完账户就以为收工了。

手册还提醒不要使用.netrc文件,并预先生成$HOME/.netrc和/.rhosts设置为 0000。.rhosts是 R 服务的信任凭证文件,攻击者经常利用符号链接或 root shell 往里面写入+ +来远程打开受保护主机的 R 服务。预先创建一个空文件并设 0000,比等文件被写入后再补救要安全得多——权限只能防普通用户,文件不存在反而给了攻击者"新建"的机会。

这一节最后是传输层替代:使用 ssh 代替 telnetd、ftpd、pop 等传统服务。核心原因在这份手册里写得很直白:ftp、pop 和 telnet 本质上都不安全,因为它们在网络上用明文传送口令和数据。明文传输意味着只要网络路径上有一个监听点,口令就等同于公开。

3. 网络服务安全:把暴露面压到最小的端口与服务清单

网络服务是 Linux 对外最直接的暴露面,也是配置最容易出错的地方。手册在服务安全里反复强调两个原则:只对外开放所需要的服务,关闭所有不需要的服务;把不同服务分布在不同主机上。前者是风险控制,后者是故障隔离——一个服务被攻破不会拖垮整台机器。所有具体配置都围绕这两条展开。

3.1 服务过滤:先知道哪些端口不应该出现

在服务器上应禁止一批存在安全风险的服务,如果业务上必须开放,则通过防火墙和路由指定信任 IP 访问。手册给了一张端口清单,复习时至少记住以下几类:

服务端口协议风险特征
echo7TCP/UDP常被用于放大流量攻击
systat11TCP泄露系统信息
netstat15TCP泄露网络连接信息
tftp69UDP无认证文件传输
sunrpc111TCP/UDPRPC 服务易被远程利用
snmp161UDP默认口令 + 信息泄露
exec512TCPR 服务,弱认证
login513TCPR 服务,弱认证
shell514TCPR 服务,弱认证
printer515TCP打印服务,少用到
nfs2049TCP/UDP文件共享,需严格过滤
x116000 起TCPX 窗口,远程访问风险高

原文还点名了一组危险 UDP 服务:rpc.ypupdated、rpcbind、rpc.cmsd、rpc.statd、rpc.ttdbserver、sadmind。这些 RPC 类服务不仅可能导致 DoS,还存在远程溢出风险。它们的共同特点是:平时根本没人用,但只要开着就是一个待爆的漏洞点。

配置完成后,手册给出的验证手段是用网络扫描器从外部模拟入侵者扫描,比如 nmap。这一步的意义在于:配置文件里的"我认为关了"不等于"实际关着",只有扫描结果才能反映真实暴露面。

3.2 inetd.conf 与 R 服务:关掉 R 服务的完整姿势

/etc/inetd.conf是传统超级守护进程的配置文件。手册要求:权限 600、属主 root、注释掉所有不需要的服务、重启 inetd,然后用netstat -an复查本机服务。这里最典型的坑是——改完文件不重启进程。inetd 是常驻进程,配置只在启动时加载一次,不重启等于没改。

R 服务(exec、rlogin、rshell,端口 512/513/514)是必须处理的高危项。不用 R 服务时,旧版发行版在/etc/inetd.conf里注释对应行并重启;新版发行版需要在/etc/xinetd.d目录中删除对应文件,因为 xinetd 按目录下的独立文件管理服务,只注释 inetd.conf 不会生效。手册这里专门区分了两代配置机制,复习时最容易错的就是这个。

必须使用 R 服务时,手册给出三条降险措施:用 logdaemon 这类安全增强版替代程序;在路由或防火墙上禁止外部网络访问 512、513、514 端口;配合 TCP Wrapper 设置可访问的信任主机。另外,无论用不用 R 服务,都要预先生成$HOME/.rhosts和/etc/hosts.equiv并设为 0000,防止被写入+ +。同一句话在这份手册里出现了多次,说明这是当年攻击者最常用的提权路径之一。

3.3 Tcp_wrapper:让 tcpd 当二传手

Tcp_wrapper 的作用是在 Unix 平台上过滤 TCP/UDP 服务,被广泛用于监视和过滤 telnet、ftp、rsh、rlogin、tftp、finger 等服务。工作机制是:安装后用tcpd程序取代原来的in.telnetd等服务程序,tcpd截获客户端请求,记录发起时间和 IP,按访问控制规则检查,符合才转交给真正的服务程序,不符合直接拒绝。相当于在真实服务前面加了一道门禁。

配置基线是/etc/hosts.deny里写:

ALL: ALL@ALL, PARANOID

含义是默认拒绝所有连接,其中ALL@ALL覆盖所有来源,PARANOID匹配那些主机名和 IP 地址对不上的请求。安全加固的默认策略一定是"默认拒绝",而不是"默认放行、再封几个坏 IP"。

允许名单写在/etc/hosts.allow:

sshd: 208.164.186.1 gate.openarch.com

表示只允许 IP 为208.164.186.1或主机名为gate.openarch.com的客户端访问 sshd。注意 IP 和主机名是"或"的关系,如果只想让固定 IP 访问,就不要写主机名。

排查时用tcpdchk检查配置。还有一个容易漏的细节:UDP 服务使用 tcpwrapper 时,/etc/inetd.conf里要使用nowait选项,这是因为 UDP 没有连接状态,wait/nowait 的选择直接影响 tcpd 的等待方式。

3.4 hosts.equiv、services、aliases:三个易被忽略的系统文件

/etc/hosts.equiv是 R 服务的信任主机列表,手册给出两种处理路线:不使用就直接删除;可能要用就预先生成空文件并设 0000。如果必须保留,约束条件相当细:可信赖主机必须是必要的;主机必须可靠;使用全名如hostname.domainname.cn;任何时候都不能出现+字符,出现就意味着任何主机任何用户都可免密访问;文件中!和#不是注释符,不要用;文件首字符不能是-;权限 600、属主 root;每次安装补丁或操作系统后重新检查。

/etc/services是端口号和服务名的对应表。权限 600、属主 root,最好再用chattr +i /etc/services加上不可变位。原因是:改了这张表,服务就会绑定到非标准端口,攻击者可以用这种方式隐藏后门服务,或把常用服务的端口改到容易监听的位置。保护端口映射表,等于保护服务发现机制。

/etc/aliases是邮件别名表。手册要求注释掉decode以及games, ingress, system, toor, manager等别名,然后执行/usr/bin/newaliases激活新配置。decode别名曾与历史漏洞相关联,其余系统内置别名平时不会用到,留着只会扩大本地邮件系统的攻击面。文件权限设为 755、属主 root。注意这里容易漏的是newaliases这一步——只改文件不重建别名数据库,配置不会生效。

3.5 专项服务:NFS、tftp、sendmail、WWW 与 FTP

NFS 文件系统要注意的点很集中:在外部路由上过滤 111 和 2049 端口;检查补丁更新情况;检查/etc/exports输出路径权限,只有 root 能修改,所有用户只读;用exportfs管理输出目录:

exportfs -o access=engineering,ro=dancer /usr exportfs -u /usr

第一行设置/usr只对engineering组开放读写(ro=dancer表示对 dancer 主机只读),第二行卸载该输出。没有 NIS 服务时改资料要同步更新/etc/passwd、/etc/group、/etc/hosts、/etc/ethers;不导出包含本地入口的目录;对方机器必须完全可信;使用全名;输出列表不要超过 256 个字符;用showmount -e查看自己的 export 设置;/etc/exports权限 644、属主 root。mount 文件系统时用noexec,nodev,nosuid选项,在/etc/fstab里设置。

tftp 的处理最简单也最绝对:无论何种情况都不应该启动这个服务进程。这个服务无认证、无日志,是典型的后门载体。

sendmail 的配置部分,重点是一组编译期或配置期可选的特性,全部围绕"转发"和"发件人校验"两个主题。promiscuous_relay会打开任意转发功能,等于关闭邮件转发安全增强,容易被滥用为垃圾邮件中继;accept_unqualified_senders会放过没有合法主机地址的发件人;loose_relay_check会放宽源路由邮件的转发检查;accept_unresolvable_domains会放过无法解析主机域的连接。这四个特性除非有明确理由,都不要开。blacklist_recipients则可以开启接收黑名单,按用户名、主机名或地址拒绝。配置方式是把特性写入.mc文件,再用m4生成sendmail.cf。另外还要用smrsh受限 shell 防止内部用户恶意操作,修改 banner、禁止 expn/vrfy 命令,建议配置 SMTP 认证。

finger 服务同样建议不启动,如果必须用则用最新版本。UUCP 建议直接不使用,如果保留则删除所有 rhosts 文件、确保.cmds属主 root、限制 UUCP 登录、确保文件不被所有人可写。

WWW 服务(httpd)的核心要求:使用软件最新版;不要用 root 运行 httpd;在 chroot 环境中运行;尽量不用 CGI,或对 CGI 脚本做安全审计;链接使用静态库;过滤\n \r (.,/;~!)>|^&$\<` 等危险字符;关键业务用 https 传输。这条清单的思路是"即使 Web 服务被攻破,也不让攻击者拿到系统权限",chroot 和降权运行都是这个目的。

FTP 的处理是这一节里最细的。wu-ftpd 要检查是否有 SITE EXEC 问题;通过/etc/ftpusers禁止高危用户使用 FTP;chroot 环境运行 ftpd,使用自己的 ls 命令;加入对 quota、pam 的支持;配置/etc/ftpaccess禁止系统信息泄露、设置最大连接数;配置/etc/ftphosts限定允许使用 FTP 的主机和用户;针对不同用户设置不同权限;经常查看/var/log/xferlog日志;配置文件属性改成 600。匿名 FTP 只给读权限,并使用分布式密码体系时配置好密码文件。

4. 系统设置与文件系统:内核参数、引导器和权限兜底

4.1 控制台与 Ping:本地面板也要锁

限制控制台使用,手册给了两层操作。第一层是删除/etc/security/console.apps中的服务程序:

rm -f /etc/security/console.apps/halt rm -f /etc/security/console.apps/poweroff rm -f /etc/security/console.apps/reboot rm -f /etc/security/console.apps/shutdown rm -f /etc/security/console.apps/xserver

删除之后,只有 root 能执行关机、重启和启动 X server 的操作,普通用户在控制台上按电源键或执行 shutdown 会失败。第二层是在/etc/pam.d的所有文件中,给包含pam_console.so的行加上注释,禁止控制台程序通过 PAM 获得授权。两层对应两个不同的授权路径,只删文件不注释 PAM,某些程序仍可能通过控制台授权机制绕回来。

关闭 ping 响应的命令是:

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

写入 1 表示系统对 ping 请求不做任何回应,网络扫描时主机对 ICMP 探测"隐身"。这个操作修改的是运行时内核参数,重启后会恢复默认,需要持久化时把对应参数写入/etc/sysctl.conf。另外要清楚:关 ping 能降低被扫描发现的概率,但并不能阻止端口扫描,它只是减少一种探测途径。

4.2 securetty、host.conf 与源路径路由

/etc/securetty文件限制 root 可以从哪些终端登录。默认配置会列出多个虚拟控制台,如果某些终端根本不存在或不需要 root 登录,就把对应行删掉。这个文件的作用是把 root 登录限制在物理可控的终端上,防止通过网络虚拟终端直接以 root 登录。

/etc/host.conf控制主机名解析行为。常见的安全配置是固定解析顺序并开启防欺骗,例如设置order hosts,bind让本地 hosts 文件优先于 DNS,再加nospoof on防止主机名与 IP 不匹配的欺骗。需要说明的是,现代发行版更多用/etc/nsswitch.conf管理解析顺序,但这份手册写作时host.conf还是主要入口,复习时按原文理解即可。

禁止 IP 源路径路由也是一个内核参数操作。源路径路由允许数据包自己指定到达目标的路径,攻击者可以利用它绕过防火墙规则。通常的做法是把相关内核参数写 0:

echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route

accept_source_route值为 1 时接受带源路由选项的包,写 0 表示忽略。这个选项不止一个网络接口要管,conf/all下的设置会作为默认值,实际接口的配置也要检查一致。

4.3 资源限制、引导器与关机命令

资源限制这一节,手册只给了标题,实际落点是限制用户对系统资源的占用上限。常见配置位置是/etc/security/limits.conf,可以针对用户或组设置 core 文件大小、最大进程数、最大登录数等。比如限制 core 文件大小为 0,防止程序崩溃时把内存中的敏感数据写入磁盘:

* hard core 0

这行表示所有用户的 core 文件硬限制为 0,即禁止生成 core 文件。资源限制的作用是防止某个被入侵的账户无限消耗 CPU、内存或文件描述符,把攻击影响控制在单点。

LILO 引导器安全,核心是防止攻击者通过单用户模式绕过登录认证。常见做法是在/etc/lilo.conf中设置引导密码,并配合restricted参数,使只有在内核启动参数需要被修改时才提示输入密码。这样即使攻击者物理接触到机器,也不能轻易进入单用户模式重置 root 密码。

Control-Alt-Delete 键盘关机命令的处理,是把/etc/inittab中ca::ctrlaltdel那一行注释掉。不处理的话,任何能接触到键盘的人都可以通过组合键直接重启服务器,这在机房环境里是真实的物理攻击面。不同发行版对重启快捷键的管理位置不同,systemd 时代对应ctrl-alt-del.target,思路是一样的:把这个入口关掉。

日志系统安全,最容易忽略的是日志本身。手册提到日志安全但没有展开,梳理下来会发现需要做三件事:确认 syslog 配置中记录了哪些类别的事件;配置日志轮转,防止日志写满磁盘;限制/var/log目录权限,防止攻击者清理痕迹。日志是事后溯源的唯一依据,日志不可信,整个加固就没有验证手段。

4.4 文件系统安全与备份兜底

文件系统安全的第一层是权限。手册强调关键文件的权限和属主,回顾前面几章,/etc/inetd.conf600、/etc/hosts.equiv600、/etc/services600、/etc/aliases755、/etc/exports644,这些数字不是随机的:配置文件涉及认证和信任关系的要收紧到 600,涉及服务发现的也要收紧;纯功能性的配置保持 755。复习时可以把这些权限数字串起来记忆,而不是逐个背。

第二层是控制 mount 上的文件系统。在/etc/fstab中为不需要可执行文件的分区添加noexec、nodev、nosuid选项:

/dev/sdb1 /data ext4 defaults,noexec,nodev,nosuid 0 0

noexec禁止在该分区执行二进制文件,nodev禁止在该分区创建设备文件,nosuid忽略 suid 位。三者组合的意义:即使攻击者向 /data 上传了恶意程序并拿到了写权限,也无法在挂载点上执行它,无法创建设备节点,无法利用 suid 程序提权。

第三层是备份与恢复。备份不是"把数据复制一份",而是灾难发生后的后悔药。手册把备份放在文件系统安全这一章,说明它的定位是兜底:权限、服务、内核参数都可能被绕过,但只要备份在,系统就能恢复到可信状态。备份要注意的是介质隔离——备份不能放在同一台机器上,否则入侵者可以连同备份一起删除或篡改。

4.5 其它:防火墙与第三方工具的定位

手册最后补充了防火墙和第三方安全工具。防火墙在整套加固中的角色是"外部拦截层",前面所有配置都失效时,防火墙是最后一道闸门。第三方工具则包括扫描器、入侵检测和日志分析类软件,用来弥补人工检查的盲区。安装阶段还要注意:让系统处于单独或隔离的网络中,防止未受保护的系统连到互联网后被攻击。安装完成后卸载一批默认软件包,包括 pump、apmd、lsapnptools、kudzu、sendmail 等,卸载前先停掉相关进程:

/etc/rc.d/init.d/apmd stop /etc/rc.d/init.d/sendmail stop /etc/rc.d/init.d/kudzu stop

先停进程再卸载,这个顺序很重要。不先停掉服务就直接rpm -e,可能遇到文件被占用、依赖残留,而且服务在卸载瞬间仍处于运行状态,等于一边关窗一边开着门。

5. 最容易漏掉的加固点:五处"以为做了其实没做"的角落

5.1 过程性易漏点:改完不验证、删了不确认、装了不卸载

第一处,改完配置不重启服务,是加固里最普遍的翻车现场。注释掉/etc/inetd.conf里的服务后,如果不重启 inetd 进程,配置不会生效,服务依然在监听;在/etc/xinetd.d中删除 R 服务文件后,如果不重启 xinetd,删除也不生效。为什么漏:因为配置文件是静态的,服务的监听状态是动态的,两者之间隔着一次重启,人的大脑很容易把"改了文件"等同于"关掉了服务"。怎么补:改完任何守护进程配置,当场执行重启命令,然后netstat -an对照端口表检查,确认目标端口已经不存在。这条习惯应该在所有配置改动上复用,不只是 inetd。

第二处,装完系统不卸载默认软件。pump、apmd、kudzu、sendmail 这批软件是发行版预装的,各自带有历史漏洞,有的还默认监听端口。为什么漏:安装过程一路回车,加固清单又只关注"要开什么服务",很少有人逐项核对"预装了什么不该有的软件"。怎么补:系统装完、还在隔离网络里的时候,先把 apmd、sendmail、kudzu 三个进程停掉,再逐个rpm -e卸载。卸载列表要提前写到加固清单里,把它当作安装流程的一部分,而不是事后补救。

第三处,密码检查只做一次。很多人启用 shadow、设置完密码策略后就认为密码安全收工了,但新添加的用户、临时创建的测试账户、脚本批量开号,都可能产生空口令或弱口令账户。为什么漏:密码安全是动态的,新账户会不断出现,而检查命令是一次性的。怎么补:把前面那条 awk 空口令检查写成周期任务,配合 JOHN、Crack 每季度跑一次弱口令检测;每次批量创建账户后立刻执行一遍检查。空口令账户是后门最爱,这个死角值得反复扫。

5.2 守护性易漏点:文件预生成与不可变位保护

第四处,.rhosts和/etc/hosts.equiv只设权限,不预先生成文件。手册反复强调"预先生成并设为 0000",原因在于:文件不存在,攻击者反而可以创建它;权限 0000 只能阻止普通用户读写,攻击者一旦拿到 root 或通过符号链接,就能写入+ +,把信任范围扩大到全网。为什么漏:直觉上"没有文件就没有风险",没想到"没有文件"本身就是风险——攻击者拿 root 后可以补上这个文件并写入后门。怎么补:加固时主动touch /.rhosts和$HOME/.rhosts、/etc/hosts.equiv,创建空文件后立刻chmod 000、chown root。以后无论系统里是否使用 R 服务,这个信任文件都存在并且是空的,攻击者想写入时必须先突破不可写权限。

第五处,chattr +i保护不完整。很多人只保护/etc/passwd和/etc/shadow,忘了/etc/group、/etc/gshadow、/etc/services。为什么漏:passwd 和 shadow 是"账户口令"的直接载体,直觉上最重要;但攻击者改不了 passwd 时,还可以改 group 把普通用户划进 wheel 组,或者改 gshadow 重建组口令,甚至改 services 把后门服务绑定到非标准端口。怎么补:把五个文件一次性全部chattr +i——passwd、shadow、group、gshadow、services。日常需要增删用户时,先chattr -i解除所有保护,操作完再逐个加回。血泪经验是:加回保护这一步一定要当场做,拖到"下次一起加"的结果就是没有下次。

6. 复习清单:按五层路径查漏补缺,一次装好不再返工

把整份手册压缩成一张可执行的自检表,每次加固或复习都按这张表走:

层次检查点参考命令
安装隔离网络、卸载多余软件rpm -e pump apmd kudzu sendmail
帐号空口令、弱口令、su 白名单awk -F: 'length($2)==0 {print $1}' /etc/shadow
网络服务端口最小化、R 服务/tftp 关闭netstat -an、nmap 外部扫描
系统设置关 ping、securetty、源路由、引导器echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
文件系统关键文件权限、mount 选项、chattrchattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/services

查漏补缺的推荐顺序是从外到内反着查:先用 nmap 从外部扫描看真实开放端口,把"实际暴露面"和"配置里以为关掉的服务"对上;再看 shadow 空口令和 passwd 里的可疑账户,排查入口;然后检查chattr +i保护是否完整、/etc/hosts.equiv和.rhosts是否为空文件且权限 0000;最后检查文件权限和 mount 选项。这个顺序的妙处在于:外部扫描撒谎的可能性最小,先用客观结果建立基线,再逐层核对配置。

容易把复习带偏的是贪多。这份手册真正的核心只有五条主线:装完就清理、密码和 su 入口管死、网络服务默认拒绝、内核参数收敛、关键文件加写保护。其它所有条目都是这五条的具体展开。复习时遇到记不住的端口号或权限值,回到这五条主线上去定位,比死记硬背效率高。

从那以后,我每次装完系统都强制走一遍这五层清单:先确认隔离网络,再卸载多余软件、删多余账户,接着逐项核查网络服务并用扫描器验证,然后处理内核参数和引导器,最后检查文件权限、mount 选项并做一次备份。改任何配置都要求自己当场验证一条命令,绝不留到"下次一起看"。血泪教训总结成一句话:安全加固不是配置完就结束,而是验证完才结束。这份手册值得作为每次操作的底稿反复对照,希望帮到你。

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进