引言
随着互联网技术的飞速发展,服务器安全已经成为企业和个人用户关注的焦点。Ubuntu作为一款流行的Linux操作系统,以其稳定性、安全性和可定制性受到广泛青睐。本文将深入解析Ubuntu系统安全加固的实战指南,帮助用户轻松提升服务器安全性。
一、基础系统安全配置
1. 确保系统时间同步
系统时间同步对于日志记录和审计至关重要。可以使用以下命令安装并配置NTP服务:
sudo apt update
sudo apt install ntpdate ntp
sudo ntpdate ntp1.aliyun.com
2. 禁用Swap功能
Kubernetes要求所有节点禁用Swap,可以通过编辑/etc/fstab
文件并注释掉Swap行实现,然后执行以下命令:
sudo swapoff --all
3. 配置容器运行时环境
对于Ubuntu系统,推荐使用Docker或Containerd作为容器运行时。以下是安装Docker的命令:
sudo apt-get update
sudo apt-get install docker.io
二、用户管理和权限设置
1. 禁用root账户直接登录
直接使用root账户登录存在安全风险,建议禁用root账户的直接登录,并使用普通用户通过sudo提升权限。编辑SSH配置文件并禁用root登录:
sudo vim /etc/ssh/sshd_config
PermitRootLogin no
重启SSH服务:
sudo systemctl restart sshd
2. 创建普通用户并配置sudo
创建一个普通用户,并赋予sudo权限:
sudo adduser newuser
sudo usermod -aG sudo newuser
3. 使用强密码策略
设置强密码策略,强制用户使用复杂密码:
sudo apt install libpam-pwquality
三、软件和服务配置
1. 最小包安装
只安装必要的软件包,避免无用的包带来的漏洞:
sudo apt-get install -y <package-name>
2. 更新和补丁管理
定期更新系统,使用以下命令:
sudo apt-get update
sudo apt-get upgrade
3. Apache配置
启用并配置HTTPS,禁用目录列表,设置正确的错误文档路径:
sudo a2enmod ssl
sudo a2ensite default-ssl.conf
sudo a2enmod headers
4. MySQL配置
限制远程访问,只允许特定IP地址访问MySQL,设置强密码:
sudo vi /etc/mysql/my.cnf
找到以下行并修改:
bind-address = 127.0.0.1
重启MySQL服务:
sudo systemctl restart mysql
5. SSH配置
禁用root用户登录,使用密钥认证,更改SSH默认端口:
sudo vi /etc/ssh/sshd_config
找到以下行并修改:
PermitRootLogin no
PasswordAuthentication no
重启SSH服务:
sudo systemctl restart sshd
四、防火墙配置
使用UFW配置防火墙规则,允许必要的端口:
sudo ufw allow OpenSSH
sudo ufw allow http
sudo ufw allow https
五、用户和权限管理
创建普通用户,并为该用户分配适当的权限,避免使用root账户进行日常操作:
sudo adduser newuser
sudo usermod -aG sudo newuser
设置复杂的密码策略,定期更换密码:
sudo passwd -e newuser
六、定期审计和监控
定期检查系统日志,使用工具如auditd
进行更详细的系统活动记录和监控:
sudo auditctl -w /var/log/auth.log -p warx -k auth
结论
通过以上实战指南,用户可以轻松提升Ubuntu服务器的安全性。然而,安全性是一个持续的过程,需要不断地监控和更新。请确保定期检查系统日志,及时更新软件包和补丁,以及遵循最佳安全实践。