如何为生产环境安全配置 Ubuntu 服务器

在为生产设置Ubuntu服务器时,保护系统至关重要,以确保其稳定性、安全性和可访问性。虽然Ubuntu自带许多内置安全功能,但采取额外措施以保护系统免受未经授权的访问和攻击仍然很重要。

在本指南中,我们将介绍三种增强您的Ubuntu服务器安全性的必备工具:UFW(简单防火墙)、Fail2ban和AppArmor。这些工具将通过控制网络访问、阻止暴力破解登录尝试以及保护应用程序来帮助保障您的服务器安全。

1. 使用 UFW(简单防火墙)保护网络访问

Ubuntu 附带一个用户友好的防火墙配置工具,叫做 UFW无复杂度防火墙),它提供了一个简单的界面来管理基于 iptables 的防火墙规则。

安装并启用UFW

在大多数Ubuntu安装中,UFW是预安装的,但如果它没有被安装和启用,你可以使用以下命令进行安装和启用。

sudo apt update && sudo apt install ufw -y
sudo ufw enable

拒绝不需要的服务

默认情况下阻止所有传入流量,仅允许特定端口,配置 UFW 拒绝所有传入流量,除非是您明确允许的服务:

sudo ufw default deny incoming
sudo ufw default allow outgoing

允许基本服务

为了允许像 SSH(用于远程管理)、HTTPHTTPS(用于Web服务器访问)这样的基本服务,您可以使用以下命令:

sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https

速率限制(防止暴力攻击)

为了进一步保护您的服务器免受暴力攻击,您可以使用UFW的速率限制功能,该功能限制客户端在指定时间内可以进行的SSH连接尝试次数。

sudo ufw limit ssh

该命令允许SSH连接,但将每分钟的尝试次数限制为6次,阻止超过此限制的任何IP地址。

2. 使用 Fail2ban 阻止暴力破解攻击

Fail2ban 是一个重要的工具,可以通过监控日志文件中反复失败的登录尝试来保护您的服务器免受暴力破解攻击,并阻止有问题的IP地址。

Fail2ban 可以从默认的 Ubuntu 软件源安装。

sudo apt install fail2ban

默认的 Fail2ban 配置文件位于 /etc/fail2ban/jail.conf。然而,建议不要直接修改此文件。相反,创建一份配置的副本以自定义您的设置:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

现在,打开 jail.local 文件以进行编辑:

sudo nano /etc/fail2ban/jail.local

确保 [sshd] 部分已启用(取消注释)以保护您的 SSH 服务,并修改以下选项:

  • 启用: 将此设置为 true 以激活 SSH 保护。
  • 端口:指定 SSH 运行的端口(默认是 22)。
  • maxretry: 定义在禁止一个IP地址之前允许的最大失败登录尝试次数。
  • bantime: 定义禁令的持续时间(以秒为单位)。
  • findtime:设置统计失败尝试的时间范围。

例如:

[sshd]
enabled = true
port = ssh
maxretry = 5
bantime = 3600  # Ban IP for 1 hour
findtime = 600  # Count attempts within 10 minutes

保存更改后,重启 Fail2ban 以应用新的配置。

sudo systemctl restart fail2ban

检查 Fail2ban 的状态并查看活动的监狱:

sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

Fail2ban 现在正在积极保护您的服务器免受暴力破解 SSH 登录尝试。

3. 使用 AppArmor 进行应用程序安全

AppArmor 是一个 强制访问控制 (MAC) 系统,通过对单个应用程序实施政策来提供额外的安全层。

在大多数Ubuntu安装中,AppArmor是预安装并启用的。如果没有启用,您可以启动并设置它在启动时运行:

sudo systemctl enable apparmor
sudo systemctl start apparmor

创建自定义 AppArmor 配置文件

AppArmor 配置文件定义了应用程序可以访问的系统资源;默认情况下,AppArmor 配置文件适用于 Ubuntu 中的许多应用程序,您可以在 /etc/apparmor.d/ 目录中找到这些配置文件。

您可以通过运行以下命令查看当前加载了哪些配置文件:

sudo apparmor_status

如果您有一个需要特定配置文件的自定义应用程序,您可以创建一个新的配置文件或修改现有的配置文件。

sudo aa-genprof /path/to/application

创建配置文件后,您可以强制执行该配置文件:

sudo aa-enforce /path/to/profile

执行或投诉模式

AppArmor 有两种模式:强制投诉.

  • 强制模式下,配置文件会被严格执行,任何违规行为将导致应用程序被阻止。
  • 投诉模式下,违规行为被记录但不被执行,这使得它成为测试配置文件的有用模式。

要更改个人资料的模式:

sudo aa-enforce /path/to/profile  # Enforce mode
sudo aa-complain /path/to/profile  # Complain mode

使用 AppArmor 进行审计

AppArmor 生成日志,提供其执行操作的洞察;这些日志可以在 `/var/log/syslog` 中找到,使用像 `journalctl` 的工具可以查看这些日志。

sudo journalctl -xe | grep apparmor

4. 额外的安全最佳实践

除了使用UFWFail2banAppArmor,您还可以采取其他重要步骤来进一步增强服务器的安全性。

定期更新你的Ubuntu

确保您的系统和所有安装的软件包都是最新的,以防范安全漏洞。

sudo apt update && sudo apt upgrade -y
sudo apt dist-upgrade -y

启用自动安全更新以保持您的服务器受保护:

sudo apt install unattended-upgrades

禁用未使用的服务

任何您不需要的服务或应用程序都应该被禁用,以减少攻击面。然而,在禁用服务之前,重要的是使用 systemctl 命令来识别哪些服务正在您的服务器上运行。

sudo systemctl list-units --type=service

一旦识别出不必要的服务,您可以禁用它们,以防止服务在启动时自动启动,从而减少攻击面。

sudo systemctl disable service-name

使用 SSH 密钥认证

为了提高SSH安全性,使用SSH密钥对进行身份验证并禁用基于密码的登录。

ssh-keygen -t rsa -b 4096
ssh-copy-id user@your-server-ip

接下来,编辑SSH配置文件以禁用基于密码的登录:

sudo nano /etc/ssh/sshd_config

设置 PasswordAuthentication no,然后重启SSH:

sudo systemctl restart ssh

现在,将只允许使用SSH密钥身份验证,从而提高您服务器的安全性。

5.结论

保护您的Ubuntu生产服务器是保障您环境免受各种攻击的重要步骤。通过配置UFW进行防火墙管理,使用Fail2ban来缓解暴力破解攻击,以及利用AppArmor来控制应用程序行为,您可以大大降低未授权访问和攻击的风险。

始终监控您的日志,及时应用安全补丁,并定期审查您的安全配置,以便在潜在威胁面前保持领先。今天对您的系统进行加固,将确保其长期的稳定性、安全性和可靠性。

🔥运维干货分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

企鹅侠客

您的打赏是我创作旅程中的关键燃

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值