![]() |
Вопрос по iptables
Всем доброго времени суток.
Помогите пожалуйста разобраться с iptables Ситуация такая: Есть набор правил $IPTABLES -P INPUT DROP $IPTABLES -F INPUT $IPTABLES -P OUTPUT DROP $IPTABLES -F OUTPUT $IPTABLES -P FORWARD DROP $IPTABLES -F FORWARD $IPTABLES -t nat -F $IPTABLES -t filter -A INPUT -p icmp -j ACCEPT $IPTABLES -t filter -A FORWARD -p icmp -j ACCEPT $IPTABLES -t filter -A OUTPUT -p icmp -j ACCEPT ######################################################## $IPTABLES -t filter -A INPUT -d 127.0.0.1 -j ACCEPT $IPTABLES -t filter -A OUTPUT -d 127.0.0.1 -j ACCEPT ########################################################## #$IPTABLES -t filter -A INPUT -d 192.168.0.0/16 -j ACCEPT #$IPTABLES -t filter -A OUTPUT -d 192.168.0.0/16 -j ACCEPT ######################################################### $IPTABLES -t filter -A INPUT -i $EXTIF_LIST -j ACCEPT $IPTABLES -t filter -A OUTPUT -o $EXTIF_LIST -j ACCEPT ########################################################## $IPTABLES -t filter -A INPUT -p tcp --sport 53 -j ACCEPT $IPTABLES -t filter -A FORWARD -p tcp --sport 53 -j ACCEPT $IPTABLES -t filter -A FORWARD -p tcp --dport 53 -j ACCEPT $IPTABLES -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT $IPTABLES -t filter -A INPUT -p udp --sport 53 -j ACCEPT $IPTABLES -t filter -A FORWARD -p udp --sport 53 -j ACCEPT $IPTABLES -t filter -A FORWARD -p udp --dport 53 -j ACCEPT $IPTABLES -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT ########################################################### $IPTABLES -t filter -A INPUT -p udp -s 192.168.0.0/24 --sport 7723 -j ACCEPT $IPTABLES -t filter -A INPUT -p udp -s 192.168.0.0/24 --dport 7723 -j ACCEPT $IPTABLES -t filter -A OUTPUT -p udp -s 192.168.0.0/24 --sport 7723 -j ACCEPT $IPTABLES -t filter -A OUTPUT -p udp -s 192.168.0.0/24 --dport 7723 -j ACCEPT Задача добавить цепочку правил для ip 192.168.0.1 разрешающую ходить везде. при добавлении цепочки iptables -t filter -A INPUT -s 192.168.0.1 -j ACCEPT iptables -t filter -A FORWARD -s 192.168.0.1 -j ACCEPT iptables -t filter -A FORWARD -d 192.168.0.1 -j ACCEPT iptables -t filter -A OUTPUT -d 192.168.0.1 -j ACCEPT Сервер пускает ip 192.168.0.1 в инет, но почемуто не пускает в локальную сеть 192,168,0,0 ((( на команду iptables -L -n для данного ip выдаёт после добавления цепочки выдаёт chain INPUT (policy DROP) ACCEPT all -- 192.168.0.1 0.0.0.0/0 Chain FORWARD (policy DROP) ACCEPT all -- 0.0.0.0/0 192.168.0.1 ACCEPT all -- 192.168.0.1 0.0.0.0/0 Chain OUTPUT (policy DROP) ACCEPT all -- 0.0.0.0/0 192.168.0.1 Почему не пускает в локалку?????? |
По мне так правила очень запутанные, и много ненужных. Все можно сделай намного короче и понятнее.
Цитата:
Или с сервер должен осуществляться доступ? Ничего непонятно. Скажи лучше что должен делать фаервол, я тебе напишу правила. |
Благодарю за содействие!
Значится так... Собссна пытаюсь настроить iptables для раздачи инета для локалки. 192.168.0.0 По умолчанию - всё запрещено. - открыть для ЛС UDP-порт 7723 - этот порт "слушает" серверная часть моего биллинга , для того чтоб осуществлять авторизацию клиентов. - Разрешить пинги - Разрешить dns Можно также разрешить доступ из ЛС к внутреннему веб-серверу, к внутреннему почтовому серверу без авторизации но необязательно, лутше бы конечно чтоб при авторизации просто разрешал данному ip ходить везде Из необходиміх вроди всё, но может ещё чтото посоветуешь? Далее клиент авторизируется с помощью автоизатора и срабатівает скрипт, который поидее добавляет в iptables цепочкую разрешающую данному ip ходить в инет и по локалке вот сам скрипт #!/usr/bin/perl #=========================================================================== # &Allow - Разрешение доступа sub Allow { my ($num,$ip,$gorod,$paket,$adm,$dop,$detail) = @_; unless ($gorod) { system ("/sbin/iptables -t filter -A INPUT -s $ip -j ACCEPT"); system ("/sbin/iptables -t filter -A FORWARD -s $ip -j ACCEPT"); system ("/sbin/iptables -t filter -A FORWARD -d $ip -j ACCEPT"); system ("/sbin/iptables -t filter -A OUTPUT -d $ip -j ACCEPT"); } } sub Deny { my ($num,$ip) = @_; system("/sbin/iptables -t filter -D INPUT -s $ip -j ACCEPT "); system("/sbin/iptables -t filter -D FORWARD -s $ip -j ACCEPT "); system("/sbin/iptables -t filter -D FORWARD -d $ip -j ACCEPT "); system("/sbin/iptables -t filter -D OUTPUT -d $ip -j ACCEPT "); } 1; У меня он почемуто при авторизации пользователя пускал только в интет, в локалку никак ((( команду iptables -L -n описывал выше |
Я так понял пускать он должен в другую локалку? Если же нет, то удали последнее правило.
Код:
IPTABLES -F |
Благодарю, вроди работает )))
Ещё такой вопрос... при такой схеме почемуто принимается и отправляется почта через бат , а также работает icq и jabber можно ли это какимто правилом запретить? |
Попробуй так IPTABLES -A FORWARD --source 192.168.0.0/24 --dport 80 -j ACCEPT
Таким образом мы разрешаем форвард пакетов только на 80 порт. |
меня получился такой набор правил
########################## IPTABLES -F IPTABLES -t nat -F IPTABLES -X IPTABLES -P INPUT DROP IPTABLES -P OUTPUT ACCEPT IPTABLES -P FORWARD DROP IPTABLES -A INPUT -i lo -j ACCEPT IPTABLES -A INPUT -p UDP -m multiport --dport 53,7723 -j ACCEPT IPTABLES -A INPUT -p ICMP --icmp-type 8 -j ACCEPT IPTABLES -A INPUT -i $EXTIF_LIST -j ACCEPT IPTABLES -A OUTPUT -i $EXTIF_LIST -j ACCEPT ################################## EXTIF_LIST - это внешний интерфейс, без него непускал в инет насколько я понимаю - он разрешает общаться серверу с внешним миром... |
Цитата:
|
ясно,,,, а какже запретить приём и отправку почты и icq
|
Цитата:
Параметр --dport указывает на какой порт придет пакет. Вобщем почитай на досуге, полезно http://www.opennet.ru/docs/RUS/iptables/ |
Статью читаю уже на протяжении недели...
материала слишком много и всё в голове не укладывается Гораздо лутше материал усваивается на наглядных примерах За что Вам огромное СПАСИБО! |
У меня на сервере так:
Юзеры цепляются по VPN к серверу, попадают в виртуальную сеть. И затем я разрешаю (с помощью NAT) с ихнего интерфейса и их IP доступ, в интернет. У каждого юзера есть свой pppN интерфейс. Я не понимаю как у тебя юзеры авторизируются и как им доступ должен осуществляться в инет. |
клиент авторизируется с помощью автоизатора и срабатвает скрипт, который добавляет в iptables цепочкую разрешающую данному ip ходить в инет и по локалке после выхода из авторизатора - правила для данного айпи убирается...
sub Allow - разрешение доступа sub Deny - запрет вот сам скрипт #!/usr/bin/perl #=========================================================================== # &Allow - Разрешение доступа sub Allow { my ($num,$ip,$gorod,$paket,$adm,$dop,$detail) = @_; unless ($gorod) { system ("/sbin/iptables -t filter -A INPUT -s $ip -j ACCEPT"); system ("/sbin/iptables -t filter -A FORWARD -s $ip -j ACCEPT"); system ("/sbin/iptables -t filter -A FORWARD -d $ip -j ACCEPT"); system ("/sbin/iptables -t filter -A OUTPUT -d $ip -j ACCEPT"); } } sub Deny { my ($num,$ip) = @_; system("/sbin/iptables -t filter -D INPUT -s $ip -j ACCEPT "); system("/sbin/iptables -t filter -D FORWARD -s $ip -j ACCEPT "); system("/sbin/iptables -t filter -D FORWARD -d $ip -j ACCEPT "); system("/sbin/iptables -t filter -D OUTPUT -d $ip -j ACCEPT "); } 1; |
Понял. Тогда нужно изменять правила в скрипте. Побалуйся там с параметром dport, sport.
|
fossil если можно поподробнее...
Ситуация следующая... В данный момент скрипт инеет такое содержание Код:
IPTABLES -F насколько я понимаю - он разрешает общаться серверу с внешним миром... При таком наборе правил даже без авторизации, клиентская машина в сети 192,168,0,0/24 может забрать отправить почту в/из мира, работает ICQ, Jabber Как это можно устранить... желательно всё приблизить к минимуму, чтобы был минимальный набор правил по умолчанию запрещающий все пакеты из любого адреса сети 192.168.0.0 кроме UDP 7723 - это порт для авторизации клиента на сервере IPTABLES -A INPUT -p UDP -m multiport --dport 53,7723 -j ACCEPT IPTABLES -A INPUT -p ICMP --icmp-type 8 -j ACCEPT |
Цитата:
Код:
system ("/sbin/iptables -t filter -A INPUT -i $EXTIF_LIST -s $ip -j ACCEPT"); |
Народ! Подскажите как мне сделать это =) У меня есть веб сервер, который стоит за шлюзом т.е. в локалке, а точнее в ДМЗ. На шлюзе написано правило которое перекидывает 80 порт с внешнего ИПА на мой внутр. веб-сервер. Потом я добавил правило которое при обращении на мой веб-сервер по порту 50501, т.е. набираем www.domain.ru:50501, перекидывало это соединение на 192.168.0.166 - и все замечательно из Инета работает! Потом от меня потребывалось сделать так что бы и из локалки при наборе www.domain.ru:50501 попадать на 192.168.0.166 и тут я уже че только не делал все не получается!
Одна надежда что тут кто подскажит! И так что имеем: 195.1.2.4 - $EXT_IP - внешний ip; 195.1.2.5 - $EXT_IP_WEB_SRV - внешний ip для HTTP (алиас); 192.168.0.1 - $LOCAL_GW_IP - внутр. ip шлюза; 192.168.4.2 - $LOCAL_HTTP_IP - внут. ip HTTP сервака; 192.168.0.166 - $LOCAL_HTTP_SRV_IP_PORT_50501 - др. машина на которую должно все перекидываться при наборе www.domain.ru:50501 из локалки. |
Смотришь с какого интерфейса летит пакет. Если это интерфейс который смотрит в локалку то делаешь портмаппинг, а если с другого то направляешь в другую подсеть.
Например eth0 это внешняя сеть, а eth1 внутреняя. IPTABLES -t nat -A PREROUTING -i eth0 -p TCP --source 195.1.2.4/24 --dport 50501 -j DNAT --to-destination 192.168.0.166:50501 Возможно я не прав, пишу полу сонный. Напишите какие правила у вас уже есть, и правильно ли своим правилом я вас понял. |
Все, ребята не парьтесь! Решил проблему в итоге за 4 минуты. Вспомнил что есть свободный ip в инет, а в bind прописал типа такого:
good A 195.2.4.15 в iptables добавил правило на проброс на 0.166 порт 50501 т.к. владелец этой машины и сервиса (IIS) корорый должен быть доступен из Инета только по порту 50501 " - Так безопасней!" =)) В итоге получил: good.domain.ru:50501 и из локалки все работает шоколадно! =) В любом случае всем большое спасибо т.к. именно разговор про bind`ы навел меня на это! |
Время: 13:04. |
Время: 13:04.
© OSzone.net 2001-