Проект «SnakeProject» Михаила Козлова

Навигация
⇒FreeBSD and Nix⇒

⇐CISCO
⇐Voice(Asterisk\Cisco)
⇐Microsoft
⇐Powershell
⇐Python
⇐SQL\T-SQL
⇐1С
⇐Общая
⇐WEB Разработка
⇐ORACLE SQL \ JAVA
⇐Мото

Основы понимания iptables


 

Основы понимания iptables


Очень кратко, с минимумом теории

iptables - утилита, с помощью которой мы управляем правилами сетевого фильтра Netfilter

Netfilter - компонент ядра Linux


Синтаксис iptables:
iptables [-t таблица] команда [критерий] [ -j цель]


Таблица filter имеет 3 основные цепочки INPUT, FORWARD, OUTPUT

Имеются дополнительные 2 таблицы:
nat - применяется при необходимости трансляции адресов и портов
mangle - применяется при необходимости внесения изменений в пакет

Цепочки - наборы правил, которые проверяются последовательно для сетевых пакетов

Политика (действие по умолчанию) применяется, если пакет не подходит ни под одно правило в цепочке
Применяется и в случае отсутствия правил вовсе
Не применяется, если пакет подошел хоть под одно правило цепочки


Основные команды:


Основные критерии:

 

Основные действия:


Логика прохождения и обработки сетевых пакетов в iptables (взято в яндекс картинках)

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------

 


Пересылка пакетов через цепочку FORWARD (пакеты, не предназначенные локальной системе)

Включить возможность пересылки (транзитный трафик, обычно используется для сетевого шлюза):


Примеры работы с iptables (для работы потребуется sudo))

Вывести список действующих правил из всех цепочек:
iptables -L

Вывести список действующих правил из таблицы nat:
iptables -t nat -L

Установить политику по умолчанию таблицы FORWARD отбрасывать все пакеты:
iptables -P FORWARD DROP

Разрешить прохождение входящих пакетов по протоколу tcp на порт назначения 22:
iptables -A INPUT -p tcp --dport=22 -j ACCEPT

Разрешить выход исходящих пакетов по протоколу tcp с порта 22 на интерфейсе eth0:
iptables -A OUTPUT -o eth0 -p TCP --sport 22 -j ACCEPT

Запретим прохождение входящих пакетов по протоколу ICMP:
iptables -A INPUT -p icmp -j DROP


netfilter распознает 4 состояния сетевых пакетов (NEW, ESTABLISHED, RELATED, INVALID)

NEW - пакеты, устанавливающие новое соединение

ESTABLISHED - пакеты, принадлежащие установленному соединению

RELATED - пакеты, не принадлежащие установленному соединению 

Пакеты, являющиеся частью новых соединений, инициированые уже установленным ESTABLISHED соединением
Пример: FTP в активном режиме использует разные соединения для передачи данных, которые являются связанными

INVALID - пакеты, которые не могут быть идентифицированны
Пример: ICMP ошибки не принадлежащие существующим соединениям

Разрешить попадание на наш компьютер только тех TCP и UDP пакетов, которые запрошены локальными приложениями:
iptables -A INPUT -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p UDP -m state --state ESTABLISHED,RELATED -j ACCEPT


Сохранение правил iptables на примере Ubuntu Server 20.04

sudo apt-get install iptables-persistent

 

Сохранить правила iptables:

sudo netfilter-persistent save

 

Восстановить правила iptables:

sudo netfilter-persistent reload

 


Живые примеры простейших конфигураций iptables


Пример 1

Стандартный набор правил для простейшего вебсервера и доступ по SSH

/etc/rules.sh:

Проверяем:
bash -c "/etc/rules.sh"

sudo netfilter-persistent save

Перезагружаемся и проверяем:
sudo shutdown -r now


Пример 2

Стандартный набор правил для простейшего шлюза с двумя сетевыми картами для выхода в интернет

/etc/rules.sh:

Проверяем:
bash -c "/etc/rules.sh"

sudo netfilter-persistent save

Перезагружаемся и проверяем:

sudo shutdown -r now

 


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

© Snakeproject.ru создан в 2013 году. При копировании материала с сайта - оставьте ссылку.


Яндекс.Метрика

Goon Каталог сайтов Рейтинг@Mail.ru