iptables
— это мощный инструмент командной строки в Linux, который используется для настройки правил межсетевого экрана (firewall). Он позволяет управлять трафиком на уровне пакетов и фильтровать входящие, исходящие и проходящие через систему сетевые пакеты. iptables
работает с таблицами правил, которые определяют, как система должна обрабатывать сетевые пакеты.
Таблицы:
filter
: Основная таблица для фильтрации пакетов (по умолчанию).nat
: Используется для изменения адресов пакетов (NAT, SNAT, DNAT).mangle
: Используется для модификации пакетов (например, изменение заголовков).raw
: Используется для маркировки пакетов, чтобы они не обрабатывались системой отслеживания состояния (connection tracking).Цепочки (chains):
INPUT
: Обрабатывает входящие пакеты.OUTPUT
: Обрабатывает исходящие пакеты.FORWARD
: Обрабатывает пакеты, которые проходят через систему (маршрутизация).PREROUTING
: Используется для изменения пакетов до их маршрутизации (обычно в таблице nat
).POSTROUTING
: Используется для изменения пакетов после их маршрутизации (обычно в таблице nat
).Правила:
ACCEPT
, DROP
, REJECT
, LOG
, RETURN
и другие.iptables
iptables -A INPUT -j ACCEPT
-A INPUT
: Добавить правило в цепочку INPUT
.-j ACCEPT
: Разрешить пакеты.iptables -P INPUT DROP
-P INPUT
: Установить политику по умолчанию для цепочки INPUT
.DROP
: Блокировать все пакеты.iptables -A INPUT -p tcp --dport 80 -j ACCEPT
-p tcp
: Указать протокол TCP.--dport 80
: Указать целевой порт (80 для HTTP).-j ACCEPT
: Разрешить пакеты.iptables -A INPUT -s 192.168.1.100 -j DROP
-s 192.168.1.100
: Указать источник (IP-адрес).-j DROP
: Блокировать пакеты.iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
-A OUTPUT
: Добавить правило в цепочку OUTPUT
.--dport 443
: Указать целевой порт (443 для HTTPS).iptables -A INPUT -j LOG --log-prefix "IPTABLES_INPUT: "
LOG
: Логировать пакеты.--log-prefix
: Добавить префикс к логам для удобства анализа.iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.200:8080
-t nat
: Использовать таблицу nat
.PREROUTING
: Цепочка для изменения пакетов до маршрутизации.DNAT
: Изменить целевой адрес пакета.--to-destination
: Новый адрес и порт.iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
-t nat
: Использовать таблицу nat
.POSTROUTING
: Цепочка для изменения пакетов после маршрутизации.-o eth0
: Интерфейс, через который выходит трафик.MASQUERADE
: Автоматически изменять исходящий IP-адрес на адрес интерфейса.iptables -F
-F
: Очистить все правила во всех цепочках.Чтобы правила сохранялись после перезагрузки системы, их нужно сохранить. Например, в Ubuntu:
iptables-save > /etc/iptables/rules.v4
Или восстановить:
iptables-restore < /etc/iptables/rules.v4
Предположим, что мы хотим настроить базовый файрвол для сервера:
# Сбросить все правила
iptables -F
# Разрешить локальный трафик (loopback)
iptables -A INPUT -i lo -j ACCEPT
# Разрешить уже установленные соединения
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# Разрешить SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Разрешить HTTP и HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Блокировать весь остальной трафик
iptables -P INPUT DROP
Что такое IT-GIT?
«IT» — это не просто технологии, а целый мир инноваций и решений, направленных на преодоление сложностей. Мы представляем экспертность в области информационных технологий и широкой технологической экосистемы, стремясь к постоянному развитию и совершенствованию.
«Git» — это отсылка к одной из самых популярных систем контроля версий, которая обеспечивает эффективное сотрудничество, быструю итерацию и надежное управление сложными проектами. Мы стремимся объединить и поделиться опытом и идеями специалистов в сфере технологий, создавая пространство для обмена знаниями.
Инновационные технологии + совместный опыт экспертов в области технологий = путь к успеху!