Как закрыть порты в Linux?

У меня есть несколько вопрос в закрытии порта, я думаю, я получил некоторые странные вещи.

Когда я использую выполнять

nmap --top-ports 10 192.168.1.1

это показывает, что 23/TCP-порт открыт.

Но когда я выполнить

nmap --top-ports 10 localhost

это показывает, что 23/TCP-порт закрыт.

Какая из них верна? Я хочу закрыть этот порт на всю систему, как я могу это сделать?

Комментарии к вопросу (2)
Решение

Nmap это отличный сканер портов, но иногда хочется чего-то более авторитетного. Вы можете задать ядру, какие процессы, какие порты открыть с помощью команды netstat утилиты: в <предварительно> мне@окружения myhost:~$ sudo эти команды netstat -tlnp Активные интернет-соединения (только сервера) Прото приема-вопрос отправить-вопрос локальный адрес внешний адрес состояние PID-регулятора/название программы протокол TCP 0 0 127.0.0.1:53 0.0.0.0: слушать 1004/раздача протокол TCP 0 0 0.0.0.0:22 0.0.0.0: слушайте 380/демон протокол TCP 0 0 127.0.0.1:631 0.0.0.0: слушать 822/cupsd tcp6 0 0 :::22 ::: слушай 380/демон tcp6 0 0 ::1:631 :::* слушать 822/cupsd </пред>

Параметры, которые я указал:

  • только TCP
  • `-л только портов прослушивания
  • Дон'т посмотри будильник и имена хостов, просто отображение числа
  • -п показать информацию о процессе (требует root привилегий)

В данном случае, мы видим, что демон слушает на любом интерфейсе (0.0.0.0) порт 22, и cupsdпрослушивает замыкания (127.0.0.1) Порт 631. Свой результат может показать, что как telnetd имеет локальный адрес 192.168.1.1:23, то есть он не будет отвечать на подключения на адаптер замыкания на себя (например, вы можете'т через telnet 127.0.0.1).

Есть и другие инструменты, которые показывают аналогичную информацию (например, пространства или в/proc), но netstat является наиболее широко доступны. Она работает даже на Windows (команды netstat -Ану). БСД netstat-это немного другое: вы'll должны использовать sockstat(1), чтобы получить взамен обрабатывать информацию.

Если у вас есть идентификатор процесса и название программы, вы можете найти процесс и убить его, если вы хотите закрыть порт. Для более детального контроля, вы можете использовать файервол (iptables в Linux), чтобы ограничить доступ только к определенным адресам. Возможно, вам придется отключить запуск службы. Если ПИД есть "-" на Linux, это's наверное ядра процесс (это перекликается с НФ, например), так что удачи в поисках, что это такое.

Обратите внимание: я сказал "авторитетных" не потому, что вы'повторно не мешают сети и межсетевые экраны. Если Вы доверяете вашему компьютеру, что'ы большой. Однако, если вы подозреваете, что вы'вэ был взломан, вы не сможете доверять средства на свой компьютер. Заменив стандартные утилиты (и иногда даже системные вызовы) на скрытие определенных процессов или порты (на.к.а. руткиты) стандартная практика среди нападавших. Лучшим вариантом на данный момент является судебно копии диска и восстановление из резервной копии; затем с помощью копирования, чтобы определить, как они получили и закрыть его.

Комментарии (0)

Система Linux имеет так называемый loopback-интерфейс, который предназначен для внутренней коммуникации. Его имя хоста localhost и его IP-адрес 127.0.0.1.

Когда вы запустите сканированиях по локальнымlocalhost, вы на самом деле запустить приложение на **виртуальной** loopback-интерфейс.192.168.1.1- IP-адрес Ваш **физические** (скорее всегочерез eth0`) интерфейс.

Так что вы'вэ бежать, то Nmap на двух разных сетевых интерфейсов, поэтому там'с разницей в открытые порты. Они оба являются истинными.

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

Комментарии (2)

Чтобы "Закрыть" в порт, вы можете использовать сетевой экран

sudo iptables -A INPUT -p tcp --dport 23 -m state --state NEW,ESTABLISHED -j DROP
Комментарии (3)

Если вы делаете то Nmap localhost а, он расскажет вам о другой ситуации: некоторые программы по работе с Linux в качестве сервера, хотя они используются только локально. Это потому, что другие программы используют их как сервер они подключаются. Так что оба ответа верны, так как вы просите что-то другое.

Порт 23 применяется для telnet. Обычно больше не используется. Попробуйте сделать то Nmap -SV в 192.168.1.1`, чтобы выяснить, какая программа открывает порт.

(192... является локальной IP-сети, поэтому результат то Nmap <ваш внешний мир ИС> будет также даст другой результат, из-за возможных параметров брандмауэра и т. д.)

Комментарии (0)

Если у вас есть сервис запущен и слушает порт 23, это, пожалуй, чище на стоп процесс, который прослушивает порт 23 (вероятно, телнет), чем держать его под управлением и закрыть через порт 23 сам.

Когда там's нет процесс прослушивает порт, даже в отсутствие брандмауэра заблокировать любые попытки подключиться к нему должны привести к немедленному "в соединении отказано и" (ECONNREFUSED " на " подключение(2))

Один из способов найти процесс (и его PID), который слушает на Порту 23, если там's такой процесс является:

sudo lsof -i -P | grep ':23 '

В приведенном выше списки открыть интернет порт (UDP и TCP), и-P ингибирует перевод портов в имена служб (через `/и т. д./услуги)

После того, как вы нашли работающем на Порту 23, Вы можете выяснить, как все началось, глядя на дерево процесса (скажем, pstree). Если его родитель инит (очень вероятно), вы можете рекурсивно искать имя процесса /и т. д.. например:

sudo grep -r telnet /etc

Это должно привести вас к лучший способ, чтобы отключить его от работы в 1-м месте.

Комментарии (3)