Категории

Полезные команды iptables · Шпаргалка для блога

13.02.2026 | Статья из категории: Без категории

iptables — утилита для настройки брандмауэра в Linux. Команды сгруппированы для быстрого поиска.

Синтаксис

iptables -t [таблица] [команда] [цепочка] [номер] [условие] -j [действие]

Таблицы: filter (по умолч.), nat, mangle, raw

Команды

КлючОписание / пример
-AДобавить в конец: iptables -A INPUT -s 192.168.0.15 -j DROP
-I [N]Вставить с номером: iptables -I INPUT 2 -p tcp --dport 22 -j ACCEPT
-D [N]Удалить по номеру: iptables -D INPUT 3
-R [N]Заменить: iptables -R OUTPUT 1 -d 8.8.8.8 -j ACCEPT
-FОчистить правила: iptables -F INPUT
-PПолитика по умолч.: iptables -P INPUT DROP
-L --line-numbersПоказать правила с номерами

Условия

КлючОписание
-pПротокол: tcp, udp, icmp, all
-s / -dIP источник / назначения (10.0.0.0/24)
--dport / --sportПорт назначения / источник
-i / -oИнтерфейс входящий / исходящий
-m state --stateNEW, ESTABLISHED, RELATED
-m multiportНесколько портов: --dports 80,443,8080
!Инверсия: -s ! 1.1.1.1

Действия (-j)

ДействиеТаблицаОписание
ACCEPT / DROPfilterРазрешить / Запретить
REJECTfilterЗапретить с ответом
SNAT / DNATnatСмена адреса источника/назначения
MASQUERADEnatSNAT для динамических IP
REDIRECTnatПеренаправление на другой порт
LOGвсеЗапись в лог

Практические примеры

Базовая настройка

  • iptables -P INPUT DROP — запрет входящих по умолч.
  • iptables -P OUTPUT ACCEPT — исходящие разрешены
  • iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT — ответные пакеты
  • iptables -A INPUT -i lo -j ACCEPT — локальный интерфейс
  • iptables -A INPUT -p icmp -j ACCEPT — разрешить ping
  • iptables -A INPUT -p tcp --dport 22 -j ACCEPT — открыть SSH

Блокировка

  • iptables -I INPUT -s 45.33.22.11 -j DROP — заблокировать IP
  • iptables -A INPUT -p tcp --dport 25 -j DROP — закрыть SMTP
  • iptables -A INPUT -p tcp --dport 3306 -s 192.168.1.0/24 -j ACCEPT — MySQL только для локальной сети
  • iptables -A INPUT -p tcp --dport 22 -s 0.0.0.0/0 -j DROP — закрыть SSH для всех (если выше есть разрешение)

Проброс портов

ЗадачаКоманды
Внешний порт 8022 → 192.168.1.10:22 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8022 -j DNAT --to-destination 192.168.1.10:22
iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 22 -j ACCEPT
NAT для интернета iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
SNAT (фикс. IP) iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 95.25.14.10
Диапазон портов iptables -t nat -A PREROUTING -p tcp --dport 1000:2000 -j DNAT --to-destination 192.168.1.15
iptables -A FORWARD -d 192.168.1.15 -p tcp --dport 1000:2000 -j ACCEPT
Локальный проброс iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
Важно: Для проброса портов нужно разрешить форвардинг:
sysctl -w net.ipv4.ip_forward=1 и разрешить FORWARD.

Просмотр и удаление правил

КомандаОписание
iptables -L -n -v --line-numbersПоказать все правила с номерами
iptables -t nat -L -n --line-numbersПравила в таблице nat
iptables -D INPUT 5Удалить правило 5 в INPUT
iptables -FОчистить все правила в filter
iptables -t nat -FОчистить nat таблицу
iptables -XУдалить пользовательские цепочки

Расширенные правила

# Несколько портов одной строкой iptables -A INPUT -p tcp -m multiport --dports 20,21,25,80,443,3000:4000 -j ACCEPT # Запретить все кроме подсети iptables -A INPUT -s ! 192.168.1.0/24 -p tcp --dport 3306 -j DROP # Защита SSH от брутфорса iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --name SSH -j DROP # Логирование сброшенных пакетов iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "IPT-DROP: "

Сохранение правил

Debian/Ubuntu

apt install iptables-persistent

netfilter-persistent save

или

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

CentOS/RHEL

yum install iptables-services

systemctl enable iptables

service iptables save

файл: /etc/sysconfig/iptables

Универсальный

iptables-save > /etc/iptables.rules

iptables-restore < /etc/iptables.rules

CentOS / Ubuntu — особенности

CentOS 7+ — вместо iptables используется firewalld:

systemctl stop firewalld

systemctl disable firewalld

systemctl enable iptables

systemctl start iptables

Ubuntu — по умолчанию ufw:

ufw disable

apt install iptables-persistent

Сброс настроек (все разрешить)

iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -F iptables -t nat -F iptables -t mangle -F iptables -X

Эти команды сбрасывают все правила и открывают трафик. Используйте, если заблокировали себя.

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку статей

Посетителей сегодня: 0
о блоге

© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA