Bu yazıda , Linux sunucu üzerinde kısa bir güvenlik kontrolünün nasıl yapılacağını göreceğiz. Debian/Ubuntu özelinde örnekler verilmesine rağmen yazılanlar diğer Linux dağıtımlarında da kolaylıkla uygulanabilir.
1. Sunucunuzu güncelleyin
Sunucunuzun güvenliğini sağlamak için yapmanız gereken ilk şey, en son yamaları uygulayarak yerel depoları güncellemek ve işletim sistemini ve kurulu uygulamaları güncellemektir.
Ubuntu ve Debian’da:
$ sudo apt update && sudo apt upgrade -y
Fedora, CentOS veya RHEL’de:
$ sudo dnf upgrade
2. Yeni bir ayrıcalıklı kullanıcı hesabı oluşturun
Ardından, yeni bir kullanıcı hesabı oluşturun. Sunucunuzda asla root olarak oturum açmamalısınız . Bunun yerine, kendi hesabınızı (” <user> “) oluşturun, ona sudo hakları verin ve sunucunuzda oturum açmak için kullanın.
Yeni bir kullanıcı oluşturarak başlayın:
$ adduser <username>
Sudo grubunu ( -G ) kullanıcının grup üyeliğine ( -a ) ekleyerek yeni kullanıcı hesabınıza sudo hakları verin :
$ usermod -a -G sudo <username>
3. SSH anahtarınızı yükleyin
Yeni sunucunuzda oturum açmak için bir SSH anahtarı kullanabilirsiniz. Eğer önceden oluşturulmuş bir SSH anahtarınız varsa aşağıdaki komut ile sunucuya yükleyebilirsiniz.
$ ssh-copy-id <username>@ip_address
Artık parola girmenize gerek kalmadan yeni sunucunuzda oturum açabilirsiniz.
4. SSH’yi güvenli hale getirin
Ardından, şu üç değişikliği yapın:
- SSH şifre kimlik doğrulamasını devre dışı bırakın
- IPv4 veya IPv6’ya erişimi kısıtlayın
tercih ettiğiniz metin editörü ile / etc / ssh / sshd_config dosyasını açarak aşağıdaki satırları,
PasswordAuthentication yes
PermitRootLogin yes
altta bulunan satırlar ile değiştirin:
PasswordAuthentication no
PermitRootLogin no
Ardından, AddressFamily seçeneğini değiştirerek SSH hizmetini IPv4 veya IPv6 ile sınırlayın . Bunu yalnızca IPv4 kullanacak şekilde değiştirmek için (çoğu insan için uygun olması gerekir) şu değişikliği yapın:
AddressFamily inet
Değişikliklerinizi etkinleştirmek için SSH hizmetini yeniden başlatın. SSH sunucusunu yeniden başlatmadan önce sunucunuza iki etkin bağlantı kurmanın iyi bir fikir olduğunu unutmayın. Bu ekstra bağlantıya sahip olmak, yeniden başlatmanın yanlış gitmesi durumunda herhangi bir şeyi düzeltmenize izin verir.
Ubuntu’da:
$ sudo service sshd restart
Fedora veya CentOS veya Systemd kullanan herhangi bir şeyde:
$ sudo systemctl restart sshd
5. Bir güvenlik duvarını etkinleştirin
Şimdi bir güvenlik duvarı kurmanız, etkinleştirmeniz ve yalnızca sizin belirlediğiniz ağ trafiğine izin verecek şekilde yapılandırmanız gerekir. Komplike Olmayan Güvenlik Duvarı (UFW), bir güvenlik duvarını yapılandırma sürecini büyük ölçüde basitleştiren, iptables için kullanımı kolay bir arayüzdür .
UFW’yi şu şekilde yükleyebilirsiniz:
$ sudo apt install ufw
Varsayılan olarak, UFW tüm gelen bağlantıları reddeder ve tüm giden bağlantılara izin verir. Bu, sunucunuzdaki herhangi bir uygulamanın internete erişebileceği, ancak sunucunuza ulaşmaya çalışan hiçbir şeyin bağlanamayacağı anlamına gelir.
Öncelikle, SSH, HTTP ve HTTPS’ye erişimi etkinleştirerek oturum açabildiğinizden emin olun:
$ sudo ufw allow ssh
$ sudo ufw allow http
$ sudo ufw allow https
Ardından UFW’yi etkinleştirin:
$ sudo ufw enable
Hangi hizmetlere izin verildiğini ve reddedildiğini şu şekilde görebilirsiniz:
$ sudo ufw status
UFW’yi herhangi bir zamanda devre dışı bırakmak isterseniz, bunu yazarak yapabilirsiniz:
$ sudo ufw disable
Ayrıca zaten kurulu ve bazı dağıtımlara entegre edilmiş olan firewall-cmd’yi de kullanabilirsiniz .
6. Fail2ban’ı yükleyin
Fail2ban , tekrarlanan veya otomatikleştirilmiş saldırıları arayan sunucu günlüklerini inceleyen bir uygulamadır. Herhangi biri bulunursa, saldırganın IP adresini kalıcı olarak veya belirli bir süre için engellemek için güvenlik duvarını değiştirecektir.
Fail2ban’ı yazarak kurabilirsiniz:
$ sudo apt install fail2ban -y
Ardından, dahil edilen yapılandırma dosyasını kopyalayın:
$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Ve Fail2ban’ı yeniden başlatın:
$ sudo service fail2ban restart
Hepsi bu kadar. Yazılım, saldırıları arayan günlük dosyalarını sürekli olarak inceleyecektir. Bir süre sonra, uygulama yasaklanmış IP adreslerinin bir listesini oluşturacaktır. Bu listeyi, SSH servisinin mevcut durumunu şu şekilde talep ederek görüntüleyebilirsiniz:
$ sudo fail2ban-client status ssh
7. Kullanılmayan ağa yönelik hizmetleri kaldırın
Neredeyse tüm Linux sunucu işletim sistemleri, ağa yönelik birkaç hizmet etkinleştirilmiş olarak gelir. Ancak, kaldırmak isteyebileceğiniz birkaç hizmet olabilir. Ss komutunu kullanarak çalışan tüm ağ hizmetlerini görebilirsiniz :
$ sudo ss -atpu
Ss’nin verdiği çıktı, işletim sisteminize bağlı olarak farklılık gösterecektir. Bu, görebileceklerinizin bir örneğidir. SSH (sshd) ve Ngnix (nginx) hizmetlerinin dinlediğini ve bağlantıya hazır olduğunu gösterir:
tcp LISTEN 0 128 *:http *:* users:(("nginx",pid=22563,fd=7))
tcp LISTEN 0 128 *:ssh *:* users:(("sshd",pid=685,fd=3))
Kullanılmayan bir hizmeti nasıl kaldıracağınız, işletim sisteminize ve kullandığı paket yöneticisine bağlı olarak değişir.
Debian / Ubuntu’da kullanılmayan bir hizmeti kaldırmak için:
$ sudo apt purge <service_name>
Red Hat / CentOS’ta kullanılmayan bir hizmeti kaldırmak için:
$ sudo yum remove <service_name>
Çalışan hizmetleri doğrulamak için ss -atpu komutunu kullanabilirsiniz.
Yazının orijinalini buradan okuyabilirsiniz.
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.