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.