如何在 Ubuntu 24.04 上设置安全高效的 Web 代理?
在本操作指南中,我们将逐步引导您完成在服务器上安装、配置和保护 Web 代理的过程。 Ubuntu 24.04 解释。示例基于 乌贼 (HTTP/HTTPS 正向代理) 但丁 (SOCKS5)和 Nginx (反向代理和 TLS 终止)并包括防火墙配置、身份验证、日志记录和性能优化。.
为什么要使用网络代理?
网络代理具有以下优势: 访问控制, 内容缓存 为了减少带宽占用, IP隐藏 客户,以及 交通分配 对于交易或游戏等敏感应用,将代理服务器放置在更靠近目标地址的位置可能更有利。 延迟(ping值) 减少。.
代理类型和用途
最常见的代理类型包括:
- 转发代理(例如 Squid):供客户端访问互联网;适用于控制、缓存和监控。.
- 反向代理(例如 Nginx):位于 Web 服务器前端,用于执行 TLS、负载均衡和缓存。.
- SOCKS5(Dante 或 SSH -D)底层,适用于各种应用和 TCP/UDP 流量。.
- 透明代理:拦截网络流量(需要 NAT/转发更改)。.
服务器要求和准备
首先,更新系统并安装基本软件包。软件包应根据需求选择;例如,对于 SOCKS5,请使用 但丁服务器 对于 TLS 来说 certbot 我们使用。.
sudo apt update && sudo apt upgrade -y
sudo apt install squid apache2-utils dante-server nginx certbot nftables fail2ban -y安装和配置 Squid(HTTP/HTTPS 转发代理)
本节介绍基本配置、启用 HTTPS(CONNECT)、身份验证、ACL 和缓存。.
基本配置
安装 Squid:
sudo apt install squid -y修改配置文件前,请先备份:
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bak一个基本配置文件示例(/etc/squid/squid.conf):
http_port 3128
# limit logging size
access_log /var/log/squid/access.log squid
# ACLs
acl localhost src 127.0.0.1/32
acl localnet src 10.0.0.0/8 # internal network
acl allowed_ips src 203.0.113.0/24 # example allowed client range
# permissions
http_access allow localhost
http_access allow allowed_ips
http_access deny all
# caching
cache_mem 256 MB
maximum_object_size_in_memory 512 KB
cache_dir ufs /var/spool/squid 10000 16 256
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern . 0 20% 4320
# DNS
dns_v4_first on保存配置后:
sudo systemctl restart squid
sudo systemctl enable squid启用 HTTPS (CONNECT) 和 TLS
对于 HTTPS 隧道,Squid 使用 CONNECT 协议。以下是一个允许 CONNECT 协议的访问控制列表示例:
acl SSL_ports port 443
acl Safe_ports port 80
acl Safe_ports port 443
http_access allow SSL_ports身份验证(基本/LDAP)
使用 htpasswd 进行基本身份验证:
sudo apt install apache2-utils -y
sudo htpasswd -c /etc/squid/passwords username在 squid.conf 文件中添加:
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
http_access allow authenticated访问控制列表和访问限制
常见例子:
- 按 IP 地址限制: acl allowed_ips src xxxx/xx
- 限制域名: acl blocked_sites dstdomain .example.com
- 限时: acl 办公时间 周一至周五 08:00-18:00
拒绝网站示例:
acl blocked_sites dstdomain .youtube.com .facebook.com
http_access deny blocked_sites缓存和性能优化
缓存的重要设置:
- 缓存内存:用于缓存小对象的 RAM 内存。.
- 缓存目录:大型内容缓存的磁盘位置。.
- 最大对象大小:可存储对象的最大尺寸。.
- 刷新模式缓存有效性控制。.
流量较高时的示例:
cache_mem 512 MB
maximum_object_size 20 MB
cache_dir ufs /var/spool/squid 50000 16 256对于高流量情况,请使用 NVMe 和高 IOPS 磁盘或 LVM。.
日志记录和日志管理
Squid 登录 /var/log/squid/ logrotate 配置示例:
sudo nano /etc/logrotate.d/squid
/var/log/squid/*.log {
weekly
rotate 4
compress
delaycompress
missingok
notifempty
create 640 proxy proxy
sharedscripts
postrotate
systemctl reload squid >/dev/null 2>&1 || true
endscript
}使用 ELK 或 Grafana+Prometheus 等工具分析日志。.
使用 Dante 设置 SOCKS5
对于需要 SOCKS 的应用, 但丁 这是一个不错的选择。.
安装和设置:
sudo apt install dante-server -y/etc/danted.conf 示例:
logoutput: syslog
internal: 0.0.0.0 port = 1080
external: eth0
method: username none
user.privileged: proxy
user.notprivileged: nobody
client pass {
from: 203.0.113.0/24 to: 0.0.0.0/0
log: connect disconnect error
}
pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
protocol: tcp udp
log: connect disconnect error
}sudo systemctl restart danted
sudo systemctl enable danted使用 curl 进行示例测试:
curl --socks5-hostname 127.0.0.1:1080 https://checkip.amazonaws.com配置 Nginx 作为反向代理和 TLS 终止
Nginx 可用于托管代理管理页面或代理后面的应用程序的 TLS 终止。.
服务器块示例:
server {
listen 80;
server_name proxy.example.com;
location / {
proxy_pass http://127.0.0.1:3128;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}要使用 Certbot 获取 TLS 证书:
sudo certbot --nginx -d proxy.example.com防火墙、安全和监控
为了安全起见,请使用 nftables 或 ufw、fail2ban 以及日志记录和监控。.
nftables 基本规则示例:
sudo nft add table inet filter
sudo nft 'add chain inet filter input { type filter hook input priority 0 ; policy drop; }'
sudo nft add rule inet filter input ct state established,related accept
sudo nft add rule inet filter input iif lo accept
sudo nft add rule inet filter input tcp dport 22 accept
sudo nft add rule inet filter input tcp dport 3128 accept # squid
sudo nft add rule inet filter input tcp dport 1080 accept # dante
sudo nft add rule inet filter input icmp type echo-request accept使用合适的工具实现性能监控和攻击检测。.
针对特定应用(交易、游戏、人工智能、渲染)的实用技巧
对于交易者而言: 选择位置靠近代理服务器的服务器;使用固定的出站 IP 地址进行白名单设置,如果连接至关重要,则启用 DDoS 防护。.
对于游戏玩家: 选择一台网络速度快、位置靠近游戏服务器的VPS,并启用BBR:
sudo sysctl -w net.core.default_qdisc=fq
sudo sysctl -w net.ipv4.tcp_congestion_control=bbr要使设置永久生效,请将值设置为 /etc/sysctl.conf 添加。.
用于人工智能和渲染: 使用更大的缓存和 NVMe 磁盘下载数据集,并利用云 GPU 进行分布式推理。.
运行和维护操作
主要维护提示:
- 定期软件包更新: sudo apt update && sudo apt upgrade -y
- 安全补丁、日志审查和配置备份。.
- 使用 Ansible 等自动化工具可以快速进行配置和回滚。.
- 定期使用 curl/wget 测试服务并设置正常运行时间监控。.
为什么使用多地点云基础设施?
将代理服务器部署在更靠近用户或目标服务器的位置可以降低延迟,并提供更好的地理位置控制。使用 CDN、BGP 和 DDoS 防护可以提高性能和安全性。.
最终安全建议
重要安全提示:
- 切勿在未进行身份验证的情况下打开公共代理。.
- 实施基于 IP 地址和时间的限制。.
- 监控和警报对于发现虐待行为至关重要。.
- 对敏感应用请使用防DDoS攻击和专用网络。.
结论
本指南包含安装和配置部分 乌贼 对于 HTTP/HTTPS,请进行设置 但丁 对于 SOCKS5 和设置 Nginx 它涵盖了反向代理和TLS,还涵盖了防火墙、日志以及交易、游戏和人工智能方面的实用技巧。.









