欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > ubuntu服务器 如何配置安全加固措施

ubuntu服务器 如何配置安全加固措施

2025/2/23 1:51:51 来源:https://blog.csdn.net/weixin_46801290/article/details/145609274  浏览:    关键词:ubuntu服务器 如何配置安全加固措施

下面提供一个更详细、一步步的服务器安全加固指南,适合新手操作。我们将从 Fail2Ban、SSH(密钥认证及端口更改)、Nginx 速率限制和日志轮转四个方面进行优化,同时补充一些额外的安全建议。


新的服务器,通常我们会创建一个新用户并将其加入 sudo 组,这样你就可以使用新用户登录,然后通过 sudo 命令来执行需要管理员权限的操作。下面是具体步骤:


1. 创建新用户

使用 adduser 命令创建新用户(例如用户名为 newuser):

sudo adduser newuser

系统会提示你设置密码并输入一些用户信息(可以直接回车跳过)。


2. 将新用户添加到 sudo 组

为了让新用户具有管理员权限,需要把他加入 sudo 组:

sudo usermod -aG sudo newuser

提示
在某些系统中,sudo 组可能被命名为 wheel,请根据你的发行版实际情况操作。


3. 测试新用户登录

  1. 打开一个新的终端或使用 SSH 重新连接服务器,使用新用户登录:
    ssh newuser@your_server_ip
    
  2. 登录后,尝试执行一个需要管理员权限的命令,例如:
    sudo apt update
    
    系统会提示输入新用户的密码。成功后说明配置无误。

通过这种方式,即使你禁用了 root 的直接远程登录,也能安全地以新用户身份登录,并在需要时通过 sudo 获取管理员权限。


下面是安全加固的配置措施


1. Fail2Ban 安全加固

Fail2Ban 能够自动封禁短时间内

出现多次失败登录的 IP,能有效防止暴力破解。

1.1 安装 Fail2Ban(如未安装)

sudo apt update
sudo apt install fail2ban

1.2 创建自定义配置文件

建议不要直接修改默认配置文件,而是在 /etc/fail2ban/jail.d/ 下创建自定义配置文件,比如 custom.conf

sudo nano /etc/fail2ban/jail.d/custom.conf

1.3 添加如下内容

[DEFAULT]
# 封禁时间:3600秒(1小时)
bantime = 3600
# 查找时间窗口:300秒(5分钟)
findtime = 300
# 最大失败尝试次数:5次
maxretry = 5[sshd]
enabled = true
port = ssh  # 这里使用名称(sshd)或具体数字(如22、2222)都可以
logpath = /var/log/auth.log  # 根据系统(Ubuntu 常用 /var/log/auth.log,CentOS 则可能是 /var/log/secure)

提示

  • 如果系统使用了不同的日志路径,请根据实际情况修改。
  • 如果需要保护其他服务,可以按相似方式添加更多 jail 配置。

1.4 重启 Fail2Ban 并检查状态

sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

确保看到类似封禁规则已生效的信息。


2. SSH 安全加固

加强 SSH 安全性主要包括使用密钥认证替代密码认证,并视需要修改默认端口。

2.1 生成 SSH 密钥对(本地操作)

如果你还没有 SSH 密钥,可以在客户端生成:

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

一路回车,生成的密钥通常存放在 ~/.ssh/id_rsa~/.ssh/id_rsa.pub

2.2 将公钥复制到服务器

使用 ssh-copy-id 工具上传公钥到服务器(假设 SSH 仍在默认端口 22 上):

ssh-copy-id username@your_server_ip

注意
在执行下一步前,请确保你已经能通过 SSH 密钥成功登录服务器,以免因配置错误导致无法远程连接。

2.3 修改 SSH 配置文件

编辑 /etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

确保进行如下修改:

  • 禁用密码认证
    PasswordAuthentication no
    ChallengeResponseAuthentication no
    
  • 启用公钥认证
    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys
    
  • (可选)修改 SSH 监听端口:如果你想更改默认端口,取消注释并修改 Port 行。例如:
    Port 2222
    

提示:修改 SSH 端口后,记得更新防火墙规则(见下文防火墙部分),并先在新的终端测试连接。

2.4 重启 SSH 服务

sudo systemctl restart sshd

2.5 检查 SSH 配置

在测试 SSH 连接前,建议用以下命令检查配置文件语法是否正确:

sudo sshd -t

没有输出则表示配置正确。


3. 修改 SSH 端口与防火墙设置(可选)

改变 SSH 端口可以降低被自动化攻击的概率,但务必更新防火墙规则。

3.1 更新 SSH 配置文件

如上一步已在 /etc/ssh/sshd_config 中修改 Port 参数(例如设置为 2222)。

3.2 更新防火墙规则

如果使用 UFW(Ubuntu 常用),允许新的 SSH 端口并删除旧端口:

sudo ufw allow 2222/tcp
sudo ufw delete allow 22/tcp
sudo ufw reload

若使用其他防火墙(如 iptables),请根据实际情况调整规则。


4. Nginx 速率限制配置

限制请求速率能有效防止恶意请求或 DDoS 攻击。

4.1 编辑 Nginx 主配置文件

打开 /etc/nginx/nginx.conf 文件:

sudo nano /etc/nginx/nginx.conf

http { ... } 块中添加或修改以下内容(确保放在合适的位置):

http {# 定义请求限制区域,基于客户端 IP 地址,每秒允许1个请求limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;server {listen 80;server_name your_domain_or_ip;location /search/ {# 对 /search/ 路径启用速率限制,允许突发5个请求limit_req zone=one burst=5 nodelay;try_files $uri $uri/ =404;}# 其他 location 配置…}
}

4.2 测试并重启 Nginx

测试配置文件语法:

sudo nginx -t

如果无误,重启 Nginx:

sudo systemctl restart nginx

5. 日志轮转(Logrotate)配置

定期清理和压缩日志文件能防止日志无限增长,影响系统性能。

5.1 安装 logrotate(如未安装)

sudo apt install logrotate

5.2 配置全局日志轮转

编辑 /etc/logrotate.conf,确保包含类似配置:

/var/log/*.log {weeklyrotate 4compressdelaycompressmissingoknotifempty
}

5.3 为特定服务(如 SSH)创建日志轮转配置

创建或编辑 /etc/logrotate.d/sshd 文件:

sudo nano /etc/logrotate.d/sshd

添加如下内容(确保路径正确,如 Ubuntu 下 SSH 日志通常为 /var/log/auth.log):

/var/log/auth.log {weeklyrotate 4compressdelaycompressmissingoknotifemptycreate 640 root admsharedscriptspostrotate# 重载 rsyslog 服务以确保日志文件句柄正确切换/usr/lib/rsyslog/rsyslog-rotateendscript
}

提示:文件权限和日志路径需要根据实际系统进行调整。


6. 额外安全建议

6.1 配置防火墙

安装并启用 UFW(简单易用):

sudo apt install ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
# 允许 HTTP/HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 允许你配置的 SSH 端口(例如2222)
sudo ufw allow 2222/tcp
sudo ufw enable
sudo ufw status verbose

6.2 定期更新系统

保持系统和软件包的更新是防止漏洞的重要手段:

sudo apt update && sudo apt upgrade -y

6.3 限制 root 远程登录

/etc/ssh/sshd_config 中设置:

PermitRootLogin no

6.4 安装 Fail2Ban 的邮件通知(可选)

可以设置 Fail2Ban 在封禁时发送邮件通知,便于及时响应攻击:

编辑 /etc/fail2ban/jail.local 或在 custom.conf 中增加:

[DEFAULT]
action = %(action_mwl)s

确保系统已安装邮件传输代理(如 Postfix)。


总结

  1. Fail2Ban:使用自定义配置文件,合理设置封禁参数,并验证是否生效。
  2. SSH 加固:生成密钥、上传公钥,禁用密码认证,必要时修改默认端口,并更新防火墙。
  3. Nginx 速率限制:通过 limit_req_zonelimit_req 限制恶意请求。
  4. 日志轮转:确保日志文件定期清理,防止硬盘占用过高。
  5. 额外建议:使用 UFW 配置防火墙、限制 root 远程登录、保持系统更新等。

按照以上步骤一步步实施后,您的服务器安全性将大大提高。建议每次修改配置后,都先用测试命令(如 nginx -tsshd -t)确认无误,并在另一个终端中测试连接,以避免误操作导致服务不可用。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词