Kategori arşivi: Linux

linux sistemler hakkında sistem yönetimi, sorunlar, görüşler, kurulum örnekleri, konfigürasyonlar, performans ayarları, güvenlik ipuçları ve yapılandırma örnekleri

Debian 10 Hyper-V Daemons Kurulumu

Hyper-V sanallaştırma ortamı üzerinde debian 10 kullanılacaksa uygulama üzerinde hyper-v için bir takım servislerin çalışması gerekmektedir. Örneğin; makinelerin ip adreslerinin gözükmesi ve ölçümlerin tespiti için sisteme ekleme yapmamız gerekiyor. Bu bağlamda aşağıdaki paketin sisteme eklenmesi gerekmektedir. Hyper-V Daemons, Vmware üzerinde her zaman kurduğumuz Vmware Tools ile aynı işlevleri görmektedir.

apt install hyperv-daemons

Aynı şekilde eğer sistem debian tabanlı olan ubuntu ise aşağıdaki paket sisteme dahil edilmelidir.

apt install linux-image-virtual

Ardından sistemlerin yeniden başlatılmasına gerek yoktur.

Debian 10 Üzerine VNC Nasıl Kurulur

Bu makalede size, bir Debian 10 sisteminde VNC sunucusunun nasıl yükleneceği ve yapılandırılacağını anlatacağım. Ayrıca VNC sunucusuna nasıl güvenli bir şekilde bağlanacağınızı göstereceğim.

Virtual Network Computing (VNC), başka bir bilgisayarı uzaktan kontrol etmek için klavyenizi ve farenizi kullanmanıza olanak veren bir grafik masaüstü paylaşım sistemidir.

Masaüstü Ortamını Yükleme

Muhtemelen, Debian 10 sunucumuzda masaüstü ortamı yüklü olmayacaktır. İlk adımımız hafif bir masaüstü ortamı kurmak olacaktır.

Debian depolarında çeşitli masaüstü ortamları da bulunmaktadır. Ben, Xfce’yi tercih edilen masaüstü ortamımız olarak kullanacağım. Hızlı, kararlı ve hafif olduğu için Xfce’yi seviyorum, bu da uzak bir sunucuda kullanım için sistemi ideal bir hale getirecektir.

Debian sunucunuza Xfce’yi aşağıdaki komut aracılığı ile yükleyin

sudo apt install xterm xfce4 xfce4-goodies gnome-session xorg dbus-x11 x11-xserver-utils

Sisteminize bağlı olarak Xfce paketlerinin indirilmesi ve yüklenmesi biraz zaman alabilir.

VNC Sunucusunun Kurulumu

TightVNC, TigerVNC ve x11vnc gibi Debian depolarında çeşitli VNC sunucuları da bulunmaktadır. Her VNC sunucusunun, hız ve güvenlik açısından güçlü ve zayıf yönleri olduğunu hatırlatırım. Aktif olarak yüksek performanslı VNC sunucusu olan TigerVNC’yi kullanmayı tercih ettim. Debian sunucunuza TigerVNC’yi yüklemek için aşağıdaki adımları uygulayın.

sudo apt install tigervnc-standalone-server tigervnc-common

VNC sunucusu kurulduktan sonra, ilk yapılandırmayı oluşturmak ve parolayı tanımlamak için vncserver komutunu çalıştırın. Bu komutu çalıştırırken sudo kullanmamaya özen gösterin.

Parolayı girmeniz ve parolamayı onaylamanız istenecektir. Yalnızca parola oluşturmayı seçerseniz, kullanıcı VNC sunucusunu kullanarak işlemlerini fare ve klavye ile gerçekleştiremez.

You will require a password to access your desktops.

Password:
Verify:
Would you like to enter a view-only password (y/n)? n
/usr/bin/xauth:  file /home/mertcan/.Xauthority does not exist

New 'debian9.localdomain:1 (mertcan)' desktop at :1 on machine debian9.localdomain

Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/mertcan/.vnc/debian9.localdomain:1.log

Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/mertcan/.vnc/passwd :1 to connect to the VNC server.

Not: Yukarıdaki çıktıda hostname’den sonra :1 geldiğini göreceksiniz. Bu, vnc sunucusunun çalıştığı ekran bağlantı noktası numarasını gösterir. Bizim bu durumumuzda, sunucu 5901 numaralı TCP bağlantı noktasında çalışıyor.

Vncserver ile ikinci bir yapılandırma yaparak ekran oluşturursanız, bir sonraki boş bağlantı noktasında çalışacaktır. Buda doğal olarak :2 olacaktır.

vncserver komutunu ilk kez çalıştırdığınızda, parola dosyasını ~/.vnc dizininde oluşturacak ve depolayacaktır.

Dikkat edilmesi gereken nokta, VNC sunucuları ile çalışırken, x’in 5900 + x anlamına gelen bir ekran bağlantı noktası olmasıdır. Bir sonraki adıma ilerlemeden hemen önce VNC ekranını gene vncserver komutunu kullanarak -kill seçeneğini ve argüman olarak sunucu numarasını vererek VNC sunucusunu durdurun.

vncserver -kill :1

Çıktısı ise aşağıdaki gibi olacaktır.

Killing Xtigervnc process ID 8723... success!

VNC Sunucusunu Yapılandırın

Artık hem Xfce hem de TigerVNC’ni sunucuya yüklediğimize göre, TigerVNC’yi Xfce kullanacak şekilde yapılandırmamız gerekiyor. Bunu yapmak için ise aşağıdaki dosyayı oluşturuyoruz

nano ~/.vnc/xstartup

İçeriğini aşağıdaki satırları ekleyerek değiştiriyoruz.


#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4 

Bittiğinde, dosyayı kaydedin ve kapatın. TigerVNC sunucusunu başlattığınızda veya yeniden başlattığınızda yukarıdaki komut otomatik olarak çalıştırılacaktır. Unutmadan söyleyeyim ~/.vnc/xstartup dosyasının yürütme izinlerine de sahip olması gerekir.

