18 Şubat 2017 Cumartesi

Ubuntu SSH Kurulumu

SSH (Secure Shell )  : Güvenli veri iletimi için şifrelenmiş ağ protokolüdür. SSH ile bağlantı kuran cihazlar veri aktarımları ve diğer işlemleri şifrelenmiş bir ağ prokolü üzerinden yapar. SSH private key ve public key adında iki anahtar bulunur.





Yukardaki görselde iki client ve bir server bulunuyor. Clientlar private ve public iki adet anahtara sahip. .pub uzantılı dosya clientların public anahtarları. Diğer anahtarları ise private olanlar. Bağlanmak istediği sisteme public anahtarın taşınması gerekir. Private key'in ise bağlantıyı kuracağı sistemde bulunması gerekir. Digitalocean vs. sunucu hizmeti sağlayan yerlerden sunucu kiralamak istediğinizde sizden eğer şifresiz bağlanmak istiyorsanız, satın alırken public anahtarınızı soracaktır. Bu şekilde bağlantı kurmak kullancı adı şifre aşamasını ortadan kaldırır ve eğer birden fazla sunucu yönetiyorsanız hem daha pratik hem de güvenli bağlantı kurmanıza olanak sağlar. Bruteforce gibi saldırılarıda bu sayede engellemiş olursunuz.


SSH Servisi Kurulumu


 sudo apt-get install openssh-server  
 sudo apt-get install openssh-client  

Kurulum gerçekleştirdek sonra SSH Key oluşturmak için :

 ssh-keygen -t rsa  

komutu girilir. rsa diye yazılan keyin oluşturulurken kullanılan algoritma.

İlk olarak private key için konum soruyor. Default olarak bırakırsanız gösterdiği yerde oluşacaktır. Daha sonrası private key için bir parola soruyor. Eğer buraya bir parola girerseniz bağlantı yaparken private keyinizin parolasını size sorar.


 [root@hakan06 ~]# ssh-keygen -t rsa  
 Generating public/private rsa key pair.  
 Enter file in which to save the key (/root/.ssh/id_rsa):   
 Enter passphrase (empty for no passphrase):   
 Enter same passphrase again:   
 Your identification has been saved in /root/.ssh/id_rsa.  
 Your public key has been saved in /root/.ssh/id_rsa.pub.  
 The key fingerprint is:  
 52:7f:87:d3:70:97:cc:77:6d:3b:c5:b1:27:7f:c6:45 root@hakan06  
 The key's randomart image is:  
 +--[ RSA 2048]----+  
 |        .E|  
 |       oo=|  
 |    .  . o=@|  
 |    . .  = *B|  
 |   . S . + oo=|  
 |    .  . o .o|  
 |         |  
 |         |  
 |         |  
 +-----------------+  

Private key /root/.ssh/id_rsa public key ise /root/.ssh/id_rsa_pub  dosyasıdır Cat komutu ile bu iki keyi görüntüleyebilirsiniz.

Burada ssh için ayar dosyası bulunmaktadır.


 hakan@h4kan:/etc/ssh$ cat /etc/ssh/sshd_config  

Buradan ssh için varsayılan ayarlar bulunmaktadır. Detaylıca incelemek için yukarıdaki kodu yazarak görüntüleyebilirsiniz.

12 Şubat 2017 Pazar

Linux sistemlerde systemd ile servislerin yönetimi


systemd : Görevi bilgisayardaki sistem ve servislerin çalışmasını organize etmektir. Init sisteminin yetersiz kalması sonucu geliştirilmektedir.

Linux sistemin açılışı


Klasik linux açılışı
  • init yapısı – Sıralama zorunluluğu
  • Bir servis başlamadan, ona ihtiyaç duyan sıradaki servis başlatılmaz.
  • -Birbirine bağlı servisler, soketler ile iletişim

systemd açılışı

Systemd, tüm hizmet ve servislerin ihtiyaç duyduğu bağlanma
noktalarını, ilgili hizmet başlamasa dahi önceden başlatır ve diğer
bekleyen programların sırada beklemesini ortadan kaldırır. Bu şekilde systemd birbirine bağlı servisleri birbirlerine ihtiyaç duymadan başlatır.

Debian, Oracle, RHEL, Suse gibi linux dağıtımları eski SystemV yerine default olarak systemd kullanmaya başladılar. Systemd, yalnızca açılış servislerinin düzenlenmesini üstlenen init sistemine göre daha karmaşık, servisleri paralel olarak çalıştırabilme, automount, journal, system state snapshot desteği gibi bir çok özellik barındırmaktadır.

Unit Files

Unit file default olarak "/etc/systemd/system/" dizini altında bulunur. Bu dizinlerde birbirinden farklı uzanntılara sahip bir çok dosya vardır. Bu uzantılar birbirinden farklı unit tiplerini gösterir. .service uzantısına sahip dosyalar servislere ait unit dosyaları tutar. .target uzantılı dosyalar site bir çok service unit'nin gruplanmış halini gösterir. .mount uzantılı dosyalar sisteme mount edilmesi istenilen disk bölümlerini için tanımlanmış configleri gösterirken. .swap uzantılı dosyalar ise swap alanları için yapılandırma dosyalarını içerir.


 root@h4kan:/home/hakan# cd /etc/systemd/  
 root@h4kan:/etc/systemd# ls  
 bootchart.conf logind.conf resolved.conf system.conf   user  
 journald.conf  network   system     timesyncd.conf user.conf  
 root@h4kan:/etc/systemd# cd system  
 root@h4kan:/etc/systemd/system# ls  
 bluetooth.target.wants           hybrid-sleep.target.wants  
 dbus-org.bluez.service           multi-user.target.wants  
 dbus-org.freedesktop.Avahi.service     network-online.target.wants  
 dbus-org.freedesktop.ModemManager1.service paths.target.wants  
 dbus-org.freedesktop.nm-dispatcher.service printer.target.wants  
 dbus-org.freedesktop.thermald.service    shutdown.target.wants  
 default.target.wants            sockets.target.wants  
 display-manager.service           sshd.service  
 display-manager.service.wants        suspend.target.wants  
 getty.target.wants             sysinit.target.wants  
 graphical.target.wants           syslog.service  
 hibernate.target.wants           timers.target.wants  




Servislerin systemd ile yönetilmesi

Servisleri yönetmek için yaygın olarak systemctl aracı kullanılır.

Sytnax : systemctl start | stop | restart | reload | status servisadi.service

# systemctl start <hiz_adı>: Hizmet başlatma

# systemctl stop <hiz_adı>: Hizmet durdurma

# systemctl restart <hiz_adı>: Hizmeti yeniden başlatma

# systemctl status <hiz_adı> : Hizmetin durumu gösterme

# systemctl enable <hiz_adı>: Otomatik başlatma

# systemctl disable <hiz_adı>: Otomatik başlatma iptali

# systemctl mask <hiz_adı>: Servisi elle başlatmayı engelleme

# systemctl unmask <hiz_adı>: Elle başlatma engelini kaldırma

Linux sistemlerde görevleri, hizmet süreçleri ( service / daemon ) yerine getirir. Hizmet programları UNIX’te “daemon” olarak adlandırılır. Ve daemonların adları d harfi ile biter. Örnek: httpd, sshd, syslogd, crond, proftpd..


Klasik linux sistemlerinde hizmet programlarının betikleri “/etc/rc.d/init.d” veya “/etc/init.d” dizinin altında tutulur. Bu betikler (start | stop | restart | status | status | configtest) parametreleri kullanılarak çalıştırılabilir. Bu yolla süreçlerin yönetimi yapılır.

Hizmet süreçlerinin daha kolay yapılması için systemctl kullanılır. Ben burada httpd servisi için systemctl kullanarak apache servisini kullanacağım.

systemctl list-units --type service komutu ile sistemdeki bütün servisleri görüntüleriz.

 hakan@h4kan:~$ systemctl list-units --type service  
  UNIT            LOAD  ACTIVE SUB   DESCRIPTION  
  accounts-daemon.service   loaded active running Accounts Service  
  acpid.service        loaded active running ACPI event daemon  
  apache2.service       loaded active running LSB: Apache2 web server  
 ● apparmor.service      loaded failed failed LSB: AppArmor initialization  
  apport.service       loaded active exited LSB: automatic crash report   
  avahi-daemon.service    loaded active running Avahi mDNS/DNS-SD Stack  
  binfmt-support.service   loaded active exited Enable support for additiona  
  bluetooth.service      loaded active running Bluetooth service  
  console-setup.service    loaded active exited Set console font and keymap  
  cron.service        loaded active running Regular background program p  
  cups-browsed.service    loaded active running Make remote CUPS printers av  
  dbus.service        loaded active running D-Bus System Message Bus  
  getty@tty1.service     loaded active running Getty on tty1  
  grub-common.service     loaded active exited LSB: Record successful boot   
  hddtemp.service       loaded active exited LSB: disk temperature monito  
  irqbalance.service     loaded active running LSB: daemon to balance inter  
  keyboard-setup.service   loaded active exited Set console keymap  
  kmod-static-nodes.service  loaded active exited Create list of required stat  
  lightdm.service       loaded active running Light Display Manager  
  lm-sensors.service     loaded active exited Initialize hardware monitori  
  ModemManager.service    loaded active running Modem Manager  
  mysql.service        loaded active running MySQL Community Server  
 lines 1-23...skipping...  
  UNIT            LOAD  ACTIVE SUB   DESCRIPTION  
  accounts-daemon.service   loaded active running Accounts Service  
  acpid.service        loaded active running ACPI event daemon  
  apache2.service       loaded active running LSB: Apache2 web server  
 ● apparmor.service      loaded failed failed LSB: AppArmor initialization  
  apport.service       loaded active exited LSB: automatic crash report   
  avahi-daemon.service    loaded active running Avahi mDNS/DNS-SD Stack  
  binfmt-support.service   loaded active exited Enable support for additiona  
  bluetooth.service      loaded active running Bluetooth service  
  console-setup.service    loaded active exited Set console font and keymap  
  cron.service        loaded active running Regular background program p  
  cups-browsed.service    loaded active running Make remote CUPS printers av  
  dbus.service        loaded active running D-Bus System Message Bus  
  getty@tty1.service     loaded active running Getty on tty1  
  grub-common.service     loaded active exited LSB: Record successful boot   
  hddtemp.service       loaded active exited LSB: disk temperature monito  
  irqbalance.service     loaded active running LSB: daemon to balance inter  
  keyboard-setup.service   loaded active exited Set console keymap  
  kmod-static-nodes.service  loaded active exited Create list of required stat  
  lightdm.service       loaded active running Light Display Manager  
  lm-sensors.service     loaded active exited Initialize hardware monitori  
  ModemManager.service    loaded active running Modem Manager  
  mysql.service        loaded active running MySQL Community Server  
  networking.service     loaded active exited Raise network interfaces  
  NetworkManager-wait-online.service loaded active exited Network Manager Wait Online  
  NetworkManager.service   loaded active running Network Manager  
  ondemand.service      loaded active exited LSB: Set the CPU Frequency S  
  polkitd.service       loaded active running Authenticate and Authorize U  
  rc-local.service      loaded active exited /etc/rc.local Compatibility  
  resolvconf.service     loaded active exited Nameserver information manag  
  rsyslog.service       loaded active running System Logging Service  
  rtkit-daemon.service    loaded active running RealtimeKit Scheduling Polic  
  setvtrgb.service      loaded active exited Set console scheme  
  snapd.service        loaded active running Snappy daemon  
  speech-dispatcher.service  loaded active exited LSB: Speech Dispatcher  

Yukardaki çıktıda sadece aktif servisleri görüntüledik. Yazdığımız komuta ek olarak all parametresi ekleyerek tüm servisleri görüntüleriz.


systemctl list-units --type service --all inactive durumundaki servisleride görüntüleyebiliriz.

 hakan@h4kan:~$ systemctl list-units --type service --all  
  UNIT                        LOAD   ACTIVE  SUB   DESCRIPTION  
  accounts-daemon.service               loaded  active  running Accounts Service  
  acpid.service                    loaded  active  running ACPI event daemon  
  alsa-restore.service                loaded  inactive dead  Save/Restore Sound Card State  
  alsa-state.service                 loaded  inactive dead  Manage Sound Card State (restore and store)  
  anacron.service                   loaded  inactive dead  Run anacron jobs  
  apache2.service                   loaded  active  running LSB: Apache2 web server  
 ● apparmor.service                  loaded  failed  failed LSB: AppArmor initialization  
  apport.service                   loaded  active  exited LSB: automatic crash report generation  
  apt-daily.service                  loaded  inactive dead  Daily apt activities  
 ● auditd.service                   not-found inactive dead  auditd.service  
  avahi-daemon.service                loaded  active  running Avahi mDNS/DNS-SD Stack  
  binfmt-support.service               loaded  active  exited Enable support for additional executable binary formats  
  bluetooth.service                  loaded  active  running Bluetooth service  
  brltty.service                   loaded  inactive dead  Braille Device Support  
 ● cloud-init.service                 not-found inactive dead  cloud-init.service  
 ● console-screen.service               not-found inactive dead  console-screen.service  
  console-setup.service                loaded  active  exited Set console font and keymap  
  cron.service                    loaded  active  running Regular background program processing daemon  
  cups-browsed.service                loaded  active  running Make remote CUPS printers available locally  
  cups.service                    loaded  inactive dead  CUPS Scheduler  
  dbus.service                    loaded  active  running D-Bus System Message Bus  
  dns-clean.service                  loaded  inactive dead  Clean up any mess left by 0dns-up  
  emergency.service                  loaded  inactive dead  Emergency Shell  
  failsafe-x.service                 loaded  inactive dead  X.org diagnosis failsafe  
 ● festival.service                  not-found inactive dead  festival.service  
  friendly-recovery.service              loaded  inactive dead  Recovery mode menu  
  getty-static.service                loaded  inactive dead  getty on tty2-tty6 if dbus and logind are not available  
  getty@tty1.service                 loaded  active  running Getty on tty1  
  getty@tty7.service                 loaded  inactive dead  Getty on tty7  
  gpu-manager.service                 loaded  inactive dead  Detect the available GPUs and deal with any system changes  

systemctl list-unit-files --type service servislerin enable, disable durumunu görmek için bu komutu kullanırız.

 hakan@h4kan:~$ systemctl list-unit-files --type service  
 UNIT FILE                 STATE    
 accounts-daemon.service          enabled   
 acpid.service               disabled  
 alsa-restore.service            static   
 alsa-state.service             static   
 alsa-utils.service             masked   
 anacron-resume.service           enabled   
 anacron.service              enabled   
 apport-forward@.service          static   
 apt-daily.service             static   
 autovt@.service              enabled   
 avahi-daemon.service            enabled   
 binfmt-support.service           enabled   
 bluetooth.service             enabled   
 bootlogd.service              masked   
 bootlogs.service              masked   
 bootmisc.service              masked   
 brltty-udev.service            static   
 brltty.service               enabled   
 checkfs.service              masked   
 checkroot-bootclean.service        masked   
 checkroot.service             masked   
 colord.service               static   
 console-getty.service           disabled  
 console-setup.service           static   
 console-shell.service           disabled  
 container-getty@.service          static   
 cron.service                enabled   
 cryptdisks-early.service          masked   
 cryptdisks.service             masked   
 cups-browsed.service            enabled   
 cups.service                enabled   
 dbus-org.bluez.service           enabled   
 dbus-org.freedesktop.Avahi.service     enabled   
 dbus-org.freedesktop.hostname1.service   static   
 dbus-org.freedesktop.locale1.service    static   
 dbus-org.freedesktop.login1.service    static   
 dbus-org.freedesktop.ModemManager1.service enabled   
 dbus-org.freedesktop.network1.service   disabled  
 dbus-org.freedesktop.nm-dispatcher.service enabled   

Herhangi bir servisin durumunu öğrenmek içinde

systemctl status apache2 komutunu kullanırız. Ben apache2 servisinin durumuna bakıyorum.


 hakan@h4kan:~$ systemctl status apache2  
 ● apache2.service - LSB: Apache2 web server  
   Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)  
  Drop-In: /lib/systemd/system/apache2.service.d  
       └─apache2-systemd.conf  
   Active: active (running) since Paz 2017-02-12 14:49:12 +03; 57min ago  
    Docs: man:systemd-sysv-generator(8)  
  Process: 1645 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)  
   CGroup: /system.slice/apache2.service  
       ├─1781 /usr/sbin/apache2 -k start  
       ├─1809 /usr/sbin/apache2 -k start  
       ├─1810 /usr/sbin/apache2 -k start  
       ├─1811 /usr/sbin/apache2 -k start  
       ├─1812 /usr/sbin/apache2 -k start  
       └─1813 /usr/sbin/apache2 -k start  
 Şub 12 14:49:11 h4kan systemd[1]: Starting LSB: Apache2 web server...  
 Şub 12 14:49:11 h4kan apache2[1645]: * Starting Apache httpd web server apache2  
 Şub 12 14:49:12 h4kan apache2[1645]: *  
 Şub 12 14:49:12 h4kan systemd[1]: Started LSB: Apache2 web server.  

Çıktıda görebileceğiniz gibi servisin loaded olduğu, servise ait unit file’ın tam path’inin/usr/lib/systemd/system/apache2.service.d olduğu ve startup’a ekli olduğu (enabled) görüntülenmektedir.

Ayrıca, servisin state’inin active (running) olduğu ve ne kadardır up olduğu bildirilmektedir. Main PID numarası Linux Control Group bilgileri ve servisin ürettiği logun son bir kısmı yer bildirilmektedir.

Servisi başlatmak için

#systemctl start httpd

servisi durdurmak için

#systemctl stop httpd

Servisi reload etmek için

#systemctl reload httpd 

Servisi restart etmek için

#systemctl restart httpd

Servislerin açılışta çalıştırılması için

#systemctl enable httpd 

servisin açılışta çalıştırılmaması için yani startuptan kaldırmak için

#systemctl disable httpd

Enable ettiğiniz bir servisin tekrar başlatılmaması için mask parametresi kullanılır.

#systemctl mask httpd 

maskı kaldırmak içinde unmask parametresi kullanılır.

#systemctl unmask httpd
  

Özetlersek systemd, Linux işletim sistemleri için geliştirilmiştir.
Amacı; bilgisayardaki sistem ve servislerin çalışmasını organize etmektir. systemd tabiki bununla kalmıyor ve çok fazla işlevi var. Ben genel hatlarıyla anlatmaya çalıştım.  

9 Şubat 2017 Perşembe

Ubuntu sistemi xubuntu yapmak

Ubuntu gnome masaüstü ortamını bir kaç adımda xubuntu hale getirebiliyoruz.

Terminalde : xubuntu deski indiriyoruz.

 sudo apt-get install xubuntu-desktop gksu leafpad synaptic  

Paket kurulduktan sonra, sisteminizden log-out olmanız gerekir. Olduktan sonra sağ üstteki ubuntu logosuna tıklayıp xubuntu yapın.

xubuntu şeklinde giriş yaptıktan sonra, gnome ile ilgili problemlerin çıkmaması adına bazı paketleri siliyoruz.

 sudo apt-get remove nautilus gnome-power-manager gnome-screensaver gnome-termina* gnome-pane* gnome-applet* gnome-bluetooth gnome-desktop* gnome-sessio* gnome-user* gnome-shell-common compiz compiz* unity unity* hud zeitgeist zeitgeist* python-zeitgeist libzeitgeist* activity-log-manager-common gnome-control-center gnome-screenshot overlay-scrollba* && sudo apt-get install xubuntu-community-wallpapers && sudo apt-get autoremove  

Bu işlem bittikten sonra sistemi reboot ediyoruz.

Yukardaki işlem bizim bazı sorunları almamızı engelledi fakat gnome yazılımıda bu işlemde istemeden silindi. Yazılım deposunu tekrar almak için :


 sudo apt-get install gnome-software  

Sisteminiz xubuntuya döndü. Xubuntuyu eklentilerle daha güzel bir hale getirmeniz için https://sites.google.com/site/easylinuxtipsproject/first-xubuntu ziyaret edebilirsiniz.