在为生产环境设置Ubuntu服务器时,确保系统安全至关重要,这可用确保其稳定性、安全性和可访问性。尽管Ubuntu自带许多内置安全功能,但采取额外措施保护系统免受未经授权的访问和攻击仍然很有必要。
本文小编将介绍三个增强Ubuntu服务器安全的基本工具:UFW(简易防火墙)、Fail2ban和AppArmor。这些工具将通过控制网络访问、防止暴力登录尝试以及保护应用程序来帮助保护你的Ubuntu服务器。
1、使用UFW保护网络访问
Ubuntu附带一个用户友好的防火墙配置工具,称为UFW(Uncomplicated Firewall),它提供了一个简单的界面来管理基于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
速率限制(防止暴力攻击)
为了进一步保护Ubuntu服务器免受暴力攻击,可以使用UFW的速率限制功能,该功能限制客户端在给定时间段内可以进行的SSH连接尝试次数:
sudo ufw limit ssh
此命令允许SSH连接,但将尝试次数限制为每分钟6次,并阻止任何超过此限制的IP地址。
2、使用Fail2ban阻止暴力攻击
Fail2ban是一款重要工具,它通过监控日志文件中重复失败的登录尝试并阻止违规IP地址来保护你的Ubuntu服务器免受暴力攻击。
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服务,同时修改以下选项:
enabled
:将其设置为true以激活SSH保护port
:指定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的状态并查看活动的jails,可用输入以下命令:
sudo systemctl restart fail2ban sudo fail2ban-client status sshd
现在Fail2ban已经有效保护Ubuntu服务器免受暴力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
Enforcing(强制模式)或Complain(抱怨/告警模式)
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服务器安全。
定期更新Ubuntu系统
确保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密钥认证,从而提高了服务器的安全性。
小结
通过配置UFW进行防火墙管理、使用Fail2ban缓解暴力破解攻击,以及利用AppArmor控制应用程序行为,你可以大幅降低未授权访问和遭受攻击的风险,从而保障Ubuntu生产服务器的安全。
另外,始终监控日志、及时应用安全补丁,并定期审查安全配置,以防范潜在威胁。所有现在立即强化你的Ubuntu系统,将确保其长期的稳定性、安全性和可靠性。