NETCAT – NC kullanarak veri transferi sağlamak

Netcat ile iki bilgisayarlar arası veri transferi nasıl yapılır ona bakacağız. Bu işlemi makineler arasında port açarak gerçekleştireceğiz.

Alıcı bilgisayar(receive)’da aşağıdaki komut çalıştırılarak port(3434) aktif edilip dosyam.txt için tünel açılır.

  • nc -l -p 3434 > dosyam.txt

Gönderici(sender) makinede’de aşağıdaki komut çalıştırılarak dosyam.txt aktarılır.

  • nc 192.168.1.12 3434 < dosyam.txt

Docker Container’a erişim için Host’un Nic portu üzerinden erişim izni – Firewalld port açma / Docker Container’ın İnternete Yönlendirme işlemi

  • How to configure firewalld to allow docker containers free access to the host’s network ports.?

Burada dikkat etmeniz gereken container için host’ta match ettiğiniz portu güvenlik duvarı rule’sinde belirtmelisiniz. Ben 8080 portunu host’ta eşleştirdiğim için onu rule’de tanımlayacağım. Yani tarayıcıdan 8080 üzerinden contaniner’a erişeceğim.

Sırasıyla aşağıdaki komutları çalıştırmanız yeterlidir.

firewall-cmd –permanent –zone=trusted –change-interface=docker0
firewall-cmd –permanent –zone=trusted –add-port=8080/tcp
firewall-cmd –reload

  • Enable forwarding from docker containers to the outside world.?

Docker Container’ınızın internete çıkabilmesi için aşağıdaki işlemleri yapmanız yeterlidir.

systctl komutu ile net.ipv4.conf.all.forwarding değerini 1 yapmalısınız. Ardından iptables yada firewalld forward rule’sini tanımlamanız yeterli.

sysctl net.ipv4.conf.all.forwarding=1
sudo iptables -P FORWARD ACCEPT

ya da

firewall-cmd –direct –add-rule ipv4 filter FORWARD 0 -i docker0 -o ens3 -j ACCEPT
firewall-cmd –reload

Linux Sistemlerde ICMP Paketini Gizleme

Hemen hemen tüm saldırılar ağda ip’lerin kullanımı keşfedildikten ve öncesinde çeşitli taramalardan geçirildikten sonra zafiyetler tespit edilip, saldırılar başlatılabilir. IP Flooding(ip seli) ya da DDOS gibi saldırılardan korunmalıdır ki aslında DDOS, saldırı türlerinden en berbat olanı ve hala dünya üzerinden önlemeyle alakalı tam bir çözümü olmayan bir yöntemdir. Bu durumda network üzerinde sunucular dış dünyaya gizlemelidir. ICMP paketlerini gizlemeniz bunun için bir başlangıç olacaktır ki zaten bu paketin mesajları kritik sunucular için gizlenmelidir.

Bu yapılandırma yukarıda güvenlik duvarları aracılığı ile yapılabilir fakat burada bahsedeceğimiz yöntemde bu işlemi Linux kernel modülünde de yapılabilir olduğunu göstermektir ki Linux’un kernel modüllerinde bunun gibi bir sürü parametre bulunmaktadır ve her işlem için kritik durum arz eden kısımlarda bu parametreler ayrı ayrı incelenip, tek tek yapılandırılmalıdır. Bu değişiklik için kullanacağımız çekirdek parametresi “net.ipv4.icmp_echo_ignore_all” modülüdür. Şimdi bu işlemleri nasıl yapılacağına göz atılmalıdır ama öncesinde bu değişkenin varsayılan parametresi ne imiş ona bir göz atıp ve 0 olduğunu görelim.

> sysctl -a | egrep -ie “net.ipv4.icmp_echo_ignore_all”

Ardından aşağıdaki “sysctl” komutu ile değeri 1’e çekilmelidir fakat bu işlem anlık geçerli olacaktır yani sistem yeniden başladığı zaman varsayılan değerine geri dönecektir.

> sysctl net.ipv4.icmp_echo_ignore_all=1

Ya da

> echo “1” > /proc/sys/net/ipv4/icmp_echo_ignore_all

Bu işlemi kalıcı hale getirmek için “/etc/sysctl.conf” dosyasına bu değişken ve parametreyi yazmak gerekmektedir.

Herhangi bir editör yardımıyla “/etc/sysctl.conf” dosyasını edit edip “net.ipv4.icmp_echo_ignore_all = 1” ekleyebilir

ya da aşağıdaki komut aracılığı ile bunu sağlayabiliriz.

> echo “net.ipv4.icmp_echo_ignore_all = 1” >> /etc/sysctl.conf

Arından sysctl.conf dosyasını aşağıdaki komutla yeniden yükleyip, yapılandırmayı aktif hale getirmelisiniz.

> sysctl -p

Linux Sistemlerde Açık Portların Kontrolü – netstat – lsof

İşletim sisteminde hizmet veren her servis bir port üzerinden hizmet verir. Bu nedenle sistem yöneticisinin sistem üzerinde bu portlara hakim olması gerekiyor. Farkında olunmadığı ya da gizli kalmış açık bir port bulunmamalıdır. Çünkü bu portlar aracılığı ile dış dünyaya yani internete servis sunulmaktadır. Bu nedenle internete açık bağlantıların belirlenmesi kritik bir görevdir ve öneme sahiptir. İşletim sisteminizde tcp ve udp olarak açık olan port ve servisler “netstat” ve “lsof” yardımıyla tespit edilebilir.

> netstat -plntua

> lsof -i -n | egrep -i listen

FreeIPA Komut Satırı Üzerinden DNS A kaydı Oluşturma

Şimdi DNS’e A kaydı gireceğiz. Bu işlemi GUI’de basit bir şekilde de yapabilirsiniz ki ilerde bir makale ile bu konuya da değinebiliriz, şimdi ise aşağıdaki komut yardımıyla bu işlemi komut satırıcı üzerinden gerçekleştirebiliriz.

İlk önce kinit admine login olun(GUI ekranında login olduğunuz admin ve şifresi).

> kinit admin

Ardından aşağıdaki komutu çalıştırın.

# ipa dnsrecord-add [domain name] [record name] [record type] [ip adress]

> ipa dnsrecord-add fatlan.local dc02 –a-rec 192.168.2.160

PFSENSE İle Yerel Ağda DNS(53 Portu) Manipüle Etme

OpenSource proje olan Pfsense ile bağlantılı olduğunuz tüm ağlar için farklı DNS sunucu(53 portu) kullanmasını engellemek, daha doğrusu yönlendirmek ve bu yaptığınız işlemlerde son kullanıcıya müdahele edilmediği için haberleri dahi olmadan yapmak mümkün ve bir o kadar kolaydır. Dolayısıyla kullanıcılar kendi bilgisyarlarında DNS adresini değiştirse dahi firewall’dan sizin yapacağınız yönlendirme kuralına takılacak ve kendi yazdığı DNS ip’sine değil sizin yönlendirdiğiniz DNS sunucu/sunucular’ına gidecektir. Ayrıca bu durumdan haberi dahi olmayacaktır.

Bu işlemi ilgili interface, subnet yada ip için yapabilirsiniz.

Pfsense login olduktan sonra “Firewall / NAT / Port Forward” sekmesine tıklayın.

Ardından “Add” diyerek nat kuralını oluşturmaya başlayın.

Ardından aşağıdaki ss gibi kural yapısını oluşturun.

NoT : Yalnız burada bir şey belirtmem gerek. DNS sunucu yada sunucularınız kuralı işlettiğiniz subnetin içinde ise “Invert match.” seçeneğini aktif edip o ip yada ip’leri belirterek hariç tutmanız gerekmektedir. Çünkü ağın içindeki DNS sunucuları hariç tutmazsanız yönlendirme yaptıktan sonra bu DNS sunucularda dışırıya 53 portundan çıkmayacağı için ve kendinde olmayan kayıtları root ve diğer global DNS sunuculardan öğrenemeyeceği için kullanıcılara yansıyacak ve dolayısıyla iç DNS sunucularınız kendinde olmayan kayıtları çözemeyeceği için kullanıcılarda ip ye karşılık gelen domainleri çözemeyecektir.

Aşağıda örnek gösterilmiştir.

Linux DNS – BİND Versiyon Bilgisini Kapatma yada Özelleştirme

Hacker mantalitesinin ilk adımlarından olan, servis/servisleri keşfetmek, bu keşfi yaparken versiyon bilgisini almaktır. Daha sonra bu versiyonların barındırdıkları zafiyetleri kullanarak içeri sızmaktır.

Doğal olarak Linux üzerinde kullanılacak olan Dns servisi BİND-NAMED servisinin versiyon bilgisini gizlemek ya da özelleştirmek yapılacak olan mantıklı hareketlerden biri olacaktır.

Versiyon bilgisini aşağıdaki 3 yöntem ile elde edebilirsiniz.

1. NMAP

> nmap -sV -p 53 fatlan.com

2. DIG

> dig @fatlan.com version.bind txt chaos

3. NSLOOKUP

> nslookup -type=txt -class=chaos version.bind fatlan.com

Sıra geldi versiyon bilgisini gizlemeye. Bunun için “/etc/named.conf” dosyası içindeki “option” kısmındaki satırlara ek olarak aşağıdaki satırları da ekleyin. Ek olarak iserseniz hostname bilgisini de ekleyebilirsiniz.

options {

         version “DNS SERVER 2018”;

         hostname “DNS SERVER 2018”;

};

 

 

BIND Servisi Sorgu Logları Nasıl Aktif-Pasif Edilir.

Bunun için kontrol etmemiz gereken değişken query logging parametresidir. Yani bu parametre On ise sorgu log’u düşüyor, Off ise düşmüyor.

İlk önce durumunu kontrol edelim. Bunun için çalıştıracağımız ilk komut rndc status komutudur. Ve bu komutu çalıştırıdığımızda aşağıdaki gibi query logging is OFF olduğunu görünüyoruz.

> rndc status

Aktif etmek için, yani log’ları alabilmek için rndc querylog komutunu çalıştırıyoruz.

> rndc querylog yada (rndc querylog ON)

Tekrar rndc status ile durum kontrolü yapalım ve aşağıdaki gibi ON olduğunu görelim.

> rndc status

Tail komutu ile de çıktıyı alıp teyit edelim.

> tail -f /var/log/messages

Burada tekrar OFF yapmak için rndc querylog yada (rndc querylog OFF)komutunu çalıştırabilirsiniz. Bu komutu her çalıştığında durumunu tersine çevirir. OFF ise ON, ON ise OFF yapar.

Cacti LDAP(FreeIPA) Yapılandırması

Cacti’yi opensource LDAP ortamına dahil etmek için internal admin user‘ı ile login olduktan sonra Console/Configuration/Settings/Authentication sekmesine gidip aşağıdaki görseldeki gibi yapılandırıyoruz. Yani LDAP server IP bilgisi yada Domain name ile port bilgileri giriyoruz.

Ardından Group Distingished Name (DN), Search Base, Search Filter, Search Distingished Name (DN), Search Password bilgilerini doğru girdiğimizden emin olup Save butonuna basıyoruz.

Artık Cacti’ye LDAP user’ınızla login olabilirsiniz.

Linux Ubuntu Üzerinden OpenVPN Client-Server Bağlantısı

Ubuntu üzerinden OpenVpn server’inize bağlantının iki yolundan bahsedeceğim. Biri CLI üzerinden bağlantı şekli diğeri GUI üzerinden bağlantı. Ben vpn server olarak PfSense kullanacağım. PfSense OpenSource firewall olarak kullanmanın yanı sıra birçok amaç için de kullanabilirsiniz. Ben burada ki işlem için vpn server olarak kullanacağım ve yapılandırma dosyalarını ondan elde edeceğim.

İlk önce vpn sunucusundan yapılandırma dosyalarını çekiyorum. Aşağıdaki gibi *.ovpn, *.p12, *.key. Bu arada yapılandırma çeşitleri sunucu tarafında farklılık göstermektedir. Yani ios için, android için, windows için ve standart paket olarak ayrılır.

Daha sonra “ifconfig” yada “ip address” komutu ile ip tablonuzu listeleyin.

> ifconfig

Bir de “route” yada “netstat -nr” yönlendirme tablunuzu listeleyin.

> route

Ardından bize gerekli olan paketi aşağıdaki komut yardımıyla kurarak devam edelim.

> sudo apt install network-manager-openvpn-gnome

Paket kurulumu bittikten sonra ilk olarak CLI üzerinden aşağıdaki komut aracılığı ile vpn server’e bağlantı gerçekleştirelim. Terminali başlatın ve cd komutu yardımıyla vpn dosyalarının bulunduğu dizine gidin.

> cd ve ls komutu

Aşağıdaki komutu çalıştırın. Sudo şifresini girdikten sonra sonra;

> sudo openvpn –config fw-TCP-1194.ovpn

Sizden vpn user ve şifre bilgisini isteyecektir.

Terminalin en son satırında aşağıdaki çıktıyı görürseniz başarılı bir şekilde bağlantı sağlamışsınızdır demektir.

Dada sonra ip’nizi ve yönlendirme tablonuzu yukarıdaki komutlar yardımıyla listelediğinizde sağlamasını yapmış olacaksınız.

NOT1 : Vpn bağlantısı gerçekleştikten sonra terminal açık kalması gerekecek, kapatırsanız bağlantı kopacaktır. Bu değişik atraksiyonlar ile çözülebilir fakat en doğru yöntem komuta “daemon”parametresini eklemektir.

> sudo openvpn –config fw-TCP-1194.ovpn –daemon

NOT2 : Hatta user ve şifre bilgisini girmeden dosyadan okutturarak ta bağlantı sağlayabilirsiniz. Bu işlerinizi kolaylaştırmak için gerekebilir. Bağlantı bilgilerinin olduğu dizinde yer almalı. Aşağıdaki komutla da bunu sağlayabilirisiniz.

> sudo openvpn –config fw-TCP-1194.ovpn –daemon –auth-user-pass VpnBilgiler

Şimgi GUI olarak yapılandırıp, bağlantı sağlayalım;

Aslında ana yapılandırma dosyamız *.ovpn, diğer iki dosya *.p12 ve *.key ise devamı gibi zaten *.ovpn içinde o dosyalar gösterilmiştir. Aşağıdaki screenshot’ta detaylıca açıkladım. GUI yapılandırmasını da gene *.ovpn dosyasının içeriğindeki bilgiler ışığında birebir aynı yaptıktan sonra bağlantı sağlayacağız.

Wi-Fi yayın işaretine tıklayıp, “Edit Connections…” tıklayın.

Ordan “Add” diyoruz.

Daha sonra “OpenVPN” seçeneğini create ediyoruz.

Ardından bilgileri *.ovpn dosyasının içeriğindeki bilgilerle aşağıdaki şekilde girdikten sonra “Advanced” tıklıyoruz.

Daha sonra alttaki seçenekleri check ediyoruz, aslında çok gerekli değil fakat biz gene de yapalım.

Sonra Security kısmından Cipher seçeneğini *.ovpn dosyasında yazan şeklinde belirliyoruz.

TLS Authentication kısmını gene *.ovpn dosyasındaki bilgiler ışığında belirleyip “OK” diyoruz.

OK dedikten sonra aşağıdaki gibi bilgiler kayıt altına alınıyor.

Şimdi VPN bağlantısını gerçekleştirelim. Gene Wi-Fi yayın işaretine tıklayıp, ordan VPN Connections kısmına ve vpn bağlantımıza tıklıyoruz.

VPN user’ın şifresini isteyecektir, alttaki gibi girip OK diyoruz ve bağlanmasını bekliyoruz.

Ve bağlantı başarılı bilgisini aldık.

Başarılı bağlantı sonrası Wi-Fi işaretinin üzerinde kilit şekli oluşur.

Daha sonra “ifconfig” yada “ip address” komutu ile ip bilgilerinizi ve bir de “route” yada “netstat -nr” komutu ile yönlendirme tablomuza bakarak bağlantı doğrulamasını yapabiliriz.

Mikrotik Kullanarak Dışardan İçeriye NAT-PAT İşlemleri

Mikrotik ile ilgili daha önceden hazırlamış olduğum Mikrotik Nedir.? Mikrotik Kurulumu ve Temel Ayarlamaları yazısını okuyarak gerekli bilgilendirmeyi edinebilir ve temel ayarlamaları hakkında bilgi sahibi olabilirsiniz. Bu yazımızda ise NAT-PAT hakkında bilgi sahibi olacağız ve Mikrotik bir cihaz üzerinden dış dünyadan içeriye yönlendireceğimiz hizmetlerin kullanılmasını sağlayacağız. Bu işlemler sınırlı olup, dışardan içeriye tüm networke erişim değil sadece port yönlendirmesi araclığı ile belirdeğimiz hizmetlerin kullanılmasını sağlayacağız. Nedir.? bu hizmetler derseniz NAT-PAT yardımıyla bu yazımızda dışardan içeriye HTTP ve RDP hizmetlerinin kullanılmasını sağlayacağız. Fakat HTTP servisini default olarak belirli 80 portu üzerinden, RDP hizmetini ise 3389 değilde 3344 portu üzerinden kullanılmasını sağlayacağız. Bunu böyle yapmamım sebebi ise konuyu biraz daha iyi anlayıp, daha çok hakim olup kavramaktır. İşlemlere başlamadan önce NAT-PAT kavramlarına bir göz atalım.

NAT : Network Address Translation (Ağ Adresi Dönüştürme) demektir. Yani iç bacak interface ve o ağdaki ip’lerin internete çıkarken dış bacak interface’deki ip adresine dönüşüp nete çıkması diyebiliriz. Daha geniş bilgiye viki adresinden ulaşabilirsiniz.

PAT : Port Address Translation (Port Yöndendirme) demektir. NAT ile birlikte kullanılır ama PAT dış ağdan gelen portu iç ağa aynı port olarak yada değişime uğratarak yönlendirme işlemidir. Daha geniş bilgiye viki adresinden ulaşabilirsiniz.

Şimdi senaryomuzda Mikrotik cihazımızın arkasında IIS servisi çalışan bir Windows Sunucu bulunsun ve bu sunucu sadece iç (private) ağ içerisini dahil olsun ama dış dünyaya hizmet verebilsin. Yani dış dünyadan gelen requestlere cevap dönüp, IIS hizmetinin sonucu olan yapıyı kullanıcıya sunsun. Yani Mikrotik’in dış dünyaya açık olan IP sine 80 sorgusu gelecek ve biz o sorguyu alıp ilk önce iç ağa çevireceğiz fakat iç ağa çevirirkende tüm network değil sadece port yönlendirmesi yapıp ordan IIS sunucusuna atıp, geri dönüş olarak tam tersi işlemlerle index sayfasını kullanıcıya ulaştıracağız.

Teknik olarak işlemlere başlamadan önce default’ta gelen Mikrotik’in Konfigürayon erişiminin sağlandığı 80 servisini Servisler kısmından aşağıdaki gibi kapatalım.

mikoNatPat1

Ardından IP-Firewall-NAT sekmesinden + işaretine basın ve aşağıdaki gibi konfigüre edin.

mikoNatPat2

Daha sonra görünüm bu şekilde olacak.

mikoNatPat3

Telnet yada Ssh üzerinden de aşağıdaki komutu çalıştırarak yapabilirsiniz.

> ip firewall nat add chain=dstnat in-interface=pppoe-out1 protocol=tcp dst-port=80 action=dst-nat to-addresses=YOUR SERVER ADDRESS to-ports=80 comment=””  disabled=no

Şimdi Mikrotik’in dış bacağına sorgu göndererek, test edip başarılı bir şekilde sonuç aldığımızı görelim.

mikoNatPat4

Şimdi RDP senaryosunu gerçekleşrirelim. IIS senaryosuyla aynı olmakla beraber tek farkı RDP portu 3389 değil 3344 olarak hizmet verecek. Yani dışardan sorgu gelince 3389 olarak alacağız fakat RDP hizmetini veren sunucuya 3344 olarak ileteceğiz. Geri dönüş olarak aynı işlemleri tersi olarak hizmet verecek.

Bunun için sunucu üzerinde ki default RDP portunu 3344 ile değiştirmeniz gerekli. Bununla alakalı olarak Windows Server RDP 2012 portu değiştirme yazıma göz atabilirsiniz. Bu işlemi yaptıktan sonra tekrar Mikrotik’te IP-Firewall-NAT sekmesinden + işaretine basın ve aşağıdaki gibi konfigüre edin. Buradaki fark gördüğünüz gibi 3389 ile gelen port isteğini arkada hizmeti veren sunucu için 3344 olarak belirleyip yönlendiriyoruz.

mikoNatPat5

Ve kurallar tablosundaki son görünüm aşağıdaki gibi olacaktır.

mikoNatPat6

Şimdi Mikrotik’in dış bacağına RDP için sorgu göndererek, test edip başarılı bir şekilde sonuç aldığımızı görelim.

mikoNatPat7

 

Komut Satırı Üzerinden Gerçek(Public) Ip Öğrenme – Linux/Windows

Sistemler üzerinde (projeye ve ortama göre değişiklik gösterir) çoğunlukla local ip’ler ile çalışırız ve bunları network ayarlarından yada komut satırı üzerinden çeşitli komutlarla elde edebiliriz. Fakat gerçek ip’ler ile işlem yapmak için router/modem arayüz yada online olarak hizmet sunan (birden fazla site mevcuttur) url aracılığı ile real ip’yi elde edip daha sonra işlem yaparız. Yukarıda da NCC olan ripe.net örnek olarak verilmiştir. Girişte sağ tarafta yukarda sizin çıkış ip’nizi yansıtan bir bölüm bulunmaktadır.

Şimdi ise komut satırı üzerinden gerçek ip’mizi nasıl elde ederiz ona bir bakalım. Linux’ta üç alternatif komut, Windows’ta ise bir komut kullanacağım

Linux Dig komutu ile;

> dig +short myip.opendns.com @resolver1.opendns.com

ipresollin1

Linux Curl komutu ile;

> curl ipinfo.io/ip

ipresollin2

Windows’ta Nslookup ile; (Nslookup komutunu Linux için de kullanabilirsiniz.)

> nslookup myip.opendns.com. resolver1.opendns.com

ipresolwin1

Centos Clone Sonrası Yapılması Gereken İşlemler (bringing up interface eth0 device eth0 does not seem to be present delaying initialization)

VMWare ESX/ESXİ ortamınızda CentOS sunucular için Clone aldığınızda aşağıda belirttiğim bir kaç basit adımı yapmanız gerekmektedir. Eğer bu işlemleri yapmayı atlarsanız network adaptörünüz up duruma geçmeyecektir ve aşağıdaki hatayı alacaksınız. Diğer bir değişle aşağıdaki hatayı alıyorsanız bilinki o makine clon bir sunucudur ve muhtemelen aşağıdaki adımlar atlanmıştır.

Hata : “bringing up interface eth0 device eth0 does not seem to be present delaying initialization

bringing up interface eth0 device eth0 does not seem to be present delaying initialization

Yapılması gerekenler ise;

1. rm komutu ile 70-persistent-net.rules dosyasını silin. Bu dosya ethetnet kartınızın bilgilerinin saklandığı dosyadır. Örnek çıktı aşağıdaki gibidir.

// # PCI device 0x14e4:0x1680 (tg3)

SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”b5:ac:6c:84:31:r5″, ATTR{dev_id}==”0x0″, ATTR{type}==”1″, KERNEL==”eth*”, NAME=”eth0″ //

# rm /etc/udev/rules.d/70-persistent-net.rules

2. vi yada alternatif bir editör ile network(ip,subnet,gateway,hwaddr) ayarlarının bulunduğu dosyadan HWADDRESS adres satırını silin.

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

3. Sunucunuzun hostname‘ini değiştirin

hostname

Tüm bu işlemleri yaptıktan sonra sunucuyu reboot edin ve işlem tamamdır ve ayrıca hata da kaybolacaktır. Tabi clone sunucuda ip vs. değiştirdiğinizi kabul ediyorum. =)

VirtualBox kullananlar varsa eğer, clone alırken aşağıdaki gibi “Reinitialize the MAC address of all network cards” seçeneğini check(aktif) ederse mac adresi, clone sunucu için otomatik olarak değişecektir ve yukarıdaki 1. seçenek otomatik olarak yapılmış olacaktır. VirtualBox için 2 ve 3 seçeneği yapıp restart edebilirsiniz.

cemacde

Mikrotik Nedir, Mikrotik Kurulumu ve Temel Ayarlamaları

Mikrotik Linux çekirdeği üzerinde geliştirilen, lisans gerektiren bir RouterOs (Router İşletim Sistemi) dur. Bu işletim sistemi ile pc tabanlı bilgisayarınızı modern bir yönlendirici ye (router), bir vpn sunucusuna veya yüksek özellikleri olan bir ateş duvarına (firewall) çevirebilirsiniz.Ülkemizde bu ürün genelde web hosting firmaları, orta ölçekli işletmeler ve trafiği az olan ağlarda tercih ediliyor. Daha detaylı olarak türkçe destekli wiki adresinden okuyabilirsiniz.

Mikrotik’i yazılımsal yada donamınsal olarak kurup kullanabilirsiniz. Ben işlemleri sistemi kurduğum vm makine üzerinden ve ayrıca hem kod hem görsel grafikler aracılığı ile göstereceğim. Görsel arayüze ulaşmak için Mikrotik Winbox uygulamasını indirmelisiniz. Onun aracılığı ile cihaza ulaşıp gerekli konfigürasyonu yapabilirsiniz. Donanımsal olarak elinizde buluna cihazın elektrik prizini takıp, lan kablosunu pc’nize bağladıktan sonra aşağıdaki screenshot’tanda anlaşılacağı üzere Winbox uygulamasını çalıştırıyoruz ve ardından sarı şerit olan yere cihazın bilgileri düşüyor, tıklayıp login olacağız. Default’ta gelen kullanıcı adı Admin‘dir ve ayrıca şifresi yoktur.

miko1

Tabi uyarı gelecektir. Sistem ayarlarını resetlensin mi.? gibisinden resetlemenizi tavsiye ederim. Yazılımsal olarak’ta aşağıdaki kod yardımıyla reset’leme işlemini gerçekleştirebilirsiniz.

> system reset-configuration

miko2

Ardından onaylamanız için y/n uyarısı gelecektir, y(yes) bastıktan sonra sistem ayarlarını reset’leyip sistemi yeniden başlatacaktır. Açıldıktan ve login olduktan sonra aşağıdaki bir uyarı alacaksınız. Defaultta gelen ayarları görmek için “v” silmek için ise “r” tuşuna basmanızı bekleyecektir. Biz yeni ve düzgün bir konfigürasyon yapmak için “r” tuşuna basıp siliyoruz.

miko3

Network Ayarları (IP, Route ve Gateway)

Herşeyden evvel interface’leri görüntüleyelim, kaç interface var ve public(dış bacak), private(iç bacak) olduğunu anlayalım. Bunun için aşağıdaki komutu çalıştırabilirsiniz.

> interface print

miko4

Garafiksel olarak aşağıdaki gibidir.

miko16

Bende, dış bacak yani dünyaya açılan interface “ether2” iç bacak yani local ağ’ım “ether1”dir. Tüm işlemleri buna göre yapacağım.

Hemen Ip yapılandırmasına dış bacak ile başlayalım, bunun için aşağıdaki komutu kullanabilirsiniz.

> ip address add dışbacakipsi/subnet interface=ether2

miko5

Görsel olarak aşağıdaki gibi.

miko19

Şimdi iç network için iç bacak ip’sini yapılandıralım.

> ip address add içbacakipsi/subnet interface=ether1

miko7

Ardından internete ulaşabilmek için Yani 0.0.0.0/0 (tanımsız tüm network) route yani gateway eklememiz gereklidir. Bunun için aşağıdaki komutu çalıştırabilirsiniz.

> ip route add gateway=gatewayipsi

miko6

Görsel olarak aşağıdaki gibi.

miko17

miko18

Ardından DNS adres tanımlamasını yapmalısınız ki domainlere ping atabilesiniz.

miko15

Şimdi işlemlerimiz doğrulama niteliğinde bir kaç işlem yapalım. İlk önce ip adreslerimiz doğru interface’lere atandığını anlamak için aşağıdaki kodu çalıştıralım.

> ip address print

miko8

Eğer yanlış olduğunu düşündüğünüz bir ayar varsa aşıdaki komut ile silme işlemini gerçekleştirebilirsiniz.

> ip address remove numbers=(# işaretinin altındaki sıralama numarası yazılacaktır)

miko14

Ardından Route(Gateway) tablosuna erişmek için aşağıdaki kodu çalıştırın.

> ip route print

miko9

Şimdi buraya kadar önemli olan ip, gateway, dns atama gibi işlemleri yaptık. Son olarak önemli ve püf nokta olan bir işlem daha kaldı. O işlem ise local ağımın, yerel ip’lerin yani iç interface’nin, dış interface üzerinden internete ve dış dünyaya erimesi için(evinizdeki adsl modem gibi) NAT işlemidir. Mikrotik’te bu işleme Masquerade denir. Kısaca Nat’ı açıklamak gerekirse Network Address Translation (Ağ Adresi Dönüştürme) demektir. Yani iç bacak interface ve o ağdaki ip’lerin internete çıkarken dış bacak interface’deki ip adresine dönüşüp nete çıkması diyebiliriz. Daha geniş bilgiye viki adresinden ulaşabilirsiniz.

Bu işlemi yapabilmek için aşağıdaki kodu çalıştırmanız yeterlidir.

> ip firewall nat add chain=srcnat src-address=YOUR NETWORK ADDRESS/MASK action=masquerade comment=”” \disabled=no

Görsel olarak,

mikomas20

mikomas21

Şifre Belirleme, Hostname Atama ve Yararlı Komutlar

Admin kullanıcısına şifre belirlemek için,

> /password

miko10

Hostname atamak için,

> system identity set name=Hostname

miko11

Sistemi yeniden başlatmak için,

> system reboot

miko12

Sistemi kapatmak için,

> system shutdown

miko13

Bandwidth Sınırı Belirleme

Mikrotik üzerinde kullanıcılar için bandwidth sınırlaması yapabilirsiniz. Aşağıdaki kullanıcının 2mb olarak sınırlandırılmış örneğini görebilirsiniz.

mikobandwith

Ayrıca Mikrotik’i İp atama işinden sonra web(80) üzerinden de yönetebilirisiniz.

mikrotikweb

DNS Kayıtları – Bölüm 2

DNS Kayıtları (Domain Name System – Alan Adı Sistemi)

DNS nedir? – Bölüm 1

NS(Name Server) Kaydı = Sunucu ismi kaydıdır, yani name server’ı işaret eden kayıttır. DNS server’ı işaret eden kayıttır. Herhangi bir Domain Name(Alan Adı) için geçerli sunucuyu belirleyen kayıttır.

Örneğin ; godaddy.com’den alınmış bir alan adınız var, aşağıdaki screenshot’tan da anlaşılacağın gibi, alan adı yönetim kısmından Ad Sunucuları kısmına Name server adresleri belirliyorum. Diyorum ki bu alan adı için geçerli olacak DNS kayıtları belirlediğim NS’te ki DNS Server’dır. Ayrıca o DNS server’da domain için oluşturduğum kayıtlarda da NS kayıtları olacaktır ki godaddy.com tarafında isteğimize karşılık gelsin. Evet o sunucu benim gibisinden.

Domaini register ettiğim tafafta NS yönlendirmesi aşağıdaki gibi,

godns1

DNS kayıtları tarafında da karşılık gelecek NS bilgisi,

dnsnss

SOA(Start Of Authhority) kaydı = Zone’deki ilk başlangıç ve DNS server’ın zone’den sorumlu olduğunu gösteren kayıttır. Yetkili birincil DNS sunucunun parametlerini tutan kayıttır.

A(Address) kaydı = Herhangi bir Domain Name’yi bir ip(IPV4) yönlendiren kayıttır. AAAA is IPV6 karşılığıdır.

fatihaslan.tr. A 1.1.1.1 bir A kaydıdır. Ayrıca root kaydı olarakta nitelendirilir. Her domain için olması zorunlu kayıttır. Diğer belirlediğiniz A kayıtları bu root kayıt eklenerek istek gönderilir. Aşağıdaki gibi www için A kaydı oluşturulduğunda aslında www.fatihaslan.tr olarak tamamlanır.

www A 1.1.1.1 herhangi bir tarayıcıdan

yada

ftp A 1.1.1.1 kaydı girildiğinde, ftp.fatihaslan.tr gibi gibi…

dnsakydi

MX(Mail Exchanger) kaydı =  Herhangi bir alan adının mail trafiğini, söz konusu olan kullanıcı hesaplarının barındığı mail sunucusuna yönlediren kayıttır.

mail A 1.1.1.1

mail2 A 2.2.2.2

fatihaslan.tr MX 10 mail

fatihaslan.tr MX 20 mail2 gibi…

yada

fatihaslan.tr MX 0 spamgtwy.domain.com gibi gibi…

Burda 10 ve 20 değerleri Priority değeridir. Yani yapınızın yoğunluğuna yada yapısına göre oluşturduğunuz mail sunucunuzun cevap verme önceliğidir. Yani öncelik değeri manasına gelir.

CNAME(Canonical Name Record) kaydı = Birden fazla host name’i var olan bir A kaydına isim olarak yönlendirilebilen kayıttır. Karmaşık yapıdaki FQDN’leri daha sade ve şık olması açısından CNAME kullanılabilir.  Veya daha farklı olarak A kaydı var olan bir mailci.fatlan.com’a CNAME kullanarak mail.fatihaslan.tr’yi o servise yönlendirebilirsiniz.

Örneğin ; fatlan.tr A 2.2.2.2 var olan bir A kaydı.

aslan.fatih.tr CNAME fatlan.tr gibi… Yani bir ip adresi kullanmadan yönlendirme işlemidir.

cnamekt

PTR(Pointer record) kaydı = RDNS(Reverse) kaydı olarakta bilinen ters isim kaydıdır. ISP(İnternet Servis Sağlayıcı) servisleri tarafından girilen bir kayıttır. Bu kaydın kullanabilmesi için IP’nin sabit olması gerekmekte.

Örneğin ;  Herhangi bir ISP’den sabit bir IP aldınız ve bu IP’yi mail sunucusunda kullanacaksınız, o zaman sunucunun Host Name’i o IP’ye tanımlanmalıdır. Ve böylelikle sizin sunucunuzda PTR kaydını sorgulayarak gelen sunucular olursa iletişim başarılı bir şekilde gerçekleşecektir.

1.2.168.192.in-addr.arpa PTR mailim.fatih.tr gibi…

Ayrıca bu linki kontrol edebilirsiniz. https://ulakbim.tubitak.gov.tr/sites/images/Ulakbim/onur_b_ters_dns_kaydi.pdf

SPF(Sender Policy Framework), TXT kaydı = Sahip olduğunuz Alan Adı(Domain Name) için oluşturduğunuz mail sunucunuz için gönderme iznine sahip olduğunu gösteren kayıttır. TXT olarak DNS kayıtlarına eklenir ki sunucunuzun SPAM yapan bir sunucu olarak algılanmasının önüne geçen kayıttır. Bu kaydı çift tırnak içinde girmelisiniz.

v=spf1 a mx ip4:192.168.1.1 ~all

spf_txt

SRV (Service Locator) kaydı = Özel bir servisin hangi IP üzerinden verildiğini tutan kayıt olarak, bu kayıt ile o servise yönlendirme yapılabilir. Internel DNS kayıtlarında Active Directory bu kaydı kullanarak LDAP ve Kerberos servislerine ulaşır. Dışarda da kullanılan bir özel servis için yönlendirme yapılabilir.

Örneğin; (hizmet.protol) SRV (öncelik, ağırlık ve port) (hedef) sıralamasıyla aşağıdaki gibi kayıt girilir. Tabi öncesinde TTL istenilen gibi ayarlanmalıdır.

SRV istek kayıt tablosu…

srvistek

Başka bir SRV DNS kayıt girdisi…

srvkaydı

DKIM (DomainKeys Identified Mail) kaydı = Sunucu tarafından şifreleme sistemi kullanılarak gönderilen her emailin barkodlanması denebilir. Yahoo tarafından ilk olarak DomainKeys tasarlanmıştır. DKIM Türkçe karşılığı ile Alan adı anahtarıyla e-posta kimlik doğrulaması; phishing spoofing (sahtekarlık, kimlik hırsızlığı) gibi kötü niyetli aksiyonların ve email sahtekarlığının önüne geçmek için kullanılan domain adı ile emaili eşleştirme yöntemdir. Bu yöntemle kişi veya organizasyon emailin gerçekten kendisi tarafından gönderildiğini doğrulatır.

Email gönderen kişi veya organizasyon, kendisi tarafından gönderilen her emaili dijital (kriptografik) olarak imzalar, böylelikle emailin kendisi tarafından gönderildiğini teyit eder. Bu imzanın doğrulanmasında Private ve Public olmak üzere 2 anahtar kullanılır. Private key gönderilen emaili imzalamak için kullanılır ve gizli olması gerekir. Public key sadece bu imzayı doğrulamak için kullanılacağı için açık olarak kullanılabilir.
Emaili gönderen sunucu tarafında bir Private key tanımlanır. Bu anahtar, her gönderilen email başlığına (Internet Headers) eklenir. Public key DNS sunucuya TXT kaydı olarak eklenir. Alıcıya gelen email deki DKIM imzası DNS kaydı ile kontrol edilir. Bu eşleşmenin sağlanması durumunda gönderen güvenli olarak sınıflandırılır.
dnsdkim
NOT : DNS KAYITLARININ DOĞRU ÇALIŞMASI YANİ KARŞILIK GELEN İP Yİ ÇÖZEBİLMESİ İÇİN; PANELDEN PANELE DEĞİŞİKLİK GÖSTEREBİLİR (Örnekler DirectAdmin üzerinden gösterilmiştir), GİRİLEN KAYDI SONLANDIRMA ANLAMINA GELEN ‘.’ nokta İŞERETİNİ KOYMAYI UNUTMAYIN.
Daha Sonrasında girilen DNS kayıtlarını localden ‘nslookup‘ komutu ile sorgulayabilirsiniz.
 dnssnlookup
Online olarakta;
http://www.intodns.com/ servislerini kullanabilirsiniz.

 

Extrenal DNS örnek kayıt girdileri,

edns

Internal DNS örnek kayıt girdileri,

idns

 

Windows Komut Satırından Route Ekleme ve Silme (Netsh ve Route komutlarının kullanımı)

Herhangi makinada birden fazla NIC dahi olsa network konfigurasyonları için birden fazla gateway(geçityolu) adresi giremiyoruz. Bu gibi durumlarda herhagi bir ayar yada oluşturulan tunellemelerde istenilen network’ü istenilen gateway’e yönlendirmek için route’leme işlemi kullanılır. Kısaca farklı networklerin birbirleriyle haberleşmek için hangi yolu kullanması gerektiğinin hesaplanması ya da seçilmesi işlemidir. Bunun için iki yöntemden yani iki komut setinden bahsedeceğim ilk olarak NETSH ve sonrasında ROUTE komutu.

NETSH komutunu kullanarak route eklemek

Komut satırını admin modda açtıktan sonra(admin modda açılmazsa hata verecektir) aşağıdaki komutları çalıştırın.

msrou1

İlk önce intefaceleri(NIC) listeleyelim. Ben tüm işlemler için “Ethernet0” interface’yi kullanacağım.

>netsh interface ipv4 show interface

msrou2

Route ekleyelim, test için adresleri tamamen atıyorum.

>netsh interface ipv4 add route ‘subnet’ “İnterfaceADI” ‘gateway’

msrou3

Ardından route tablosunu görmek için aşağıdaki komutu kullanabilirsiniz.

>netsh interface ipv4 show route

msrou4

Ben aşağıdaki komutu kullanıyorum.

>route print

msrou5

Yapılan işlemleri geri almak yani silmek için aşağıdaki komutu kullanabilirsiniz.

>netsh interface ipv4 delete route ‘subnet’ “İnterfaceADI” ‘gateway’

msrou6

ROUTE komutunu kullanarak route eklemek

Komut satırını admin modda açtıktan sonra(admin modda açılmazsa hata verecektir) aşağıdaki komutları çalıştırın.

msrou1

Route ekleyelim, test için adresleri tamamen atıyorum. Yalnız burda bir püf nokta var komutun sonuna ‘–p’ parametresini eklemezseniz yaptığının routing işlemi makina yeniden başladıktan sonra kaybolacaktır. Kalıcı olması için ‘-p’ parametresini kullanmalısınız. Opsiyonel olarak kullanabileceğiniz parametleri route yazarak görebilirsiniz.

>route add subnet MASK 255.255.255.0 gateway

msrou7

>route print

msrou8

>route delete subnet MASK 255.255.255.0 gateway

msrou9

DNS nedir? – Bölüm 1

DNS (Domain Name System – Alan Adı Sistemi)

Bilindiği üzere bilgisayar sistemleri arka planda anlamlı numaraların birleşmesiyle oluşan değerlerle işlem yapar. Yani bit’lerden oluşan 0 ve 1 ile ve sadece toplama, çıkarma işlemlerini kullanarak sonuca ulaşır vs. çok fazla ayrıntıya girip kafa bulandırmayalım. Aynı şekilde bilgisayarlar ağ ve net ortamında da birbirleri arasında haberleşme sağlarken belli bir numara kalıbını kullanarak haberleşirler. Bu numara kalıbı herkesçe biline IP(Internet Protokol) adresleridir. Peki konumuzla olan alakası nedir? denecek olursa şöyle ki bizler tarayıcımız aracılığı ile biryere bağlanmak isterken adres kısmına; örneğin  www.duckduckgo.com gibi ibareler kullanırız, fakat bilgisayar arka planda o adrese karşılık gelen ip adresi ‘46.51.197.89’ ile bağlanır ve sayfayı karşımıza getirir. İşte bu işlemleri yapan arkadaş DNS’tir. Neden böyle bişeye ihtiyaç var derseniz tabi ki insan oğlunun sayılarla arası pek yoktur ve akılda tutulması, ezberlenmesi zordur. İşte bu yüzden bu işlemleri otomatik yapacak bir sistem geliştirilmek istenmiş ve DNS bu şekilde internetin babası olarak söylenen ARPANET tarafından ortaya çıkmıştır. Daha öncesinde, bilgisayarların bu kadar yaygın olmadığı zamanlarda HOSTS.TXT(Genelde C:\Windows\System32\drivers\etc) dosyası kullanılıyordu.

Adres-isim tanımlamalarını içeren HOSTS.TXT dosyası SRI tarafından SRI-NIC (Stanford Research Institute – Network Information Center) adında bir bilgisayar üzerinde tutulmaktaydı. Bu dosya her adrese bir isim karşılık gelecek şekilde düzenlenmişti. Arpanet üzerindeki yeni isim tanımlamaları ve değişiklikleri SRI’ya gönderilen e-postalar arcılığı ile yapılıyor ve HOSTS.TXT’in kopyası FTP(File Transfer Protocol) ile alınıyordu.

dns1

dns2

İsim Çözümleme ve Sırası

DNS sistemlerinde harhangi bir nesnenin Hostname’ine karşılık gelecek ip adresi olması gereklidir. FQDN(Full Qualified Domain Name) ise bir alan adının tamamını ifade eder. Örneğin; duckduckgo.com bir domain name iken, www.duckduckgo.com FQDN’dir. Ayrıca fatlan.com bir domain’i ifade ederken forum.fatlan.com’daki forum subdomain(alt domain)’i ifade eder. Örneğin duckduckgo’nun ip adresini aşağıdaki komutu çalıştırarak öğrenelim.

>ping duckduckgo.com

dns3

İsim çözümleme sırası ise;

  1. Client resolver Cache- DNS cache
  2. Host dosyası
  3. DNS
  4. NetBIOS Name Cache
  5. WINS
  6. Broadcast
  7. Lmhosts dosyası

Malum DNS çözümlemeleri için bir trafik oluşur ve bu işlem vakit alabilir. Buna çözüm olarakta cache’leme olayını geliştirmişler. Girilen siteler yada HOST dosyasına eklenen veriler daha hızlı erişim için cache’lenir. Tabi bu belli bir süreye bağlanmıştır yoksa kullanılan linklerdeki son değişiklikler gözlemlenemez. Bu süreye TTL(Time To Live-Yaşam Süresi) denir. Bu süreyi DNS tarafında düzenleyebilirsiniz.

dnsttl

Aşağıdaki CMD çıktısındada bu değeri görebilirsiniz. Client resolver Cache- DNS cache’lerini görmek için komut satırından aşağıdaki komutu kullanabilirsiniz. Ben HOST dosyasına kayıt ekliyorum onuda görebileceğim.

dns4

>ipconfig /displaydns

dns5

Client resolver Cache- DNS cache’lerini temizlemek için ise,

>ipconfig /flushdns komutlarını kullanabilirsiniz.

Fakat Command Promt’u Admin modunda çalıştırmazsanız komutları çalıştırırken ‘The requested operation requires elevation’ uyarısı alabilirsiniz.

NetBIOS ; Network Basic Input/Output System için bir kısaltmadır. Bir yerel ağ üzerinde bilgisayarların birbirleri ile iletişim kurmasını sağlayan ve  isim çözümlesini gerçekleştiren bir API‘dir.

WINS(Windows Internet Name Service) ; Hizmetinin başlıca amacı bilgisayarların NetBIOS isimlerini IP adreslerine çevirmektir.

Broadcast ; Ağlar arası iletişimde gönderilen bilgi paketinin tüm cihazlar tarafından alınmasına verilen bir isimlendirmedir. Yani giden paket özel bir adrese değil tüm adreslere gönderilir. Bazen tüm ağ cihazlarına bağırma diye de tabirini duyabilirsiniz. Daha sonrasında bağırma işleminin ardından paket istemci tarafından kabul edilerek işlem yapılır. Bu şekilde bir çözümleme sistemidir. Tabi ilk bakışta ağ performansını yorması ve karmaşıklığı aklınıza gelebilir.

LMHOSTS (LAN Manager Hosts) ; WINS servisi gibi isim çözümlemede kullanılan gene HOSTS dosyasının path’inde bulunan bir veritabanı sistemidir.

DNS Kayıtları – Bölüm 2