Ubuntu 16.04 ile Sunucu İlk Kurulumu: Güvenli ve Stabil Bir Başlangıç
Bir sunucunun ilk kurulumu, herhangi bir web uygulamasının, veritabanı sunucusunun veya diğer ağ hizmetlerinin temelini oluşturur. Bu süreç, sadece işletim sistemini kurmaktan çok daha fazlasını içerir; güvenlik, performans ve yönetilebilirlik açısından sağlam bir temel oluşturmayı hedefler. Ubuntu 16.04 LTS (Xenial Xerus), uzun süreli desteği (Long Term Support) ve geniş topluluk desteği sayesinde sunucu ortamlarında yaygın olarak tercih edilmiş bir sürümdür. Bu makale, Ubuntu 16.04 yüklü yeni bir sunucuyu güvenli, stabil ve yönetilebilir bir şekilde kullanıma hazırlamak için adım adım bir rehber sunmaktadır. Amaç, sunucunuzu potansiyel güvenlik tehditlerine karşı korurken, gelecekteki yapılandırmalar için sağlam bir zemin hazırlamaktır.
Neden Ubuntu 16.04?
Ubuntu 16.04, Nisan 2016’da piyasaya sürülen ve Nisan 2021’e kadar standart destek alan bir LTS sürümüdür. LTS sürümleri, uzun vadeli kararlılık ve güvenlik güncellemeleri sunarak kurumsal ve üretim ortamları için idealdir. Her ne kadar artık standart destek süresi dolmuş olsa da, bazı özel projeler veya legacy sistemler için hala kullanımda olabilmekte veya eğitim amaçlı olarak tercih edilebilmektedir. Bu sürüm, sade arayüzü, geniş paket depoları ve güçlü topluluk desteği ile öne çıkar.
Uzun Süreli Destek (LTS)
Ubuntu’nun LTS sürümleri, beş yıla kadar ücretsiz güvenlik ve bakım güncellemeleri sağlar. Bu, sunucu yöneticileri için büyük bir avantajdır, zira sistemlerini sık sık yükseltmek zorunda kalmadan uzun süre stabil bir şekilde çalıştırabilirler. 16.04, bu avantajı sunan güvenilir bir LTS sürümü olmuştur.
Geniş Topluluk Desteği
Ubuntu, dünya çapında milyonlarca kullanıcısı ve geliştiricisi olan büyük bir topluluğa sahiptir. Bu, herhangi bir sorunla karşılaştığınızda hızlıca yardım bulabileceğiniz anlamına gelir. Forumlar, belgeler ve çeşitli online kaynaklar, kurulum ve yapılandırma süreçlerinde karşılaşılabilecek zorlukların üstesinden gelmek için kapsamlı destek sunar.
Stabilite ve Güvenilirlik
Ubuntu, sunucu ortamlarında kararlılığı ve güvenilirliği ile tanınır. Titiz test süreçlerinden geçen paketler ve düzenli güvenlik güncellemeleri, sunucunuzun kesintisiz ve güvenli bir şekilde çalışmasını sağlar. Bu faktörler, özellikle kritik iş yükleri barındıran sunucular için hayati öneme sahiptir.
Sunucuya Bağlantı
Sunucunuzun ilk kurulumuna başlamadan önce, ona nasıl erişeceğinizi bilmeniz gerekir. Çoğu bulut sağlayıcı veya hosting hizmeti, size sunucunuzun IP adresini ve varsayılan root kullanıcısı için bir şifre veya SSH anahtarı sağlar. İlk bağlantı genellikle SSH (Secure Shell) protokolü üzerinden yapılır.
Windows Kullanıcıları İçin (PuTTY)
Windows kullanıcıları için en popüler SSH istemcisi PuTTY’dir. PuTTY’yi indirip kurduktan sonra, sunucunuzun IP adresini “Host Name (or IP address)” alanına girin ve “Open” butonuna tıklayın. Açılan terminal penceresinde, “login as:” komut isteminde root yazın ve Enter tuşuna basın. Ardından sunucunuzun root şifresini girmeniz istenecektir.
macOS ve Linux Kullanıcıları İçin (Terminal)
macOS ve Linux işletim sistemlerinde SSH istemcisi yerleşik olarak bulunur. Terminal uygulamasını açın ve aşağıdaki komutu kullanarak sunucunuza bağlanın:
ssh root@SUNUCU_IP_ADRESİ
Burada SUNUCU_IP_ADRESİ yerine sunucunuzun gerçek IP adresini yazmalısınız. İlk bağlantıda, sunucunun anahtar parmak izini kabul etmeniz istenebilir; yes yazarak devam edin. Ardından root şifrenizi girmeniz istenecektir.
Root Kullanıcısı ile İlk Bağlantı
İlk bağlantınızı her zaman root kullanıcısı ile yapmanız gerekir. root, Linux sistemlerindeki en yetkili kullanıcıdır ve sistem üzerinde tam kontrol sağlar. Ancak güvenlik nedeniyle, kalıcı olarak root kullanıcısı ile çalışmak önerilmez. Bu makalede, ilk bağlantıdan sonra daha az yetkili bir kullanıcı oluşturup onunla çalışmaya geçiş yapacağız.
İlk Güncelleme ve Yükseltme
Sunucunuza ilk kez bağlandıktan sonra yapmanız gereken ilk şey, kurulu tüm paketleri en son sürümlerine güncellemek ve yükseltmektir. Bu, sisteminizin en yeni güvenlik yamalarına ve hata düzeltmelerine sahip olmasını sağlar.
apt update ve apt upgrade Komutları
Aşağıdaki komutları sırasıyla çalıştırın:
sudo apt update
sudo apt upgrade -y
sudo apt update komutu, sisteminizin paket listelerini güncelleyerek mevcut paketlerin yeni sürümleri hakkında bilgi edinmesini sağlar. sudo apt upgrade -y komutu ise, indirilen yeni paket listelerine göre kurulu tüm paketleri yükseltir. -y bayrağı, tüm sorulara otomatik olarak “evet” yanıtı vererek yükseltme işlemini kesintisiz hale getirir. Bu işlem, sunucunuzun internet bağlantı hızına ve güncellenecek paket sayısına bağlı olarak biraz zaman alabilir.
Yeni Bir Kullanıcı Oluşturma
Güvenlik açısından, root kullanıcısı ile sürekli çalışmak önerilmez. root kullanıcısının her zaman tam yetkiye sahip olması, yanlış bir komutun ciddi sistem hasarlarına yol açmasına veya yetkisiz erişim durumunda tüm sistemin tehlikeye girmesine neden olabilir. Bu nedenle, günlük yönetim görevleri için daha az yetkili, ancak gerektiğinde sudo (superuser do) komutunu kullanarak yükseltilmiş yetkilere sahip olabilecek yeni bir kullanıcı oluşturmak en iyi uygulamadır.
adduser Komutu
Yeni bir kullanıcı oluşturmak için adduser komutunu kullanın:
sudo adduser KULLANICI_ADINIZ
Burada KULLANICI_ADINIZ yerine kendi istediğiniz kullanıcı adını yazmalısınız (örneğin, admin veya kendi adınız). Komutu çalıştırdıktan sonra, yeni kullanıcı için bir şifre belirlemeniz ve şifreyi tekrar girerek onaylamanız istenecektir. Güçlü bir şifre seçtiğinizden emin olun (büyük/küçük harfler, sayılar ve özel karakterler içeren, en az 12 karakterli). Ayrıca, kullanıcı hakkında ek bilgiler (ad, telefon numarası vb.) girmeniz istenecektir; bu bilgileri boş bırakmak için Enter tuşuna basabilirsiniz. Son olarak, girilen bilgilerin doğru olup olmadığını onaylamanız istenir; Y tuşuna basarak onaylayın.
Kullanıcıya Şifre Belirleme
adduser komutu, şifre belirleme işlemini otomatik olarak yapar. Ancak mevcut bir kullanıcının şifresini değiştirmek isterseniz passwd KULLANICI_ADINIZ komutunu kullanabilirsiniz.
SSH Anahtar Tabanlı Kimlik Doğrulama
Şifre tabanlı kimlik doğrulama, brute-force saldırılarına karşı savunmasız olabilir. SSH anahtar çiftleri kullanarak kimlik doğrulama, çok daha güvenli bir yöntemdir. Bu yöntem, bir genel (public) anahtar ve bir özel (private) anahtardan oluşur. Özel anahtar bilgisayarınızda güvenli bir şekilde saklanır, genel anahtar ise sunucuya yerleştirilir. Bağlantı kurulduğunda, sunucu özel anahtarınızın genel anahtarla eşleşip eşleşmediğini kontrol eder.
SSH Anahtar Çifti Oluşturma (Client Tarafında)
Öncelikle, yerel bilgisayarınızda (client) bir SSH anahtar çifti oluşturmanız gerekir. Terminal veya komut istemcisini açın ve aşağıdaki komutu çalıştırın:
ssh-keygen -t rsa -b 4096
Bu komut, 4096 bitlik RSA algoritması kullanarak bir anahtar çifti oluşturur. Komut, anahtarların nereye kaydedileceğini soracaktır (varsayılan /home/kullanıcı_adınız/.ssh/id_rsa genellikle uygundur). Ardından, özel anahtarınız için bir parola (passphrase) belirlemeniz istenecektir. Bu parola, özel anahtarınızın çalınması durumunda ek bir güvenlik katmanı sağlar; güçlü bir parola seçmeniz şiddetle tavsiye edilir.
Genel Anahtarı Sunucuya Kopyalama (ssh-copy-id veya Manuel)
Anahtar çiftini oluşturduktan sonra, genel anahtarınızı sunucuya kopyalamanız gerekir.
ssh-copy-id Kullanarak:
Bu, genel anahtarınızı sunucuya kopyalamanın en kolay yoludur:
ssh-copy-id KULLANICI_ADINIZ@SUNUCU_IP_ADRESİ
Komut sizden sunucudaki KULLANICI_ADINIZ için şifreyi isteyecektir. Şifreyi girdikten sonra, genel anahtarınız sunucudaki /home/KULLANICI_ADINIZ/.ssh/authorized_keys dosyasına eklenecektir.
Manuel Kopyalama:
Eğer ssh-copy-id kullanılamıyorsa, genel anahtarınızı manuel olarak kopyalayabilirsiniz. İlk olarak, yerel bilgisayarınızda genel anahtarınızın içeriğini görüntüleyin:
cat ~/.ssh/id_rsa.pub
Bu çıktıyı kopyalayın. Ardından, yeni oluşturduğunuz kullanıcı ile sunucuya bağlanın (şimdilik şifre ile):
ssh KULLANICI_ADINIZ@SUNUCU_IP_ADRESİ
Sunucuda, .ssh dizinini oluşturun ve izinlerini ayarlayın (eğer yoksa):
mkdir -p ~/.ssh
chmod 700 ~/.ssh
Şimdi, authorized_keys dosyasını oluşturun veya düzenleyin ve kopyaladığınız genel anahtarı içine yapıştırın:
nano ~/.ssh/authorized_keys
Kopyaladığınız anahtarı dosyaya yapıştırın, kaydedin (Ctrl+O) ve çıkın (Ctrl+X). Son olarak, authorized_keys dosyasının izinlerini ayarlayın:
chmod 600 ~/.ssh/authorized_keys
Artık yeni kullanıcınızla SSH anahtarınızla bağlanmayı deneyebilirsiniz:
ssh KULLANICI_ADINIZ@SUNUCU_IP_ADRESİ
Eğer her şey doğru yapıldıysa, şifre sormadan (veya özel anahtarınız için bir parola belirlediyseniz onu sorarak) sunucuya bağlanmalısınız.
Sudo Yetkilendirmesi
Yeni oluşturduğunuz kullanıcının, root yetkisi gerektiren komutları çalıştırabilmesi için sudo grubuna dahil edilmesi gerekir. Bu, kullanıcının gerektiğinde yönetici ayrıcalıklarıyla komutları çalıştırabilmesini sağlar.
usermod -aG sudo Komutu
Yeni kullanıcınızı sudo grubuna eklemek için aşağıdaki komutu çalıştırın (hala root olarak bağlıyken veya sudo yetkisi olan başka bir kullanıcıyla):
sudo usermod -aG sudo KULLANICI_ADINIZ
Bu komut, KULLANICI_ADINIZı sudo grubuna ekler. -aG bayrakları, kullanıcıyı belirtilen gruba eklerken, kullanıcının mevcut gruplarını korumasını sağlar.
sudo Kullanımını Test Etme
sudo yetkilerini test etmek için, yeni oluşturduğunuz kullanıcı ile sunucuya bağlanın ve aşağıdaki komutu çalıştırın:
sudo apt update
Bu komut sizden kendi kullanıcı şifrenizi isteyecektir (root şifresi değil). Şifrenizi doğru girdiğinizde, komut başarıyla çalışmalı ve paket listelerini güncellemelidir.
Güvenlik Duvarı Kurulumu (UFW)
Güvenlik duvarı (firewall), sunucunuza gelen ve giden ağ trafiğini kontrol ederek yetkisiz erişimi engeller. Ubuntu’da varsayılan olarak gelen ve giden tüm bağlantıları yönetmek için basit bir güvenlik duvarı arayüzü olan UFW (Uncomplicated Firewall) bulunur.
UFW Durumu Kontrolü
UFW’nin durumunu kontrol etmek için aşağıdaki komutu kullanın:
sudo ufw status
Varsayılan olarak UFW devre dışı olabilir.
SSH Portunu Açma
UFW’yi etkinleştirmeden önce, mevcut SSH bağlantınızın kesilmemesi için SSH portunu (varsayılan olarak 22) açmanız çok önemlidir.
sudo ufw allow OpenSSH
Bu komut, SSH bağlantılarına izin veren bir kural ekler. Alternatif olarak, belirli bir port numarasını da belirtebilirsiniz: sudo ufw allow 22/tcp.
Diğer Gerekli Portları Açma (HTTP/HTTPS vb.)
Sunucunuzda çalıştıracağınız servislere göre ek portlar açmanız gerekebilir. Örneğin, bir web sunucusu (HTTP için 80, HTTPS için 443) kuracaksanız:
sudo ufw allow http
sudo ufw allow https
Veya port numaralarıyla:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
UFW’yi Etkinleştirme
Gerekli tüm kuralları ekledikten sonra UFW’yi etkinleştirebilirsiniz:
sudo ufw enable
Bu komut, UFW’yi başlatacak ve sistem başlangıcında otomatik olarak başlamasını sağlayacaktır. Etkinleştirdikten sonra, sudo ufw status komutu ile kuralları ve durumunu tekrar kontrol edebilirsiniz.
UFW Kurallarını Yönetme
* Bir kuralı silme: sudo ufw delete allow 80/tcp
* UFW’yi devre dışı bırakma: sudo ufw disable (Bu, tüm kuralları kaldırır ve güvenlik duvarını kapatır.)
* UFW’yi sıfırlama: sudo ufw reset (Tüm kuralları siler ve UFW’yi devre dışı bırakır.)
SSH Servisini Güvenli Hale Getirme
SSH anahtar tabanlı kimlik doğrulamasını yapılandırdıktan sonra, sunucunuzun güvenliğini daha da artırmak için SSH servisi ayarlarını değiştirebilirsiniz. Bu adımlar, yetkisiz erişim riskini önemli ölçüde azaltır.
SSH servisi yapılandırma dosyası /etc/ssh/sshd_config konumundadır. Bu dosyada değişiklik yapmadan önce, yedeğini almak iyi bir uygulamadır:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
Şimdi dosyayı düzenlemek için bir metin düzenleyici kullanın:
sudo nano /etc/ssh/sshd_config
Root Girişini Devre Dışı Bırakma
root kullanıcısının doğrudan SSH üzerinden giriş yapmasını engellemek, sunucunuzun güvenliğini artırır. root kullanıcısı ile giriş yapmaya çalışan otomatik bot saldırılarını engellemek için bu ayar önemlidir.
Dosyada PermitRootLogin satırını bulun ve değerini no olarak değiştirin (eğer yorum satırı ise # işaretini kaldırın):
PermitRootLogin no
Şifre Tabanlı Kimlik Doğrulamayı Devre Dışı Bırakma
SSH anahtar tabanlı kimlik doğrulamasını başarıyla yapılandırdıysanız, şifre tabanlı kimlik doğrulamayı devre dışı bırakarak ek bir güvenlik katmanı ekleyebilirsiniz. Bu, sadece anahtarınız olanların giriş yapabilmesini sağlar.
Dosyada PasswordAuthentication satırını bulun ve değerini no olarak değiştirin (eğer yorum satırı ise # işaretini kaldırın):
PasswordAuthentication no
SSH Portunu Değiştirme (İsteğe Bağlı ama Önerilir)
SSH’in varsayılan portu olan 22, saldırganlar tarafından sıklıkla hedeflenir. Portu farklı, standart olmayan bir sayıya (örneğin, 2022 veya 2222) değiştirmek, otomatik bot saldırılarını azaltmaya yardımcı olabilir. 1024’ten yüksek, kullanılmayan bir port numarası seçin.
Dosyada Port 22 satırını bulun ve farklı bir port numarasıyla değiştirin:
Port 2022
ÖNEMLİ: Portu değiştirdikten sonra, UFW güvenlik duvarında yeni port numarasını açmayı unutmayın ve eski 22 numaralı portu kapatın:
sudo ufw allow 2022/tcp
sudo ufw delete allow 22/tcp # veya sudo ufw delete allow OpenSSH
SSH Servisini Yeniden Başlatma
sshd_config dosyasında yaptığınız değişikliklerin etkili olması için SSH servisini yeniden başlatmanız gerekir:
sudo systemctl restart ssh
Servisi yeniden başlattıktan sonra, mevcut SSH bağlantınız kesilebilir. Yeni port numarasını kullanarak veya anahtar tabanlı kimlik doğrulama ile yeni bir bağlantı kurarak değişikliklerin başarılı olup olmadığını kontrol edin. Eğer bir sorun olursa, sunucuya konsol üzerinden (bulut sağlayıcınızın paneli aracılığıyla) bağlanarak değişiklikleri geri alabilirsiniz.
Zaman Dilimi Ayarları
Sunucunuzun doğru zaman dilimine sahip olması, log kayıtlarının doğru zaman damgalarına sahip olması, zamanlanmış görevlerin (cron job) düzgün çalışması ve diğer zaman bağımlı uygulamalar için kritik öneme sahiptir.
timedatectl veya dpkg-reconfigure tzdata
Ubuntu 16.04’te zaman dilimi ayarlarını yapmak için timedatectl veya dpkg-reconfigure tzdata komutlarını kullanabilirsiniz.
timedatectl Kullanarak:
Öncelikle mevcut zaman dilimini kontrol edin:
timedatectl
Kullanılabilir zaman dilimlerini listelemek için:
timedatectl list-timezones
Örneğin, İstanbul zaman dilimini ayarlamak için:
sudo timedatectl set-timezone Europe/Istanbul
dpkg-reconfigure tzdata Kullanarak:
Bu komut, interaktif bir arayüz sunar:
sudo dpkg-reconfigure tzdata
Açılan menüden coğrafi bölgenizi (örneğin, “Europe”) ve ardından şehrinizi (örneğin, “Istanbul”) seçerek zaman dilimini ayarlayabilirsiniz.
Ayarları yaptıktan sonra, timedatectl komutu ile tekrar kontrol ederek doğru zaman diliminin ayarlandığından emin olun.
Hostname Ayarları
Sunucunuzun bir ağdaki benzersiz tanımlayıcısı olan hostname (ana bilgisayar adı), hem yönetilebilirlik hem de bazı uygulamaların düzgün çalışması için önemlidir. Varsayılan olarak, bulut sağlayıcıları genellikle rastgele veya jenerik bir hostname atar.
hostnamectl veya /etc/hostname ve /etc/hosts
Hostname’i değiştirmek için hostnamectl komutunu veya manuel olarak yapılandırma dosyalarını düzenleyebilirsiniz.
hostnamectl Kullanarak:
Mevcut hostname’i kontrol edin:
hostnamectl
Yeni bir hostname ayarlamak için:
sudo hostnamectl set-hostname yeni_hostname_adresiniz
Manuel Olarak:
Hostname, /etc/hostname dosyasında saklanır. Bu dosyayı düzenleyin:
sudo nano /etc/hostname
Mevcut hostname’i silin ve yeni hostname’inizi yazın.
Ayrıca, /etc/hosts dosyasını da düzenlemeniz gerekebilir. Bu dosya, IP adreslerini hostname’lere eşler.
sudo nano /etc/hosts
Dosyada, 127.0.0.1 ile başlayan satırı bulun ve yeni hostname’inizi ekleyin:
127.0.0.1 localhost
127.0.1.1 yeni_hostname_adresiniz
Değişikliklerin etkili olması için sunucuyu yeniden başlatmanız veya hostname servisini yeniden yüklemeniz gerekebilir:
sudo systemctl restart hostname.service
Yeni bir SSH oturumu açarak hostname’in güncellendiğini kontrol edebilirsiniz.
Temel Paketlerin Kurulumu
Sunucu yönetimi ve günlük operasyonlar için bazı temel araçlara ve paketlere ihtiyacınız olacaktır. Bu paketler, sistem izleme, dosya indirme, versiyon kontrolü gibi görevleri kolaylaştırır.
Aşağıdaki komutu kullanarak yaygın olarak kullanılan bazı temel paketleri kurabilirsiniz:
sudo apt install -y curl wget git htop net-tools unzip zip
* curl ve wget: Web’den dosya indirmek veya HTTP istekleri yapmak için komut satırı araçlarıdır.
* git: Versiyon kontrol sistemi. Kod depolarıyla çalışmak için gereklidir.
* htop: Etkileşimli bir süreç görüntüleyici. top komutuna göre daha kullanıcı dostu ve görseldir.
* net-tools: Ağ yapılandırması ve sorun giderme için eski ama hala kullanışlı araçlar (örneğin ifconfig, netstat).
* unzip ve zip: Sıkıştırılmış dosyaları açmak ve oluşturmak için.
Bu paketler, çoğu sunucu kurulumu için iyi bir başlangıç noktası sağlar. İhtiyaçlarınıza göre ek paketler kurabilirsiniz.
Log Yönetimi ve İzleme
Log dosyaları, sunucunuzda neler olup bittiğini anlamak için hayati öneme sahiptir. Sistem hatalarından güvenlik olaylarına kadar her şey loglara kaydedilir. Etkili log yönetimi ve izleme, sorunları hızlı bir şekilde tespit etmenize ve gidermenize yardımcı olur.
rsyslog
Ubuntu’da varsayılan olarak rsyslog servisi çalışır ve sistem loglarını yönetir. rsyslog yapılandırma dosyası /etc/rsyslog.conf konumundadır ve çeşitli log dosyalarının nereye yazılacağını ve nasıl filtreleneceğini belirler. Önemli log dosyaları genellikle /var/log dizininde bulunur:
* /var/log/syslog: Genel sistem mesajları.
* /var/log/auth.log: Kimlik doğrulama ve yetkilendirme olayları (SSH girişleri vb.).
* /var/log/kern.log: Çekirdek (kernel) mesajları.
* /var/log/apt/history.log: APT paket yöneticisi işlemleri.
Bu dosyaları tail -f /var/log/syslog gibi komutlarla gerçek zamanlı olarak izleyebilirsiniz.
logrotate
Log dosyaları zamanla çok büyüyebilir ve disk alanını tüketebilir. logrotate aracı, log dosyalarını otomatik olarak döndürerek, sıkıştırarak ve eski logları silerek bu sorunu çözer. logrotate yapılandırma dosyaları /etc/logrotate.conf ve /etc/logrotate.d/ dizinindedir. Varsayılan olarak, çoğu sistem logu için logrotate yapılandırılmıştır, ancak kendi uygulamalarınız için ek yapılandırmalar eklemeniz gerekebilir.
journalctl (Ubuntu 16.04’te systemd ile entegre)
Ubuntu 16.04, systemd init sistemi ile birlikte gelir ve systemd-journald servisi logları merkezi bir şekilde yönetir. journalctl komutu, bu logları sorgulamak ve görüntülemek için güçlü bir araçtır.
* Tüm logları görüntüleme: journalctl
* Son 100 satırı görüntüleme: journalctl -n 100
* Belirli bir servisin loglarını görüntüleme: journalctl -u ssh.service
* Belirli bir zaman aralığındaki logları görüntüleme: journalctl --since "2023-01-01" --until "2023-01-02 03:00:00"
* Gerçek zamanlı log takibi: journalctl -f
journalctl kullanımı, sistem sorunlarını ayıklamak ve güvenlik olaylarını incelemek için çok faydalıdır.
Otomatik Güncellemeler
Güvenlik güncellemelerini düzenli olarak uygulamak, sunucunuzu bilinen güvenlik açıklarına karşı korumanın en önemli yollarından biridir. unattended-upgrades paketi, bu güncellemeleri otomatik olarak arka planda indirip kurarak bu süreci basitleştirir.
unattended-upgrades Kurulumu ve Yapılandırması
İlk olarak, unattended-upgrades paketini kurun:
sudo apt install -y unattended-upgrades
Ardından, otomatik güncellemeleri etkinleştirmek için bir yapılandırma dosyası oluşturun veya düzenleyin:
sudo dpkg-reconfigure -plow unattended-upgrades
Bu komut, otomatik güncellemelerin etkinleştirilip etkinleştirilmeyeceğini soracaktır. “Yes” seçeneğini seçerek etkinleştirin.
Daha ayrıntılı yapılandırma için /etc/apt/apt.conf.d/50unattended-upgrades dosyasını düzenleyebilirsiniz:
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Bu dosyada, hangi depoların otomatik olarak güncelleneceğini (örneğin, güvenlik güncellemeleri için "${distro_id}:${distro_codename}-security";) ve hangi paketlerin hariç tutulacağını belirleyebilirsiniz. Ayrıca, yeniden başlatma gerektiren güncellemelerden sonra sunucunun otomatik olarak yeniden başlatılıp başlatılmayacağını da yapılandırabilirsiniz:
// Automatically reboot if the computer will otherwise need a reboot.
Unattended-Upgrade::Automatic-Reboot "true";
// If automatic reboot is enabled and a user is logged in, don't reboot
// immediately but wait until the specified time.
Unattended-Upgrade::Automatic-Reboot-Time "02:00";
Bu ayarlar, sunucunuzun her zaman en son güvenlik yamalarına sahip olmasını sağlarken, hizmet kesintilerini minimumda tutmanıza yardımcı olur.
Yedekleme Stratejileri
Veri kaybı, bir sunucu yöneticisinin karşılaşabileceği en kötü senaryolardan biridir. Donanım arızası, yazılım hatası, yanlış yapılandırma veya siber saldırılar gibi birçok nedenle veri kaybı yaşanabilir. Düzenli ve güvenilir yedeklemeler, bu tür felaketlere karşı en iyi savunmadır.
Basit rsync Kullanımı
rsync (remote synchronization) aracı, dosyaları ve dizinleri yerel olarak veya ağ üzerinden eşitlemek için güçlü ve esnek bir araçtır. İlk yedeklemeden sonra sadece değişen dosyaları kopyalayarak bant genişliğinden tasarruf sağlar.
Örneğin, sunucunuzdaki /var/www/html dizinini yerel bilgisayarınıza yedeklemek için:
rsync -avz --delete KULLANICI_ADINIZ@SUNUCU_IP_ADRESİ:/var/www/html/ /home/yerel_kullanıcı/yedekler/web/
* -a: Arşiv modu (özyinelemeli, sembolik bağlantıları koru, izinleri koru, zaman damgalarını koru vb.).
* -v: Ayrıntılı çıktı.
* -z: Veri sıkıştırma.
* --delete: Kaynakta olmayan dosyaları hedefte sil.
Bu komutu cron ile zamanlayarak düzenli yedeklemeler yapabilirsiniz.
Bulut Tabanlı Yedekleme Çözümleri (Genel Bahis)
Birçok bulut sağlayıcısı (AWS, Google Cloud, Azure vb.), sunucularınızın anlık görüntülerini (snapshots) veya blok depolama yedekleme hizmetleri sunar. Bu çözümler, genellikle otomatik, ölçeklenebilir ve güvenilirdir. Üçüncü taraf yedekleme hizmetleri (örneğin, Bacula, Veeam, rdiff-backup gibi özel çözümler) de karmaşık yedekleme ihtiyaçları için kullanılabilir.
Önemli olan, bir yedekleme stratejisi belirlemek ve bu stratejiyi düzenli olarak test etmektir. Yedeklerinizin gerçekten geri yüklenebilir olduğundan emin olmak için ara sıra geri yükleme denemeleri yapmalısınız.
Sonuç
Ubuntu 16.04 ile sunucu ilk kurulumu, sadece işletim sistemini kurmaktan öte, güvenli, stabil ve yönetilebilir bir altyapı oluşturma sürecidir. Bu makalede ele alınan adımlar, yeni bir sunucuyu üretim ortamına hazır hale getirmek için temel bir yol haritası sunmaktadır. Yeni bir kullanıcı oluşturmaktan SSH güvenliğini sağlamaya, güvenlik duvarını yapılandırmaktan otomatik güncellemelere ve yedekleme stratejilerine kadar her adım, sunucunuzun uzun vadeli sağlığı ve güvenliği için kritik öneme sahiptir.
Unutmayın ki teknoloji sürekli gelişmektedir ve sunucu güvenliği dinamik bir alandır. Bu nedenle, sisteminizi düzenli olarak güncel tutmak, güvenlik yamalarını uygulamak ve en iyi güvenlik uygulamalarını takip etmek esastır. Bu rehber, sağlam bir temel atmanıza yardımcı olacak ve gelecekteki sunucu yönetimi maceralarınız için güvenli bir başlangıç noktası sağlayacaktır. Sunucunuzu kurduktan sonra, üzerine inşa edeceğiniz uygulamalar ve hizmetler için bu sağlam temelden faydalanacaksınız.
