Kategori arşivi: Debian

debian işletim sistemi hakkında bilgiler, debian yapılandırma örnekleri, debian güvenlik önlemleri ve performans iyileştirmeleri, güncel haberler

Debian 9 Temel Sunucu Ayarları

Sıfır bir debian kurduğumuzda temelde yaptığımız bir kaç değişikliğin olması gerekir. Bize ilerde kolaylık sağlayacak olan bu değişiklikleri genellikle temel sunucu ayarları olarak adlandırırız.

Kullanıcı oluşturma

# [stretch] isimli kullanıcı oluşturma
root@debian:~# adduser stretch 
Adding user `stretch' ...
Adding new group `stretch' (1001) ...
Adding new user `stretch' (1001) with group `stretch' ...
Creating home directory `/home/stretch' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:     # Kullanıcı parolası tanımlama
Retype new UNIX password:     # parola onayı
passwd: password updated successfully
Changing the user information for stretch
Enter the new value, or press ENTER for the default
		Full Name []:     # Bilgiler girilecek
		Room Number []:
		Work Phone []:
		Home Phone []:
		Other []:
Is the information correct? [Y/n] y
root@debian:~#

Kullanıcı yetkilendirme

root@debian:~# usermod -G adm stretch 
root@debian:~# nano /etc/pam.d/su
# admin grubuna eklemek için
auth   required   pam_wheel.so   group=adm

Tüm kullanıcılar için Alias tanımlama

root@debian:~# nano /etc/profile
# Bitime aşağıdakini ekle
alias ll='ls $LS_OPTIONS -l'
alias l='ls $LS_OPTIONS -lA'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# tekrar yükle
root@debian:~# source /etc/profile

Statik IP adresi ayarlama

root@debian:~# nano /etc/network/interfaces

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback
		# Birincil ağ kartı
		allow-hotplug ens3
		# DHCP ayarını kapatıyoruz
		#iface ens3 inet dhcp
		# birincil ağ kartında tanımladığımızı yazıyoruz.
		iface ens3 inet static
		# IP adresimiz
		address 10.0.0.30
		# network adresimiz
		network 10.0.0.0
		# subnet mask
		netmask 255.255.255.0
		# broadcast adresimiz
		broadcast 10.0.0.255
		# default gateway
		gateway 10.0.0.1
		# name server
		dns-nameservers 10.0.0.10
root@debian:~# reboot

IPv6 gerekli değilse kapatıyoruz.

root@debian:~# echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf 
root@debian:~# sysctl -p 
net.ipv6.conf.all.disable_ipv6 = 1

Servislerin durumunu kontrol etmek için

# Çalışan servislerin listesini gösterir.
root@debian:~# systemctl -t service 
UNIT                             LOAD   ACTIVE SUB     DESCRIPTION
console-setup.service            loaded active exited  Set console font and keym
cron.service                     loaded active running Regular background progra
dbus.service                     loaded active running D-Bus System Message Bus
getty@tty1.service               loaded active running Getty on tty1
getty@ttyS0.service              loaded active running Getty on ttyS0
ifup@ens3.service                loaded active exited  ifup for ens3
keyboard-setup.service           loaded active exited  Set the console keyboard
...
...
...
systemd-update-utmp.service      loaded active exited  Update UTMP about System
systemd-user-sessions.service    loaded active exited  Permit User Sessions
user@0.service                   loaded active running User Manager for UID 0

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

28 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

# Tüm servislerin listelenmesi
root@debian:~# systemctl list-unit-files -t service 
UNIT FILE                              STATE
apt-daily-upgrade.service              static
apt-daily.service                      static
autovt@.service                        enabled
bootlogd.service                       masked
bootlogs.service                       masked
bootmisc.service                       masked
...
...
...
urandom.service                        static
user@.service                          static
x11-common.service                     masked

121 unit files listed.

İhtiyacınız yoksa bir hizmet için otomatik başlatma ayarını durdurun ve KAPATIN.

root@debian:~# systemctl stop atd 
root@debian:~# systemctl disable atd

Modulleri güncelleştirme

# listeleri güncelliyoruz
root@debian:~# apt update 
Ign:1 http://ftp.de.debian.org/debian stretch InRelease
Get:2 http://ftp.de.debian.org/debian stretch-updates InRelease [88.5 kB]
Hit:3 http://ftp.de.debian.org/debian stretch Release
Get:5 http://security.debian.org/debian-security stretch/updates InRelease [62.9 kB]
Get:6 http://security.debian.org/debian-security stretch/updates/main Sources [24.0 kB]
Get:7 http://security.debian.org/debian-security stretch/updates/main amd64 Packages [43.7 kB]
Get:8 http://security.debian.org/debian-security stretch/updates/main Translation-en [19.0 kB]
Fetched 238 kB in 1s (148 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
6 packages can be upgraded. Run 'apt list --upgradable' to see them.

# sistemi güncelle
root@debian:~# apt -y upgrade

Bazı kullanıcılar ayrıcalıkları paylaşıyorsa kullanıcıların görevlerini ayırmak için Sudo’yu yapılandırın.

root@debian:~# apt -y install sudo

root@debian:~# visudo
# [stretch] kullanıcısı için tüm yetkilerin verilmesi
stretch   ALL=(ALL)   ALL
# [Ctrl + x] ile visudodan çıkış yapıyoruz.

Spesifik yetkilerin limitlendirilmesi

root@debian:~# visudo
# makinanın kapatılmasını engellemek
# Cmnd özelliğinden faydalanıyoruz.
Cmnd_Alias SHUTDOWN = /sbin/halt, /sbin/shutdown, \
/sbin/poweroff, /sbin/reboot, /sbin/init, /bin/systemctl
# [SHUTDOWN] ile makinenin kapatılmasını engelliyoruz.
stretch   ALL=(ALL)   ALL, !SHUTDOWN

Sudo için günlükler /var/log/auth.log içinde tutulur, ancak içinde birçok çeşit log vardır. Yani, bir dosyada sadece sudo kaydını tutmak isterseniz, aşağıdaki gibi bir satır eklemelisiniz.

root@debian:~# visudo
# satır sonuna ekliyoruz
Defaults syslog=local1

Log için tanımlamayı geçerli kılıyoruz.

root@debian:~# vi /etc/rsyslog.conf
# aşağıdaki eklemeyi yapıyoruz
local1.*                     /var/log/sudo.log

root@debian:~# systemctl restart rsyslog

Bash historyde kullanıcılar için kaydedilen komutların çalıştırıldıkları zaman bilgisinin gösterilmesi

nano /etc/profile.d/bash_history_date.sh
  export HISTTIMEFORMAT="%d/%m/%y %T " 

Host Yapılandırma

# Hostname'in FQDN (Fully Qualified Domain Name) olması gerekiyor. 
root@debian:~# hostname mail.mertcangokgoz.com
# ardından sunucu ip adresiyle alan adı tanımını yapıyoruz.
root@debian:~# nano /etc/hosts
   <sunucu_ip_adresi> mail.mertcangokgoz.com
# elle kontrol ediyoruz son durumu
root@debian:~# hostname -f 
10.0.0.2 mail.mertcangokgoz.com

Swappiness Ayarlanması

# gereksiz yere swapness aktif olmaması için
root@debian:~# nano /etc/sysctl.conf
   vm.swappiness = 1
# ayarın etkinleşmesi için
root@debian:~# sysctl -p

Debian 9 OpenJDK 9 Kurulumu

Repoda bulunmadığı için backports tarafının depolarını sisteme dahil edelim.

echo "deb http://ftp.debian.org/debian stretch-backports main" | \
      sudo tee --append /etc/apt/sources.list.d/stretch-backports.list > /dev/null

Paket listesini güncelleyelim

sudo apt-get update

Gereken paketleri kuralım

sudo apt-get install -t jessie-backports openjdk-9-jdk

Ön tanımlı java sürümünü değiştirelim. Eski sürümlerin sistemde bulunması dahilinde geçerlidir.

sudo update-java-alternatives -s java-1.9.0-openjdk-amd64

Debian 9 Üzerine R Nasıl Kurulur

R, istatistiksel ve grafik sunumunda uzmanlaşmış bilgi işlem çalışanları arasında popüler olan ve hızlı büyüyen açık kaynak kodlu bir programlama dili ve analiz ortamıdır. İstatistiksel Hesaplama için R Foundation tarafından desteklenir ve istatistikçi yazılımlar geliştirmek ve veri analizi yapmak için istatistikçiler ve veri madencileri tarafından çokça kullanılır.

Bu makalede, Debian 9 sisteminde R’nin nasıl kurulacağı konusunda size yardımcı olacğaım.

Gereksinimlar

  • En az 1G RAM ile Debian 9 bilgisayar. Makinenizde 1GB’den az RAM varsa, bir Swap(takas alanı) oluşturabilirsiniz.

R yükleme

Bu yazı yazılırken, R’nin en son kararlı sürümü 3.5.1 sürümüdür. Debian depolarından gelen R paketleri genellikle eskidir, bu yüzden CRAN tarafından desteklenen depoyu ekleyerek R’yi kuracağız.

HTTPS üzerinden yeni bir depo eklemek için gereken bağımlılıkları yükleyin

sudo apt install dirmngr apt-transport-https ca-certificates software-properties-common gnupg2

Aşağıdaki komutları çalıştırarak CRAN deposunu etkinleştirin ve sisteminize CRAN GPG anahtarını ekleyin


sudo apt-key adv --keyserver keys.gnupg.net --recv-key 'E19F5F87128899B192B1A2C2AD5F960A256A04AF'
sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/debian stretch-cran35/'

Depo eklendikten sonra paket listesini güncelleyin ve R paketini yükleyin

sudo apt update
sudo apt install r-base

R sürümünü gösterecek aşağıdaki komutu çalıştırarak yüklemeyi doğrulayın

R --version

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

R version 3.5.1 (2018-07-02) -- "Feather Spray"
Copyright (C) 2018 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under the terms of the
GNU General Public License versions 2 or 3.
For more information about these matters see
http://www.gnu.org/licenses/.

R’nin bu kadar popüler olmasının temel nedenlerinden biri de, Kapsamlı R Arşiv Ağı (CRAN) aracılığıyla sunulan çok çeşitli eklenti ve paketlerdir. root olarak başlatıldığında, paketler tüm sistem kullanıcıları için global olarak kurulacak ve kullanılabilir olacaktır. Eğer sudo olmadan R’yi başlatırsanız, kullanıcı için kişisel bir kütüphane kurulacak ve kullanılacaktır.

R konsolunu root olarak açmak için

sudo -i R

Aşağıdaki tüm komutlar bir R konsolunda çalıştırılması gerekmektedir.

Stringr paketini kurmak için

install.packages("stringr")

Kurulum biraz zaman alacak ve tamamlandıktan sonra kütüphaneyi ekliyoruz

library(stringr)

Kullanılabilir CRAN Paketleri oldukça fazladır bunlardan istediklerinizi kurabilir ve install.packages() ile yükleyebilirsiniz.

Debian 9 Üzerine DNS-Over-HTTPS Nasıl Kurulur

DNS sorgularının HTTPS protokolü üzerinden ulaştırılması için kullanılmaktadır. Normal DNS aksine daha güvenlidir.

Cloudflared kurulumu

Bu işlem için sunucumuza 3.parti bir yazılım olan cloudflared dahil ediyoruz.

wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
apt-get install ./cloudflared-stable-linux-amd64.deb
cloudflared -v

Sistemin başlangıcında açabilmek için buna uygun bir yapılandırma yapmamız gerekmektedir. Kullanıcı oluşturarak başlıyoruz.

useradd -s /usr/sbin/nologin -r -M cloudflared

cloudflared için gerekli olan /etc/default/cloudflared yapılandırma dosyasını düzenliyoruz.

# Commandline args for cloudflared
CLOUDFLARED_OPTS=--port 5053 --upstream 

Ayarladığımız yapılandırma dosyasına oluşturduğumuz kullanıcıdan izin veriyoruz.

chown cloudflared:cloudflared /etc/default/cloudflared
chown cloudflared:cloudflared /usr/local/bin/cloudflared

Ardından servisinin yapılandırılması için /lib/systemd/system/cloudflared.service hizmet dosyasını oluşturuyoruz.

[Unit]
Description=cloudflared DNS over HTTPS proxy
After=syslog.target network-online.target

[Service]
Type=simple
User=cloudflared
EnvironmentFile=/etc/default/cloudflared
ExecStart=/usr/local/bin/cloudflared proxy-dns $CLOUDFLARED_OPTS
Restart=on-failure
RestartSec=10
KillMode=process

[Install]
WantedBy=multi-user.target

Ardından systemd üzerinden gerekli işlemleri yapalım.

sudo systemctl enable cloudflared
sudo systemctl start cloudflared
sudo systemctl status cloudflared

Çalışıp çalışmadığını kontrol ediyoruz.

dig @127.0.0.1 -p 5053 google.com


; <<>> DiG 9.10.3-P4-Ubuntu <<>> @127.0.0.1 -p 5053 google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65181
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1536
;; QUESTION SECTION:
;google.com.            IN  A

;; ANSWER SECTION:
google.com.     299 IN  A   243.65.127.221

;; Query time: 3 msec
;; SERVER: 127.0.0.1#5053(127.0.0.1)
;; MSG SIZE  rcvd: 65

Debian 9 Üzerine MariaDB Nasıl Kurulur

MariaDB açık kaynaklı, çok iş parçacıklı ilişkisel veritabanı yönetim sistemidir ve MySQL için geriye dönük uyumludur. MariaDB Foundation tarafından MySQL’in bazı orijinal geliştiricileri de dahil olmak üzere proje sürdürülmekte ve geliştirilmektedir.

Debian 9 sürümü ile MySQL varsayılan veritabanı sistemi olarak MariaDB ile değiştirildi. Her fırsatta unuttuğum için dokümantasyona ekleme ihtiyacı duydum. Gereken adımları aşağıdadır. Default repoda MariaDB eklenmiştir.

Bu makalemde, Debian 9 makinenize MariaDB’yi nasıl kuracağınıza dair iki farklı yöntem göstereceğim. İlk yöntem, MariaDB’yi Debian depolarından yüklemek için gereken adımlar boyunca size yol gösterecek, ikincisi ise MariaDB’nin en son sürümünün resmi MariaDB depolarından nasıl kurulacağını size öğretecektir.

Genellikle, MariaDB’yi Debian depolarından kurmanız önerilir.


sudo apt-get update
sudo apt-get -y install mariadb-server

İlk kurulumu çalıştırıyoruz.

sudo mysql_secure_installation

MariaDB’yi MariaDB Depolarından Debian 9’a yükleme

Bu yazının yazıldığı tarihte, MariaDB’nin en son sürümü resmi MariaDB depolarından kurulabilen versiyon 10.3’tür. Bir sonraki adımla devam etmeden önce MariaDB Depo sayfasını ziyaret edin ve yeni bir versiyonun mevcut olup olmadığını kontrol edin.

MariaDB 10.3’ü Debian 9 sisteminize kurmak için şu adımları takip edin

İlk adım, MariaDB deposunu etkinleştirmek ve depo GPG anahtarını sisteminize aktarmaktır.

sudo apt-get install software-properties-common dirmngr
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mirror.23media.de/mariadb/repo/10.3/debian stretch main'

Depo etkinleştirildikten sonra paket listesini güncelleyin ve MariaDB’yi şu şekilde yükleyin

sudo apt-get update
sudo apt-get install mariadb-server

MariaDB servisi, aşağıdaki komutu çalıştırdığını doğrulamak için otomatik olarak başlayacaktır.

sudo systemctl status mariadb

Çıktımız ise şu şekilde olacaktır

mariadb.service - MariaDB 10.3.8 database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/mariadb.service.d
        └─migrated-from-my.cnf-settings.conf
Active: active (running) since Sun 2018-10-19 09:36:30 UTC; 56s ago
    Docs: man:mysqld(8)
        https://mariadb.com/kb/en/library/systemd/
Main PID: 16417 (mysqld)
Status: "Taking your SQL requests now..."
    Tasks: 31 (limit: 507)
CGroup: /system.slice/mariadb.service
        └─16417 /usr/sbin/mysqld

Temel veritabanı oluşturma işlemleri

İşlemler tamamlandığında ilk veritabanı kurulumu adımları için giriş yapıyoruz.

sudo mysql -u root -p

İsteğe bağlı veritabanı ve kullanıcıyı oluşturuyoruz.

CREATE DATABASE mertcandb;
CREATE USER 'mertcan'@'localhost' IDENTIFIED BY 'mertcan';
GRANT ALL PRIVILEGES ON *.* TO 'mertcan'@'localhost';
FLUSH PRIVILEGES;
exit

Debian 9 Üzerine PostgreSQL Nasıl Kurulur

PostgreSQL, genellikle Postgres olarak bilinir, açık kaynaklı genel amaçlı nesne-ilişkisel veritabanı yönetim sistemidir. PostgreSQL, çevrimiçi yedeklemeler, zaman kurtarma, iç içe geçmiş işlemler, SQL ve JSON sorgulama, çoklu sürüm eşzamanlılık kontrolü (MVCC), asenkron çoğaltma ve daha fazlası gibi birçok gelişmiş özelliğe sahiptir.

Bu makalemde, PostgreSQL‘in Debian 9‘a nasıl yükleneceğini ve temel veritabanı yönetimini göstereceğim.

PostgreSQL Kurulumu

Debian depolarından temin edilen PostgreSQL’in en son sürümünü kuracağız. Bu yazının yazılıdğı tarihte son sürüm 10’dür.

PostgreSQL’i Debian sunucunuza yüklemek için aşağıdaki adımları sırasıyla tamamlayın

sudo apt update

PostgreSQL veritabanı ve PostgreSQL veritabanı ek özellikler sağlayan PostgreSQL Contrib paketini yükleyin

sudo apt install postgresql postgresql-contrib

Yükleme tamamlandığında, PostgreSQL hizmeti otomatik olarak başlayacaktır. Yüklemeyi doğrulamak için psql yardımcı programını kullanarak PostgreSQL veritabanı sunucusuna bağlanın

sudo -u postgres psql -c "SELECT version();"

Çıktısı aşağıdaki gibi güncel kurulan sürüm numarası olmalıdır.

                                                 version                                                  
-----------------------------------------------------------------------------------------------------------
PostgreSQL 10.5(Debian 10.5-1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 9.5.0-deb9u1) 9.5.0, 64-bit
(1 row)

Psql, PostgreSQL sunucusuyla etkileşime girmenizi sağlayan etkileşimli bir terminal programıdır.

PostgreSQL Roller ve Kimlik Doğrulama Yöntemleri

PostgreSQL, rol kavram konseptini kullanarak veritabanı erişim izinlerini işler. Bir rol, bir veritabanı kullanıcısını veya bir veritabanı kullanıcı grubunu temsil edebilir. PostgreSQL bir dizi kimlik doğrulama yöntemini desteklemektedir. En çok kullanılan yöntemler şunlardır:

  1. Trust – Bu yöntemle, pg_hba.conf dosyasında belirtilen ölçütler karşılandığı sürece bu rol parola olmadan bağlanabilir.
  2. Password – Bir parola istenerek bir rol bağlanabilir. Parolalar, scram-sha-256, md5 ve password (plain-text) olarak saklanabilir.
  3. Ident – Bu yöntem sadece TCP/IP bağlantılarında desteklenir. İstemcinin işletim sistemi kullanıcı adını ve isteğe bağlı bir kullanıcı adı eşlemesi sağlayarak çalışır.
  4. Peer – Ident ile aynıdır, ancak sadece yerel bağlantılarda desteklenir.

PostgreSQL istemci kimlik doğrulaması pg_hba.conf adlı yapılandırma dosyasında tanımlanmıştır. Yerel bağlantılar için varsayılan olarak PostgreSQL eş kimlik doğrulama yöntemini kullanacak şekilde ayarlanmıştır.

PostgreSQL’i yüklediğinizde postgres kullanıcısı otomatik olarak oluşturulur. Bu kullanıcı root kullanıcısına eşdeğerdir. PostgreSQL sunucusuna postgres kullanıcısı olarak giriş yapmak için öncelikle postgres kullanıcısına geçmeniz gerekir ve daha sonra psql yardımcı programını kullanarak bir PostgreSQL istemine erişebilirsiniz.

sudo su - postgres
psql

Buradan PostgreSQL ile etkileşime geçebilirsiniz. PostgreSQL kabuk tipinden çıkmak için aşağıdaki komutu verin.

\q

Kullanıcı değiştirmeden PostgreSQL istemine erişmek için sudo komutunu kullanabilirsiniz.

sudo -u postgres psql

Postgres kullanıcısı genellikle yalnızca yerel ana bilgisayardan kullanılır ve bu kullanıcı için parola ayarlanmaması önerilir. Temel veritabanı yönetimi için ise PostgreSQL Komut ve Kısayolları makaleme göz atabilirsiniz.

Debian 9 NTP Sunucusu Kurulumu

Bu makalede sizlere, Debian 9 üzerine en basit şekilde NTP’yi nasıl kuracağınızı göstereceğim. Zaman sunucusu 123/UDP portunu kullanmaktadır. Normal işlemleriniz için kurmanıza gerek yok, Dışarıya hizmet edecek bir sunucu kurarken kullanmanızı öneririm.

Paketin kurulumu için vereceğiniz ilk komut ise aşağıdadır.

root@debian:~# apt -y install ntp

Ardından servisin lokal makinelere ulaşması için gerekli adımlar yapılır. Senkron edilecek sunucuların tanımı gerçekleştirilir.

root@debian:~# nano /etc/ntp.conf
pool 0.debian.pool.ntp.org iburst
pool 1.debian.pool.ntp.org iburst
pool 2.debian.pool.ntp.org iburst
pool 3.debian.pool.ntp.org iburst

NTP isteklerinin kabul edileceği ip aralığı aynı yapılandırma dosyasının(ntp.conf) içerisine tanımlanır.

restrict 10.0.0.0 mask 255.255.255.0 nomodify notrap

Servis yeniden başlatılır

root@debian:~# systemctl restart ntp

Senkronizasyon gerçekleştirilmesi için ilk komut verilir.


root@debian:~# ntpq -p 
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 ntp-b3.nict.go. .NICT.           1 u    1   64    1   19.707    5.647   0.383
 ntp1.jst.mfeed. 133.243.236.17   2 u    1   64    1   16.625    5.942   0.657
*ntp2.jst.mfeed. 133.243.236.17   2 u    1   64    1   16.673    5.971   0.487

Ardından güvenlik duvarı ayarlamaları yapılır.

iptables -A OUTPUT -p udp --dport 123 -j ACCEPT
iptables -A INPUT -p udp --sport 123 -j ACCEPT

İşlemler sonlandıktan hemen sonra ister linux makinelere isterseniz de windows makineler için zaman sunucu kullanımlarını aktif edebilirsiniz.

Debian 9 Üzerine VNC Nasıl Kurulur

Bu makalede size, bir Debian 9 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 sunucunuzda 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 xfce4 xfce4-goodies 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üzenleyicinizi 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.

Debian 9 Üzerine PHP 7.2 Nasıl Kurulur

İşletim sisteminde ön tanımlı olarak gelen PHP sürümü düşük olduğu için gereken dosyaları PPA aracılığı ile sisteme ekliyoruz. PHP 7.0 sürümündeki Debian 9 depoları, kısa süre içinde destek için ömürlerinin sonuna ulaşacak ve artık güvenlik güncellemelerini almayacak.

Bu makalede, bir Debian 9 sunucusu üzerine PHP 7.2 kurulumunun nasıl yapılacağını göstereceğim.

sudo apt-get install apt-transport-https lsb-release ca-certificates
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list

Ekleme işlemlerini tamamlandıktan hemen sonra. Depoların güncellenmesi işlemlerini yapıyoruz.

sudo apt update

Temel PHP paketlerini kuruyoruz.

sudo apt-get install php7.2 php7.2-cli php7.2-common php7.2-curl php7.2-gd php7.2-json php7.2-mbstring php7.2-mysql php7.2-opcache php7.2-readline php7.2-xml

Ardından php sürümüne bakalım

php -v

Çıktısı aşağıdaki gibi olacak

PHP 7.2.20-1+0~20180910100532.3+stretch~1.gbp17c613 (cli) (built: Sep 10 2018 10:05:33) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.20-1+0~20180910100532.3+stretch~1.gbp17c613, Copyright (c) 1999-2018, by Zend Technologies

Debian 9 VMware Tools Kurulumu

3 Haziran 2018’de vmWare resmi olarak open-vm-tool paketini desteklemeye başladığını duyurdu. Bu bağlamda sanal makineler için aşağıdaki şekilde desteklenen paketleri kurabiliriz.

echo "deb http://ftp.debian.org/debian/ stretch main contrib" | \
      sudo tee --append /etc/apt/sources.list.d/stretch-openvm-tools.list > /dev/null

Repoları güncelliyoruz

sudo apt-get update

Gerekli olan paketleri sisteme dahil ediyoruz.

sudo apt-get install open-vm-tools net-tools

VMware Workstation ve Fusion’da Paylaşılan Klasörler’i kullanarak dosya paylaşım özelliğini kullanırsanız, sanal makinedeki vmhgfs sürücüsünü yükleyin. Bu sürücü, işletim sisteminde dahil değildir.

Kurulum araçların kullanımında soruna neden olmaz. Bu vmhgfs sürücüsünü yüklemek için:

  1. Yukarıda ki bahsi geçen open-vm-tools kurulumunu tamamlıyoruz.
  2. VMware Workstation veya Fusion ürünleriyle birlikte gelen geleneksel TAR Formatı içerisinde bulunan araçları yükleyin

Debian 9 PowerShell Kurulumu

Linux için PowerShell Core, sisteminize kurup işlemleri gerçekleştirebilmemiz için depoları sistemimize ekleyip gerekli işlemleri yapmamız gerekmektedir. Ardından linux üzerinde powershell komutlarını çalıştırabileceksiniz.

Sistem araçlarının yüklenmesi

sudo apt-get update
sudo apt-get install curl gnupg apt-transport-https

Yüklenecek powershell deposundaki programlara erişmek için gerekli olan public keyimizi sisteme dahil ediyoruz.

curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -

Depomuzu sisteme dahil ediyoruz.

sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main" > /etc/apt/sources.list.d/microsoft.list'

depoları güncelliyoruz

sudo apt-get update

powershell kurulumunu tamamlıyoruz.

sudo apt-get install -y powershell

PowerShell kurulumu tamamlandıktan sonra başlatmak için aşağıdaki komut kullanılır.

pwsh

Debian 9 Microsoft SQL Server Kurulumu

Microsoft SQL Server ihtiyacınız varsa Microsoft server ürünlerine ihtiyacınız yok. Kısıtlı imkanlarınız varsa aşağıdaki kurulum uygulanarak debian 9 üzerine kurulumu gerçekleştirebilirsiniz. Aksi durumlarda Microsoft server ürünlerini tercih etmeyi unutmayın.

Gerekli paket listelerini sisteme dahil edelim.

curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
echo "deb http://ftp.debian.org/debian stretch-backports main" | \
      sudo tee --append /etc/apt/sources.list.d/stretch-backports.list > /dev/null

Paket listesini güncelleyelim ve mssql-server kurulumunu başlatalım.

sudo apt-get update
sudo apt-get install mssql-server

Kurulumu tamamlamak için /opt/mssql/bin/sqlservr-setup komutunu çalıştıralım.

sudo /opt/mssql/bin/sqlservr-setup
Microsoft(R) SQL Server(R) Setup

You can abort setup at anytime by pressing Ctrl-C. Start this program
with the --help option for information about running it in unattended
mode.

The license terms for this product can be downloaded from
http://go.microsoft.com/fwlink/?LinkId=746388 and found
in /usr/share/doc/mssql-server/LICENSE.TXT.

Do you accept the license terms? If so, please type "YES": YES

Please enter a password for the system administrator (SA) account: 
Please confirm the password for the system administrator (SA) account: 

Setting system administrator (SA) account password...
Do you wish to start the SQL Server service now? [y/n]: y
Do you wish to enable SQL Server to start on boot? [y/n]:

Varsayılan sql sunucu portu 1433’ü dinleyebilir olduğuna bakalım.

sudo lsof -i :1433

Çıktısı aşağıdaki gibi olmalı

COMMAND    PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sqlservr 15020 mssql   65u  IPv4 152906      0t0  TCP *:ms-sql-s (LISTEN)

Linux konsolundan sql sunucusuna bağlanmak isterseniz, önce sqsh’ı kurarak işleme başlayabilirsiniz.

sudo apt-get install sqsh

Yeni kurulan sql’de bağlantı sağlamak istediğinizde sa kullanıcısını kullanın

sqsh -S localhost -U sa
Password: 
1> CREATE DATABASE test1
2> go
1> SELECT Name from sys.Databases
2> go

Microsoft Sql Server Management Studio üzerinden bağlanmak da mümkündür.