Skip to content

ssh root erişimini engelleme

en temel güvenlik ihtiyaçlarından bir tanesidir root kullanıcısının ssh ile bağlantısının engellenmesi.

$ sudo nano /etc/ssh/sshd_config

ssh konfigürasyon dosyasını açıyoruz ve PermitRootLogin ve PasswordAuthentication parametlerini no olarak değiştiriyoruz.

PermitRootLogin no
PasswordAuthentication no

sonrasında takibi sunucumu yeniden başlatmayı ihmal etmiyoruz.

sudo service ssh restart

ubuntu üzerinde ssh sunucu

ubuntu üzerinde ssh sunucuyu aktif etmek istiyorsanız openssh-server i kurmak yeterli olacaktır.

fcicek@ubuntu:~$ sudo apt-get install openssh-server

sunucunun aktif olduğunun kontrollerini yapalım.

fcicek@ubuntu:~$ ps -aux|grep sshd
root        472  0.0  0.5  72136  5656 ?        Ss   09:31   0:00 /usr/sbin/sshd -D
root       1268  0.0  0.7 105604  7044 ?        Ss   09:36   0:00 sshd: fcicek [priv]
fcicek     1292  0.0  0.4 105604  4608 ?        S    09:36   0:00 sshd: fcicek@pts/0
fcicek     1467  0.0  0.1  14352  1168 pts/0    S+   09:44   0:00 grep --color=auto sshd

ağ simülatörler : ubuntu üzerine gns3 kurulumu

en popüler ve kullanışlı simülatörlerden bir tanesi olan gns3 ü linux altına kurmak oldukça kolay elbette. ubuntu için mevcut bir paket arşivi mevcut olduğundan işler dahada dolay.

öncelikle paket arşivi ilavesini yapalım.

fcicek@cicek:~$ sudo add-apt-repository ppa:gns3/ppa
 PPA for GNS3 and Supporting Packages. Please see http://www.gns3.com for more details
 Daha fazla bilgi: https://launchpad.net/~gns3/+archive/ubuntu/ppa
Devam etmek için [ENTER] tuşuna ya da eklemeyi iptal etmek için ctrc-c kısayoluna basın.

gpg: `/tmp/tmp_fqu7qvl/secring.gpg' anahtar zinciri oluşturuldu
gpg: `/tmp/tmp_fqu7qvl/pubring.gpg' anahtar zinciri oluşturuldu
gpg: A2E3EF7B anahtarı keyserver.ubuntu.com sunucusunun hkp adresinden isteniyor
gpg: /tmp/tmp_fqu7qvl/trustdb.gpg: güvence veritabanı oluşturuldu
gpg: anahtar A2E3EF7B: genel anahtar "Launchpad PPA for GNS3" alındı
gpg: İşlenmiş toplam miktar: 1
gpg:               alınan: 1  (RSA: 1)
OK

paket arşivini güncelleyelim

fcicek@cicek:~$ sudo apt-get update

gns3 kurulumu yapalım.

fcicek@cicek:~$ sudo apt-get install gns3-gui
Paket listeleri okunuyor... Bitti
Bağımlılık ağacı oluşturuluyor       
Durum bilgisi okunuyor... Bitti      
Aşağıdaki ek paketler de kurulacak:
  cpulimit gns3-server iouyap lib32z1 vpcs
Aşağıdaki YENİ paketler kurulacak:
  cpulimit gns3-gui gns3-server iouyap lib32z1 vpcs
0 paket yükseltilecek, 6 yeni paket kurulacak, 0 paket kaldırılacak ve 3 paket yükseltilmeyecek.
13,7 MB arşiv dosyası indirilecek.
Bu işlem tamamlandıktan sonra 68,8 MB ek disk alanı kullanılacak.
Devam etmek istiyor musunuz? [E/h] E

işte bu kadar basit. artık gns3 ümü çalıştırabiliriz.