chmod u+x ~/.vnc/xstartup

Systemd birim dosyası oluşturma

Systemd birim dosyası, VNC hizmetini gerektiğinde kolayca başlatmamıza, durdurmamıza ve yeniden başlatmamıza izin verecektir.

Metin düzenleyiciyi açın ve aşağıdaki yapılandırmayı kopyalayıp yapıştırın. Kullanıcı adınızla eşleştirmek için 7. satırdaki kullanıcı adını değiştirmeyi sakın unutmayın. Bu yarları yaparken sudo ayrıcalıklarını kullanmayı unutmayın

sudo nano /etc/systemd/system/vncserver@.service

İçeriğini aşağıdaki satırları ekleyerek değiştiriyoruz.


[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=simple
User=mertcan
PAMName=login
PIDFile=/home/%u/.vnc/%H%i.pid
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill :%i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver :%i -geometry 1280x720 -alwaysshared -fg
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

Dosyayı kaydedin ve kapatın.

Yeni bir vncserver@.service dosyasının aşağıdaki komutu çalıştırarak systemd’ye bildirin.

sudo systemctl daemon-reload

Ardından, servisi etkinleştirin

sudo systemctl enable vncserver@1.service

Not: @ İşaretinden sonraki 1 numara, VNC hizmetinin çalışacağı ekran bağlantı noktasını tanımlar. Bir önceki bölümde ele aldığımız gibi 1’i kullandığımızdan VNC sunucusu 5901 numaralı bağlantı noktasını dinleyecektir.

Ardından servisi çalıştırın

sudo systemctl start vncserver@1.service

Hizmetin başarıyla başlatıldığını doğrulamak isterseniz

sudo systemctl status vncserver@1.service

Aşağıdaki gibi bir çıktı görmeniz gerekmekte


vncserver@1.service - Remote desktop service (VNC)
   Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2018-10-02 02:14:43 PDT; 34s ago
  Process: 7061 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
 Main PID: 7271 (vncserver)
    Tasks: 0 (limit: 4915)
   CGroup: /system.slice/system-vncserver.slice/vncserver@1.service
           ‣ 7271 /usr/bin/perl /usr/bin/vncserver :1 -geometry 1280x720 -alwaysshared -fg

VNC sunucusuna bağlanma

VNC şifreli bir protokol değildir ve packet sniffing’e maruz kalabilir. Önerilen yaklaşım, yerel makinenizden 5901 numaralı bağlantı noktasındaki trafiği aynı bağlantı noktasındaki sunucuya güvenli bir şekilde yönlendirecek bir SSH tunnel oluşturmaktır.

Konu ile ilgili zamanında yayınladığım SSH Reverse Tunneling İle NAT Arkasındaki Sunucuya Bağlanmak adlı makaleme göz atabilirsiniz.

Linux/MacOS X için

Makinenizde Linux, macOS veya başka bir Unix tabanlı işletim sistemi çalıştırıyorsanız, aşağıdaki komutla kolayca SSH tunnel oluşturabilirsiniz

ssh -L 5901:127.0.0.1:5901 -N -f -l mertcan server-ip-address

Kullanıcı parolasını girmeniz istenecektir.

Windows için

Windows işletim sistemi kullanıyorsanız, PuTTY SSH istemcisini kullanarak SSH tunnel oluşturabilirsiniz.

putty tunnel gorsel1

Sol taraf da yer alan alandan Connection > SSH > Tunnels seçeneğini seçin ve aşağıdaki gibi ip ve port bilgilerinizi girin

putty tunnel gorsel2

Her seferinde bu bilgileri girmeniz gerekmeyecek şekilde ayarları kaydetmek için Sessions alanına geri dönün. Şimdi yapmanız gereken tek şey oluşturduğunuz bu oturum yapılandırmasını Kayıt etmek ve Open tıklayarak uzak sunucuya giriş yapmaktır.

Vncviewer kullanarak uzak masaüstüne bağlanma

Artık SSH tunnel kurduğunuza göre, Vncviewer’ınızı açıp, localhost’taki VNC sunucusuna bağlanabilirsiniz.

vnc baglantisi gorsel1

Ayrıca Google Chrome tarayıcınız için TigerVNC, TightVNC, RealVNC, UltraVNC gibi VNC görüntüleyicileri de kullanabilirsiniz.

Ubuntu 20.04 LTS Üzerine Hyper-V İçin linux-vm-tools Kurulumu

Hyper-V üzerinde sanallaştırma yaparak linux makina ayağa kaldırdıysanız desktopda oldukça kötü performans veriyor, çünkü rdp üzerinden değilde sanki KVM‘miş gibi çalışıyor haliyle gecikme oluyor ciddi anlamda tepkiler kötüleşiyor. Bunun için sistemde linux-vm-tools ve xrdp paketleri kurulu olmalı üstüne birde düzgün ayarlanmış olmalı.

Hala 20.04 LTS sürümüne aşağıdaki XRDP ayarlaması geçilmemiş. Düzenlenmiş olan betiği şöyle bırakıyorum.

#!/bin/bash

#
# This script is for Ubuntu 20.04 Focal Fossa to download and install XRDP+XORGXRDP via
# source.
#
# Major thanks to: http://c-nergy.be/blog/?p=11336 for the tips.
#

###############################################################################
# Use HWE kernel packages
#
HWE=""
#HWE="-hwe-18.04"

###############################################################################
# Update our machine to the latest code if we need to.
#

if [ "$(id -u)" -ne 0 ]; then
    echo 'This script must be run with root privileges' >&2
    exit 1
fi

apt update && apt upgrade -y

if [ -f /var/run/reboot-required ]; then
    echo "A reboot is required in order to proceed with the install." >&2
    echo "Please reboot and re-run this script to finish the install." >&2
    exit 1
fi

###############################################################################
# XRDP
#

# Install hv_kvp utils
apt install -y linux-tools-virtual${HWE}
apt install -y linux-cloud-tools-virtual${HWE}

# Install the xrdp service so we have the auto start behavior
apt install -y xrdp

systemctl stop xrdp
systemctl stop xrdp-sesman

# Configure the installed XRDP ini files.
# use vsock transport.
sed -i_orig -e 's/port=3389/port=vsock:\/\/-1:3389/g' /etc/xrdp/xrdp.ini
# use rdp security.
sed -i_orig -e 's/security_layer=negotiate/security_layer=rdp/g' /etc/xrdp/xrdp.ini
# remove encryption validation.
sed -i_orig -e 's/crypt_level=high/crypt_level=none/g' /etc/xrdp/xrdp.ini
# disable bitmap compression since its local its much faster
sed -i_orig -e 's/bitmap_compression=true/bitmap_compression=false/g' /etc/xrdp/xrdp.ini

# Add script to setup the ubuntu session properly
if [ ! -e /etc/xrdp/startubuntu.sh ]; then
cat >> /etc/xrdp/startubuntu.sh << EOF
#!/bin/sh
export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
exec /etc/xrdp/startwm.sh
EOF
chmod a+x /etc/xrdp/startubuntu.sh
fi

# use the script to setup the ubuntu session
sed -i_orig -e 's/startwm/startubuntu/g' /etc/xrdp/sesman.ini

# rename the redirected drives to 'shared-drives'
sed -i -e 's/FuseMountName=thinclient_drives/FuseMountName=shared-drives/g' /etc/xrdp/sesman.ini

# Changed the allowed_users
sed -i_orig -e 's/allowed_users=console/allowed_users=anybody/g' /etc/X11/Xwrapper.config

# Blacklist the vmw module
if [ ! -e /etc/modprobe.d/blacklist_vmw_vsock_vmci_transport.conf ]; then
cat >> /etc/modprobe.d/blacklist_vmw_vsock_vmci_transport.conf <<EOF
blacklist vmw_vsock_vmci_transport
EOF
fi

#Ensure hv_sock gets loaded
if [ ! -e /etc/modules-load.d/hv_sock.conf ]; then
echo "hv_sock" > /etc/modules-load.d/hv_sock.conf
fi

# Configure the policy xrdp session
cat > /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla <<EOF
[Allow Colord all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=no
ResultInactive=no
ResultActive=yes
EOF

# reconfigure the service
systemctl daemon-reload
systemctl start xrdp

#
# End XRDP
###############################################################################

echo "Install is complete."
echo "Reboot your machine to begin using XRDP."

Git üzerinden kurmak isteyenler için ise gereken komutların tamamını şöyle bırakıyorum.

sudo apt install git
git clone https://github.com/microsoft/linux-vm-tools.git
cd linux-vm-tools
git fetch --all
git pull origin pull/106/head:pull_106
git checkout pull_106
cd ubuntu/20.04/
sudo bash ./install.sh

Ayrıca bir takım iyileştirmeler için azure’da kullanılan ubuntu kernellerini indirip sisteminize dahil edebilirsiniz.

MISCONF Redis is configured to save RDB snapshots Hatası Ve Çözümü

Hızlandırma amaçlı veya verilerinizi tuttuğunuz Redis makinanızda aşağıdaki hatayı düzgün bir yapılandırma yapmamışsanız görebilirsiniz. Hatayı öncelikli olarak monitoring uygulamaları üzerinde görebilirsiniz.

ResponseError

MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option). Please check the Redis logs for details about the RDB error.

Size söylediği gibi loglara bakmanız gerekiyor ancak bu hatanın genel kaynağı disk kullanımınız olacaktır. Diskiniz ya dolmuş yada %99 üzerinde bir kullanımı vardır.

Aşağıdaki işlemi redis-cli aracılığı ile yapmanız sorununuzu çözecektir. Ancak kalıcı olarak bu gibi durumlar ile karşılaşmamak için veri setinize göre bellek ve disk ayarlamayı unutmayınız.

config set stop-writes-on-bgsave-error no

Ayrıca aşağıdaki işlemleri gerçekleştirmeniz sizin yararınıza olacaktır.

  • İşletim sisteminizde kullandığınız Redisi daima güncelleyin
  • sysctl vm.overcommit_memory=1 ile takas alanı önceliklendirin(acil durumlar için işinizi görecektir)
  • Daha fazla takas alanı oluşturun.(Zram İle Sıkıştırılmış Takas Alanı Nasıl Oluşturulur?)
  • Fazla disk kullanan uygulamalarda çalışma yapın.

Zram İle Sıkıştırılmış Takas Alanı Nasıl Oluşturulur?

Takas alanına yeni bir soluk getirecek ve diskin oluşturabileceği gecikmenin önüne geçmek amacıyla Zram ile karşınızdayız, kernel üzerinde yer alan modül sayesinde RAM üzerinde istediğiniz aksiyonları alabilecek, performanstan kayıp vermeden işlemler gerçekleştirebileceksiniz özellikle SWAP işlemlerinde.

Peki Bahsettiğimiz Bu Zram Nedir?

Ram üzerinde bir block oluşturarak sıkıştırılmış alanlar üzerinde işlem yapmanızı sağlar. Takas alanı olarak kullanabileceğiniz gibi geçici depolama alanı olarakta kullanabilir. Kendisi aslında bir kernel modülüdür ve pek çok sıkıştırma algoritmaları ile çalışabilir. ZRAM’ın bir dezavantajı var, sıkıştırma işlemi için bir miktar CPU kullanır bu genellikle %1’i geçmez ama kullanır, disk değişimi sırasındaki gecikmeyi yaşamamak için Swap yani takas alanlarında ZRAM kullanılabilir.

Zram İle Sıkıştırılmış Takas Alanı Nasıl Oluşturulur?

Kurulum yapılmasına gerek olmadığı için yapılandırmak amacıyla araç takımını sistemimize dahil ederek başlıyoruz işe,

apt install zram-tools

Ön tanımlı yapılandırma dosyası aşağıdaki gibi sizi karşılayacak aşağıdaki dosyada değişiklik yaparsanız ona göre zram alanları oluşacak.

root@ankara:~# cat /etc/default/zramswap
# Specifies amount of zram devices to create.
# By default, zramswap-start will use all available cores.
#CORES=1

# Specifies the amount of RAM that should be used for zram
# based on a percentage the total amount of available memory
#PERCENTAGE=10

# Specifies a static amount of RAM that should be used for
# the ZRAM devices, this is in MiB
#ALLOCATION=256

# Specifies the priority for the swap devices, see swapon(2)
# for more details.
#PRIORITY=100

Elle Zram Alanlarının Oluşturulması

Kernel modülünü dürtelim, ve sanal olmak üzere 4 adet alan yaratmasını sağlayalım.

modprobe zram num_devices=4

Gelelim swap alanımızı oluşturmaya, bizim CPU’muz 4 çekirdek olduğu için streams 4 olarak ayarlıyorum. Boyut olarak 10GB belirledim ve sıkıştırma algoritmasını lzo olarak belirledim.

Mevcut sıkıştırma algoritmaları için aşağıdaki komutu kullanabilirsiniz.

root@ankara:~# cat /sys/block/zram0/comp_algorithm
[lzo] lz4 lz4hc

Hali hazırda en son komutumuz şu şekilde olacak

zramctl --find --streams 4 --size 10GB --algorithm lzo

Sonuç olarak aşağıdaki gibi alanlarımız oluştu

root@ankara:~# zramctl 
NAME       ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram3 lzo           1.4G   4K   81B   12K       4 [SWAP]
/dev/zram2 lzo           1.4G   4K   81B   12K       4 [SWAP]
/dev/zram1 lzo           1.4G   4K   81B   12K       4 [SWAP]
/dev/zram0 lzo           1.4G   4K   81B   12K       4 [SWAP]

Takas(Swap) Alanı Neden Aktif Edilmeli?

RAM yani bellek yerine Linux’de takas alanı kullanmanın çalışan uygulamalarda performansı ciddi şekilde yavaşlatabileceğine dair söylentilerin olduğunu biliyoruz.

Bu gibi durumlarda sorulan en temel sorulardan bazıları ise şunla;

  • Günümüzde takas alanına gerek yok?
  • Takas alanı oluşturmasam ne olur?

bilinenin aksine yeterli ram yani bellek miktarına sahip olsanız bile, takas alanı etkinleştirildiğinde inanmayacaksınız ama performans avantajları var. Çünkü unix işletim sistemlerinde uygulamalar temelinde takas alanı olacak şekilde geliştirilir.

Hemen bir örnek ile bu duruma göz atalım.

root@ankara:~# free -h
              total        used        free      shared  buff/cache   available
Mem:          7.6Gi       2.0Gi       162Mi       119Mi       5.5Gi       5.2Gi
Swap:           9Gi       1.0Mi         9Gi

Yukarıda görmüş olduğunuz çıktıda 8GB ram bulunan bir sunucuda 10 GB kadar swap alanı ayırdığımı fark etmişsinizdir, hali hazırda kullanılan 1M bir takas alanı var. Peki bu kadar boş bellek varken niye hala takas alanını kullanıyor? Hangi İşlemin Takas Alanını Kullandığını Öğrenmek adlı makalemize göz atabilirsiniz.

Bazı arkadaşlar zaman zaman fark etmişlerdir swap alanı kullanan süreçler aslında tam olarak çalışmıyor(Nasıl laaa), sistemde kullanılabilir bellek olsa bile kimi zaman takas alanı ciddi oranlarda kullanılabilir. Millet bu durumdan korkup ya takas alanını kapatır yada boşaltmaya çalışır ancak bu durum unix işletim sistemleri için gayet normaldir.

Kernel aslında burada belleği daha efektif bir şekilde kullanmaya çalışır.

temsili baskı görseli, cache plessure
Photo by Niclas Gustafsson on Unsplash

Linux kernel yani çekirdek, neredeyse hiç kullanılmayan bellek alanlarını takas alanına taşıyarak, daha sık kullanılan bellek alanları için daha da fazla önbelleğe alınabilir alan yaratır ki size gün sonunda kullandığınız bellek yetsin. Özetle RAM kernel tarafından aslında temizlenir.

Yeteri Kadar Belleğe Sahip Sistemlerde Takas Alanının Avantajları

Yukarıda bahsettiğim durum kimi zaman içe ve dışa bellek alanlarını taşımaktan dar boğaza sebep olabilir bu noktada performans sorunu oluşabilir. (Çok düşük bir ihtimal) Ama sağlıklı bir unix sistemde yeterli oranda bellek olsa bile takas alanı oluşturmak elzemdir.

Peki bu avantajlarımız neler?

  • Sistemde bol miktarda kullanılabilir RAM olsa bile, kernel hiç kullanılmayan bellek alanını takas alanına taşır.(her zaman)
  • Bir süre etkin olmayan bellek alanlarını hep değiştirir ve sık kullanılan verileri önbellekte tutar.(mevcut yaptığınız işlemler hızlanır)
  • Performans sorunlarının, kesintilerin ve/veya yanıt sürenizin uzamasına takas alanınız neden oluyorsa tespit etmeniz kolaylaşır.
  • Bazı uygulamaların daha hızlı çalışmasına olanak tanınır.
  • Takas devre dışı bırakıldığı anda, performans sorunlarını hızlı bir şekilde fark edebilirsiniz.(makalemizin devamında anlatacağımız OOM Killer çalışır.)

Şimdi bazıları toplam ram boyutundan fazla takas alanı oluşturmayın der(sebebini bilmiyorum), bu noktada internette araştırmalarınızı yapın geçerli bir kanıt bulursanız toplam bellek miktarınızın üstüne çıkartmayın. Ancak Debian ve Ubuntu‘nun bu konu hakkında dediklerini dikkate almanızda fayda var.

swap memory, takas alanı nedir, takas alanı performansı nasıl arttırır
Photo by Harrison Broadbent on Unsplash

Sunucularda bu sebeple takas alanı oluşturma kararı bir kişinin fantazilerine göre değil üzerinde çalışacak uygulamanın kullandığı belleğe göre belirlenmesi şarttır. Swap(takas) alanı sağlıklı bir unix sunucusu için mutlaka gereklidir. Unix uygulamaları swap alanı kullanılacak şekilde tasarlanır ve geliştirilir.

Sorulması gereken sorular

  • Sistemin amacı ney ne için kullanılacak?
  • Üzerinde koşacak uygulama/uygulamalar ne kadar bellek tüketecek?
  • Koşacak uygulama ileride ne kadar büyüyebilir?
  • Kritik işlemler yürütülen bir sistem mi?
  • Dosya aktarmak amacıyla diskler çok fazla aktif bir şekilde kullanılıyor mu?

Kullanılabilir Bellek Azaldı Ama Hala Takas Alanı Boş Niye?

Şimdi gelelim yukarıda bahsettiğim durumdan bağımsız olarak yapılacakları anlatmaya, yeterli belleğe sahipsiniz ama sisteminizde herhangi bir uygulama sizin belirledikleriniz dışında çok fazla RAM tüketiyor diyelim.

Takas alanı herhangi bir ani bellek gereksinimi sırasında belirli bir süre tepki vermeden bekleyebilir bir süre belleğin düşmesini beklemesi olağandır, sizin gördüğünüzün aksine belleğinizin tamamı kullanılmıyor olabilir.

Bunlar dışında yeterli belleğiniz yoksa ve takas alanınızda yoksa o zaman vay halinize çalışan süreçleriniz bir bir kapatılmaya başlar.

oom killer temsili görsel, temsili katil görseli, process killer

Bellek arayışı içerisinde olan süreçler örneğin MySQL, MsSQL veya NGINX gibi süreçleri bir bakmışsınız anında kapatmış ve bellek ihtiyacını karşılamaya çalışmış evet bunu kernel son çare olarak yapar ama kesinlikle yapar. OOM(Out of memory) Killer denir buna ve yüksek bellek kullanan süreçler sırasıyla kapatılmaya başlar. İşte bu süreç devreye girerse takas alanına giriş yapmadığını görürsünüz.

Kernel Üzerinde “Cache Pressure” ve “Swappiness” Nasıl Yapılandırılır?

Şimdi sıra geldi “Cache Pressure” ve “Swappiness” ayarlamalarını yapmaya, yani özetle bellek yetersizliğinde politika belirleyeceğiz.

swappiness Kernel’in bellek alanını ne kadar agresif bir şekilde değiştireceğini tanımlamak için kullandığımız parametredir yani ne kadar düşük tutarsanız o oranla takas değişikliğini önlemiş olursunuz.

Yüksek bir değer verirseniz o kadar ağresif davranır ve takas alanı büyüyerek kullanılmaya devam eder, daha düşük değer verilmesi takas alanı kullanım miktarını azaltır. (varsayılan değer 60 dır, önerilen değerler de 1 ile 60 arasındadır.) Asla sıfır olarak ayarlamayın.

Özet: 10 yaparsanız belleğiniz yüzde 80, 90 aralığında kullanıldığında takas alanı devreye girer.

Ön tanımlı olarak sonucumuz

root@ankara:~# cat /proc/sys/vm/swappiness
60

Değişikliğimizi yapıyoruz.

sysctl -w vm.swappiness=10

Değişiklik yaptıktan sonra ise sonucumuz

root@ankara:~# cat /proc/sys/vm/swappiness
10

vfs_cache_pressure Kernel’in, dizin ve inode nesnelerinin önbelleğe alınması için sıklıkla kullanılır (varsayılan değer 100 dür, önerilen değer ise 50 ila 200 arasındadır.)

Ön tanımlı olarak sonucumuz

root@ankara:~# cat /proc/sys/vm/vfs_cache_pressure
100

Değişikliğimizi yapıyoruz.

sysctl -w vm.vfs_cache_pressure=50

Değişiklik yaptıktan sonra ise

root@ankara:~# cat /proc/sys/vm/vfs_cache_pressure
50

Bu değişiklikleri geçerli kılmak için /etc/sysctl.conf içerisine aşağıdaki satırlamayı eklemeyi unutmayın.

vm.swappiness=10
vm.vfs_cache_pressure=50

Windows ve Unix Sistemlerde takas alanı ne kadar olmalıdır?

Kişisel bilgisayarlarınızda eğer uyku modu kullanıyorsanız, işletim sistemi ve platform bağımsız olarak 64 GB belleğin olduğu bir sistemde, SWAP yani takas alanınız 72 GB ve üstü olmalıdır.

Eğer bu sistemde uyku modu kullanılmayacaksa 64 GB belleğin olduğu bir sistemde 16 GB takas alanı tanımlanması yeterlidir.

Linux Sunucu Güvenliği Bölüm 1: SSH Hardening

Twitter üzerinden bahsettiğim gibi Blue Team makalelerinin ilki olan SSH Hardening ile karşınızdayım. Paketinden yeni çıkmış bir sunucuyu kurarken ilk öncelikli olarak eriştiğimiz yer önemlidir, yollar eninde olmasa bile sonunda OpenSSH kardeşimizden geçer.

  1. Linux Sunucu Güvenliği Bölüm 1: SSH Hardening
  2. Linux Sunucu Güvenliği Bölüm 2: Kernel Hardening

Bir gün işleri büyüyen ve kullandığı hostingin yetmediğini gören engin(aşağıdaki çizgili)

engin gardasimiz uzgun

Bir bilişim işlerinden anlayan arkadaşına danışmış ve ufak çaplı bir sanal sunucu almış. Ancak güvenlik konusunda hiç bir bilgisi olmadığı ve arkadaşıda söylemediği için otomatik ssh brute-force saldırısı yapan botlar tarafından hacklenmiş.

Peki ne yapması gerekiyordu?

Host Anahtarlarının Değiştirilmesi

Ön tanımlı olarak SSH zaten güvenli başka bir şey yapılmasına gerek yok diye düşünmeyin sonuçta bu bir yazılım ve bu yazılımında kendince açıkları ve zayıf olduğu düşünülen yerler bulunuyor. Bunlardan ilki güncel kriptolojik teknikler kullanarak anahtarların yenilenmesi ve güncel teknolojinin kullanılmasıdır.

Yapacaklarımızın hemen öncesinde mevcut kullandığınız sshd_config dosyasının yedeğini almayı unutmayın. Yapacağınız yanlış bir hamle sunucu ile olan bağlantınızı kesebilir.

cp /etc/ssh/sshd_config /etc/ssh/backup.sshd_config
ShellScript

Kullandığınız eski anahtarları kaldırmalısınız, merak etmeyin bir sıkıntı yaşamazsınız.

cd /etc/ssh/
rm /etc/ssh/ssh_host_*
ShellScript

Hemen ardından yeni standartlara uygun anahtarları üretelim.

ssh-keygen -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key -N "" < /dev/null
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N "" < /dev/null
ShellScript

Ardından kriptografik açıdan zayıf olduğu düşünülen moduli.safe dosyası içerisinde gereken değişiklikleri yapıyoruz, zaten herhangi bir audit aracı ile kontrol ettiğiniz anda size Diffie Hellman hakkında gereken bilgiyi verecek ve güvensiz diyecektir çünkü bu değerlerin benzersiz yani uniq olması gerekmektedir ancak genelde bu ön tanımlı olarak gelir.

awk '$5 >= 3071' /etc/ssh/moduli > /etc/ssh/moduli.safe
mv /etc/ssh/moduli.safe /etc/ssh/moduli
ShellScript

Veya direk olarak aşağıdaki işlemleri yaparak sıfırdan oluşturabilirsiniz.

ssh-keygen -G moduli-2048.safe-b 2048
ssh-keygen -T moduli-2048 -f moduli-2048.safe
cp moduli-2048 /etc/ssh/moduli
rm moduli-2048
ShellScript

SSH Yapılandırmasının İyileştirilmesi

Şimdi bu değişikliklerin ikinci aşamasına geçiş yapıyoruz ve sshd_config dosyasını başlıyoruz düzenliyoruz böylelikle bir takım saldırılardan otomatik olarak kurtulmuş olacağız.

Önce SSH protokolümüzü değiştiriyoruz, ön tanımlı olarak 2 kullanılıyor ancak siz genede benim gibi sağlamcı olup düzenlemeyi yapın.

Protocol 2
ShellScript

Ardından SSH servisimizin kullandığı portu en çok kullanılan portların aralığından çıkıyoruz yani 1024 ile 65535 arasından bir seçim yapıyoruz.

port 56677
ShellScript

Ayrıca aşağıdaki portlardan herhangi birisinide kullanmayın, çünkü en fazla port taraması yapılan portların listesidir kendileri,

[+] Top 20 scanned ports:
      tcp 23    2760 packets
      tcp 3389  2561 packets
      tcp 8080  351 packets
      tcp 5555  331 packets
      tcp 81    253 packets
      tcp 8291  223 packets
      tcp 8545  217 packets
      tcp 8089  216 packets
      tcp 2323  212 packets
      tcp 1433  211 packets
      tcp 8443  178 packets
      tcp 8088  170 packets
      tcp 6379  110 packets
      tcp 5900  107 packets
      tcp 5038  104 packets
      tcp 9200  104 packets
      tcp 2375  103 packets

      udp 5060  599 packets
      udp 123   168 packets
      udp 1900  124 packets
      udp 161   102 packets
      udp 389   92 packets
      udp 5683  46 packets
      udp 1194  45 packets
      udp 11211 43 packets
      udp 111   42 packets
      udp 5632  41 packets
      udp 5353  40 packets
      udp 19    32 packets
      udp 1434  32 packets
      udp 3702  31 packets
      udp 3283  31 packets
      udp 623   29 packets
      udp 47808 27 packets
      udp 6881  27 packets
      udp 17    25 packets
ShellScript

Ayarladığımız host anahtalarını tanımlama sırası geldi, geriye kalan diğerlerini yapılandırma dosyanızdan lütfen çıkartın zaten artık aşağıdaki ikisini kullanacağız.

HostKey /etc/ssh/ssh_host_ed25519_key
HostKey /etc/ssh/ssh_host_rsa_key
ShellScript

Aynı anda kaç kişinin ssh üzerinden bağlanacağını ve bağlantılarda kaç kez giriş isteği yapabileceklerini belirliyoruz, yüksek bir değer vermenize gerek yok. Ayrıca bağlanan bu kişilerin sistemde ne kadar zaman geçireceğinide belirleyeceğiz ki hiç bir işlem yapılmadığında otomatik çıkış yapılsın.

MaxAuthTries 3
MaxSessions 1
ClientAliveInterval 300
ShellScript

Parola ile girişi kapatacağız ve klavye ile etkileşimli olan protokolü devre dışı bırakacağız, bunun temel sebeplerinden bir tanesi artık public key kullanacak ve ssh anahtarımız ile sisteme giriş yapacak olmamızdır. Key oluşturmak için SSH Key Oluşturma İşlemi makalesinden faydalanabilirsiniz.

PasswordAuthentication no
ChallengeResponseAuthentication no
ShellScript

Bağlantı başına anahtarlar oluşturmak için kullanılan anahtar değişim yöntemini, bağlantıdan sonra kullanılacak kriptografik anahtarı ve bir SSH sunucusunun bir SSH istemcisine kendi kimliğini doğrulaması için kabul edilen genel anahtar algoritmalarını tanımlıyoruz.

KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha256
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
MACs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,umac-128-etm@openssh.com
HostKeyAlgorithms ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com
ShellScript

HostKeyAlgorithms belirleme aşamasında ssh -Q key dan faydalanılır, destekleyen keyler bu şekilde bulunur ve eklenir.

root@ankara:/etc/ssh# ssh -Q key
ssh-ed25519
ssh-ed25519-cert-v01@openssh.com
ssh-rsa
ssh-dss
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
ssh-rsa-cert-v01@openssh.com
ssh-dss-cert-v01@openssh.com
ecdsa-sha2-nistp256-cert-v01@openssh.com
ecdsa-sha2-nistp384-cert-v01@openssh.com
ecdsa-sha2-nistp521-cert-v01@openssh.com
ShellScript

Kullanıcı Kısıtlamaları

Ön tanımlı olarak sisteme her kullanıcı girebilir, buna root yani kök kullanıcıda dahil bu istediğimiz bir şey değil ve değiştirmemiz gerekiyor ki işleri biraz daha zorlaştıralım, SSH üzerinden direk olarak root kullanıcı adıyla bağlantı yapılmasına izin vermiyoruz bundan böyle sudo kullanacağız ve kullanıcı tanımlamasınıda ayrıca yapıyoruz ki her kullanıcı bağlanmasın.

PermitRootLogin no
AllowUsers mertcangokgoz
ShellScript

Unutmayın bağlanmasını istediğiniz her kullanıcıyı tek tek tanımlamanız gerekiyor.

X11Forwarding ve AllowAgentForwarding Devre Dışı Bırakmak

CLI ile bağlantı kurduğumuz bir sistemde kullanıcı arayüzüne gerek yok bu sebeple yönlendirmesinede gerek yok, ayrıca güvenlik sebebiyle agentinde yönlendirmeyi kabul etmesine gerek yok tünelleme işlemi yapılmayacak sonuçta

X11Forwarding no
AllowAgentForwarding no
ShellScript

SSH Banner Devre Dışı Bırakmak

Ben bütün işleri debian üzerinde yaptığım için sistemdeki hiç bir ön tanımlı yazının sızmaması ve bağlantı sağlandığında hiç bir şey yazmasını istemiyorum ve bu yüzden kapatmayı tercih ediyorum.

Banner none
DebianBanner no
ShellScript

Bütün bu işleri yaptıktan sonra ssh-audit aracıyla test etmeyi unutmuyoruz.

pip install ssh-audit
ShellScript

ve çıkan sonuç misler gibi

ssh-audit nasıl kullanılır, ssh-audit ile openssh sunucu kontrolü

Unutmayın bu test sonucu sadece dışarıdan ssh bağlantılarındaki güvenliği test etmek amaçlıdır.

SSH Bağlantıları İçin 2FA Nasıl Aktif Edilir?

Google Authenticator PAM, uygulaması ve kullanımı diğer kimlik doğrulama modüllerinden daha kolay olduğu için bu kütüphane üzerinden yürüyeceğiz ve 2FA aktif edeceğiz. Pek fazla bilginiz yoksa aşağıdaki adımları yapmayınız. Yoksa sunucuya erişiminiz doğrudan kesilecektir.

Gerekli olan kütüphaneyi sistemimize dahil edelim

apt install libpam-google-authenticator
ShellScript

SSH yapılandırmanıza nano /etc/pam.d/sshd aşağıdaki değişiklikleri uygulayın.

auth required pam_google_authenticator.so nullok
auth required pam_permit.so
ShellScript

Ardından ana SSH yapılandırmanız da nano /etc/ssh/sshd_config içerisinde yer alan ChallengeResponseAuthentication değerini “yes” olarak değiştirin. Bu, SSH kardeşimize, biri sistemde oturum açmaya çalıştığında kimlik doğrulama kodu istemesini söyleyecek böylece 2FA girebileceğiz.

Kayıt edip çıkın ve ssh servisini systemctl restart sshd.service aracılığı ile yeniden başlatın. Yapılandırmamız SSH tarafında tamamlanıyor. Şimdi sırada google servisini yapılandırmak var. Bunun için terminalde google-authenticator komutunu çalıştırın ve adımları uygulayın. Kare kodu telefonunuzdan okutmayı unutmayın.

Do you want authentication tokens to be time-based (y/n) y

Do you want me to update your "/root/.google_authenticator" file? (y/n) y

Do you want to disallow multiple uses of the same authentication
token? This restricts you to one login about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks (y/n) y

By default, a new token is generated every 30 seconds by the mobile app.
In order to compensate for possible time-skew between the client and the server,
we allow an extra token before and after the current time. This allows for a
time skew of up to 30 seconds between authentication server and client. If you
experience problems with poor time synchronization, you can increase the window
from its default size of 3 permitted codes (one previous code, the current
code, the next code) to 17 permitted codes (the 8 previous codes, the current
code, and the 8 next codes). This will permit for a time skew of up to 4 minutes
between client and server.
Do you want to do so? (y/n) n

If the computer that you are logging into isn't hardened against brute-force
login attempts, you can enable rate-limiting for the authentication module.
By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting? (y/n) y
Plaintext

Artık işlem tamamlandı her SSH bağlantısı yaptığınız sırada karşınıza 2FA isteyen bir ekran gelecek. Google Authenticator veya Authy kullanabilirsiniz.

Dipnot: SSH Key ile auth olunan sunucularda yukarıdaki işlemlerin çalışmayacağını şimdiden hatırlatayım.

Debian 10 Üzerine Skype Nasıl Kurulur?

Covid-19 günlerinde yani pandemi sürecinde uzaktan çalışma ve toplantı olmazsa olmazımız haline geldi, bu durumda bazı şirketler Skype kullanıyor, Debian 10 kullanan arkadaşlarımızda bu toplantı ve meetinglerden uzak kalmamalı.

Kurulumu oldukça basit ve işimizi görür

wget https://go.skype.com/skypeforlinux-64.deb
dpkg -i skypeforlinux-64.deb

Kurulum internet hızınız ve bilgisayarınızın kaynaklarıyla doğru orantılı olarak 2-3 dk kadar sürebilir, İlk kurulumu tamamladıktan sonra güncelleme desteği almak için aşağıdaki işlemleri yapmanız yeterli olacaktır.

add-apt-repository "deb [arch=amd64] https://repo.skype.com/deb stable main"
apt update

Artık sisteminizde Skype kurulu ve istediğiniz gibi kullanmanız için hazır.

Debian 10 Üzerine Memcached Nasıl Kurulur?

Yüksek performanslı key-value bir veritabanı olan memcachedin Debian 10 üzerine kurulumunu yapıcaz ve kurulumdan hemen sonra gerektiği gibi yapılandırıcaz. Böylelikle production ortamında önbellekleme için in-memory veritabanımız ortaya çıkacak.

sudo apt update
sudo apt install memcached

Memcached kurulduğu andan itibaren çalışmaya başlayan bir uygulamadır ek olarak açmanıza gerek bulunmuyor.

Memcached Yapılandırma

Tüm yapılandırmaları /etc/memcached.conf dosyası üzerinden yapacağız. Örneğin dışarıdan erişmek veritabanına erişirken parola kullanmak veya diğer işlemler için bu yolu unutmayınız.

Uzak bağlantının kapatılması için aşağıdaki işlemi yapmayı unutmayınız. Dışarıya bağlantı sağlanacak ise bu ip adresini sunucu ip adresiniz ile değiştirebilirsiniz.

-l 127.0.0.1

Ancak unutmayınız, güvenlik sebebiyle dışarı açmak büyük risk taşır. Yönetim amacıyla açılacaksa sabit ip ile whitelisting yapmalı ve güvenliğini sağlamalıyız.

Ayarlamaların geçerli olabilmesi için servisi yeniden başlatın

systemctl restart memcached

Ardından netstat -tolpn komutu ile 11211 portundan servisin çalışıp çalışmadığına emin olun

root@debian:~# netstat -tolpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name     Timer
tcp        0      0 127.0.0.1:11211         0.0.0.0:*               LISTEN      21131/memcached      off (0.00/0/0)
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      530/sshd             off (0.00/0/0)
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      17396/exim4          off (0.00/0/0)
tcp6       0      0 :::22                   :::*                    LISTEN      530/sshd             off (0.00/0/0)
tcp6       0      0 ::1:25                  :::*                    LISTEN      17396/exim4          off (0.00/0/0)

Debian 10 Üzerine Visual Studio Code Nasıl Kurulur?

Açık kaynak kodlu ve ücretsiz bir editör olan Visual Studio Code‘yi yazılımcılardan pek kullanmayan yoktur diye düşünüyorum. Microsoftun belki de bize yapmış olduğu en güzel araçlardan bir tanesidir.

Bütünleşik git desteği, pek çok dili kolayca tamamlayabilmesi ve hafif bir uygulama olması benim hoşuma oldukça gidiyor.

Debian 10 üzerine ise kurulumu oldukça basit sadece bir kaç bağımlılığı bulunuyor.

apt update
apt install software-properties-common apt-transport-https curl

Ardından microsoftun açık anahtarını sistemimize dahil ediyoruz ve repoyu dahil ediyoruz.

curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"

Ardından tereyağından kıl çeker gibi kurulumu gerçekleştiriyoruz, editörümüzün tadını çıkartıyoruz.

sudo apt update
sudo apt install code

Linux Sunucularda USB Desteğinin Kaldırılması

Sunucu güvenliği olmazsa olmazımız bu noktada sunuculara fiziksel erişildiğinde başımız ağrımaması için USB portlarını sistem üzerinde kapatmalıyız.

Verimerkezi güvenliğini şirketler ne derece yapıyor belirli sertifikasyonlar(ISO 27001) ile bunlar sağlanıyor ve kontrol ediliyor evet ama eşşeği sağlam kazığa bağlamalı verilerimizin güvenliğini devam ettirmeliyiz.

Aşağıdaki yöntemi uygularken usb portlarına erişimimiz olmayacağını bilerek işlemleri yapın, sonra vay efendim makine bozuldu boot edemiyoruz demeyin.

Önce Modülleri karalisteye alıyoruz

nano /etc/modprobe.d/blacklist.conf
blacklist usb-storage

Modülü durduruyoruz, kaldırıyoruz ve kernel üzerinden siliyoruz.

modprobe -r usb-storage
mv -v /lib/modules/$(uname -r)/kernel/drivers/usb/storage/usb-storage.ko /root/

Ardından USBGuard yazılımının kurulumunu yapıyoruz ve servisi başlatıyoruz. Bu uygulama bizim makinemize programlanabilir USB‘lerin takılmasını engelleyecek

apt install usbguard
systemctl start usbguard
systemctl enable usbguard

Hadi hayırlı olsun, makinede artık USB‘ler çalışmaz.

Debian 10 ClamAV Kurulumu Ve Yapılandırılması

Yeni kurulan bir makinada özellikle antivirüs yazılımlarından destek alınması elzemdir, bu noktada ClamAV oldukça işe yarar. Kurulumu oldukça basit ve işlevseldir.

apt install clamav clamav-freshclam clamav-daemon
dpkg-reconfigure clamav-freshclam

Ardından aşağıdaki adımlar sırasıyla tamamlanır. Aşağıda güncelleme şekli cron olarak seçilir.

dts3gHD clamav freshclam update interval gorsel1

Güncelleme sunucusunun seçimi, aynen devam ediyoruz.

7lQcahF clamav freshclam update interval gorsel2

Günlük kaç defa güncelleneceğinin seçilmesi saatlik olarak yapmak için 24 yazınız.

qcwo8NT clamav freshclam interval gorsel3

Güncellemeden hemen sonra bildirim alınmasını ve kontrol edilmesini istiyoruz.

wWvntkI clamav freshclam interval gorsel4

Google Safebrowsing veritabanını sisteme dahil etmeyi ihmal etmiyoruz.

T5nsqlj clamav freshclam gorsel5

Ardından Diğer seçenekler “Yes” diyerek devam edilir, veritabanları güncellendiğinde anti-virüs hazır ve kullanımınıza sunulacaktır.

Tek yapmanız gereken servisi başlatmak

systemctl start clamav-freshclam
systemctl enable clamav-freshclam
systemctl status clamav-freshclam