• База знаний
  • /
  • Блог
  • /
  • Wiki
  • /
+380 (44) 364 05 71

В прошлой статье мы рассказывали про тюнинг ядра Linux. теперь давайте поговорим про работу с файрволом Netfilter.

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

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

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

Создадим bash скрипт с правилами iptables и добавим следующее содержимое:

nano rules

Создание bash скрипта

Сначала запретим весь входящий трафик и разрешим исходящий, а затем выборочно будем разрешать его:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

Так же Нам нужно создать правила, которые разрешат входящие соединения - например, SSH или HTTP/HTTPS-соединения - если мы хотим, чтобы наш сервер отвечал на эти типы запросов.

Чтобы разрешить входящие SSH-соединений, добавим следующие правила:

iptables -A input -p tcp —dport 22 -j ACCEPT #Разрешить ssh
iptables -A input -p tcp —dport 80 -j ACCEPT # Разрешить HTTP
iptables -A input -p tcp —dport 443 -j ACCEPT # Разрешить HTTPS

Так же вы можете разрешить подключение для конкретного ip-адреса или подсети

iptables -A INPUT -p tcp --dport 22 -s 10.10.10.10 -j ACCEPT

Сохраняем наш скрипт и даем права на выполнение:

chmod +x rules

Добавляем в автозагрузку при старте системы прописав путь к скрипту в rc.local

nano /etc/rc.local

Добавление автохагрузки при старте системы

Если ваш сервер использует еще какие-либо службы или сервисы вы должны их так же нужно разрешить, для правильной работы. Соединения, которые необходимо разрешить, зависят от конкретных потребностей. К счастью, вы уже знаете, как писать правила, разрешающие соединения на основе ip адреса и порта;

Так же можно разрешать/ограничивать соединения для конкретных стран или списков подсетей. Для того, чтобы не плодить правила iptables и не создавать дополнительную нагрузку на сервер можем использовать ipset.

Ограничение доступа только для сетей украинского сегмента

Устанавливаем ipset:

apt install ipset

Скачиваем список подсетей UA сегмента

wget --no-check-certificate https://www.colocall.net/ru/ua-networks/prefixes.txt

Создаем список подсетей ipset:

ipset create UA hash:net

Добавляем подсети из скачанного списка в ipset список UA

for i in $( cat /root/prefixes.txt) ; do ipset add UA $i; done

Так же добавляем в этот список localhost и внешний ip

ipset add UA 127.0.0.1
ipset add UA  ip-сервера

Далее в нашем скрипте rules закоментируем следующие правила и добавим правило, которое разрешает все входящие соединения с подсетей украинского сегмента.

iptables -I INPUT -m set --match-set UA src -j ACCEPT

Либо разрешить соединения на конкретный порт:

iptables -I INPUT -m set --match-set UA src -p tcp --dport 80 -j ACCEPT

Перезапускаем наш скрипт и смотрим правила

Перезапускаем наш скрипт и смотрим правила

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

Следующим ключевым моментом является тонкая настройка вебсервера. Конечно, вы можете поставить «по умолчанию» nginx и надеяться, что у вас все будет хорошо. Однако хорошо всегда не бывает. Поэтому в следующей статье мы поговорим про тюнинг ngix.

Выполняя работы по настройке firewall на сервере, особенно если сервер уже используется, предварительно подключите к серверу IPKVM или зайдите на IPMI. Так Вы сократите время простоя сервера, если допустили ошибку. FREEhost.UA предоставляет услугу аренды сервера в Украине с круглосуточной технической поддержкой. Если во время настройки iptables у Вас возникнут вопросы, мы будем готовы Вам помочь.

Дата: 06.09.2019
Автор: Валерий
Голосование

Авторам статьи важно Ваше мнение. Будем рады его обсудить с Вами:

comments powered by Disqus
Спасибо, что выбираете FREEhost.UA