Netfilter и IPTABLES в принципите на работа, Linux, Netfilter конфигурация, stepanoff домашна мрежа


Тази статия описва:

  • Предварителни условия за ползване Netfilter
  • основни понятия (маси, вериги и правила) и пътя на пакета
  • Свързва проследяване
  • инструмент за управление на веригата на IPTABLES
  • действие (цел)
  • модели (мач)
  • комунални IPTABLES-спаси и IPTABLES-възстановяване
  • в Red Hat Linux услуга
  • примери и съвети

трябва да имате ядро ​​2.3.15 или по-нова на работа Netfilter,
в генерирането която включва CONFIG_NETFILTER, CONFIG_IP_NF_IPTABLES, CONFIG_IP_NF_FILTER (Таблица филтър), CONFIG_IP_NF_NAT (NAT маса), CONFIG_BRIDGE_NETFILTER, както и множество допълнителни модули: CONFIG_IP_NF_CONNTRACK (проследяване връзки), CONFIG_IP_NF_FTP (допълнителен модул за проследяване FTP връзки), CONFIG_IP_NF_MATCH_ * (допълнителни видове шаблони пакети за съответствие: LIMIT, MAC, MARK, многопортовите, TOS, TCPMSS, държава, нечист, собственик), CONFIG_IP_NF_TARGET_ * (допълнителни действия в правилата: брак, маскарад, пренасочват LOG, TCPMSS), CONFIG_IP_NF_COMPAT_IPCHAINS за съвместимост с други CONFIG_IP_NF_ * и CONFIG_IP6_NF_ * .Polezno посочите CONFIG_PACKET.

Присъствието в ядрото на Netfilter се определя от файл / PROC / нето / ip_tables_names (списък на таблици, използвани), / PROC / нето / ip_tables_targets (2.6) и / PROC / нето / ip_tables_matches (2.6).

Се контролира от IPTABLES комунални услуги.

Netfilter функционалност може да се разшири от основните модули. Ръководител модул ядро, наречено iptable_filter, полезност подкрепа модула, наречени IPTABLES ip_tables, помощни модули обикновено имат префикс "ipt_" (ipt_state, ipt_REJECT, ipt_LOG, макар - ip_conntrack). Повечето от модулите зареден автомагически, но все още трябва да изтеглите ръчно (ip_conntrack_ftp - в противен случай може да не работи в активен режим; ip_conntrack_irc - в противен случай може да не работи за DCC файл изпращане; ip_nat_ftp; ip_nat_irc).

ядро допълнителни модули се контролира от споделената библиотека (вж. / ИЪ / IPTABLES /) за IPTABLES комунални услуги. Netfilter да подражава ipfwadm и грсНата чрез модули на ядрото (от известно време вече не бъдат включени в стандартното ядро), модулът трябва ip_tables
разтоварят.

Маси, вериги, пакет песен

Приблизителна схема пакетна обработка (взет от NAG2, по мое мнение, в името на красотата
снимки на художника дарени на истината: няма по маршрута на втория маршрутизация точки на Localhost, тя не минава през напред):

Маси NAT и маш PREROUTING верига и са POSTROUTING.Pravila PREROUTING верига се прилага за пакети веднага след получаване на пакета на входа интерфейс за избор на маршрут, както и правила POSTROUTING верига непосредствено преди оттеглянето на пакета чрез интерфейса. В NAT таблицата не разполага с вериги INPUT и FORWARD.

Действителната последователност на обработване на входящите пакети, предназначени за местен процес е както следва:

  1. Оценка PREROUTING верига маш маса (използван за трансформация пакет), има случва съединения проследяване
  2. погледна през веригата PREROUTING NAT маса (използван за DNAT,
    филтър не е необходимо)
  3. Routing: ако опаковката трябва да бъде насочена навън, след това преминете към обработката на преминаване на пакета
  4. погледна през INPUT веригата на масата за маш
  5. изглеждаше чрез маса филтър INPUT верига

действителната пакет за обработка на последователност, заминаващи от нашия домакин, както следва:

действителната обработка на последователност предава пакет (претенция 3 на първата процедура):

  1. погледна през масата НАПРЕД маш на веригата
  2. погледна през НАПРЕД маса филтър верига
  3. пренасочване, както Таблица вал, пакет може да се променя;
    ако пакетът се насочва към вътрешността, а след това отидете на първата процедура (н. 1 или 4?)
  4. погледна през масата POSTROUTING маш на веригата
  5. погледна през масата за POSTROUTING верига NAT (използван за SNAT и маскиране, че не е необходимо да се филтрира тук)

