Правило для ipfw

12
BasePelleta
На сайте с 29.05.2008
Offline
120
962

Понадобилось разграничить доступ по ip для FTP.

Решил настроить правила ipfw по аналогии с работающей

конструкцией на другом сервере.

/etc/rc.conf

содержит строки в конце

firewall_enable="YES"
firewall_script="/usr/local/etc/rc.firewall"

/usr/local/etc/rc.firewall

имеет содержание

#!/bin/sh -

setup_loopback () {
${fwcmd} add 100 pass all from any to any via lo0
${fwcmd} add 200 deny all from any to 127.0.0.0/8
${fwcmd} add 300 deny ip from 127.0.0.0/8 to any
}

fwcmd="/sbin/ipfw"


############
${fwcmd} -f flush

setup_loopback

${fwcmd} add 00610 allow all from 88.198.0.0 to me 21
${fwcmd} add 00700 deny all from any to me 21

делаю

sh /usr/local/etc/rc.firewall

и получаю закрытый доступ ко всем сервисам.

Если оставляю строку в /usr/local/etc/rc.firewall

${fwcmd} add 00404 allow ip from any to any

, то открываю доступ всему.

Вопросы

Требуется одна строка с правилом?

Где расположить правило?

Каким должно быть содержание правила?

Благодарю за ответ

S
На сайте с 11.05.2018
Offline
7
#1

Не когда не работал с ipfw, поэтому не уверен в работе правил, расположить в конце

Для активного режима FTP:

${fwcmd} add allow tcp from ВАШ_ИП to me 20-21

А это для пассивного, возможно необходимо заменить диапазон 49152-65534 на тот, который указан в настройках FTP сервера:

${fwcmd} add allow tcp from ВАШ_ИП to me 49152-65534
BasePelleta
На сайте с 29.05.2008
Offline
120
#2

swank,

рабочее правило для ftp есть в указанных правилах.

Дело в том, что запуск скрипта перекрывает доступ по всем сервисам.

S
На сайте с 03.10.2018
Offline
0
#3

Я бы посоветовал сделать немного иначе.

Свои правила вынести в отдельный sh-скрипт и поместить его в /usr/local/etc/rc.d и там уже добавлять правила.

Свое правило поместить повыше, если фаервол настроен запретить все что не разрешено (что на мой взгляд лучше), сначала вы разрешаете прохождение пакетов согласно правил.

Для полного контроля можно написать так:

/sbin/ipfw add 10 allow ip from IP_откуда_нужен_доступ to me 21 in via ваш_интерфейс

/sbin/ipfw add 11 allow ip from me 21 to IP_куда_нужен_доступ out via ваш_интерфейс

первое правило разрешает вход на ваш фтп, второе ответ от фтп

baas
На сайте с 17.09.2012
Offline
161
#4
BasePelleta:
swank,
рабочее правило для ftp есть в указанных правилах.
Дело в том, что запуск скрипта перекрывает доступ по всем сервисам.

Покажите ipfw show

Настройка BSD систем. (https://www.fryaha.ru) Знание сила, незнание Рабочая сила!
BasePelleta
На сайте с 29.05.2008
Offline
120
#5

ipfw: DEPRECATED: 'sho' matched 'show' as a sub-string


00100 0 0 allow ip from any to any via lo0
00200 0 0 deny ip from any to 127.0.0.0/8
00300 0 0 deny ip from 127.0.0.0/8 to any
00404 82 12806 allow ip from any to any
00408 0 0 allow ip from 130.180.0.0 to me dst-port 110
00500 0 0 deny ip from any to me dst-port 110
00610 0 0 allow ip from 88.198.0.0 to me dst-port 21
00700 0 0 deny ip from any to me dst-port 21
65535 91 6986 deny ip from any to any

Видимо, проблема в последнем правиле. Где оно прописано, не разобрался.

S
На сайте с 03.10.2018
Offline
0
#6

Во первых 88.198.0.0 это неправильно указано, если хотите указать подсеть с которой разрешается доступ то нужно указывать так 88.198.0.0/24 накпример. Если с конкретного ip то так 88.198.0.1 - например.

baas
На сайте с 17.09.2012
Offline
161
#7
BasePelleta:
ipfw: DEPRECATED: 'sho' matched 'show' as a sub-string


Видимо, проблема в последнем правиле. Где оно прописано, не разобрался.

65535 91 6986 deny ip from any to any

Последнее правило добавляется от системы и оно верное на мой взгляд, то-есть то что не разрешено запрещено.

опишите правила что хотите разрешить на сервере.

И как оппонент soldercom подметил, если вы хотите дать доступ определенным под сетям то используйте маски (/24 к примеру).

BasePelleta
На сайте с 29.05.2008
Offline
120
#8
88.198.0.0

Два нуля добавил, чтобы не показывать свой ip. Про маски знаю.

Последнее правило добавляется от системы.

Согласен. Скорее всего, оно добавляется по умолчанию и в большинстве случаев необходимо.

Другое дело, что ipfw я поднимаю по аналогии с другим сервером,

где правила такие же, только нет

65535 91 6986 deny ip from any to any

Видимо, это более новая версия.

опишите правила что хотите разрешить на сервере

ssh (свой порт), ftp, tcp (сайт недоступен, скорее всего порт nginx).

baas
На сайте с 17.09.2012
Offline
161
#9
BasePelleta:
Два нуля добавил, чтобы не показывать свой ip. Про маски знаю.



Согласен. Скорее всего, оно добавляется по умолчанию и в большинстве случаев необходимо.
Другое дело, что ipfw я поднимаю по аналогии с другим сервером,
где правила такие же, только нет

Видимо, это более новая версия.



ssh (свой порт), ftp, tcp (сайт недоступен, скорее всего порт nginx).

Вы можете сделать так.

GOOD='xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx'

# admin-server TCP
ipfw add allow tcp from ${GOOD} to any
ipfw add allow tcp from any to ${GOOD}

Этим самым вы разрешите все на сервере, в этом случае порты для цепочки GOOD можно не открывать, они будут доступны.

Или только определенные порты.

Добавьте такие правила к себе.

# NGINX 80+443
ipfw add allow tcp from any to any dst-port 80,443
ipfw add allow tcp from any 80,443 to any
# SSH
ipfw add allow tcp from any to any 22
ipfw add allow tcp from any 22 to any
# FTP
ipfw add allow tcp from any to any dst-port 20,21
ipfw add allow tcp from any 20,21 to any
# FTP
ipfw add allow tcp from xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx to any 1025-65000
ipfw add allow tcp from any 1025-65000 to xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx
iHead
На сайте с 25.04.2008
Offline
137
#10

По умолчанию дефолтное (65535) правило в ipfw - deny.

Если пересобрать ядро с

options IPFIREWALL_DEFAULT_TO_ACCEPT

то будет по-умолчанию allow.

Возможно, поэтому на одном сервере работает, а на другом нет.

Рекомендуемый хостинг партнер 1С-Битрикс (https://www.ihead.ru/bitrix/), PHP-хостинг (https://www.ihead.ru/php/), доверенный партнер RU-CENTER (https://www.ihead.ru/news/573.html), официальный представитель REG.RU в Кирове (https://www.ihead.ru/news/851.html)
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий