Apache2与Ubuntu防火墙(UFW)协同工作指南
Ubuntu系统默认使用**UFW(Uncomplicated Firewall)**作为防火墙管理工具,其通过简化iptables/nftables命令,帮助用户快速配置入站/出站流量规则。Apache2作为Web服务器,需通过UFW允许HTTP(端口80)、HTTPS(端口443)等必要流量,确保外部用户能正常访问网站,同时阻挡非法请求。
若系统未安装UFW,可通过以下命令安装:
sudo apt update
sudo apt install ufw
安装完成后,启用UFW(系统会提示确认,输入y并按回车):
sudo ufw enable
启用后,UFW默认策略为拒绝所有入站流量、允许所有出站流量,符合“最小权限”安全原则。
Apache2默认监听**80(HTTP)和443(HTTPS)**端口,需通过UFW放行这两个端口的流量。有以下两种常用方式:
UFW内置了Apache专用配置文件(apache、apache-full、apache-secure),可直接调用:
sudo ufw allow 'Apache Full'
sudo ufw allow 'Apache'
sudo ufw allow 'Apache Secure'
若需更细粒度控制(如修改Apache监听端口),可手动添加规则:
sudo ufw allow 80/tcp # 允许HTTP流量
sudo ufw allow 443/tcp # 允许HTTPS流量
添加规则后,通过以下命令验证是否生效:
sudo ufw status verbose # 查看规则列表(需包含80/tcp、443/tcp的ALLOW IN记录)
输出示例:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
80/tcp ALLOW IN Anywhere
443/tcp ALLOW IN Anywhere
Apache Full ALLOW IN Anywhere
若需修改Apache2的默认监听端口(如将HTTP改为8080、HTTPS改为8443),需调整配置文件并同步更新UFW规则:
编辑ports.conf文件(定义全局监听端口):
sudo nano /etc/apache2/ports.conf
将Listen 80改为Listen 8080,Listen 443改为Listen 8443(若需HTTPS):
Listen 8080
Listen 8443
编辑对应的虚拟主机文件(如000-default.conf):
sudo nano /etc/apache2/sites-available/000-default.conf
将<VirtualHost *:80>改为<VirtualHost *:8080>,<VirtualHost *:443>改为<VirtualHost *:8443>(若需HTTPS)。
sudo systemctl restart apache2
删除旧规则,添加新端口规则:
sudo ufw delete 80/tcp # 删除旧HTTP规则
sudo ufw delete 443/tcp # 删除旧HTTPS规则
sudo ufw allow 8080/tcp # 允许新HTTP端口
sudo ufw allow 8443/tcp # 允许新HTTPS端口
通过浏览器访问http://服务器IP:8080,确认网站能正常加载。
为防止未明确允许的流量进入系统,建议设置UFW的默认策略:
sudo ufw default deny incoming # 拒绝所有入站流量(默认已开启)
sudo ufw default allow outgoing # 允许所有出站流量(默认已开启)
此配置可有效阻挡未经授权的外部连接,仅放行UFW中明确允许的服务。
/var/log/ufw.log文件查看防火墙活动记录,排查异常访问(如大量拒绝的连接请求)。通过以上步骤,Apache2可与Ubuntu防火墙(UFW)协同工作,既保证Web服务的正常访问,又提升服务器的安全性。