Page 2 of 7 FirstFirst 1234 ... LastLast
Results 16 to 30 of 98

Thread: Фильтрация и привязка IP по МАС адресу

  1. #16
    Join Date
    Nov 2006
    Location
    Vladivostok, Russia
    Posts
    2

    Мониторинг

    Изза "нового" оборудования пришлось отменять опцию "hide ssid" и снижать некоторые запросы по шифрованию, естественно безопасность упала. Чтобы отбиваться от возможных атак сделал ряд скриптов.

    Первый - REBUILD_RULES (выстраивает новые правила firewall, лежит в /opt/etc/init.d) Воспользоваться им смогут те, кто умеет руками писать правила iptables.

    Code:
    echo "
    # Setting defaults
    iptables -F
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -P OUTPUT ACCEPT
    
    ...{Ваше любое множество правил | Your rules}...
    
    " > /opt/etc/init.d/S11network
    
    cat /etc/ethers | awk {'print "iptables -t filter -I FORWARD 1 -s "$2" -m mac --mac-source "$1" -j ACCEPT"'} >> ./S11network
    cat /etc/ethers | awk {'print "iptables -t filter -I INPUT 1 -s "$2" -m mac --mac-source "$1" -j ACCEPT"'} >> ./S11network
    Последние две строки добавляют разрешающие правила (используя mac и IP адрес с файла /etc/ethers). Советую просто держать этот файл всегда актуальным. Как только нужно добавить новое устройство в сеть, идем в /etc/ethers и заполняем ip и мас адреса. Не забудьте сделать S11network исполняемым. Формат файла ethers такой:
    Code:
    00:0c:73:8e:3f:ba 192.168.1.2
    00:13:02:26:53:1f 192.168.1.4
    00:17:31:1f:73:59 192.168.1.3
    00:0b:6c:4e:63:1b 192.168.1.5
    Даже если кто-либо пройдет в wifi сеть - дальше делать будет нечего, только сканировать сеть на предмет telnet`ов к маршрутизатору (Настоятельно рекомендую ssh)

    Второй скрипт (точнее группа скриптов) - maccontrol. Скрипт вешается в cron и при появлении новых mac адресов сообщает - Notify если mac адрес известен и ALARM если mac неизвестен.

    Что должно быть установлено - cron, diffutils, php

    1) mkdir /opt/etc/maccontrol/
    2) touch /opt/etc/maccontrol/dev_old
    3) Файл /opt/etc/maccontrol/scanner:
    Code:
    #!/bin/sh
    /usr/sbin/brctl showmacs br0 | grep -v "is local?" | grep "no" | awk '{print $1" "$2}' > /opt/etc/maccontrol/dev_new
    /opt/bin/diff /opt/etc/maccontrol/dev_old /opt/etc/maccontrol/dev_new | grep ">" | awk '{print $2" "$3}' > /opt/etc/maccontrol/delta
    HOST="Unknown"
    S=1
    for j in `cat /opt/etc/maccontrol/delta` ; do
    IP=""
        for i in `cat /etc/ethers` ; do
            if [ "$N" = "get" ]; then
                IP="$i"
                N=""
            fi
            if [ "$i" = "$j" ]; then
                N="get"
            fi
        done
    
        if [ $S == "2" ]; then
            S=0
            if [ "$IP" != "" ]; then
                HOST=`cat /etc/hosts | grep $IP | awk '{print $2}'`
                echo "Notify: $HOST on BR-$BR with $IP"
            else
                echo "!!!_ALARM_!!! $j on BR-$BR"
            fi
            BR=""
            HOST=""
        fi
        if [ $S == "1" ]; then
            BR="$j"
        fi
        S=$(($S + 1))
    done
    rm -f /opt/etc/maccontrol/dev_old
    mv /opt/etc/maccontrol/dev_new /opt/etc/maccontrol/dev_old
    rm -f /opt/etc/maccontrol/delta
    4) файл /opt/etc/maccontrol/sendmail.php:
    Code:
    <?php
    //new function
    
    $to = "7914xxxxxxxxxx@sms.primtel.ru";
    $nameto = "nameto";
    $from = "xxxxxxxxxx@mail.ru";
    $namefrom = "namefrom";
    $subject = "wi-info";
    $message = file_get_contents("/opt/etc/maccontrol/out.txt");
    if (strlen($message)>10){
    authSendEmail($from, $namefrom, $to, $nameto, $subject, $message);
    }
    
    ?>
    
    <?php
    /* * * * * * * * * * * * * * SEND EMAIL FUNCTIONS * * * * * * * * * * * * * */
    
    //Authenticate Send - 21st March 2005
    //This will send an email using auth smtp and output a log array
    //logArray - connection,
    
    function authSendEmail($from, $namefrom, $to, $nameto, $subject, $message)
    {
    //SMTP + SERVER DETAILS
    /* * * * CONFIGURATION START * * * */
    $smtpServer = "smtp.mail.ru";
    $port = "25";
    $timeout = "30";
    $username = "xxxxxxxxxx";
    $password = "xxxxxxxxxx";
    $localhost = "localhost";
    $newLine = "\r\n";
    /* * * * CONFIGURATION END * * * * */
    
    //Connect to the host on the specified port
    $smtpConnect = fsockopen($smtpServer, $port, $errno, $errstr, $timeout);
    $smtpResponse = fgets($smtpConnect, 515);
    if(empty($smtpConnect))
    {
    $output = "Failed to connect: $smtpResponse";
    return $output;
    }
    else
    {
    $logArray['connection'] = "Connected: $smtpResponse";
    }
    
    //Request Auth Login
    fputs($smtpConnect,"AUTH LOGIN" . $newLine);
    $smtpResponse = fgets($smtpConnect, 515);
    $logArray['authrequest'] = "$smtpResponse";
    
    //Send username
    fputs($smtpConnect, base64_encode($username) . $newLine);
    $smtpResponse = fgets($smtpConnect, 515);
    $logArray['authusername'] = "$smtpResponse";
    
    //Send password
    fputs($smtpConnect, base64_encode($password) . $newLine);
    $smtpResponse = fgets($smtpConnect, 515);
    $logArray['authpassword'] = "$smtpResponse";
    
    //Say Hello to SMTP
    fputs($smtpConnect, "HELO $localhost" . $newLine);
    $smtpResponse = fgets($smtpConnect, 515);
    $logArray['heloresponse'] = "$smtpResponse";
    
    //Email From
    fputs($smtpConnect, "MAIL FROM: $from" . $newLine);
    $smtpResponse = fgets($smtpConnect, 515);
    $logArray['mailfromresponse'] = "$smtpResponse";
    
    //Email To
    fputs($smtpConnect, "RCPT TO: $to" . $newLine);
    $smtpResponse = fgets($smtpConnect, 515);
    $logArray['mailtoresponse'] = "$smtpResponse";
    
    //The Email
    fputs($smtpConnect, "DATA" . $newLine);
    $smtpResponse = fgets($smtpConnect, 515);
    $logArray['data1response'] = "$smtpResponse";
    
    //Construct Headers
    $headers = "MIME-Version: 1.0" . $newLine;
    $headers .= "Content-type: text/html; charset=iso-8859-1" . $newLine;
    $headers .= "To: $nameto <$to>" . $newLine;
    $headers .= "From: $namefrom <$from>" . $newLine;
    
    fputs($smtpConnect, "To: $to\nFrom: $from\nSubject: $subject\n$headers\n\n$message\n.\n");
    $smtpResponse = fgets($smtpConnect, 515);
    $logArray['data2response'] = "$smtpResponse";
    
    // Say Bye to SMTP
    fputs($smtpConnect,"QUIT" . $newLine);
    $smtpResponse = fgets($smtpConnect, 515);
    $logArray['quitresponse'] = "$smtpResponse";
    
    #print_r($logArray);
    }
    ?>
    Замените xxxxxxxxxx на нужное Вам.

    5) Файл /opt/etc/maccontrol/starter:
    Code:
    #!/bin/sh
    /opt/etc/maccontrol/scanner > /opt/etc/maccontrol/out.txt
    /opt/bin/php /opt/etc/maccontrol/sendmail.php
    6) Делаем cd /opt/etc/maccontrol ; chmod 755 starter, scanner
    7) В cron lобавляем правило "*/3 * * * * admin /opt/etc/maccontrol/starter"

    Через 3 минуты (или раньше) после коннекта получаем смс сообщение - "Notify: Unknown on BR-2 with 192.168.1.4", где BR-2 wifi, BR-1 - Ethernet. Чтобы вместо Unknown было нормальное имя хоста - прописываем в /etc/hosts

  2. #17

    привязка к Mac адресу

    добрый день.

    заранее извиняюсь за дурацкие вопросы.

    мой провайдер категорически против роутеров. говорит, регистрируйте платно доп. Ip адреса и платите ежемесячно абонентскую плату за их поддержку, кроме того у провайдера осуществляется привязка к мас-адресу.

    правильно ли я понимаю, что для того, чтобы все работало, мне нужно на роутере поменять мас-адрес на тот, который зарегистрировал провайдер, а на десктопном компе поменять мас-адрес на другой, не совпадающий с адресом роутера?

    в связи с этим еще вопрос: провайдер говорит, что у них есть возможность выяснить, реальный(железный) ето мас-адрес или он назначен программно. как быть в таком случае?

  3. #18
    Quote Originally Posted by drJabber View Post
    мой провайдер категорически против роутеров. говорит, регистрируйте платно доп. Ip адреса и платите ежемесячно абонентскую плату за их поддержку, кроме того у провайдера осуществляется привязка к мас-адресу.

    правильно ли я понимаю, что для того, чтобы все работало, мне нужно на роутере поменять мас-адрес на тот, который зарегистрировал провайдер, а на десктопном компе поменять мас-адрес на другой, не совпадающий с адресом роутера?
    Правильно.

    в связи с этим еще вопрос: провайдер говорит, что у них есть возможность выяснить, реальный(железный) ето мас-адрес или он назначен программно. как быть в таком случае?
    Провайдер врёт. Нельзя.
    Но поймать факт использования роутера можно, посмотрев на TTL пакетов. Но против этого можно попросить роутер менять TTL на исходящий пакетах Рецепт как это сделать был, кажется, в приклеенной теме про "настройку с нуля".

  4. #19
    нужно на роутере поменять мас-адрес на тот, который зарегистрировал провайдер, а на десктопном компе менять мас-адрес не нужно, все и так работает.

  5. #20
    2 6opoga,Yazon

    спасибо, вселили уверенность

  6. #21

    mac & ip filtering

    У меня возникла такая задача. Роутер подсоединен по adsl в инет. Большая часть пользователей не должны иметь возможность выхода в инет. С 3 же машин можно. Самый простой способ - с помощью iptables все запретить и разрещить инет этим 3 машинам. Но особо умные из запрещенных машин могут менять ip адрес. Поэтому мне надо сделать фильтрацию и по мак, и по айпи адресам. Мне б подошло нечто такое

    iptables -P FORWARD DROP
    iptables -A FORWARD -m mac --mac-source 0a:c0:0d:22:00:01 -s 192.168.1.2 -J ACCEPT
    iptables -A FORWARD -m mac --mac-source 0a:c0:0d:22:00:02 -s 192.168.1.3 -J ACCEPT
    iptables -A FORWARD -m mac --mac-source 0a:c0:0d:22:00:03 -s 192.168.1.4 -J ACCEPT
    iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

    Но проблема в том, что модуль mac отсутствует. Как реализовать такую связку? Как добавить модуль? Как можно жестко связать адрес и мак?

  7. #22
    Join Date
    Sep 2007
    Location
    St.Petersburg
    Posts
    6
    Quote Originally Posted by kailex View Post
    Но проблема в том, что модуль mac отсутствует.
    А как Вы определили его отсутствие?
    У меня строчка:
    Code:
    iptables -A MAC_FILTER -m mac --mac-source 00:00:00:00:00:00 -j RETURN
    выполняется и даже видна по iptables -nv -L
    В чем именно проблема - правило не создается или не работает?

  8. #23
    Join Date
    Sep 2007
    Location
    St.Petersburg
    Posts
    6
    единственная проблема, которую я могу видеть - это то, что у вас в "-J Accept" большая буква J, а нужна маленькая.

  9. #24
    Quote Originally Posted by kailex View Post
    Но особо умные из запрещенных машин могут менять ip адрес.
    Особо умные могут подменять и МАС адрес .... ИМХО это не решение проблемы авторизации ...

  10. #25

    Exclamation

    AlexNiden, на команды с параметром -m mac --mac-source выдается ошибка Couldn't find match 'mac'. Насчет J - просто опечатка, быстро набирал. А в /lib/modules/... среди прочих модулей нет ipt_mac. Как его добавить? Или надо менять прошивку? У меня сейчас та, что пришла с завода.
    Mirage-net, да я думал над этим. Если человек догадался поменять адрес, то догадается поменять и мак. Например, в WinXP в свойствах адаптера rt1839 можно вручную вводить какой хочешь мак. А что можно сделать в таком случае? Ставить отдельный прокси-сервер с авторизацией по логину/паролю в планы пока не входит, а с помощью роутера такое не релизуешь, сильно не извратившись . Так что мне пока реализовать бы жесткую привязку ip/mac...

  11. #26
    Quote Originally Posted by kailex View Post
    А что можно сделать в таком случае? Ставить отдельный прокси-сервер с авторизацией по логину/паролю в планы пока не входит, а с помощью роутера такое не релизуешь, сильно не извратившись . Так что мне пока реализовать бы жесткую привязку ip/mac...
    OpenVPN здесь я подробно расписал как его ставить ... правда только для одного клиента но поиск поможет настроить и на несколько ...

  12. #27
    спасибо, сейчас почитаю...

  13. #28
    Join Date
    Sep 2007
    Location
    St.Petersburg
    Posts
    6
    Quote Originally Posted by kailex View Post
    AlexNiden, на команды с параметром -m mac --mac-source выдается ошибка Couldn't find match 'mac'. А в /lib/modules/... среди прочих модулей нет ipt_mac. Как его добавить? Или надо менять прошивку? У меня сейчас та, что пришла с завода.
    У меня тоже там нет ipt_mac. Возможно, он вкомпилирован в iptables. Но тут есть 3 момента:
    1. У меня прошивка не заводская, а от Олега
    2. В оригинальной прошивке есть фильтрация по MAC в веб-интерфейсе, значит, в ней тоже это должно работать
    3. OpenVPN действительно лучше и надежнее

  14. #29
    У меня в оригинальной прошивке по мак можно настроить время доступа к роутеру - Parental Control, это работает - блокирует определенный мак на время. Кроме того, есть MAC filtering menu, политику по умолчанию я поставил BLOCKED, но роутер все равно всех пускает через WAN. Самое интересное, что после установки всех этих настроек, в выводе iptables -L -n -v ничего не изменилось. Непонятно, как он работает с мак.

  15. #30

    как вернуть пустой MAC ACCEPT фильр?

    Добрый день. Такая проблема. На wl500gP с прошивкой 1970 перестало работать все! Ни dhcp ни ping 192.168.79.1. Если вручную задать адрес компа то arp -a показывает 192.168.1.1 <MAC_adreess> роутера. Но ни перепрошить ни зайти на страничку управления не могу.

    Это случилось после того, как я поставил фильтр MAC ACCEPT. а позднее удалил все MAC адреса из списка но забыл удалить политку MAC ACCEPT.

    Пробовал по-разному нажимать кнопочку reset. 5 секунд после загрузки - 2 минуты девайс мигает лампочкой power но ничего не помогает. Если выключить, нажать reset, включить то несколько секунд пингуется, а потом перестает.

    Что делать?

Page 2 of 7 FirstFirst 1234 ... LastLast

Similar Threads

  1. Фильтрация нежелательного контента (dnsmasq+adsuck+dnscrypt)
    By ryzhov_al in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 79
    Last Post: 22-01-2017, 10:28

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •