Herhangi bir linux dağıtımının koştuğu linux sunucunuzu saldırganlara karşı güvenliğini nasıl sağlayabilirsiniz en çok yapılan saldırılardan önemli bilinmeyen tüyolara kadar değinelim bakalım 🙂
NOT: Putty, Mobaxterm gibi ssh araçlarını kullanmanızı pek tavsiye etmem kayıt olarak depolama yaptığı için verilerinizin çalınması durumunda size sıkıntı çıkartabilirler. Tavsiyem linux ve mac kullanıcılarında direkt terminal den ssh kullanmanız, Windows kullanıcıları ise CMD veya PowerShell tercih etmeleri daha güvenli olucaktır.
Video:
1
ssh [USER NAME]@[SUNUCU IP]
1) Brute Force Attack
SSH Portunuzu default 22 olarak bıraktığınızda hedef alınmasanız bile günde yüzlerce brute force saldırısına botlar tarafından maruz kalabilirsiniz.
Peki bu nasıl oluyor?
Saldırganlar botnet ağlarını güçlendirmek veya sunucu elde etme amaçlı class bazlı ip generate ederek elindeki ip listelerine wordlist mantığı ile scan/tarama yapmaktadır şifre ve id değerleri uyan sunucular bot havuzuna dahil olur. Tabi bu durum trolağı kısmı saldırgan tarafından hedef alındığınızda ssh portunuza büyük bir wordlist ile denemeler yaparak da bu işlemi yapabilirler.
Brute Force Attack’dan Korunmanın yolu
Bu işlemi genelde ssh portunu değiştirerek yapmayı tavsiye ederler ancak firewall taraflı nmap(port scan) koruması yoksa bu hedef alındığınız bir saldırıda sizi korumaz sadece trolağı brute lerine maruz kalmazsınız en kesin 2 çözüm mevcut 1) VPN (local yapılandırma ile giriş sağlamak) 2) Authorized Key (anahtarınızı yedekleyin ssh da şifre devri bitti 🙂 ) ssh servisinde bir vuln bulunma ihtimaline karşılık bu 2 çözümü birliktede uygulayabilirsiniz.
1 – VPN Yapılandırılması;
Bu işlem 2 ye bölünmektedir local ve ayrı bir ağ olarak ilk kısa yol olan ayrı ağı anlatarak başlıyım,
Ayrı bir sunucuya vpn kurulumu yapın veya sabit bir ip olarak vpn hizmeti satın alabilirsiniz ( BKNZ: Linux OpenVPN Kurulumu ) güvenlik ayarlarını yapmak istediğiniz sunucuya dönelim, sunucuya ufw firewall servisini kurun:
Debian/Ubuntu/APT…
1
apt-get install ufw -y
Centos/Fedore/YUM…
1
yum install ufw -y
aktif edeceğimiz kural:
1
ufw allow from [VPN SUNUCUNUZUN IP ADRESI]
ufw firewall ı aktif edelim:
1
ufw enable
artık vpn bağlantını olduğu takdirde istediğiniz bilgisayardan ssh bağlantısı sağlayabiliceksiniz bir portu kullanmak istediğinizde ufw üzerinden aktif etmeyi unutmayın. (Sadece kullanıcağınız portları aktif olması güvenlik açısından daha iyi olucaktır.)
local yapılandırma,
Bu işlemde ise direkt kendi sunucumuza openvpn kurulumu yapıcağız ve vpn ağına bağlandıktan sonra sunucuya bağlanmak için “10.8.0.1” ip adresini kullanıcağız. 2. Oluşturduğunuz client sizseniz direkt olarak ufw den 10.8.0.2 ye izin vermeniz yeterli olucaktır. (Ayrıntıları video da değindim)
1
ufw allow from 10.8.0.2
2 – Authorized Keys Yaplandırması,
Yukarıda belirttiğim gibi ssh da şifre kullanmak eskide kaldı passwordsgenerator.net üzerinden 60 karakter random bir pass oluşturup sunucunuzun şfiresini yapın ardından bir yere not alın ve adımlarımıza geçelim,
Authorized keys özel oluşturulmuş bir anahtardır linux makinanıza tanımladığınızda key in bulunduğu bilgisayarlardan şifre yazamadan direkt bağlantı kurabilirsiniz. İlk olarak kendi bilgisayarınızdan terminalinizi çalıştırın(POWERSHELL),
1
ssh-keygen -b 4096
komutu ile anahtarımızı oluşturduk,
dipnot: “.ssh” dosyasını zipleyip fiziki usb veya cloud gibi bir ortamda saklamanızda fayda var.
makinanıza ssh olarak bağlanıp .ssh dosyamızı oluştup gerekli perm leri verelim;
1
mkdir ~/.ssh && chmod 700 ~/.ssh
Arından ssh bağlantınızı kapatın ve kendi bilgisayarınızın terminaline(POWERSHELL) geri dönün scp komutu ile dosyayı sunucuda oluşturudğumuz dizine yüklicez,
1
scp $env:USERPROFILE/.ssh/id_rsa.pub [email protected]:~/.ssh/authorized_keys
10.8.0.1 ip adresi yerine sunucunuzun ip adresini yazın ardından şifre sorucak ssh şifrenizi son kez girin yükleme işlemi bittiğinde powershell üzerinden sunucuya girip yapmayı deneyin ve ta taa 🙂 şifresiz ssh login oldunuz.
Şimdi ise ssh password loginleri kapatalım,
1
nano /etc/ssh/ssh_config
ctrl +w yaparak “PasswordAuthentication” u nano üzerinde aratıp başındaki # i kaldırıp yes i no olarak değiştirin
öncesi:
1
# PasswordAuthentication yes
sonrası:
1
PasswordAuthentication no
ve ssh servisini yeniden başlatalım,
1
service sshd restart
3 – Firewall Yapılandırması,
Yukarıdada belirttiğim gibi gereksiz olan portları servis çalışsa bile kullanmıyorsanız dış ağa kapatmakta fayda var nedeni ise o servisde olabilicek bir zafiyet yüzünden sunucunuza saldırganlar tarafından sızılabilir veya servis in sorgulara verdiği çıktılardan faydalanarak bir ddos ağı yani AMP denilen bot listelerinden birine dahil olabilirsiniz.
İşlem kolaylığı açısından tavsiyem ufw ancak iptables de kullanabilirsiniz bir çok makalem mevcut burda ise ufw üzerinden anlatıcağım. (Kurulumunu yukarıdaki adımlarda zaten yaptık önemli kısımlara değineceğim sadece)
1
ufw status numbered
yazarak aktif ettiğiniz portlara bakabilirsiniz (yanındaki kural sayıları o kuralı silerken işinize yarıcak).
örneğin 4. sıradaki kuralı silmek istiyorsam yazmam gereken komut,
1
ufw delete 4
Port aktif etmek için (alttaki komutla 22 portunu tcp olarak açarsınız):
1
ufw allow 22/tcp
Daha fazla ayrıntı için: digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-18-04
Serinin 2 bölümünde görüşmek üzere