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

Материал из SurvivalHost Wiki
Перейти к навигации Перейти к поиску

Как закрыть порты в linux
<< SurvivalHost Wiki | К концу статьи | Короткая ссылка

Iptables — это межсетевой экран для операционных систем 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

Вставляем содержимое в файл

#!/bin/bash
set -ex

# Очищаем все правила
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: блокировать все входящие соединения
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

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