Linux VPS Kurulumu
Herkese merhaba! Bizi internete taşıyan gemimiz yani sunucumuzu yapmaya başlıyoruz. Kaliteli ve sorunsuz bir sunucuya sahip olmak için, bazı ayarları yapmamız gerekiyor. Bu yazının sonunda (linux vps kurulumu); otomatik güncelleştirme, yeniden başlatma, güvenlik gibi hayati konular hakkında bilgi sahibi olacaksınız.
1.) Sunucu için hangi işletim sistemi? Kaç bit?
Kullanım kolaylığı, ücretsiz olması, az kaynak tüketmesi, LTS, yani uzun süreli güncelleştirme ( 5 yıl boyunca ) sebebiyle, Ubuntu Server 14.04 LTS‘yi kullanacağız. Kaç bit olduğuna gelince, 3 GB ram‘i geçecek bir proje oluşturacaksanız 64 bit, 3 GB ram bana yeter, olmazsa load balance ( yük dengeleme ) daha mantıklı ( bence de ) derseniz, 32 bit kullanmanızı öneriyorum. Ram, bir sunucu için gerçekten çok önemli.
Benim sunucumda 4 site barınıyor. 1 GB ram e sahibim. Ram tüketimi 700 MB’ı geçmiyor.
Popüler açık kaynaklı sunucu işletim sistemlerinin RAM kullanımı:
http://www.netkolik.org/rehberler/linux-surumleri-ram-kullanimi.html
2.) Sunucu lokasyonu (konum) belirleme
Sunucunuz, yayın yapacağınız ülkeye ne kadar yakın olursa, erişim hızı o kadar çok olur. Türkiye’ye en yakın Digital Ocean veri merkezi Hollanda ( Amsterdam ) olduğu için, tercihimizi Amsterdam yönünde yapıyoruz.
GÜNCELLEME: Digital Ocean, Almanya (Frankfurt) lokasyonlu veri merkeziyle hizmet sunmaya başladı! Lokasyon tercihiniz, Almanya olsun. Hem daha yakın hem de, Türkiye ile Almanya arasında omurga (backbone) hat sayesinde, çok daha hızlı erişim hızına sahip olacaksınız.
3.) Sunucuya erişimi güçlendirme & SSH Key oluşturma
Anlamadığım bir şekilde, SSH port numarası ve root kullanıcısını kuralına uygun değiştirdiğim halde, sunucuya erişimi kaybediyorum. Bu yüzden SSH port numarası değişimi ve root kullanıcısını iptal edip, root yetkisine sahip yeni kullanıcı oluşturmayı anlatmayacağım.
Güvenliğin ilk adımı, bu kısımda başlıyor. Sunucunuzu daha güvenli hale getirip, brute force ( tahminle şifre kırma ) ataklarını büyük ölçüde engelleyeceğiz.
3a.) Root kullanıcısına güçlü bir şifre belirleyelim
https://www.grc.com/passwords.htm
Yukarıdaki siteye girip, rastgele ve sadece size özel üretilmiş 63 haneli alfa-nümerik şifrenizi bir yere kaydedin. Sunucunuza SSH üzerinden eriştikten sonra, aşağıdaki komutu yazın ve şifrenizi 2 kere yapıştırın. ( Putty için sağ tık yapıştırma işlevi görür. )
passwd
3b.) SSH Key oluşturalım
Anahtar dosyası ( SSH Key ) oluşturmak için, öncelikle Puttygen programına ihtiyacımız var. Aşağıdaki linkten indirebilirsiniz.
http://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe
Programı çalıştırdıktan sonra, aşağıdaki adımları takip edin.
Elimizde bir public key ve bir tane de private key olacak. Public key kodunu sunucumuza yazdıktan sonra, public key dosyamız ile şifresiz root erişimi sağlayabileceğiz. Şimdi public key tanımlaması yapalım. Digital Ocean hesabınıza giriş yapın. SSH Keys menüsüne girin. Size ait public key kodunu yapıştırın ve kaydedin.
3c.) Parola ile erişimi devre dışı bırakalım. Sadece SSH Key ile sunucu erişimi mümkün olsun.
Bu adımı terminal üzerinden de yapabiliriz fakat, yeni başlayanlara kolay olsun diye, FTP üzerinden işimizi halledeceğiz. Herhangi bir FTP sunucusu üzerinden, aşağıdaki gibi bir bağlantı kurun.
IP Adresi: Sunucunuza ait ip
Kullanıcı Adı: root
Port No: 22
Şifre: root şifreniz
FileZilla ile bağlantı sorunu yaşarsanız, WinSCP programını öneririm. Aşağıdaki dizine ulaşın ve dosyayı düzenleyin.
/etc/ssh/sshd_config
Bu kısımda yapacağınız bir yanlışlık, sunucuya erişiminizi kesecektir. Sadece ihtiyacımız olan değerleri değiştireceğiz. Değerlerin başında # şeklinde tırnak varsa kaldıracağız. Sizdeki değerler INFO, yes, yes şeklinde olacaktır. Aşağıdaki değerleri bulun ve değiştirin.
LogLevel VERBOSE
ChallengeResponseAuthentication no
PasswordAuthentication no
4.) Sunucunuzu tepeden tırnağa güncelleyin, otomatik güncellemeyi açın.
Aşağıdaki komut, kernel ( çekirdek ) dahil işletim sistemini tamamen güncelleyecektir. Digital Ocean’ın 1 Gbit internet erişimi olduğu için, 5 dakika bile sürmez.
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
Çıkan uyarılara Y yazıp enterlayın.
Şimdi sunucumuz için otomatik güncelleme programını yükleyip kuralım. Digital Ocean sunucularında genelde yüklü geliyor. Yükleme başlamazsa, sizin sunucunuzda da yüklü demektir.
sudo apt-get install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades
Çıkan uyarı penceresine yes dediğiniz zaman, otomatik güncelleme açılır. ( Ok tuşları ile buton hareket eder. )
Sunucu saatimizi de güncelleyelim. Güvenlik ve güncelleştirme açısından, sunucu saatinin güncel olması çok önemlidir.
dpkg-reconfigure tzdata
Açılan pencereden, Europe > İstanbul yolunu izleyelim ve kaydedelim.
Son olarak, otomatik güncellemelerin çalışması için, sunucumuzun da belli aralıklarda yeniden başlatılması gerekiyor. Ayda 2 kere yeniden başlatmak, sunucu uptime değerini %99’un altına düşürmez. Kişisel bir sunucu için %99 çok iyi bir yüzdedir.
Aşağıdaki komut, sunucunuzu her 15 günde 1 kere, sabah 6’da yeniden başlatır. Bence sabah 6 herkes için çok ideal bir saat. Ziyaretçi ve veri kaybı yaşamazsınız.
sudo crontab -e
Açılan pencerenin en altına gelin ve aşağıdaki kodu ekleyin.
* 6 15 * * sudo reboot
CTRL + X ile metin editöründen çıkın. Yes deyip kaydedin.
GÜNCELLEME: Sunuculardaki saat senkronizasyonunu (saatin her zaman doğru olmasını sağlar) sağlamak için, ufak bir program daha kuracağız.
sudo apt-get install ntp
Sunucu her restart sonrası, otomatik olarak saat güncellemesi yapacak.
5.) SWAP ( Takas ) alanı ekleyin.
Sandığımdan da uzun bir yazı oldu. Fakat bu ayarları bitirdiğiniz zaman, İsviçre saati gibi sorunsuz çalışan bir sunucuya sahip olacaksınız. Sabredin ve dikkatli olun.
Swap alanı, sunucumuzun rami yetersiz olduğu zaman devreye giren, sunucuyu kilitlenmekten kurtaran, hard disk üzerine açacağımız bir alandır. Raminizin 2 katı olacak şekilde, swap alanı oluşturmalısınız. Daha azına veya daha fazlasına gerek yok. Benim sunucum 1 GB rame sahip olduğu için, 2 GB boyutunda swap alanı oluşturacağım.
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo sh -c 'echo "/swapfile none swap sw 0 0" >> /etc/fstab'
6.) Güvenlik duvarını ayarlayalım.
Hep duyarız bu güvenlik duvarını. Linux cephesinde güvenlik duvarı deyince akla iptables gelir. Hepimizin korkulu rüyasıdır. Kafa karıştırır. Bunun daha kolayını yapalım demişler ve UFW ortaya çıkmış. Canım UFW! Sunucumuzun dışarıya yayın yapmasına izin verip, dışarıdan sunucumuza gelen tüm bağlantıları reddedeceğiz. Sadece 2 port açık kalacak. Bir tanesi 22 nolu port. Bu port ile SSH üzerinden sunucumuzu yöneteceğiz. Diğeri, 80 numaralı port. Bu port da, web sitemizi yayınlayacak.
sudo ufw allow 22
sudo ufw allow 80
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable
Komutları girerken, çıkan uyarılara yes diyelim. Güvenlik duvarımız aktif. Tebrikler! Artık kale gibi bir sunucunuz var. Son olarak, bütün ayarların çalışması için, sunucumuzu yeniden başlatalım.
sudo reboot
Gerçekten uzun bir yazı oldu. Bütün ayarları sindire sindire okuyun, anlayın. Anladıktan sonra dikkatlice uygulayın. Bir sonraki yazımda, web stack ( istemci ) ve wordpress kurulumunu anlatacağım. Bu yazı kadar karmaşık olmayacak. Şahane bir script sayesinde, herşey otomatik kurulacak.