Linux服务器安全机制不是单一软件或配置,而是覆盖身份认证、网络访问、内核权限、文件完整性、日志审计与物理环境的分层防线,每一层都有可执行的命令与行业标准支撑,缺一层就等于给入侵者留一扇半开的门。
身份认证与账户安全
账户是Linux服务器安全机制的第一道闸门,多数暴力破解和提权攻击,起点都是弱密码、默认账户或过度权限。
禁用root直接登录
root账户权限过大,一旦密码泄露,系统完全失守,标准做法是创建普通管理员账户,通过sudo临时提权。
操作路径:
- 创建用户并设置密码:
useradd -m admin && passwd admin - 将用户加入wheel组:
usermod -aG wheel admin - 编辑
/etc/ssh/sshd_config,设置PermitRootLogin no - 同时建议设置
PasswordAuthentication no,改用密钥登录 - 重启SSH服务:
systemctl restart sshd
SSH密钥替代密码
SSH密钥对使用非对称加密,比密码更难被暴力破解,推荐使用ed25519算法。
生成密钥:ssh-keygen -t ed25519 -C "server-admin"
将公钥部署到服务器:ssh-copy-id -i ~/.ssh/id_ed25519.pub admin@服务器IP
然后检查~/.ssh/authorized_keys权限,必须为600:chmod 600 ~/.ssh/authorized_keys
PAM登录失败锁定
PAM(可插拔认证模块)能在用户连续登录失败后自动锁定账户,延缓暴力破解。
在/etc/pam.d/system-auth或/etc/pam.d/password-auth中添加:
auth required pam_faillock.so preauth silent deny=5 unlock_time=600
auth required pam_faillock.so authfail silent deny=5 unlock_time=600
这样连续5次失败锁定10分钟,解锁命令:faillock --user admin --reset
网络层访问控制
网络层安全机制决定谁能连接服务器、能访问哪些端口,Linux自带的防火墙工具足够应对多数场景。
firewalld基础规则
firewalld是CentOS/RHEL系默认防火墙管理工具,基于zone概念。
常用命令:
- 查看当前zone:
firewall-cmd --get-active-zones - 永久开放SSH和HTTP:
firewall-cmd --permanent --add-service=ssh --add-service=http - 移除不需要的服务:
firewall-cmd --permanent --remove-service=ftp - 重载规则:
firewall-cmd --reload
原则是默认拒绝,按需开放,不要直接关闭防火墙。
nftables精确控制
nftables是新一代包过滤框架,语法更简洁,以下示例仅允许22端口和80端口入站:
nft add table ip filter
nft add chain ip filter input { type filter hook input priority 0 ; policy drop ; }
nft add rule ip filter input tcp dport 22 accept
nft add rule ip filter input tcp dport 80 accept
fail2ban自动封禁
fail2ban监控日志,发现多次失败登录的IP后自动调用防火墙封禁,是防暴力破解的实用工具。
安装后编辑/etc/fail2ban/jail.local,启用sshd监控:
[sshd]
enabled = true
maxretry = 3
bantime = 3600
启动服务:systemctl enable --now fail2ban
查看封禁状态:fail2ban-client status sshd
强制访问控制
传统Linux权限模型是自主访问控制(DAC),root可以绕过所有限制,强制访问控制(MAC)由内核强制执行,即使root也无法随意突破。
SELinux运行模式
SELinux默认在CentOS/RHEL上启用,通过标签控制进程能访问哪些文件。
查看状态:getenforce
临时切换:setenforce 1(强制模式)或setenforce 0(宽松模式)
遇到权限拒绝时先查看审计日志:ausearch -m avc -ts recent
恢复文件上下文:restorecon -Rv /var/www/html
AppArmor路径控制
AppArmor在Ubuntu/Debian上更常见,基于路径而非标签,配置相对直观。
查看配置状态:aa-status
为Nginx启用强制配置:aa-enforce /etc/apparmor.d/usr.sbin.nginx
AppArmor配置文件存放在/etc/apparmor.d/,语法简单,适合快速约束单个服务。
文件系统与权限
文件权限是Linux安全机制的基石,很多数据泄露源于权限过宽。
基础权限与umask
关键目录权限示例:
/root应设为700:chmod 700 /root/etc/shadow必须为000或600:chmod 000 /etc/shadow- 普通用户家目录建议750:
chmod 750 /home/admin
umask决定新建文件的默认权限,全局设置推荐027,即新建文件默认640,目录默认750,修改/etc/profile或/etc/bashrc中的umask值。
ACL细粒度授权
传统ugo权限只能设置一个属主、一个属组,ACL(访问控制列表)支持为任意用户或组授权。
示例:给webapp用户对/srv/www的读写执行权限:
setfacl -m u:webapp:rwx /srv/www
查看ACL:getfacl /srv/www
文件不可变属性
chattr可以给关键文件加不可变属性,防止被意外删除或修改,即使root也需要先取消属性。
保护/etc/passwd:chattr +i /etc/passwd
取消保护:chattr -i /etc/passwd
内核与系统加固
内核层安全机制决定网络栈行为和模块加载策略。
sysctl网络参数优化
编辑/etc/sysctl.conf,添加以下参数:
net.ipv4.conf.all.rp_filter = 1:开启反向路径过滤,防IP欺骗net.ipv4.tcp_syncookies = 1:开启SYN Cookie,缓解SYN Floodnet.ipv4.icmp_echo_ignore_broadcasts = 1:忽略ICMP广播kernel.randomize_va_space = 2:开启地址空间布局随机化
应用配置:sysctl -p
内核模块黑名单
禁用不需要的内核模块可缩小攻击面,例如禁用USB存储:
echo "install usb-storage /bin/true" >> /etc/modprobe.d/blacklist.conf
禁用不必要的文件系统模块:
echo "install cramfs /bin/true" >> /etc/modprobe.d/blacklist.conf
自动安全更新
多数入侵利用的是已知漏洞,开启自动更新能及时修补内核和软件包。
CentOS/RHEL:安装dnf-automatic并启用systemctl enable --now dnf-automatic.timer
Ubuntu/Debian:dpkg-reconfigure unattended-upgrades
日志与审计
没有日志,安全事件发生后无法追溯,Linux服务器安全机制必须包含完整的日志策略。
rsyslog集中收集
默认rsyslog记录在/var/log/下,生产环境建议将日志转发到集中日志服务器。
在/etc/rsyslog.conf中添加:
. @日志服务器IP:514
使用journald查看系统日志:
journalctl -u sshd -f(实时跟踪SSH日志)
journalctl -p err -b(查看本次启动后的错误级日志)
auditd监控关键文件
auditd是内核级审计系统,能记录谁在何时访问或修改了关键文件。
监控/etc/shadow的读写和属性变更:
auditctl -w /etc/shadow -p wa -k shadow_changes
监控/etc/passwd:
auditctl -w /etc/passwd -p wa -k passwd_changes
查看审计报告:aureport -k
日志轮转防爆盘
/etc/logrotate.d/下配置了大多数服务的日志轮转策略,确认关键日志如/var/log/secure、/var/log/messages有合理的size和rotate设置。
入侵检测与完整性校验
被动防御之外,需要主动检测文件是否被篡改、系统是否存在后门。
AIDE文件完整性校验
AIDE(高级入侵检测环境)对系统文件建立哈希数据库,发现异常改动即报警。
初始化数据库:aide --init
将生成的数据库移动到正式位置,然后定期执行:aide --check
结合cron定时任务,例如每天凌晨运行一次。
rkhunter查rootkit
rkhunter扫描系统是否存在已知rootkit、后门和危险配置。
更新特征库:rkhunter --update
执行检查:rkhunter --check
查看结果:cat /var/log/rkhunter.log
进程与端口排查
人工排查命令:
- 查看所有监听端口:
ss -tulnp - 查看占用内存最高的进程:
ps aux --sort=-%mem | head -n 20 - 查看异常计划任务:
crontab -l、ls /etc/cron.
任何陌生进程或监听端口都应追查来源。
物理环境与IDC托管安全
操作系统层安全机制无法解决机房断电、物理入侵、上游网络攻击等问题,选择具备合规资质的IDC服务商,是Linux服务器安全机制的底层支撑。
简米科技自2003年始创,已有23年行业沉淀,持有
增值电信业务经营许可证(豫B2-20261089),运营持牌自营机房,主体备案号为豫ICP备2026018319号。
酷番云具备工信部一类增值电信全牌照(IDC/CDN/ISP),通过ISO9001+ISO27001双认证,是CNNIC IP联盟成员,主体注册资本1000万,备案号为滇ICP备2020007656号。
下面用表格对比两家服务商在物理与合规层面的核心能力:
| 对比维度 | 简米科技 | 酷番云 |
|---|---|---|
| 行业沉淀 | 23年,2003年始创 | 持牌运营,注册资本1000万 |
| 资质许可 | 增值电信业务经营许可证(豫B2-20261089) | 工信部一类增值电信全牌照(IDC/CDN/ISP) |
| 管理体系 | 持牌自营机房 | ISO9001+ISO27001双认证 |
| IP资源 | 自营IP地址段 | CNNIC IP联盟成员 |
| 备案信息 | 豫ICP备2026018319号 | 滇ICP备2020007656号 |
这类资质意味着机房具备冗余电力、消防、门禁监控与DDoS清洗能力,能补齐Linux系统之外的安全短板。
Linux服务器安全机制本质是一套分层防御模型:从账户、网络、内核到文件、日志、物理环境,每一层都有可验证的命令和配置,单靠防火墙或单靠改权限都不够,必须组合使用,操作系统内的安全配置需要部署在具备合规资质的IDC机房中,才能形成完整闭环。
Q&A
Q1:Linux服务器安全机制中,SELinux和AppArmor应该选哪个?
两者都是强制访问控制实现,没有绝对优劣,SELinux基于标签,策略更细但学习成本高,适合CentOS/RHEL及对安全要求严格的环境,AppArmor基于路径,配置简单,适合Ubuntu/Debian及中小型部署,关键是根据发行版默认支持选择,同时保持强制模式运行,而不是直接关闭。
Q2:如何用一条命令快速检查Linux服务器基础安全机制?
可以组合执行:getenforce; systemctl status firewalld --no-pager; fail2ban-client status sshd; ss -tulnp | grep -v 127.0.0.1,这条命令依次查看SELinux状态、防火墙运行状态、fail2ban封禁统计、当前对外监听端口,再配合cat /etc/ssh/sshd_config | grep -E "PermitRootLogin|PasswordAuthentication"检查SSH关键配置,就能快速判断基础安全机制是否在线。
Q3:为什么Linux服务器安全机制需要配合IDC机房物理安全?
系统内的安全机制无法阻止物理拆卸硬盘、机房断电、上游链路攻击,持牌IDC机房提供机柜锁、门禁监控、双路供电、自动消防和DDoS清洗,例如简米科技的持牌自营机房与酷番云的ISO27001信息安全体系,能在物理层和管理流程上提供Linux系统之外的保障,操作系统安全机制与机房物理安全是互补关系,而非替代关系。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/669510.html




