Основы работы с iptables

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

Проверка текущего статуса iptables
С помощью следующей команды вы можете просмотреть текущую политику вашего брандмауэра:

sudo iptables –L –v

Определение правил
Используя следующую команду, мы можем создавать цепочки правил для iptables. Не все параметры нужно указывать при добавлении нового правила.
-A означает « Добавить», и новое правило будет добавлено в конце цепочки.
-I можно использовать, если вам нужно вставить правило вместо другого.

sudo iptables -A -i <интерфейс> -p <протокол (tcp / udp)> -s <источник> –dport <порт> -j <цель>

Включить трафик localhost
Начнем с включения трафика localhost с помощью следующей команды.

sudo iptables -A INPUT -i lo -j ACCEPT

Здесь мы использовали параметр -i для того чтобы указать интерфейс, используемый для связи с localhost.

Включить соединение через HTTP, SSH и SSL-порт
Чтобы обычные соединения, такие как HTTP (порт 80), HTTPS (порт 443) и SSH (порт по умолчанию 22), по-прежнему могли использоваться — нужно добавить их в нашу цепочку INPUT. Обратите внимание, что мы использовали –p для указания протокола и соответствующего порта. Если вы используете порт SSH, отличный от стандартного, измените его на тот, который вы используете.

sudo iptables -A INPUT -p tcp –dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp –dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp –dport 443 -j ACCEPT

Фильтровать пакеты по источнику
Если вы хотите принимать или отклонять пакеты на основе конкретного IP-адреса, вы можете указать это с помощью опции –s. Например, следующая команда сбросит пакеты с IP-адреса 192.168.0.1.

sudo iptables -A INPUT -s 192.168.0.1 -j DROP

Вы также можете указать диапазон (подсеть):

sudo iptables -A INPUT -s 192.168.0.0/24 -j DROP

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

sudo iptables -A INPUT -p tcp –syn -m limit –limit 1/s –limit-burst 3 -j DROP

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

–limit 1/s: максимальная средняя скорость сопоставления в секундах.
–limit-burst 3: максимальное начальное количество пакетов

Отключение всего прочего трафика
Также, можно отбросить весь остальной трафик, который нам не нужен, чтобы предотвратить несанкционированный доступ.

sudo iptables -A INPUT -j DROP

Открыть порт на сервере
Если после настройки вы установили программное обеспечение, которое требует открытие порта, можно использовать команду:

iptables -t filter -A INPUT -p tcp --dport 8045 -j ACCEPT

8045 — нужный порт

Есть также возможность открыть диапазон портов, пример команды:

iptables -t filter -A INPUT -p tcp --dport 1560:1590-j ACCEPT

Этой командой мы открыли порты 1560-1590 для входящих пакетов и передаваемых по протоколу TCP.

Если надо открыть порт на исходящее соединение — нужно указать вместо INPUT — OUTPUT.

Удаление правил
Если нужно удалить правила и начать с нуля, вы можете использовать команду flush. Он удаляет каждое правило, указанное во всех цепочках.

sudo iptables -F

Если нужно удалить определенное правило, для начала надо проверить какой строке оно соответствует.

sudo iptables -L –line-numbers

Вы получите список правил с соответствующими номерами.

Chain INPUT (policy ACCEPT) 

num  target     prot opt source               destination          

1    ACCEPT     all  —  192.168.0.4          anywhere             

2    ACCEPT     tcp  —  anywhere             anywhere             tcp dpt:https 

3    ACCEPT     tcp  —  anywhere             anywhere             tcp dpt:http 

4    ACCEPT     tcp  —  anywhere             anywhere             tcp dpt:ssh

Для удаления правила указываем номер в нашей команде:

sudo iptables -D INPUT 2

Сохранение изменений
Созданные нами правила iptables хранятся в памяти. Это означает, что при перезагрузке все изменения будут стерты. Чтобы сохранить их нужно использовать команду:

sudo /sbin/iptables-save

Или:

/sbin/service iptables save

Вы также можете использовать другие более удобные фаерволы для защиты Вашего сервера, например csf\apf.

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