Установка и начальная настройка IPTables

IPTables - известный и широко распространенный фаервол под Linux. В этой мини хаутушке я расскажу как его установить себе на веб сервер.

Устанавливаем IPTables из репозитория Ubuntu:

apt-get install iptables

Теперь нужно создать два файла: /etc/iptables.test.rules и /etc/iptables.up.rules. Первый файл - тестовый, в котором будут сохраняться тестовые правила. Второй файл - постоянный, в котором будут храниться правила, используемые в продакшене, то-есть уже проверенные и загружаемые сервером при загрузке.

Используя следующую комманду смотрим список текущих правил IPTables:

iptables -L

По умолчанию правил никаких нет, вывод комманды будет приблизительно такой:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Таким образом, наш сервер принимает все подключения.

Создадим файл со следующим содержанием:

*filter

#  Для лурбэк интерфейса разрешмем только траффик, идущий через lo0 интерфейс.
#  Блокируем остальной траффик к 127/8, идущий не через lo0 интерфейс
-A INPUT -i lo -j ACCEPT
-A INPUT -d 127.0.0.0/8 -j REJECT

#  Разрешаем все входящие пакеты для уже установленных подключений
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#  Разрешаем весь исходящий траффик
#  Если вы хотите рарешить только определенный тип траффика, идущего наружу - следует изменить следующее правило
-A OUTPUT -j ACCEPT

# Разрешаем подключение к нашему ваб серверу
-A INPUT -p tcp --dport 80 -j ACCEPT

# Для того, чтоб разрешить HTTPS подключения - разкомментируйте следующую строку:
#-A INPUT -p tcp --dport 443 -j ACCEPT

# Разрешаем SSH подключения. Не забываем изменить стандартный порт на какой-нибудь другой, нестандартный.
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

# Разрешаем пиногвать наш сервер. Если хотите запретить - закомментируйте следующую строку
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

# Блокируем все остальные входяшие подключения.
-A INPUT -j REJECT
-A FORWARD -j REJECT

COMMIT

Правила на данный момент разрешают только подключение на 80 порт. Для разрешения HTTPS подключений - разкомментируте соответствующую строчку. В дополнение к HTTP подключениям, нужно разрешить SSH подключения, без которых мы не сможем администритровать наш сервер. Стандартный SSH порт 22, но использовать его крайне не рекомендуется - измените его на какой-нибудь другой, а в дополение к этому установите программу, которая будет отслеживать сканирование портов вашего сервера (например portsentry) и блокировать всех, кто пытается это делать.

Открываем в текстовом редакторе файл /etc/iptables.test.rules:

vi /etc/iptables.test.rules

Вставляем в него правила, перечисленные в предыдущем блоке, сохраняем файл.

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

Применяем правила IPTables, сохраненные в файле /etc/iptables.test.rules:

iptables-restore < /etc/iptables.test.rules

Теперь, выполнив комманду просмотра правил IPTables (iptables -L), вы увидите примененные правила.

Если написанные правила вас устраивают - сохраните их в файле /etc/iptables.up.rules. Дальше мы пропишем загрузку этих эти правил в файле /etc/network/interfaces.

iptables-save > /etc/iptables.up.rules

Теперь нам нужно сделать так ,чтоб правила IPTtables загружались при загрузке сервера. В данный момент, если перезагрузить сервер, правила фаервола вернутся в начальное состояние и будутразрешать все подключения.

Откройте в редакторе файл /etc/network/interfaces:

vi /etc/network/interfaces

Добавьте строку следующего содержания: (pre-up iptables-restore < /etc/iptables.up.rules) после строки ‘iface lo inet loopback’:

...
auto lo
iface lo inet loopback
pre-up iptables-restore &lt; /etc/iptables.up.rules

# The primary network interface
...

Сохраните конфигурационный файл и перезапустите ваш сервер. После загрузки сервер будет под надежной защитой.

Тэги: 

There are 2 Comments

Тут ошибка: vi /etc/network

Тут ошибка: vi /etc/network/interface

Файл называется /etc/network/interfaces

Спасибо! Поправил.

Спасибо! Поправил.

Делись своим опытом и знаниями, ибо в могиле они тебе вряд-ли пригодятся.

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

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешённые HTML-теги: <a> <s> <u> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <hr> <dd> <sub> <sup>
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Защита от СПАМ ботов. Подтвердите, пожалуйста, что вы человек.
5 + 12 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.