ubuntu 服务器版本网络安全

1. 系统更新与补丁管理

定期更新系统

bash 复制代码
sudo apt update && sudo apt upgrade -y  # 更新所有软件包
sudo apt autoremove  # 清理旧内核和依赖

启用自动安全更新

修改 /etc/apt/apt.conf.d/50unattended-upgrades,确保安全更新自动安装:

bash 复制代码
Unattended-Upgrade::Allowed-Origins {
    "Ubuntu:$(lsb_release -sc)-security";
};

2. 防火墙配置(UFW)

启用并配置防火墙

bash 复制代码
sudo ufw enable
sudo ufw default deny incoming  # 默认拒绝所有入站
sudo ufw default allow outgoing # 允许所有出站
sudo ufw allow 22/tcp  # 开放SSH端口(建议后续更改为非默认端口)

限制特定IP访问

bash 复制代码
sudo ufw allow from 192.168.1.0/24 to any port 22  # 仅允许内网IP访问SSH

3. SSH 安全加固

修改默认端口

编辑 /etc/ssh/sshd_config:

bash 复制代码
Port 2222  # 改为非标准端口(如2222)

禁用Root登录与密码认证

bash 复制代码
PermitRootLogin no
PasswordAuthentication no  # 强制使用密钥登录

生成SSH密钥对

bash 复制代码
ssh-keygen -t ed25519  # 本地生成密钥,上传公钥到服务器 ~/.ssh/authorized_keys

4. 用户权限管理

使用普通用户与sudo权限

bash 复制代码
sudo adduser username  # 创建新用户
sudo usermod -aG sudo username  # 赋予sudo权限

限制sudo权限

编辑 /etc/sudoers 或使用 visudo,限制特定命令:

bash 复制代码
username ALL=(ALL) /usr/bin/apt, /usr/bin/systemctl

5. 入侵防护与监控

安装 Fail2Ban

bash 复制代码
sudo apt install fail2ban
sudo systemctl enable fail2ban

配置 /etc/fail2ban/jail.local 防止SSH暴力破解:

bash 复制代码
[sshd]
enabled = true
port = 2222  # 与SSH端口一致
maxretry = 3
bantime = 1h

安装并配置入侵检测(AIDE)

bash 复制代码
sudo apt install aide
sudo aideinit  # 初始化数据库
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db

定期检查文件完整性:

bash 复制代码
sudo aide.wrapper --check

6. 服务最小化与暴露面缩减

关闭不必要的服务

bash 复制代码
sudo systemctl list-unit-files --state=enabled  # 查看已启用服务
sudo systemctl disable apache2  # 示例:禁用不需要的服务

使用SSH隧道访问内部服务

避免将数据库(如MySQL)、管理面板(如Portainer)直接暴露在公网,通过SSH隧道访问:

bash 复制代码
ssh -L 3306:localhost:3306 user@server_ip  # 本地访问远程MySQL

7. 加密与证书

强制HTTPS(使用Let's Encrypt)

bash 复制代码
sudo apt install certbot
sudo certbot --nginx -d example.com  # 自动配置Nginx SSL

加密磁盘(LUKS)

在安装Ubuntu时选择加密磁盘选项,或后续手动配置。

8. 日志监控与分析

集中日志管理(如ELK Stack)

使用 rsyslog 或 journald 转发日志到远程服务器。

实时监控日志

bash 复制代码
sudo tail -f /var/log/auth.log  # 监控SSH登录尝试
sudo grep "Failed password" /var/log/auth.log  # 查找失败登录

9. 备份与灾难恢复

自动化备份

使用 rsync 或 borgbackup 定期备份到远程存储:

bash 复制代码
sudo apt install borgbackup
borg init --encryption=repokey /backup
borg create /backup::"{now}" /path/to/data

测试恢复流程

定期验证备份文件的完整性和可恢复性。

10. 高级安全工具

AppArmor/SELinux

Ubuntu 默认启用 AppArmor,限制进程权限:

bash 复制代码
sudo aa-status  # 查看状态

网络隔离(Docker/VLAN)

将敏感服务部署在独立网络或使用Docker隔离。

总结

综合策略:结合防火墙、最小权限、加密和监控,形成纵深防御。

定期审计:使用工具如 lynis 进行安全扫描:

bash 复制代码
sudo apt install lynis
sudo lynis audit system

保持警惕:订阅安全公告(如 Ubuntu Security Notices)。

相关推荐
安卓开发者11 分钟前
鸿蒙NEXT Wear Engine穿戴侧应用开发完全指南
ubuntu·华为·harmonyos
ajassi20002 小时前
开源 Linux 服务器与中间件(四)服务器--Tomcat
linux·服务器·开源
wangbing11253 小时前
迁移服务器
运维·服务器
细节控菜鸡3 小时前
【排查实录】Web 页面能打开,服务器能通接口,客户端却访问失败?原因全在这!
运维·服务器·前端
one year.4 小时前
Linux:库制作与原理
linux·运维·服务器
陈苏同学4 小时前
Win11安装 Ubuntu 22.04 子系统 - WSL2 - 安装完迁移到其它盘
linux·运维·ubuntu
我命由我123454 小时前
PDFBox - PDFBox 加载 PDF 异常清单(数据为 null、数据为空、数据异常、文件为 null、文件不存在、文件异常)
java·服务器·后端·java-ee·pdf·intellij-idea·intellij idea
蓝色土耳其love4 小时前
centos 7.9 安装单机版k8s
linux·运维·服务器·kubernetes·centos
郝学胜-神的一滴5 小时前
使用Linux系统函数递归遍历指定目录
linux·运维·服务器·开发语言·c++·软件工程
pusue_the_sun5 小时前
操作系统:进程的短程调度
运维·服务器