ubuntu

Ubuntu如何进行安全防护设置

小樊
47
2025-10-07 11:37:24
栏目: 智能运维

Ubuntu系统安全防护设置指南

一、系统更新与补丁管理

保持系统最新是防范已知漏洞的核心措施。定期运行以下命令更新软件包及安全补丁:

sudo apt update && sudo apt upgrade -y

启用自动安全更新(仅安装安全相关补丁),减少手动维护成本:

sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

通过上述配置,系统会自动下载并安装Ubuntu官方发布的安全更新,确保系统始终处于最新安全状态。

二、防火墙配置(UFW)

Ubuntu默认使用**UFW(Uncomplicated Firewall)**作为防火墙工具,通过简单命令即可实现流量管控。

  1. 安装与启用
    sudo apt install ufw
    sudo ufw enable  # 启用防火墙(首次启用需确认是否允许现有SSH连接)
    
  2. 设置默认策略
    默认拒绝所有入站连接,允许所有出站连接(符合“最小权限原则”):
    sudo ufw default deny incoming
    sudo ufw default allow outgoing
    
  3. 允许必要服务
    根据需求开放常用端口(如SSH、HTTP、HTTPS):
    sudo ufw allow ssh    # 或 sudo ufw allow 22/tcp
    sudo ufw allow http   # 允许Web服务(80/tcp)
    sudo ufw allow https  # 允许加密Web服务(443/tcp)
    
  4. 管理规则
    • 查看规则状态:sudo ufw status(简要)或 sudo ufw status verbose(详细);
    • 删除规则:sudo ufw delete allow 22/tcp(按端口)或 sudo ufw delete 1(按规则编号);
    • 允许特定IP访问:sudo ufw allow from 192.168.1.100(仅允许该IP访问所有端口)。

三、SSH安全强化

SSH是远程管理的主要通道,需通过以下设置降低被暴力破解的风险:

  1. 禁用root登录
    编辑SSH配置文件(/etc/ssh/sshd_config),将PermitRootLogin设置为no
    sudo nano /etc/ssh/sshd_config
    # 找到并修改以下行
    PermitRootLogin no
    
    重启SSH服务使配置生效:sudo systemctl restart sshd
  2. 使用密钥对认证
    • 生成密钥对(本地机器执行):ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    • 将公钥复制到服务器:ssh-copy-id user@server_ip
    • 禁用密码认证(编辑/etc/ssh/sshd_config):PasswordAuthentication no,重启SSH服务。
  3. 更改默认端口
    修改SSH端口(如改为2222),减少自动化工具的扫描概率:
    sudo nano /etc/ssh/sshd_config
    # 修改以下行
    Port 2222
    
    重启SSH服务后,需用ssh -p 2222 user@server_ip连接。
  4. 限制访问IP
    /etc/ssh/sshd_config中添加AllowUsersAllowGroups,仅允许指定用户/组从特定IP访问:
    AllowUsers your_username@192.168.1.100
    
    重启SSH服务。

四、用户与权限管理

遵循最小权限原则,避免过度授权导致的安全风险:

  1. 创建专用用户
    避免使用root账户日常操作,创建普通用户并赋予sudo权限:
    sudo adduser your_username  # 创建用户
    sudo usermod -aG sudo your_username  # 添加到sudo组
    
  2. 禁用root登录
    除SSH禁用外,禁止root用户通过本地终端登录:
    sudo passwd -l root  # 锁定root账户
    
  3. 文件/目录权限设置
    • 目录权限设为755(所有者可读写执行,其他用户可读执行):chmod 755 /path/to/directory
    • 文件权限设为644(所有者可读写,其他用户可读):chmod 644 /path/to/file
    • 敏感文件(如/etc/shadow)权限设为600chmod 600 /etc/shadow
  4. 使用ACL细化权限
    对特定用户/组设置更细粒度的访问控制(如允许用户dev访问/var/www目录):
    sudo setfacl -m u:dev:rwx /var/www  # 给用户dev读写执行权限
    sudo setfacl -m d:u:dev:rwx /var/www  # 设置默认ACL(新文件继承)
    

五、入侵检测与防护

通过工具实时监控系统活动,及时发现并阻止恶意行为:

  1. 安装Fail2Ban
    自动封禁多次尝试登录失败的IP地址:
    sudo apt install fail2ban
    sudo systemctl enable fail2ban
    sudo systemctl start fail2ban
    
    配置文件位于/etc/fail2ban/jail.local,可根据需求调整封禁阈值(如maxretry = 3表示3次失败后封禁)。
  2. Rootkit检测
    定期扫描系统是否存在rootkit(隐藏的恶意程序):
    sudo apt install chkrootkit rkhunter
    sudo chkrootkit  # 检测rootkit
    sudo rkhunter --check  # 检测rootkit和后门
    
  3. 日志监控
    使用journalctl查看系统日志,或安装logwatch自动生成日志报告:
    sudo apt install logwatch
    sudo logwatch --output mail  # 通过邮件发送日志摘要(需配置邮件服务)
    

六、数据加密与备份

  1. 敏感数据加密
    使用LUKS(Linux Unified Key Setup)对磁盘分区进行全盘加密(适用于新系统):
    sudo cryptsetup luksFormat /dev/sda1  # 加密分区(替换为实际分区)
    sudo cryptsetup open /dev/sda1 secure_disk  # 打开加密分区
    sudo mkfs.ext4 /dev/mapper/secure_disk  # 格式化加密分区
    
    或使用ecryptfs加密Home目录(适用于已有系统)。
  2. 定期备份
    使用rsynctar备份重要数据(如/home/etc),并将备份存储在异地(如云存储):
    sudo rsync -avz --delete /home /mnt/backup/home  # 本地备份
    sudo rsync -avz --delete /home user@remote_backup:/backup/home  # 远程备份
    
    定期测试备份恢复流程,确保备份有效性。

七、其他安全实践

  1. 禁用不必要的服务
    关闭不需要的网络服务(如FTP、Telnet),减少攻击面:
    sudo systemctl stop ftp  # 停止FTP服务
    sudo systemctl disable ftp  # 禁止开机启动
    
    使用systemctl list-unit-files --type=service查看所有服务,禁用无用服务。
  2. 防止ping探测
    修改内核参数,禁止响应ICMP echo请求(ping):
    sudo sysctl -w net.ipv4.icmp_echo_ignore_all=1  # 临时生效
    echo "net.ipv4.icmp_echo_ignore_all=1" | sudo tee -a /etc/sysctl.conf  # 永久生效
    sudo sysctl -p  # 加载配置
    
  3. 使用SELinux/AppArmor
    启用强制访问控制(MAC),限制进程权限:
    • AppArmor(Ubuntu默认启用):sudo aa-status查看状态;
    • SELinux(可选):sudo apt install selinux,配置策略后启用sudo setenforce 1

0
看了该问题的人还看了