Открытие портов в ipfw

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Гость
проходил мимо

Открытие портов в ipfw

Непрочитанное сообщение Гость » 2016-09-21 11:03:50

Здравствуйте, подскажите пожалуйста
В локальной сетке нужно запустить программу для удаленного доступа... Программа работает через порты 80,443,8080
В локальной сетке все компы смотрят в инет через шлюз на FreeBSD
На FreeBSD настроен скрипт для ipfw
есть запрещающее правило, которое блокирует работу программы удаленного доступа:

Код: Выделить всё

${FwCMD} add 9500 deny log all from any to any in via $LIF
Пробовал выше добавить правила:

Код: Выделить всё

${FwCMD} add 4000 allow tcp from any to me dst-port 443
${FwCMD} add 4010 allow tcp from any to me dst-port 80
Программа всё равно не подключается...
Подскажите пожалуйста, как правильно открыть порты?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
kharkov_max
капитан
Сообщения: 1810
Зарегистрирован: 2008-10-03 14:56:40

Открытие портов в ipfw

Непрочитанное сообщение kharkov_max » 2016-09-21 19:42:29

Вы к шлюзу подключаетесь супер программой?

Гость
проходил мимо

Открытие портов в ipfw

Непрочитанное сообщение Гость » 2016-09-22 8:08:41

kharkov_max писал(а):Вы к шлюзу подключаетесь супер программой?
Нет, мне нужно из компа в локальной сети, подключиться к компу вне локальной сети... Через aeroadmin...
Aeroadmin слушает порт 443,80,8080

snorlov
подполковник
Сообщения: 3829
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Открытие портов в ipfw

Непрочитанное сообщение snorlov » 2016-09-22 10:10:00

У вас просто роутер с натом или еще что-нибудь на нем стоит, например squid? Я к чему, может вам ipfw и не нужен для всей блокировки, а нужен просто выход в инет с прозрачным натом...

Аватара пользователя
kharkov_max
капитан
Сообщения: 1810
Зарегистрирован: 2008-10-03 14:56:40

Открытие портов в ipfw

Непрочитанное сообщение kharkov_max » 2016-09-22 22:41:10

Судя по правилам вы открываете доступ к шюзу... Прочитайте что такое me в ваших правилах и поймете что пишите.

snorlov
подполковник
Сообщения: 3829
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Открытие портов в ipfw

Непрочитанное сообщение snorlov » 2016-09-22 23:53:09

Еще одна поделка на базе vnc, типа teamviewer, radmin... Без полного показа правил никто вам путного сказать не сможет, там у вас еще наверняка правила имеются...

lordlev
рядовой
Сообщения: 33
Зарегистрирован: 2012-12-02 8:51:16

Открытие портов в ipfw

Непрочитанное сообщение lordlev » 2016-09-23 20:36:35

КМК, проще всего воспользоваться rinetd из портов. Или давай полный листинг правил ipfw

Гость
проходил мимо

Открытие портов в ipfw

Непрочитанное сообщение Гость » 2016-09-26 14:15:36

Конфиг ipfw ниже, на FreeBSD установлен squid, компы из локалки выходят в ИНЕТ через прокси.

Код: Выделить всё


/sbin/ipfw -q -f flush #sbros pravil
FwCMD="/sbin/ipfw -q"  #oboznachenie comand
LIF="rl0"              #localni interfeis
LIP="`ifconfig $LIF|awk '/inet /{print \$2}'`" #local IP
LAN="$LIP/24"          #local setka
WIF="sis0"             #vneshni interfeis
WIP="`ifconfig $WIF|awk '/inet /{print \$2}'`" #vneshni IP
WAN="$WIP/24"          #vneshni setka

#########PRAVILA#########

${FwCMD} add 1100 allow ip from any to any via lo0

${FwCMD} add 1200 deny ip from any to 127.0.0.0/8 #zapret vsego iz 127.0.0.0/8
${FwCMD} add 1250 deny ip from 127.0.0.0/8 to any #zapret 127.0.0.0/8 dly vsego

${FwCMD} add 1255 allow ip from me to me #razreshit IP compa

############################
${FwCMD} add 1260 deny ip from $LAN to any in via $WIF #zapret v inet
${FwCMD} add 1265 deny ip from $WAN to any in via $LIF #zapret

${FwCMD} add 1270 deny ip from any to 172.16.0.0/12 in via $WIF #zapret v WIF
${FwCMD} add 1275 deny ip from any to 0.0.0.0/8 in via $WIF     #zapret v WIF
${FwCMD} add 1280 deny ip from any to 169.254.0.0/16 in via $WIF #zapret v WIF
${FwCMD} add 1285 deny ip from any to 244.0.0.0/4 in via $WIF   #zapret v WIF
${FwCMD} add 1290 deny ip from any to 240.0.0.0/4 in via $WIF   #zapret v WIF

${FwCMD} add 1295 deny ip from 172.16.0.0/12 to any out via $WIF #zapret
${FwCMD} add 1300 deny ip from 0.0.0.0/8 to any out via $WIF     #zapret
${FwCMD} add 1305 deny ip from 169.254.0.0/16 to any out via $WIF #zapret
${FwCMD} add 1310 deny ip from 244.0.0.0/4 to any out via $WIF   #zapret
${FwCMD} add 1315 deny ip from 240.0.0.0/4 to any out via $WIF   #zapret

##################################

${FwCMD} add 3000 allow ip from any to $LAN in via $LIF #hozdenie paketov po local
${FwCMD} add 3005 allow ip from $LAN to any out via $LIF #hozdenie paketov po local


${FwCMD} add 3055 allow tcp from any to $WIP in via $WIF

############################
${FwCMD} add 3455 allow tcp from 192.168.10.0/24 to 37.48.115.46 in via $LIF # 37.48.115.46 server aeroadmin

${FwCMD} add 9500 deny log all from any to any in via $LIF


${FwCMD} nat 1 config log if $WIF same_ports
${FwCMD} add 10000 nat 1 all from any to any

${FwCMD} add 65530 allow all from any to any


snorlov
подполковник
Сообщения: 3829
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Открытие портов в ipfw

Непрочитанное сообщение snorlov » 2016-09-26 15:58:44

У тебя сквид на каком порту пашет не 8080 случайно

Гость
проходил мимо

Открытие портов в ipfw

Непрочитанное сообщение Гость » 2016-09-27 8:08:03

нет, squid у меня не использует 8080
Я опечатался в правиле 3455, оно выглядит так:

Код: Выделить всё

${FwCMD} add 3455 allow tcp from 192.168.10.0/24 to 37.48.115.46 443 in via $LIF # 37.48.115.46 server aeroadmin
но всё равно не отрабатывает

snorlov
подполковник
Сообщения: 3829
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Открытие портов в ipfw

Непрочитанное сообщение snorlov » 2016-09-27 9:19:00

Из всего, что я вижу, у вас файер с прозрачным натом, осталось выяснить версию операционки и значение disable_one_pass, и вообще
1. на сайте есть статья про ipfw, почитайте ее,
2. возьмите правила, идущие в вашем дистрибутиве, /etc/rc.firewall, и посмотрите реализацию OPEN, задействуйте ее
3. Может после этого поймете нужно ли вам правило 3455...

Гость
проходил мимо

Открытие портов в ipfw

Непрочитанное сообщение Гость » 2016-09-27 14:01:15

если поставить firewall в значение open, тогда он будет всё пропускать... Правила из скрипта тогда нужны не будут
А можно как то через скрипт правил, используя правила разрешить aeroadmin?

snorlov
подполковник
Сообщения: 3829
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Открытие портов в ipfw

Непрочитанное сообщение snorlov » 2016-09-27 16:21:54

Гость писал(а):если поставить firewall в значение open, тогда он будет всё пропускать... Правила из скрипта тогда нужны не будут
А можно как то через скрипт правил, используя правила разрешить aeroadmin?
Да вы взгляните на свои правила, у вас почти open, дайте

Код: Выделить всё

ipfw -a list
да посмотрите на счетчики, чтобы понять что у вас работает, а что для мебели..

Гость
проходил мимо

Открытие портов в ipfw

Непрочитанное сообщение Гость » 2016-09-28 8:40:02

Если поставить значение open то aeroadmin заработает, это мне понято. Подскажите мне пожалуйста, можно ли конкретно в вышеуказанном скрипте разрешить работу aeroadmin, мне это нужно понять, не реализовать, а просто понять, возможно или нет.
Спасибо за Ваши советы.

lordlev
рядовой
Сообщения: 33
Зарегистрирован: 2012-12-02 8:51:16

Открытие портов в ipfw

Непрочитанное сообщение lordlev » 2016-09-28 9:42:55

смотри в строну ipfw add fwd и ipfw add divert
Но, ИМХО, natd redirect_port разумней, а rinetd проще

snorlov
подполковник
Сообщения: 3829
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Открытие портов в ipfw

Непрочитанное сообщение snorlov » 2016-09-28 9:50:19

Гость писал(а):Если поставить значение open то aeroadmin заработает, это мне понято. Подскажите мне пожалуйста, можно ли конкретно в вышеуказанном скрипте разрешить работу aeroadmin, мне это нужно понять, не реализовать, а просто понять, возможно или нет.
Спасибо за Ваши советы.
Берите книжку про tcp/ip и читайте на ночь, обращая внимание как он маршрутизируется, после чего ищем в инете описание как работает ipfw...
P.S. В ваших правилах, а именно разрешения доступа к сайту не срабатывает нат, в результате пакет пакет маршрутизируется в инет, точнее его отправляют на внешний интерфейс, дальше думайте что с ним происходит...

Гость
проходил мимо

Открытие портов в ipfw

Непрочитанное сообщение Гость » 2016-09-28 15:05:52

snorlov писал(а): В ваших правилах, а именно разрешения доступа к сайту не срабатывает нат, в результате пакет пакет маршрутизируется в инет, точнее его отправляют на внешний интерфейс, дальше думайте что с ним происходит...
Получается у меня пакет хочет отправиться с внешнего интерфейса с IP адресом 192.168.10.X, что невозможно... Я правильно понял?

snorlov
подполковник
Сообщения: 3829
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Открытие портов в ipfw

Непрочитанное сообщение snorlov » 2016-09-28 19:40:43

Берем книжку про tcp/ip, грубо говоря у вас нет базовых знаний про сетевую инфраструктуру, там не только tcp/ip используется...

Гость
проходил мимо

Открытие портов в ipfw

Непрочитанное сообщение Гость » 2016-09-29 10:26:58

Стараюсь заполнить пробелы в понимании сетевой инфраструктуры, книги само собой читаю...
Вот к какому выводу я пришел, может конечно к неправильному...
Из "учебника" говорится:
Процесс начала сеанса TCP (также называемый «рукопожатие» (англ. handshake)), состоит из трёх шагов #Aeroadmin работает же через протокол tcp

Код: Выделить всё

1. Клиент, который намеревается установить соединение, посылает серверу сегмент с номером последовательности и флагом SYN.

        Сервер получает сегмент, запоминает номер последовательности и пытается создать сокет (буферы и управляющие структуры памяти) для обслуживания нового клиента.
            В случае успеха сервер посылает клиенту сегмент с номером последовательности и флагами SYN и ACK, и переходит в состояние SYN-RECEIVED.
            В случае неудачи сервер посылает клиенту сегмент с флагом RST.

2. Если клиент получает сегмент с флагом SYN, то он запоминает номер последовательности и посылает сегмент с флагом ACK.

        Если он одновременно получает и флаг ACK (что обычно и происходит), то он переходит в состояние ESTABLISHED.
        Если клиент получает сегмент с флагом RST, то он прекращает попытки соединиться.
        Если клиент не получает ответа в течение 10 секунд, то он повторяет процесс соединения заново.

3. Если сервер в состоянии SYN-RECEIVED получает сегмент с флагом ACK, то он переходит в состояние ESTABLISHED.

        В противном случае после тайм-аута он закрывает сокет и переходит в состояние CLOSED.
Грубо говоря я представляю это следующим образом: Клиент отправляет запрос серверу, сервер отправляет обратный запрос. В моем правиле, было разрешено только клиенту отправлять запрос к серверу по 443 порту. Сервер же (aeroadmin) не мог отправить запрос обратно, так как не было разрешающего правила. После этого подредактировал правила относительно aeroadmin, привел их к следующему виду:

Код: Выделить всё

${FwCMD} add 3450 allow tcp from $LAN to 37.48.115.46 443 in via $LIF #разрешаем клиенту отправить сегмент
${FwCMD} add 3455 allow tcp from 37.48.115.46 443 to $LAN via $LIF    #разрешаем клиенту принять от сервера сегмент

${FwCMD} add 3460 deny log all from any to any in via $LIF            #запрещаем всё
После этого подключение сработало. Может быть я всё неправильно понял, и просто методом "подбора" получилось установить соединение. Во всяком случае буду разбираться и понимать проделанные действия...
Всем спасибо за советы...