Ubuntu 20.04/18.04 ve 16.04 ile İlk Sunucu Kurulumu


Bu eğitim, sunucunuzun güvenliğini ve güvenilirliğini artırmak için yeni kurulmuş bir Ubuntu sunucusunda yapılandırmanız gereken ilk temel adımlarda size rehberlik edecektir.

Bu konuda açıklanan yapılandırmalar, Ubuntu'nun çıplak bir sunucuya, özel bir sanal makineye veya sanal makineye kurulu olup olmadığına bakılmaksızın, temel işletim sistemi platformuna ilişkin olarak tüm Ubuntu sunucu sistemleri için neredeyse aynıdır. bir VPS genel bulutunda geliştirildi.

Gereksinimler

  • Ubuntu 20.04 Sunucu Kurulumu
  • Ubuntu 18.04 Sunucu Kurulumu
  • Ubuntu 16.04 Sunucu Kurulumu

Ubuntu Sistemini Güncelleyin ve Yükseltin

Ubuntu sunucusunun veya yeni dağıtılan Ubuntu VPS'nin yeni kurulumu durumunda dikkat etmeniz gereken ilk adım, sistemin ve aşağıdakiler gibi tüm sistem bileşenlerinin olduğundan emin olmaktır: çekirdek, apt paket yöneticisi ve kurulu diğer tüm paketler, en son yayımlanan sürümler ve güvenlik yamalarıyla günceldir.

Ubuntu sunucusunu güncellemek için, sunucunun konsoluna root ayrıcalıklarına sahip bir hesapla veya doğrudan root olarak giriş yapın ve aşağıdaki komutları çalıştırarak güncelleme ve yükseltme işlemini gerçekleştirin.

sudo apt update 

Update komutunu çalıştırdıktan sonra yükseltme işlemi için mevcut paket sayısını ve paket yükseltmelerini listelemek için kullanılan komutu göreceksiniz.

sudo apt list --upgradable

Yükseltme için mevcut paketlerin listesine baktıktan sonra, sistem yükseltme işlemini başlatmak için aşağıdaki komutu verin.

sudo apt upgrade

Yerel olarak indirilen tüm deb paketlerini ve diğer tüm apt-get önbelleklerini kaldırmak için aşağıdaki komutu uygulayın.

sudo apt autoremove
sudo apt clean

Ubuntu'da Yeni Hesap Oluşturun

Varsayılan olarak, bir güvenlik önlemi olarak Ubuntu'da kök hesap tamamen devre dışıdır. Sistemde yeni bir hesap oluşturmak için root ayrıcalıklarına sahip hesap kullanıcısı ile sisteme giriş yapın ve aşağıdaki komutla yeni bir hesap oluşturun.

Bu yeni hesaba sudo komutu aracılığıyla kök yetki ayrıcalıkları verilecek ve sistemdeki idari görevleri gerçekleştirmek için kullanılacaktır. Bu hesabı korumak için güçlü bir şifre oluşturduğunuzdan emin olun. Kullanıcı ayrıntılarını ve şifreyi ayarlamak için adduser istemini izleyin.

sudo adduser ubuntu_user

Bu hesap başka bir sistem yöneticisine atanacaksa aşağıdaki komutu vererek kullanıcının ilk giriş denemesinde şifresini değiştirmesini sağlayabilirsiniz.

sudo chage -d0 ubuntu_user

Şimdilik yeni eklenen kullanıcı, sudo yardımcı programı aracılığıyla yönetim görevlerini gerçekleştiremez. Bu yeni kullanıcı hesabına yönetici ayrıcalıkları vermek için aşağıdaki komutu vererek kullanıcıyı “sudo” sistem grubuna eklemelisiniz.

sudo usermod -a -G sudo ubuntu_user

Varsayılan olarak, "sudo" grubuna ait tüm kullanıcıların, sudo yardımcı programını kullanarak kök ayrıcalıklarıyla komutları yürütmesine izin verilir. Aşağıdaki örnekte gösterildiği gibi, yürütme için gereken komutu yazmadan önce Sudo komutunun kullanılması gerekir.

sudo apt install package_name

Sistemde oturum açarak ve sudo öneki apt update komutunu çalıştırarak yeni kullanıcıya verilen kök ayrıcalıklarının olup olmadığını test edin.

su - ubuntu_user
sudo apt update

Ubuntu'da Sistem Ana Bilgisayar Adını Yapılandırma

Genellikle makinenin ana bilgisayar adı, sistem kurulum işlemi sırasında veya VPS bulutta oluşturulduğunda ayarlanır. Ancak sunucunuzun hedefini daha iyi yansıtması veya nihai amacını daha iyi anlatabilmesi için makinenizin adını değiştirmelisiniz.

Büyük bir şirkette, veri merkezinin raflarındaki makinenin kolayca tanımlanması için makineler karmaşık adlandırma şemalarına göre adlandırılır. Örneğin, Ubuntu makineniz bir posta sunucusu çalıştıracaksa, makinenin adı bu gerçeği yansıtmalıdır ve makine ana bilgisayar adını örneğin mx01.alanadim.lan olarak ayarlayabilirsiniz.

Makinenizin ana bilgisayar adı hakkındaki ayrıntıları göstermek için aşağıdaki komutu çalıştırın.

hostnamectl

Makinenizin adını değiştirmek için aşağıdaki alıntıda gösterildiği gibi makinenize yapılandıracağınız yeni adla hostnamectl komutunu verin.

sudo hostnamectl set-hostname tecmint

Sisteminizin yeni adını aşağıdaki komutlardan biriyle doğrulayın.

hostname
hostname -s
cat /etc/hostname 

Ubuntu'da Genel Anahtar Kimlik Doğrulaması ile SSH Kurulumu

Bir Ubuntu sunucusunun sistem güvenlik derecesini arttırmak için yerel bir hesap için SSH ortak anahtar kimlik doğrulamasını ayarlamanız gerekir. 2048 bit gibi bir anahtar uzunluğunu belirten genel ve özel anahtar olan SSH Anahtar Çiftini oluşturmak için sunucu konsolunuzda aşağıdaki komutu yürütün.

SSH anahtarını kuracağınız kullanıcı ile sisteme giriş yaptığınızdan emin olun.

su - ubuntu_user
ssh-keygen -t RSA -b 2048

Anahtar oluşturulurken, anahtarın güvenliğini sağlamak için parola eklemeniz istenecektir. Görevleri SSH sunucusu aracılığıyla otomatikleştirmek istiyorsanız güçlü bir parola girebilir veya parolayı boş bırakmayı seçebilirsiniz.

SSH anahtarı oluşturulduktan sonra aşağıdaki komutu çalıştırarak ortak anahtarı uzak bir sunucuya kopyalayabilirsiniz. Genel anahtarı uzak SSH sunucusuna yüklemek için, uzak sunucuda oturum açmak için uygun izinlere ve kimlik bilgilerine sahip bir uzak kullanıcı hesabına ihtiyacınız olacaktır.

ssh-copy-id remote_user@remote_server

Genel anahtar kimlik doğrulama yöntemini kullanarak uzak sunucuda SSH aracılığıyla otomatik olarak oturum açabilmeniz gerekir. SSH ortak anahtar kimlik doğrulamasını kullanırken uzak kullanıcı şifresini eklemenize gerek kalmayacaktır.

Uzak sunucuda oturum açtıktan sonra, aşağıdaki ekran görüntüsünde gösterildiği gibi ssh uzaktan oturum açmış kullanıcıları listelemek için w command gibi komutları çalıştırmaya başlayabilirsiniz.

Uzak SSH oturumunu kapatmak için konsola çıkış yazın.

ssh remote_user@remote_server
w
exit

Anahtarı uzak bir SSH sunucusuna manuel olarak yüklemek amacıyla genel SSH anahtarınızın içeriğini görmek için aşağıdaki komutu verin.

cat ~/.ssh/id_rsa.pub

Ubuntu'da Güvenli SSH Sunucusu

SSH arka plan programının güvenliğini sağlamak için, varsayılan SSH bağlantı noktası numarasını 22'den 1024'ten yüksek rastgele bir bağlantı noktasına değiştirmeli ve kök hesaba uzaktan SSH erişimine izin vermemelisiniz. şifre veya anahtarı, SSH sunucusu ana yapılandırma dosyasını açarak aşağıdaki değişiklikleri yapın.

sudo vi /etc/ssh/sshd_config

Öncelikle yorum yapılan #Port22 satırını arayın ve altına yeni bir satır ekleyin (dinleme bağlantı noktası numarasını buna göre değiştirin):

Port 2345

Dosyayı kapatmayın, aşağı kaydırın ve #PermitRootLogin yes satırını arayın, satırın başındaki # işaretini (hashtag) kaldırarak satırın açıklamasını kaldırın ve satırı aşağıdaki alıntıda gösterildiği gibi görünecek şekilde değiştirin.

PermitRootLogin no

Daha sonra yeni ayarları uygulamak için SSH sunucusunu yeniden başlatın ve uzak bir makineden bu sunucuya yeni port numarası üzerinden kök hesapla giriş yapmayı deneyerek yapılandırmayı test edin. SSH üzerinden root hesaba erişim kısıtlanmalıdır.

sudo systemctl restart sshd

Ayrıca, SSH sunucusu için yeni dinleme bağlantı noktası numarasını göstermek amacıyla netstat veya ss komutunu çalıştırın ve çıkışı grep komutu aracılığıyla filtreleyin.

sudo ss -tlpn| grep ssh
sudo netstat -tlpn| grep ssh

Belirli bir süre işlem yapılmadığında, sunucunuzda kurulan tüm uzak SSH bağlantılarının bağlantısını otomatik olarak kesmek isteyebileceğiniz durumlar vardır.

Bu özelliği etkinleştirmek için TMOUT bash değişkenini hesabınızın .bashrc gizli dosyasına ekleyen ve bash değişkeninin adıyla yapılan her SSH bağlantısını zorlayan aşağıdaki komutu çalıştırın. 5 dakika boyunca herhangi bir işlem yapılmaması durumunda kullanıcının bağlantısı kesilecek veya sistemden çıkarılacaktır.

echo 'TMOUT=300' >> .bashrc

Değişkenin .bashrc dosyasının sonuna doğru şekilde eklenip eklenmediğini kontrol etmek için tail komutunu çalıştırın. Bundan sonra 5 dakika işlem yapılmaması durumunda sonraki tüm SSH bağlantıları otomatik olarak kapatılacaktır.

tail .bashrc

Aşağıdaki ekran görüntüsünde, ubuntu_user hesabı aracılığıyla drupal makineden Ubuntu sunucusuna yapılan uzak SSH oturumu zaman aşımına uğradı ve 5 dakika sonra otomatik olarak çıkış yapıldı.

Ubuntu Güvenlik Duvarı UFW'yi Yapılandırma

Sistemi ağ düzeyinde güvence altına almak için her sunucunun iyi yapılandırılmış bir güvenlik duvarına ihtiyacı vardır. Ubuntu sunucusu, sunucudaki iptables kurallarını yönetmek için UFW uygulamasını kullanır.

Aşağıdaki komutları vererek Ubuntu'daki UFW güvenlik duvarı uygulamasının durumunu kontrol edin.

sudo systemctl status ufw
sudo ufw status

Genellikle UFW güvenlik duvarı arka plan programı Ubuntu sunucusunda çalışır durumdadır ancak kurallar varsayılan olarak uygulanmaz. Sisteminizde UFW güvenlik duvarı politikasını etkinleştirmeden önce, öncelikle SSH trafiğinin değiştirilen SSH bağlantı noktası üzerinden güvenlik duvarından geçmesine izin verecek yeni bir kural eklemelisiniz. Aşağıdaki komut çalıştırılarak kural eklenebilir.

sudo ufw allow 2345/tcp

SSH trafiğine izin verdikten sonra aşağıdaki komutlarla UFW güvenlik duvarı uygulamasını etkinleştirip kontrol edebilirsiniz.

sudo ufw enable
sudo ufw status

Daha sonra sunucunuza yüklenen HTTP sunucusu, posta sunucusu veya diğer ağ hizmetleri gibi diğer ağ hizmetlerine yeni güvenlik duvarı kuralları eklemek için aşağıdaki güvenlik duvarı komut örneklerini kılavuz olarak kullanın.

sudo ufw allow http  #allow http traffic
sudo ufw allow proto tcp from any to any port 25,443  # allow https and smtp traffic

Tüm güvenlik duvarı kurallarını listelemek için aşağıdaki komutu çalıştırın.

sudo ufw status verbose

Ubuntu Sunucu Saatini Ayarlayın

Ubuntu sunucu saatini ve diğer ilgili zaman ayarlarını kontrol etmek veya sorgulamak için timedatectl komutunu argüman olmadan yürütün.

Sunucunuzun saat dilimi ayarlarını değiştirmek için öncelikle timedatectl komutunu list-timezones argümanıyla çalıştırarak mevcut tüm saat dilimlerini listeleyin ve ardından sisteminizin saat dilimini aşağıdaki alıntıda gösterildiği gibi ayarlayın.

sudo timedatectl 
sudo timedatectl list-timezones 
sudo timedatectl set-timezone Europe/Vienna

Yeni systemd-timesyncd systemd arka plan programı istemcisi, ağdaki sunucunuz için doğru bir zaman sağlamak ve zamanı daha üst zamanlı bir eş sunucuyla senkronize etmek için Ubuntu'da kullanılabilir.

Systemd'in bu yeni özelliğini uygulamak için systemd-timesyncd arka plan programı yapılandırma dosyasını değiştirin ve aşağıdaki dosya alıntısında gösterildiği gibi coğrafi olarak en yakın NTP sunucularını NTP bildirim satırına ekleyin:

sudo nano /etc/systemd/timesyncd.conf

timesyncd.conf dosyasına aşağıdaki yapılandırmayı ekleyin:

[Time]
NTP=0.pool.ntp.org 1.pool.ntp.org
FallbackNTP=ntp.ubuntu.com

Coğrafi olarak en yakın NTP sunucularınızı eklemek için aşağıdaki adresteki NTP havuzu proje sunucusu listesine bakın: http://www.pool.ntp.org/en/

Daha sonra, değişiklikleri yansıtmak için Systemd timesync arka plan programını yeniden başlatın ve aşağıdaki komutları çalıştırarak arka plan programının durumunu kontrol edin. Yeniden başlattıktan sonra arka plan programı, zamanı yeni ntp sunucusu eşiyle senkronize etmeye başlayacaktır.

sudo systemctl restart systemd-timesyncd.service 
sudo systemctl status systemd-timesyncd.service

Ubuntu'da Gereksiz Hizmetleri Devre Dışı Bırakın ve Kaldırın

Ubuntu sunucunuzda varsayılan olarak çalışır durumda olan tüm TCP ve UDP ağ hizmetlerinin bir listesini almak için ss veya netstat komutunu çalıştırın.

sudo netstat -tulpn
OR
sudo ss -tulpn

Ubuntu 16.10 sürümünden itibaren, varsayılan DNS çözümleyicisi artık netstat veya çıktısından anlaşıldığı üzere systemd-resolved hizmeti tarafından kontrol edilmektedir. >ss komutları.

Aşağıdaki komutu çalıştırarak systemd-resolved hizmet durumunu da kontrol etmelisiniz.

sudo systemctl status systemd-resolved.service

Systemd-çözümlenmiş hizmeti, tüm etkin ağ arayüzlerine bağlanır ve 53 ile 5355 TCP ve UDP bağlantı noktalarını dinler.

Bir üretim sunucusunda sistem çözümlemeli önbelleğe alma DNS arka plan programını çalıştırmak, kötü niyetli bilgisayar korsanlarının güvenli olmayan DNS sunucularına karşı gerçekleştirdiği çok sayıda DDOS saldırısı nedeniyle tehlikeli olabilir.

Bu hizmeti durdurmak ve devre dışı bırakmak için aşağıdaki komutları uygulayınız.

sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved

ss veya netstat komutunu vererek hizmetin durdurulduğunu ve devre dışı bırakıldığını doğrulayın. Systemd tarafından çözümlenen dinleme bağlantı noktaları, 53 ve 5355 TCP ve UDP, aşağıda gösterildiği gibi netstat veya ss komut çıkışında listelenmemelidir.

Ayrıca, sistemd tarafından çözümlenen tüm daemon hizmetlerini tamamen devre dışı bırakmak ve varsayılan /etc/resolv.conf dosyasını geri yüklemek için makineyi yeniden başlatmanız gerekir.

sudo ss -tulpn
sudo netstat -tulpn
sudo systemctl reboot

Bazı istenmeyen ağ hizmetlerinin sunucunuzda çalışmasını devre dışı bırakmış olsanız da, sisteminizde lxc işlemi ve snapd hizmeti gibi yüklü ve çalışan başka hizmetler de vardır. Bu hizmetler ps, top veya pstree komutları aracılığıyla kolaylıkla tespit edilebilir.

sudo ps aux
sudo top
sudo pstree

Sunucunuzda LXC konteyner sanallaştırmasını kullanmayacaksanız ya da Snap paket yöneticisi üzerinden paketlenen yazılımları kurmaya başlamayacaksanız aşağıdaki komutları vererek bu hizmetleri tamamen devre dışı bırakıp kaldırmalısınız.

sudo apt autoremove --purge lxc-common lxcfs
sudo apt autoremove --purge snapd

Bu kadar! Artık Ubuntu sunucusu, bir web sunucusu, bir veritabanı sunucusu, bir dosya paylaşım hizmeti veya diğer belirli uygulamaların kurulması ve yapılandırılması gibi özel ağ hizmetleri veya uygulamaları için gereken ek yazılımların yüklenmesi için hazırdır.