Server-Überwachungstools: Grafana, Prometheus und Netdata
Prometheus + Grafana Stack-Einrichtung, Netdata, node_exporter, Alarmregeln, Dashboard-Erstellung und Server-Metrik-Überwachung.
Squid Forward Proxy, HAProxy Load Balancer, SSL-Terminierung, ACL-Regeln, Caching, Health Checks und Hochverfügbarkeit.
Proxy-Server sind kritische Komponenten für die Verwaltung des Netzwerkverkehrs, die Verbesserung der Sicherheit und die Bereitstellung von Lastverteilung. In dieser Anleitung behandeln wir die Einrichtung von Squid Forward Proxy und HAProxy Load Balancer im Detail.
Squid ist der am weitesten verbreitete Open-Source Forward Proxy und Caching-Server. Er spart Bandbreite durch Zwischenspeicherung von Webinhalten und verbessert die Netzwerksicherheit mit Zugriffskontrollregeln.
Wichtige Funktionen von Squid:
# Ubuntu/Debian
sudo apt update
sudo apt install squid -y
# CentOS/RHEL
sudo dnf install squid -y
# Service-Status
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
# Netzwerkdefinitionen
acl localnet src 10.0.0.0/8
acl localnet src 172.16.0.0/12
acl localnet src 192.168.0.0/16
# Port-Definitionen
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
# Zugriffsregeln
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
# Proxy-Port
http_port 3128
# Cache-Einstellungen
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
# Log-Einstellungen
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
# Datenschutz
forwarded_for off
request_header_access Via deny all
request_header_access X-Forwarded-For deny all
# Bestimmte Websites blockieren
acl blocked_sites dstdomain .facebook.com .twitter.com .instagram.com
http_access deny blocked_sites
# Bestimmte Dateitypen blockieren
acl blocked_extensions urlpath_regex -i \.(mp3|mp4|avi|mkv)$
http_access deny blocked_extensions
# Zugriff außerhalb der Arbeitszeiten einschränken
acl work_hours time MTWHF 08:00-18:00
acl social_media dstdomain .youtube.com .reddit.com
http_access deny social_media !work_hours
# Bandbreitenbegrenzung
delay_pools 1
delay_class 1 2
delay_parameters 1 1000000/1000000 500000/500000
delay_access 1 allow localnet
sudo apt install apache2-utils -y
sudo htpasswd -c /etc/squid/passwords benutzer1
# In squid.conf hinzufügen
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords
auth_param basic realm Proxy-Authentifizierung
auth_param basic credentialsttl 2 hours
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
http_access deny all
HAProxy (High Availability Proxy) ist ein leistungsstarker TCP/HTTP Load Balancer und Proxy-Server. Er kann Millionen gleichzeitiger Verbindungen verarbeiten und bietet Lastverteilung auf Unternehmensebene.
Wichtige Funktionen von 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:StarkesPasswort123
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 weight 100
server web2 192.168.1.11:8080 check cookie web2 weight 100
backend api_servers
balance leastconn
option httpchk GET /health
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
backend web_servers
option httpchk
http-check connect
http-check send meth GET uri /health ver HTTP/1.1 hdr Host example.com
http-check expect status 200
server web1 192.168.1.10:8080 check inter 5s fall 3 rise 2
server web2 192.168.1.11:8080 check inter 5s fall 3 rise 2
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
# /etc/keepalived/keepalived.conf (Master)
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-Konfigurationsprüfung
squid -k parse
# HAProxy-Konfigurationsprüfung
haproxy -c -f /etc/haproxy/haproxy.cfg
# Proxy-Test
curl -x http://proxy-ip:3128 http://example.com
Richten Sie auf Ihren REXE-Servern sicheren Internetzugang mit Squid und hochverfügbare Lastverteilung mit HAProxy ein. Mit SSL-Terminierung und Health-Check-Funktionen können Sie eine Infrastruktur auf Unternehmensebene aufbauen.
Stellen Sie sicher, dass die SSL_ports ACL Port 443 enthält und die Regel 'http_access deny CONNECT !SSL_ports' in der richtigen Reihenfolge steht. HTTPS-Verkehr verwendet die CONNECT-Methode. Überprüfen Sie, ob Port 3128 in der Firewall geöffnet ist.
Überprüfen Sie, ob der Health-Check-Endpunkt (/health) auf den Backend-Servern funktioniert. Prüfen Sie die Einstellung 'http-check expect status 200'. Testen Sie die Konnektivität: 'curl http://192.168.1.10:8080/health'. Überprüfen Sie die HAProxy-Logs: 'tail -f /var/log/haproxy.log'.
Konvertieren Sie das Let's Encrypt-Zertifikat ins PEM-Format: 'cat fullchain.pem privkey.pem > example.com.pem'. Definieren Sie es im HAProxy-Frontend als 'bind *:443 ssl crt /etc/haproxy/certs/example.com.pem'. Erstellen Sie ein Renewal-Hook-Skript für die Zertifikatserneuerung.
Erhöhen Sie cache_mem (512 MB oder mehr). Passen Sie die cache_dir-Größe an die Festplattenkapazität an. Erhöhen Sie maximum_object_size für große Dateien. Verwenden Sie SSD-Festplatten. Optimieren Sie die Cache-Dauer mit refresh_pattern-Regeln.
Fügen Sie 'cookie SERVERID insert indirect nocache' in der Backend-Definition hinzu und fügen Sie jedem Server einen 'cookie server_name'-Parameter hinzu. HAProxy sendet ein Cookie an den Client und leitet nachfolgende Anfragen an denselben Backend-Server weiter.
HAProxy ist speziell für Load Balancing konzipiert und bietet fortgeschrittenere Funktionen: detaillierte Health Checks, erweiterte Algorithmusoptionen (leastconn, uri, hdr), Echtzeit-Stats-Dashboard und geringere Latenz. Nginx ist vielseitiger als Webserver + Reverse Proxy. HAProxy wird in Hochverkehrsumgebungen bevorzugt.
Prometheus + Grafana Stack-Einrichtung, Netdata, node_exporter, Alarmregeln, Dashboard-Erstellung und Server-Metrik-Überwachung.
Nginx Proxy Manager Docker-Installation, automatische SSL-Zertifikatserneuerung, Proxy-Host-Konfiguration, Zugriffslisten, Weiterleitungen, Streams und benutzerdefinierte Locations.
CrowdSec-Installation, Bouncer-Konfiguration, Angriffserkennung, IP-Blockierung, Dashboard, Sammlungs- und Szenario-Verwaltung.