6
Ağu

OpenSSH_logo

"Don't tell anyone that I'm free"

SSH, Telnet ve rlogin gibi ağ üzerindeki başka bir sunucuya uzakta bulunan bir başka makineden bağlantı sağlayan bir protokoldür. SSH açık haliyle Secure Shell yani güvenli kabuk anlamına gelir. Telnet ve rlogin kullanıcı şifreleri dahil tüm iletişim açık yani şifrelenmeden gerçekleştirilirken, SSH güvensiz makineler arasındaki iletişimi güçlü bir kriptografik yöntemiyle şifreler.i

SSH(Secure Shell) Wikipedia’da yukarıdaki şekilde tanımlanmış. Benim tanımım ise şöyle SSH yani Türkçe’ye çevirecek olursak “güvenli kabuk” iki uzak sunucu arasındaki iletişimi veya istemci-sunucu arasındaki bağlantıyı güvenli bir şekilde sağlayan protokoldür.

Peki ama neden kullanalım?

Başıma gelen bir olaydan örnek vereyim. “Astronomi’de Modelleme” dersinde bir çift yıldız sisteminin fiziksel parametrelerini hepimiz belirtilen süreye kadar çözüp sunum şeklinde sunacaktık. Günler süren çabalar sonucu çözümümüz tamam ve sunumumuz hazırdı. Ben sunmak için çıktığımda sunumum vardı yanımda ama, çözümü yaptığım hesap tabloları ve materyaller yoktu! Maalesef hepsini evde unutmuştum… Neyse ki sunumumda tabloların ekran görüntüsü olduğundan paçayı yırtmıştım… Ama daha kötüsü de olabilirdi. Ya daha kötüsü olsaydı diye düşünelim. Hoca ille de bana hesap tablolarını vereceksin ben anlamam deseydi ne yapacaktık? Okuldan eve mi gidecektik o dakikada? Ya da uçacak mıydık? Elbette hayır. İşte burada yapacağımız şey hocadan ve dinleyicilerden “1 dk izin alıp” eğer evimize daha önceden Open-SSH-Server kurmuşsak, kısa sürede ihtiyacımız olan dosyaları, sunum yapacağımız bilgisayarımıza aktarabileceğiz hemde maksimum güvenlikle!

Evet! SSH’ın nasıl bir şey olduğu anlaşıldı gibi… Şimdi gelin sistemlerimize kuralım;)

Pardus 2009.2 için ;

Paket Yöneticisi’nden “openssh” aratarak kurabilirsiniz. Ya da Terminalde ;

# pisi it openssh

Ubuntu 10.04 ve BackTrack 4 için Terminal’de ;

# sudo apt-get install ssh

komutunu verin o sizin için herşeyi halledecektir…

Evet kurulum tamamlandı. Open SHH Sunucumuzu yeniden başlatalım.

Pardus için Pardus> Sistem> Servis Yöneticisi‘ni kullanabilirsiniz. Ya da Terminalde;

professor-pardus ~ # service openssh  restart

openssh durduruluyor

openssh başlatılıyor

Ubuntu 10.04 ve BackTrack 4 için Terminal’de ;

# sudo /etc/init.d/sshd restart

Şimdi kurulum tamamlandı ama güvenliğimizi had safhada sağlamak için birtakım konfigurasyonlar yapacağız.

Root olunuz;

# nano /etc/ssh/sshd_config

Bu config dosyasının içerisinde SSH’a hangi porttan erişileceğine ve kimlerin nasıl haklarla erişeceğine dair pek çok ayar bulunmakta, düzenleyelim.

  • İlk düzenlememiz gereken SSH’a erişim yapılacak port numarası. Bunu düzenlememiz önemli çünkü SSH’a öntanımlı olarak port 22 üzerinden erişim yapılır. Port numarasını değiştirirsek , bağlantı yapacağımız portu sadece biz bileceğimizden daha güvenli bir erişim sağlamış oluruz.

Bunun için;

#Port 22 satırını bulunuz. Başında “#” olmamasına dikkat ederek istediğiniz bir port numarası yazınız. Örn: Port 1453

  • Root login‘e izin vermeyelim veya kullanım amacımıza göre izin vermek size kalmış… Ben “no” olarak ayarladım. Ama dikkatli olmak gerek, root olarak erişen birisi başımaza hertürlü çorabı örebilir;
# Authentication:

#LoginGraceTime 2m

PermitRootLogin no

#StrictModes yes

#MaxAuthTries 6

#MaxSessions 10
  • Ve ben son olarak SSH ile kimlerin bağlanabileceğini belirttim. Bunun için en son satıra gelip
AllowUsers kullanici

dedim. Bağlantı için SHH hazır. Şimdi Ctrl+X ve E, Enter tuşlarına basarak nano ile dosyayı kaydedelim.

Eveet her şey hazır ama bu konfigürasyonlarla sadece yerel ağ üzerinden erişim sağlayabiliriz. Gerçekten uzaktan nasıl bağlantı kuracağız?

Bildiğimiz üzere çoğumuzun evindeki internet dinamik IP üzerine kurulu… Yani bizim her zaman modemimize servis sağlayıcımız tarafından atanan IP’i yi bilmemiz gerekir ki bağlantıyı sağlayalım. Bunu şu şekilde sağlayabiliriz. Modemimize atanan IP’i takip eden, ücretsiz servis sağlayıcılarla bu sorunu çözebiliriz. DynDNS.com bunlardan biri.. http://www.dyndns.com/ sitesinden bir hesap alıp, ilk etapta “Offline Hostname” olarak bir Hostname(Örn: ornek_baglanti.dyndns.org) alın. Modemimizin web arayüzünden erişim yapıp, orada DDNS veya DynDNS (Dinamik DNS) sekmesinden kullanıcı adınızı, parolanızı ve Hostname’i ekleyiniz… Modemin uzaktan erişim sekmesinden, uzaktan erişimi ve herhangi bir ip’i işaretleyin. Kaydedin… NAT ayarlarının altından, Port yönlendirme seçeneği ile SSH port numarasınızı yazarak bağlanmak istediğiniz bilgisayarınızın YEREL IP adresini giriniz… Kaydediniz… Sürekli bu işlemleri yapmamak için modeminizin sabit IP atama sekmesinden makinanızın MAC adresini yazarak makinanıza istediğiniz yerel sabir IP atamasını mümkün kılabilirsiniz. (Not: Bu işlemlerin görsel olarak nasıl yapıldığını anlatan web üzerinde pek çok döküman bulabilirsiniz.)

Artık her yerden erişim için altyapımızı sağlamış olduk! Ama dikkat.

  • Modeminizi dışarıdan erişime açtığımız için güçlü bir parola koyunuz ve kimse ile paylaşmayınız!
  • Kesinlikle Hostname’inizi kimse ile paylaşmayınız.
  • Port numaranızı değiştiriniz kimseyle paylaşmayınız.
  • SSH’ı uzaktan erişim için, gerekmedikçe root moduna kapatınız.

Yukarıda saydıklarım güvenliğimizi sağlamak için genel şartlar. Daha fazla güvenlik için google size pek çok kaynak sunacaktır.

Peki bütün bu ayarlarımızı yaptık ama nasıl erişeceğiz?

En basit erişim şekli şöyle ;

# ssh kullanici_adi@IP-ADRESI -pPORT-NUMARASI

Yani bizim yukarıda oluşturduğumuz Hostname için şöyle;

#ssh kullanici@ornek_baglanti.dyndns.org -p1453 

Eğer ayarlamalarınız düzgün ise Dünya’nın her yerinden evinizdeki bilgisayara bağlanmanız mümküm;)

Bağlandıktan sonra, bağlandığınız sunucunun Terminal’ine düşeceksiniz. Gerisi size kalmış. Yönetimi nasıl sağlayacağınızı düşünmeyiniz. Linux komutları işinizi yine görecek;) Ama yine de merak ederseniz wiki her zaman ki gibi yardımımıza yetişiyor…

  • wget bulunduğunuz dizine download etmenizi sağlar
  • ls Dizinde bulunan herşeyi listeler.
  • ls -a Gizli dosyalar ve dizinlerle beraber listeler.
  • ls -l Bütün dosyaları boyut ve tarihini göstererek listeler.
  • tar -zxpf Uzantısı tar.gz olan sıkıştırılmış dosyaları açar.
  • tar -xpf Uzantısı .tar olan dosyaları açar.
  • gunzip Uzantısı .gz olan dosları açar.
  • cp Dosyayı kopyalar.
  • mv Bir dosyayı başka bir dizine taşımanızı sağlar ya da dosya adını değiştirir.
  • mkdir Yeni bir dizin oluşturmanızı sağlar.
  • rmdir Belirtilen dizini silmenizi sağlar.
  • rm Dosya silmenizi sağlar.
  • rm -rf Dizin silmenizi sağlar.
  • cd Belirtilen dizine geçmenizi sağlar.
  • cd .. Bir üst dizine geçmenizi sağlar.
  • cd ~ En üst dizine çıkmanızı sağlar.
  • pwd O anda bulunduğunuz dizini görüntüler.
  • pico Belirtilen dosyayı text editör ile düzenlemenizi sağlar.
  • ftp Belirtilen siteye FTP bağlantısı sağlar.
  • lynx Belirtilen siteyi görüntüler.
  • df Harddisk istatistiklerini gösterir.
  • quota Disk kullanımınızı gösterir.
  • uname İşletim sisteiminin durumunu gösterir.
  • whoami Kendi bilgilerinizi gösterir.
  • who Sunucuya bağlı olanları gösterir.
  • last Hesabınıza yapılan en son bağlantıyı gösterir.
  • whereis Belirtilen dosyanın nerede olduğunu gösterir.
  • BitchX IRC programını çalıştırır.
  • mail Postalarınızı kontrol eder.
  • ps -x Sizin çalıştırdığınız işlemleri gösterir.
  • ps -a Sunucuda çalıştırılan tüm işlemleri gösterir.
  • ps -ux Çalıştırılan işlemlerin CPU/RAM kullanımıyla gösterir.
  • kill Pid numarası verilen işlemi durdurur.
  • kill -9 Pid numarası verilen eggdrop işlemini durdurur.
  • killall Belirtilen program türündeki tüm işlemleri durdurur.
  • whatis Belirtilen komutun açıklamasını verir.
  • man Komut hakkında yardım görüntüler
  • passwd Shell hesabınıza girerken kullandığınız şifreyi değiştirmenizi sağlar.
  • vhosts ya da vhost Sistemde bulunan vhostları (virtual host) listeler.(BNC için kullanabilirsiniz)
  • ROOTMAKİNADAN İP ÖĞRENME: ip addr
  • ROOTTA HESAP AÇMAK : adduser login & chown mavigok /home/login & passwd pass1 , passwd pass2
  • reboot: Sunucuya restart atar
  • service mysql restart: mysql restart atar
  • service httpd restart: apache ye restart atar
  • service httpd stop : Sitelere ulaşımı kapatır
  • apf -d ipadresi : verilen ipe ban atar
  • service apf restart : apf ye restart atar
  • netstat -n : sunucuya baglanan ipleri gösterir
  • netstat -a sunucuya baglanan reseller ipleri gösterir(Proxy kullanmanız fark etmez her zaman gercek cıkış ipi görünür)
  • pico : ssh üzerinden text editor ile dosya içeriğini görme ve düzenlemeye yarar.
  • top : Sistem cpu kulalnımını gösterir.
  • uptime : Uptime Durumu ii

Evet, size evimizdeki bir bilgisayara nasıl bağlanacağımız husunda temel düzeyde bilgi vermeye çalıştım. SSH hakkında daha detaylı bilgiyi üstat Çağatay ÇEBİ’nin dökümanından yararlanarak bulabilirsiniz. “http://www.cagataycebi.com/linux/remote_access/remote_access.html” Bu adresten ayrıca Windows nev’i işletim sistemlerinden sunucunuza nasıl bağlanmanız gerektiği de anlatılmış. İncelemenizi öneririm.

Hepinize iyi çalışmalar diliyoum.

Yücel K.

REFERANSLAR:

  1. http://en.wikipedia.org/wiki/Secure_Shell
  2. http://tr.wikipedia.org/wiki/SSH
  3. http://www.cagataycebi.com/linux/remote_access/remote_access.html
  4. https://www.dyndns.com
  5. https://help.ubuntu.com/6.06/ubuntu/serverguide/C/openssh-server.html
  6. http://yamci.com

ihttp://tr.wikipedia.org/wiki/SSH

iihttp://tr.wikipedia.org/wiki/SSH

14
Şub

Yönettiğim bir sunucu var. Bu sunucunun içinde, desteğini verdiğim, WordPress kullanan, onlarca web sitesi var. Zaman zaman bu sitelerde tema düzenlemesi yapmak, sitelere eklenti kurmak, eklentilerde düzenlemeler yapmak gerekiyor. Bu işler için genellikle sunucuya ssh ile bağlanıp gerekli düzenlemeyi vim ile yapıyorum.

Bu işi yaparken en sık yaptığım şey ilgili sitenin temalarının veya eklentilerinin bulunduğu [...]

4
Şub

Uzun bir süredir kullanıcı parolarını ele geçirip sistemden sisteme SSH ile atlayan bir takım art niyetli ve/veya meraklı kişiyi takip ediyorduk. Onlar parola ele geçirdikçe ilgili kullanıcıların hesaplarını kilitleyi parolarını değiştirmelerini sağlıyorduk. Ara sıra oynadığımız bu köşe kapmaca fazla sık olmadığı için elle tutulur çok fazla önlem almamıştık.

Bu son bir haftalık bir süre içinde, ele geçirilen kullanıcı hesaplarından girilip, yerel açıklardan faydalanarak pek çok makinada root olunduğunu fark ettik. Root olduktan sonra saldırganımız, ssh sunucusunu ve istemcisini kendi getirdiği sürümlerle değiştiriyor; aynı makinaya bağlanan başka kullanıcıların parolalarını topluyor. ssh istemcisini değiştirerek de, bu ele geçmiş makina üzerinden yapılan diğer ssh bağlantılarındaki parolaları da kaydediyor.

Olayın çapı oldukça geniş, ele geçirilen makina üzerinden geçerek bağlantı kurulan tüm diğer makinalar da ele geçirilmiş. Bunun içinde sunucular, asistanların ve hocaların ofislerindeki makinaları, ve bağlantı kurdukları evlerindeki diğer makinalar da var. Bize yapılan saldırının aynısının kendi makinalarınıza yapılıp yapılmadığına bakmak için aşağıdaki komutları kullanabilirsiniz. Eğer komutlar ekrana çıktı veriyorsa siz de etkilenmişsiniz demektir.

strings /usr/sbin/sshd|grep "password auth from"
strings /usr/bin/ssh|grep "password auth to"
Temiz bir makinada bu komutlar çıktı vermiyor. Ancak komutun çıktı vermemesi makinanıza girilmemiş olduğunu garantilemiyor. Farklı bir yöntem kullanılarak bilgisayarınıza girilmiş olabilir. Eğer komutlar çıktı veriyorsa bizim makinalarımızda kullanılan yöntem ile sizin makinanıza da girildiğinden emin olabilirsiniz.

Saldırganımız çaldığı paroları /usr/share/doc ve /usr/share/locale altındaki dosyalarda şifrelenmiş bir biçimde tutuyor. "file" komutu bunları "data" dosyası olarak gösteriyor. Şüpheli dosyaları aramak için aşağıdaki komutları kullanabilirsiniz. Kurduğunuz paketlere göre /usr/share/doc altında bazı "data" dosyaları bulunuyor olabilir, bunlara tek tek bakarak şüphelerinizi giderebilirsiniz.

find /usr/share/locale/ -exec file {} \; | grep ": data"
find /usr/share/doc/ -exec file {} \; | grep ": data"

İşletim sisteminin farklı olmasının pek faydası olmadı bu saldırıda. Debian ve Ubuntu'nun farklı sürümlerinin yanı sıra Gentoo makinalara da girildiğini tespit ettik. Pardus ya da Fedora gibi başka bir dağıtım kullanıyor olmanız sizi tek başına korumaz; parolanız ele geçirildiğinde sudo ile root olunabilir. Ya da -şimdilik- sadece hesabınızı etkileyen bir keylogger ile root parolası ele geçirilebilir. Neler yapabileceğinizle ilgili aşağıda öneriler var.

Eğer makinanıza girilmişse, makinanıza tekrar güvenebilmek için sıfırdan kurulum yapmalısınız, çünkü saldırgan root olduktan sonra nereye nasıl bir arka kapı koyduğunu bulamazsınız. (Bazı şeyler bulsanız bile hepsini bulduğunuzdan %100 emin olamazsınız).

