forum.bitel.ru http://forum.bitel.ru/ |
|
Проверка по MAC: Linux+BGRadius+PPPoE. Решение http://forum.bitel.ru/viewtopic.php?f=5&t=65 |
Страница 1 из 1 |
Автор: | Shturman [ 26 янв 2007, 15:05 ] |
Заголовок сообщения: | Проверка по MAC: Linux+BGRadius+PPPoE. Решение |
Мне наконец удалось решить проблему того, как все это организовать. Все кто юзает Linux стоит попробывать. Одно условие: все компоненты Linux. С цисками не пробовал. Пока. Если интересно, расскажу. На мой взгляд, решает более чем на половину проблемы кражи паролей. Если не полностью! Тестирую уже второй месяц. Дело в том, что МАС вытягиваю из логов PPPoE сервера, то есть подделав МАС работать ничего не будет. Поправте меня, если не прав Первый МАС пользователя метится как допустимый и хранится в MySQL базе. Все остальные МАС (Они тоже заносятся в базу) необходимо разрешать операторам абонентского отдела. |
Автор: | ЛИС [ 27 янв 2007, 17:45 ] |
Заголовок сообщения: | |
Ну, интересно. Как? |
Автор: | Shturman [ 30 янв 2007, 11:06 ] |
Заголовок сообщения: | |
Все просто на самом деле: 1. При аторизации на исполнение уходит скрипт auth-up, он вызывает другой сценарий. 2. Листинг другого сценария: Код: #!/usr/bin/perl use strict; use Mysql; my $log_path = "/var/log/messages"; sub GetLog { my @lines; open (TXTFILE, $_[0]); @lines = <TXTFILE>; close(TXTFILE); return @lines; }; my $q = "created"; my @result = grep /\s$q\s/, GetLog ($log_path); my ($line, $mac_adr) = ""; foreach $line (@result) { if ($line =~ /\w+\s+(\w+:\w+:\w+:\w+:\w+:\w+)\s+/) { $mac_adr=$1; }; }; my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime (time); my $date = 1900+$year."-".(1+$mon)."-".$mday; my $login = $ARGV[0]; my $If = $ARGV[1]; my $MAC_DB = Mysql->Connect("localhost","MAC_base"); my $Res = $MAC_DB->Query("SELECT * FROM center WHERE login = \"$login\"") or die $Mysql::db_errstr; my $Count = $Res->rows; my @Rows; if ($Count==0) { $MAC_DB->Query("INSERT INTO center ( login, mac, date1, accept) VALUES(\"$login\" , \"$mac_adr\", \"$date\", 1)") or die $Mysql::db_errstr; } else { $Res = $MAC_DB->Query("SELECT * FROM center WHERE login = \"$login\" AND mac = \"$mac_adr\" AND accept = 1") or die $Mysql::db_errstr; $Count = $Res->rows; if ($Count == 0) { $Res = $MAC_DB->Query("SELECT * FROM center WHERE login = \"$login\" AND mac = \"$mac_adr\" AND accept = 0") or die $Mysql::db_errstr; $Count = $Res->rows; if ($Count==0) { $MAC_DB->Query("INSERT INTO center ( login, mac, date1, accept) VALUES(\"$login\" , \"$mac_adr\", \"$date\", 0)") or die $Mysql::db_errstr; }; system ("/sbin/ifconfig $If down"); print "User $login with MAC $mac_adr at $date is disconnected\n"; }; }; exit; Лог messages пополняется следующими сообщениями типа: Код: Jan 30 09:51:34 gateway pppoe-server[1089]: Session 10 created for client 00:15:f2:3b:5b:30 (10.67.15.10) on eth0 using Service-Name ''
На доли секунды в которые все просиходит, запись о старте сессии является последним сообщением PPPoE сервера |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |