ipucu : pfSense dhcp Leases cihazları görüntülememe sorunu

Bu aralar forumlarda da sık sık önüme çıkıyor dhcp leases bölümünde ip almış cihazları görüntüleyemiyorum veya pfSense üzerinde dhcp rezervasyon diğer adıyla static mapping yaptığım istemciler gözükmüyor gibi sorular oluyor.Bugün benim başımada gelince aklıma nmap geldi. Burada nmap’ı anlatacak kadar uzun bir döküman olmayacak malesef ama basitçe Nmap’ın çalışma mantığından bahsedelim.NMAP Gordon Lyon amcamızın uğraşları doğrultusunda C/C++ ve Phyton yazılım dilleriyle geliştirilmiş bir güvenlik ağ tarayıcısıdır.Nmap ile ağ haritasını çıkartabilir,işletim sistemlerini,portların ve çalışan servislerin durumunu görebilirsiniz.

Bu sorunu aşmak için Ağdaki cihazlara ya ping atmanız gerekir yada nmap gibi benzeri yazılımlarla network’ü scan edip cihazlara pfsense üzerinden paket göndermeniz yeterli olacaktır.pfSense ARP tablosuna bakıp orada /var/db altında dhcp leases dosyasına yazar. Listelerkende aynı şekilde ilgili dosyadan çeker. Eğer siz ortam’da bulunan cihazlarla haberleşirseniz arp tablosuna eklenecek ve pfSense listeleyecek.Ama bazı durumlarda saçmaladığı oluyor ondan dolayı bu durumlarda Nmap ile ağı tarayıp cihazları görebilirsiniz.

Neyse lafı daha fazla uzatmadan Yüklenebilir Paketler listesinden nmap’ı bulun ve yükleyin. Yükleme tamamlandıktan sonra Diagnostics -> Nmap menüsünden aşağıdaki sayfaya erişin ve subnetinizi girip tarama işlemini tamamlayınız.

nmaps1

 

Tarama tamamlandıktan sonra DHCP Leases içeriği ;

ekrantest1

Gördüğünüz gibi üretici isimlerininde artık DHCP leases adı altında geldiğini görmekteyiz.

Artık NMAP ile yapabileceklerinizi geliştirebilir bu aracı pfSense üzerinde daha aktif kullanabilirsiniz.Bizim işimiz dhcp Leases’i update etmekti bitti : )

Selametle…

 

Shell Scripting – if else kullanımı

Merhabalar ;

Bu aralar pfSense için yazilimlar geliştirirken aynı zamanda ufak ufak makaleler hazırlayıp sizlerlede paylaşmaya karar verdim.Bir makale serisi olmasa da zamanla Shell Scripting konusunda daha fazla makaleye yer vermeyece calısacagim.

Öncelikle şöyle bir mantık yürütelim.Ben burada network servisini restart ediyorum ve komut başarıyla uygulanmıssa başarıyla uygulanmıştır diye mesaj basıyorum.Eğer uygulanmamıssa uygulanmamıstır diye mesaj basıyorum.

Linux türevlerinde eğer bir önceki komutun çalışıp çalışıp çalışmadığını öğrenmek isterseniz aşağıdaki komutu koşturursunuz.

echo $?

Yukarıdaki komutu koşturduğunuzda bir rakam çıktısı alırsınız.Eğer bu rakam 0’sa koşturduğunuz komut başarıyla çalışmıştır.Eğer 0’dan başka bir rakamsa komutunuzun çalışmadığını anlamanız gerekir.Bizde bu mantığı kullanarak bir bash script hazirlayip if else ile komutumuzun calısıp calısmadigini ekrana yazdıracağız.

#!/bin/sh

#Network servisini yeniden baslatiyoruz.

service network restart

# Eğer $? değeri 0'a eşitse "echo "Servis basariyla yeniden baslatildi.!" ekrana yaz.
if [ "$?" == "0" ]; then
	echo "Servis basariyla yeniden baslatildi.!"
#Eger 0'a eşit değilse ekrana çalıştırılamadı diye yaz.!
else  
	echo "Komut calistirilamadi. Kontrol ediniz.!"
fi

echo komutu ekrana yazı yazdırmanızı sağlayan komut olduğunu bildiğinizi varsayıyorum .

Bir başka makalede görüşmek üzere…

MySQL Komutları Bölüm 3

Bir önceki makalemizde Veritabanı Oluşturma ve Silme , Kullanıcı Oluşturma,Silme ve yetkilendirme gibi işlemleri yaptık. Bu bölümde biraz daha makalemizi ileriye seviyeye götürerek Veritabanı Yedekleme,Tablo Yedekleme ve Yedeklerden geri dönüş gibi işlemleri işleyeceğiz.

Bunun yanın sıra MySQL CLI komutlarının shell üzerinde bash script ile nasıl çalıştırabileceğimize göz atacağız.

MySQL Sunucusu üzerindeki bütün veritabanları yedeklemek ;

mysqldump -u root -p --all-databases > /tmp/alldatabases.sql 

MySQL Sunucu üzerindeki tek bir veritabanının yedeğini almak için ;

mysqldump -u root -p veritabani_adi > /tmp/veritabaniadi.sql

MySQL Sunucusu üzerindeki sadece seçilen veritabanları yedekleme ;

mysqldump -u root -p --databases veritabaniadi_1 veritabaniadi_2 veritabaniadi_3 > /tmp/veritabaniadi_1_2_3.sql 

MySQL Sunucu üzerinde yedeklenen veritabanlarını restore etmek ;

mysql -u root -p veritabaniadi < /tmp/veritabaniadi.sql

MySQL Sunucu üzerindeki yedeklenen birden fazla veritabanını restore islemi ;

mysql -u root -p -D veritabaniadi_1 -D veritabaniadi_2 -D veritabaniadi_3 < /tmp/veritabaniadi_1_2_3.sql

Yukarıda sadece veritabanı yedekleme işlemi gördük.Peki ya tablo yedeklemek istersek ?

mysqldump -c -u username -ppassword veritabaniadi tabloadi > /tmp/veritabaniadi_tabloadi.sql

Biraz daha ileriye gidip bash script hazirlayip bir kaç işlem yapalim.Aşağıdaki Bash Script yeni bir veritabani,yeni bir user ve user yetkilerini olusturur.Sizde buna yakın şeyler yapacaksanız aşağıdaki örneği dikkate alabilirsiniz.

#!/bin/sh
# Samet YILMAZ - 2014 - www.sametyilmaz.com.tr
# Yeni veritabani olusturma
mysql -u root -prootsifresi -e "CREATE DATABASE veritabaniadi;"
# Yeni kullanici olusturma
mysql -u root -prootsifesi -e "CREATE USER 'dbuser'@'localhost';"
# Yeni kullaniciya sifre belirleme
mysql -u root -prootsifresi -e "SET PASSWORD FOR 'dbuser'@'localhost' = PASSWORD('sifre');"
# Yeni kullaniciya veritabani yetkisi verme
mysql -u root -prootsifresi -e "GRANT ALL ON veritabaniadi.* TO 'dbuser'@'localhost';"
# Yeni kullaniciya disaridan erisim yetkisi verme.
mysql -u root -pboxnet -e "GRANT ALL ON veritabaniadi.* TO 'dbuser'@'%' IDENTIFIED BY 'sifre';"

EOF kullanarak bashscript ile mysql komutlarını koşturmak ;

#!/bin/bash
mysql -u root -prootsifreniz << EOF
use mysql;
show tables;
EOF

Umarım bu makale serisi işinize yaramıştır.Eğer hergün benim gibi standart mysql kurulumları vs yapiyorsanız bu tarz çözümler işlerinizi %80 kolaylaştıracaktır.

Başka bir makale serisinde görüşmek üzere. : )

MySQL Komutları Bölüm 2

Bir önceki makalemizde genelde veri arama ve listelemeye göz atmıştık.

Bu bölümde CREATE,DROP,GRANT gibi fonksiyonları kullanarak veritabanı işlemleri yapacağız.Bir sonraki makalemizde bash script ile mysql komutlarını koşturmayı ve yedeklemeye göz atacağız.

MySQL Komutları Bölüm 1

Eğer birgün yolunuz MySQL’e düşerse ve yapılandırmanız gerekirse benim gibi sizde arayüz sevmeyenlerdenseniz aşağıdaki komutları sık sık kullanacaksınız benden unutmamak adına burada bunları yazmaya karar verdim.

Öncelikle Linux üzerinde mysql sunucunuzu yönetebilmek ve yapılandırabilmek için mysql komut satırına düşmeniz gerekiyor.

Centos üzerinde Oracle Client Kurulumu (PHP)

Php ile Oracle veritabanı sunucunuza bağlanmak isterseniz sunucunuz üzerinde Oracle Client kurulu olması gerekiyor ve PHP extension kurulumlarını yapmanız gerekmektedir.Ben pfSense üzerinde Radius’u , MySQL’i  tutmak yerine Centos üzerinde tutarak bütün yükü pfSense sırtına yüklemek istemiyorum.Sonuç itibariyle pfSense bir Firewall, web server değil : )

Neyse lafı daha fazla uzatmadan yavaştan kuruluma geçelim.Şuan 12.1 oracle client sürümü mevcuttu bende indirip kendi web siteme rpm dosyalarını attım. Eğer yıllar sonra bu makeleye uğrarsanız aşağıdaki link çalışmaya devam ederse güncel RPM dosyalarını indirmeniz gerekir.

Radius CaptivePortal Kullanıcı Hatırlama Modülü

Merhabalar ;

Bir cafe’nin isteği doğrultusunda kullanıcılar birkere giriş yaptıktan sonra bir daha karşılama ekranı gelmesin otomatik authentication olmalarını istemişlerdi.

Ben kendi sistemime göre çözdüm ama yerel kimlik doğrulama içinde birşeyler yapılabilir düşüncesindeyim veya CaptivePortal için kendi veritabanınızı kullanıyorsanız kullanıcılar giriş yaparken veya kayıt olurken mac adreslerini veritabanına yazdırarakta çözebilirsiniz.Bazı arkadaşlar PHP ile mac adresini nasil aldin sorunusunu yoneltecektir.Mac adresini PFSense kendisi ARP tablosunda bakıp clientmac değişkeni olarak index.php’de kullanmış bende onu kullanaraktan yola çıktım.(En azindan ben maci öyle aldığını düşünüyorum.)Yani aşağıdaki kodları kendinize göre düzenlerken clientmac değişkeni kafanızda soru işareti oluşturmasın.

Ben Ghost üzerinde bu modülü kullandığım için giriş yaparken kullanıcıların mac adresini veritabanına yazdırma gereği duymadım çünkü, Freeradius mac adreslerini radacct tablosunda zaten tutuyor.

Ayrıca bu modülü aktif ettikten sonra CaptivePortal veya Radius Bandwitdh limitlendirme çalışamayacaktır. (Testlerim en azından bunu gösterdi.)Eğer biraz daha karıştırıp çözebilirsem kodu güncellemeye çalışırım. Şimdilik farklı yöntemlerle bandwithleri kullanıcı bazlı değil de Network bazlı kısıtlayabilirsiniz.

Shell’e Putty veya yardımcı SSH Client ile bağlanıp usr/local/captiveportal dizine gidin ve index.php dosyasının en altında ?> tagindan öncesine ekleyin.

Dediğim gibi kodun calısabilmesi için bir veritabanı baglantısı yapmanız veya kullanıcılarının giriş yaptıktan sonra mac adreslerini biryere kaydettirmiş olmanız gerekiyor.

/* Kullanici Hatirlama Modulu baslangic */

include("Config.php"); // Db Bağlantısı

$sor = mysql_fetch_array(mysql_query("SELECT * FROM radacct WHERE callingstationid='$clientmac'")); //Mac adresini aliyoruz.
if($sor != '')   // mac varsa
{
 $username = $sor['username']; //Mac adresine ait kullanici adini öğreniyoruz.
 $bul = mysql_fetch_array(mysql_query("SELECT * FROM radcheck WHERE username='$username' AND attribute='User-Password'"));
 //Eğer kullanici radcheck tablosunda varsa captiveportal_logportalauth bağlantısıyla sisteme otomatik giris yaptiriyoruz.
 $user2 = $bul['username'];
 if($user2 !='')  // eğer kullanici radcheck tablosunda varsa giris yap.
 {

 // Kullanıcımızı captiveportal ekranı gelmeden girisini tamamliyoruz.

 captiveportal_logportalauth($user2,$clientmac,$clientip,"Bir kahvenin kirk yil hatri olur dedi ve giris yapti.");
 portal_allow($clientip, $clientmac, $user2);
 exit;
 }
 else{}
 }

else { }

/* Kullanici Hatirlama Modulu bitis  */

Ayrıca CaptivePortal’ın zaten giriş yaptıktan sonra Mac’i otomatik izinli maclere ekletebiliyoruz gibi muhabbetler olacaktır.Ama malesef buraya eklenen macler captiveportal üzerinde tanımlanan herşeyi es geçiyor ve hiçbir limitleme veya eğer bir report veya log alıyorsanız bunları almanız mümkün olmuyor. (Mac ve İp loglarından bahsetmiyorum.)

Arama
RSS
Beni yukari isinla