fcicek@cicek:~$ gns3
GNS3 GUI version 1.3.11
Copyright (c) 2007-2015 GNS3 Technologies Inc.
2015-11-28 18:56:43 INFO main.py:222 Log level: INFO
2015-11-28 18:56:43 INFO servers.py:79 New local server connection http://127.0.0.1:8000 registered
2015-11-28 18:56:43 INFO __init__.py:206 VPCS module reset
2015-11-28 18:56:43 INFO __init__.py:404 Dynamips module reset
2015-11-28 18:56:43 INFO __init__.py:287 IOU module reset
2015-11-28 18:56:43 INFO __init__.py:308 VirtualBox module reset
2015-11-28 18:56:43 INFO __init__.py:255 QEMU module reset
2015-11-28 18:56:43 INFO __init__.py:69 Built-in module reset
2015-11-28 18:56:43 INFO topology.py:382 Topology reset

linux altında ethernet arayüz özelliklerinin değiştirilmesi (ethtool)

ağ ortamında test yaparken ve bazı özel durumlarda pcnizin ethernet portunun özelliklerini değiştirmeniz gerekebilir. örnek olarak half duplex – full duplex uyumsuzluğundan oluşacak errorları inceliyor olabilirsiniz. bu ve benzeri durumlar için linux altında ethtool oldukça kullanışlı bir tooldur. debian – ubuntu için eğer sistemimiz yok ise hızlıca kuralım.

fcicek@cicek:~$sudo apt-get install ethtool

kurulumdan sonra pcmizin hızlıca pcmiz üzerinden ethernet arayüzlerini hakkında bilgi edinelim.. bunun için ethtool dan sonra arayüz adını yazmamız yeterli olacaktır.

fcicek@cicek:~$ ethtool eth0
Settings for eth0:
	Supported ports: [ TP MII ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Half 1000baseT/Full 
	Supported pause frame use: No
	Supports auto-negotiation: Yes
	Advertised link modes:  10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Full 
	Advertised pause frame use: Symmetric Receive-only
	Advertised auto-negotiation: Yes
	Speed: 10Mb/s
	Duplex: Half
	Port: MII
	PHYAD: 0
	Transceiver: internal
	Auto-negotiation: on
Cannot get wake-on-lan settings: Operation not permitted
	Current message level: 0x00000033 (51)
			       drv probe ifdown ifup
	Link detected: no

çıktıyı inceleyecek olursak portun desteklediği modelar, negotiation bilgisi, duplex bilgisi gibi bilgilere listelediğini görürüz. burada gördüğümüz tüm parametreleri ethtool aracı ile kolaylıkla değiştirebiliriz. değişiklik yapabilme için root yetkisine sahip olmanız gerektiğini unutmayın. tabi işinizi tamamladıktan sonra eski haline getirmeyide unutmamak gerekli.

fcicek@cicek:~$sudo ethtool -s eth0  speed 100 duplex full autoneg off

değişikliğin aktif olabilmesi için eth0 arayüzünü down – up yamak gerekmektedir.

fcicek@cicek:~$sudo ifdown eth0 && ifup eth0

eğer değişiklikleri sürekli yapmak istemiyor – kalıcı olmasını istiyorsanız arayüz konfigürasyon dosyasına bu değişiklik bilgisini eklememiz gerekmektedir. ilgili dosyayı

fcicek@cicek:~$sudo nano /etc/network/interfaces

açtıktan sonra

 pre-up /usr/sbin/ethtool -s eth0  speed 100 duplex full autoneg off

satırlarını eklememiz yeterli olacaktır.

vagrant : giriş seviyesi

kendi sitesinde vagrant

“Vagrant is a tool for building complete development environments. With an easy-to-use workflow and focus on automation, Vagrant lowers development environment setup time, increases development/production parity, and makes the “works on my machine” excuse a relic of the past.”

şeklinde ifade edilmekte. ne işe yarar derseniz : yazılım ekibinizde yer alan geliştiriciler farklı platormlar kullanıyorsa geliştiricilere ilave bir iş yükü getirmeden yazılımın çalışacağı platforma sahip olmalarına ve yönetmelerine yardımcı olan bir araçtır. kendi başına bir sanallaştırma ortamı felan değildir.

ilk çıktığı zamanlar kurulum için biraz uğraşmak gerekiyordu. ancak artık rahatlıkla kurulum gerçekleştirilebiliyor. hızlıca kurulumu nasıl yapılır değinelim..

öncelikle eğer sisteminizde yoksa

fcicek@cicek:~$ sudo apt-get install virtualbox

virtualboxı kurmamız gerekmektedir. sonrasında vagrant

fcicek@cicek:~$ sudo apt-get install vagrant virtualbox-dkms
[sudo] password for fcicek: 
Paket listeleri okunuyor... Bitti
Bağımlılık ağacı oluşturuluyor       
Durum bilgisi okunuyor... Bitti      
Aşağıdaki ek paketler de kurulacak:
  bsdtar bundler ruby-celluloid ruby-childprocess ruby-erubis ruby-ffi ruby-i18n ruby-listen ruby-log4r
  ruby-net-http-persistent ruby-net-scp ruby-net-ssh ruby-nokogiri ruby-rb-inotify ruby-thor ruby-timers
Önerilen paketler:
  bsdcpio
Aşağıdaki YENİ paketler kurulacak:
  bsdtar bundler ruby-celluloid ruby-childprocess ruby-erubis ruby-ffi ruby-i18n ruby-listen ruby-log4r
  ruby-net-http-persistent ruby-net-scp ruby-net-ssh ruby-nokogiri ruby-rb-inotify ruby-thor ruby-timers vagrant
0 paket yükseltilecek, 17 yeni paket kurulacak, 0 paket kaldırılacak ve 2 paket yükseltilmeyecek.
1.090 kB arşiv dosyası indirilecek.
Bu işlem tamamlandıktan sonra 7.459 kB ek disk alanı kullanılacak.
Devam etmek istiyor musunuz? [E/h] E

bağlantılı ve gerekli tüm paketler kurulacaktır. vagrant kutu mantığı ile çalışmaktadır.

https://app.vagrantup.com/boxes/search adresindeki hazır boxlardan birini kullanabilirsiniz.

vagrant_atlas

ben bu örnekte precise32 kullanacağım. test için kullanacağımız bu box indirilmesini ve kütüphanemize eklenmesini gerçekleştirelim..

fcicek@cicek:~$ vagrant box add precise32 http://files.vagrantup.com/precise32.box
==> box: Adding box 'precise32' (v0) for provider: 
    box: Downloading: http://files.vagrantup.com/precise32.box
==> box: Successfully added box 'precise32' (v0) for 'virtualbox'!

şimdi sonraki adıma geçebiliriz. projemiz dosyalarının yer alacacağı bir klasör oluşturarak klasör içine girelim.

fcicek@cicek:~$ mkdir vagrant_project
fcicek@cicek:~$ cd vagrant_project/

“vagrant init” komutunu çalıştırarak “Vagrantfile” default konfigürasyon dosyasının oluşturulmasını sağlayalım.

fcicek@cicek:~/vagrant_project$ vagrant init
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
fcicek@cicek:~/vagrant_project$ ls
Vagrantfile

sonrasında “Vagrantfile” dosyasında

fcicek@cicek:~/vagrant_project$ nano Vagrantfile 

  # Every Vagrant virtual environment requires a box to build off of.
  config.vm.box = "base"

  # Every Vagrant virtual environment requires a box to build off of.
  config.vm.box = "precise32"

olacak şekilde gerekli değişikliği yaparak vagrantı çalıştıralım.

fcicek@cicek:~/vagrant_project$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'precise32'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: vagrant_project_default_1439666566656_16370
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: The guest additions on this VM do not match the installed version of
    default: VirtualBox! In most cases this is fine, but in rare cases it can
    default: prevent things such as shared folders from working properly. If you see
    default: shared folder errors, please make sure the guest additions within the
    default: virtual machine match the version of VirtualBox you have installed on
    default: your host and reload your VM.
    default: 
    default: Guest Additions Version: 4.2.0
    default: VirtualBox Version: 4.3
==> default: Mounting shared folders...
    default: /vagrant => /home/fcicek/vagrant_project

vagrantımız başladı. durum kontrolünü yapmak istersek

fcicek@cicek:~/vagrant_project$ vagrant status
Current machine states:

default                   running (virtualbox)

The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up`.
fcicek@cicek:~/vagrant_project$ 

virtual box ı açacak olursa yeni bir sanal makine oluşturulduğu başlamış olduğu görülmektedir.

vafrant_vm

şimdi sanal makinemize bağlanalım

fcicek@cicek:~/vagrant_project$ vagrant ssh
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic-pae i686)

 * Documentation:  https://help.ubuntu.com/
New release '14.04.3 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

Welcome to your Vagrant-built virtual machine.
Last login: Fri Sep 14 06:22:31 2012 from 10.0.2.2
vagrant@precise32:~$ 

her şey yolunda görülüyor gerçekten öylemi son bir iki ufak kontrol daha yapalım.

vagrant@precise32:~$ uname -a
Linux precise32 3.2.0-23-generic-pae #36-Ubuntu SMP Tue Apr 10 22:19:09 UTC 2012 i686 i686 i386 GNU/Linux
vagrant@precise32:~$ ping google.com
PING google.com (216.58.209.14) 56(84) bytes of data.
64 bytes from sof01s12-in-f14.1e100.net (216.58.209.14): icmp_req=1 ttl=63 time=48.5 ms
64 bytes from sof01s12-in-f14.1e100.net (216.58.209.14): icmp_req=2 ttl=63 time=47.7 ms

bu yazı ile vagranta giriş yapmış olduk. bir sonraki yazıda daha detaylı konulara değineceğiz.

iot protokolü mqtt ve mqtt brokeri mosquitto için başlangıç

yaptığımız iot uygulamalarını bir adım ileri taşımak ve standartlara uydurmak için cihazlar arasında kabul gören standartlardan bir tanesini kullanmakta fayda var.

bu konuda en büyük çalışmaları yapan ibm inde arkasında olduğu mqtt ve amqp, coap, lwm2m gibi bir kaç protokol daha mevcut.

konu hakkında detaylı bilgi edinilmek istenirse

OASIS Committee Categories: IoT/M2M
MQTT

siteleri incelenebilir. maalesef konu hakkında henüz çok fazla Türkçe doküman mevcut değil.

temel olarak yapılan uygulamalarda

– bilgilerin hızlı bir şekilde iletilebiliyor olması
– iletilen bilgilerin sorunsuz olarak iletiliyor olması
– iletimin güvenli bir şekilde olması
– iletimin performansının yüksek olması ve ölçeklendirilebilir olması
– basitleştirilmiş bir yönetim ve denetimin olması
– maliyetin düşük olması
– yazılım dili şartı olmaksızın geliştirilmeye açık olması

vb istenmektedir. bu istekleri karşılayacak bir veri iletim standartı geliştirilmesi zorunluluğundan dolayı mqtt ve benzeri protokoller ortaya çıkmıştır.

mqtt ile çalışmaya başlamadan önce bu kadar temel bilgi yeter.

mqtt de cihazlar doğrudan birbiri ile iletişim kurmak yerine broker olarak isimlendirilen bir sunucu ile irtibata geçer ve bu sunucu üzerinden iletim sağlarlar. bu sunucu ile iletim kuran cihazlar yaptığı işe göre publisher veya subscriber olarak isimlendirilirler. publisher veri sensörler gibi veri gönderen uç birimleri temsil ederken subscriber veri talebinde bulunan veya değer gönderen uç birimdir.

temel mantık bu şekildedir. işin mantığını pratik yaparak öğrenmeye devam edelim. mqtt standartı için yazılmış bir çok kütüphane vb mevcuttur. bunlardan kullanımı oldukça kolay olan mosquitto ile kod yazmadan bir kaç uygulama yapalım.

kullanacağımız yazılımları mosquitto adresinden edineceğiz.

ben test sırasında

gateway – sensor : raspberry pi – 192.168.2.37
broker – sunucu : ubuntu server – 192.168.126.128
istemci – kullanıcı : windows 7 – 192.168.2.23

şeklinde bir ağ kullanacağım.

gerekli yazılımları sırası ile kuralım…

fcicek@ubuntu:~$ sudo apt-get install mosquitto mosquitto-clients

ile ubuntu server için gerekli kurulu yapalım. eğer mosquitto repository niz içerisinde yok ise aşagıdaki şekilde ekleyebilirsiniz.

fcicek@ubuntu:~$ sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
fcicek@ubuntu:~$ sudo apt-get update

raspberry üzerinde kullandığımız raspbian da debian kökenli olduğu için ubuntuda olduğu gibi raspberry içinde gerekli adımları uygulayalım

pi@cicek ~ $ sudo apt-get install mosquitto mosquitto-clients

şimdi sıra windows için olan kuruluma geldi. şu anki en güncel sürüm olan mosquitto-1.4.2-install-win32.exe ı indirelim ve setup dosyasını çalıştıralım. kurulum sırasında aşagıdaki ekran görüntüsünde görüleceği üzere bağımlı olduğu bir kaç dosyalarıda bilgisayarımıza kurmamız gerekmektedir.

mos_install

Win32 OpenSSL v1.0.2d Light ssl uygulamasını pcmize kuralım pthreadVC2.dll dll dosyasını da mosquitto kurduğumuz dizine ekleyelim.

C:\Program Files (x86)\mosquitto>dir *.exe
 Directory of C:\Program Files (x86)\mosquitto

07.05.2015  16:25           120.832 mosquitto.exe
07.05.2015  16:24            13.824 mosquitto_passwd.exe
07.05.2015  16:24            30.208 mosquitto_pub.exe
07.05.2015  16:24            28.160 mosquitto_sub.exe
26.07.2015  01:27            62.913 Uninstall.exe
               5 File(s)        255.937 bytes
               0 Dir(s)  428.300.537.856 bytes free

gerekli kurulumları yaptıktan sonra her üç sistemimiz üzerinde mosquitto, mosquitto_pub ve mosquitto_sub olarak çalıştırılabilir üç dosyamız olacak. herşey tamam kod yazmadan mosquitto nın nasıl çalıştığını test edelim.

ubuntu üzerinden brokerimizin çalıştığından emin olalım.

fcicek@ubuntu:~$ ps aux | grep mosquitto
mosquit+   4792  0.0  0.0  14912   964 ?        Ss   03:15   0:05 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf

raspberry üzerinde cicek isimli bir kanal oluşturarak “test_mesaji_raspberry” şeklinde bir mesaj gönderelim.

pi@cicek ~$ mosquitto_pub -h 192.168.126.128 -t cicek -m test_mesaji_raspberry
pi@cicek ~$ mosquitto_pub -h 192.168.126.128 -t cicek -m test_mesaji_raspberry_2
pi@cicek ~$ mosquitto_pub -h 192.168.126.128 -t cicek -m test_mesaji_raspberry_3

windows tarafından cicek kanalından gelen mesajları almak için

C:\Program Files (x86)\mosquitto>mosquitto_sub.exe -h 192.168.126.128 -t cicek
test_mesaji_raspberry
test_mesaji_raspberry_2
test_mesaji_raspberry_3

yukarıdaki komut takımını giriyoruz. artık raspberry tarafından girilen komut satırındaki mesajları windowsda görebiliyoruz…

apache web server üzerinde kullanıcı dizin yapısını aktifleştirmek

Linux üzerinde Apache kullanıyor ve Linux üzerindeki kullanıcılarınıza bir alan açmak istiyorsanız bu işlem için en kolay yöntem userdir eklentisini aktifleştirmek olacaktır. Bunun ne kadar güvenli ve yönetilebilir olduğu tartışılır ancak en kolay yöntem olduğu kesin.

Gerekli modüllerin ve araçların yüklü olduğundan emin olunmalıdır. Aşağıdaki örnek debian tabanlı bir dağıtım da uygulanmıştır. Dağıtımlara göre dizin yapısı vb fark edebilir.

A2enmod ile userdir modülünü aktifleştirelim.

sudo a2enmod userdir

Modül aktifleştirdikten sonra Apache konfigürasyon dosyaları altında userdir modülü ile ilgili konfigürasyon dosyaları oluşturulmuştur. Bu konfigürasyon dosyası içinde gerekli düzenlemeleri yapılması gerekmektedir.

sudo nano /etc/apache2/mods-enabled/userdir.conf

Temel konfigürasyon dosyası aşağıdaki gibidir. Kullanıcıya açılan dizin ve erişim yetkisi ayarları doğru şekilde ayarlanmalıdır. Yoksa başımıza olmadık işler açabilir.


        UserDir public_html
        UserDir disabled root
 
        
		AllowOverride All
		Options MultiViews Indexes SymLinksIfOwnerMatch
		
			# Apache < = 2.2:
		        Order allow,deny
		        Allow from all
 
		        # Apache >= 2.4:
		        #Require all granted
		
		
			# Apache < = 2.2:
		        Order deny,allow
		        Deny from all
 
			# Apache >= 2.4:
			#Require all denied
		
        


Statik bir alan verecekseniz bu kadar yeterlidir. statik alanmı kaldı diyebilirsiniz. kullanıcıların php kullanmalarını istiyorsanız apachenin php modül konfigürasyon dosyasında gerekli düzenlemeyi yapmanız gerekecektir.

sudo nano /etc/apache2/mods-available/php5.conf

güvenlik gereği kullanıcı dizinlerinde server-side uygulamalar engellenmiş durumdadır. yapılması gereken “php_admin_value engine Off” satırını pasif ederek sunucu yeni konfigürasyonu ile başlatmaktır.


    
	SetHandler application/x-httpd-php
    
    
	SetHandler application/x-httpd-php-source
    
    # To re-enable php in user directories comment the following lines
    # (from  to .) Do NOT set it to On as it
    # prevents .htaccess files from disabling it.
    
        
    #        php_admin_value engine Off
        
    


sunucumuzu yeniden başlattıktan sonra mevcut kullanıcılar için public_html dizinini oluşturmayı unutmayalım..

sudo service apache2 restart
mkdir /home/$USER/public_html

webmin yönetici şifresi resetlemek

bir hata yaptınız ubuntu üzerine webmin yüklediniz ve yönetici şifresi ile sorun yaşıyorsanız aşağıdaki şekilde yönetici şifrenizi resetleyebilirsiniz.

farklı bir dağıtım kullanıyorsanız dizin yapılarında ufak farklılıklar olabilir…

# /usr/share/webmin/changepass.pl /etc/webmin root "yeni şifreniz"

Sonrasında

https://localhost:10000/

Adresinden yeni sifrenizle erişebilirsiniz

ubuntu – 5 adımda vnc server

Öncelike gerekli paketleri kuralım.

kullanici@testsistemi:~$ sudo apt-get install x11vnc vnc-java
[sudo] password for kullanici:

Gerekli pakerler kurulduktan sonra bir kullanıcı şifresi oluşturalım.

kullanici@testsistemi:~$ x11vnc -storepasswd
Enter VNC password:
Verify password:
Write password to /home/kullanici/.vnc/passwd?   [y]/n y

Sıra firewall dan kullanacağımız portları aktif etmeye geldi. 5800 – 5900 u aktif ettikten sonra

kullanici@testsistemi:~$ x11vnc -forever -usepw -httpdir /usr/share/vnc-java/ -httpport 5800

ile çalıştıralım ve

http://sistem_makine_adresi:5800

ile bağlanalım. oluşturduğumuz şifre ile giriş yapabiliriz. En basit hali ile artık vnc sunucumuz hazır.

Back To Top