ip port-map
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 | название протокола прикладного уровня (сервиса). Могут задаваться стандартные (системные) сервисы и пользовательские, определенные пользователем. Системные сервисы ассоциируются с общеизвестным номером порта и представлены в Системно-заданные соответствия Таблица 21. Пользовательский сервис задается именем, который должен начинаться с префикса “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 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 и т.п. |
Системно-заданные соответствия
Таблица 21
Имя протокола, сервиса | Номер порта | Описание |
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 |