OpenBSD - статьи

       

Фильтрация по поpтам


Фильтрация по номеру порта работает только с TCP и UDP протоколами. Вы можете использовать любое числовое обозначение или имя сервиса из файла /etc/services. Когда в правиле используется ключевое слово "proto", оно будет использоваться вместе с именем порта, которое будет найдено по соответствующему номеру.

Возможные операции над номерами портов: опер. ссылка парам. результат

< lt port# истина, если порт меньше # передаваемого значения > gt port# истина, если порт больше # передаваемого значения = eq port# истина, если порт равен # передаваемому значению != ne port# истина, если порт не равен # передаваемому значению ge port# истина, если порт больше или равен # передаваемому значению

# # разрешить TCP пакеты из той же подсети что и хост foo # на хост 10.1.1.2, если они предназначены порту 6667 # pass in proto tcp from fubar/24 to 10.1.1.2/32 port = 6667 # # разрешить UDP пакеты, идущие не с 53-го порта # и предназначеные на localhost # pass in proto udp from fubar port != 53 to localhost

Также возможно сравнение диапазонов: синтаксис выражения:

port1# <> port2# истина, если порт меньше, # чем port1 или больше, чем port2 port1# >< port2# истина, если порт больше, # чем port1 и меньше, чем port2

Обратите внимание, что в обоих случаях, когда порт равен одному из значений, будет совпадение.

# # блокируем весь входящий трафик на # наши X терминалы c X:0 по X:9 # block in proto tcp from any to any port 5999 >< 6010 # # разрешить любые соединения, кроме BSD print/r-сервисов, # это также закроет syslog # block in proto tcp/udp all pass in proto tcp/udp from any to any port 512 <> 515

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

# # pass in proto tcp/udp all block in proto tcp/udp from any to any port 511 >< 516



Содержание раздела