Как закрыть порт linux
Перейти к содержимому

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

  • автор:

Firewall — Как найти и закрыть порт в Linux

Firewall - Как найти и закрыть порт в Linux

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

Мы сегодня будет закрывать порт 1521, этот порт используется для подключения к базе данных oracle.

  1. Как отключить Firewall в Linux
  2. Firewall — Как открыть порт в Linux

ШАГ 1. Находим порт 1521.

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

linux close port

На изображении видно что в поле ports указано что порт 1521 по протоколу tcp сейчас открыт.

ШАГ 2. Закрываем порт.

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

$. sudo firewall-cmd —remove-port=1521/tcp —permanent

linux close port

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

Ну и конечно же не забываем после каждого действия с Firewall перезапускать сервис чтобы новые правила применились.

$. sudo firewall-cmd —reload

linux close port

ШАГ 3. Проверяем результат.

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

linux close port

Как видим на изображении поле ports пустое, а значит у нас все получилось.

Всем спасибо, я надеюсь что вам моя статья хоть чем-то помогла.

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

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

Найдите открытые порты в Linux

В этом уроке я собираюсь использовать команду ss для поиска открытых портов.

Вы можете использовать опцию -l с командой ss, чтобы получить порты прослушивания. Но если быть более конкретным, я использую -lt , чтобы получить прослушиваемые TCP-порты:

ss -tl

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

ss -tul

А чтобы получить порт прослушивания каждой службы, вы можете использовать -n , а для более точных результатов вы всегда можете использовать команду grep:

ss -tuln | grep LISTEN

Хватит искать открытые порты, давайте перейдем к тому, как их закрыть.

Закрыть открытые порты в Linux

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

sudo ss -tulnp | grep LISTEN

Как видите, NGINX использует порт номер 80. Итак, давайте остановим его с помощью данной команды:

sudo systemctl stop nginx

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

sudo systemctl disable nginx

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

Здесь я собираюсь заблокировать порт № 80 (используемый NGINX) в UFW (который предварительно установлен в Ubuntu).

Для начала проверим статус UFW:

sudo ufw status

И если он показывает inactive , вы можете использовать данную команду, чтобы включить его:

sudo ufw enable

Теперь вам просто нужно соединить опцию deny с номером порта :

sudo ufw deny 80

И вот конечный результат:

Никаких признаков NGINX!

Подведение итогов

Это был мой взгляд на то, как найти и закрыть открытые порты в Linux. Я надеюсь, что вы найдете это полезным.

А если у вас есть какие-либо вопросы, дайте мне знать в комментариях.

Все права защищены. © Linux-Console.net • 2019-2024

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

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

Что такое iptables

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

Как правило, itpables предустанавливается на всех Linux-дистрибутивах. Чтобы обновить утилиту, или установить ее, если по каким-то причинам она отсутствует в базовой поставке, нужно воспользоваться следующей командой:

sudo apt-get install iptables

Существует три типа правил iptables — input, forward и output.

Input — Такие цепочки используются для контроля поведения входящих соединений. К примеру, если пользователь попробует подключиться к серверу по SSH, то iptables сравнит его IP-адрес со своим списком, чтобы разрешить или запретить доступ.

Forward — Правила этого типа используются для обработки входящих сообщений, конечный пункт назначения которых не является текущим сервером. К примеру, в случае маршрутизатора, к нему подключаются многие пользователи и приложения, но данные не посылаются на сам маршрутизатор, они лишь передаются ему, чтобы он мог перенаправить их адресату. Если вы не занимаетесь настройкой маршрутизации или NAT, то правила этого типа использовать в работе не будете.

Output — Такие цепочки используются для исходящих соединений. К прмиеру, если пользователь пытается отправинг запрос ping к сайту 1cloud.ru, iptables изучит цепочку правил, чтобы понять, что нужно делать в случае ping и этого сайт, и только потом разрешит или запретит соединение.

Важный момент

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

Рассмотрим вариант закрытия всех портов на сервере minecraft

nano /usr/local/sbin/my-firewall.sh

Скопируйте и вставьте следующее содержимое (подсказка: чтобы вставить в терминал, используйте Ctrl + Shift + V):

#!/bin/bash set -ex
# Очищаем все правила Внимание! Может закрыть доступ ssh. Попробовать перезапуск машины. iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X iptables -t raw -F iptables -t raw -X
# Default policy: блокировать все входящие соединения Внимание! Может закрыть доступ ssh. iptables -P FORWARD DROP iptables -P INPUT DROP iptables -P OUTPUT ACCEPT # Разрешить ранее установленные соединения iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Разрешить loopback соединения iptables -A INPUT -i lo -j ACCEPT # ICMP (ping) разрешаем пинг iptables -A INPUT -p icmp -j ACCEPT # SSH (port 22/TCP,UDP) разрешаем ssh соединения #iptables -A INPUT -p tcp --dport 22 -j ACCEPT #iptables -A INPUT -p udp --dport 22 -j DROP # MINECRAFT (port 25565/TCP) разрешаем подкючение к порту 25565 iptables -A INPUT -p tcp --dport 25565 -j ACCEPT # Block all UDP - блокируем все подключения по протоколу UDP iptables -A INPUT -p udp -s 0.0.0.0/0 -j DROP

Измените права доступа к файлу, чтобы только пользователь root мог запускать скрипт:

# chmod 744 /usr/local/sbin/my-firewall.sh

Вот и все! Теперь, когда вам нужно настроить iptables, просто запустите скрипт:

# /usr/local/sbin/my-firewall.sh

Когда вам нужно изменить правила брандмауэра, отредактируйте скрипт и запустите его снова.

Запуск iptables при загрузке

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

В дистрибутивах systemd, таких как openSUSE и Linux Kamarada, лучший способ запустить сценарий, такой как my-firewall.sh, во время загрузки — это создать службу.

Например, создайте службу systemd с именем my-firewall.service в папке /etc/systemd/system/ с помощью вашего любимого текстового редактора:

# nano /etc/systemd/system/my-firewall.service

Скопируйте и вставьте следующее содержимое:

[Unit] After=network.target [Service] ExecStart=/usr/local/sbin/my-firewall.sh [Install] WantedBy=default.target

Настройте права доступа к файлам:

# chmod 664 /etc/systemd/system/my-firewall.service

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

# systemctl daemon-reload # systemctl enable my-firewall

Если вы хотите протестировать свою службу перед перезагрузкой, запустите:

# systemctl start my-firewall # iptables -L

Вот и все! В следующий раз, когда вы перезагрузите систему, systemd запустит службу, которая запускает скрипт, настраивающий iptables.

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

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

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

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

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

sudo ss -tulwn | grep LISTEN

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

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

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

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

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

less /etc/services

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

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

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

sudo ufw deny 8080

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

sudo ufw allow 8080

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

Добавить комментарий

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