پرش به محتوا

پراکسی وب سازمانی با Squid

یک پراکسی HTTP و HTTPS برای کاربران داخلی راه بیندازید، دسترسی را به شبکه‌ی سازمان محدود کنید، دامنه‌ها را فیلتر و ساعت کاری را اعمال کنید.

Ubuntu 24.04 LTSسطح: متوسطبرای: Ubuntu 24.04 LTS، Ubuntu 26.04 LTS، Ubuntu 22.04 LTSبه‌روزرسانی: ۱۶ آبان ۱۴۰۵

۱. نصب

bash
sudo apt update
sudo apt install -y squid
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.orig

۲. پیکربندی پایه

به‌جای ویرایش فایل بلند اصلی، قوانین خود را در یک فایل جدا بنویسید. Ubuntu فایل‌های conf.d را پیش از قوانین پیش‌فرض می‌خواند:

bash
sudo nano /etc/squid/conf.d/10-corp.conf
ini
acl corp_lan src 192.168.10.0/24
acl blocked_sites dstdomain "/etc/squid/blocked-sites.txt"
acl work_hours time SMTWH 07:00-17:00

http_access deny blocked_sites
http_access allow corp_lan work_hours
http_access deny all

http_port 3128
cache_mem 256 MB
maximum_object_size 50 MB
cache_dir ufs /var/spool/squid 5000 16 256

فهرست دامنه‌های مسدود (نقطه‌ی ابتدای نام یعنی همه‌ی زیردامنه‌ها):

bash
printf '.example-games.com\n.example-torrent.org\n' | sudo tee /etc/squid/blocked-sites.txt

۳. اعمال

bash
sudo squid -k parse
sudo systemctl restart squid
sudo ufw allow from 192.168.10.0/24 to any port 3128 proto tcp

۴. آزمایش از یک کلاینت

bash
curl -x http://192.168.10.5:3128 -I https://www.debian.org
curl -x http://192.168.10.5:3128 -I https://www.example-games.com    # باید 403 بدهد

۵. گزارش

bash
sudo tail -f /var/log/squid/access.log

برای HTTPS، Squid فقط نام دامنه را می‌بیند (درخواست CONNECT) و محتوای رمزگذاری‌شده را نمی‌بیند. همین برای فیلتر دامنه کافی است.