LINUX-BG Адрес : http://www.linux-bg.org |
Основи на iptables |
От: mystical Публикувана на: 11-12-2010 Адрес на статията: http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=advices&key=430581795 |
Основи на iptables След версия 2.4 на ядрото , GNU/Linux представи изцяло нов софтуер за обработка на пакети, наречен Netfilter. Инструментът, използван за контролиране на Netfilter, iptables, е големият брат на по- старата команда ipchains, използвана в ядрата от версия 2.2. iptables прилага подредени “вериги” от правила за мрежовите пакети. Наборите от вериги съставят “таблици” и се използват за обработка на определени видове трафик. Възможните вериги са INPUT, OUTPUT, FORWARD, PREPOUTING и POSTROUTING, а таблиците са filter, nat, mangle и raw. Таблици и вериги на IPTABLES Всички правила в iptables имат основен синтаксис. Този синтаксис е: iptables [-t таблица] команда верига спецификация-на-правило [опции] Първата част от синтаксиса на iptables е незадължителната опция -t таблица. Подразбиращата се таблица на iptables се нарича “filter”. Веригите от правила в нея се използват за филтриране на пакетите на мрежовия трафик. Таблицата filter съдържа три подразбиращи се вериги – INPUT, FORWARD и OUTPUT. Всеки пакет, който се обработва от ядрото, се пропуска през точно една от тях.
Да помислим по този начин... Ако искам да контролирам трафика между интернет и потребителите, който преминава през рутер, тогава ще трябва да използвам FORWARD веригата, за да филтрирам/управлявам този трафик. Ако искам да огранича тези, които могат да се свържат с моя рутер, ще трябва да използвам INPUT веригата. Ако искам да управлявам главния трафик, ще използвам OUTPUT веригата. Почти не се среща да видите голям управляващ ред в OUTPUT веригата, като повечето от трафика, който се свързва с OUTPUT веригата е управляем или чрез управляващите настройки (например конфигуриращи syslog сървъра) или чрез контролиране на INPUT (без да е нужно да ограничавате echo отговорите, ако просто контролирате, от къде може да допуснем да идват echo заявките). МНОГО Е ВАЖНО да не мислите за тези три вериги, като че ли имат нещо общо с посоката на трафика, както се отнася към мрежата. Много честа грешка е да поставите условие в INPUT веригата, мислейки, че това ще предотврати трафика от интернет от сканирането на компютрите на потребителите. Таблицата „nat” съдържа вериги правила за контрол на Network Address Translation (тук “nat” е името на таблицата на iptables, а “NAT” е името на схемата за превод на мрежови адреси). Тази таблица се взема в предвид само когато пакета, който създава нова връзка е неочаквано срещнат. Таблицата nat се използва за DNAT (Destination NAT), SNAT (Source NAT) и маскиране (masquerade). Тя имплементира веригите:
Таблицата „mangle” съдържа вериги, които модифицират или променят съдържанието на мрежовите пакети извън контекста на NAT и филтрирането на пакети. Тя се използва, когато искате да модифицирате TOS (Type of Service) битове или да поставите върху пакета маркер, който netfilter може да използва за поставяне в опашка и на други неща. Въпреки, че тя е много полезна за специални обработки на пакети, като например промяната на времето на живот на IP пакетите , тя обикновено не се използва в повечето производствени среди.
Команди и Опции на iptables -A (-append) добавяне -Добавяне на правило към края на дадена верига. Тази команда приема като задължителни аргументи име на верига и спецификация на правило iptables -A INPUT -p tcp –dport 23 -j DROP Тази команда добавя условие в края на системата INPUT, която ще донесе всичкия насочен трафик към рутера запомнете за какво е INPUT системата) и е tcp пакета с насоката порт 23 (telnet). -D (-delete) изтриване - Изтриване на правилата от дадена верига. Тази команда приема като задължителни аргументи име на верига и спецификация на правило или номер на правило. iptables -D INPUT 4 Тази команда би изтрила 4-тото правило в INPUT веригата. Правилата са номерирани, започвайки от 1 (не 0). -C (check) проверка - изискват се -s, -d, -p, -i . Тази команда приема като задължителни аргументи име на верига и спецификация на правило. -I (-insert) вмъкване - Вмъкване на правила в зададена верига. Разширение на -А, но спецификацията на правило се поставя пред зададен номер на правило. Тази команда приема като задължителни аргументи име на верига, номер на правило, пред което се вмъква и спецификацията на правило. iptables –insert INPUT 2 -p tcp –dport 22 -j DROP Тази команда вмъква правило във втората позиция на веригата INPUT, която ще изпусне TCP трафика, предопределен за порт 22 (ssh). Правилото ще бъде поставено между предишните правила в позиция 1 и 2 (старото правило номер 2 ще стане номер 3). -R (-replace) заменяне - Заменяне на правило в зададена верига. Комбинация от Insert и Delete. Тази команда приема като задължителни аргументи име на верига, номер на правило и спецификация на правило. Спецификацията замества номера в зададената верига. -F (-flush) изчистване - Изтриване на всички правила в дадена верига или във всички вериги, ако не е зададено име на верига. -L (-list) списък - Извеждане на списък на всички правила в дадена верига или във всички вериги, ако не е зададено име на верига.
-z (-zero) нулиране -
Нулиране на броячите. Нулира броячите
в зададена верига или във всички вериги,
ако не е зададено име на верига. Цели (политики) в iptables Всяко правило, което съставя верига, има клауза “target” (цел), която определя какво се прави с отговарящите й пакети. Когато някой пакет отговаря на дадено правило, съдбата му в повечето случаи е решена окончателно, не се използват допълнителни правила. Въпреки че много цели са дефинирани вътрешно в iptables, все пак се позволява като цел на правило да се подаде друга верига. Целите, налични за използване в правилата на таблицата filter, са ACCEPT, DROP, REJECT, LOG, MIRROR, QUEUE, REDIRECT, RETURN и ULOG. Когато правилото води до използване на
Опции на IPTABLES Тоз пример приема всеки TCP пакет iptables -A INPUT -p tcp -j ACCEPT Този пример приема OSPF (протокол номер 89) iptables -A INPUT -p 89 -j ACCEPT Този трафик изпуска всеки пакет, който не е NOT UDP iptables -A INPUT -p !udp -j DROP -s [!] (–source) адрес - Адрес на източника. Може да приема !, мрежова маска или порт. Адресът 0/0 отговаря на всички адреси и е подразбиращият се, ако не зададете опция -s.
-d [!] (–destination) адрес -
Адрес на получателя, посоката на IP адреса
. Същите критерии както за -s.
-p tcp --sport 0:1023 --dport [!] порт[:порт] - Валидна е само след някоя от опциите -р tcp или -p udp. Подобна е на опцията --sport, но задава порта (портовете) на местоназначението.
-i [!] име - Име на входния интерфейс.
Приема в името на интерфейса наставка
+, която обозначава всички интерфейси
от съответния тип; тоест ррр+ означава
всички РРР интерфейси (ррр0 - рррN). Тази
опция може да се отнася само към входния
интерфейс, така че не може да бъде
използвана във веригите OUTPUT или
POSTROUTING (или във вериги, извикани от тези
вериги).
echo-replay (pong) --mac-source [!]mac-адрес - Валидна само след опцята -m mac. Полезна е във веригите INPUT или PREROUTING. Фрагментът от правилото ще изглежда по следния начин: -m mac --mac-source 00:00:ab:c0:45:a8 --limit скорост - Максималната скорост на съвпаденията (средна стойност). Стойността по подразбиране е 3/hour; всичко под тази скорост се отхвърля. Ако вашата система не може да поддържа повече от една нова конекция за секунда, можете да използвате limit със следния фрагмент от правило -p tcp --syn за да предпазите вашия сървър от претоварване, въпреки че това обикновено се използва с целта LOG, за да предпазите дневниците от прекалено бързо разрастване. Скоростта може да включва период от време( подразбиращата се стойност е /hour) - /minute, /second, /hour или /day. Ето един примерен фрагмент от правило: -m limit --limit 1/sec
--limit-burst брой - Максималният начален
брой пакети, които да съвпадат, преди
да започне използването на предходящото
--limit скорост. Тази стойност се увеличава
с едно всеки път, когато предходящото
условие --limit скорост не е изпълнено.
Подразбиращата се стойност за --limit-burst
е 5. -m multiport -p tcp -- port 25,110
--mark стойност[/маска] - Съвпада с
пакетите с даден маркер (стойност без
знак). Тази стойност трябва да бъде
зададена чрез целта MARK. iptables -F верига iptables -P верига_цел iptables -A верига -i интерфейс -j цел Първият формат (-F) изчиства всички предишни правила от веригата. Вторият формат (-P) настройва подразбиращата се политика (или още цел) за веригата. Препоръчва се използването на DROP за подразбиращата се цел на веригата. Третият формат (-A) добавя текущата спецификация към веригата. Освен ако не се конкретизира таблица с аргумент -t , командите ще са прилагат към таблицата filter. Параметърът -i прилага правило към именуван интерфейс, а -j идентифицира целта.
Подбрал: mystical Изтегли .odt вариант Използвана литература: http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=programs&key=360886781#ss3.1 http://myfreesoft.net/phpBB2/viewtopic.php?t=346 http://mytech.bg/uroci/19/Unix/1396/%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%B8+iptables http://megimg.info/mg/modules/booklists/knigi/Comp/Internet/NAT%20HOWTO.txt << Сигурно електронно банкиране с Firefox и Linux | Маскиране на VPN тунел >> |
Авторите на сайта, както и техните сътрудници запазват авторските права върху собствените си материали публикувани тук,
но те са copyleft т.е. могат свободно да бъдат копирани и разпространявани с изискването изрично да се упоменава името на автора,
както и да се публикува на видно място, че те са взети от оригиналния им URL-адрес на този сървър (http://www.linux-bg.org). Авторските права на преводните материали принадлежат на техните автори. Ако с публикуването тук на някакъв материал неволно са нарушени нечии права - след констатирането на този факт материалът ще бъде свален.
All trademarks, logos and copyrights mentioned on this site are the property of their respective owners.
|