В прошлой статье мы рассказывали про тюнинг ядра Linux. теперь давайте поговорим про работу с файрволом Netfilter.
Netfilter — это межсетевой экран для операционных систем Linux. Успешно применять этот инструмент могут не только продвинутые пользователи Linux, но и новички при помощи утилиты iptables. В этом руководстве представлено описание базовых настроек конфигурации этого мощного файрвола.
Если вы только начинаете работу со своим фаерволом, первые правила, которые нужно добавить - это запрет всех входящих подключений и доступ на все исходящие подключения. Это значит, что все, кто пытается достучаться к вашему серверу, не сможет этого сделать, а любое приложение вашего сервера имеет доступ к внешней сети.
Этих настроек брандмауэра может быть достаточно для персонального компьютера, но серверам обычно нужно отвечать на входящие запросы от внешних пользователей. Мы рассмотрим это дальше.
Создадим bash скрипт с правилами iptables и добавим следующее содержимое:
nano rules
Сначала запретим весь входящий трафик и разрешим исходящий, а затем выборочно будем разрешать его:
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