ip port-map

Команда ip port-map используется для ассоциации протоколов (сервисов) прикладного уровня с номерами TCP-портов (PAM - Port to Application Mapping)

и позволяет перенаправлять трафик стандартных (системных) протоколов, а также сервисов, заданных пользователем, на любой TCP-порт.

Команда с префиксом no устанавливает значение по умолчанию.

Синтаксис

ip port-map appl-name port [tcp] port-num*| from begin-port-num to end-port-num [list acl-num] [description description-string]

no ip port-map appl-name port [tcp] port-num*| from begin-port-num to end-port-num [list acl-num]

appl-name

название протокола прикладного уровня (сервиса).

Могут задаваться стандартные (системные) сервисы и пользовательские, определенные пользователем. Системные сервисы ассоциируются с общеизвестным номером порта и представлены в Таблица 16. Пользовательский сервис задается именем, который должен начинаться с префикса “user-“ и по длине не должен превышать 19 символов

tcp

наличие или отсутствие этого ключевого слова не играет существенной роли.

port-num

номер TCP-порта.

      При наличии в команде слова tcp можно задать перечисление до пяти портов или диапазон портов.

      При отсутствии слова tcp - разрешается задать только один порт.

begin-port-num

начальный порт диапазона портов, должен быть меньше конечного порта.

end-port-num

конечный порт диапазона портов.

acl-num

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

Если список доступа отсутствует в конфигурации, то данная команда игнорируется при конвертировании конфигурации.

description-string

строка с произвольным описанием.

Значение по

умолчанию

отсутствует

Режимы команды

Global configuration

Рекомендации по

использованию

Используйте эту команду, чтобы перенаправить трафик стандартных сервисов на другие, отличные от общеизвестных, порты. Можно также добавить новый порт к общеизвестному порту. Для приложений, которые используют необщеизвестные порты, создайте пользовательский сервис.

Добавление записи к системному port-map

Системно-заданные соответствия существуют неявно и их можно использовать в команде ip port-name, не вводя никаких дополнительных команд.

Для добавления нового порта к системному сервису напишите команду с системным port map, и она добавит новую запись в уже существующий port map, но не заменит его!

Пример:

ip port-map ftp port 2100

Данная команда приведет к тому, что для ftp будет две записи (одна явная и одна неявная).

!!! Неявная запись!!! ip port-map ftp port tcp 21 description File Transfer Protocol

!!! Явная запись!!! ip port-map ftp port 2100 

Ограничения на

порты

Запрещено задавать порты, уже входящие в другой port-map (при условии, что для него не задана no-форма команды). Это относится к единичному порту, перечислению или диапазону портов, в которые входит данный порт.

      Например, если задать ip port-map ftp port tcp 23, будет выдано сообщение об ошибке:

%Unable to add port-map entry.

 It conflicts with the system entry for telnet.

 Please delete it before adding this entry 

      А если в конфигурации уже существует пользовательский сервис с именем user-port-map-1 и он содержит в себе порт 2100, то на команду ip port-map ftp port tcp 2100 будет выдано сообщение об ошибке:

%Unable to add port-map entry.

 It conflicts with the user-defined entry for user-port-map-1.

 Please delete it before adding this entry

Отмена системного

port-map

Неявно заданную запись системного port map можно отменить с помощью no-формы команды. Причем данная no-команда будет отображаться по show running-config (возможно в расширенном виде). Пример: хотим перенаправить трафик ftp на нестандартный порт 2100, для этого выполним:

no ip port-map ftp

ip port-map ftp port 2100

      По команде show running-config будет показано:

no ip port-map ftp port tcp 21 description File Transfer Protocol

ip port-map ftp port tcp 2100

      Отменить no-команду можно следующим образом:

ip port-map ftp port tcp 21

      А по команде show running-config будет показано:

ip port-map ftp port tcp 21

Диапазон портов

При задании диапазона начальный порт обязательно должен быть меньше конечного порта. В противном случае выдается сообщение:

%Unable to add port-map entry.

 In a range, beginning value should be smaller than the end

Ссылка на лист

доступа

      Если в нескольких командах ip port-map существуют привязки к одному и тому же листу доступа, то при обнаружении коллизий в командах выдаются сообщения об ошибках.

      Если в нескольких командах существуют привязки к разным листам доступа (с разными номерами, между ними допускаются пересечения или даже полное совпадение) или если в одной команде задан лист доступа, а в другой - нет, то эти команды не сравниваются. В них допускаются любые пересечения и совпадения номеров портов.

     Пример корректной последовательности команд:

ip port-map user-port-map-1 port tcp 2100 list 1

ip port-map user-port-map-1 port tcp 21 list 1

ip port-map user-port-map-1 port tcp 23 list 2

ip port-map ftp port tcp 23 list 1

ip port-map ftp port tcp 2100

     Пример ошибочной последовательности команд:

ip port-map user-port-map-1 port tcp 2100 list 1

ip port-map ftp port tcp 2100 list 1 !!! Неправильно !!!

      Если второй раз прописывается команда, которая уже существует в конфигурации (совпадение с точностью до description), она игнорируется без выдачи сообщений об ошибке. Поведение, аналогичное Cisco IOS.

      Если в листе доступа используются модификаторы log и log-input, то будет происходит логирование пакетов, проходящих через inspection фильтры. Сообщения лога показываются в следующем виде:

Inspect_<inspect-name>_<acl-name>

где <inspect-name> - имя inspection; <acl-name> - имя листа доступа, присоединенного к port-map, на которую ссылается данный inspect.

Пример:

     Фрагмент конфигурации:

access-list 95 permit 10.20.30.40 log

!

no ip port-map telnet port 23

ip port-map telnet port tcp 23 list 95

!

ip inspect name inspect1 telnet

     Фрагмент вывода в сообщении лога:

Inspect_inspect1_95   

В Cisco IOS записи с модификатором log не работают при инспектировании трафика.

Пользовательский port map

      На имя пользовательского сервиса существуют жесткие ограничения (аналогично Cisco IOS). Если имя не начинается с префикса “user-“, то выдается сообщение:

%Unable to add port-map entry.

 Names for user-defined applications must start with 'user-'

      Имя по длине не должно превышать 19 символов. При несоблюдении этого правила выдается сообщение:

%Unable to add port-map entry.

 Application name is too long. Maximum allowed characters for application name are 19

      Слово tcp обязательно должно присутствовать. При несоблюдении этого правила выдается сообщение:

%Unable to add port-map entry.

 TCP protocol must be specified for user-defined applications

Добавление записей в уже существующий пользовательский port-map, ссылка на листы доступа, возможные ошибки аналогичны указанным для системных port map.

Команда show

running-config

Слово tcp показывается всегда, независимо от присутствия в команде.

Системно-заданные соответствия не показываются, хотя и существуют неявно.

Удаление

Существует возможность удалить весь port map одной командой. Формат команды:

no ip port-map appl-name

Примечание: в случае пользовательских port map данная команда удаляет весь port map целиком; в случае системного port map - удаляет все user-defined порты и добавляет в конфигурацию no-форму команды для pre-defined портов (если ее на этот момент еще не было).

 

      Если данного port map не существует, выдается сообщение:

%Unable to remove port-map entry.

 Port-map entry for application <appl-name> is not found

      При удалении пользоватльского port-map целиком (см. предыдущий пункт) или при удалении последней записи такого port map и если имеется привязка к inspection правилу, то выдается сообщение вида:

Removed <port-map-name> from inspect rule <inspection-name>

      Если в данном inspection правиле не было привязок к другим протоколам (т.е. данный inspection rule удаляется), то выдаются два сообщения:

Removed <port-map-name> from inspect rule <inspection-name>

Removed inspect rule <inspection-name>

      Если данный port map присутствует в разных inspection правилах, указанные выше строки показываются для каждого inspection правила.

Пример.

На следующую последовательность команд:

ip port-map user-port-map-1 port tcp 2100

ip inspect name inspect-1 user-port-map-1 

ip inspect name inspect-1 tcp 

ip inspect name inspect-2 user-port-map-1

no no ip port-map user-port-map-1

будет выдано:

Removed user-port-map-1 from inspect rule inspect-1

Removed user-port-map-1 from inspect rule inspect-2

Removed inspect rule inspect-2

Отличие данной

команды от подобной команды Cisco IOS

      Не используется протокол транспортного уровня UDP.

      Системные протоколы и пользовательские обрабатываются одинаково.

      Для протокола ftp формируется inspection процедура ftp<>, для всех остальных протоколов - процедура tcp<>, а у Cisco - специфические процедуры для SMTP, HTTP и т.п.

 

 

Системно-заданные соответствия

Таблица 16

Имя протокола, сервиса

Номер порта

Описание

ftp

21

File Transfer Protocol

telnet

23

Telnet

smtp

25

Simple Mail Transfer Protocol

gopher

70

Gopher

pop3

110

Post Office Protocol - Version 3

nntp

119

Network News Transport Protocol

imap

143

Internet Message Access Protocol

imap3

220

Interactive Mail Access Protocol 3

ldap

389

Lightweight Directory Access Protocol

login

513

Remote login