The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"какНаст-тьfirewall(iptable)Kubuntu+firewall(разрешить по пор..."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Информационная безопасность (Public)
Изначальное сообщение [ Отслеживать ]

"какНаст-тьfirewall(iptable)Kubuntu+firewall(разрешить по пор..."  +/
Сообщение от serzh_high email(??) on 15-Июн-09, 05:29 
Всех приветсвую!
Вообщем описываю сложившуюся ситуацию:
Есть ЛВС(192,168,1,0),В данной ЛВС имеются ПЭВМ(хосты) для различных людей(экономисты,бухгалтеры,технический отKubuntu+firewall(разрешить только 1003 и 440 порты)дел и т,п,) Подключены все хосты через свич к sqlсерверу(работает он у меня в ЛВС на 1003 порту),
Значит задача в чём: отделить все хосты? кроме наших подобной ПЭВМ(на ней прозрачный мост+frewall),Для данного firewalla определить правила таким образом, чтобы открыть 1003 и 440 порты для не наших хостов,а остальные порты запретить для них
Графически схема примерна такова:
Хосты экономистов(192,168,1,10-1952,168,1,20) Хосты юристов(192,168,1,20-1952,168,1,30)
                  |                                                 |
                  |_________________________________________________|
                                          |
                                       ПЭВМ(Kubuntu8,04+firewall(разрешить только 1003 и 440 порты).прозрачный мосто между eth0 и eth1)
                                         |
                                       swich-----------SQLServer
                                         |
                               Наши Хосты(192,168,1,50-1952,168,1,70)
Соответсвенно для наших хостов ничего не изменится,но мы ограничим другие не наши хосты по доступу к sqlserverу
С организацией прозрачного моста я разобрался,с умею без проблем настройить(в предыдущих письмах я описывал как я это делал), А вот как прописать именно данные правила в iptable(firewall) не могу понять(может напишешь как пример)просто разобраться легче,когда в виде примеров видишь,а я их что-то в инете не могу найти на рус яз(анг/ не очень) именно в kubuntu данный iptable
Т,е, может подскажет кто что мне нужно написать в виде команд в терминале?Раньше не имел дело с подобным(можно сказать синтаксис не знаю+ ко всему по настройке),
Ситуация выше описана именно так как требуется, вот сижу теперь и мучаюсь как её решить,Подмогите, пожалуйста,
Очень был бы благодарен!
Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "какНаст-тьfirewall(iptable)Kubuntu+firewall(разрешить по пор..."  +/
Сообщение от angra (ok) on 15-Июн-09, 06:32 
Схема описана старательно, но несколько коряво. Например довольно сложно понять что скрывается за 192,168,1,50-1952,168,1,70. Я бы предположил опечатку в 192.168.1.50-192.168.1.50, но четыре раза одинаково не опечатываются. Также не понятно откуда куда нужно разрешить подключения. Для простоты покажите в виде источник(ip:port) - назначение (ip:port). Например 192.168.1.50-70 : любой - 192.168.1.1:1003

К прочтению крайне рекомендуется http://www.opennet.me/docs/RUS/iptables/. По личному опыту достаточно потратить на это меньше пары часов, дабы больше не иметь проблем с iptables в будущем.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "какНаст-тьfirewall(iptable)Kubuntu+firewall(разрешить по пор..."  +/
Сообщение от serzh_high email(??) on 15-Июн-09, 09:24 
>Схема описана старательно, но несколько коряво. Например довольно сложно понять что скрывается

Вообщем уточняю ситуацию: скажем так ограничить доступ к sqlсерверу хосты других кабинетов(192.168.1.10-192.168.1.20;192.168.1.21-192.168.1.30)(т,е, запретить передачу данных по всем портам,кроме 1003 и 440).
А для наших хостов(192.168.1.50-192.168.1.70) осавить все порты для доступа к sqlсерверу.(т,е, как и сейчас-без изменений)
sqlсервер имеет адрес 192.168.1.1
маска везде 255.255.255.0
НА ПЭВМ(где установлена ОС Kubuntu+firewall) создан прозрачный мост между сетевыми интерфесами eth0 и eth1 следующим способом:

mm@mm-desktop:~$ sudo brctl addbr most
mm@mm-desktop:~$ sudo brctl addif most eth0
mm@mm-desktop:~$ sudo brctl addif most eth1
mm@mm-desktop:~$ sudo ifconfig eth0 0.0.0.0
mm@mm-desktop:~$ sudo ifconfig eth1 0.0.0.0
mm@mm-desktop:~$ sudo ifconfig most up
mm@mm-desktop:~$ sudo ifconfig eth0 promisc
mm@mm-desktop:~$ sudo ifconfig eth1 promisc
mm@mm-desktop:~$ sudo brctl show
bridge name     bridge id               STP enabled     interfaces
most            8000.0016760c9748       no              eth0
                                                        eth1
mm@mm-desktop:~$

>Для простоты покажите в виде источник(ip:port) - назначение (ip:port). Например 192.168.1.50-70
>: любой - 192.168.1.1:1003

уточняю
             Источник(host's)             Назначение(sqlserver)
(192.168.1.10-192.168.1.20):1003       - 192.168.1.1:1003
(192.168.1.10-192.168.1.20):440        - 192.168.1.1:440
(192.168.1.21-192.168.1.30):1003       - 192.168.1.1:1003
(192.168.1.30-192.168.1.30):440        - 192.168.1.1:440
(192.168.1.50-192.168.1.70):любой порт - 192.168.1.1:любой порт

>К прочтению крайне рекомендуется http://www.opennet.me/docs/RUS/iptables/. По личному опыту достаточно потратить на это
>меньше пары часов, дабы больше не иметь проблем с iptables в
>будущем.

На данный момент вывод результата команды sudo iptables -L выглядит сл. образом:

mm@mm-desktop:~$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
mm@mm-desktop:~$

Изучив немного http://www.opennet.me/docs/RUS/iptables/ я в затруднении всё же что мне именно необходиом написать в терминале, чтобы решить данную ситуацию?
Может так:
mm@mm-desktop:~$ sudo iptables -t filter -A INPUT -p tcp -m multiport --port 1003,440
mm@mm-desktop:~$ sudo iptables -t filter -A DROP -p tcp -m multiport --port :440
mm@mm-desktop:~$ sudo iptables -t filter -A DROP -p tcp -m multiport --port 441:1002
mm@mm-desktop:~$ sudo iptables -t filter -A DROP -p tcp -m multiport --port 1002:
или по другому?
Уточняю схему(может не совсем понятно изначально объяснил и обрисовал её):
grouphosts1(192.168.1.10-192.168.1.20)-------------------
                                                         |
grouphosts1(192.168.1.21-192.168.1.30)----------------- swich1
                                                          |

                                      интерфейс eth1(открыты только 1003,440порты)
                                                          |
                                                       ПЭВМ(Kubuntu+firewall)
                                                          |
                                      интерфейс eth0(открыты только 1003,440порты)

                                                          |                                                          |
                                                       swich2
                                                        |   |
grouphosts3(192.168.1.50-192.168.1.70)------------------    ------SQLсервер

ПЭВМ(Kubuntu+firewall) имеет две сетевые кврты eth1 и eth0(соединены в виед прозрачного моста)


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "какНаст-тьfirewall(iptable)Kubuntu+firewall(разрешить по пор..."  +/
Сообщение от angra (ok) on 15-Июн-09, 10:09 
Так уже значительно понятней.
Сразу уточню один важный момент, с мостами мне приходилось сталкиваться редко и в основном на виртуалках, так что следующие утверждения/советы не обязательно верны, буду рад, если кто-то поправит или предложит другой вариант.
INPUT и OUTPUT цепочки сработают только для сервисов поднятых на самом шлюзе. Пакеты копируемые мостом на вторую сетевую карту через эти цепочки не пройдут.
Вероятно(я не следил за этим нюансом в ядрах и NF), что копируемые пакеты проходят через цепочку FORWARD и именно в ней желательно вести фильтрацию. Пример:
iptables -A FORWARD -p tcp -s 192.168.1.10 --dport 1003 -j REJECT
Данное правило отклоняет(-j REJECT) пакеты идущие с 192.168.1.10(-s 192.168.1.10) на порт 1003( --dport 1003). REJECT лучше с точки зрения клиента чем DROP, так как сообщение об ошибке приходит сразу, а не по таймауту.
Обычно режутся/допускаются целые сети и их можно задать в -s, но в вашем случае разграничения в пределах одной сети, а значит либо придется для каждого ip отдельное правило(понятное дело скриптом, а не руками) либо добавить еще ip_set. Так как сеть небольшая, то лучше первое, ipset имеет смысл когда ip исчисляются хотя бы сотнями.

Альтернативой мосту может быть обыкновенная проброска портов:
iptables -t nat -A FORWARD -A PREROUTING  -p tcp --dport 1003 -j DNAT --to-destination ip_sql_server
Разумеется в этом правиле можно в качестве условий указать -s ip и вообще не трогать таблицу filter, оставив в ней -P ACCEPT.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "какНаст-тьfirewall(iptable)Kubuntu+firewall(разрешить по пор..."  +/
Сообщение от serzh_high email(??) on 15-Июн-09, 11:24 

>iptables -A FORWARD -p tcp -s 192.168.1.10 --dport 1003 -j REJECT

Т,е, Вы имеете ввиду, что для того чтобы мне через firewall пропускать пакеты для хостов,принадлежащих к group1,group2, только через порты 1003 и 440(а по остальным портам вообще запрет пакетов к и от данных хостов необходимо прописать следующее:
Для хоста 192.168.1.10(принадлежащий к group1):
mm@mm-desktop:~$sudo iptables -A FORWARD -p tcp -s 192.168.1.10 --dport :439-j REJECT
mm@mm-desktop:~$sudo iptables -A FORWARD -p tcp -s 192.168.1.10 --dport 441:1002-j REJECT
mm@mm-desktop:~$sudo iptables -A FORWARD -p tcp -s 192.168.1.10 --dport 1004:-j REJECT

Для хоста 192.168.1.11:
mm@mm-desktop:~$sudo iptables -A FORWARD -p tcp -s 192.168.1.11 --dport :439-j REJECT
mm@mm-desktop:~$sudo iptables -A FORWARD -p tcp -s 192.168.1.11 --dport 441:1002-j REJECT
mm@mm-desktop:~$sudo iptables -A FORWARD -p tcp -s 192.168.1.11 --dport 1004:-j REJECT
И так аналогично для всех хостов group1 и group2 ?????? 8-0

>iptables -t nat -A FORWARD -A PREROUTING  -p tcp --dport 1003

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

Назрел вопрос по-ходу:
с tcp пакетами более менее понятно, а если мне есть необходимось запрет прохождения через firewall icmp и udp пакетов вообще?может следующими командами:

mm@mm-desktop:~$sudo iptables -D FORWARD -p icmp
mm@mm-desktop:~$sudo iptables -D FORWARD -p udp

???


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "какНаст-тьfirewall(iptable)Kubuntu+firewall(разрешить по пор..."  +/
Сообщение от angra (ok) on 16-Июн-09, 02:37 
Я просто привел общие примеры и четко описал, что они делают, давать вам готовое решение не собирался. Вариантов настройки может быть несколько. Два основных подхода:
1. По умолчанию разрешить, а тем кому нельзя запретить
2. По умолчанию запретить, а тем кому можно разрешить.
Второй подход считается более кошерным, однако в вашем случае скорее всего будет проще разрешить все всем, а потом нужным срезать все, что не попадает в указанные порты.

Смотрю вы несколько путаетесь с синтаксисом iptables. Попробую изложить кратко, без отсылки к доке. Команда состоит из следующих частей
1. Указание таблицы -t имя. Таблицы бывают filter(фильтрация, если -t не указать, то будет использоватся именно эта), nat(для замены адресов источника SNAT или назначения DNAT, это ключевая таблица для проброса портов или обеспечения выхода в инет), mangle и raw(эти две вам пока не нужны)
2. Основная операция: -A добавить правило, -D удалить правило, -I вставить правило, -F убрать все правила, -P политика по усолчанию итд
3. Указание цепочки. INPUT для пакетов предназначенных самому шлюз, OUTPUT для пакетов созданных шлюзом, FORWARD для транзитных пакетов, POSTROUTING и PREROUTING использутся в основном для NAT
4. Различные критерии и модули, например -p tcp(протокол tcp), -s IP(адрес источника), --dport N(порт назначения) итд
5. Действие в случае выполнения _всех_ критериев: -j DROP/REJECT/ACCEPT(используется в filter), -j SNAT/DNAT(для NAT), -j LOG/ULOG(для ведения логов, помогающих в отладке правил) итд. У действия могут быть дополнительные параметры.

Пример отключение icmp:
iptables -I FORWARD 1 -p icmp -d 192.168.1.1 -j REJECT
По частям
1. так как таблица filter дефолтная, то -t filter можно не писать
2. "-I цепочка 1" вставить первым правилом в указанную цепочку
3. цепочка FORWARD для транзитных пакетов
4. критерии: протокол icmp, адрес назначения  192.168.1.1. Резать в обратном направлении обычно не стоит, но если хочется, то убираем критерий -d 192.168.1.1
5. действие -j REJECT

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "какНаст-тьfirewall(iptable)Kubuntu+firewall(разрешить по пор..."  +/
Сообщение от serzh_high email(??) on 16-Июн-09, 03:49 
Т.Е. из вышесказанногои сново изученной доки получается следущим образом

отключение icmp пакетов между sqlсервером и хостами:
sudo iptables -I FORWARD 1 -p icmp -d 192.168.1.1 -j REJECT
sudo iptables -I FORWARD 2 -p icmp -d 192.168.1.10 -j REJECT  
...
sudo iptables -I FORWARD 22 -p icmp -d 192.168.1.30 -j REJECT

отключение udp пакетов между sqlсервером и хостами:
sudo iptables -I FORWARD 22 -p udp -d 192.168.1.1 -j REJECT
sudo iptables -I FORWARD 23 -p udp -d 192.168.1.10 -j REJECT  
...
sudo iptables -I FORWARD 43 -p udp -d 192.168.1.30 -j REJECT

---------------------tcp пакеты от sqlсервера----------------------
разрешение прохождения tcp пакетов от sqlсервера только по 440 порту через шлюз к хостам:
sudo iptables -I FORWARD 44 -p FORWARD - tcp -s 192.168.1.1 --dport 440 -j ACCEPT
sudo iptables -I FORWARD 45 -p FORWARD - tcp -s 192.168.1.1 --dport :439 -j REJECT
sudo iptables -I FORWARD 46 -p FORWARD - tcp -s 192.168.1.1 --dport 441: -j REJECT

---------------------tcp пакеты от хостов----------------------
разрешение прохождения tcp пакетов от ХОСТА 192.168.1.10(принадлежащий к group1) только по 440 порту через шлюз к sqlсерверу:
sudo iptables -I FORWARD 47 -p FORWARD - tcp -s 192.168.1.10 --dport 440 -j ACCEPT
sudo iptables -I FORWARD 48 -p FORWARD - tcp -s 192.168.1.10 --dport :439 -j REJECT
sudo iptables -I FORWARD 49 -p FORWARD - tcp -s 192.168.1.10 --dport 441: -j REJECT
И так для каждого хоста анологичным способом.
Подскажите, верно я думаю или всё же ошибаюсь?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру