LinuxForum.Fans
Тема

Выход из локальной сети в интеренет только для определенных адресов

Автор: kerogaz 33 сообщений 3766 просмотров
#304013
mozgfx написал:
В некоторых дистрибутивах лучше делать такие вещи все-таки штатными средствами....
Например в openSuSe iptables управляется скриптом SuSEfirewall2... и конфигурационный файл расположен в другом месте в отличии от других дистрибутивов.
Что у Вас за дистрибутив?

CentOS 6.3. Я попробовал штатное средство: system-config-firewall-tui - поперчил iptables до неузнаваемости, даже до записи скрипта не дошёл, интеренет погас , пришлось переустанавливать iptables вручную. Так что штатные средства не всегда есть хорошо :)

А программисты мне сказали что так просто не вставишь, что к этому скрипту надо ещё писать шелл-скрипт

#304317

Ваша ссылка утверждает что ограничения...
Если отсутствие GUI Вас не пугает то я бы использовал официальные руководства:
Cent OS Iptables
В вопросе ссылка...
А в комментариях советы...

#304350

Короче я написал шелл скрипт в файл, дал ему соответствующие права, запустил

text
#!/bin/sh
for MAC in `cat mac.lst`; do
  iptables -A FORWARD -i eth0 -o eth1 -m mac --mac-source $MAC -j ACCEPT
done
iptables -P FORWARD  DROP

Все разрешенные МАКи успешно добавляются а строку с DROP не вижу

Правда когда написал

text
iptables -L --line-number

Получил

text
............
Chain FORWARD (policy DROP)
num  target     prot opt source               destination         
1    ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
2    ACCEPT     icmp --  anywhere             anywhere            
3    ACCEPT     all  --  anywhere             anywhere            
4    ACCEPT     all  --  anywhere             anywhere            
5    ACCEPT     all  --  anywhere             anywhere            
6    REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 
7    ACCEPT     all  --  anywhere             anywhere            MAC 00:16:E6:51:22:EF 
8    ACCEPT     all  --  anywhere             anywhere            MAC 00:16:E6:51:22:EF 
9    ACCEPT     all  --  anywhere             anywhere            MAC 48:5B:39:A9:D9:05 
.............

Это правильно? Чего-то многовато ACCEPT Я так понимаю что если всем разрешено всё то какая разница, добавим мы разрешенные МАК или нет? Или я чего недопонимаю?

#304421
kerogaz написал:
Короче я написал шелл скрипт в файл, дал ему соответствующие права, запустил

По выводу команды можно сделать вывод о том, что при задании новых правил забыли очистить список прежних, разрешающих всем всё правил. При этом получилось, что новые правила добавились после прежнего списка. И, поскольку предыдущий список заканчивался режектом для всех оставшихся - на этом режекте iptables и закончит анализ правил. До анализа новых правил дело не дойдет. Отсюда три варианта решения проблемы:
1. Иметь один глобальный скрипт на все правила, как на цепочку INPUT, так и на FORWARD. И в нем вставлять те или иные правила в нужные места.
2. Перед заданием своей новой цепочки правил надо старую очищать. iptables -F FORWARD
3. Если нужно вставить новое правило в сушествующую цепочку, то пользоваться ключем не A[ppend] а I[nsert]. Тогда новые правила будут вставляться в начало списка, а не добавляться к его концу. В котором может быть прописан режект или дроп.

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

#304767

Спасибо, я очистил цепочку FORWARD а затем запустил скрипт. Теперь нормально

text
Chain FORWARD (policy DROP)
num  target     prot opt source               destination         
1    ACCEPT     all  --  anywhere             anywhere            MAC 00:16:E6:51:22:EF 
2    ACCEPT     all  --  anywhere             anywhere            MAC 48:5B:39:A9:D9:05 
#305360

Написал я шелл скрипт, дал нужные права , запустил

text
#!/bin/sh
 
for MAC in `cat mac.lst`; do
 
  iptables -A FORWARD -i eth0 -o eth1 -m mac --mac-source $MAC -j ACCEPT
 
done
 
iptables -P FORWARD  DROP

и получил iptables следующего вида

text
Generated by iptables-save v1.4.7 on Wed Feb 27 08:40:50 2013
*filter
:INPUT ACCEPT [28:4282]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [14:1727]

-A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i eth0 -o eth1 -m mac --mac-source 00:16:E6:51:22:EF -j ACCEPT -A FORWARD -i eth0 -o eth1 -m mac --mac-source 48:5B:39:A9:D9:05 -j ACCEPT COMMIT # Completed on Wed Feb 27 08:40:50 2013 # Generated by iptables-save v1.4.7 on Wed Feb 27 08:40:50 2013 *nat :PREROUTING ACCEPT [54:5094] :POSTROUTING ACCEPT [0:0] :OUTPUT ACCEPT [5:281] :test - [0:0] -A POSTROUTING -o eth0 -j MASQUERADE COMMIT # Completed on Wed Feb 27 08:40:50 2013 # Generated by iptables-save v1.4.7 on Wed Feb 27 08:40:50 2013 *mangle :PREROUTING ACCEPT [153:18828] :INPUT ACCEPT [111:15732] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [32:4637] :POSTROUTING ACCEPT [32:4637] COMMIT # Completed on Wed Feb 27 08:40:50 2013

Но чего-то iptbles никого не пускает в интеренет даже разрешенные макадреса

Для доступа в интернет приходится делать откат:

text
iptables -P FORWARD ACCEPT

Наверное после жесткого правила DROP в цепочках не поднимается ACCEPT

#305435

Мне один чел сказал по поводу моего iptables, но я так ничего не понял ( странности он выделил жирным)
"довольно странно фильтровать "внешний интерфейс" по внутренним макам.:
..........
-A FORWARD -i eth0 -o eth1 -m mac --mac-source 00:16:E6:51:22:EF -j ACCEPT


...........


-A POSTROUTING -o eth0 -j MASQERADE

#305865

Так что пока я делаю по рабоче-крестьянски, запрещаю маки по одному, так они банятся

text
:FORWARD ACCEPT [4185793:225975900]
-A FORWARD -m mac --mac-source 00:0F:B0:F2:AE:93 -j DROP
#305919

Вариант с выдачей ip адресов dhcp сервером по мак адресу не пробовал?

"kerogaz" написал:
Мне один чел сказал по поводу моего iptables

Правильно сказал, правило неверное, надо так:

text
/sbin/iptables -A FORWARD -i ethX -m mac --mac-source YOUR-MAC-ADDRESS-HERE -j ACCEPT
text
for MAC in `cat mac.lst`; do
  iptables -A FORWARD -i ethX -m mac --mac-source $MAC -j ACCEPT
done
iptables -P FORWARD  DROP

Вместо ethX - интерфейс локальной сетки.

#306526

Попробую. Меня собственно говоря интересует почему если я задаю политику -P FORWARD ACCEPT то я могу командой iptables -A FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP запрещать отдельные mac адреса, а если наоборот, задаю политику -P FORAWARD DROP. не получается разрешить нужные mac - адреса. Может DROP намертво всё глушит и лучше REJECT использовать?
Вот что я вычитал
Iptables Tutorial 1.1.19
"6.5.3. Действие DROP

Данное действие просто "сбрасывает" пакет и iptables "забывает" о его
существовании. "Сброшенные" пакеты прекращают свое движение полностью,
т.е. они не передаются в другие таблицы, как это происходит в случае с
действием ACCEPT. Следует помнить, что данное действие может иметь
негативные последствия, поскольку может оставлять незакрытые "мертвые"
сокеты как на стороне сервера, так и на стороне клиента, наилучшим
способом защиты будет использование действия REJECT особенно при защите
от сканирования портов."

#306530

А если тупо так *SORRY*

text
#!/bin/sh

iptables -P FORWARD DROP for MAC in `cat mac.lst`; do iptables -A FORWARD -i eth0 -o eth1 -m mac --mac-source $MAC -j ACCEPT iptables -A FORWARD -i eth1 -o eth0 -m mac --mac-source $MAC -j ACCEPT done

или

text
#!/bin/sh

iptables -P FORWARD DROP for MAC in `cat mac.lst`; do iptables -A FORWARD -m mac --mac-source $MAC -j ACCEPT done

#306534
"kerogaz" написал:
а если наоборот, задаю политику -P FORAWARD DROP. не получается разрешить нужные mac - адреса. Может DROP намертво всё глушит и лучше REJECT использовать?

В качестве политики по умолчанию допускается использовать DROP и ACCEPT.

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