温馨提示×

debian虚拟机如何设置防火墙

小樊
36
2025-10-06 10:19:03
栏目: 云计算

Debian虚拟机防火墙配置指南(以ufw和iptables为例)

Debian虚拟机配置防火墙是提升系统安全性的关键步骤,能有效限制非法网络访问。以下是**ufw(简单易用)iptables(底层工具)**两种主流工具的具体配置方法:

一、使用ufw(推荐:简单直观)

ufw(Uncomplicated Firewall)是Debian默认的防火墙前端工具,基于iptables封装,命令简洁,适合新手快速配置。

1. 安装ufw

若系统未预装ufw,可通过以下命令安装:

sudo apt update && sudo apt install ufw 
2. 启用ufw

安装完成后,启用ufw并确认是否允许SSH连接(若通过SSH管理虚拟机,必须允许,否则会断开连接):

sudo ufw enable # 系统会提示“Command may disrupt existing ssh connections. Proceed with operation (y|n)?”,输入y并回车 
3. 配置默认策略

设置默认的入站/出站规则,默认拒绝所有入站连接(阻断未明确允许的流量),允许所有出站连接(保障虚拟机正常访问外网):

sudo ufw default deny incoming # 默认拒绝入站 sudo ufw default allow outgoing # 默认允许出站 
4. 允许常用端口

根据需求开放必要服务端口(以HTTP、HTTPS、SSH为例):

sudo ufw allow 22/tcp # 允许SSH(默认端口22) sudo ufw allow 80/tcp # 允许HTTP(网页服务) sudo ufw allow 443/tcp # 允许HTTPS(加密网页服务) 

也可使用服务名替代端口号(需系统识别服务):

sudo ufw allow ssh # 等同于allow 22/tcp sudo ufw allow http # 等同于allow 80/tcp sudo ufw allow https # 等同于allow 443/tcp 
5. 允许特定IP访问

若需限制仅某IP可访问SSH(增强安全性),可使用以下命令(以192.168.1.100为例):

sudo ufw allow from 192.168.1.100 to any port 22 
6. 查看与管理规则
  • 查看当前规则及状态(verbose模式显示详细信息):
    sudo ufw status verbose 
    输出示例:
    Status: active Logging: on (low) Default: deny (incoming), allow (outgoing) New profiles: skip To Action From -- ------ ---- 22/tcp ALLOW Anywhere 80/tcp ALLOW Anywhere 443/tcp ALLOW Anywhere 22/tcp (v6) ALLOW Anywhere (v6) 
  • 删除规则(以删除SSH规则为例):
    sudo ufw delete allow 22/tcp 
  • 重载规则(修改规则后无需重启,直接重载即可生效):
    sudo ufw reload 
7. 高级配置(可选)
  • 启用日志记录(记录防火墙活动,便于排查问题):
    sudo ufw logging on # 设置日志级别(low/medium/high/full,默认low) sudo ufw logging medium 

二、使用iptables(底层工具:灵活强大)

iptables是Linux内核级的防火墙工具,功能全面,但命令复杂,适合需要精细控制流量的场景。

1. 安装iptables

Debian默认可能未安装iptables,需通过以下命令安装:

sudo apt update && sudo apt install iptables 
2. 配置基本规则
  • 允许SSH连接(默认端口22):
    sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT 
  • 允许HTTP(80端口)和HTTPS(443端口):
    sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT 
  • 拒绝所有其他入站连接(最后一条规则必须为DROP,阻断未允许的流量):
    sudo iptables -P INPUT DROP 
  • 允许所有出站连接(保障虚拟机正常访问外网):
    sudo iptables -P OUTPUT ACCEPT 
3. 保存规则

Debian默认不会自动保存iptables规则,需手动保存(否则重启后规则失效):

sudo sh -c "iptables-save > /etc/iptables/rules.v4" 

或使用netfilter-persistent工具(需安装):

sudo apt install netfilter-persistent sudo netfilter-persistent save 
4. 设置开机自动加载

创建启动脚本,使iptables在系统启动时自动加载规则:

sudo tee /etc/network/if-pre-up.d/iptables <<EOF #!/bin/sh /sbin/iptables-restore < /etc/iptables/rules.v4 EOF sudo chmod +x /etc/network/if-pre-up.d/iptables 
5. 查看与管理规则
  • 查看当前规则(-L列出规则,-n显示数字格式,-v显示详细信息):
    sudo iptables -L -n -v 
  • 删除规则(以删除SSH规则为例):
    sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT 

注意事项

  1. 测试规则:修改防火墙规则前,确保已开放SSH端口(或通过控制台访问),避免误操作导致无法连接。
  2. 备份规则:定期备份iptables规则(sudo cp /etc/iptables/rules.v4 ~/iptables-backup.rules),防止规则丢失。
  3. 最小化开放:仅开放必要的端口(如Web服务只需开放80/443,数据库服务只需开放3306给特定IP),减少攻击面。
  4. 结合其他安全措施:防火墙仅为第一道防线,还需配合SSH密钥认证、强密码策略、系统更新等提升安全性。

通过以上步骤,即可在Debian虚拟机上完成防火墙配置,有效保护系统免受非法网络访问。根据实际需求选择ufw(简单)或iptables(灵活),合理设置规则即可满足大多数场景的安全需求。

0