Skip to content

Day18

SSH & Web Server

Bu makale boyunca belirtildiği gibi, muhtemelen birçok uzaktaki Linux sunucusunu yönetiyorsunuz. Bu nedenle, uzak sunuculara olan bağlantınızın mümkün olduğunca güvenli olduğundan emin olmanız gerekecektir. Bu bölümde, herkesin bilmesi gereken SSH'nin temellerini ve uzak sistemlere güvenli bir tünel oluşturmanıza yardımcı olacak bazı konuları ele alacağız.

  • SSH ile bağlantı kurma.
  • Dosya transferi.
  • Özel anahtarınızı oluşturma.

SSH'a Giriş

  • Shell.
  • Bir Network protokolü.
  • Güvenli iletişim sağlar.
  • Herhangi bir Network hizmetini güvence altına alabilir.
  • Genellikle komut satırına uzaktan erişim için kullanılır.

Önceki günleri takip ettiyseniz, SSH'yi zaten kullandığımızı hatırlarsınız. Ancak, bu Vagrant aracılığıyla yapılandırılmış ve otomatikleştirilmiş olduğundan, sadece vagrant ssh komutunu çalıştırdık ve uzak sanal makineye erişim elde ettik.

Eğer uzaktaki makine sistemimizde değil de, örneğin bulutta veya yalnızca İnternet üzerinden erişilebilen bir veri merkezinde çalışıyorsa, sistemini yönetmek için güvenli bir erişim yöntemine ihtiyacımız olur.

Bu nedenle, kötü niyetli kişiler tarafından herhangi bir şeyin ele geçirilemeyeceği bir güvenli bir tünel sağlayan SSH protokolünden yararlanacağız.

Sunucu, her zaman çalışan ve belirli bir TCP portunda (22) dinleyen bir SSH sunucu servisine sahiptir.

Doğru kimlik bilgileri veya SSH anahtarıyla istemcimizi kullanarak sunucuya bağlanırsak, o sunuca erişim elde ederiz.

Sistemimize bir Bridge Network Adaptoru ekliyoruz.

VirtualBox üzerindeki sanal makinemizle bunu simüle edebilmek için sanal makineye bir Bridge Network Adaptoru eklememiz gerekmektedir.

Sanal makinenin kapalı olduğundan emin olun, VirtualBox içindeki makineye sağ tıklayın ve "Settings" seçeneğini seçin. Açılan yeni pencerede, "Network" seçeneğini seçin.

Şimdi makinenizi tekrar açın ve yerel makinenizde bir IP adresine sahip olacaksınız. Bununla ilgili olarak IP addr komutunu kullanarak doğrulama yapabilirsiniz.

SSH sunucusunun çalıştığını doğrulama

SSH'nin zaten makinenize yapılandırıldığını biliyoruz çünkü vagrant ile kullanıyorduk, ancak bunu doğrulayabiliriz.

sudo systemctl status ssh

Eğer sisteminizde SSH sunucusu yoksa, aşağıdaki komutu kullanarak yükleyebilirsiniz.

sudo apt install OpenSSH-server

Ardından, eğer bir güvenlik duvarı çalışıyorsa, SSH'nin güvenlik duvarı tarafından izin verildiğinden emin olmanız gerekmektedir. Örneğin, ufw adlı bir güvenlik duvarı kullanıyorsanız, aşağıdaki komutla protokolü etkinleştirmeniz gerekmektedir.

sudo ufw allow ssh
Sanal makinede, Vagrant ile otomatik olarak yapılandırdığımız için bu adıma gerek yok.

Remote Access(Uzak Erisim) - SSH Parolası

Şimdi SSH sunucumuzun gelen bağlantı istekleri için 22 numaralı portu dinlemesini sağladık ve köprü ağını ekledik. Windows'ta, putty veya başka bir SSH istemcisi kullanarak ana makinede, SSH'ye bağlanmak için sistemimize bağlanabiliriz.

Ardından, "Open" düğmesine tıklayın. Eğer bu IP adresi üzerinden ilk kez bu sisteme bağlanıyorsanız, aşağıdaki uyarıyı göreceksiniz. Bu sistemin bizim olduğunu biliyoruz, bu yüzden "Evet" seçeneğini seçebilirsiniz.

Şimdi kullanıcı adımızı (vagrant) ve şifremizi (default şifre - vagrant) girmemiz istenir. Sonra SSH istemcimizin (Putty) sanal makineye bağlandığını göreceksiniz.

Harika! Artık uzaktan istemcimizden sanal makinemize bağlandık ve sistemimizde komutlarımızı çalıştırabiliriz.

Başka bir Linux'tan ise doğrudan "ssh" komutunu kullanarak shelle erişebilirsiniz. Komut satırı aşağıdaki gibidir: "

ssh <nombre-usuario>@<IP-equipo-remoto>

Eğer sanal makinenin IP adresi 192.168.169.135 ise, aşağıdaki komutu kullanmamız gerekecektir:

ssh vagrant@192.168.169.135

Bize şifre soracak ve ardından SSH'nin otomatik sertifikasını kabul etmemizi isteyecektir.

Acceso remoto - SSH Anahtarı

Gördüğümüz yöntem, sistemlere hızlı ve kolay erişim sağlamanın bir yoludur, ancak hala kullanıcı adı ve şifre üzerine dayanmaktadır. Bu durumda, kötü niyetli bir aktör bu bilgilere ve sistemizin genel adresine veya IP'sine erişebilirse, güvenliğimiz tehlikeye girebilir. Bu zayıf noktayı azaltmak için SSH anahtarlarını kullanabiliriz.

SSH anahtarları, güvenilir bir cihaz olduğundan emin olmak için hem istemciye hem de sunucuya ait bir çift anahtar sağlar.

Bir anahtar oluşturmak kolaydır. Yerel makinenizde (Windows veya Linux'ta) aşağıdaki komutu kullanarak sertifikaları oluşturabilirsiniz.

ssh-keygen -t ed25519

Daha fazla ed25519 hakkında bilgi edinmek isterseniz arastırabilirsiniz kriptografi. Heyecan verici bir konu.

Bu noktada, SSH anahtarımızı Windows için C:\sers\micha/.ssh/ veya Linux için $HOME/.ssh dizininde oluşturduk ve sakladık.

Ancak bu anahtarı Linux sanal makineyle ilişkilendirmek için kopyalamamız gerekiyor. Bunun için kabukta ssh-copy-id vagrant@192.168.169.135 komutunu kullanabiliriz.

Windows'da Powershell'i kullanarak anahtarları oluşturabilirsiniz, ancak burada ssh-copy-id mevcut değildir. Windows'ta bunu yapmanın yolları vardır ve çevrimiçi küçük bir arama size alternatifleri gösterecektir, ancak biz Windows için kopyalamayı yapmak için git bash kullanacağız.

Şimdi, SSH anahtarlarımızla şifre gerektirmeyen bir bağlantı kurup kurmadığımızı test etmek için Powershell'e dönebiliriz. Bu, daha önce bahsettiğimiz komutu Linux istemcisinde kullanarak yapabilirsiniz.

ssh vagrant@192.168.169.135

Gerektiğinde bunu daha da güvenli hale getirebiliriz. Bir parola ifadesi kullanarak bunu sağlayabiliriz. Ayrıca, hiçbir şifre kullanılmamasını ve yalnızca SSH üzerinden anahtar çiftlerinin kabul edilmesini sağlayabiliriz. Bu, sanal makinenin aşağıdaki yapılandırma dosyasında yapılabilir.

sudo nano /etc/ssh/sshd_config

Yapılandırma dosyasında PasswordAuthentication yes şeklinde bir satır bulacaksınız. Bu satırın başında # işareti olacak şekilde yorumlanmış olacak. Yorum işaretini kaldırın ve yes ifadesini no ile değiştirin. Ardından SSH hizmetini yeniden yüklemek için aşağıdaki komutu kullanmanız gerekecek:

sudo systemctl reload sshd

Ve güvenliği artırdık. KonsKonfıgurasyon seviyelerine kadar daha da iyileştirilebilir, ancak başlamak için yeterli olanları yaptık.

Web Sunucu Yapılandırması

Linux oyun alanımız için Linux sanal makineye daha fazla özellik ekleyelim. Bir Apache web sunucusu ekleyerek yerel ağda görüntülenebilecek basit bir web sayfası barındırabiliriz. Unutmayın, bu web sayfası İnternet üzerinden erişilebilir olmayacak. Bu önerilmez, ancak yapılabilir. Ancak, burada bunu görmeyeceğiz. Ipucu.

Ayrıca bunu LAMP stack olarak da düşünebilirsiniz.

  • Linux Ilsetim Sistemi
  • Apache Web Server
  • MySQL Veritabanı
  • PHP

Apache2

Apache2, açık kaynaklı bir HTTP sunucusudur. Apache2'yi aşağıdaki komutu kullanarak kurabiliriz.

sudo apt-get install apache2

Apache2'nin başarıyla yüklendiğini doğrulamak için şu komutu çalıştırabilirsiniz:

sudo service apache2 restart

Ardından, SSH bölümünde gördüğümüz uzak makinenin ağ adresini kullanacağız. Bir tarayıcı açın ve adresi kontrol edin. Örnek olarak, adresimiz http://192.168.169.135/.

mySQL

MySQL, basit web sitemiz için verilerimizi depolayacağımız bir veritabanıdır. MySQL'i yüklemek için aşağıdaki komutu kullanmalıyız.

sudo apt-get install mysql-server

PHP

PHP, sunucu tarafında çalışan bir programlama dilidir. MySQL veritabanıyla etkileşimde bulunmak için PHP'yi kullanacağız. Son kurulum adımı, PHP ve bağımlılıklarını aşağıdaki komutu kullanarak yüklemektir.

sudo apt-get install php libapache2-mod-php php-mysql

Yapmak istediğimiz ilk yapılandırma değişikliği, Apache'nin index.html yerine index.php kullanmasını sağlamaktır.

Aşağıdaki komutu kullanacağız.

sudo nano /etc/apache2/mods-enabled/dir.conf
Ve listelemede index.php'yi listenin ilk öğesine taşıyacağız.

Apache2 hizmetini yeniden başlatıyoruz.

sudo systemctl restart apache2

Şimdi sistemimizin PHP için doğru şekilde yapılandırıldığını doğrulayalım. Aşağıdaki komutu kullanarak aşağıdaki dosyayı oluşturun, bu nano ile boş bir dosya açacaktır.

sudo nano /var/www/html/90Days.php

Daha sonra aşağıdaki metni belgeye kopyalayın ve öğrendiğimiz gibi, ctrl + x kullanarak çıkın ve dosyayı kaydedin.

<?php
phpinfo();
?>

Şimdi tekrar Linux MV'nin IP adresine, URL'nin sonuna eklenen 90Days.php ile gezin: http://192.168.169.135/90Days.php. PHP doğru şekilde yapılandırılmışsa aşağıdakine benzer bir şey görmelisiniz.

WordPress'in Kurulumu

Ardından, LAMP stack'imize WordPress kurulumu için bu rehberi takip ettim.

sudo mysql -u root -p
CREATE DATABASE wordpressdb;

CREATE USER 'admin-user'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON wordpressdb.* TO 'admin-user'@'localhost';

FLUSH PRIVILEGES;

EXIT;

sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip
sudo systemctl restart apache2

cd /var/www
sudo curl -O https://wordpress.org/latest.tar.gz
sudo tar -xvf latest.tar.gz

sudo rm latest.tar.gz
Bu noktada, ""Ubuntu üzerinde LAMP ile WordPress nasıl kurulur"" adlı makalenin 4. adımındasınız ve WordPress dizini için doğru izinlerin yerinde olduğundan emin olmak için adımları izlemeniz gerekecektir.

Bu içsel bir kurulum olduğu için bu adımda "güvenlik anahtarları oluşturmak" gerekli değildir. Adım 5'e gidin, bu adımda Apache yapılandırmasını WordPress'e değiştirmeniz gerekmektedir.

Eğer her şey düzgün şekilde yapılandırılmışsa, dahili ağ adresiniz üzerinden WordPress kurulumunu çalıştırabilirsiniz.

Kaynaklar

Gorusmek Uzere Gun 19.