Skip navigation

Kaynak yönetimi, Lisans Yönetimi yada birçok ihtiyaç sonucu OCS Inventory NG kullanmak sanırım çok cazip bir çözüm.

Yüklenen yazılımlardan, Registry girişlerine, donanım özelliklerinden paket deploy edebilmeye kadar birçok özelliği başarıyla sunan OCS Inventory NG sanırım alanındaki en başarılı Açık Kaynak çözüm.

Bunun yanında farklı lokasyonlarda internet erişim kısıtlaması yada 5651 sayılı yasa gereği kayıt tutma amaçlı Linux sistemleri kullanıyor, Transparent proxy olarakda Squid kullanıp içerik filtreleme yapıyor ve üzerine birde tanımadığımız bilgisayarlar için zamana dayalı Mac Adres bazlı erişim kontrol sistemi kurmak istiyorsanız çokda uğraşmanız gerekmiyor.

Burada akla gelen en büyük sorun lokasyonlardaki envanterimizde kayıtlı bilgisayarların bu zamana dayalı erişim kontrol sisteminden muaf tutulması olacaktır.

Özet olarak lokasyonlarımızda envanterimizde kayıtlı bilgisayarlara sistem tarafından derhal erişim verilsin, kayıtlı olmayanlarda zamana dayalı geçici erişim için bizden izin alsın böylece internet altyapımızı kullanan misafirlerimiz hakkında daha fazla bilgi sahibi olup daha kapsamlı kayıt tutalım. Bunun içinde tamamı açık kaynak olan bir altyapı kullanalım.

Gerekli Malzemeler ;

1- Mysql destekli kurulmuş OCS Inventory NG :  http://www.ocsinventory-ng.org/

2- Linux gateway olarak kullanılan sunucuda
-enable-arp-acl ile derlenmiş Squid Proxy : http://www.squid-cache.org/
Aynı sunucu üzerinde web sunucu (Apache olabilir)

OCS Inventory Server kurduktan ve tüm client larımıza Agent yükledikden sonra envanterimizdeki tüm bilgisayarların tüm MAC adresleride veritabanımızda tutulmuş olacaktır. Bu MAC adresleri Squid in kullanacağı bir biçimde listeleyip ve online olarak Erişim denetimi yapmak istediğimiz sunucularımıza çektirirsek özel olarak bir çaba harcamadan erişim denetimi vermiş olacağız.

OCS Inventory Server Mysql destekli kurulduğunda aşağıdaki küçük PHP bloğu ile tüm bağlı bilgisayarların sanal ve bluetooth arabirimleri dışında (tabi birde PPP ağ bağdaştırıcıları dışında) kalan tüm ağ arabirimlerine ait MAC adreslerini SQUID inde okuyabileceği şekilde kolayca listeliyoruz.(Kısaca ethernet kartları ve kablosuz ağ bağlantı modülleri)

<?php
$link = mysql_connect(‘localhost’, ‘MYSQLKULLANICIADI’, ‘MYSQLPASS’);

$db_selected = mysql_select_db(‘DATABASE ADI’, $link);

$result = mysql_query(‘SELECT hardware.NAME,networks.MACADDR,networks.DESCRIPTION from networks,hardware where networks.hardware_id=hardware.id and networks.DESCRIPTION not like “%TAP%” and networks.DESCRIPTION not like “%bluetooth%” and networks.DESCRIPTION not like “%
PPP%”;
‘);

while ($row = mysql_fetch_assoc($result)) {
echo “## “.$row['NAME'].”….. “.$row['DESCRIPTION'];
echo “\n”;
echo $row['MACADDR'];
echo “\n”;
}

mysql_free_result($result);

mysql_close($link);

?>

Squid üzerinde ARP ACL tanımladığımızda bir dosya yolu gösterebilir ve bu dosyaya tüm MAC adreslerimizi alt alta yazarak okutabiliriz. Comment ler ile bilgisayar adlarını ve ağ bağdaştırıcı adlarını aldık ki elle dosyayı açtığımızda bize anlamlı gözüksün.

Squid.conf dosyamızda ise izin vereceğimiz MAC adreslerini bir dosyada tutarak aşağıdaki şekilde gösterebiliriz.

acl mac_listesi arp “/etc/squid/macs.php”

macs.php dosyası yukarıda örneiğini verdiğimiz küçük script bloğu. wget ile istediğiniz bir periyotta çektirip yerine koymanıza sanırım söylemeye gerek yok. tabiki her güncellemede birde “squid -k reconfigure” diyerek conf. dosyasını yeniden yüklemeniz gerekecek.

Tüm bunları yapıp mac_listesi adındaki ACL listesine aşağıda görüldüğü gibi http çıkışına izin verirsek online olarak daha sonrada eklenecek olan bütün envanterimizde kayıtlı olan bilgisayarlarımıza erişimi açmış olacağız. Tabiki diğer bilgisayarlara bir form göstermek için redirect etmemiz gerekecek, özetle squid.conf daki duruşu şu şekilde.

http_access allow mac_listesi
http_access deny all
deny_info http://gecici.erisim.formu all

gecici.erisim.formu dediğimiz aslında gene aynı makinanın web adresidir. Yani squid inizin dinlediği sunucudaki web kaynağı.

Artık bunda sonraki kısım ufak birkaç PHP kodlarından ibaret. Özetle iki adet web formumuz var. Birisi yukarıdaki blokta yönlendirdiğimiz kullanıcının göreceği ve bilgilerini girip erişim talebinde bulunacağı web form. Diğeri ise eğer bu erişime bir yerden alınacak kod ile desteklemek istiyorsak o kodun oluşacağı form. Kuruluşlar geçici erişim verirken kontrolü bir nebze daha elinde tutmak için geçici şifreler üretip bu forma üretip verdikleri şifrelerinde girilmesini isteyebiliyorlar. Tıpkı yukarıdaki mac_listesi dosyası gibi birde geçici erişim vereceğimiz gecici_mac_listesi adında doaya açabilir gene istediğimiz periyotta (geçici kullanıcılara ne kadar süre ile internet erişimi vermek istiyorsak) bu dosyayı silerek erişimleri iptal edebiliriz.

Misafir kullanıcının ilk girişteki gördüğü formda MAC adresinin tespit edilmesi,
Başka bir formda şifre üretilmesi ve şifrelerin bir dosyada saklanması, şifrelerin saklandığı dosyadan erişim formu girildiğinde kontrol ettirip iptal ettirilerek erişim verme ve bunu gecici erişimlerin tutulduğu text dosyasına ekleyerek squid i tekrar yükleme işlemini yapacak PHP kodları için yön gösterici birkaç örnek vermek gerekirse…

Sayfayı gören kullanıcının MAC adresini almak için

<?php
//ARP TABLOSUN
exec(‘arp -a’,$macAdresleriTablosu);

//KULLANICININ IPSINI OGRENIYORUZ BURADA BIZ YONLENDIRDIĞIMIZ İÇİN PROXY ARKASINDAKİ IP ADRESİNE İHTİYACIMIZ VAR
$kullaniciIpsi=$_SERVER['HTTP_X_FORWARDED_FOR'];

//TABLODAKI TOPLAM IP SAYISINI OGRENIYORUZ
$adresSayisi= count($macAdresleriTablosu);

//BU DEGISKEN BIZE BULUNAN IPNIN ILK SAYISININ YERINI VERECEGI ICIN -1 DEMEK BULUNMADI DEMEK OLUYOR
$bulundu=-1;

//TU TABLOYU TARIYORUZ
for($i=0;$i<$adresSayisi;$i++)
{
//BURADA BU SATIRDA ARADIGIMIZ IP ADRESI VAR MI BAKIYORUZ
$bulundu=strpos($macAdresleriTablosu[$i],$kullaniciIpsi);

if($bulundu>-1)
{
//BURADA EGER IP ESLESTIYSE MAC ADRESINI KESIP $kullaniciMacAdresi DEGISKENINE KAYDEDIYORUZ
preg_match(“[..:..:..:..:..:..]“,$macAdresleriTablosu[$i],$kullaniciMacAdresi);
}

}

//EGER MAC BULUNAMADIYSA YERINE BULUNAMADI DIYE BIR METIN KOYUYORUZ
if(empty($kullaniciMacAdresi[0]))
{
$kullaniciMacAdresi[0]=” MAC Adresi bulunamadi”;
}
//BURADADA BULDUGUMUZ IP-MAC ADRESLERINI
//print(‘<h1><u>IP :</u> ‘.$kullaniciIpsi.’ – <u>MAC ADRESI :</u>’.$kullaniciMacAdresi[0].'</h1>’);

?>

Ve kullanıcının gördüğü html formdan dönen veriyi işleyen blok. PHP ile aşina olanlar için belki birkaç fikir verebilir.

<?php
if ($_POST['submit'] == "Giris"){
        $adi = $_POST['element_1'];
        $soyadi = $_POST['element_2'];
        $tcno = $_POST['element_3'];
        $kod = $_POST['element_5'];

        $dosya = "/etc/squid/gecicikodlar";
        $dosya2 = "/etc/squid/gecicimacs";
        $handle = fopen($dosya, 'r');
        $icerik = fread($handle, filesize($dosya));

        if (strlen($kod)>5 and strlen($adi)>1 and strlen($soyadi)>1 and strlen($tcno)>1) {
                if (preg_match("/".$kod."/i", $icerik)) {
                        fclose($handle);
                        $fh = fopen($dosya2, 'r+');
                        $icerik2 = fread($fh, filesize($dosya2));
                        $veri = "## ".$adi." -- ".$soyadi." -- ".$tcno." -- ".$kod." -- ".$kullaniciIpsi."\n".$kullaniciMacAdresi[0]."\n";
                        fwrite($fh, $veri."");
                        echo "Giris Basarili";
                        $yeniicerik= preg_replace("/".$kod."/i",".",$icerik);
                        $handle = fopen($dosya, 'w');
                        fwrite($handle,$yeniicerik);
                        fclose($fh);
                        shell_exec('/usr/sbin/squid -k reconfigure');
                        ?>
                        <head>
                        <meta http-equiv="refresh" content="0;url=http://www.erisimsonrasiyonlendirilecekwebadresi.com" />
                        </head>
                        <?php
                                } else {
                        echo "Yanlis Kod Girdiniz";
                }
        } else {
                echo "Eksik Bilgi Girdiniz";
        }
fclose($handle);
}
?>
About these ads

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logo

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter picture

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook photo

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ photo

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s

Takip Et

Her yeni yazı için posta kutunuza gönderim alın.

%d blogcu bunu beğendi: