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 и другие.iptablesiptables -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» — это отсылка к одной из самых популярных систем контроля версий, которая обеспечивает эффективное сотрудничество, быструю итерацию и надежное управление сложными проектами. Мы стремимся объединить и поделиться опытом и идеями специалистов в сфере технологий, создавая пространство для обмена знаниями.
Инновационные технологии + совместный опыт экспертов в области технологий = путь к успеху!