cPanel Gate
cPanel/WHM giriş portlarının önüne nginx tabanlı bir kapı koyar. Bot taramaları ve CVE-2026-41940 gibi auth-bypass açıkları cpsrvd'ye hiç ulaşmadan kapıda durur.
Mantık
cpsrvd 2082/2083/2086/2087/2095/2096 portlarında tüm dünyaya açık dinler sıfır gün açıkları doğrudan oradan giriyor. Bu paket trafiği iptables ile yerel nginx'e DNAT eder. nginx önce HMAC imzalı bir çerez ister, çerez yoksa cpsrvd'ye tek byte geçmez.
arola ile bir kerelik doğrulama yapılır. Domain'i cPanel'in kendi /scripts/whoowns'u tanıyor mu, ona bakar WHM'de yeni hesap açıldığında o domain otomatik geçer.
Portlar
2083 / 2087 / 2096 → kapının arkasında2082 / 2086 / 2095 → DROP (HTTPS varken HTTP'ler işsiz)
Mail portları (25, 465, 587, 110, 143, 993, 995) ellenmez. HTTP olmadıkları için bu kapıyla korunamaz, onları cPHulk + güçlü parola tutar.
Gereksinimler
AlmaLinux/RHEL 8 veya 9, cPanel 11.110+, root erişim. nginx yoksa script kurar.
Kurulum
cd /root/cpanel-gate-package bash install.sh
Script şunları yapar:
- iptables yedeğini /root/cpanel-gate-backup/ altına alır
- nginx ve iptables-services'i kurar
- /opt/cpanel-gate/gate.py'ı yerleştirir, HMAC secret üretir
- cpsrvd sertifikasını key/cert olarak ayrıştırıp nginx'e verir
- systemd unit, nginx config ve sysctl dosyalarını koyar
- DNAT/DROP kurallarını uygular ve kalıcı yazar
- Servisleri başlatır
Bitince
https://sunucun:2087/ kapı sayfasını gösterir.
Manuel kurulum
Paketler:
dnf install -y nginx iptables-services
Dosyaları yerleştir:
mkdir -p /opt/cpanel-gate /etc/cpanel-gate/ssl /var/log/cpanel-gate cp gate.py /opt/cpanel-gate/gate.py cp cpanel-gate.service /etc/systemd/system/cpanel-gate.service cp cpanel-gate-nginx.conf /etc/nginx/conf.d/cpanel-gate.conf cp 99-cpanel-gate.conf /etc/sysctl.d/99-cpanel-gate.conf chmod 0755 /opt/cpanel-gate/gate.py
HMAC secret üret:
python3 -c "import secrets; print(secrets.token_hex(32))" > /etc/cpanel-gate/secret chmod 600 /etc/cpanel-gate/secret
cpsrvd sertifikasını key + cert olarak ayır:
python3 - <<'EOF' import re src = open('/var/cpanel/ssl/cpanel/cpanel.pem').read() key = re.search(r'-----BEGIN (RSA )?PRIVATE KEY-----.*?-----END (RSA )?PRIVATE KEY-----', src, re.DOTALL) certs = re.findall(r'-----BEGIN CERTIFICATE-----.*?-----END CERTIFICATE-----', src, re.DOTALL) open('/etc/cpanel-gate/ssl/key.pem','w').write(key.group(0)+'n') open('/etc/cpanel-gate/ssl/cert.pem','w').write('n'.join(certs)+'n') EOF chmod 640 /etc/cpanel-gate/ssl/{key,cert}.pem chown root:nginx /etc/cpanel-gate/ssl/{key,cert}.pem
/etc/nginx/nginx.conf içinde listen 80 default_server; olan server bloğunu yorum satırı yap.
iptables + sysctl (kendi NIC'inle):
NIC=$(ip -o -4 route show to default | awk '{print $5}') sed -i "s/ens192/$NIC/g" /etc/sysctl.d/99-cpanel-gate.conf sysctl --system
iptables -t nat -A PREROUTING -i $NIC -p tcp --dport 2087 -j DNAT --to-destination 127.0.0.1:5087 iptables -t nat -A PREROUTING -i $NIC -p tcp --dport 2083 -j DNAT --to-destination 127.0.0.1:5083 iptables -t nat -A PREROUTING -i $NIC -p tcp --dport 2096 -j DNAT --to-destination 127.0.0.1:5096 iptables -I INPUT -i $NIC -p tcp --dport 2086 -j DROP iptables -I INPUT -i $NIC -p tcp --dport 2082 -j DROP iptables -I INPUT -i $NIC -p tcp --dport 2095 -j DROP
iptables-save > /etc/sysconfig/iptables systemctl enable iptables
Servisleri ayağa kaldır:
nginx -t systemctl daemon-reload systemctl enable --now cpanel-gate nginx
Ayarlar
/opt/cpanel-gate/gate.py'ın başında duruyor:
PASSWORD = 'meohost' # giriş parolası TTL = 600 # çerez süresi (sn) LISTEN_HOST = '127.0.0.1' LISTEN_PORT = 8123 COOKIE_NAME = 'cp_gate_token' SECRET_FILE = '/etc/cpanel-gate/secret'
Default parolayı bırakma. 12+ karakter, harf-rakam-sembol karışık bir şeyle değiştir sonra systemctl restart cpanel-gate.
Komutlar
systemctl status cpanel-gate nginx systemctl restart cpanel-gate journalctl -u cpanel-gate -f tail -f /var/log/cpanel-gate/gate.log iptables -t nat -L PREROUTING -n -v
HMAC secret'i yenilemek istersen (eski çerezlerin hepsi iptal olur):
python3 -c "import secrets; print(secrets.token_hex(32))" > /etc/cpanel-gate/secret systemctl restart cpanel-gate
Geri çekme
DNAT'ı söker, cpsrvd yine doğrudan açılır:
iptables -t nat -F PREROUTING iptables-save > /etc/sysconfig/iptables
Yedeği geri al:
iptables-restore < /root/cpanel-gate-backup/iptables-YYYYMMDD-HHMMSS.rules iptables-save > /etc/sysconfig/iptables
Tamamen kaldır: bash uninstall.sh
Sorun giderme
Bad Gateway nginx çalışmıyordur. systemctl status nginx, nginx -t.
Parola doğru ama kabul etmiyor domain bu sunucuda barınmıyordur. /scripts/whoowns ornek.com boş dönerse cPanel o domaini tanımıyordur.
Reboot sonrası kapı açılmıyor systemctl is-enabled iptables enabled olmalı, sysctl net.ipv4.conf.all.route_localnet 1 olmalı.
Çerez sürekli reddediliyor HMAC secret değişmiştir, tarayıcıdan çerezleri temizle.
Terminal/File Manager boş açılıyor nginx config'inde WebSocket Upgrade header'ı geçmiyor, cpanel-gate.conf'a bak.
Nasıl çalışıyor
Çerez HMAC-SHA256 ile imzalı, sunucu state tutmuyor (stateless). DNAT route_localnet=1 sayesinde 127.0.0.1'e yönleniyor, cpsrvd tek satır ayar değişmeden yerinde kalıyor.
nginx'in auth_request direktifi her istek için gate servisine soruyor çerez geçerliyse 200, değilse 401 ve giriş sayfası. /__gate/verify dakikada 10 deneme ile rate-limit'li.
WebSocket (cPanel Terminal, File Manager) için Upgrade header'ları geçer, timeout 1 saat.