Yeni kurulum yaptıktan sonra bu tarz bir saldırıdan korunmanın yollarını şöyle sıralayabiliriz:

  • Kurulu paketlere güncelleme geldiğinde bunları hemen uygulayın. Servisleri ya da makinayı yeniden başlatmanız gerekiyorsa bunu ertelemeyin. Kullandığınız dağıtımın güvenlik duyurularını takip edin. (Pardus, Debian, Ubuntu)
  • SSH bağlantılarını sadece sizin kullanıdığınız bir kaç IP adresine sınırlayın.
  • Parola ile girişleri devre dışı bırakın: sadece anahtar çiftleri ile girişe izin verin. Evet çok sert bir önlem ama, IP kısıtlaması uygulayamayacağınız kadar çok kullanıcınız varsa şart. iki yıl köşe kapmaca oynadıktan sonra makinaların kırılabilme eşiğini oldukça yükseltecek olan bu önlemi alacağız, sizlere de tavsiye ederiz. Böylelikle basit bir keylogger kullanarak yakalanan parola ile makinaya girilemeyecek, girilebilmesi için anahtar çiftindeki özel anahtar dosyasının da ele geçirilmesi gerekecek. Nasıl yapacağınızı öğrenmek için SSH ile anahtar çifti kullanımı yazısı faydalı olacaktır.
  • Tek kullanımlık parolalara geçin: diğer iki önlemle birlikte de kullanılabilir. Özel anahtar dosyasının ele geçmesi senaryosuna karşı da korunmuş olursunuz. tek kullanımlık parola(one time password) yazısı yardımcı olabilir.

Son olarak siz de bir kurban iseniz; makinası ele geçirilen sistem yöneticileri için terapi grubumuza bekleriz :)

7
Şub
e-bergi'nin Şubat sayısında yayınlanan ve İlke Demir tarafından yazılan bu yazıda, SSH ile şifresiz/parolasız bağlantı yapmanın yolları anlatılıyor.

Bu uzun süredir kişisel hesaplarım için, yakın zamanda da sistem yöneticiliği işleri için kullandığım bir yöntem. SSH anahtar çiftleri ve ssh-agent kullanarak hem güvenli, hem de pratik bir yöntemle şifresiz/parolasız giriş yapabilirsiniz. (*) Burada dikkat edilmesi gereken bir nokta, ssh özel anahtarına mutlaka "passphrase" girilmeli, aksi taktirde dosyayı kopyalayan şakacı bir arkadaşınız, ya da makinanıza giren kötü niyetli bir saldırgan hesaplarınızda istediği gibi at koşturabilir. Passphrase yeterince uzun ve karmaşık seçilmeli ve içinde yetince büyük harf/sayı/abuk karakter barındırmalı.

Her bağlantıda hesabınızın parolasını girmek yerine, her bağlantıda ssh anahtarına passphrase girmek pratikte bir fayda sağlamayacağı için ssh-agent güzel bir çözüm. Bazı dağıtımlarda ssh-agent siz hesabınıza girdiğinizde çalışmaya başlıyor. Bazı dağıtım/masaüstü ortamları için ise dosyalar hazır bekliyor ancak gidip aktifleştirmeniz gerekiyor. Dağıtımınızın adı ile birlikte "ssh-agent" kelimesini ararsanız her açılışta nasıl ssh-agent çalıştırabileceğiniz ve anahtarlarınızı ona ekleyebileceğiniz konusunda detaylı bilgi bulabilirsiniz.

Ben Gentoo ve KDE kullanıyorum, yaptığım şey ise aşağıdaki dosyalarlarla ssh-agent'ı çalıştırmak, kapatmak ve anahtarlarımı sistem açılışında ssh-agent'a yüklemek. Dosyaları çalıştırılabilir hale getirmeyi unutmamak :) ve "gtk2-ssh-askpass" ya da "x11-ssh-askpass" programlarından birini kurmak gerekiyor.

~/.kde/env/ssh-agent.sh
#!/bin/sh
/usr/bin/ssh-agent -s > ~/.ssh/agent-env.sh
. ~/.ssh/agent-env.sh
~/.kde/shutdown/shutdown-ssh.sh
#!/bin/sh
/usr/bin/ssh-agent -k
~/.kde/Autostart/ssh-add.sh
#!/bin/sh
/usr/bin/ssh-add


(*) Bu noktada şifre mi parola mı tartışmasına girmek istemiyorum, doğrusu "parolasız" olacak, ancak ortada yoğun bir "şifre" kullanımı olduğu inkar edilemez bir gerçek, ve bence "password" ya da "pass" kullananlara kıyasla çok fazla da büyütülecek bir mesele değil.