diff --git a/tutorials/security-ubuntu-settings-firewall-tools/01.tr.md b/tutorials/security-ubuntu-settings-firewall-tools/01.tr.md deleted file mode 100644 index 402ad5164..000000000 --- a/tutorials/security-ubuntu-settings-firewall-tools/01.tr.md +++ /dev/null @@ -1,381 +0,0 @@ ---- -SPDX-License-Identifier: MIT -path: "/tutorials/security-ubuntu-settings-firewall-tools/tr" -slug: "security-ubuntu-settings-firewall-tools" -date: "2024-07-26" -title: "Ubuntu Sunucunuzu Nasıl Güvende Tutarsınız" -short_description: "Bu yazı, en iyi uygulamaların ve düzenli bakımın birleşimiyle Ubuntu sunucunuzu güvence altına almak için basit bir kılavuz sağlar." -tags: ["Server Management", "Security"] -author: "Oguzhan Selcuk Bulbul" -author_link: "https://github.com/osbulbul" -author_img: "https://avatars.githubusercontent.com/u/987071" -author_description: "WordPress ve Svelte kullanarak web uygulamaları yapıyorum. Ayrıca PhaserJS ve Unity kullanarak oyunlar geliştiriyorum." -language: "tr" -available_languages: ["en", "de", "tr"] -header_img: "header-5" -cta: "cloud" ---- - -## Giriş -İlk sunucularımı hatırlıyorum. Onları güvende tutmak için neredeyse hiçbir şey yapmadım çünkü kötü niyetli birinin sunucuma ulaşabileceğinin farkında değildim. Ve nasıl bittiğini tahmin edebilirsiniz. Neyse ki, yedeklerim vardı ve onları kolayca geri yükleyebildim. Ama tekrar oldu. Bu sefer, araştırma yaptım, ödevimi yaptım ve sunucularımı daha güvenli hale getirdim. Biliyorum ki hiçbir sunucu kırılmaz değildir, ama size sunucunuzu nasıl güvende tutacağınızı ve sunucunuz çökerse ne yapmanız gerektiğini göstereceğim. - -Başlangıç kurulumuyla başlayacağız. Yeni bir sunucu oluşturduğunuzda ne yapmanız gerektiğini öğreneceksiniz. Daha sonra, düzenli kontroller yaparak nasıl bakım yapacağımızı ele alacağız. Son olarak, sunucunuz çöktüğünde ne yapmanız gerektiğini öğreneceksiniz. Bu eğitim sizi profesyonel bir sunucu yöneticisi yapmaz, çünkü bu çok fazla çalışma ve ciddi bir iştir. Ama en azından hobi projelerinizi güvende tutabileceksiniz. - -Hadi başlayalım! - -**Ön Koşullar** - -* 1 adet sunucu (ör. [Hetzner](https://docs.hetzner.com/cloud/servers/getting-started/creating-a-server) sunucusu) - -**Örnek terminoloji** - -* Kullanıcı Adı: `holu` - -## Adım 1 - Başlangıç Kurulumu ve Temel Güvenlik - -![Setup](images/setup.png) - -İlk adımımız root girişini devre dışı bırakmaktır. Ancak root'u devre dışı bırakmadan önce yeni bir kullanıcı oluşturmalıyız. Yeni bir kullanıcı oluşturmak için bu komutu çalıştırın (holu'ı kendi kullanıcı adınızla değiştirin): - -```bash -sudo adduser holu -``` - -Yeni kullanıcı için bir şifre belirlemeniz ve bazı ek bilgiler sağlamanız istenecektir. Yeni kullanıcıya yönetici yetkileri vermek için, onu sudo grubuna ekleyin: - -```bash -sudo usermod -aG sudo holu -``` - -Her şeyin doğru çalıştığından emin olmak ve sudo erişimini test etmek için yeni kullanıcıya geçiş yapın: - -```bash -su - holu -sudo apt update -``` - -Zaten bir SSH anahtar çiftiniz yoksa, ssh-keygen komutunu kullanarak bir tane oluşturabilirsiniz: - -```bash -ssh-keygen -t ed25519 -``` - -Bu, yeni bir SSH anahtar çifti (bir özel anahtar ve bir genel anahtar) oluşturacaktır. Varsayılan olarak, anahtarlar `~/.ssh` dizinine kaydedilecektir. Varsayılan dosya konumunu kabul etmek için Enter'a basabilir veya farklı bir yol belirtebilirsiniz. Ayrıca, isteğe bağlı olarak ek güvenlik için bir parola belirleyebilirsiniz. - -Genel anahtarınızı sunucuya kopyalamak için `ssh-copy-id` komutunu kullanın. holu'ı kullanıcı adınız ve server_ip'yi sunucunuzun IP adresi ile değiştirin: - -```bash -ssh-copy-id holu@server_ip -``` - -Alternatif olarak, ssh-copy-id mevcut değilse, genel anahtarı manuel olarak kopyalayabilirsiniz: - -```bash -cat ~/.ssh/id_ed25519.pub | ssh holu@server_ip 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys' -``` - -Sunucunuzdaki .ssh dizini ve authorized_keys dosyası için doğru izinleri sağladığınızdan emin olun: - -```bash -chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys -``` - -### Sistemi Güncelleme -Yapmanız gereken ilk şey, güncellemeleri kontrol etmektir çünkü güncel olmayan yazılımlar kolayca istismar edilebilecek güvenlik açıklarına sahip olabilir. Bu iki komutu çalıştırmak düşündüğünüzden daha kolaydır: - -```bash -apt update -apt upgrade -``` - -Kolay, değil mi? Şimdi en son sürümleri kullandığımızdan emin olduk. - -### SSH Erişimini Güvenceye Alma -Birisi sunucunuzu hedef aldığında, muhtemelen deneyecekleri ilk şey SSH üzerinden erişim sağlamaktır. Bunu genellikle botlar ve çeşitli yöntemlerle yaparlar. Bu yüzden SSH erişimini güvenceye almak çok önemlidir. - -Konfigürasyon dosyasını düzenle: - -```bash -sudo nano /etc/ssh/sshd_config -``` - -* **Root erişimini devre dışı bırak** - - "PermitRootLogin"ı bulun ve "no" olarak ayarlayın. - -* **Şifre doğrulamayı devre dışı bırak** - - * "PasswordAuthentication"ı bulun ve "no" olarak ayarlayın. - * "PubkeyAuthentication"ı bulun ve "yes" olarak ayarlayın. - -* **Varsayılan SSH portunu değiştirme** - - Bunu değiştirerek, otomatik bot saldırılarının çoğunu ortadan kaldırabiliriz çünkü bunların çoğu SSH'ye port 22 üzerinden erişmeye çalışacak basit botlardır. - - "#Port 22" satırını bulun ve "Port 2222" gibi bir şeye değiştirin (veya 2222'yi istediğiniz herhangi bir portla değiştirin). - -Değişiklikleri kaydedin ve portun değiştirilip değiştirilmediğini kontrol edin: - -```bash -sudo systemctl restart ssh.service -sudo systemctl status ssh -``` - -`Server listening on :: port 2222` ifadesini görmelisiniz. - -
- -### Bir Güvenlik Duvarı Yapılandırma -Güvenlik duvarı kurallarını yönetmek için "ufw" kullanacağız. Kullanımı kolay olacak şekilde tasarlanmıştır ve bir komut satırı arayüzü kullanır. Ufw muhtemelen sisteminizde zaten yüklüdür, ancak yüklü olduğundan emin olmak için bu komutu çalıştırabilirsiniz: - -```bash -sudo apt install ufw -``` - -Sonraki adım, diğer kurallarla özellikle izin verilmedikçe tüm gelen ağ trafiğini reddetmek olacaktır. Bu, yalnızca açıkça izin verdiğiniz trafiğe izin vererek sunucunuzu güvence altına almak için temeldir. Bu komutu çalıştırmanız gerekir: - -```bash -sudo ufw default deny incoming -``` - -Ardından, tüm giden ağ trafiğine izin vereceğiz. Bu genellikle güvenlidir ve sunucunuzun diğer sunucular veya hizmetlerle sınırlama olmaksızın iletişim kurmasına izin verir. Bu komutu çalıştırın: - -```bash -sudo ufw default allow outgoing -``` - -Şimdi, sunucumuza SSH üzerinden giriş yapabilmek için SSH portumuzu izin vermemiz gerekiyor. 2222'yi belirttiğiniz başka bir portla değiştirdiğinizden emin olun ve bu komutu çalıştırın: - -```bash -sudo ufw allow 2222/tcp -``` - -Son olarak, güvenlik duvarı kurallarımızı etkinleştirmemiz gerekiyor: - -```bash -sudo ufw enable -``` - -### Fail2Ban - -SSH portumuzu değiştirdik ve güvenlik duvarımızı kurduk. Ama bir bot portumuzu bulursa ve hala sunucumuza SSH üzerinden erişmeye çalışırsa ne olur? Bu bir brute force saldırısı olacaktır ve sunucumuzu Fail2Ban ile koruyabiliriz. Bu yazılım, kötü niyetli belirtiler veya girişimler gösteren IP'leri yasaklayacaktır. Fail2Ban'i kurmak ve etkinleştirmek için bu üç komutu çalıştırmanız gerekir: - -```bash -sudo apt install fail2ban -sudo systemctl enable fail2ban -sudo systemctl start fail2ban -``` - -Ayrıca, `/etc/fail2ban/` dizinindeki yapılandırma dosyalarını düzenleyerek Fail2Ban ayarlarını özelleştirebilirsiniz. Daha ayrıntılı bilgi ve en iyi uygulamalar için[Fail2Ban belgelerine](https://github.com/fail2ban/fail2ban/wiki/Best-practice) göz atabilirsiniz. - -Harika! Büyük bir adım attınız ve zaten daha korumalı bir sunucunuz var. Şimdi, zaman zaman düzenli bakım yapmanız gerekiyor. Bir sonraki bölümde ne yapmanız gerektiğini açıklayacağız. - -## Adım 2 - Düzenli Bakım - -![Maintenance](images/maintenance.png) - -* **Sistemi Güncelleme** - - Öncelikle, sistemimiz için herhangi bir güncelleme olup olmadığını kontrol etmemiz gerekiyor. Bu komutu çalıştırın: - - ```bash - sudo apt update - sudo apt upgrade - ``` - --Port hala 22 ise buraya tıklayın
- -Ubuntu 24.04'te şu komutları çalıştırın ve tekrar kontrol edin: - -```bash -sudo systemctl disable ssh.socket && sudo systemctl stop ssh.socket -sudo systemctl restart ssh.service -sudo systemctl status ssh -``` - -