Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Механизм открытия портов установленными пакетами.  (Прочитано 988 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн FarSeer

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Добрый день.
Уважаемые гуру, если вас не затруднит, расскажите пожалуйста(ну, или ткните в статью/книгу/тему) каким образом открываются порты для установленных программ. Пусть имеем ubuntu server 12.04. Вопрос не в том как это сделать через iptables, а как это делает, допустим ssh, или ntp, или еще кто. Поясняю: если взять сервер с установленным ssh и натравить на него nmap, то он скажет, что открыт 22 порт. netstat -an говорит тоже, что 22 порт открыт. Однако, в цепях iptables(iptables -nvL) нет правила, которое бы разрешало подключение на 22 порт(там вообще никаких правил нет, если сервер свежий).
Вот и возникло у меня непонимание того, как же именно открыт порт 22. В нете лазил, но там все рассказывают как открыть/закрыть порт через iptables/ufw.
Заранее благодарю за ваш ответ "по теме".

Оффлайн vas_3

  • Активист
  • *
  • Сообщений: 769
  • достаточно.
    • Просмотр профиля
Как бы стандарт, следовательно вшито в код. iptables нервно курят в сторонке.

Оффлайн FarSeer

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Хотите сказать, что все стандартные порты являются открытыми? Но ведь это не так. И если я захочу сменить 22 порт через sshd.conf? Я не пробовал, но почти уверен, что мой новый порт будет открыт, а в iptables опять будет пустота. Или я как-то не так вас понял?

Оффлайн vas_3

  • Активист
  • *
  • Сообщений: 769
  • достаточно.
    • Просмотр профиля
Нет, я хотел сказать, что управление стандартными портами происходит не через iptables. Они вступают в работу позже.

Оффлайн FarSeer

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Ага. А как и на каком этапе система узнает какие стандартные порты необходимо открыть? И, если я сменю стандартный порт на свой, необходимо будет явно открыть его в iptables?

Оффлайн Yuriy_Y

  • Старожил
  • *
  • Сообщений: 1736
    • Просмотр профиля
    • Новоишимка
И если я захочу сменить 22 порт через sshd.conf? Я не пробовал, но почти уверен, что мой новый порт будет открыт, а в iptables опять будет пустота.
Если поменяешь стандартный порт в настройках, не забудь его поменять и в /etc/services.
Порта в системе нет вообще, если не запущена программа, которая его слушает. Потуши демона sshd, и порта 22 тоже не будет в системе.
С уважением, Юрий.

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
А как и на каком этапе система узнает какие стандартные порты необходимо открыть?
Т.е. Вы изначально не понимаете определения открытого порта.
Давайте так. Порт - это как дверь, через которую можно войти. Нет квартиры (сервис), нет двери и нечего открывать.
А после установки двери она открыта. Вот врежете замок - им и можете закрыть дверь.

Оффлайн golota

  • Участник
  • *
  • Сообщений: 132
    • Просмотр профиля
На Unix системах, в обшем и целом есть программа, которая "слушает" ВСЕ порты
называется inetd
и в зависимости от конфигурации, /etc/inetd.conf, запускает нужную программу.

Узнать какая программа "слушает" порт можно с помощью lsof
Например -
$ sudo lsof -i tcp:53
COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
dnsmasq 3094 nobody    5u  IPv4  11108      0t0  TCP localhost:domain (LISTEN)

А файл /etc/services, это просто описания соответвтвия межыу портами и стандартными видами сервисов.
В программе может быть прямо указан порт или использован системный вызов getservbyname().

На /etc/services надежды мало ... сравните стандартный файл и файл services, например от nmap.
На других Unix системах, инсталляторы иногда требуют ручной правки /etc/services

Кроме того, существует понятие "привилегированный порт" (0-1024) эти порты можно открыть только с root правами.
« Последнее редактирование: 25 Января 2014, 19:32:30 от golota »
Я знаю то, что ничего не знаю, но некоторые не знают и этого. Сократ

Оффлайн Yuriy_Y

  • Старожил
  • *
  • Сообщений: 1736
    • Просмотр профиля
    • Новоишимка
А файл /etc/services, это просто описания соответвтвия межыу портами и стандартными видами сервисов.
Ну вот и я про что, не все сервисы пользуются абсолютными номерами портов сервисов. Потому, если поменял где-то порт, было бы не лишним уведомить об этом всех.
С уважением, Юрий.

Оффлайн golota

  • Участник
  • *
  • Сообщений: 132
    • Просмотр профиля
А файл /etc/services, это просто описания соответвтвия межыу портами и стандартными видами сервисов.
Ну вот и я про что, не все сервисы пользуются абсолютными номерами портов сервисов. Потому, если поменял где-то порт, было бы не лишним уведомить об этом всех.
Тогда лучше добавить, а не исправить.
Иначе можно вызрать конфликт с другой программой.
Я знаю то, что ничего не знаю, но некоторые не знают и этого. Сократ

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
На Unix системах, в обшем и целом есть программа, которая "слушает" ВСЕ порты
называется inetd
Не несите чепухи. Из-за таких заявлений новички начинают паниковать, что у них закрыт нужный порт и начинают судорожно искать методы открыть их.
Да inetd слушает порты и запускает нужные демоны, но это происходит исключительно только с теми портами, которые заданы в конфигурации. НО!!! Порт фактически не будет открыт до тех пор, пока не запустится демон.

Пользователь решил продолжить мысль 25 Января 2014, 19:36:16:
А номер порта... да хоть какой и хоть для какого сервиса. Главное чтобы в одной системе не было конфликта между ними.
« Последнее редактирование: 25 Января 2014, 19:36:16 от fisher74 »

Оффлайн golota

  • Участник
  • *
  • Сообщений: 132
    • Просмотр профиля
На Unix системах, в обшем и целом есть программа, которая "слушает" ВСЕ порты
называется inetd
Не несите чепухи. Из-за таких заявлений новички начинают паниковать, что у них закрыт нужный порт и начинают судорожно искать методы открыть их.
Да inetd слушает порты и запускает нужные демоны, но это происходит исключительно только с теми портами, которые заданы в конфигурации. НО!!! Порт фактически не будет открыт до тех пор, пока не запустится демон.
Согласен. Исправляю на "теоретически может слушать все порты"
А запускает вовсе не демоны ... а процессы ... т.е. родитель не init, а сам inetd.
и после завершения коннекции процесс уничтожается. Правда  ;)
« Последнее редактирование: 25 Января 2014, 19:42:18 от golota »
Я знаю то, что ничего не знаю, но некоторые не знают и этого. Сократ

Оффлайн FarSeer

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
А как и на каком этапе система узнает какие стандартные порты необходимо открыть?
Т.е. Вы изначально не понимаете определения открытого порта.
Давайте так. Порт - это как дверь, через которую можно войти. Нет квартиры (сервис), нет двери и нечего открывать.
А после установки двери она открыта. Вот врежете замок - им и можете закрыть дверь.
Спасибо. Вы мне объяснили то что нужно было.

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
А запускает вовсе не демоны ... а процессы ... т.е. родитель не init, а сам inetd.
и после завершения коннекции процесс уничтожается. Правда  ;)
Так же соглашусь с поправками. Демоны с inetd не дружат по своей сути.

 

Страница сгенерирована за 0.023 секунд. Запросов: 22.