RSS

Ben yokken eve kim girdi?

19 Oct

Her zaman bu tür fantastik hareketler yapacak değiliz ya, bu sefer de acaba sisteme SSH üzerinden girişleri otomatik olarak rapor ettirebilir miyim kolayca diye merak ettim.

Bu ne işe yarayacak?

Normalde güvenlik deyince aklımıza engelleyici güvenlik gelir, yani ne olursa olsun GNU/Linux sistemimize izinsiz girişler olmasın isteriz ve bunun için gerekli tedbirleri almaya çalışırız. Bununla birlikte diyelim ki tüm tedbirlerimize rağmen bir açık nokta bıraktık ya da bir aptallık ettik, misal birisi parolamızı öğrenip bizim kullanıcı bilgilerimizle sisteme giriş yaptı. O zaman ne yapabiliriz? Buradaki kritik nokta tepki verme süresi. Bunun için de durumdan ne kadar çabuk haberdar olursak o kadar iyi. Eğer bizim yerimize bizim kullanıcı bilgilerimizle bir başkası sisteme giriş yaptı ise bunu nasıl öğrenebiliriz?

Basit bir soru. Basit bir cevap arayalım.

Öncelikle gerekli olan şey SSH üzerinden başarılı bir sisteme giriş gerçekleştiğinde bir programı tetikleyebilmek. Nasıl? sshd kullanım kılavuzuna göre:

$HOME/.ssh/rc

If this file exists, it is run with /bin/sh after reading the environment files but before starting the user’s shell or command. It must not produce any output on stdout; stderr must be used instead. If X11 forwarding is in use, it will receive the “proto cookie” pair in its standard input (and DISPLAY in its environment). The script must call xauth(1) because sshd will not run xauth automatically to add X11 cookies.

The primary purpose of this file is to run any initialization routines which may be needed before the user’s home directory becomes accessible; AFS is a particular example of such an environment.

Buradan temel tetikleme mekanizmasının mevcut olduğunu ve ev dizinimizde .ssh/rc gibi bir dosya oluşturup içine istediğimiz komutları yazdığımızda SSH girişlerinde bunların çalıştırılacağını anlıyoruz.

Madem ki böyle bir mekanizma var o halde bunu çok çok basit bir rapor / bilgi satırını istediğimiz bir e-posta adresine yollamak bile işimizi görecektir.


tarih=`date`
kimlik=`whoami`
adres=$SSH_CONNECTION

echo "$kimlik sisteme $tarih tarihinde $adres adresinden basarili olarak girdi! \
Lutfen bu bilgiyi güvenlik acisindan kontrol edin..." \
| mail -s "DebianBox@EvimGuzelEvim Login Raporu" emre@example.com

Yukarıdaki programı ev dizinimizdeki .ssh dizinindeki rc dosyasına yerleştirmemiz istediğimiz türden bir raporun (hangi kullanıcı, ne zaman, hangi adresten giriş yaptı?) emre@example.com e-posta adresine iletilmesini sağlayacaktır.

Burada ilk akla gelen sorulardan biri şu olabilir: Tüm giriş yapabilen kullanıcıların ev dizinlerine bu dosyayı mı koymamız gerekiyor? Olası çözümlerden biri bu ancak benim örneğimde tersten gitmeye karar verdim, öyle bir şey yapmak yerine sisteme sadece tek bir kullanıcının girmesine izin vereyim dedim. sshd_config kullanım kılavuzuna göre:

AllowUsers

This keyword can be followed by a list of user name patterns, separated by spaces. If specified, login is allowed only for user names that match one of the patterns. ‘*’ and ‘?’ can be used as wildcards in the patterns. Only user names are valid; a numerical user ID is not recognized. By default, login is allowed for all users. If the pattern takes the form USER@HOST then USER and HOST are separately checked, restricting logins to particular users from particular hosts.

Madem böyle bir imkanımız var o halde gerekeni yapalım ve /etc/ssh/sshd_config dosyamızı ziyaret edelim ve aşağıdakine benzer bir satırı ekleyelim:


# Only this user can SSH to this server
AllowUsers emre

Tabii bunu yaptıktan sonra sshd sunucu yazılımını da biraz sarsalım ki kendine gelsin, yapılandırma dosyasını tekrar okusun:


/etc/init.d/ssh reload

İşlem tamam. Deneme yapmak için uzaktaki bir bilgisayardan sisteme giriş yapılır, birkaç saniye sonra posta kutusuna beklenen e-posta düşer, içinde beklenen bilgiler mevcuttur. Eğer belirtilen günde ve saatte belirtilen yerden giriş yapmadı isem bu rapor sayesinde alabildiğine kıllanabilir ve “eğer hafızam beni yanıltmıyor ise gitti benim ev makinası! Eyvahlar olsun!” diyebilirim 😉 (Tabii Memento‘daki gibi bir hafıza problemim olmadığı var sayımı sistemin zayıf noktası denebilir.)

Yukarıdaki işlemler evrensel işletim sistemi Debian GNU/Linux çalıştıran bir PC üzerinde gerçekleştirilmiş olup çok çok ufak tefek değişikliklerle diğer GNU/Linux dağıtımlarına, BSD türevlerine, vs. uygulanabilir. Bu yapımda kullanılan araçlarda zekice emekleri geçen OpenSSH geliştiricilerine ve bunları kolay kullanılabilir halde bana sunan deneyimli, güvenilir Debian GNU/Linux ekibine teşekkürler.

Not: Bu konu ile ilgili her türlü teknik öneriyi emres at bilgi edu tr adresine iletebilirsiniz.

Advertisements
 
Leave a comment

Posted by on October 19, 2006 in Debian, General, Programlama

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: