Ubuntu环境下设置防火墙规则(使用UFW)
UFW(Uncomplicated Firewall)是Ubuntu默认的防火墙管理工具,基于iptables/nftables,提供了简单易用的命令行接口,适合普通用户和服务器管理员快速配置防火墙规则。
大多数Ubuntu系统已预装UFW,若未安装,可通过以下命令安装:
sudo apt update
sudo apt install ufw
安装完成后,启用UFW并设置为开机自启:
sudo ufw enable
系统会提示“Command may disrupt existing ssh connections. Proceed with operation (y|n)?”,输入y并回车确认。启用后,UFW会默认拒绝所有外部对本机的入站流量,允许所有本机发起的出站流量(可通过sudo ufw default deny incoming和sudo ufw default allow outgoing手动设置,默认策略已内置)。
使用以下命令查看UFW的当前状态及规则:
sudo ufw status
verbose参数(sudo ufw status verbose)可查看更详细的规则信息(如规则的优先级、动作等)。设置默认策略是防火墙配置的核心,建议遵循“默认拒绝所有入站,允许所有出站”的原则:
sudo ufw default deny incoming # 拒绝所有外部入站流量
sudo ufw default allow outgoing # 允许所有本机出站流量
此设置可有效阻断未明确允许的外部攻击,同时不影响本机正常访问网络。
根据需求开放必要的端口或服务,常用命令如下:
sudo ufw allow 22/tcp # 允许TCP端口22(SSH远程登录)
sudo ufw allow 80/tcp # 允许TCP端口80(HTTP网页服务)
sudo ufw allow 443/tcp # 允许TCP端口443(HTTPS加密网页服务)
sudo ufw allow 53 # 允许UDP/TCP端口53(DNS域名解析)
sudo ufw allow ssh # 等同于允许22/tcp
sudo ufw allow http # 等同于允许80/tcp
sudo ufw allow https # 等同于允许443/tcp
sudo ufw allow from 192.168.1.100 # 允许单个IP
sudo ufw allow from 192.168.1.0/24 # 允许整个网段(192.168.1.1-192.168.1.254)
proto参数:sudo ufw allow proto udp 192.168.0.1 port 53 to 192.168.0.2 port 53 # 允许从192.168.0.1的53端口到192.168.0.2的53端口的UDP流量
若需撤销某条规则,可使用以下方法:
sudo ufw delete allow 22/tcp # 删除允许22/tcp的规则
sudo ufw delete deny 80/tcp # 删除拒绝80/tcp的规则
sudo ufw status numbered),再根据编号删除:sudo ufw status numbered # 查看规则编号(如1: Allow 22/tcp)
sudo ufw delete 1 # 删除编号为1的规则
针对SSH等易受暴力破解的服务,可限制单位时间内的连接次数,降低被攻击的风险:
sudo ufw limit 22/tcp # 限制SSH端口(22/tcp)的连接速率:每分钟最多6次新连接,超过的连接将被拒绝
此命令会自动添加一条limit规则,格式为“允许最多6次/分钟的新连接,超过的连接将被延迟或拒绝”。
开启日志功能可记录防火墙的拦截和允许操作,便于排查网络问题或分析攻击行为:
sudo ufw logging on # 开启日志记录(日志文件默认路径:/var/log/ufw.log)
sudo ufw logging off # 关闭日志记录
日志级别可通过sudo ufw logging low|medium|high|full调整(low仅记录被拒绝的连接,full记录所有操作)。
若需清除所有规则并恢复初始状态(禁用防火墙),可使用以下命令:
sudo ufw reset
执行后,UFW会停止运行,所有规则被清空,需重新配置。
sudo ufw reload重新加载配置,使更改生效;telnet或nmap扫描端口)。