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