CentOS 8 Üzerinde GVM 21.04 Kurulumu

Centos 8 Üzerinde GVM 21.04 Kurulumu sürecine başlamadan önce dikkat edilmesi gereken noktalara değinmekte fayda olacaktır. Kurulum root yetkisine sahip bir kullanıcı ve kurulum içerisinde yeni oluşturulacak “gvm” kullanıcısı üzerinden yapılacaktır. Daha önce GVM 11 (Geçerliliğini yitirdiğinden dolayı) olarak yayınlanmış yazı GVM 21.04 olarak güncellendi. Güncelleme içerisinde komutlar üzerinde de değişiklik yapılmıştır.

İlgili komut satırı hangi kullanıcı ile çalıştırılacaksa, kullanıcı komuttan bir önceki satırda vurgulu olarak (Root: veya GVM: olarak) belirtilecektir.

Eğer root olmayacaksanız, root olarak belirtilmiş komutların sudo ile çalıştırılması gerekecektir.

Ayrıca eski adıyla Openvas olan yazılım artık yoluna Greenbone Vulnerability Manager olarak devam ediyor ve makalenin ilerleyen kısımlarında kısaca gvm olarak ifade edilecektir.

Kurulum

Açıklama gereken kısımlarda tanımlar yapılırken; bazı başlıklar altında sadece komutlar olacaktır.

Python 3 Kurulumu

Root:

yum install -y python38

komutu ile Centos 8 üzerine python kurulumunu başlatıp tamamlıyoruz.

alternatives --config python

komutunu çalıştırıp 2 rakamını yazarak devam ediyoruz, tek seçenek var ise 1 seçilmelidir. Bu aşamadan sonra python bizim varsayılan uygulamamız olacaktır.

EPEL Repository Aktivasyonu

Root:

yum install -y epel-release

Centos-Powertools Repository Aktivasyonu

Root:

yum config-manager --set-enabled powertools

Bazı metinlerde PowerTools şeklinde de tanımlanıyor ama benim testimde belirtilen komut başarılı oldu.

Centos Development Tools Kurulumu

Root:

yum groupinstall -y "development tools"

Gerekli Centos Paketlerinin Yüklenmesi

Eğer minimal iso dosyası ile işletim sistemi kurulumu yaptıysanız; wget kurulumunu da bu yüklemeye dahil etmeniz gerekiyor.

Root:

yum install -y wget cmake glib2-devel zlib-devel gnutls-devel libuuid-devel libssh-devel libxml2-devel libgcrypt-devel openldap-devel popt-devel redis libical-devel openssl-devel hiredis-devel radcli-devel gpgme-devel libksba-devel doxygen libpcap-devel nodejs python3-polib libmicrohttpd-devel gnutls-utils python3-devel libpq-devel texinfo xmltoman nmap sshpass socat mingw32-gcc ncurses-devel python3-psutil python3-packaging python3-redis libnet-devel

Bu aşamadan sonra gerekli Python paketlerini de yüklememiz gerekiyor.

pip3 install redis psutil packaging setuptools-rust

Eğer komutlar tek satırda yüklenmez ise pip3 komutunu her bir paket için ayrıca çalıştırabilirsiniz.

Postgres Database Server Kurulumu

Root:

yum install -y postgresql-server postgresql-contrib postgresql-server-devel
/usr/bin/postgresql-setup --initdb
systemctl enable postgresql
systemctl start postgresql

Postgres Database Konfigürasyonu

Database server kurulumu tamamlandıktan sonra, yeni database yaratılıyor ve database server üzerinde kullanıcı oluşturuluyor. Bu kullanıcı sonraki adımda yaratılacak olan gvm kullanıcısından farklıdır.

Root:

sudo -Hiu postgres
createuser gvm
createdb -O gvm gvmd
psql gvmd
create role dba with superuser noinherit;
grant dba to gvm;
create extension "uuid-ossp";
create extension "pgcrypto";
\q
exit

systemctl restart postgresql

GVM Kütüphanelerinin Sistem Kurulumuna Eklenmesi

Root:

echo "/opt/gvm/lib" > /etc/ld.so.conf.d/gvm.conf
ldconfig

Ayrıcalıksız GVM Kullanıcısının Oluşturulması

Root:

useradd -r -d /opt/gvm -c "GVM (OpenVAS) User" -s /bin/bash gvm
mkdir /opt/gvm
mkdir /opt/gvm/src
chown -R gvm:gvm /opt/gvm

GVM Kurulum Yolunun Sisteme Tanıtılması

Yaptığımız bu işlemle GVM’e ait olan çalıştırılabilir komutların dosya yolunu göstermeden doğrudan işletim sistemi tarafından tanınmasını sağlıyoruz. nano (Pratik olduğu için ben nano’yu tercih ediyorum ve örnek boyunca nano kullanılacaktır.) ile ilgili dosyayı açtıktan sonra PATH ile başlayan satırı olduğu gibi ilgili dosyaya ekleyip, kaydedip çıkıyoruz.

Root:

nano /etc/environment

PATH=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/gvm/bin:/opt/gvm/sbin”

GVM Paketlerinin İndirilmesi ve Arşivden Çıkarılması

Buraya kadar işletim sistemini kurulum için hazırladık, bu başlıktan sonra GVM kurulum aşamasına giriş yapıyoruz. Makalenin yazımı sırasında en son stabil olan sürümler kullanılmıştır. Dilenirse yeni sürümler kontrol edilerek indirilecek dosyaların adları düzenlenebilir.

Bu aşamadan sonra ilk kez oluşturulan gvm kullanıcı üzerinden işlem yapmaya da başlıyoruz.

Root kullanıcısından ilgili kullanıcıya geçiş yapmak için:

su -l gvm

komutu kullanılabilir. Tekrar root kullanıcısına dönmek için:

exit

yeterli olacaktır. Kurulumun akışı sırasından sık sık bu geçişler tekrarlanacaktır.

GVM:

Eski paketlerin linkleri yeni sürüm ile değiştirilmiştir.

cd /opt/gvm/src
wget -O gvm-libs-21.4.0.tar.gz https://github.com/greenbone/gvm-libs/archive/v21.4.0.tar.gz
wget -O openvas-21.4.0.tar.gz https://github.com/greenbone/openvas/archive/v21.4.0.tar.gz
wget -O ospd-21.4.0.tar.gz https://github.com/greenbone/ospd/archive/v21.4.0.tar.gz
wget -O ospd-openvas-21.4.0.tar.gz https://github.com/greenbone/ospd-openvas/archive/v21.4.0.tar.gz
wget -O gvmd-21.4.0.tar.gz https://github.com/greenbone/gvmd/archive/v21.4.0.tar.gz
wget -O gsa-21.4.0.tar.gz https://github.com/greenbone/gsa/archive/v21.4.0.tar.gz
wget -O openvas-smb-21.4.0.tar.gz https://github.com/greenbone/openvas-smb/archive/v21.4.0.tar.gz

İndirilen dosyaları klasöre çıkarmak için aşağıdaki komut dizisi kullanılabilir. Komutların tamamı tek seferde kopyalanıp komut satırına eklenebilir. İşletim sistemi sırası gelen komutu otomatik olarak çalıştıracaktır.

cd /opt/gvm/src
tar xvfz gvm-libs-21.4.0.tar.gz
tar xvfz openvas-21.4.0.tar.gz
tar xvfz ospd-21.4.0.tar.gz
tar xvfz ospd-openvas-21.4.0.tar.gz
tar xvfz gvmd-21.4.0.tar.gz
tar xvfz gsa-21.4.0.tar.gz
tar xvfz openvas-smb-21.4.0.tar.gz

Dosyaların indirilmesi ve arşivden çıkarılması tamamlandıktan sonra elimizde açık kaynak olarak bulunan programın derlenmesi aşamasına geçiyoruz.

Build gvm-libs

GVM:

cd /opt/gvm/src
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig
cd gvm-libs-21.4.0
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/gvm
make
make doc
make install

Heimdall Kurulumu

Heimdall kurulumu openvas-smb servisinin devreye alınabilmesi için ara katman olarak kullanılmaktadır. Bu yüzden kurulumun bu aşamasında Heimdall kurulumu için araya girmiş oluyoruz.

Kurulum aşaması da biraz uzun sürebiliyor.

Root:

cd /usr/local/src
wget https://github.com/heimdal/heimdal/releases/download/heimdal-7.7.0/heimdal-7.7.0.tar.gz
tar xvfz heimdal-7.7.0.tar.gz
cd heimdal-7.7.0
./configure --enable-otp=no --prefix=/opt/heimdal
make
make install

ln -s /opt/heimdal/include /opt/heimdal/include/heimdal

Heimdall Kütüphanesinin İşletim Sistemine Tanıtılması

Root:

echo "/opt/heimdal/lib" > /etc/ld.so.conf.d/heimdal.conf
ldconfig

Heimdall kurulumu tamamlandıktan sonra openvas-smb derlemesine geçilebilir.

Build openvas-smb

GVM:

cd /opt/gvm/src
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:/opt/heimdal/lib/pkgconfig
cd openvas-smb-21.4.0
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/gvm
make
make install

Build scanner

Derlemeye geçmeden önce, kurulum aşamasında hata almamak için CMakeLists.txt dosyası üzerinde aşağıdaki değişikliği yapmak gerekiyor.

GVM:

nano /opt/gvm/src/openvas-scanner-21.4.0/CMakeLists.txt

nano ile dosyayı açtığınız alt kısımlara doğru aşağıdaki satırı bulup, açıklama satırı haline getirin:

#set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${COVERAGE_FLAGS}")

Değiştirilen satırın yerine:

set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Werror -Wno-error=deprecated-declarations")

üstteki satırı ekleyip dosyayı kaydedip çıkın.

Dosya düzenleme işlemi bittiğinde derleme aşamasına geçilebilir.

cd /opt/gvm/src
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig
cd openvas-scanner-21.4.0
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/gvm
make
make doc
make install

Redis Kurulumu

Yine gvm kurulumundan uzaklaşıyoruz ve bu defa da cache işlemleri için kullanılacak olan Redis kurulumu ve yapılandırması ile devam ediyoruz.

Aslında Redis sistem üzerinde zaten bulunuyor ama gvm ile entegre hale getirilmesi ve servisinin başlatılması gerekiyor.

Root:

cp /etc/redis.conf /etc/redis.conf.orig
cp /opt/gvm/srcopenvas-scanner-21.4.0/config/redis-openvas.conf /etc/redis.conf
chown redis /etc/redis.conf

gvm içerisinde bulunan Redis konfigürasyon şablonu ilgili klasöre kopyalandıktan sonra nano ile ilgili dosyada küçük bir değişiklik yapılması gerekiyor.

nano /etc/redis.conf

Dosya açıldıktan sonra unixsocket kısmına aşağıdaki satırlar eklenir. Tabi burada buna benzer bir satır olacağı için eski satırlar açıklama haline getirilebilir veya silinir.

unixsocket /var/run/redis/redis.sock
unixsocketperm 770

GVM:

echo "db_address=/var/run/redis/redis.sock" > /opt/gvm/etc/openvas/openvas.conf

Düzenlemiş olduğumuz dosyayı gvm konfigürasyon dosyasına da ekliyoruz.

Root:

systemctl enable redis
systemctl start redis

Bu satırlarla Redis aşaması tamamlanmış oluyor ama

systemctl status redis

komutu ile Redis servisinin durumunu kontrol etmekte fayda var.

Transparent Huge Page Devredışı Bırakma

Root:

nano /etc/systemd/system/disable-thp.service

nano ile yeni bir dosya açıp aşağıdaki satırları bu dosyaya kaydedip çıkıyoruz.

[Unit]
Description=Disable Transparent Huge Pages (THP)

[Service]
Type=simple
ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag"

[Install]
WantedBy=multi-user.target

Dosya hazırlandıktan sonra servis harekete geçirilir.

systemctl daemon-reload
systemctl start disable-thp
systemctl enable disable-thp

GVM Kullanıcısının Redis Grubuna Eklenmesi

Root:

usermod -aG redis gvm
systemctl restart redis

GVM Kullanıcısının Belirlenen Klasörlerde Şifresiz İşlem Yapması

Root:

visudo /etc/sudoers

Komutunu çalıştırdıktan sonra dosyadaki secure_path içeriği aşağıdaki gibi değiştirilip; dosyanın sonuna da diğer üç satır kopyalanmalıdır.

Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/opt/gvm/sbin"

#Allow the user running ospd-openvas, to launch openvas with root permissions
gvm ALL = NOPASSWD: /opt/gvm/sbin/openvas
gvm ALL = NOPASSWD: /opt/gvm/sbin/gsad

System Tuning Bits Düzenleme

Root:

echo "net.core.somaxconn = 1024" >> /etc/sysctl.conf
echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
sysctl -p
ldconfig

NVT Data Senkronizasyonu

GVM:

greenbone-nvt-sync

Bu komuttan sonra 25-30 dakika arası dinlenmeye çekilebilirsiniz. İşlem bittiğinde aşağıdaki komut ile kaç güncelleme yapıldığını görebilirsiniz. 60000 üzerinde bir sonuç almanız gerekiyor.

find /opt/gvm/var/lib/openvas/plugins | wc -l

vt info Güncellemesi

GVM:

openvas --update-vt-info

Build gvmd

Root:

ln -s /usr/include /usr/include/postgresql

GVM:

nano /opt/gvm/src/gvmd-21.4.0/CMakeLists.txt

Daha önce scanner derlemesinde yaptığımız gibi yine CMakeLists.txt dosyasında aşağıdaki düzenlemeyi yapmamız gerekiyor.

#set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -D_BSD_SOURCE -D_ISOC99_SOURCE -D_SVID_SOURCE -D_DEFAULT_SOURCE -D_FILE_OFFSET_BITS=64")

set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -lpq -D_BSD_SOURCE -D_ISOC99_SOURCE -D_SVID_SOURCE -D_DEFAULT_SOURCE -D_FILE_OFFSET_BITS=64")

Düzenlemenin ardından derlemeye geçilebilir.

cd /opt/gvm/src
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig
cd gvmd-21.4.0
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/gvm/ -DPostgreSQL_TYPE_INCLUDE_DIR=/usr/include/pgsql/server -DPostgreSQL_INCLUDE_DIR=/usr/include/pgsql/server -DPostgreSQL_LIBRARY=/usr/lib64/pgsql
make
make doc
make install

gsa İçin yarn Kurulumu

Root:

npm install -g yarn

Build gsa

GVM:

cd /opt/gvm/src
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig
cd gsa-21.4.0
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/gvm
make
make doc
make install

Kurulum tamamlandıktan sonra aşağıdaki komutlar ile güncellemeleri alıyoruz. Yine 15-20 dakika arası bir mola verebiliriz.

greenbone-scapdata-sync
greenbone-certdata-sync

greenbone-feed-sync --type GVMD_DATA
gvm-manage-certs -a

Build OSPd ve OSPd-Openvas

GVM:

mkdir -p /opt/gvm/lib/python3.8/site-packages

cd /opt/gvm/src
export PYTHONPATH=/opt/gvm/lib/python3.8/site-packages
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig
cd ospd-21.4.0
python3 setup.py install --prefix=/opt/gvm

cd /opt/gvm/src
export PYTHONPATH=/opt/gvm/lib/python3.8/site-packages
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig
cd ospd-openvas-21.4.0
python3 setup.py install --prefix=/opt/gvm

Bu aşamadan sonra gvm kurulum aşaması tamamlandı. Artık servis olarak cevap verebilmesi için gereken adımlara geçiyoruz.

Kurulum Script Ekleme

Sisteme yeni servisleri ekleyeceğimiz için işlemlerimize root olarak devam edip; nano ile 3 yeni dosya hazırlayıp aşağıdaki her bir scripti bu dosyalara kaydedeceğiz. Dosyalarda karışıklık olmasın diye çizgilerle ayrıldı. Kopyalama sırasında bu çizgiler dahil edilmeyecektir.

Root:

İlk dosya

nano /etc/systemd/system/ospd.service


[Unit]
Description=Job that runs the ospd-openvas daemon
Documentation=man:gvm
After=postgresql.service


[Service]
Environment=PATH=/opt/gvm/bin/ospd-scanner/bin:/opt/gvm/bin:/opt/gvm/sbin:/opt/gvm/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Environment=PYTHONPATH=/opt/gvm/lib/python3.8/site-packages
Type=simple
User=gvm
Group=gvm
WorkingDirectory=/opt/gvm
PIDFile=/opt/gvm/var/run/ospd-openvas.pid
ExecStart=/usr/bin/python3 /opt/gvm/bin/ospd-openvas --pid-file /opt/gvm/var/run/ospd-openvas.pid --unix-socket /opt/gvm/var/run/ospd.sock --log-file /opt/gvm/var/log/gvm/ospd-openvas.log --lock-file-dir /opt/gvm/var/run


[Install]
WantedBy=multi-user.target


İkinci dosya

nano /etc/systemd/system/gvmd.service


[Unit]
Description=Job that runs the gvm daemon
Documentation=man:gvm
After=ospd.service

[Service]
Type=forking
User=gvm
Group=gvm
PIDFile=/opt/gvm/var/run/gvmd.pid
WorkingDirectory=/opt/gvm
ExecStartPre=/bin/sleep 60
ExecStart=/opt/gvm/sbin/gvmd --osp-vt-update=/opt/gvm/var/run/ospd.sock

[Install]
WantedBy=multi-user.target


Son olarak da 3. dosyayı hazırlıyoruz.

nano /etc/systemd/system/gsad.service


[Unit]
Description=Job that runs the gsa daemon
Documentation=man:gsa
After=postgresql.service

[Service]
Type=forking
PIDFile=/opt/gvm/var/run/gsad.pid
WorkingDirectory=/opt/gvm
ExecStart=/opt/gvm/sbin/gsad --listen=0.0.0.0

[Install]
WantedBy=multi-user.target


PDF Raporları İçin Gerekli Kurulum Adımları

Root:

yum -y install texlive-collection-fontsrecommended texlive-collection-latexrecommended texlive-changepage texlive-titlesec
mkdir -p /usr/share/texlive/texmf-local/tex/latex/comment
cd /usr/share/texlive/texmf-local/tex/latex/comment
wget http://mirrors.ctan.org/macros/latex/contrib/comment/comment.sty
chmod 644 comment.sty
texhash

Güncellemeler İçin Crontab Job Yaratma

Crontab normalde root ile çalışır. Aşağıdaki adımlar ile gvm kullanıcısının da güncellemeleri yapmasını sağlıyoruz.

Root:

touch /etc/cron.allow
rm /etc/cron.deny
echo "gvm" > /etc/cron.allow

GVM:

crontab -e

Aşağıdaki satırları kopyalayıp, kaydedip çıkıyoruz.

0 21 * * * /opt/gvm/bin/greenbone-nvt-sync
0 22 * * * /opt/gvm/sbin/greenbone-certdata-sync
0 23 * * * /opt/gvm/sbin/greenbone-scapdata-sync

Bu aşamada süreler değiştirilebilir.

Servislerin Etkinleştirilmesi ve Başlatılması

systemctl daemon-reload
systemctl enable ospd
systemctl enable gvmd
systemctl enable gsad

systemctl start ospd
systemctl start gvmd
systemctl start gsad

Logları aşağıdaki komutlar yardımıyla inceleyebilirsiniz.

cat /opt/gvm/var/log/gvm/gsad.log
cat /opt/gvm/var/log/gvm/gvmd.log
cat /opt/gvm/var/log/gvm/openvas.log
cat /opt/gvm/var/log/gvm/ospd-openvas.log

Centos 8 Üzerinde GVM 21.04 Kurulumu için genellikle ospd servisi sorun çıkarabiliyor. Bununda en büyük sebebi Redis ile iletişime geçememesinden kaynaklanıyor. Böylesi bir durumda her iki servisinde eş zamanlı kontrol edilmesi gerekebilir. Eğer redis çalışmıyorsa konfigürasyonlar baştan yapılmalıdır. Bende bu makale öncesinde bir kaç defa başa dönmek zorunda kaldım. Eklenen komutlar doğru şekilde girildiğinde sorunsuz çalışıyorlar. Bazen tırnak işaretlerinden kaynaklı sorunlar olabiliyor.

Varsayılan Tarayıcının Düzenlenmesi

Bu aşamada oluşturduğum Openvas Scanner’ı varsayılan tarayıcı durumuna getiriyoruz.

GVM:

gvmd --get-scanners

Bir aksilik yok ise karşımıza iki adet scanner gelecektir. Bizim kullanacağımız Openvas Scanner dönen ID değerleri standart, bu yüzden aşağıdaki komut doğrudan kullanılabilir.

gvmd --modify-scanner=08b69003-5fc2-4037-a479-93b440211c73 --scanner-host=/opt/gvm/var/run/ospd.sock

Son olarak

gvmd --verify-scanner=08b69003-5fc2-4037-a479-93b440211c73

Openvas Scanner Version

Bu komut sonrasında dönen değer, Openvas Scanner’ın versiyon bilgisi ise kurulum sorunsuz tamamlanmış demektir. Eğer fail verdi ise ospd servisi çalışmıyor demektir.

Web Arayüzü için Kullanıcı Oluşturma

GVM:

gvmd --create-user admin
gvmd --user=admin --new-password=mypassword

–new-password olarak tanımlanan mypassword ibaresini değiştirmezseniz, parolanız “mypassword” olarak ayarlanacaktır.

https Erişimi için Firewall Kuralının Düzenlenmesi

Centos 8 Üzerinde GVM 21.04 Kurulumu sırasında bu işlemi yapmadıysanız web ara yüzüne erişimde sıkıntı yaşayabilirsiniz. Eğer isterseniz Firewall tamamıyla disable edilebilir ama ben bu yolu tercih etmedim. Aşağıdaki komutlar size erişim için gereken yolu açacaktır.

Root:

firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --reload
firewall-cmd --list-all

Son komut ile https erişimine izin verildiğini doğruladınız da aşağıdaki link ile ara yüze ulaşabilirsiniz.

https://IP_Adresi

Eğer Port Lists ve Scan Config Kısımları Boş Geliyorsa

Aşağıdaki komut ile var olan kullanıcının UUID bilgisi alınır.

gvmd --get-users --verbose

Belirlenen UUID aşağıdaki komutta USER_UUID ile değiştirilir ve komut çalıştırılır.


gvmd --modify-setting 78eceaec-3385-11ea-b237-28d24461215b --value USER_UUID

Son olarak; güncellemeler aşağıdaki komut ile yenilenirse, sorunun giderilebilir.

greenbone-nvt-sync

Bir sonraki yazıda görüşmek üzere…

Ufuk Yıldırım

Özellikle VMware vSphere, Microsoft Hyper-V sanallaştırma, Active Directory ve Microsoft Exchange Server teknolojileri üzerine çalışmaktadır. Bunun yanında veri depolama ve yedekleme, network, storage kurulumu alanlarında da danışmanlık ve kurulum desteği vermektedir.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

This site uses Akismet to reduce spam. Learn how your comment data is processed.