LINUX.ORG.RU
решено ФорумAdmin

Запрет статических айпишников в локальной сети.

 , ,


1

1

День добрый!
Каким образом можно запретить доступ в интернет (а по возможности и в локалку) компам со статическими айпишниками?
У меня шлюз на Debian Squeeze с dnsmasq в качестве dhcp сервера. Каждому компу в локалке назначена связка MAC+IP.
И можно ли запретить dnsmasq выдавать айпишники свободно (без назначенного по MAC)?
Заранее благодарю за помощь.



Последнее исправление: cetjs2 (всего исправлений: 1)

на шлюзе создаешь статическую (необновляемую) таблицу arp и ответов от него нарушители не увидят

anonymous
()
Ответ на: комментарий от DALDON

Мы небольшая компания (10-15 человек), дороговато будет. Главная задача - запретить доступ в интернет статике. Остальное по возможности.

IlyaGulya
() автор топика
Ответ на: комментарий от IlyaGulya

Подумай о прокси ( squid ) с доменной авторизацией. Ограничение по адресу - дело неблагодарное.

router ★★★★★
()
Ответ на: комментарий от IlyaGulya

Любое софт ограничение по адресу - дело довольно не благодарное. Но в целом можешь замутить: ip + mac + имя компьютера. :) Будет более-ли менее.

DALDON ★★★★★
()

Можно использовать опцию --dhcp-script у dnsmasq и написать скрипт который будет добавлять/удалять правила в фаерволе.

Изначально при старте iptables будет создаваться цепочка типо такой:

iptables -P FORWARD REJECT
iptables -N dhcp

iptables -A FORWARD -i $LAN_INTERFACE -j dhcp
iptables -A FORWARD -i $WAN_INTERFACE -o $LAN_INTERFACE -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Затем в скрипте добавления --dhcp-script:

iptables -A dhcp -m mac --mac-source $CLIENT_MAC -s $CLIENT_IP -j ACCEPT

И соответствующая строчка для удаления.

Можно пойти другим путём и просто добавить те же ограничения по ip/mac в iptables ручками. Это подойдёт если состав компов редко меняется.

Ну и как говорили выше - фильтрация по ip/mac легко обходится:

  1. Пассивно слушается трафик для выявления легитимных ip/mac
  2. Ставим у себя этот ip/mac (желательно когда комп с этим ip/mac не в сети) и ходим в инет.
Nao ★★★★★
()
Последнее исправление: Nao (всего исправлений: 1)
Ответ на: комментарий от Nao

Сотрудники такое провернуть не смогут, так что не страшно. А даже если и выйдет, найти нарушителя не долго, ибо все компы обычно в сети. Вариант с dhcp-скриптом мне понравился, спасибо! Попробую сегодня-завтра и отпишусь.

IlyaGulya
() автор топика

Отобрать права администратора у пользователей и прописать получать ip посредством dhcp очевидно же.

anton_jugatsu ★★★★
()
Ответ на: комментарий от anton_jugatsu

У некоторых юзеров просто нельзя отобрать права админа, используются программы, написанные давно и требующие админских прав. Ну и разумеется, где это видано, чтобы у директора, к примеру не было админских прав :)

IlyaGulya
() автор топика

Такая функциональность точно есть у pfsense 2.

А dnsmasq хоть и с большим функционалом, но с неширокими возможностями по тонкому тюнингу. Возможно, isc-dhcp-server вам подошел бы лучше.

ololoid ★★★★
()
Ответ на: комментарий от ololoid

PfSense 2 мы пользовали раньше. Но, из-за многочисленных проблем по поддержке, пришлось перейти на дебиан. На данный момент dnsmasq всем устраивает, а недостающий функционал можно добавить скриптами, как уже писал Nao.

IlyaGulya
() автор топика
Ответ на: комментарий от King_Carlo

где это видано, чтобы у директора, к примеру не было админских прав

упал под стол.

На самом деле некоторым директорам будет трудно объяснить почему у него не должно быть админских прав на своём компьютере.

Nao ★★★★★
()
Ответ на: комментарий от ololoid

Заковырки с самбой были (устаревшая версия), точно уже не вспомню какие, и ещё по мелочи. В целом, полностью устраивал, но в дебиане мне уютнее (плохо разбираюсь в FreeBSD).

IlyaGulya
() автор топика

Еще один вариант. На шлюзе поставить впн-сервер и подключать к интернету после ввода пароля.

anonymous
()
Ответ на: комментарий от ololoid

Изначально тоже она подкупила. Но в случае непредвиденных обстоятельств в дебиане я починю всё за 5 минут, а во фряхе за 5 часов. :D

IlyaGulya
() автор топика
Ответ на: комментарий от Nao

Как и обещал, результаты. Всё взлетело.
WAN - eth0
LAN - eth1
При старте iptables:

iptables -P FORWARD DROP
iptables -N dhcp

iptables -A FORWARD -i eth1 -j dhcp
iptables -A FORWARD -i eth0 -o eth1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Скрипт dnsmasq:
#!/bin/bash
TEST=`iptables -L -vn | grep $2 | grep $3`
TEST2=`iptables -t nat -L -vn | grep $2 | grep $3`
if [ "$1" = "add" ]; then
        iptables -A dhcp -m mac --mac-source $2 -s $3 -j ACCEPT;
        iptables -t nat -A PREROUTING -m mac --mac-source $2 -s $3 -i eth1 -p tcp -m tcp -m multiport --dports 80 -j REDIRECT --to-ports 3128
        echo `date "+%x %X"` " - Added computer $4: $3 $2" >> /var/log/dnsmasq.iptables.log;
elif [ "$1" = "old" ]; then
        if [[ ! $TEST ]]; then
                iptables -A dhcp -m mac --mac-source $2 -s $3 -j ACCEPT;
                echo `date "+%x %X"` " - Restored computer $4: $3 $2 (NAT)" >> /var/log/dnsmasq.iptables.log;
        fi
        if [[ ! $TEST2 ]]; then
                iptables -t nat -A PREROUTING -m mac --mac-source $2 -s $3 -i eth1 -p tcp -m tcp -m multiport --dports 80 -j REDIRECT --to-ports 3128;
                echo `date "+%x %X"` " - Restored computer $4: $3 $2 (Squid)" >> /var/log/dnsmasq.iptables.log;
        fi
elif [ "$1" = "del" ]; then
        iptables -D dhcp -m mac --mac-source $2 -s $3 -j ACCEPT;
        iptables -t nat -D PREROUTING -m mac --mac-source $2 -s $3 -i eth1 -p tcp -m tcp -m multiport --dports 80 -j REDIRECT --to-ports 3128
        echo `date "+%x %X"` " - Removed computer $4: $3 $2" >> /var/log/dnsmasq.iptables.log;
fi

IlyaGulya
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.