LinuxForum.Fans
Тема

Привязка IP и MAC с помощью iptables

Автор: shuhrat 16 сообщений 8682 просмотров
#21286

Добрый день!

Имеется сервер(OS slackware) на одном интерфейсе которого 192.168.1.1/24. Сервер используется как прокси. Какое должно быть правило на IPTABLES, чтобы пользователь получал доступ к сети, если у него соответствующие ip и mac? Причём правило действовало на определённый интерфейс, а не на всю arp таблицу.

пробовал
iptables -A INPUT -s 192.168.1.x -m mac ! --mac-source xx:xx:xx:xx:xx:xx -j DROP
iptables -A INPUT -d 192.168.1.x -m mac ! --mac-source xx:xx:xx:xx:xx:xx -j DROP
но безуспешно

#21290

Лучше сделать политику по умолчанию DROP

И тогде правила будут такими:

text
iptables -A INPUT -s 192.168.1.x -m mac --mac-source xx:xx:xx:xx:xx:xx  -j DROP
iptables -A OUTPUT -d 192.168.1.x -m mac --mac-source xx:xx:xx:xx:xx:xx  -j DROP
#21292

shuhrat,
Нарушение пункта 3.1.10 Правил (дублирование темы). Делаю вам замечание

#21296
elve написал:
Лучше сделать политику по умолчанию DROP

И тогде правила будут такими:
text
iptables -A INPUT -s 192.168.1.x -m mac --mac-source xx:xx:xx:xx:xx:xx  -j DROP
iptables -A OUTPUT -d 192.168.1.x -m mac --mac-source xx:xx:xx:xx:xx:xx  -j DROP

192.168.1.x - это IP, который должен иметь доступ к сети, используя Ваше правило, я разрешу всем другим MAC использовать этот IP, кроме моего.

Или я не прав?

#21315

Прав. Попробуй с другой стороны подойти.
iptables -A INPUT -s ! 192.168.1.x -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP
Т.е. с этого мака можно только под этим ip зайти.

Либо еще лучше:
iptables -P INPUT DROP
iptables -A INPUT -s 192.168.1.x -m mac --mac-source xx:xx:xx:xx:xx:xx -j ACCEPT

#21344
shuhrat написал:
Или я не прав?

Прошу прощения. С утра отвечал. Глаза не продрал еще :D. Конечно же там везде должно быть ACCEPT вместо DROP

#21496

Интерфейс данного прокси является шлюзом для более чем сотни клиентов. У него же имеется еще несколько подинтерфейсов с таким же условием. Если применить политику по умолчанию DROP, т.е. iptables -P INPUT DROP, то для всех MAC я должен прописывать ACCEPT с соответствующим IP? Если так, можно ли применить политику для определённого интерфейса?(В одной из подсетей пару "злоумышленников" постоянно конфликтуют)

#21648

Ну можно сделать так:
iptables -A INPUT -s 192.168.1.10 -i eth1 -m mac --mac-source xx:xx:xx:xx:xx:xx -j ACCEPT
iptables -A INPUT -s 192.168.1.11 -i eth1 -m mac --mac-source xx:xx:xx:xx:xx:xy -j ACCEPT
iptables -A INPUT -i eth1 -j DROP

#40879

Здраствуйте!!!
как сделать так что бы порты были открыты только тем чьи мак адресса прописаны..
iptables -P INPUT DROP
iptables -A INPUT -s 192.168.1.x -m mac --mac-source xx:xx:xx:xx:xx:xx -j ACCEPT
вот это дает доступ только к сети... а порты как ему открыть????

#40882

iegrec, нужно создать цепочку и в нее перенаправлять. например так:

text

iptables -N users
iptables -A users -p tcp --dport 80 -j ACCEPT
iptables -A users -p tcp --dport 443 -j ACCEPT

iptables -P INPUT DROP iptables -A INPUT -s 192.168.1.x -m mac --mac-source xx:xx:xx:xx:xx:xx -j users

#40891
elve написал:
text

iptables -N users

т.е users один на всех я так понемаю?
а потом просто подстовлять и все !!?

а вот возник такой вопрос а для forward как это сделать ???
iptables -P FORWARD DROP
iptables -A FORWARD -s 192.168.1.x -m mac --mac-source xx:xx:xx:xx:xx:xx -j users
вот так ???



Ответьте пожалуста на мой пост......... мне оч... срочно надо...

#40935
iegrec написал:
[quote=elve]
text

iptables -N users

т.е users один на всех я так понемаю?
а потом просто подстовлять и все !!?

а вот возник такой вопрос а для forward как это сделать ???
iptables -P FORWARD DROP
iptables -A FORWARD -s 192.168.1.x -m mac --mac-source xx:xx:xx:xx:xx:xx -j users
вот так ???



Ответьте пожалуста на мой пост......... мне оч... срочно надо...

[/quote]
Через FORWARD проходят транзитные пакеты. Как определить MAC адрес транзитного пакета?

#40943

не знаю.....
вот мои правила....


#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
#
#eth1=INET
#eth0=LAN
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -F
iptables -t filter -F
iptables -t mangle -F



iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

#Пробросс 80 порта с LAN на 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

#По умолчанию запрещаем весь транзит

iptables -P FORWARD DROP
iptables -P INPUT DROP
#iptables -P OUTPUT ACCEPT

#Разрешить уже установленое соединение
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
#iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

#Режим SYN Флуд
iptables -A FORWARD -p tcp --syn -m connlimit --connlimit-above 10 -j REJECT

################################################################################
#iptables -A INPUT -s 10.0.50.18 -m mac --mac-source 00:1D:09:CA:16:A4 -j ACCEPT
#iptables -A INPUT -s 10.0.50.1 -m mac --mac-source 00:0C:76:6B:01:F7 -j ACCEPT
#iptables -A INPUT -s 79.122.183.82 -m mac --mac-source 00:16:17:9A:EE:98 -j ACCEPT
################################################################################

#Открываем порты скопом если нужно...
#iptables -A FORWARD -o eth1 -m state --state NEW -p tcp -m multiport --dports 5190,48,941 -j ACCEPT
#

#Разрешаем себе пинг наружу - нас же не пропингуешь- пакеты отбрасываются
iptables -A INPUT -p icmp -m icmp -i eth1 --icmp-type echo-reply -j ACCEPT
iptables -A FORWARD -p icmp -m icmp -o eth1 --icmp-type echo-request -j ACCEPT

#Открываем порт для DNS
iptables -A INPUT -i eth0 -p udp -m udp --dport 53 -m state --state NEW -j ACCEPT
#iptables -A FORWARD -o eth0 -m state --state NEW -p udp --dport 53 -j ACCEPT



#Открываем порты для Сбербанка
#iptables -A FORWARD -p udp --dport 87 -s 10.0.50.45 -m state --state NEW -j ACCEPT


# Открываем SSH
iptables -A FORWARD -o eth1 -m state --state NEW -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT

#Открываем порты для почты
iptables -A FORWARD -o eth1 -m state --state NEW -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -m state --state NEW -j ACCEPT
iptables -A FORWARD -o eth1 -m state --state NEW -p tcp --dport 110 -j ACCEPT
iptables -A INPUT -p tcp --dport 110 -m state --state NEW -j ACCEPT

#ICQ/Miranda
iptables -A FORWARD -o eth1 -m state --state NEW -p tcp --dport 5190 -j ACCEPT


#Подклучение к Удаленому рабочему столу 3389
iptables -A FORWARD -o eth1 -m state --state NEW -p tcp --dport 3389 -j ACCEPT
#iptables -A FORWARD -o eth1 -m state --state NEW -p tcp --dport 80 -j ACCEPT

#TELNET
iptables -A FORWARD -o eth1 -m state --state NEW -p tcp --dport 23 -j ACCEPT

#Разрешить DNAT Трафик
iptables -A FORWARD -m conntrack --ctstate DNAT -j ACCEPT

exit 0


вот так все работает...
и увсех есть инет и порты которые прописаны....
ну как сделать так что бы не форвардить порты а
iptables -N users
iptables -A users -p tcp --dport 80 -j ACCEPT
iptables -A users -p tcp --dport 443 -j ACCEPT

iptables -P INPUT DROP
iptables -A INPUT -s 192.168.1.x -m mac --mac-source xx:xx:xx:xx:xx:xx -j users
вот так пойдет в моих правилах? или посоветуйте что нужно переделать.....

#40963
iegrec написал:
Ответьте пожалуста на мой пост......... мне оч... срочно надо...

Да. Для каждого типа пользователей можно сделать свою цепочку =).

В FORWARD должно быть аналогично.

#271087

Здравствуйте. У меня не получается привязать ип к маку, мне нужно чтобы конкретный ип был доступен только для определенных маков. Вот моя конфигурация , что у меня здесь не так?

iptables -P FORWARD DROP
iptables -A FORWARD -s 192.168.0.X -m mac --mac-source XX:XX:XX:XX:XX:XX -j DROP

#271090

iptables -A FORWARD -s 192.168.0.X -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT

А вообще способ не очень красивый, т.к. в этом случае люди все равно могут менять свой ip-адрес и общаться с другими компьютерами внутри одного сегмента сети. Этим правилом вы просто не дадите ему вылезти за пределы этого сегмента.
Для четкого разграничения вам нужно использовать в сети только управляемые коммутаторы - например такие -> D-Link DES-1228ME.

Войдите или зарегистрируйтесь, чтобы ответить.