Назад | Перейти на главную страницу

Отключение FTP

Я настраиваю новый сервер debian, и мне не нужен FTP, поэтому я хочу его удалить. Согласно netstat -tap, ftp ничего не слушает. Однако, когда я выполняю сканирование портов (nmap) извне, он говорит, что порт ftp открыт (21). inetd ничего не запускает, xinetd отсутствует в системе.

Что я должен делать?

результат нажатия netstat

obu1:/etc/pam.d# netstat -tap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 *:225                   *:*                     LISTEN     2237/sbadm
tcp6       0      0 *:ssh                   *:*                     LISTEN     2399/sshd
tcp6       0    448 obu1.hostname.:ssh rrcs-XXX-XXX-XXX-XXX:56721 ESTABLISHED  16639/sshd: username

NMap из нелокального

Starting Nmap 4.90RC1 ( http://nmap.org ) at 2009-07-13 10:47 Eastern Daylight Time
Interesting ports on obu1.hostname (ipaddress):
Not shown: 972 closed ports, 26 filtered ports
PORT   STATE SERVICE
21/tcp open  ftp
22/tcp open  ssh

Nmap done: 1 IP address (1 host up) scanned in 3.60 seconds

Вы должны знать, что Windows XP (и, возможно, другие версии) имеет внутреннюю оболочку для FTP-соединений (цель этого - попытаться разрешить успешное выполнение команды PORT даже за брандмауэром или маршрутизатором).

Эта оболочка перехватывает любое соединение с любым хостом на порту 21, поэтому она может отслеживать его и пытаться открыть входящий порт команды PORT, выданной клиентом.

Эта оболочка также имеет побочный эффект: поскольку она перехватывает любое соединение с портом 21, она отправляет сигнал о том, что соединение установлено, программному обеспечению, которое будет видеть соединение как установленное, но на самом деле соединение установлено только с внутренним интерфейсом Windows. обертка.

Затем оболочка пытается открыть соединение с реальным хостом и, если истекает время ожидания, посылает программе сигнал о том, что соединение было потеряно. Программа увидит, что соединение потеряно.

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

Итак, в вашем случае, что происходит: вы запускаете nmap. Nmap пытается подключиться к вашему серверу через порт 21. Оболочка Windows перехватывает соединение. Nmap «думает», что он подключен к вашему серверу (но он подключен только к оболочке), и сообщает порт как открытый.

Вы можете подтвердить это, набрав в командной строке:

ftp 4.3.2.1

Вы увидите: C:> ftp 4.3.2.1.

Подключен к 4.3.2.1.

Соединение прервано внешним хостом.

Вы можете попробовать любой действующий IP-адрес, ftp всегда будет подключаться и отключаться вскоре после этого, тогда как он должен сообщать «Время ожидания соединения истекло».

Я никогда не видел документации по этому поводу. После многих исследований я обнаружил это странное поведение, а после дополнительных исследований выяснил, почему оно здесь.

Что ж, вывод из этого (большого) ответа таков: порт 21 вашего сервера определенно закрыт, как сообщает netstat, и такое поведение вводит Nmap в заблуждение.

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

netstat -lp

lsof -i :21

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

apt-get remove --purge ftp

Замените ftp тем, что называется пакетом. Я не совсем уверен, что это такое, но насколько мне известно, эта команда должна работать.

apt-get clean

Это очистит ваш каталог var после удаления.

В зависимости от того, что inetd и стиль конфигурации, который вы используете, найдите определение службы ftp в /etc/inetd.conf, /etc/xinetd.d и / или /etc/xinetd.conf. Если найдешь, уничтожь.

Вы уверены, что сканируете правильный IP-адрес? netstat показывает порты 225 и 22, nmap показывает 21 и 22 ... либо вы сканируете неправильный IP-адрес, либо брандмауэр между ними выполняет какие-то действия, либо, возможно, некоторые правила iptables на вашем сервере перенаправляют пакеты. Я бы сказал, проверьте 'iptables -L -n', чтобы убедиться, что там нет ничего, связанного с FTP.

Внешний nmap вы делаете для IP-адреса сервера? Возможно, проходит через брандмауэр или маршрутизатор. Что происходит, когда вы делаете nmap с localhost?

  1. Проверьте правила брандмауэра на хосте

  2. Попробуйте использовать nmap с разных хостов, все ли они видят, что порт 21 открыт.

  3. Убедитесь, что вы запускаете все команды как root.

  4. Используйте кросс-кабель для подключения к вашему серверу. Переключите брандмауэр на сервере и на машине, к которой вы подключились с помощью кросс-кабеля, и снова выполните nmap.

  5. Telnet с какого-либо хоста на порт 21. Не нажимайте клавишу, когда приходит сообщение «Нажмите любую клавишу, чтобы продолжить ...». Затем от имени пользователя root попробуйте эти команды

    netstat -lp lsof -i: 21

  6. Если все равно не повезет. Остановите брандмауэр. Запустите новую службу на хосте (скажем, httpd) и снова выполните сканирование портов из разных мест. Вы видите, что дополнительный порт http открыт?

Если localhost не видит процесс, прослушивающий порт 21, то есть что-то между хостом, с которого вы выполняете nmap, и сервером. Вот почему пункт 4 касается прямого подключения хоста к Nmap и серверу.

Вы обязательно должны убедиться, что ваш роутер НЕ пересылка любой 21 порт на ваш сервер, даже если у вас нет FTP-сервисов, NMAP перечислит порты как открыто если маршрутизатор выполняет свою работу по пересылке.