Linux服务器安全配置是保障系统稳定运行和数据安全的核心工作,需从系统基础加固、访问控制、服务优化、日志审计等多个维度综合实施,以下为详细配置方案:

系统基础加固
-
账户与权限管理
- 禁用或删除无用账户:通过
userdel -r username删除非系统必要用户(如games、news),避免闲置账户被利用。 - 锁定高风险账户:对test、admin等默认测试账户执行
passwd -l username锁定,防止未授权访问。 - 强密码策略:通过
/etc/login.defs配置密码最小长度(如PASS_MIN_LEN 12)、密码复杂度(使用pam_pwquality模块 enforce complexity rules),并强制定期修改(如PASS_MAX_DAYS 90)。 - 限制sudo权限:编辑
/etc/sudoers,仅允许必要用户使用sudo,并禁用sudo su -(通过Defaults targetpw和Defaults !authenticate组合控制)。
- 禁用或删除无用账户:通过
-
系统更新与补丁管理
- 定期更新系统:基于Red Hat系使用
yum update -y,Debian系使用apt update && apt upgrade -y,确保内核及软件包为最新版本,修复已知漏洞。 - 配置自动更新:通过
yum-cron或unattended-upgrades实现安全补丁自动安装,减少人工遗漏风险。
- 定期更新系统:基于Red Hat系使用
-
文件系统与目录权限
- 关键目录权限控制:
/etc/:配置文件目录,权限设置为755(chmod 755 /etc),所有者root:root。/etc/shadow:密码文件,权限600(chmod 600 /etc/shadow),仅root可读写。/var/log/:日志目录,权限750(chmod 750 /var/log),日志组可读,限制普通用户访问。
- 禁用不必要文件系统:卸载未使用的文件系统(如floppy、cdrom),通过
mount | grep "^/dev"检查挂载点,确认必要后卸载多余设备。
- 关键目录权限控制:
访问控制与网络防护
-
SSH服务安全配置
(图片来源网络,侵删)- 修改默认端口:将SSH端口从22改为非标准端口(如2222),编辑
/etc/ssh/sshd_config,设置Port 2222。 - 禁用root远程登录:配置
PermitRootLogin no,强制普通用户通过sudo提权。 - 限制登录用户:在
/etc/ssh/sshd_config中添加AllowUsers user1 user2,仅允许指定用户登录。 - 禁用空密码登录:设置
PermitEmptyPasswords no,避免弱密码风险。 - 使用密钥认证:启用
PubkeyAuthentication yes,禁用密码认证(PasswordAuthentication no),通过SSH密钥对提升安全性。
- 修改默认端口:将SSH端口从22改为非标准端口(如2222),编辑
-
防火墙与端口管理
- 使用iptables或firewalld控制端口访问:
- 仅开放必要服务端口(如HTTP 80、HTTPS 443、SSH 2222),关闭其他端口(如Telnet 23、FTP 21)。
- 示例(iptables):
iptables -A INPUT -p tcp --dport 80 -j ACCEPT(允许HTTP),iptables -A INPUT -p tcp --dport 22 -j DROP(禁止默认SSH端口)。
- 配置默认策略:设置
iptables -P INPUT DROP,拒绝所有未允许的入站连接,仅放行必要出站连接。
- 使用iptables或firewalld控制端口访问:
-
网络服务优化
- 关闭不必要服务:通过
systemctl list-unit-files --type=service查看服务状态,使用systemctl disable service_name禁用非核心服务(如telnet、rsh、sendmail)。 - 使用TCP Wrappers:编辑
/etc/hosts.allow和/etc/hosts.deny,限制或允许特定IP访问服务(如sshd: 192.168.1.0/24允许内网SSH访问)。
- 关闭不必要服务:通过
日志监控与审计
-
日志配置
- 启用系统日志:确保rsyslog或syslog-ng服务运行,配置
/etc/rsyslog.conf记录用户登录、系统错误、网络连接等关键事件(如authpriv.* /var/log/secure)。 - 集中日志管理:对于多服务器环境,使用rsyslog将日志发送至远程日志服务器(如
*.* @192.168.1.100:514),防止本地日志被篡改。
- 启用系统日志:确保rsyslog或syslog-ng服务运行,配置
-
安全审计工具
(图片来源网络,侵删)- 部署auditd:通过
auditctl设置审计规则,如监控/etc/passwd文件修改(auditctl -w /etc/passwd -p wa -k passwd_changes)、记录sudo命令(auditctl -a exit,always -S execve -F euid=0 -k sudo_commands)。 - 定期检查日志:使用
grep "Failed password" /var/log/secure分析登录失败记录,发现异常IP及时封禁(如iptables -A INPUT -s 192.168.1.100 -j DROP)。
- 部署auditd:通过
数据与系统保护
-
磁盘加密
- 对敏感数据分区使用LUKS加密:通过
cryptsetup luksFormat /dev/sdb1加密数据盘,挂载时需输入密码,防止物理介质数据泄露。
- 对敏感数据分区使用LUKS加密:通过
-
定期备份
- 制定备份策略:使用
rsync或tar定期备份关键数据(如rsync -avz /etc/ backup_server:/backup/etc/),备份数据加密存储(如使用gpg加密),并定期恢复测试。
- 制定备份策略:使用
-
入侵检测
- 部署AIDE(Advanced Intrusion Detection Environment):初始化数据库
aide --init,每日更新数据库aide --update,通过aide --check对比文件变化,发现异常文件修改。
- 部署AIDE(Advanced Intrusion Detection Environment):初始化数据库
应用安全配置
- Web服务安全:若部署Apache/Nginx,关闭目录列表(
Options -Indexes)、限制错误信息泄露(ServerSignature Off)、使用HTTPS(配置SSL证书)。 - 数据库安全:限制数据库远程访问(仅允许内网IP)、修改默认端口、删除测试账户、启用数据库连接加密。
相关问答FAQs
Q1: 如何防止SSH暴力破解攻击?
A: 可通过以下措施防护:①修改默认SSH端口(如2222),减少自动化扫描目标;②禁用密码登录,启用SSH密钥认证;③使用fail2ban工具监控登录失败日志,对连续失败IP实施临时封禁(如fail2ban-client sshd set banaction iptables-multiport);④限制允许登录的用户列表(AllowUsers),缩小攻击面。
Q2: Linux服务器如何定期检查系统漏洞?
A: 可使用专业漏洞扫描工具:①基于Red Hat系统使用yum check-update检查可更新包,配合yum security查看安全更新;②使用Lynis工具进行系统安全审计(lynis audit system),生成详细报告;③使用OpenVAS扫描器进行全面漏洞检测,需提前安装并配置扫描策略,定期执行上述操作,确保系统及时修复高危漏洞。
