أدوات مراقبة الخوادم: Grafana و Prometheus و Netdata
إعداد حزمة Prometheus + Grafana، Netdata، node_exporter، قواعد التنبيه، إنشاء لوحات المعلومات ومراقبة مقاييس الخادم.
Squid forward proxy، HAProxy موازن الأحمال، إنهاء SSL، قواعد ACL، التخزين المؤقت، فحوصات الصحة والتوافر العالي.
خوادم البروكسي هي مكونات حيوية لإدارة حركة مرور الشبكة وتعزيز الأمان وتوفير موازنة الأحمال. في هذا الدليل، سنتناول إعداد Squid forward proxy و HAProxy load balancer بالتفصيل.
Squid هو أكثر خوادم البروكسي والتخزين المؤقت مفتوحة المصدر استخداماً. يوفر عرض النطاق الترددي عن طريق تخزين محتوى الويب مؤقتاً ويعزز أمان الشبكة بقواعد التحكم في الوصول.
الميزات الرئيسية لـ Squid:
# Ubuntu/Debian
sudo apt update
sudo apt install squid -y
# CentOS/RHEL
sudo dnf install squid -y
# حالة الخدمة
sudo systemctl enable --now squid
sudo systemctl status squid
# docker-compose.yml
version: '3.8'
services:
squid:
image: ubuntu/squid:latest
container_name: squid-proxy
restart: unless-stopped
ports:
- "3128:3128"
volumes:
- ./squid.conf:/etc/squid/squid.conf
- squid_cache:/var/spool/squid
- squid_logs:/var/log/squid
volumes:
squid_cache:
squid_logs:
# /etc/squid/squid.conf
# تعريفات الشبكة
acl localnet src 10.0.0.0/8
acl localnet src 172.16.0.0/12
acl localnet src 192.168.0.0/16
# تعريفات المنافذ
acl SSL_ports port 443
acl Safe_ports port 80
acl Safe_ports port 443
acl Safe_ports port 21
acl Safe_ports port 1025-65535
acl CONNECT method CONNECT
# قواعد الوصول
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access allow localhost
http_access deny all
# منفذ البروكسي
http_port 3128
# إعدادات التخزين المؤقت
cache_mem 256 MB
maximum_object_size_in_memory 512 KB
cache_dir ufs /var/spool/squid 10000 16 256
maximum_object_size 100 MB
# إعدادات السجلات
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
# الخصوصية
forwarded_for off
request_header_access Via deny all
request_header_access X-Forwarded-For deny all
# حظر مواقع محددة
acl blocked_sites dstdomain .facebook.com .twitter.com .instagram.com
http_access deny blocked_sites
# حظر أنواع ملفات محددة
acl blocked_extensions urlpath_regex -i \.(mp3|mp4|avi|mkv)$
http_access deny blocked_extensions
# تقييد الوصول خارج ساعات العمل
acl work_hours time MTWHF 08:00-18:00
acl social_media dstdomain .youtube.com .reddit.com
http_access deny social_media !work_hours
sudo apt install apache2-utils -y
sudo htpasswd -c /etc/squid/passwords user1
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords
auth_param basic realm مصادقة البروكسي
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
http_access deny all
HAProxy (High Availability Proxy) هو موازن أحمال TCP/HTTP عالي الأداء وخادم بروكسي. يمكنه التعامل مع ملايين الاتصالات المتزامنة ويوفر موازنة أحمال على مستوى المؤسسات.
الميزات الرئيسية لـ HAProxy:
sudo apt update
sudo apt install haproxy -y
haproxy -v
sudo systemctl enable --now haproxy
version: '3.8'
services:
haproxy:
image: haproxy:latest
container_name: haproxy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "8404:8404"
volumes:
- ./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro
- ./certs:/etc/haproxy/certs:ro
# /etc/haproxy/haproxy.cfg
global
log /dev/log local0
chroot /var/lib/haproxy
user haproxy
group haproxy
daemon
ssl-default-bind-options ssl-min-ver TLSv1.2
defaults
log global
mode http
option httplog
option forwardfor
timeout connect 5000
timeout client 50000
timeout server 50000
listen stats
bind *:8404
stats enable
stats uri /stats
stats refresh 10s
stats auth admin:كلمة_مرور_قوية123
frontend http_front
bind *:80
redirect scheme https code 301 if !{ ssl_fc }
frontend https_front
bind *:443 ssl crt /etc/haproxy/certs/example.com.pem
acl is_api path_beg /api
use_backend api_servers if is_api
default_backend web_servers
backend web_servers
balance roundrobin
option httpchk GET /health
http-check expect status 200
cookie SERVERID insert indirect nocache
server web1 192.168.1.10:8080 check cookie web1
server web2 192.168.1.11:8080 check cookie web2
backend api_servers
balance leastconn
server api1 192.168.1.20:3000 check
server api2 192.168.1.21:3000 check
sudo cat /etc/letsencrypt/live/example.com/fullchain.pem \
/etc/letsencrypt/live/example.com/privkey.pem \
> /etc/haproxy/certs/example.com.pem
frontend https_front
bind *:443 ssl crt /etc/haproxy/certs/example.com.pem
stick-table type ip size 100k expire 30s store http_req_rate(10s)
http-request track-sc0 src
http-request deny deny_status 429 if { sc_http_req_rate(0) gt 200 }
sudo apt install keepalived -y
vrrp_script check_haproxy {
script "/usr/bin/killall -0 haproxy"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 101
virtual_ipaddress {
192.168.1.100/24
}
track_script {
check_haproxy
}
}
squid -k parse
haproxy -c -f /etc/haproxy/haproxy.cfg
curl -x http://proxy-ip:3128 http://example.com
قم بإعداد وصول آمن للإنترنت باستخدام Squid وموازنة أحمال عالية التوافر باستخدام HAProxy على خوادم REXE الخاصة بك. مع ميزات إنهاء SSL وفحوصات الصحة، يمكنك بناء بنية تحتية على مستوى المؤسسات.
تأكد من أن ACL SSL_ports يتضمن المنفذ 443 وأن قاعدة 'http_access deny CONNECT !SSL_ports' في الترتيب الصحيح. حركة HTTPS تستخدم طريقة CONNECT. تحقق من أن المنفذ 3128 مفتوح في جدار الحماية.
تحقق من أن نقطة نهاية فحص الصحة (/health) تعمل على الخوادم الخلفية. تحقق من إعداد 'http-check expect status 200'. اختبر الاتصال: 'curl http://192.168.1.10:8080/health'. راجع سجلات HAProxy: 'tail -f /var/log/haproxy.log'.
حوّل شهادة Let's Encrypt إلى تنسيق PEM: 'cat fullchain.pem privkey.pem > example.com.pem'. عرّفها في frontend HAProxy كـ 'bind *:443 ssl crt /etc/haproxy/certs/example.com.pem'. أنشئ سكريبت hook للتجديد التلقائي للشهادة.
زد cache_mem (512 ميجابايت أو أكثر). اضبط حجم cache_dir وفقاً لسعة القرص. زد maximum_object_size للملفات الكبيرة. استخدم أقراص SSD. حسّن مدة التخزين المؤقت بقواعد refresh_pattern.
أضف 'cookie SERVERID insert indirect nocache' في تعريف backend وأضف معامل 'cookie اسم_الخادم' لكل خادم. يرسل HAProxy ملف تعريف ارتباط للعميل ويوجه الطلبات اللاحقة إلى نفس الخادم الخلفي.
HAProxy مصمم خصيصاً لموازنة الأحمال ويقدم ميزات أكثر تقدماً: فحوصات صحة مفصلة، خيارات خوارزميات متقدمة (leastconn، uri، hdr)، لوحة إحصائيات في الوقت الفعلي وزمن استجابة أقل. Nginx أكثر تنوعاً كخادم ويب + بروكسي عكسي. يُفضل HAProxy عادةً في البيئات ذات الحركة العالية.
إعداد حزمة Prometheus + Grafana، Netdata، node_exporter، قواعد التنبيه، إنشاء لوحات المعلومات ومراقبة مقاييس الخادم.
تثبيت Nginx Proxy Manager عبر Docker، تجديد شهادات SSL تلقائياً، إضافة proxy host، قوائم الوصول، إعادة التوجيه، البث والمواقع المخصصة.
تثبيت CrowdSec، تكوين bouncer، كشف الهجمات، حظر IP، لوحة المعلومات، إدارة المجموعات والسيناريوهات.