Telnet İle Çeşitli Protokollerin Kullanımı
-
Upload
api-3753609 -
Category
Documents
-
view
352 -
download
1
Transcript of Telnet İle Çeşitli Protokollerin Kullanımı
Telnet İle Çeşitli Protokollerin Kullanımı Huzeyfe ÖNAL
Telnet Ile Çesitli Protokollerin Kullanimi
Tanim
SMTP Sunucusuna Baglanmak
POP3 Sunucusuna baglanmak
IRC Sunucularina Baglanmak
Tanim
Internette kullandigimiz her servise ait özellestirilmis yazilimlar vardir mesela,mail alip gönderebilmek için
pop3 ya da Imap özelliklerini destekleyen bir mail istemcisine(Microsoft Outlook,Mozilla ThunderBird), IRC
kanallarinda muhabbet edebilmek icin bir IRC istemcisine(Mirc,Xchat), FTP yapabilmek icin yine bir ftp
istemcisine(CuteFTP), iste tüm bunlarin özellestirilmis programlar araciligiyla yapariz. Bu araci programlar
kullandigimiz her bilgisayarda olmayabilir, ya da herhangi bir sebeple kullanamayacak durumda olursak
yardimimiza mazisi oldukca eski olan telnet uygulamasi yetisir. Bu yazida telnet kullanarak bazi belirli
servislerden nasil yararlanabilecegimizi inceleyecegiz.. Çogu kaynakta telnet'in tanimlamasi su sekilde geçer;
Telnet, Internet agi üzerindeki çok kullanicili bir makineye uzaktaki baska bir makineden baglanmak için
gelistirilen bir TCP/IP protokolü ve bu isi yapan programlara verilen genel isimdir. Sadece karsi makineye login
olmak ve komut çalistirmak için degil ayni zamanda karsi makinede özel bir uygulamaya baglanip ondan
gelecek direktiflere uygun sekilde komut çalistirabilmemizi de saglar.
Telnet kelimesinin her geçtigi yazida üstüne basa basa durulan diger bir konuda Telnet in dogal güvensiz
bir yapida olusudur, dogal güvensiz yapidan kastim sonradan herhangi bir eklenti eklenilmeden telnetin bize
yeterli güvenligi saglayamamasi, bunun sebebi de telnet ile uygulamaya çalistigimiz her seyin bulundugumuz ag
üzerinde sifrelenmemis sekilde iletilmesidir(PLAIN TEXT).
Telnet ile uygulamaya çalistigim bazi uygulamalari Bir sniffer(ag koklayici)ile kaydettim ve ekran görüntüleri.
SMTP Sunucusuna Baglanmak
Önce telnet kullanarak bir SMTP sunucudan nasil mail gönderebilecegimizi inceleyelim. Çogu zaman gereksiz
ve uzun bir is olarak görünsede, sikintili anlarinizda oldukça yardimci olabilecek bir yöntem. Herhangi bir mail
istemcisi kullanma firsatiniz yoksa ya da web uzerinden maillerinize ulasmada sorun yasiyorsaniz kisa zamanda
isinizi halletmenizi saglayabilir. E-postalar SMTP(RFC821) protokolu araciligi ile gönderilirler ve varsayilan port
olarak smtp sunuculari 25 i kullanir. Öncelikle kullanacagimiz mail sunucusunun IP adresini ya da domain ismine
25 nolu porttan telnet islemi gerçeklestiriyoruz
telnet mail.herhangibiryer.net 25
port numarasini unutursaniz ve karsi sistemde telnet protokolu (25 nolu port) açik degilse su seklide bir hata
mesaji alirsiniz.
[rapsodi@bizimev/]$ telnet mail.bizimev.comTrying 192.168.1.3telnet: connect to address 192.168.1.3: Connection refused
SMTP protokolunda basarili komutlar 2xx seklinde basarisiz olunan komutlar ise 5xx.. seklinde cevap
döndürürler.
[rapsodi@bizimev/]$ telnet mail.bizimev.com 25Trying 192.168.1.3.....Connected to mail.bizimev.com
Escape character is '^]'.220 mail.bizimev.com ESMTP
komut satirina alakasiz birsey yazdim ve dönecek cevabi bekledim,yukarida bahsettigim gibi
502 unimplemented
hatasi verdi yani basarisiz olunan komutlar için 5XX seklinde cavap döndürüyor. Sisteme ilk baglandigimizda
helo istemci_adi seklinde bir selam veririz.
220 mail.bizimev.com ESMTPhelo ben.istemciyim.com250 mail.bizimev.com
Mesajimizi yollamak için Öncelikle kimden gönderildigini belirtmemiz lazim
Mail from: mail from:[email protected] ok rcpt to:[email protected] ok
250 ok cevaplarini görmemiz o komutlarda herhangi bir sorun çikmadigini gösterir.
data354 go aheadselam,mailimi konsoldan telnet ile yolluyorum.250 ok 1075456008 qp 5903
data komutu Mailimizi girmemizi bekler ,burada istedigimiz kadar yazabiliriz yazdiklarimizin bittigini entera
basip sonra tek nokta "." Ya basarak bildiririz.ve mail ID numarasi ile birlikte mailimizin kuyruga alindigini
görebiliriz. top x y komutu x numarali mesaji ilk satirindan y satir adedine kadar görüntüler. Çogu mail sunucuda
güvenlik amaciyla kullanimina izin verilmesede sistemde bulunan bir kullaniciyi belirlemek için VRFY komutunu
kullanabilirsiniz.Kullanimi; VRFY <kullanici_adi> seklindedir. Yine denememizi qmail üzerinde yaparsak
vrfy huzeyfe252 send some mail, i'll try my best
gibi akilli bir cevap döndürüyor, Imail de varsayilan olarak VRFY komutunu kullanabilirsiniz. Sistemde isinizi
bitirdikten sonra çikmak için quit komutunu vermeniz yeterlidir
quit221 mail.bizimev.comConnection closed by foreign host
Kullanabilecegimiz komutlarin listesini almak için help komutunu kullanabiliriz,Kullandigimiz mail suncuya göre
farkli cevap döndermesi muhtemeldir mesela qmail için su sekilde bir cevap dönüyor.
help214 qmail home page: http://pobox.com/~djb/qmail.html
POP3 Sunucusuna Baglanmak
Yukarida SMTP ile ilgili açiklama yaparken sadece mail gönderme komutlari oldugunu ve mail almak için
herhangi bir komutu olmadigini söylemistik, peki mail almak için ne kullaniyoruz? Burada yardimimiza kosan
POP3 ya da IMAP protokolü oluyor. Biz bu makalemizde POP3 protokolünü kullanacagiz. RFC 1725te tanimlanmis
ve kullanicinin mail klasörüne gelen mailleri local bilgisayarina indirip offline olarak okumasini saglayan bir
protokoldür. Evet geçerli hesabinizin oldugu herhangi bir mail snucusunda pop3 olarak e-postalariniza
ulasabilmek için;
[rapsodi@cc /]$ telnet mail.bizimev.com 110Trying 192.168.1.3...Connected to mail.bizimev.com Escape character is '^]'.+OK [email protected] huzeyfe+OKpass parolam+OKlist+OK1 8567582 428463 8824 8385 267
Sisteme 110. portundan baglandik ve karsilama mesajini aldik, sonra USER komutu ile kullanici adimizi paramtre
olarak veriyoruz, OK+ cevabini alarak PASS komutu ile parolamizi belirliyoruz, eger yine OK+ cevabi dönüyorsa
parolamizin kabul edildigini anliyoruz ve islemlerimizi yapmaya basliyoruz. Yine mesajlarimizin listesini
görebilmek için LIST komutunu kullaniyoruz. Mesajlarimiz listelendikten sonra okumak istedigimiz herhangi bir
mesaji RETR komutuna parametre olarak vererek okuyabiliriz.
retr 5+OKReturn-Path: <[email protected]>Delivered-To: [email protected]: (qmail 5903 invoked from network); 30 Jan 2004 09:46:00 -0000Received: from cc.kou.edu.tr (194.27.72.80)by 0 with SMTP; 30 Jan 2004 09:46:00 -0000selam,mailimi konsoldan telnet ile yolluyorum
Ayni sekilde dele mesaj_numarasi seklinde de numara ile belirtilen mesaji silmis oluruz.
dele 28+OK
IRC Sunucuna Baglanmak
Uyari!! Yazdigimiz komutlarin cevaplari sunucudan dönmeyecektir biz komutu verdikten sonra
yanlis bir komut vermediysek olumlu kabul edip devam edecegiz. Öncelikle istedigimiz herhangi bir
IRC sunjucusuna baglanip kendimizi tanimlayalim
C:\>telnet irc.freenode.net 6667
Yukaridaki komutla kisaca irc.freenode.net adresindeki IRC sunucusuna 6667. portundan baglanmis olduk, IRC
sunucunuz farkli porttan hizmet veriyorsa port numarasini ona göre degistirin, bu komutu verdikten sonra bize
asagidaki gibi bazi bilgiler dökecektir. Bilgilerin ekranda akmasi bittiginde sunucuya kendimizi tanimlamamiz
gerekiyor.
NOTICE AUTH :*** Looking up your hostname...NOTICE AUTH :*** Checking identNOTICE AUTH :*** Found your hostnameNOTICE AUTH :*** No identd (auth) response
Sunucuya Kimlik tanimlama
USER rapsodi localhost localhost tam_isim
Simdi sirasi ile user komutunun aldigi parametreleri inceleyelim
Rapsodi : Takma adimiz
Hostname : bizim konak adimiz(localhost diyerek gecistirebilirsiniz)
Server_name : Sunucu adimiz (localhost diyerek gecistirebilirsiniz)
Tam_isim : (Tam isminiz herhangi bir sey yazmaniz yeterlidir,Tam isminizi iki kelimeden olusuyorsa önüne :
isaretini koyunuz)burada sunucuya olan baglantimizda zaman asimina ugramissak asagidakine benzer bir hata
olmamiz olasidir.
ERROR :Closing Link: (Connection Timed Out)
Bu adimdan sonra beklemeden,sunucu üzerinde kullanacagimiz takma ismimizi belirtmemiz gerekiyor
NICK rapsodi
Seklinde bu islemi gerçekleyebiliriz. Girmek istedigimiz kanala ise su sekilde girebiliriz:
JOIN #fazlamesai
Bu sekilde de kanala girmis bulunmaktayiz, bundan sonra kanalda geçen konusmalari izleyebiliriz,mesaj
gönderebilmek için
PRIVMSG #fazlamesai :merhaba kanal?
Kanaldan herhangi birine özel mesaj yollamak için
PRIVMSG ozel_biri :naber özelim:
Burada dikkatimizi çeken bir noktada normal irc istemcilerinde kullandiginiz komutlarin basindaki / karekterini
kaldirdiginizda çogu telnet ile yaptiginiz baglantilarda da geçerlidir.
Asagida göreceginiz 2 adet ekran görüntüsü,herhangi bir SMTP sunucuya yapilan telnet baglantisini ve Bir
Sniffer( ethereal) araciligi ile kaydedilisini göstermektedir,Yazacaginiz her karekter sizin ile hedefa makine
arasindaki herhangi bir makineden cok rahat bir sekilde izlenebilir.
Anahtar
: telnet, pop3, smtp, irc
Yazara ileti gönder
Yazara ait tüm makaleler Tüm LAN makaleleri
LAN
bölümün
de yer
alan son
5
makale
OpenBSD Pf ve Squid ile Transparent Proxy Kurulumu Switch Kullanılan Ağlarda Trafik dinleme(Sniffing) SMTP Sunucuların Çoklu Mail Dağıtım Yöntemleri Tcpdump kullanarak Ağ trafiği izlemek – Bölüm 1 VPOPMAIL Kullanma Kılavuzu
Bölüm : LAN
Düzey :
Tarih : 21.2.2004
Yazar : Huzeyfe ÖNAL
E-mail : huzeyfe [at] enderunix.org
OpenBSD Pf ve Squid ile Transparent Proxy Kurulumu
Huzeyfe ÖNAL
Transparent(saydam) Proxy nedir?
Transparent(seffaf, saydam) proxy kullanıcı tarafında herhangi ek ayar gerektirmeden kullanıcıdan gelen
istekleri bir proxy aracılığı ile yönetmektir. Kısacası kullanıcıdan habersiz kullanıcı ile orjinal sunucu arasına
girmektir.
Resimleyecek olursak;
Kullanıcı----->Seffaf_proxy---->orjinal_web_sunucu
Burada kullanıcı "orjinal_web_sunucu" ile haberleştiğini düşünür ve istekleri orjinal sunucuya gönderir, araya
yerleştirilen seffaf proxy kullanıcıdan gelen isteği yakalayarak kendisi bu isteği yerine getirir ve cevabını
kullanıcıya sanki orjinal sunucudan geliyormuş gibi döndürür.
Squid transparent modda nasıl çalışır?
Squid'i seffaf proxy modunda kullanmak istedigimizde bir filtreleme aracı ile proxy makinesine gelen 80. port
isteklerini squid'in çalıştığı porta yönlendirmek gerekir. Squid ile filtreleme aracı farklı makinelerde olabilir.
Linux uzerinde netfilter/iptables, *BSD ler üzerinde PF(Packet Filter), IPF gibi araçlarla yapılabilir. Squid bu farklı
filtreleme araçları için farklı derleme seçenekleri sunar. Mesela squid ile iptables kullanılacaksa --enable-
netfilter, squid ile pf kullanılacaksa --enable-pf-transparent seçenekleri kullanılabilir. Bu derleme seçeneklerinin
kullanılmaması squid'in şeffaf proxy özelliğini yerine getirmesini engellemez ama ilerde yaşanabilecek bazı
problemler için baştan çözüm sunar.
Evet derleme esnasındaki --enable-netfilter ya da --enable-pf squid'e ne sağlar? Squid istemciden gelen istekteki
orjinal sunucu Ip adresini Host başlığına bakarak alır, eğer host başlığı gönderilmemişse squid --enable-
netfilter ile derlendiği için bu derlemede kendisine katılan Linux/UNIX spesifik ag ozellikleri ile orjinal sunucunun
IP adresini öğrenebilir. Günümüze bakıldığında tüm http istemciler host başlığını göndermektedir. Yani bu
derleme seçenekleri sadece işi sağlama alma amaçlıdır.
Squid Kurulumu
OpenBSD altında Squid iki farklı şekilde kurulabilir. Biri klasik kaynak koddan derleme şeklinde , diğeri ise OpenBSD port sistemi kullanarak. OpenBSD Port sistemi kurulacak paketlerin bağımlılık sorunlarını kolayca çözen ve
sisteme kurulan paketlerin kontrolünün kolay takip edilmesini sağlayan bir yapı sunar. Klasik yöntemi tercih edenler http://www.squid-cache.org/ adresinden son sürüm squid paketini indirerek kurabilir. Bu yazıda Squid OpenBSD port ağacından kurulacaktır.
OpenBSD port sistemini kullanarak squid'i transparent proxy işlevi görecek şekilde kurmak için aşağıdaki komutlar verilir.
#cd /usr/ports/www/squid/
Kurulum seçeneklerini sorgulamak için;
#make show=FLAVORS
transparent snmp
Kurulum için;
#env “FLAVOR=transparent” make install
komutları verilir.
NOT:/usr/ports/www/squid dizinideki Makefile dosyasi incelenerek Squid’in hangi secenekler ile kurulacagi belirlenebilir. CONFIGURE_ARGS+ ile baslayan satir Squid’in derleme seceneklerini belirtir.
Kurulum Sonrası genel yapılandırma
Kurulum sonrasında Squid aşağıdaki dosyaları oluşturur:
Yapılandırma dosyaları /etc/squid
Örnek yapılandırma dosyaları /usr/local/share/examples/squid
Hata mesajları /usr/local/share/squid/errors
Örnek hata mesajları /usr/local/share/examples/squid/errors
Simgeler /usr/local/share/squid/icons
Örnek simgeler /usr/local/share/examples/squid/icons
Cache dizini /var/squid/cache
Log dizini /var/squid/logs
Squid kullanici ve grubu _squid:_squid
Kurulum sonrasında Squid’in hangi seçeneklerle kurulduğunu görmek için –v parametresi kullanılır.
#squid -v
Squid Cache: Version 2.5.STABLE9
configure options: --datadir=/usr/local/share/squid '--enable-auth=basic digest' '--enable-basic-auth-helpers=NCSA YP' --enable-digest-auth-helpers=password '--enable-external-acl-helpers=ip_user unix_group' '--enable-removal-policies=lru heap' --enable-ssl '--enable-storeio=ufs diskd' --localstatedir=/var/squid --enable-pf-transparent --prefix=/usr/local --sysconfdir=/etc
Kurulum tamamlandıktan sonra /etc/squid/squid.conf dosyasında bazı değişiklikler yapılması gerekmekte.
Squid.conf dosyası herhangi bir editör ile açılarak aşağıdaki satırlar eklenmeli/değiştirilmelidir.
http_port 127.0.0.1:3128acl our_networks src 10.0.0.0/8 #10.0.0.0/8 benim local ağım, burayı kendinize göre düzenleyinhttpd_accel_host virtualhttpd_accel_port 80httpd_accel_with_proxy onhttpd_accel_uses_host_header on
http_access allow our_networks
Bundan sonra squid'in kullanacağı gerekli takas dizinlerinini oluşturmak için squid -z komutu çalıştırılmalıdır.
#/usr/local/sbin/squid -z
2005/09/13 19:09:46| Creating Swap Directories
Squid’in sistemin her açılışında çalışmasını sağlamak için
/etc/rc.conf dosyasına
squid=YES
satırı eklenmeli . Ardından /etc/rc.local dosyasında echo “.” Satırının ustune aşağıdaki satırlar eklenmeli.
if [ -f /etc/squid/squid.conf ]; then
if [ X"${squid}" = X"YES" -a -x /usr/local/sbin/squid ]; then
echo -n ' squid'; /usr/local/sbin/squid
fi
fi
Squid yapılandırma dosyasında yapılan değişikliklerin aktif olması için
#squid –k reconfigure
Komutu verilmelidir.
Squid Loglama mekanizması
Squid tum loglarını 3 farklı dosyada tutar. Bunlar cache.log, access.log, store.log. Useragent.log ve referrar.log dosyalarıda seçimliktir ve access.log benzeridir fakat daha detayli bilgi icerirler.
Cache.log : Squid’in yapılandırma dosyasına ait hatalar, performans uyarıları gibi bilgiler içerir. Yapilandirma dosyasindaki cache_log anahtarı ile belirlenir.
Access.log : Bu dosya squid üzerinden yapılan her isteğin
loglandığı dosyadır. Yapılandırma dosyasındaki cache_access_log yönergesi tarafından belirlenir.
Store.log :Cache'e eklenen nesneler için düşük seviye bilgi verir.
Squid her erişilen siteyi detaylı bir şekilde loglamaktadır. Squid’in oluşturduğu erişim logları gün geçtikçe büyüyecektir bu da log dosyalarından rapor çıkarmayı zorlaştıracaktır. Squid’in logları günlük olarak döndürülürse(rotate) raporlama işi daha kolay ve düzenli yapılabilir.
Logları günlük döndürmek için /etc/daily.conf dosyasına aşağıdaki satırlar eklenmelidir.
if [ -x /usr/local/sbin/squid -a -f /var/squid/logs/squid.pid ]; then
/usr/local/sbin/squid -k rotate
fi
Sorun giderme
Squid beklediğiniz gibi çalışmıyorsa yapılandırma dosyasında hata yapmışsınızdır. Bu hatayı bulmanın en kolay yolu squid.conf’taki debug_options değerini artırmaktır.
debug_options ALL,1 32,2
Hata bulmanın bir diğer yolu da squid’i çalıştırırken tam debug modda çalıştırmaktır. Bunun için Squid’e –X parametresi verilir ve hatanın sebebi araştırılır.
#squid –X
Firewall(PF) Ayarları
OpenBSD Packet Filter kullanarak istemciden gelen istekleri Squid’e yonlendirmek için gerekli kurallar;
-----Pf.conf-----
ic_ag="xl0" #sizin ag arabiriminiz farkli olabilirdis_ag="rl0"
rdr on $ic_ag inet proto tcp from 10 .0.0.0/8 to any port www -> 127.0.0.1 port 3128
pass in on $dis_ag inet proto tcp from any to 127.0.0.1 port 3128 keep statepass out on $dis_ag inet proto tcp from any to any port www keep state
---pf.conf----
gerekli kurallar eklendikten sonra
#pfctl –f /etc/pf.conf
komutu ile yeni kuralların aktif olması sağlanmalı. Bundan sonra yapılacak iş Squid'in packet filteri sorgulayabilmesi için /dev/pf dosyasına erişim sağlamasını ayarlamak . /dev/pf dosyasının öntanımlı sahibi root dur. Squid ise _squid/_squid kullanici adi/grubu şeklinde çalışır. /dev/pf dosyasının grubunu, Squid okuyacak şekilde yapılandırmak için aşağıdaki komutlar verilmelidir.
#chgrp _squid /dev/pf#chmod g+rw /dev/pf
Eklenecekler:
FreeBSD Pf Squid Seffaf proxy kurulumu
Linux Iptables Seffaf proxy kurulumu
Squid acl kullanımı
Kaynaklar benzedrine.cx/transquid.html
ezine.daemonnews.org/200207/transpfobsd.html
averillpark.net/OpenBSD/FW-HowTo.html
OpenBSD Packet Filter hakkında detaylı bilgi için pf.pdf ve pf_tr.pdf belgelerinden faydalanılabilir.
$man pf $man squid
Notlar Bu yazıda OpenBSD 3.7 işletim sistemi kullanılmıştır.
Anahtar
: proxy, transparent, transparan, şeffaf, squid
Yazara ileti gönder Yazara ait tüm makaleler Tüm LAN makaleleri
LAN
bölümün
de yer
alan son
5
makale
OpenBSD Pf ve Squid ile Transparent Proxy Kurulumu Switch Kullanılan Ağlarda Trafik dinleme(Sniffing) SMTP Sunucuların Çoklu Mail Dağıtım Yöntemleri Tcpdump kullanarak Ağ trafiği izlemek – Bölüm 1 VPOPMAIL Kullanma Kılavuzu
Bölüm : LAN
Düzey :
Tarih : 28.11.2005
Yazar : Huzeyfe ÖNAL
E-mail : huzeyfe [at] enderunix.org
Switch Kullanılan Ağlarda Trafik dinleme(Sniffing) Huzeyfe ÖNAL
HUB kullanılan ortamlarda trafik dinleme işlemi oldukça basittir. Ağa bağlı bir makineye kurulacak bir sniffer
aracılığı ile ağdaki tüm trafik dinlenebilir. Bu zaafiyet HUB sistemlerin çalışma mantığından kaynaklanır, hub ile
birbirine bağlı sistemlerde iki sistem birbiri arasında haberleşmek istese bile aralarındaki trafik tüm hostlara
gidecektir(broadcast mantığı ile çalışır).
Switch yapısı ise biraz farklıdır. Trafik sadece haberleşmek isteyen iki host arasında gerçekleşir . Switch’ler
bu yapıyı üzerilerinde tuttukları CAM (Content Addresable Memory )tablolaları ile kotarırlar, bu tablolar MAC
adresi, switch port numarası ve VLAN bilgilerinden oluşur.
Bir host diğeri ile iletişime başlamadan önce kendi ARP cache’ni(IP Adresi –MAC adresi bilgileri) kontrol
ederek hedef IP adresine ait bilgi var mı kontrol eder, varsa direkt o MAC adresine veriyi gönderir yoksa
broadcast yaparak o IP adresine sahip MAC adresinin kim olduğunu öğrenir. Bu istekler ve cevaplar ARP
mesajları ile gerçekleştirilir.
4 cesit ARP mesajı vardır
ARP request : IP Adresine ait donanım adresi(MAC adresi) sorgulamak için kullanılır
10:09:20.356809 arp who-has 12.16.6.17 tell 12.16.6.185
ARP reply : Belirtilen Ip adresine uyan donanım adresini döndürür
10:09:20.356809 arp reply 12.16.6.17 is-at 0:80:c8:f8:5c:73
RARP request: Belirli bir MAC adresi için IP adresi sorgulaması için kullanılır
RARP reply : Belirli MAC adresi için IP adresi cevabı döndürür.
Arp Cahce işlemleri
Arp cache bilgilerini görüntülemek
arp –an komutu ile arp cache bilgileri görülebilir.
#arp -an
? (1.2.3.4) at 00:00:ge:11:01:98 on xl0? (5.6.7.8) at 00:00:ev:49:f0:kj on xl0? (9.10.11.12) at 00:e0:4c:bb:66:66 on vr0
Arp kaydı silmek
#arp –d IP_adresi
Arp kaydı ekleme
#arp -s IP_adresi MAC_adresi [temp | permanent] [pub]
Şekilde Node A Node B ile iletişime geçmek istediğinde switch her ikisinin mac adresi ve port bilgilerini
edinerek bu iki makine arasıdaki iletişimi C’nin görmesini engeller. Switchli ağlarda başka makineye ait trafiği
izlemenin çeşitli yolları vardır burada en basit ve en etkili yöntem olan arp spoofing ve korunma yolları
anlatılacaktır.
Gerekli araçlar
İşletim sistemi;
Windows NT(W2k, W2K3, Win XP…) ailesinden bir işletim sistemi
Herhangi bir Linux dağıtımı
FreeBSD/OpenBSD işletim sistemi
Programlar;
Tcpdump (http://www.tcpdump.org)
Dsinff (http://www.monkey.org/~dugsong/dsniff )
Fragrouter (http://www.monkey.org/~dugsong/fragrouter )
Kişisel tercihim FreeBSD ve OpenBSD olduğu için örnekler bu iki işletim sisteminin kurulu olduğu makineler
üzerinde verilecektir ama belirlenen programların Windows ve Linux versiyonları bulunarak aynı testler bu
sistemler ile de gerceklenebilir.
Kurulum
OpenBSD için kurulum
#cd /usr/ports/security/dsniff
#env FLAVOR=”no_x11” make install
#cd /usr/ports/security/fragrouter/
#make install
ARP Spoofing Uygulaması / Teori
Bir switche bağlı 3 makine üzerinde test
Makine ismi Ip Adresi Mac adresi
A(Router/Firewall) 10.10.10.1 aa:bb:cc:dd:ee:ff B(FreeBSd) 10.10.10.2 ab:bc:cd:de:ef:fg C(OpenBSD) 10.10.10.3 xx:yy:zz:ww:jj:ll
Yukarıdaki şekle göre Firewall olarak belirlenen makine bir kablo ile switche bağlıdır ve switche bağlı diğer
makineler için varsayılan çıkış kapısıdır.
B makinesinin internete çıkışı A makinesi yani Firewall/router üzerinden gerçekleşmektedir. C makinesi ise B
ve A ile aynı fiziksel ağda bulunan bir makinedir. Arpspoofing yapılmadan önceki normal trafik akışı aşağıdaki
gibidir,
B----àA(10.10.10.1 : aa:bb:cc:dd:ee:ff)---------> gizlibankam.com
Arp spoofing yapıldıktan sonra trafik akışı aşağıdaki şekilde olacaktır.
B----àA(10.10.10.3 : aa:bb:cc:dd:ee:ff, xx:yy:zz:ww:jj:ll)----->gizlibankam.com
ARP Spoofing Uygulaması / Pratik
Kurulumların gerçekleştirildiği C makinesi üzerinde yapılması gerekenler;
Fragrouter programını kullanarak basitce ip_forwarding islemi yaptırıyoruz, bu islemi yaparkende paketlerin
icerigini gormse şansımız oluyor. Arka planda tcpdump komutu çalıştırılarak makine üzerinden akan trafik bir
dosyaya kaydedilerek sonradan incelenebilir. Tcpdump ile ilgili detaylı bilgi kaynaklar bölümünden edinilebilir.
C makinesinde
#fragrouter –B1 &
Ve
#arpspoof –t 10.10.10.2 10.10.10.1
komutuları verilir. Arpspoof komutu ile 10.10.10.2 IP adresli makinede tutulan 10.10.10.1 adresine ait MAC
adresinin 10.10.10.3 IP adresine sahip makinin MAC adresi ile değiştirilmesi sağlanmış oldu.
Böylece B makinesi A makinesi ile iletişime geçtiğini düşünerek paketi aslında C makinesine yollamış oluyor.
C makinesi de trafiği üzerinden geçirerek asıl hedefine ulaştırıyor ve cevaıbını yine B makinesine yolluyor, bu
arada üzerinden geçirdiği trafiği izleme şansı oluyor.
NOT:C makinesinde herhangi bir IP adresi değişikliği yapılmamıştır
Korunma Yöntemleri
Statik arp kayıtları kullanmak
Arpwatch[4] programını kullanarak ağ üzerinde IP-MAC tablosu değişikliklerini gözlemlemleyerek ,
değişikliklerin mail ile bildirilmesini sağlamak.
Switchler üzerinde port security özelliğini aktif ederek kullanmak.
Kaynaklar
1. http://www.olympos.org/article/articleview/172/1/10
2. http://www.enderunix.org/docs/tcpdump.html
3. http://ettercap.sourceforge.net
4. http://www-nrg.ee.lbl.gov/nrg.html
5. http://www.huzeyfe.net
Anahtar
: -
Yazara ileti gönder Yazara ait tüm makaleler Tüm LAN makaleleri
LAN
bölümün
de yer
alan son
5
makale
OpenBSD Pf ve Squid ile Transparent Proxy Kurulumu Switch Kullanılan
Ağlarda Trafik dinleme(Sniffing)
SMTP Sunucuların Çoklu Mail Dağıtım Yöntemleri Tcpdump kullanarak Ağ trafiği izlemek – Bölüm 1 VPOPMAIL Kullanma Kılavuzu
Bölüm : LAN
Düzey :
Tarih : 17.4.2005
Yazar : Huzeyfe ÖNAL
E-mail : huzeyfe [at] enderunix.org
SMTP Sunucuların Çoklu Mail Dağıtım Yöntemleri Huzeyfe ÖNAL
Simple Mail Transfer Protocol (SMTP) tek seferde bir mesajı birden çok kullanıcıya iletme yetisine
sahiptir,hatırlayacak olursak bir mesajın iletiminde RCPT komutunu kullanıyorduk-burada da MTA nin yaptığı
birden fazla RCPT komutu kullanarak bir mesajı birden çok alıcıya yollmaktır.Tabii bunu gerçekleşmesi için
kullanıcıların aynı sunucu üzerinde olması gerekir.
Mesela enderunix.org adresinde kayıtlı
3 adet mail hesabımız olsun, ben [email protected] adresinden buradaki 3 mail hesabına bir mail yollamak
istersem MTA nın 3 farklı davranma durumu vardır. Bunlar aşağıda açıklanmıştır ,
1. Durum
1.durumda SMTP sunucuya bağlantı kuruyoruz 1.mail hesabına maili yolluyorum sonra 2.mail hesabına
mailin bir kopyasını yolluyorum sonra 3.mail hesabına mailin bir kopyasını yolluyorum.
Şekil 1-A da görebileceğiniz gibi tek bağlantı kuruluyor ve farklı 3 RCPT komutu kullanılıyor.Biraz daha açıklayıcı
olması amacı ile aşağıdaki smtp sessionunu izleyelim.
bash-2.05a$ telnet bizimev 25
mail from:[email protected]
250 ok
rcpt to:[email protected]
250 ok
data
354 go ahead
selam olsun ;
.
rset
250 flushed
mail from:[email protected]
250 ok
rcpt to:[email protected]
250 ok
data
354 go ahead
selam olsun;
.
rset
250 flushed
mail from:[email protected]
250 ok
rcpt to:[email protected]
250 ok
data
354 go ahead
selam olsun;
.
rset
250 flushed
quit
2. Durum
Bu durumda SMTP sunucuya 3 farklı kanaldan 3 ayrı proses başlatılır,her bir proses işlemini tamamlayıp
kapanır.
Şekil-2A daki resim bunu anlatmaktadır.Aşağıda da smtp komutları ile nasıl gercekleneceğini de anlatmaya
çalıştım,
bash-2.05a$ telnet bizimev 25
mail from:[email protected]
250 ok
rcpt to:[email protected]
250 ok
data
354 go ahead
selam olsun ;
.
quit
bash-2.05a$ telnet bizimev 25
mail from:[email protected]
250 ok
rcpt to:[email protected]
250 ok
data
354 go ahead
selam olsun;
.
quit
bash-2.05a$ telnet bizimev 25
mail from:[email protected]
250 ok
rcpt to:[email protected]
250 ok
data
354 go ahead
selam olsun;
.
quit
görüldüğü üzere her adımda yeni bir smtp bağlantısı açtım ve mailimi gönderip bağlantıyı kapadım.
3. Durum
Bu durumda sunucuya tek bir SMTP bağlantısı başlatıyoruz ve RCPT ile 3 adet alıcı belirliyoruz sonra
mesajımızı yolluyoruz, yani tek seferde 3 alıcıya mesaj yollamış oluyor.Bunun gösterimi Şekli aşağıdaki gibidir.
SMTP komutları ile gerçeklemesi ise aşağıdadır. bash-2.05a$ telnet bizimev 25
mail from:[email protected]
250 ok
rcpt to:[email protected]
250 ok
rcpt to:[email protected]
250 ok
rcpt to:[email protected]
250 ok
data
354 go ahead
mail budur iste ;
.quit
Evet bir MTAnın aynı sunucuda bulunan farklı kullanıcılara mail dağıtma işlemleri bu şekilde gerçekleşebilir,
piyasada bulunan MTA lerden bu 3 yoldan birini uygulayan örnekleri vardır.
Şimdi de bu 3 durumu kendi aralarında kıyaslayalım hangisi hangi bakımdan daha iyi, hangisi hangi
durumda daha kullanışlı vs. İlk olarak 1.durum ile 3.durumu kıyasalayacak olursak birçok durumda 3’un 1’ e olan
etkinliğii görülebilir, neden mi? Mesela mesajın boyutunun küçük olduğunu kabul edelim bu durumda bant
genişiliği çok önemli değildir ve zaman olarak 3 de geçen zaman 1 de geçen zaman göre daha kısadır(3 kere bir
mesajın kopyalanmasi<->tek kerede bir mesajın yollanması)
Mesajın boyutunun belirli bir değerin üzerinde olduğunu varsayarsak hem zaman olarak hemde bant
genişliği olarak 3 1 den daha etkin çalışır. 1.durumun 3.duruma gore avantajlı noktası ise her mesajın ayrık
dağıtılması sonucu VERP(*)kullanma olasılığının olmasıdır.
2. Durum ile 3. Durumunun kıyaslanması
3.durumda tek bir SMTP bağlantısı kullanılarak birden fazla kullanıcıya aynı maili yollayabiliyorduk,aşikarki
bu herdurumda bantgenişliğinden tasarruf sağlayacaktır, 2.durumda ise her bir mail için farklı bir SMTP
bağlantısı açıp maili yolluyorduk, burada da bir bantgenişiliği israfı söz konusu gözüküyor, bununla birlikte
2.durumdaki 3 farklı smtp bağlantısında smtp’nin doğasında bulunan gidis-donus gecikmeleri paralel olarak
geçekleştiği için 3.duruma göre daha hızlıdır.Yine alıcıların farklı farklı belirtilmeleri sonucu 2.durumda
VERP(*)kullanım kolaylığı da sağlanmaktadır.
Qmail bu 3 durumdan 2.sini kullanmaktadır diğer yöntemleri kullanması için herhangi bir yama söz konusu
değildir.
Kaynaklar
RFC821
http://cr.yp.to/proto/verp.txt
The qmail Handbook ISBN:1893115402
Telnet İle Çeşitli Protokollerin Kullanımı - www.mutasyon.net
Anahtar
: -
Yazara ileti gönder Yazara ait tüm makaleler Tüm LAN makaleleri
LAN
bölümün
de yer
alan son
5
makale
OpenBSD Pf ve Squid ile Transparent Proxy Kurulumu Switch Kullanılan Ağlarda Trafik dinleme(Sniffing) SMTP Sunucuların Çoklu Mail Dağıtım Yöntemleri Tcpdump kullanarak Ağ trafiği izlemek – Bölüm
1 VPOPMAIL Kullanma Kılavuzu
Bölüm : LAN
Düzey :
Tarih : 1.2.2005
Yazar : Huzeyfe ÖNAL
E-mail : huzeyfe [at] enderunix.org
Tcpdump kullanarak Ağ trafiği izlemek – Bölüm 1
Huzeyfe ÖNAL
Trafik Nedir? Trafiği izleyerek ne elde edebiliriz, ya da hangi sorunlarımıza çözüm bulabiliriz?
Sniffer olarak adlandırılan ve ağ trafiğini izlemek amacıyla yazılan birçok program vardır, bunlardan UNIX/Linux
dünyası için en bilineni ve sık kullanılanı tcpdump’tır, tcpdump ilk olarak UNIX sistemler için yazılmış sonrasında
NRG (Network Research Group) tarafından Windows’a da port edilmiştir ve windump olarak adlandırılmıştır. Ben
bu yazıyı hazırladığım sırada tcpdump’ın son versiyonu 3.8 idi, programın son sürümüne ve çeşitli ek bilgilere
ulaşmak için ana sayfasını ziyaret edebilirsiniz( http://www.tcpdmp.org). Windows üzerinde kullanmak
istiyorsanız http://netgroup-serv.polito.it/winpcap adresinden indireceğiniz ek yazılımı kurup yine
http://netgroup-serv.polito.it/windump adresinden edinebileceğiniz ana yazılımı kurmanız gerekmetedir.
Promiscious Mode Nedir?
Normalde bir ağ arabirimi sadece hedef adresi kendisini gösteren paketlerle ilgilenir, diğer paketleri
önemsemez. Promisc modda ise kendisine gelen her paketi kime yollandığına bakmadan kabul eder,
hatırlayacak olursak hub tipi ağ aygıtlarındaki iletişim ortak bir havuzda gerçekleşiyordu yani huba bağlı 8
makinemiz varsa bu 8 makine arasındaki her türlü iletişim diğerleri tarafından da izlenebiliyordu,
Şekil 1-A
Şekil 1-A da görebileceğiniz gibi HUB ile bağlanmış 4 adet makinemiz var,şimdi şöyle bir senaryo üretelim A
makinesi ile B makinesi gizlice haberleşmek istiyor ve A makinesi B ile iletişime geçiyor, A makinesindeki Temel
Reis B makinesindeki Safinaz'a seni seviyorum mesajı yolluyor bu arada C makinesinin yöneticisi olan Kaba
Sakal da Temel Reis ile Safinaz arasındaki geçen muhabbeti izlemek istiyor.
Kaba sakal bulundukları ortamın hub olduğunu bildiği için Ethernet kartını promisc moda geçiriyor ve Temel Reis
ile Safinaz arasındaki trafiği dinliyor ve internette yaptığı kısa bir araştırma neticesinde Temel Reis ile Safinaz’ın
iletişiminde araya girerek Temel Reis’in Safinaz’a yolladığı paketleri istediği gibi değiştirebiliyor. Temel Reis
Safinazı kaba sakala kaptırdıktan sonra kendini Ağ güvenliğine adıyor ve yaptığı araştırmalar sonucu sağlam bir
switch üzerinde çeşitli kurallar yazarak trafiğini dinlenemeyecek hale getiriyor;)
Ethernet kartları sıfır yapılandırma ile “promisc” özelliğine sahip değildirler,ethernet arabirimimizi normal
moddan “promisc” moda geçirmek için ifconfig komutuna promisc parametresini vermemiz yeterlidir.
# ifconfig eth0 Link encap:Ethernet HWaddr 00:D0:B7:B6:D1:0C inet addr:194.27.72.88 Bcast:194.27.127.255 Mask:255.255.192.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:5228531 errors:0 dropped:0 overruns:0 frame:0 TX packets:4528739 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1796789472 (1713.5 Mb) TX bytes:3725692 (3.5 Mb) Interrupt:18 Base address:0x5400 Memory:f6101000-f6101038
# ifconfig eth0 promisc
# ifconfig eth0 Link encap:Ethernet HWaddr 00:D0:B7:B6:D1:0C inet addr:194.27.72.88 Bcast:194.27.127.255 Mask:255.255.192.0 UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:5228715 errors:0 dropped:0 overruns:0 frame:0 TX packets:4528864 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1796807077 (1713.5 Mb) TX bytes:3737015 (3.5 Mb) Interrupt:18 Base address:0x5400 Memory:f6101000-f6101038
Yukarıdaki farklılıktan(PROMISC)da görebileceğimiz gibi ifconfig komutuna promisc parametresini ekleyince
özellikler satırında arabirimin “PROMISC” moda geçtiği hemen belirdi.
Promisc moddan cıkarmak istediğimizde ise
# ifconfig eth0 –promisc
komutunu vermemiz yeterlidir.
NOT:! Tcpdump komutu çalıştırıldığında ağ arabirimini otomatik olarak promisc moda geçirir ve tcpdump’ı
sonlandırdığınızda yine ağ arabirimini promisc moddan çıkarır.
Karışık bir ağda tcpdump ile sadece kendi makinenizi ilgilendiren paketleri yakalamanız icap ederse tcpdump'a
sadece kendi makinemizle ilgilenmesini söyleyebiliriz. Yani kısaca hedef adresi ben olmayan paketlere karışma
demiş oluruz, bu bize amacımıza daha kolay ulaşmamızı sağlar .Tcpdump’in başlatıldığında promisc moda
geçmemesini sağlamak için gerekli parametre yazının ilerleyen bölümlerinde detaylıca verilmiştir.
Kullanımı
NOT! Linux/UNIX altında tcpdump programını kullanabilmek için ya root haklarına sahip olmak lazım ya da
tcpdump programının suid olarak çalışması lazım
NOT! Tcpdump, paketleri kernel’a giriş-çıkış yapmadan yakalar bu sebeple iptables(Linux için) ile yazdığınız
kurallar tcpdump’ı etkilemez.
Tcpdump'ın en basit kullanımı parametresiz kullanımdır
# tcpdump
Gibi.
Tcpdump ile kullanabileceğimiz Temel Parametreler
-i / Arabirim Seçimi
Sistemimizde birden fazla arabirim varsa ve biz hangi arabirimini dinlemesini belirtmezsek tcpdump aktif olan
ağ arabirimleri arasında numarası en düşük olanını dinlemeye alır, mesela 3 adet aktif Ethernet ağ arabirimimiz
var; eth0, eth1, eth2[Linux için geçerlidir,diğer unix çeşitlerinde farklıdır,Ekler kısmında diğer unixler için neler
olabileceği listelenmiştir.] şeklinde biz bu makinede tcpdump komutunu yalın olarak kullanırsak tcpdump eth0
arabirimini dinlemeye alacaktır.
Eğer ilk arabirimi değilde istediğimiz bir arabirimi dinlemek istiyorsak –i parametresi ile bunu belirtebiliriz
# tcpdump -i eth2
komutu ile sistemimizdeki 3.Ethernet kartını dinlemeye alıyoruz.
-n /İsim Çözümleme
Eğer tcpdump ile yakalanan paketlerin dns isimlerinin çözülmesini istemiyorsak -n parametresini kullanabiliriz.
normal kullanım# tcpdump
17:18:21.531930 IP huzeyfe.32829 > erhan.telnet: S 3115955894:3115955894(0) win 5840
17:18:21.531980 IP erhan.telnet > huzeyfe.32829: R 0:0(0) ack 3115955895 win 0
-n parametresi ile kullanım# tcpdump -n
17:18:53.802776 IP 192.168.0.100.32835 > 192.168.0.1.telnet: S 3148097396:3148097396(0) win 5840
17:18:53.802870 IP 192.168.0.1.telnet > 192.168.0.100.32835: R 0:0(0) ack 3148097397 win 0
burada huzeyfe makinesi 192.168.0.100, erhan makinesi 192.168.0.1 IP adresine sahiptir. İsimlerin yanında
protocol ve port numaralarınında isimlere çevrimini istemiyorsak –nn parametresini kullanabiliriz
# tcpdump –nnyukarıda (-n için)verdiğimiz örnekte – yerine -nn koyarsanız hem isim hemde port çözümlemesi yapılmayacaktır,yani telnet yerine 23 yazacaktır.
-t /Zaman Damgası Gösterimi
Eğer tcpdump'ın daha sade bir çıktı vermesini istiyorsak ekrana yazdığı satırların başındaki timestamp(zaman
damgası, hangi paketin hangi zaman aralığında yakalandığını belirtir) kısmını istemediğimizi belirtebiliriz.
Timestamp[zaman damgası]leri istemediğim durumlarda – t parametresi ile bunu belirleyebiliriz.
Timestamp li çıktı# tcpdump
15:32:13.479577 cc.kou.edu.tr.200 > 212.174.108.162.29157: . 68:1528(1460) ack 53 win 20440 (DF) [tos 0x10]
15:32:13.479582 cc.kou.edu.tr.200 > 212.174.108.162.29157: P 1528:2456(928) ack 53 win 20440 (DF) [tos 0x10]
Timestamp(Zaman damgası)siz çıktı # tcpdump –t
2.174.108.162.29157 > cc.huzeyfe.net.2000: P 3329:3381(52) ack 11236 win 17520 (DF) [tos 0x20]
cc.huzeyfe.net.2000 > 2.174.108.162.29157: . ack 2289 win 8576 (DF) [tos 0x10]
-w /Yakalanan paketleri kaydetme
Tcpdump’ın yakaladığı paketleri ekradan değilde sonradan incelemek üzere bir uygun bir şekilde dosyaya
yazmasını istersek -w parametresini kullanabiliriz. kaydettiğimiz dosya libpcap uyumlu olduğu için sadece
tcpdump ile değil birçok network snifferi tarafından okunup analiz edilebilir.
# tcpdump -w dosya_ismi
-r /Kaydedilmiş Paketleri Okuma
-w ile kaydettğimiz paketleri okumak içinde -r parametresini kullanabiliriz.
# tcpdump -r dosya_ismi
not!! -w ile herhangi bir dosyaya kaydederken filtreleme yapabiliriz,yani sadece su tip paketleri kaydet ya da timestampleri kaydetme gibi,aynı şekilde -r ile paketlerie okurken filtre belirtebiliriz.Bu filtrenin -w ile belirlediğimiz filtre ile aynı olma zorunluluğu yoktur.
# cd /tmp/# tcpdump -w log icmptcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytesctrl c
# tcpdump -r log -nnreading from file log, link-type EN10MB (Ethernet)17:31:01.225007 IP 192.168.0.100 > 192.168.0.1: icmp 64: echo
request seq 017:31:01.225119 IP 192.168.0.1 > 192.168.0.100: icmp 64: echo reply
seq 0
17:31:02.224988 IP 192.168.0.100 > 192.168.0.1: icmp 64: echo request seq 1
17:31:02.225111 IP 192.168.0.1 > 192.168.0.100: icmp 64: echo reply seq 1
-c / Yakalanacak paket miktarını belirleme
tcpdump'a -c parametresini vererek ne kadar paket yakalayıp duracağını söyleriz.
# tcpdump -i eth0 -c 5tcpdump: verbose output suppressed, use -v or -vv for full protocol
decodelistening on eth0, link-type EN10MB (Ethernet), capture size 96
bytes00:59:01.638353 IP maviyan.net.ssh > 10.0.0.2.1040: P
1010550647:1010550763(116) ack 774164151 win 857600:59:01.638783 IP 10.0.0.2.1040 > maviyan.net.ssh: P 1:53(52) ack
116 win 1652000:59:01.638813 IP maviyan.net.ssh > 10.0.0.2.1040: P 116:232(116)
ack 53 win 857600:59:01.639662 IP 10.0.0.2.1040 > maviyan.net.ssh: P 53:105(52)
ack 232 win 1640400:59:01.640377 IP maviyan.net.ssh > 10.0.0.2.1040: P 232:380(148)
ack 105 win 85765 packets captured5 packets received by filter0 packets dropped by kernel
tcpdump -c sayi ile belirlediğimz sayıda paketi yakaladıktan sonra çalışmasını durduracaktır.
-s /Yakalanacak paket boyutunu byte cinsinden belirleme
-s parametresi ile yakalancak paketlerin boyutunu byte olarak belirleyebiliriz.
-v /Detaylı Loglama
-v parametresi ile tcpump’dan biraz daha detaylı loglama yapmasını isteyebiliriz. Mesela bu parametre ile
tcpdump çıktılarını TTL ve ID değerleri ile birlikte edinebiliriz.
# tcpdump -vtcpdump: listening on eth0, link-type EN10MB (Ethernet), capture
size 96 bytes17:36:55.161861 IP (tos 0x10, ttl 64, id 17228, offset 0, flags
[DF], proto 6, length: 60) huzeyfe.32981 > erhan.ssh: S [tcp sum ok] 4229750775:4229750775(0) win 5840
17:36:55.161940 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto 6, length: 60) erhan.ssh > huzeyfe.32981: S [tcp sum ok] 3303151192:3303151192(0) ack 4229750776 win 5792
-p /Promisc Moddan Kaçış
-p parametresi ile de sniff yaptığımız arabirimin promisc moddan çıkmasını sağlarız,promisc moddan çıkmak
bize ne sağlar? Promisc moddan çıkmakla sadece o arabirime gelen ve o arabirimi ilgilendiren paketler işlenir ki
bu paketlerde ya broadcast ya da direct o arabirimin adresi olması lazım. Daha çok tcpdump’ın çalıştığı
makineye ait bir paket analizi yapmak istediğimiz zaman kullanılabilecek türden bir parametredir.
Mesela yerel ağınızda bağlı bulunduğunuz makinede sorun gidermeye çalışıyorsunuz ve bu sebeple tcpdump
çalıştırıp makinenizi dinlemeye aldınız fakat o da ne? tüm yerel ağda geçen paketler ekranınızda akıp
gidiyor(bağlı bulunduğunuz aygıtın HUB olduğunu göz önüne aldım)işte bu karmaşadan kurtulmak istiyorsak
sadece bizim arabirimiz hedefli gelen paketleri almalıyız
# tcpdump -p –i eth0
host Parametresi
Sadece belli bir host a ait paketlerin izlenmesini istiyorsak host parametresi ile belirtim yapabiliriz.
bash-2.05b# tcpdump host 10.0.0.21
bu komutla kaynak ya da hedef ip adresi 10.0.0.21 olan paketlerin alınmasını istiyoruz.
dst host (Hedef Host Belirtimi)
dsh host ;hedef host olarak belirtilen adrese ait paketleri yakalar,
# tcpdump -i eth0 dst host 10.0.0.1yukarıdaki komutla makinemizin eth0 arabirimine gelen ve hedefi 10.0.0.1 olan tüm paketler yakalanacaktır, burada dikkat etmemiz gereken bir nokta var o da şu:yerel ağımızda 10.0.0.21 makinesinden 10.0.0.1 makinesine bir trafik oluştuğu zaman, dinlemede olan makinemizde(10.0.0.101)hedef adresi 10.0.0.1 olan paketler oluştuğunu göreceksiniz. # tcpdump -i eth0 dst host 10.0.0.1
tcpdump: listening on eth010:47:20.526325 10.0.0.21 > 10.0.0.1: icmp: echo request
ile de hedef ip si 10.0.0.1 olan ip adreslerini izlemiş oluyoruz.
src host (Kaynak Host Belirtimi)
src host tanımı ilede kaynak hostu belirterek dinleme yapabiliriz, mesela kaynak hostu 10.0.0.21 olan paketleri
(10.0.0.21 makinesinde )dinlemeye alalim.
# tcpdump -i eth0 src host 10.0.0.21tcpdump: listening on eth010:52:00.620897 10.0.0.21.3409 > baym-cs253.msgr.hotmail.com.1863:
P 1541540362:1541540367(5) ack 3598940393 win 17484 (DF)10:52:01.025286 10.0.0.21.3409 > baym-
cs253.msgr.hotmail.com.1863: . ack 9 win 17476 (DF)10:52:14.758635 10.0.0.21.4013 > 10.0.0.1.telnet: S
3499731684:3499731684(0) win 16384 (DF)sadece ip adresi değil host ismide belirtebiliriz. bash-2.05b# tcpdump host hotmail.comdst ve src i aynı komuttada kullanabiliriz. Örneğin, kaynak ip si 10.1.0.59 hedef hostu 10.1.0.1 olan paketleri izlemek istersek # tcpdump src host 10.1.0.59 and dst host 10.1.0.1
komutunu verebiliriz. Burada dikkatimizi çeken ufak bir değişiklik oldu,src host ve dst host arasına “and” geldi,evet tcpdump ile kompleks kurallar yazarken sıkça kullanacağımız kelimelerden biri de “and” dir,ilerleyen bölümlerde “and” in yerine hangi dizimler gelebilir onlarıda göreceğiz. Host parametresi ile de aynı şekilde bir sonuca ulaşabiliriz host parametresi ile kaynak ya da hedef hosttan herhangi biri uygunsa paket yakalanır.
port Parametresi (Port Belirtimi)
Belirli bir portu dinlemek istediğimizde kullanacağımız parametredir. Host gibi src ve dst oneklerini alabilir.
src ile kaynak portu dst ile hedef portu belirtebiliriz . dst ya da src önekini kullanmazsak hem kaynak hemde
hedef portu alır.
# tcpdump port 23# tcpdump dst port 23ile hedef portu 23 olanlar # tcpdump src port 23ile de kaynak portu 23 olan paketler izlemeye alınır. Aşağıdaki örnekte belirli ip ve belirli port numaralarını içeren paketleri port ve isim çözümleme yapmamasını(-nn)söylüyoruz. # tcpdump -nn host 192.168.2.165 and port 23
tcpdump: listening on eth019:20:00.804501 192.168.2.10.1221 > 192.168.2.165.23:S2565655403:2565655403(0) win 16384 (DF)
-e / (Layer 2 paket loglama)
Bu komuta ek olarak –e parametresini de verirsek bu sefer tcpdump 2.katmana gore paket yakalama işlemi
başlatır yani bu durumda ip adresleri değilde MAC adresleri ile işlem yapılmış olur.
# tcpdump –t –nn -etcpdump: verbose output suppressed, use -v or -vv for full protocol
decodelistening on eth0, link-type EN10MB (Ethernet), capture size 96
bytes
00:0b:db:1c:4b:61 > 00:02:44:27:73:79, ethertype IPv4 (0x0800), length 52: IP 192.168.0.100.32768 > 192.168.0.1.33435: UDP, length 10
00:0b:db:1c:4b:61 > 00:02:44:27:73:79, ethertype IPv4 (0x0800), length 52: IP 192.168.0.100.32768 > 192.168.0.1.33436: UDP, length 10
00:02:44:27:73:79 > 00:0b:db:1c:4b:61, ethertype IPv4 (0x0800), length 80: IP 192.168.0.1 > 192.168.0.100: icmp 46: 192.168.0.1 udp port 33436 unreachable
00:0b:db:1c:4b:61 > 00:02:44:27:73:79, ethertype IPv4 (0x0800), length 52: IP 192.168.0.100.32768 > 192.168.0.1.33437: UDP, length 10Sumele ve hitit veya kapadokya hostları arasında geçen trafiği izlemek için # tcpdump host sumele and \( hitit or kapadokya \)
Kaynaklarhttp://www.firewall.cxhttp://www.olympos.orghttp://www.tcpdump.orghttp://www.huzeyfe.nethttp://forum.ceviz.net
VPOPMAIL Kullanma Kılavuzu Huzeyfe ÖNAL
Vpopmail bir sanal domain ve sanal kullanıcı yonetim aracı olarak yazılmıştır, yazılmasında temel MTA (Mail Transfer Agent)olarak qmail ele alındığı için bu sadece bu MTA ile çalışır. Son zamanlarda postfix ile birlikte de çalışabilmesi için gerekli düzenlemeler yapılmıştır. Postfix ile çalıştırabilmeniz için yine aynı sitede bulunan vpopmail-postfix dökümanına göz atabilirsiniz.
Vpomailin halihazırda efektif ve esnek yapısı qmailin yönetiminin kolaylaşmasında önemli derecede rol oynamıştır ve göreceli olarak qmailin MTA lar arasındaki yükselişe katkısının
büyük olduğunu söyleyebiliriz. Ken Jones tarafından http://www.inter7.com/vpopmail adresinde yönetilen vpopmail sadece yazılımın bulucusu tarafından değil tüm dünyadaki açıkkaynak kod severler tarafından desteklenmektedir. Kaynak kodları isteyen herkese açıktır ve ücretsizdir (GPL lisanslı). Vpopmaile ek program yazmak isteyen yazılımcılar için oldukca kaliteli bir api sunar .Sanal domain yönetimindeki başarısı birkaç domainle kısıtlı değildir üzerinde binlerce sanal domain koşan mta’lari oldukça rahat bir şekilde kaldırabilmektedir.
Vpopmailin önemli bileşenleri
Vchkpw qmail-pop3d için bir onaylama aracı
Vdelivermail sanal kullanıcılara gelen mailleri yerlerine dağıtan araç(Mail Delivery Agent)
Vadduser
Vadddomain
Vmoduser
….
Normal qmail kurulumunda eklemek istediğimiz her mail hesabı için bir sistem hesabı lazimdir. Vpopmail kullandığımız zaman ise tüm mail hesapları için ortak kullanılabilecek bir sistem hesabı oluşturularak tüm hesaplar bu sistem kullanici hesabına atama yapılır. Böylece tüm kullanıcıların ana ev dizini aynı olur (/home/vpopmail gibi), alt ev dizinleri ise /home/vpopmail/domains/bizimev.net/huzeyfe şeklinde olur.
Yeni Sanal Domain eklemek
Bunun icin vpopmail in bize sundugu vadddomain programını kullanabiliriz. Normalde vadddomain programı /home/vpopmail/bin/ dizinindedir ve bunu konsoldan direkt çalıştırmaya kalkarsanız aşağıdaki hatayı alırsınız.
# vadddomain deneme.com
-bash: vadddomain: command not found
Her seferinde bu pathi uzun uzun yazmak yerine bu programların bulunduğu dizini PATH değişkenimize ekleyerek konsoldan sadece isimleri ile çağırabiliriz, bunun için;
/home/vpopmail/bin dizinini $PATH degişkenine eklemeliyiz
Bu işlem aşağıdaki gibidir;
#vi .bash_profile (komutu ile dosyayi acip) (root kullanıcısı olarak düşünülmüştür)
$PATH=$PATH:$HOME/bin:/home/vpopmail/bin
şeklinde getirin. Kaydedip çıkın sonra değişikliklerin aktif olmasını sağlamak için
#source /root/.bash_profile
komutunu kullanin.
vadddomain ile kullanabilecegimiz bazi secenekler ve kullanimi
vadddomain [secenekler] domain_ismi [postmaster passwd]
-e : secenegi ile eklediğimiz domaindeki bulunmayan hesaplara gelen mailleri bir hesaba gonderebiliriz.
-d : ile bu domainin hangi dizinde dosyalari barindiracaği belirtilir.
(default degeri(/home/vpomail/domains/…) uygundur.)
vadddomain komutu ile eklediğimiz domain /var/qmail/control/rcpthost dosyasina otomatik eklenir. Bizim elle eklememize gerek yoktur. Bu dosya haricinde birkaç dosyada daha değişiklik gerçekleşir bu dosyalar aşağıdaki gibidir.
/var/qmail/control/rcpthosts
/var/qmail/control/morercpthosts ( rcpthosts dosyası 50 satırdan fazla ise)
/var/qmail/control/virtualdomains
/var/qmail/users/assign
Örnek olması amacı ile bizimev.com domainini sisteme ekleyelim,
# vadddomain bizimev.com
Please enter password for postmaster: bir parola belirletin
enter password again: aynisini yazin
Domainimizi ekledik fakat bu domainin işlevsel hale gelebilmesi için yani dış dünya ile mail iletişimimizi saglayabilmek icin yapmamız gereken bir şey daha var, burada konunun dışında kaldığımız için değinmeyeceğim sadece hatırlatma açısından bahsediyorum eklediğimiz domain in dns kayitlarinin duzgun olması gerekiyor.
DNS kayıdından kastım MX kaydıdır bu domaine ait MX kaydının mail sunucu olarak kullandığımız makineyi göstermesi gerekmektedir.
Standart dns dokumanlarinda MX kayitlarinin ip adresi degil de fqdn olmasi gerektiği belirtilmektedir. Bazi mail sunucular ornegin (spymac.com) mx kaydi ip olan sunuculardan mail kabul etmemektedir. Veya cesitli sorunlar cikabilmektedir.
Dns teki mx kaydi
Bizimev.net. IN MX 0 mail.bizimev.net.
Seklinde olmalıdır.
Domainimizi ekledik simdi sira bu domainimize kullanıcı mail hesaplarını oluşturmak.
Yeni mail hesabı oluşturmak icin vadduser komutu kullanmalıyız. Bu komutu hem root hem de vpopmail kullanıcısı olarak kullanabiliriz. Tavsiyem vpopmail kullanıcısı olarak olarak kullanmanız yönündedir. Vpopmail kullanıcısı olmak için komut satırından
#su –vpopmail
Yazmalıyız.
Vadduser Kullanımı
Vadduser [secenekler] email [parola]
en basit hali ile kullanımı bu şekildedir, bunlar haricinde
-q ile kullanıcıya kota belirleyebiliriz.
-n parolasız hesap oluşturabiliriz
-r otomatik değişken parola oluşturmasını sağlayabiliriz.( yahoo veya benzeri bazi sistemlerde sizin icin otomatik hazirlanan parolalari hatirladiniz degilmi?)
# vadduser [email protected]
Please enter password for [email protected]:
enter password again:
Vpasswd
Eklediğimiz bir kullanıcının parolasını değiştirmek istersek vpasswd programının kullanabiliriz, vpasswd’nin alacağı 2 parametre vardır bunlardan ilki parolası değiştirilecek kullanıcı adı diğeride o hesaba atamak istediğimiz parola vpasswd kullanıp bir mail hesabına parola atarken aşağıdaki 2 yöntemide kullanabilirsiniz. Birinci şeklin dezavantajı yazdığınız parola bir başkası tarafından history komutu aracılığı ile okunabilir.
# vpasswd mail_adresi parola
yada
# vpasswd mail_adresi (den sonra enter a basarak)
bizden iki defa defa sifre sormasini saglayabiliriz.
Örnek;
#vpasswd [email protected]
Please enter password for [email protected]:
enter password again:
Vpoppbull
Bir domaine ait tüm kullanıcılara mail yollamak için kullanılır, vpopbull komutu ile mail sistemimizdeki tüm domainlere yada her bir domaine ayrı ayrı toplu mailler yollayabiliriz, mesela xyz.com kullanıcıları için özel bir uyarı maili atmak istersek bunu aşağıdaki biçimde yapabiliriz.
#vpopbull –f /tmp/uyari – v -e /tmp/xyz-haric xyz.com
Örnekte verdiğimiz parametreleri açıklayalım.
-f dosya_ismi : Toplu mail göndermek istediğimiz metni ibr dosyay yazarak bunu –f parametresi ile kullanmalıyız.
-e dosya_ismi, bazen bir domainteki tüm kullanıcılara değilde bazı özellikleri barındıran kullanıcılara mail atmak isteyebiliriz, mesela sirketinizdeki tüm kullancıılara uyarı maili atmak istiyorsunuz fakat bu mailin yöneticilere gitmesini istemiyorsunuz, işte maili almasını istemdiğiniz mail adreslerini bu dosyaya her biri bir satıra gelecek şekilde yazabilirsiniz.
-v bu parametre ile yapılan işleri konsol ekranından izleyebilirsiniz.
xyz.com hangi sanal domaine toplu mail gönderimi yapılacağını belirler, burada herhangi bir domain ismi belirtmezseniz sistedem tanımlı tüm sanal domain kullanıcılarına göndermiş olursunuz.
Bunların haricinde işinize yarayabilcek bir parametre(-n) daha vardır ki o da genelde –v parametresi ile birlikte bir sanal domain yada tüm sanal domainlere ait kullanıcıları listelemeye yarar.
Bir domain ait tüm kullanıcıları listemele için
#vpopbull –v –n domain.ismi
Tüm tanımlı sanaldomain hesaplarını listelemek için
#vpopbull –v –n
Vaddaliasdomain
Abc.com diye bir domaininiz var ve bu domaine kayıtlı binlerce mail hesabını kullanan çalışanınız, gün geldi şirketiniz domain ismini değiştirmeye karar verdi yada şuanki halinden farklı bir domain kullanmak istedi(mail.abc.com gibi)bu durumda tüm kullanıcıları yeni domaine aynı hesap bilgileri ile eklemek zorundayız, işte vaddaliasdomain burada yardımımıza koşarak bir domain adını başka bir domain adı olarak tüm kullanıcı hesap bilgileri ile kullanabilmemize olanak sağlıyor.
Yine verdiğimiz örnekten yola çıkarsak eskiden abc.com olan mail domainimiz mail.abc.com olarak değiştirildiyse tüm kullanıcıları herhangi bir değişiklik yapmaya zorlamadan
#vaddaliasdomain abc.com mail.abc.com
komutu ile yeni sisteme aktarabiliriz.
Vdeluser
Basitce sistemde bulunan bir mail hesabını silmeye yarar.
#vdeluser [email protected]
Vdeldomain
sisteme eklediğimiz bir domain hesabını siler.
#vdeldomain bizimev.net
Vmoduser
Vmoduser ile kullanici yada domain uzerinde bircok degisiklik yapilabilir.
Vmoduser in genis kullnimi icin komut satirina vmoduser yazmaniz yeterlidir. Vmoduser ile değişiklik yapabileceğiniz bazı özellikler
-q kota ile kota belirleyebiliriz
-u ile kullanıcının dial-up bağlantı ile maillerine erişememesini sağlayabiliriz
-p ile pop3 hizmeti kullanmasını engelleyebiliriz
-w ile webmail erisimini kısıtlayabiliriz
-i ile imap erisimi kısıtla
-a ile kullanıcıya qmailadmin arabirimini yönetici olarak kullanabilmesi hakkını atarız
Vuserinfo
Vuserinfo komutu ile kullanıcı hakkında geniş bilgi edinebilirsiniz. (sifreli parola ve acik parola dahil.)
Vuserinfo’nun en basit kullanımı
vuserinfo mail_adresi
şeklindedir, kullanabileceğiniz tüm seçenekleri görebilmek için
komut satırından
#vuserinfo yazmanız yeterlidir.
Örnek;
# vuserinfo [email protected]
name: huzeyfe
passwd: $1$5A;mF$81hH5k56PFsDULWCJPWUG0
clear passwd: 098lkkjfguıyfgy878
uid: 0
gid: 0
all services available
dir: /home/vpopmail/domains/bizimev.net/huzeyfe
quota: 30000000S,50000C
usage: 0%
last auth: Sat Sep 25 23:52:11 2004
last auth ip: 192.168.0.3
Vdominfo
Bir domaine ait özellikleri öğrenmemize yarar
# vdominfo bizimev.net
domain: bizimev.net
uid: 520
gid: 522
dir: /home/vpopmail/domains/bizimev.net
users: 60000
Kullanılabilecek parametreleri görmek için
#vdominfo -h komutunu kullanabilirisiniz.
Vpopmailin tanımında qmail’e bir eklenti olarak yazıldığıdan bahsetmiştik bu eklenti qmail in çalışmasını az da olsa değiştirir. Yaptığı değişikliklerden en önemlisi Qmail’in standart onaylama mekanizmasini kendisininki ile değiştirmesidir.
Vpopmail de roaming user ozelligi ne işe yarar?
Eğer vpopmaili kurarken –roaming-user=y seçeneği ile derlediyseniz sisteminizde bu özelliği kullanabilirsiniz demektir, öntanımlı olarak vpopmail bu özellikten yoksun bir şekilde derlenmektedir. Roaming user ile mobile kullanıcılarımıza (farkli mekanlardan Outlook vb gibi mail istemcileri ile baglanan ) kendilerini pop3 ile tanıttıktan(pop3 için istenen kullanıcı adı ve parolayı doğru girmek) sonra sonra belirledigimiz bir müddet boyunca kullanıcının bağlandığı o IP adresine RELAY hakkı tanımaktan ibarettir
Böylece kullanıcı herhangi bir kısıtlama olmaksızın mail gönderebilir, böylece hem mail sunucumuzu SPAM aracı olmaktan çıkarmış oluruz hem de farklı yerlerden bağlanmak isteyen kullanıcılarımızı kendi üzerimizden mail haberleşmelerini sağlamış oluruz.
Bazı kaynaklarda bu özelliğe pop-before-smtp denildiğini görebilirsiniz. Adından da anlaşılacağı üzere önce POP bağlantısı gerekir sonra smtp mekanizmasının kullanmasına izin verilir.
Pop-before-smtp(roaming-user ) olayı aşağıdaki gibi gerçekleşir
1- kullanici mail sunucuya pop3 erisimi icin girisimde bulunur. Username passwd onaylamasini gecer.
2 –vchkpw programi kullanicinin baglandigi ip adresini/home/vpopmail/etc/tcp.smtp dosyasina yazar. Burada tcp.smtp.cdb dosyasini bu adresini icerecek sekilde yeniden olusturun
3 boylece kullanici istedigi adrese rahatlikla mail gonderebilir duruma geliyor.
4 clearopensmtp adindaki bir programi crontab a yazarak istedigimiz zaman aralıklarında çalıştırabiliriz. Bunun amacı belirlediğimiz süre dolduğunda kullanıcının ip adresinin tcp.smtp dosyasından silinmesidir.
Crontab a asagidaki gibi girdi eklenebilir.
0 * * * * /home/vpopmail/bin/clearopensmtp
Bu girdi ile her saat başı clearopensmtp programının çalışmasını sağlıyoruz, yani mobile kullanıcılarımıza kendilerini pop3 ile onaylattıklarında bir saatlik bir relay izni vermiş oluyoruz.
Sistemimizi roaming-user ozelliği ile derlediysek /home/vpopmail/etc/tcp.smtp adında bir dosya oluşmuş olmalıdır bu dosyanın içerisinde aşağıdaki gibi tanımlar yapabiliriz.
127. : allow RELAYCLIENT =””
bu satir ile 127 ile baslayan tum ip adreslerine relay izni verdik.
10.1.0.17 ip adresine relay izni vermek icin yine bu dosyaya asagidaki satirlari eklememiz yeterlidir.
10.1.0.17 : allow , RELAYCLIENT =“”
NOT:vpopmail kullanici olarak [email protected]
yerine huzeyfe%mail.net veya huzeyfe-mail.net kullanabilir.
vpopmail’in sağladığı tüm programları görebilmek için /home/vpomail/bin dizinini inceleyebilirsiniz
# cd /home/vpopmail/bin/
# ls
clearopensmtp valias vdelivermail vipmap vpasswd vuserinfo
vaddaliasdomain vchkpw vdeloldusers vkill vpopbull
vadddomain vconvert vdeluser vmkpasswd vqmaillocal
vadduser vdeldomain vdominfo vmoduser vsetuserquota
Vpopmaili kurarken hangi özellikler ile kurabileceğinizi öğrenmek istiyosanız, vpopmailin kaynak dosyalarınmın bulunduğu dizinde ./configure --help komutunu vermeniz yeterlidir
Huzeyfe ÖNAL huzeyfe[at]cc.kou.edu.tr 06/10/2004
Anahtar
: -
Yazara ileti gönder Yazara ait tüm makaleler Tüm LAN makaleleri
LAN
bölümün
de yer
alan son
5
makale
OpenBSD Pf ve Squid ile Transparent Proxy Kurulumu Switch Kullanılan Ağlarda Trafik dinleme(Sniffing) SMTP Sunucuların Çoklu Mail Dağıtım Yöntemleri Tcpdum
p kullanarak Ağ trafiği izlemek – Bölüm 1 VPOPMAIL Kullanma Kılavuzu
Bölüm : LAN
Düzey :
Tarih : 8.10.2004
Yazar : Huzeyfe ÖNAL
E-mail : huzeyfe [at] enderunix.org