在为生产设置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(用于远程管理)、HTTP 和 HTTPS(用于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. 额外的安全最佳实践
除了使用UFW、Fail2ban和AppArmor,您还可以采取其他重要步骤来进一步增强服务器的安全性。
定期更新你的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来控制应用程序行为,您可以大大降低未授权访问和攻击的风险。
始终监控您的日志,及时应用安全补丁,并定期审查您的安全配置,以便在潜在威胁面前保持领先。今天对您的系统进行加固,将确保其长期的稳定性、安全性和可靠性。
🔥运维干货分享
-
系统规划与管理师备考经验分享
-
软考高级系统架构设计师备考学习资料
-
软考中级数据库系统工程师学习资料
-
软考高级网络规划设计师备考学习资料
-
Kubernetes CKA认证学习资料分享
-
AI大模型学习资料合集
-
免费文档翻译工具(支持word、pdf、ppt、excel)
-
PuTTY中文版安装包
-
MobaXterm中文版安装包
-
pinginfoview网络诊断工具中文版
-
Xshell、Xsftp、Xmanager中文版安装包
-
办公室摸鱼神器,伪装电脑系统更新中
-
Typora简单易用的Markdown编辑器
-
Window进程监控工具,能自动重启进程和卡死检测
-
毕业设计高质量毕业答辩 PPT 模板分享
-
IT行业工程师面试简历模板分享
评论前必须登录!
注册