Netfilter парчета връзки чрез ip_conntrack модул (параметър hashsize определяне размера на хеш) и protokolozavisimyh модули (ICMP, TCP, FTP, TFTP, IRC, Аманда, SCTP) във веригата на обработка PREROUTING NAT маса (за локално генерирани пакети по време на обработката ИЗХОД верига) и да ги съхранява в специална таблица. В този случай, всички пакети непременно defragmented. Съединенията се отстраняват от масата на изтичането на интервала на сън в отсъствието на следващия пакет. При разтоварване модул (cm. IPTABLES_MODULES_UNLOAD в / и т.н. / sysconfig / IPTABLES-конфигурационния) маса връзка се изчиства. Гледан пакет може да бъде по отношение на конфигурация (в състояние маса ядро) в една от четирите страни спрямо предварително проследяват съединения:

  • NEW (наблюдавани първи пакет в съединение, обикновено един пакет с SYN флаг, но може да бъде без: премахването на масата при изтичането на периода на изчакване преди осъществяване на връзката или балансиране на натоварването между няколко защитни стени, но въпреки това, виж по-долу / Proc /. сис / нето / IPv4 / Netfilter / ip_conntrack_tcp_loose)
  • СЪЗДАДЕНА (след приемане на пакет отговор съединение във влиза в този щат от държавата NEW или свързани с тях; по-специално, на втория пакет при установяването на TCP-връзки (SYN / ACK) вече е в установения държавен, за ICMP: Ехо, час и дата, Информация, Адрес маска; [ICMP отговори също могат да имат това състояние, ако те са резултат от пакета, изпратен ни?])
  • ПОДОБНИ (Съединение генерирано съединение може да УСТАНОВЕНО, например, данни за предаване на FTP, генерирани от контрол FTP съединение или DCC за IRC или съобщение за грешка ICMP на; изисква protokolozavisimy модул)
  • НЕВАЛИДЕН (пакет не успя да се класифицира, например, ICMP отговор на несъществуваща пакет, тези пакети се препоръчва да се изхвърля)

Максималният възможен брой наблюдавани съединения е дадена в файл / Proc / сис / нето / IPv4 / ip_conntrack_max (всяко съединение заема 350 байта памет не-превантивна). Набор от кръпки TCP-прозорец проследяване на ядрото 2.4 (включена в ядрото 2.6) дава възможност за задаване на стойност по подразбиране за спящия интервал при изтриване на записи за свързване на таблици за различните ситуации в / ргос / сис / нето / ipv4 / Netfilter / ip_conntrack _ * _ изчакване * (в секунди). Трябваше да запише 600 в ip_conntrack_tcp_timeout_close [_wait] цялата верига за доставка, или до края на връзката удара (FIN / ACK от клиента или подвижен от сървъра), част от крайната опаковка е все още "отрязани" (клиента затваря полузатворен контакта само когато това се изисква следните съединения, влизане връзка на conntrack маса е била отстранена, както и да се увеличат ip_conntrack_tcp_timeout_close дни не искат да). Също така ви позволява да "биче" поведението на държавната машина от променливите (/ ргос / сис / нето / ipv4 / Netfilter /):

  • ip_conntrack_tcp_be_liberal
    1. всички пакети, които не се побират в прозореца се счита за невалидна
    2. само RST пакети, които не се побират в прозореца се счита за невалидна (беше сложил)
  • ip_conntrack_log_invalid (продукция в невалиден пакети вестник)
  • ip_conntrack_tcp_loose (с "пикап" вече е инсталиран
    връзка като пакети, необходими и в двете посоки, за да потвърдите, ако 0, установената връзка не се поемат изобщо; подразбиране - 3)
  • ip_conntrack_max_retrans (брой повтаря без потвърждение АСК пакет, който е необходим за отстраняване на съединението от масата след допълнителна
    очакванията ip_conntrack_timeout_max_retrans секунди; подразбиране - 3)

Таблица на текущите връзки могат да бъдат открити в файл / ргос / нето / ip_conntrack

управление на веригата се извършва с помощта на програмата IPTABLES.

След зареждане дефинирана верига (всички политика ACCEPT) INPUT, напред и изход в таблицата филтър; PREROUTING, POSTROUTING и изход в Таблица NAT;
PREROUTING, INPUT, НАПРЕД, OUTPUT и POSTROUTING маса маш. Не може да бъде изтрита. Формат на командата:

  • -proto [колона] | -p [! ] протокол
    (Можете да укажете името на протокола (виж / и т.н. / протоколи) или номера на протокола ;. ALL име протокол означава, TCP или UDP или ICMP)
  • -Източник | -s | -SRC [! ] Адрес [/ маска]
    (Маска може да се запише като 4 десетична система, и продължителност на уточняване мрежа маска)
  • -destination | -d | -dst [! ] Адрес [/ маска]
  • -в-интерфейс | -i [! ] Наименование [+] (име входящ интерфейс;
    например, ppp0 ето, eth0; шаблон "+" - съвпада с всеки низ; може да се използва само с вериги INPUT, НАПРЕД и PREROUTING)
  • напускане интерфейс | -о [! ] Наименование [+] (името на изходния интерфейс;
    например, ppp0 ето, eth0; шаблон "+" - съвпада с всеки низ; може да се използва само с вериги OUTPUT, НАПРЕД и POSTROUTING)
  • [! ] -fragment | -f (само за следващите части на фрагментирани пакети, като се използват съединенията с проследяване на всички пакети
    defragmented когато NAT PREROUTING обработка маса верига)
  • -match | -mimya разширения модул (TCP модули, UDP и ICMP
    задвижване имплицитно, използвайки шаблон -протокол)

Разширителен модул Параметри TCP

  • -Източник-порт [! ] [Порт [: порт]]
    (Можете да използвате номера на портове, или имена на услуги от / и т.н. / услуги; ако се пропусне първия интервал на пристанището, се приема, 0, ако се пропусне последния диапазона порт, това означава, 65535)
  • -destination-порт [! ] [Порт [: порт]]
  • -tcp-флагове [! ] маска знамена задължителни знамена
    (Маска флагове - разделени със запетая списък на сканирани флагове (SYN, ACK, FIN, RST, URG, PSH, ALL, няма); свързващи флагове - разделени със запетая списък на флагове, които са определени в DB пакет, а останалите флагове измежду Проверих трябва да се нулира)
  • [! ]-Син | -у (пакети с флага SYN, еквивалентни документи "-tcp-флагове SYN, RST, ACK SYN"; отказ предоставя съвпада пакети без SYN и ACK флагове едновременно)
  • [! ] Опция -tcp-вариант-номер

Разширителен модул Параметри UDP

Разширителен модул Параметри ICMP

  • -icmp тип [! ] Тип съобщения [/ код]
    (Можете да използвате имената броя или вида и кодовете: 8, 8/0, мрежово-пренасочват;
    за да получите списък с валидни имена, изпълнете следната команда: IPTABLES -p ICMP -help)

Параметри на Mac на разширител

разширителен модул параметри марки

  • -Марк [! ] Номер (пакет маркер (неподписан число) е разположен действие МАРК, само в рамките на даден гостоприемник)

Разширителен модул Параметри лимит (защита срещу DoS атаки или ограничаване на записи в дневника; модела на спукан кофа: кофата, даден от обема и скоростта на неговото самостоятелно изпразване, модел, съответстващ на опаковката е поставен в кофа)

  • [! ] Ограничен парчета / единица време (скорост определя самостоятелно изпразване кофи; валиден единица време: втори, минута, час, ден)
  • Ограничен-спука парчета (определя обем на кофата)

Разширителен модул Параметри мултипорт (списък на пристанищата, до 15 порта)

  • списък -Източник-порт, порт, чрез запетая
  • списък -destination-порт, порт, чрез запетая
  • -port списък на пристанищата, чрез запетая (от едно пристанище със същия брой)

Параметри на дължината на разширяване модул (дължина пакет)

Разширителен модул Параметри собственик (само във веригата на изхода, не винаги работи)

Разширителен модул Параметри pkttype

Параметри на състоянието на разширение модул (статус на връзката съгласно conntrack):

Разширителен модул Параметри conntrack (разширителен модул разполага състояние):

Разширителен модул Параметри помощник (модул за проследяване protokolozavisimy
съединения):

Разширителен модул Параметри TOS (също достъпен DSCP, ECN модул)

  • -tos [! ] Вид услуга (Normal-Service, Минимизиране цена,
    Увеличете-надеждност, да се осигурят максимални пропускателна Минимизиране-Delay; това е просто името!)

Разширителен модул Параметри tcpmss (Максимална Сегмент Размер в TCP, само
SYN пакети или SYN / ACK)

Параметри на TTL разширителния модул

нечист модул разширение все още няма параметри. Тя ви позволява да улови "грешния" пакети.

разширителен модул параметри ах (IPSec, трябва да посочите и протокол № 51)

разширителен модул параметри ESP (IPSec, трябва да се определят и протокол номер 50)

<Утилиты iptables-save и iptables-restore

Внимателно изработени и добре изградена верига трябва да се поддържа с помощта на IPTABLES-Save полезност. отпечатъци върху стандартния изход, параметри:

  • -в (брояч продукция)
  • -т маса име (само за показване на определен таблицата)

Преди спаси верига могат да бъдат заредени в ядрото, като използвате помощната
IPTABLES-възстановяване (четат от стандартния вход, по подразбиране нулиране на възстановяване на маса, параметри):

  • -в (възстановяване броячи)
  • -п (да не се възстановяват на възстановяване на маса)

Обслужване на Red Hat Linux

В Red Hat Linux дистрибуции достъпно IPTABLES услуга (управлявана от конвенционалната chkconfig и сервиз) в /etc/rc.d/init.d с функции:

Когато настроите правилата за отдалечения хост се препоръчва да напусне самият път
отстъпление, например, преди да направи промени за увеличаване на кронтаб линия, връща настройките обратно, ако нещо се обърка (IPTABLES / sbin / услуга спират).

Често използваните правила трябва да са в началото на веригата. За по-нататъшно оптимизиране на веригата е разделен на поднизове (например, чрез протокол).

Пример за определяне на работна станция или малък вътрешен сървър:

[...] на Netfilter и IPtables за Linux: принципи на функциониране, Netfilter, на [...]

[...] на Netfilter и IPtables за Linux: принципи на функциониране, Netfilter, на [...]