当前位置:网站首页 >  攻略

Linux服务器安全配置优化全指南,从零开始加固系统

时间:2026年06月03日 20:40:59 来源:易频IT社区

一、账号安全与密码策略加固

服务器安全的第一道防线是账号管理。默认的root账号和弱密码是黑客攻击的首要目标。我们需要创建具有sudo权限的普通用户,并强制执行复杂的密码策略。

1. 禁用Root远程登录

直接使用root账号远程登录风险极大,一旦密码泄露,攻击者将获得完全控制权。首先需要创建一个普通管理员用户。

步骤1:创建新用户并设置密码

执行以下命令创建用户(例如名为admin):

useradd -m admin
passwd admin

步骤2:赋予sudo权限

将新用户加入wheel组(CentOS/RHEL)或sudo组(Ubuntu/Debian):

 CentOS/RHEL
usermod -aG wheel admin
Ubuntu/Debian
usermod -aG sudo admin

步骤3:锁定root密码

执行以下命令锁定root密码,使其无法直接用于登录:

passwd -l root

2. 配置密码复杂度策略

修改/etc/login.defs文件设置密码有效期,并配置PAM模块强制密码复杂度。

步骤1:编辑/etc/login.defs

PASS_MAX_DAYS 90
PASS_MIN_DAYS 1
PASS_MIN_LEN 8
PASS_WARN_AGE 7

步骤2:配置系统密码策略

针对CentOS系统,编辑/etc/security/pwquality.conf,添加或修改以下行:

minlen = 10
minclass = 3
maxrepeat = 3
dcredit = -1
ucredit = -1
lcredit = -1
ocredit = -1

针对Ubuntu系统,编辑/etc/pam.d/common-password,在pam_unix.so行下方添加:

password requisite pam_pwquality.so retry=3 minlen=10 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1

二、SSH服务深度安全配置

SSH是远程管理的核心通道,也是被扫描最频繁的服务。默认配置存在诸多安全隐患,必须进行深度加固。

1. 修改默认端口

默认的22端口会遭受全网的暴力破解扫描。建议将其修改为高位端口(如22222)。

编辑/etc/ssh/sshd_config文件:

Port 22222

2. 强制使用密钥认证

密码认证在暴力破解面前不堪一击。密钥认证是目前最安全的登录方式。

步骤1:在本地客户端生成SSH密钥对

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

步骤2:将公钥上传到服务器

ssh-copy-id -p 22222 admin@your_server_ip

步骤3:禁用密码认证

编辑/etc/ssh/sshd_config文件,修改以下参数:

Linux服务器安全配置优化全指南,从零开始加固系统

PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin no

3. 限制登录用户与会话超时

只允许特定用户登录,并设置会话自动超时断开,防止未授权人员利用空闲会话。

在/etc/ssh/sshd_config文件末尾添加:

AllowUsers admin
ClientAliveInterval 300
ClientAliveCountMax 2
MaxAuthTries 3

注意:修改SSH配置后,必须重启服务生效。在执行重启命令前,务必保持当前连接窗口不关闭,另开一个新窗口测试连接成功后再关闭旧窗口,防止因配置错误导致被锁在服务器外。

systemctl restart sshd

三、防火墙策略精准配置

只保留业务必需的端口,拒绝所有其他入站连接。使用系统自带的firewalld(CentOS)或ufw(Ubuntu)进行管理。

1. CentOS/RHEL 配置 Firewalld

首先确保firewalld已安装并运行:

systemctl start firewalld
systemctl enable firewalld

设置默认区域为drop(丢弃所有传入数据包),然后单独放行必要端口:

firewall-cmd --set-default-zone=public
firewall-cmd --permanent --remove-service=ssh
firewall-cmd --permanent --add-port=22222/tcp
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

2. Ubuntu/Debian 配置 UFW

启用ufw并设置默认拒绝入站:

ufw default deny incoming
ufw default allow outgoing

放行修改后的SSH端口和Web端口:

ufw allow 22222/tcp
ufw allow 80/tcp
ufw allow 443/tcp

启用防火墙:

ufw enable

四、部署防暴力破解工具

即使修改了端口和禁用了密码,攻击者依然可能尝试扫描。部署Fail2ban可以自动封禁尝试频繁登录失败的IP地址。

1. 安装 Fail2ban

 CentOS
yum install epel-release
yum install fail2ban
Ubuntu
apt update
apt install fail2ban

2. 配置 SSH 防护策略

创建本地配置文件/etc/fail2ban/jail.local,覆盖默认设置:

[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
[sshd]
enabled = true
port = 22222
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 86400

注意:Ubuntu系统的日志路径通常为/var/log/auth.log,请根据实际情况修改logpath。

启动并设置开机自启:

systemctl start fail2ban
systemctl enable fail2ban

查看被封禁的IP列表:

fail2ban-client status sshd

五、内核参数与网络优化

通过调整/etc/sysctl.conf文件,加固网络栈安全性,防止SYN Flood攻击和IP欺骗。

编辑/etc/sysctl.conf,添加或修改以下参数:

 禁用IP源路由包
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
开启SYN Cookies保护
net.ipv4.tcp_syncookies = 1
禁用ICMP重定向
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
忽略ICMP ping请求(可选,根据业务需求)
net.ipv4.icmp_echo_ignore_all = 1
记录可疑数据包
net.ipv4.conf.all.log_martians = 1
地址空间布局随机化
kernel.randomize_va_space = 2

执行以下命令使配置立即生效:

sysctl -p

六、系统服务与日志审计

关闭不必要的服务可以减少攻击面。同时,确保日志服务正常运行,以便事后审计。

1. 关闭不必要的服务

检查当前监听端口:

netstat -tunlp

如果不需要Postfix邮件服务,建议关闭:

systemctl stop postfix
systemctl disable postfix

2. 配置日志记录策略

编辑/etc/rsyslog.conf,确保远程日志或本地日志存储策略合理。对于关键操作,配置/etc/profile.d/history.sh来记录每个用户的操作命令和时间:

export PS1="[\u@\h \W] \$ "
export HISTSIZE=10000
export HISTFILESIZE=10000
export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "
export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });user=$(whoami); echo $(date "+%Y-%m-%d %H:%M:%S"):$user:`pwd`:$msg >> /var/log/command_history.log; }'

创建日志文件并设置权限:

touch /var/log/command_history.log
chmod 777 /var/log/command_history.log
chattr +a /var/log/command_history.log

以上配置完成后,服务器将具备极高的基础安全性,能够抵御绝大多数自动化扫描和暴力破解攻击。定期检查/var/log/secure和/var/log/command_history.log是日常运维的重要习惯。

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图