Как удалить порт linux

Освобождение порта TCP / IP?

netstat -tulnap показывает, какие порты используются. Как освободить порт в Linux?

Как уже говорили другие, вам придется убить все процессы, которые прослушивают этот порт. Самый простой способ сделать это — использовать команду fuser (1). Например, чтобы увидеть все процессы, прослушивающие запросы http на порту 80 (запустите от имени пользователя root или используйте sudo):

Если вы хотите убить их, просто добавьте опцию -k.

Чтобы убить определенный порт в Linux, используйте команду ниже

замените Port_Number вашим занятым портом.

Вы можете использовать tcpkill (часть dsniff пакета), чтобы уничтожить соединение, которое находится на нужном порту:

В типе терминала:

netstat -anp|grep «port_number»

Он покажет детали порта. Перейти к последнему столбцу. Это будет в этом формате. Например: — PID / Java

kill -9 PID. Worked on Centos5

и затем выполните:

Работал на Macbook

Команда «netstat —programs» выдаст вам информацию о процессе, если вы являетесь пользователем root. Тогда вам придется убить «оскорбительный» процесс, который вполне может начаться снова, просто чтобы вас раздражать :-).

Чего вы на самом деле пытаетесь достичь здесь? Решения могут отличаться в зависимости от процессов, содержащих эти порты.

Чтобы проверить все порты:

Чтобы закрыть открытый порт:

В обоих случаях вы можете использовать sudo команду при необходимости.

Убейте процесс, который прослушивает рассматриваемый порт. Я считаю, что netstat показывает вам идентификаторы процессов.

Если вы действительно хотите немедленно завершить процесс, вы отправляете ему сигнал KILL вместо сигнала TERM (последний — запрос на остановку, первый вступит в силу немедленно без какой-либо очистки). Это легко сделать:

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

Источник

Как закрыть порт iptables

Серверы и компьютеры, подключенные к интернету подвержены атакам и сканированию различных скриптов, программ и злоумышленников. А поскольку известно, что во всех системах могут быть уязвимости, то лучше, чтобы извне было видно минимум портов.

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

Как закрыть порт Iptables

В этой статье я не стану подробно рассматривать все возможности Iptables, виды цепочек и как работает эта служба. Все это мы рассмотрели в статье настройка Iptables для начинающих. Вместо этого, перейдем ближе к делу. Чтобы заблокировать порт нам сначала нужно понять какие порты открыты в Linux и за что они отвечают. Чтобы посмотреть какие порты слушаются локально, можно использовать утилиту netstat:

sudo netstat -ntulp

Для анализа портов, доступных извне используется программа nmap:

Как видите, извне у нас, кроме стандартных портов веб-сервера, доступны mysql, ftp, dns и другие сервисы. Некоторые из них не должны быть доступны публично. Это не критично, но и нежелательно. Мы можем очень просто закрыть такие порты с помощью iptables. Общий синтаксис команды для блокировки порта будет выглядеть вот так:

Читайте также:  Оптимизация ускорение работы компьютера windows

$ iptables -A INPUT -p tcp —dport номер_порта -j DROP

Например, если мы хотим заблокировать порт iptables mysql, то необходимо выполнить:

sudo iptables -A INPUT -p tcp —dport 3306 -j DROP

Можно закрыть порт для определенного интерфейса, например, eth1:

sudo iptables -A INPUT -i eth1 -p tcp —dport 3306 -j DROP

Или даже для ip и целой подсети. Например, закрыть все подключения к порту 22 SSH кроме IP адреса 1.2.3.4:

sudo iptables -A INPUT -i eth1 -p tcp -s !1.2.3.4 —dport 22 -j DROP

Здесь знак восклицания означает инверсию, то есть применить ко всем кроме этого. Можно убрать этот знак и указать только IP, к которым нужно применить запрет. Мы рассмотрели как закрыть порт iptables в цепочке INPUT, которая отвечает за входящие соединения, это более применимо к серверам. Но что, если нужно закрыть подключение к удаленному порту из этого компьютера или нашей сети? Для этого существует цепочка OUTPUT.

Например, заблокируем попытки отправки почты подключением к любой машине по порту 25:

sudo iptables -A OUTPUT -p tcp —dport 25 -j DROP

Также, как и раньше, вы можете указать исходящий сетевой интерфейс, только теперь он указывается опцией -o:

sudo iptables -A OUTPUT -o eth1 -p tcp —dport 25 -j DROP

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

Чтобы посмотреть текущие правила для каждой из цепочек выполните:

sudo iptables -L -n -v

Такая команда покажет все правила, а если вы хотите только информацию о заблокированных портах, выполните:

sudo iptables -L -n -v | grep -i DROP

Очистить все правила в случае возникновения проблем можно командой:

sudo iptables -F

Закрыть порты iptables, кроме разрешенных

По умолчанию политика для цепочек INPUT и OUTPUT — разрешать все подключения, а уже с помощью правил мы указываем какие подключения стоит запретить. Но если вы хотите закрыть все порты кроме разрешенных iptables. То нужно поступить по-другому. Мы поменяем политику по умолчанию, так чтобы она запрещала все и разрешим только доступ к нужным портам.

Например, меняем политику для цепочки INPUT:

sudo iptables -P INPUT DROP

Затем разрешаем все входящие соединения от локального интерфейса:

sudo iptables -A INPUT -i lo -j ACCEPT

Затем разрешаем доступ к портам 80 и 22:

sudo iptables -A INPUT -i eth0 -p tcp —dport 80 —match state —state NEW -j ACCEPT
$ sudo iptables -A INPUT -i eth0 -p tcp —dport 80 —match state —state NEW -j ACCEPT

Как скрыть порт iptables?

Закрыть порт, это очень хорошо, но что если он нужен нам открытым и желательно, чтобы для других этот же порт был недоступен. Существует такая технология, как Port Knocking, которая позволяет открывать нужный порт только для определенного ip адреса и только после обращения его к нужному порту. Например, нам нужно защитить SSH от перебора паролей и несанкционированного доступа. Для этого все пакеты, которые будут приходить на порт 22, 111 и 112 мы будем перенаправлять в цепочку SSH.

Как вы уже догадались, порт 22 нам непосредственно нужен, на порты 111 и 112 будут включать его и отключать соответственно. Когда пользователь обратится к порту 111 мы укажем системе, что нужно присвоить всем его пакетам имя ssh, при обращении к порту 112 уберем этот флаг. А если пользователь решит зайти на 22 порт, то проверим присвоено ли этому пакету имя SSH, если да, то пропустим, в противном случае — отбросим.

Читайте также:  Редакция windows где посмотреть

Сначала создаем цепочку SSH:

sudo iptables -N SSH

sudo iptables -A INPUT -p tcp —dport 22 -j SSH
$ sudo iptables -A INPUT -p tcp —dport 111 -j SSH
$ sudo iptables -A INPUT -p tcp —dport 112 -j SSH

При обращении к порту 111 присваиваем IP адресу имя, сам пакет дальше не пускаем:

sudo iptables -A SSH -p tcp -m state —state NEW -m tcp —dport 111 -m recent —set —name SSH —rsource -j DROP

При обращении к 112 убираем имя у IP:

sudo iptables -A SSH -p tcp -m state —state NEW -m tcp —dport 112 -m recent —remove —name SSH —rsource -j DROP

И нам осталось только проверить имеет ли наш пакет, который пытается обратиться к 22 порту имя SSH и если да, то мы его одобряем:

sudo iptables -A SSH -p tcp -m state —state NEW -m tcp —dport 22 -m recent —rcheck —name SSH —rsource -j ACCEPT

Вот и все. Теперь для того чтобы открыть наш SSH порт будет достаточно попытаться подключиться к порту 111 с помощью telnet. Утилита сообщит, что произошла ошибка во время подключения, поскольку мы отбросили пакет:

telnet ip_адрес 111

Но зато теперь вы можете получить доступ к сервису SSH на порту 22. Чтобы снова закрыть порт выполните:

telnet ip_адрес 112

Даже при открытии, этот порт доступен только вашему ip адресу и больше никому другому. Но нужно заметить, что это не панацея. Кто-либо может случайно запросить порт, который предназначен для активации, и таким образом, открыть себе доступ к службе SSH. Так что надежные пароли и ключи шифрования это не отменяет.

Выводы

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

Источник

Как найти и закрыть открытый порт в linux

Итак, вы являетесь сетевым администратором, и у вас есть несколько машин Linux в вашей сети или дата-центре. Вы обнаружили странный трафик и вам требуется его определить. Возможно ли, что трафик использует открытый порт на машине? Если так, где находится порт и как вы его закроете?

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

Как найти открытый порт

К счастью, вам не нужно устанавливать какое-либо программное обеспечение, чтобы сделать эту работу. Почему? Потому что мы будем использовать команду ss (так как netstat устарел) для просмотра портов прослушивания на вашем сервере. Это будет сделано полностью из командной строки, поэтому либо войдите на свой сервер, либо используйте безопасную оболочку для доступа. Когда вы получите приглашение bash, введите команду:

Возможны следующие варианты:

-t Показать только сокеты TCP в Linux
-u Показать только сокеты UDP в Linux
-l Показать прослушивающие сокеты (например, TCP-порт 22 открыт SSHD-сервером)
-p Список имен процессов, которые открывали сокеты
-n Не разрешать имена сервисов

Вывод команды будет перечислять только прослушиваемые порты.

Наши открытые порты

Как видите, на этой машине имеется только несколько открытых портов (53, 22, 631, 445, 3306, 11211, 80, 8080).

Если вы не уверены, какой порт соответствует какой службе, вы всегда можете узнать это в файле /etc/services. Прочитайте этот файл с помощью команды:

Читайте также:  Кто может блокировать ос windows

Вы должны увидеть список всех портов, доступных для Linux.

Какой порт linux соответствует какой службе

Как закрыть порт

Скажем, вы размещаете веб-сервер на компьютере, но не хотите прослушивать порт 8080. Вместо этого вы хотите, чтобы трафик проходил только через порты 80 (HTTP) и 443 (HTTPS). Чтобы закрыть порт 8080, мы будем использовать команду ufw (Uncomplicated FireWall) следующим образом:

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

И это все, что нужно для поиска и закрытия открытого порта на Ubuntu. Этот процесс должен работать в большинстве дистрибутивов, единственное предостережение — как вы блокируете порт, так как не каждый дистрибутив использует ufw. Если выбранный вами дистрибутив использует другую команду для блокировки портов (например, sudo iptables -A INPUT -p tcp —destination-port 80 -j DROP), убедитесь, что вы знаете, как выполнить эту задачу на своем сервере.

Источник

Как убить процесс, работающий на определенном порту в Linux?

Я попытался закрыть tomcat, используя ./shutdown.sh от tomcat

16 ответов

этой fuser 8080/tcp напечатает вам PID процесса, связанного с этим портом.

и fuser -k 8080/tcp убьет этот процесс.

работает только на Linux. Более универсальным является использование lsof -i4 (или 6 для IPv6).

чтобы перечислить любой процесс, прослушивающий порт 8080:

чтобы убить любой процесс прослушивания порта 8080:

или более яростно:

( -9 соответствует SIGKILL — terminate immediately/hard kill сигнал: Вижу список сигналов уничтожения и какова цель опции -9 в команде kill?. Если сигнал не указан в kill , термин сигнал a.к. a. -15 или soft kill отправляется, чего иногда недостаточно убить процесс.).

используется grep java as tomcat использует java как их процессы.

он покажет список процессов с номером порта и идентификатором процесса

число перед /java — это идентификатор процесса. Теперь используйте kill команда, чтобы убить процесс

-9 подразумевает, что процесс будет насильственно убит.

вы можете использовать команду lsof. Пусть номер порта, как здесь 8090

эта команда возвращает список открытых процессов на этот порт.

чтобы освободить порт, убейте процесс, используя его (идентификатор процесса 75782).

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

Я бы добавил этот One-liner только для прослушивания определенного порта:

kill -9 $(lsof -t -i:3000 -sTCP:LISTEN)

Если вы хотите убить процесс, работающий на port number 8080, то сначала вам нужно найти 8080 port process identification number(PID), а затем убить его. Выполните следующую команду, чтобы найти 8080 номер порта PID:

  • судо — команда для запроса прав администратора (id пользователя и пароль).
  • lsof — список файлов(также используется для связанного списка процессов)
  • — t — показать только ID процесса
  • — показать только интернет-соединения, связанные с процессом
  • :8080 — показывать только процессы в этом номере порта

Теперь вы можете легко убить свой PID, используя следующую команду:

  • kill-команда, чтобы убить процесс
  • -9 — сильно

вы можете использовать одну команду, чтобы убить процесс на определенном порту, используя следующая команда:

Для больше вы можете увидеть следующую ссылку как убить процесс на определенном порту в linux

это печатает для stdout идентификаторы процессов всего, что работает на

он также печатает некоторые вещи в stderr, так:

затем мы можем предоставить эти идентификаторы процессов в kill команда:

вы также можете поместить это в функцию, если вы делаете это много:

чтобы узнать pid службы, работающей на определенном порту:

вы получите описание этого процесса. Теперь используйте kill или kill -9 pid. Легко убил.

Источник

Оцените статью