İçeriğe geç
Tüm rehberler

cPanel'de SSH Güvenliği: Parola Girişini Kapatmak, cPHulk ve CSF Ayarları

sshd -T çıktısını doğru okumak, PasswordAuthentication ve PermitRootLogin ayarlarını kendinizi kilitlemeden değiştirmek, cPHulk ve CSF/LFD'yi kontrol etmek ve authorized_keys dosyalarını denetlemek için adım adım rehber.

Okumaya başla

Güncellendi:

cPanel'de SSH Güvenliği: Parola Girişini Kapatmak, cPHulk ve CSF Ayarları
Kaydetmek için giriş yapın
Bu rehberi paylaş

Bir cPanel sunucusunun SSH portu, internete açıldığı andan itibaren otomatik parola denemesi almaya başlar. Bu denemelerin çoğu basit sözlük saldırılarıdır ve parola girişi kapalı bir sunucuda hiçbir işe yaramaz. Sorun şu ki birçok sunucuda parola girişi hâlâ açıktır, root doğrudan parolayla bağlanabilir ve kimse authorized_keys dosyalarına uzun zamandır bakmamıştır.

Bu yazıda SSH yapılandırmasını doğru okumayı, dört temel ayarı kendinizi sunucudan kilitlemeden değiştirmeyi, cPHulk ve CSF/LFD ile kaba kuvvet korumasını kontrol etmeyi ve yetkili anahtarları denetlemeyi anlatıyoruz. Komutlar AlmaLinux, Rocky Linux ve CloudLinux üzerindeki cPanel/WHM için yazıldı ve root yetkisi gerektirir.

sshd_config dosyasını değil, sshd -T çıktısını okuyun

En sık yapılan hata, /etc/ssh/sshd_config dosyasını açıp oradaki satıra güvenmektir. OpenSSH, ana dosyanın başındaki Include satırıyla /etc/ssh/sshd_config.d altındaki .conf dosyalarını da okur ve bir ayar için okuduğu ilk değeri kullanır. AlmaLinux 9 gibi dağıtımlarda bu dizinde dağıtımın kendi varsayılanlarını içeren bir dosya bulunur; örneğin 50-redhat.conf içinde X11Forwarding yes satırı vardır. Ana dosyanın sonuna eklediğiniz X11Forwarding no, bu yüzden hiç etkili olmayabilir.

sshd'nin gerçekte kullandığı değerleri görmek için yapılandırmayı test modunda döktürün:

bash

sshd -T | grep -Ei '^(permitrootlogin|passwordauthentication|maxauthtries|x11forwarding|port|pubkeyauthentication) '

sshd -T çıktısındaki anahtarlar küçük harfle yazılır. Bir değerin hangi dosyadan geldiğini bulmak isterseniz ilgili satırı tüm dosyalarda arayın; dosyalar ad sırasıyla okunur ve ilk bulunan değer kazanır.

bash

grep -nEi '^\s*(PermitRootLogin|PasswordAuthentication|MaxAuthTries|X11Forwarding)\s' \
  /etc/ssh/sshd_config /etc/ssh/sshd_config.d/*.conf 2>/dev/null

Dört temel ayar ve önerilen değerleri

AyarÖnerilenNeden
PermitRootLoginprohibit-passwordRoot yalnızca anahtarla bağlanabilir; root parolası tahmin edilse bile SSH'tan giriş olmaz. Eski sürümlerde aynı değerin adı without-password'dür.
PasswordAuthenticationnoParola ile giriş tamamen kapanır. Kaba kuvvet denemelerinin SSH üzerinde başarı şansı kalmaz.
MaxAuthTries3Tek bağlantıda denenebilecek kimlik doğrulama sayısını sınırlar; çok sayıda anahtarı sırayla deneyen istemcileri de erken keser.
X11ForwardingnoSunucuda grafik uygulama yönlendirmesine ihtiyaç yoktur; kapalı tutmak gereksiz bir saldırı yüzeyini kaldırır.

Güvenli değişiklik prosedürü

SSH ayarı değiştirmenin riski, kendinizi sunucudan kilitlemektir. Aşağıdaki sıra bu riski pratikte sıfıra indirir. Ana kural şudur: mevcut oturumunuzu, yeni ayarla başarılı bir bağlantı kurduğunuzu görene kadar kapatmayın. sshd yeniden yüklendiğinde açık oturumlar kesilmez.

1. Mevcut durumu kaydedin ve yedek alın

bash

TS=$(date -u +%Y%m%d_%H%M%S)
cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.bak-$TS
sshd -T > /root/sshd-T-before-$TS.txt

2. Ayarları en önce okunan yere yazın

Ana dosyada Include satırı varsa, ayarları ad sırasında en önce gelen yeni bir dosyaya yazmak en temiz yöntemdir. Böylece dağıtımın varsayılan dosyası sizin değerinizi ezemez ve değişikliği geri almak için tek bir dosyayı silmeniz yeterli olur.

bash

grep -n '^Include' /etc/ssh/sshd_config
cat > /etc/ssh/sshd_config.d/00-hardening.conf <<'EOF'
PermitRootLogin prohibit-password
PasswordAuthentication no
MaxAuthTries 3
X11Forwarding no
EOF
chmod 600 /etc/ssh/sshd_config.d/00-hardening.conf

Include satırı yoksa ayarları ana dosyada mevcut satırları düzenleyerek değiştirin, sona eklemeyin. Dosyanın sonunda bir Match bloğu varsa, sona eklenen satırlar yalnızca o bloğa uygulanır ve genel ayarı değiştirmez.

3. Sözdizimini test edin, sonra yeniden yükleyin

bash

sshd -t && systemctl reload sshd

sshd -t hata verirse reload çalışmaz ve mevcut yapılandırma devam eder. Hata mesajını düzeltin ya da eklediğiniz dosyayı silin. restart yerine reload kullanmak, sshd hatalı bir yapılandırmayla başlamayı reddederse servisin tamamen durması riskini azaltır.

4. İkinci bir oturumla doğrulayın

İlk oturumu kapatmadan yeni bir terminalden anahtarla bağlanın. Ardından parola girişinin gerçekten reddedildiğini istemci tarafında deneyin. Son olarak sshd -T çıktısını yeniden alıp önceki dosyayla karşılaştırın.

bash

ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no root@SUNUCU_IP
sshd -T | grep -Ei '^(permitrootlogin|passwordauthentication|maxauthtries|x11forwarding) '

İlk komutun Permission denied (publickey) gibi bir hatayla sonlanması beklenir. Yeni oturum açılamıyorsa hâlâ açık olan ilk oturumdan eklediğiniz dosyayı silip sshd'yi yeniden yükleyin.

Dört ayarın ötesinde: ek sıkılaştırmalar

Temel dört ayar yerleştikten sonra aşağıdaki ayarları da gözden geçirebilirsiniz. Bunlar her sunucu için zorunlu değildir; ancak her biri belirli bir riski azaltır ve aynı güvenli değişiklik prosedürüyle uygulanabilir.

  • PermitEmptyPasswords no: boş parolalı hesapların girişini engeller. Varsayılan değer zaten no'dur, ama sshd -T ile doğrulamakta fayda var.
  • LoginGraceTime 30: kimlik doğrulamasını tamamlamayan bağlantıların ne kadar süre açık kalacağını belirler. Kısa tutmak, yarım bırakılan bağlantıların kaynak tüketmesini sınırlar.
  • AllowUsers veya AllowGroups: SSH ile girebilecek kullanıcıları açıkça listeler. cPanel hesap sahipleri de SSH kullanıyorsa onları listeye eklemeyi unutmayın; aksi halde bağlanamazlar.
  • ClientAliveInterval ve ClientAliveCountMax: yanıt vermeyen oturumların kapanmasını sağlar. Değerleri çok düşük tutarsanız uzun süren işlemler sırasında oturumunuz kesilebilir.

Port değiştirmek işe yarar mı?

SSH'ı 22 dışında bir porta taşımak, otomatik taramalardan gelen deneme sayısını belirgin şekilde azaltır ve kayıtları okunur hâle getirir. Ancak bu bir güvenlik önlemi değil, gürültü azaltma yöntemidir; hedefli bir saldırgan açık portları birkaç dakikada bulur. Parola girişi kapalı ve anahtarlar denetlenmiş bir sunucuda port değişikliği isteğe bağlıdır. Yapacaksanız yeni portu sshd'ye eklemeden önce güvenlik duvarında açın ve eski portu, yeni porttan başarıyla bağlandığınızı görene kadar kapatmayın.

Kayıtlardan denemeleri izleyin

Sertleştirmenin işe yarayıp yaramadığını kayıtlardan görebilirsiniz. AlmaLinux, Rocky Linux ve CloudLinux'ta SSH kayıtları /var/log/secure dosyasına yazılır. Parola girişi kapatıldıktan sonra Failed password satırlarının yerini, anahtarı olmayan istemcilerin bağlantı denemeleri alır.

bash

grep -c 'Failed password' /var/log/secure
grep 'Failed password' /var/log/secure | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head
grep 'Accepted publickey' /var/log/secure | tail -5

Son komut, başarılı anahtar girişlerini kullanıcı adı ve kaynak IP ile gösterir. Tanımadığınız bir IP adresinden root girişi görüyorsanız, aşağıdaki anahtar denetimine öncelik verin.

cPHulk: cPanel'in kaba kuvvet koruması

cPHulk, WHM, cPanel, webmail, FTP ve e-posta girişlerindeki başarısız denemeleri izler ve eşik aşılınca IP adresini ya da hesabı geçici olarak engeller. cPanel'in yönettiği SSH girişleri de bu korumaya dahil olabilir. cPHulk kapalıysa WHM giriş ekranı sınırsız parola denemesine açıktır.

bash

systemctl is-active cphulkd
whmapi1 read_cphulk_records list_name=white
whmapi1 read_cphulk_records list_name=black

Servis kapalıysa WHM içinde Security Center altındaki cPHulk Brute Force Protection ekranından ya da komut satırından açabilirsiniz. Açmadan önce kendi IP adresinizi beyaz listeye eklemek, yanlış parola denemeleri yüzünden kendi kendinizi engellemenizi önler.

bash

whmapi1 create_cphulk_record list_name=white ip=203.0.113.10 comment='ofis'
whmapi1 enable_cphulk
systemctl is-active cphulkd

Beyaz listeyi düzenli gözden geçirin. Yıllar önce eklenmiş geniş bir IP aralığı ya da artık kullanmadığınız bir ofis adresi, korumayı o adresler için tamamen devre dışı bırakır.

CSF ve LFD: güvenlik duvarı ve giriş izleme

CSF (ConfigServer Security and Firewall), cPanel sunucularında yaygın kullanılan bir güvenlik duvarı yapılandırıcısıdır; LFD (Login Failure Daemon) ise kayıt dosyalarını izleyip tekrarlanan başarısız girişlerde IP'yi CSF üzerinden engeller. Sunucunuzda CSF varsa üç şeye bakın: kurulu mu, TESTING modu kapalı mı ve LFD çalışıyor mu.

bash

csf -v
grep -E '^(TESTING|TCP_IN|LF_SSHD) ' /etc/csf/csf.conf
systemctl is-active lfd
csf -l | head -40

TESTING = "1" iken CSF kuralları yükler, ancak bir zamanlayıcı bunları belirli aralıklarla temizler. Kurulumdan sonra kuralların doğru çalıştığını gördüğünüz anda TESTING değerini 0 yapmanız gerekir. TCP_IN listesinde SSH portunuzun bulunduğundan emin olun; varsayılan dışında bir port kullanıyorsanız o port listede yoksa TESTING'i kapattığınızda SSH erişiminizi kaybedersiniz.

Bir IP'nin neden engellendiğini görmek için csf -g IP_ADRESI, kendi adresinizi kalıcı olarak izin listesine eklemek için csf -a IP_ADRESI kullanılır. csf.conf'u değiştirdikten sonra csf -r ile kuralları yeniden yükleyin ve bunu yaparken de ikinci bir SSH oturumunu açık tutun.

authorized_keys denetimi

Parola girişini kapattığınızda sunucuya kimin girebileceğini authorized_keys dosyaları belirler. Bu yüzden SSH sertleştirmesi anahtar denetimi olmadan tamamlanmış sayılmaz. Root'un anahtarlarını parmak iziyle listeleyin ve her birinin kime ait olduğunu bildiğinizden emin olun.

bash

ssh-keygen -lf /root/.ssh/authorized_keys
find /home -maxdepth 4 -name authorized_keys -type f 2>/dev/null
find /home /root -maxdepth 4 -name authorized_keys 2>/dev/null \
  | xargs grep -n 'command=\|no-pty\|permitopen' 2>/dev/null
  • Yorum alanı boş ya da anlamsız olan anahtarları sorgulayın; meşru anahtarlar genellikle kişi veya makine adı taşır.
  • Ayrılan çalışanların, eski ajansların ve artık kullanılmayan yedekleme sunucularının anahtarlarını kaldırın.
  • command=, no-pty veya permitopen seçenekli anahtarlar yedekleme ya da dağıtım için meşru olabilir; ancak tünel amaçlı arka kapılarda da kullanılır. Her birinin amacını belgeleyin.
  • Bir anahtarı silmeden önce dosyanın yedeğini alın ve silme işlemini açık bir ikinci oturumla yapın.

cPanel hesap sahipleri kendi anahtarlarını cPanel içindeki SSH Access ekranından ekleyip yetkilendirebilir. Bu yüzden kullanıcı dizinlerindeki authorized_keys dosyalarının sayısı zamanla artar. Bir hesabın SSH erişimine gerçekten ihtiyacı yoksa, WHM'deki Manage Shell Access ekranından o hesabın kabuk erişimini kapatmak, anahtar dosyası tek tek temizlemekten daha kalıcı bir çözümdür.

Sentinel bunu nasıl yapar

Sentinel'in ssh-hardening modülü dört ayarı sshd -T çıktısından okur; dosya içeriğine değil, sshd'nin kullandığı değere bakar. Uyumsuz bir değer, örneğin "PasswordAuthentication = yes (önerilen: no)" biçiminde Yüksek önemli bir uyarı olarak raporlanır. Düzeltmeyi panelden onayladığınızda Sentinel, ana dosyada Include satırı varsa ayarları en önce okunan 00-sentinel-hardening.conf dosyasına yazar, yoksa ana dosyadaki genel bölümü yerinde düzenler. Yeniden yüklemeden önce sshd -t çalıştırır; test başarısız olursa değişikliği geri alır. Yüklemeden sonra sshd -T ile değeri yeniden ölçer ve başka bir dosya değeri eziyorsa o dosyayı adıyla bildirir.

cphulk modülü cPHulk servisinin çalışıp çalışmadığını kontrol eder; kapalıysa "cPHulkd servisi kapalı — WHM brute-force'a açık" bulgusu Yüksek önemle açılır. ssh-keys-audit modülü root anahtarlarını parmak izi ve yorumuyla, kısıtlı anahtar dosyalarını da yollarıyla raporlar, ancak hiçbir anahtarı otomatik silmez. Güvenlik duvarı modülü CSF'i otomatik kurmaz; kurulu CSF'te TESTING modunu kapatıp SSH portunu izin listesine ekler. Sunucuda hiçbir güvenlik duvarı yoksa firewalld'yi cPanel port listesi ve o anki SSH portuyla etkinleştirir. Bunu yapmadan önce 300 saniyelik bir geri alma zamanlayıcısı kurar; yeni bir SSH bağlantısı ile WHM (2087) ve HTTP/HTTPS (80, 443) portları doğrulanamazsa değişiklik otomatik olarak geri alınır.

Bütün düzeltmelerde önce "Önce göster" ile uygulanacak komutları görürsünüz, değiştirilen dosyanın tarihli yedeği ve SHA-256 özeti kaydedilir. Onayınız olmadan sunucuda hiçbir şey değişmez.

TEKNOWEB ÇÖZÜMLERİ

Bu rehberle ilgili çözümler

Rehberdeki konuyu gerçek ürün ve hizmet seçenekleriyle birlikte değerlendirin.

Yorumlar ve sorular

Deneyimini paylaş, birlikte çözelim.

Yorumlar yükleniyor…

Okumaya devam edin

Tüm rehberler