Merhabalar, değerli TurkHackTeam.Org takipçileri. Bu konumuzda sunucu(server) güvenliğinin nasıl sağlanabileceğini "basit düzeyde" sizlere anlattım. Umarım yararlı bir konu olur.
>>> İçindekiler <<<
► 1 - Sunucu(Server) Güvenliğinin Günümüzde Yeri ve Önemi
► 2 - Sunucu Güvenliğini Nasıl Sağlarız?
► 2.1 - Root Girişinin Engellenmesi
► 2.2 - SSH Portunun Değiştirilmesi
► 2.3 - SSH Anahtar Çifti(SSH Key Pair)
► 2.4 - Firewall Kurulumu
► 2.5 - Fail2Ban Kullanmak
► 2.6 - Gereksiz Servisleri Kapatmak
► 2.7 - Açık Portların Kontrolü
Sunucu(Server) Güvenliğinin Günümüzde Yeri ve Önemi
Günümüzde siber saldırılar olağan üstü bir şekilde artmış ve artık sanal savaşlar yapılıyor diyebiliriz. Hal böyle olunca veri güvenliğini sağlamamızın önemi giderek artmaktadır. Firmalar ise satışlarını yükseltmek ve reklamlar için web siteleri açıyor, güvenliği ise kendilerine özel sunucu alarak çözdüklerini sanıyorlar. Her ne kadar sunucuda tek bir web sitesi barınsa bile firewall kullanımı, ağ güvenliği, işletim sistemi, barındırılan uygulamalar, veri tabanı kullanımı, web site izinleri, İP engellemeleri, kullanılan sunucu kontrol panelleri gibi ek özellikler ve ihtiyaçlar sunucu güvenliği giderek düşürüyor. Ayrıca büyük sitelere nazaran küçük sitelerinde bilgi sızımına karşın sunucu güvenliğini sağlaması gerekiyor.
Günümüzün durumu yukarıda anlatılan gibi olunca mecburen temel seviyede bile olsa sunucu güvenliğini öğrenmemiz gerekmektedir.
Sunucu Güvenliğini Nasıl Sağlarız?
Aslında olay temel olarak SSH, portlar ve firewall kullanımından geçiyor diyebiliriz ama Firewall olayı maliyetli olacağından dolayı çoğu kişi tarafından tercih edilmese de gerçekten önemli bir güvenlik yöntemi olduğu kanıtlanmıştır. Çok söylenecek bir şeyimiz bulunmuyor, bu nedenle hiç uzatmadan Root'dan başlayalım.
Root Girişinin Engellenmesi
VDS, VPS aldığınız zaman olduğu gibi alınan firmadan bizim e-postamıza root bilgileri gönderilir. Her firma bu root kullanıcısının adını root, şifresini de karışık bir şey yapar. Birçoğumuzun da bunu bildiği gibi bilgisayar korsanları da ana kullanıcının adının root olduğunu tahmin edebilir ve bu tahmin sayesinde ana kullanıcı odaklı brute force(kaba-kuvvet) saldırıları gerçekleştirebilir. Bunun önüne birazda olsa geçebilmemiz için SSH üzerinden "tahmin edilemez" bir kullanıcı ve o kullanıcıya ait "karmaşık şifre" oluşturmamız gerekiyor. Bunun için ise "doğal olarak" sisteme root olarak giriş yapıyoruz ve aşağıdaki komutları uygulayarak(CentOS Linux dağıtımlarında uygulayabilirsiniz) yeni bir "x" kullanıcı oluşturuyoruz.
► $ adduser demo
► $ passwd demo
► $ gpasswd -a demo wheel
Ne yaptık? adduser demo komutuyla yeni bir kullanıcı ekledik, $ passwd demo komutuyla oluşturduğumuz yeni kullanıcıya bir parola belirledik, $ gpasswd -a demo wheel komutunu da uygulayarak, oluşturduğumuz yeni kullanıcıya root yetkisini verdik. Bu işlemleri yaptığımıza göre SSH daemon'un ayarlarını değiştirmemiz gerekiyor(Bununla root ile sisteme girişi engelliyoruz).
► $ nano /etc/ssh/sshd_config >> Burada bulunan dosyayı metin düzenleme yazılımları ile açıyoruz.
► #PermitRootLogin yes >> Sol tarafta gördüğünüz yazıyı dosya içerisinde bulduktan sonra "PermitRootLogin no" olarak değiştiriyoruz ve "$ systemctl reload sshd" komutu ile yeniden başlatma işlemini gerçekleştiriyoruz. Bu işlemleri yaptıktan sonra sunucuya SSH üzerinden root olarak bağlanamadığımız için yeni oluşturduğumuz kullanıcıya göre "ssh demo@SERVER_IP_ADDRESS" tarzı komut ile sunucu ile bağlantı kurabiliriz.
SSH Portunun Değiştirilmesi
Bir sunucuya saldırı yapan bilgisayar korsanların çoğunluğu 22 portunu hedef alır. Neden? Çünkü standart olan SHH portu 22'dir. Bizim burada yapacağımız işlem, 22 portunu farklı bir numara ile değiştirerek, buradan bir saldırıya maruz kalırsak onu engellemek, yok saymak. Bu sebepten böyle bir port değiştirme işlemi yapıyoruz. İşlemler için öncelikle önceki işlemde olduğu gibi SSH config dosyasını yani sshd_config isimli dosyayı metin düzenlemek için kullanılan herhangi bir yazılım ile açıyoruz ve dosyamızda "#Port22" olarak belirtilen kısmı vermek istediğimiz port numarası ile değiştiriyoruz. Size tavsiyem, 3834 gibisinden farklı sayılar vermeniz. Ayrıca kaydetmeden önce "#" işaretini kaldırınız. Daha sonra restart atarak işlemi tamamlayınız.
Yukarıda yaptığımız işlemler sonrası sunucuya SSS ile erişmek istediğimizde aşağıdaki gibi bir işlem yapmamız gerekiyor.
► ssh -p 3834 chantht@turkhackteam.org
SSH Anahtar Çifti(SSH Key Pair)
Nedir bu SSH key pair diyerekten giriş yapalım; Şimdi ilk başlığımızda yaptığımız işlemde ne yaptık? tahmin edilebilir bir kullanıcı adını yeni bir kullanıcı oluşturarak güvenliği sağladık. Yani bilgisayar korsanlarının deneme yanılma yoluyla sunucu ile SSH üzerinden erişime geçmesini bir nebzede olsa engelledik. SSH key pair olayında ise bilgisayarımızda bulunan kriptolanmış yani şifrelenmiş bir veri ile sunucumuzda yer alan şifrelenmiş dosya eşleşiyor ve bu şekilde erişim elde etmiş oluyoruz. Dosyanın bulunmadığı bir kişi sunucumuza erişemiyor çünkü kullanıcı adı ve şifre kullanımı gibi brute force yaptıracak bir bilgi ortada bulunmuyor, tabii ki bilgisayarımıza erişim sağlayan bir "kötü niyetli kişi" bu dosyayı aldıktan sonra büyük sıkıntılara girebiliriz. Sakın ola RAR indirmeyin falan diyormuşum
Firewall Kurulumu
CentOS işletim sistemine sahip sunucularda default olarak "Firewalld" gelmektedir. Bununla bir yere kadar yani temel düzeyde bir koruma işlemleri gerçekleştirebilirsiniz diyebiliriz. Ek olarak, İP adresi atamayı ve FTP erişim açma konularını öğrenmenizi tavsiye ediyorum. Firewalld'ı kullanmak isterseniz aşağıdaki komutu uygulayabilirsiniz. Ayrıca donanımsal firewall çok pahalı demeden geçemeyeceğim.
► sudo systemctl start firewalld.service
Fail2Ban Kullanmak
Sunucumuza gelen DDOS saldırılarını engelleyen bir yazılım desek yanlış bir şey söylemeyiz sanırım. Fail2ban erişim kayırlarında tutulan logları sürekli olarak kontrol ederek, sıkça gelen(istekte bulunan) İP adreslerini hızlı bir şekilde engellemektedir. Bu şekilde hızlı işlem yapmasıyla beraber brute force veya ddos saldırılarını engelleyebiliyoruz. Tek başına belki iyi bir iş çıkaramaz , ancak firewall ve diğer yazılımlar ve donanımlar ile beraber kullanıldığı zaman etkili bir yazılım olacaktır. Yani fail2ban, gelen fazla istekleri sınırlandırmaktadır. CentOS için "EPEL" deposunu kurduktan sonra aşağıdaki gibi kurulum komutunu uyguluyoruz.
► yum install epel-release
► yum install fail2ban fail2ban-systemd
Gereksiz Servisleri Kapatmak
Sizin de bileceğiniz ve tahmin edeceğiniz üzere "değişiklik göstermekle beraber" sunucularda birçok servis veya hizmetler bulunmaktadır. Bunların sürekli olarak çalışması demek, sıkıntılı bir durum olabilir. Bu nedenden dolayı bu servislerin gereksiz olanlarını kapatmamız gerekmektedir. Bunun için aşağıdaki işlemleri gerçekleştirebilirsiniz.
► $ /sbin/chkconfig --list |grep '3:.o.n' CentOS ve bazı sunucularda bu komut sayesinde çalışan bütün servis ve hizmetleri görüntüleyebiliriz. Gereksiz olanları bulduktan sonra chkconfig servis_ismi off komutuyla servisi sonlandırıyoruz. "servis_ismi" yazılan kısma hangi servisi kapatmak istiyorsanız, o servisi yazınız.
Açık Portların Kontrolü
Mesela bilgisayar korsanları hedef bir web siteye sızmak istediğinde ne yapar? O sunucu üzerinde bulunan portları tarar ve açık port olup olmadığının kontrolünü sağlar. Açık port bulduğunda o port üzerinden erişim sağlamaya çalışır. Bu sebepten dolayı gereksiz servisleri sonlandırdığımız gibi bu açık portların hangi servisler tarafından kullanıldığını tespit etmeliyiz ve gereksiz olanları sonlandırmalıyız. Yukarıda bahsettiğim "Firiwalld" etkin ise burada izin verilen portları kontrol etmeniz ve buna göre güvenlik duvarında izin vermelisiniz.
Not: Gereksiz servisleri kapatmak başlığında yer alan /sbin/chkconfig --list |grep '3:.o.n' komutundaki "3:.o.n" kısmında noktalar bulunmamaktadır. Otomatik olarak emojiye çevrildiğinden dolayı nokta koyulmuştur.




