LINUX-BG Адрес : http://www.linux-bg.org |
IPCHAINS-HOWTO BG 1.01 (част 1) |
От: Plamen Popow Публикувана на: 28-01-2000 Адрес на статията: http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=advices&key=316349746 |
Tozi suwet e dobawen sus suglasieto na awtora mu Plamen Popow Originalniata statiq se namira na adres http://www.qsl.net/lz1plp/ Тук можете да видите документа в чист текст. IPCHAINS-HOWTO_BG 1.01 Тук по принцип трябва да има забележки за лиценза и за това, че автора не носи никаква отговорност, но аз ще пропусна това поради ненужност - на който му трябва това, може спокоино да го прочете в оригиналния IPCHAINS-HOWTO. Този документ представлява почити пълен превод на оригиналния. Какво е това ipchains. Linux ipchains това е замяна на ipfwadm (който беше портнат от BSD). За работа с него на вас ви трябва ядро по-голямо от 2.1.102. Защо да се преминава към ipchains? В старите версий на Linux fairwall не работеше с фрагменти на пакетите, имаше 32x битови броячи ( на Intel-процесори), не даваше да се указват типовете на протоколите, различни от TCP, UDP и ICMP, не даваше да се правят големи изменения автоматически, нямаше инверсни правила и беше много тежък за управление. Малко информация. Целия трафик в мрежата се праща във вид на пакети.
В началото на всеки пакет има информация за това от къде идва, тип на пакета
и други подобни детайли. Началото на пакета се нарича заглавие (header),
останалата част на пакета обикновенно се нарича тяло (body).
Защо вообще ни е нужен филтър на пакетите? Управление.
Безопасност.
Хитрост ;-)
Как да се инсталира филтър на пакети?
Как пакетите минават през филтрите.
Последователно описание на всеки стадий.
Входна верига (input) - това е първата верига, с
помоща на която филтъра отсеива пакетите. Ако решението на тази верига
не е "отказ" (REJECT) или "забрана" (DENY), то тогава пакета продължава
своето движение.
Използване на ipchains. Първо проверете каква версия на ipchains имате на
машината си.
Този документ се отнася именно за тази версия на програмата. ipchains има man-документация, но ако ви е неохоимо да разберете повече за пътищата на приминаване на пакетите, вие можете да проверите ръководството за програмиране на интерфейси (man 4 ipfw) или файл net/ipv4/ipfw.c в сорсовете на ядрото, те са достатъчно компетентни по този въпрос ;-). Има няколко различни неща, които могат да е правят с веригите. Първо - това е опериране с цели вериги. Ядрото стартира с три вградени вериги - "входна", "изходна", препращане" (input, output, forward) - тях вие не можете да махнете. По долу е показано какво може да се прави. Създаване на нова верига (-N)
Има няколко начина за манипулиране на правилата вътре в веригата. Добавяне на ново правило към веригата (-A)
Има още няколко операции за маскарадинг. Да се покажат текущите съединения чрез маскарадинг
(-M -L)
В края има команди, които ви позволяват да проверите, какво се е случило с даден пакет, ако той тръгне през указаната верига. Операции с едно правило. Това са основни операции в ipchains - манипулация
с правилата. Обикновенно, вие можете да изпробвате командите добави (-А)
и изтрии (-D) правило. Аналогично и с командите вмъкни (-I) и замени (-R)
- синтаксиса им е практически еднакъв.
# ping -c 1 127.0.0.1
--- 127.0.0.1 ping statistics ---
--- 127.0.0.1 ping statistics ---
Вие виждате, че първия ping мина успешно (опцията "-c 1 казва на ping-а, четрябва да прати само един пакет). След това ние добавихме (-A) във "входната" верига правило, което указва на това, че пакетите 127.0.0.1 (-s 127.0.0.1) с протокол ICMP (-p ICMP) трябва да се забраняват (-j DENY). След това ние проверихме нашето правило, използвайки втория ping. Той малко почака преди да се предаде, очаквайки пакет с отговор, който никога няма да дойде. Не можем да махнем правилото по два начина. Тъй като знаем че имаме само едно правило, ние можем да използваме премахване на правило по номер, ето така: #ipchains -D input 1 Това маха правило номер 1 от изходната верига.
#ipchains -D input -s 127.0.0.1 -p icmp -j DENY Синтаксиса след командата (-D) трябва да съвпада със синтаксиса на командата -A (или -I и -R), с която и беше зададено това правило. Ако има няколко еднакви правила в различни вериги само първото правило ще бъде махнато. Спецификация за филтрите. Ние ще използваме -p за посочим на протокола и -s за посочим на адреса на източника, но има и други опции, които сочат други опции на пакетите. Те ще бъдат описани по-долу. Посочване на ip-адресите на източниците и получателите. ip-адресите на източниците (-s) и на получателите (-d) могат да се посочат по 4-ри начина. Обикновенно тях ги описват с пълните имена, например "localhost" или "linux.org". Втория начин - посочване на пълния ip-адрес, например 127.0.0.1. Третия и четвърти начини дават възможност да се посочват групи от ip адреси, например "62.76.19.0/24" или "62.76.19.0/255.255.255.0". И двата варианта сочат към адрсите от 62.76.19.0 включително до 62.76.19.255. Цифрите след "/" сочат каква част от ip адреса ще бъде значима. По подразбиране се приема "/32" или "/255.255.255.255" (влизат всички ip адреси). За посочване, на които и да е ip адрес е възможно изолзването на "/0", например #ipchains -A input -s 0/0 -j DENY Това ще предизвика същия ефект, както и без използването на -s вообще.
Посочване на инверсия. Много флагове, включвайки -s и -d могат да имат трети аргумент във вида на "!", за изчисление на адресите, които НЕ попадат в посочването. Например под "-s ! localhost" попадат всички пакети, които идват от localhost. Посочване на протокола. Протокола може да бъде посочен с помощана фалага -p. Протокола може да бъде номер (ако вие не знаете значенията на номерата за протокола ip) или едно от следните значения: TCP, UDP или ICMP. Регистъра няма значения, tcp е същото като TCP. Протоколите също така могат да бъдат инвертирани с помоща на "!", например "-s ! TCP" указва на тези протоколи, които не са TCP. Посочване на TCP и UDP портове. Когато са посочени протоколите TCP или UDP е възможен и трети аргумент, който сочи към TCP&UDP портове или тяхен диапазон (включвайки крайните портове). Диапазона се посочва с помоща на символа ":", например "6000:6010" сочи към 11 порта, от 6000 до 6010 включително. Ако долната граница не е посочена то тя се приема за 0. Ако горната граница не е посочена, тя се приема равна на 65535. Например за посочване на TCP съединения идващи от портове по-ниски от 1024, синтаксиса ще бъде следния "-p TCP -s 0.0.0.0/0 :1024". Така също портовете могат да бъдат посочени по име, например www (за превод на численото значение погледнете файла /etc/services). Номерата на портовете също така могат да бъдат инвертирани
с помоща на "!". Например, за посочването, на които и да е TCP пакет освен
WWW пакетите е нужно да се посочи
<< IPCHAINS-HOWTO BG 1.01 (част 2) | Използване на TTF в Linux >> |
Авторите на сайта, както и техните сътрудници запазват авторските права върху собствените си материали публикувани тук,
но те са copyleft т.е. могат свободно да бъдат копирани и разпространявани с изискването изрично да се упоменава името на автора,
както и да се публикува на видно място, че те са взети от оригиналния им URL-адрес на този сървър (http://www.linux-bg.org). Авторските права на преводните материали принадлежат на техните автори. Ако с публикуването тук на някакъв материал неволно са нарушени нечии права - след констатирането на този факт материалът ще бъде свален.
All trademarks, logos and copyrights mentioned on this site are the property of their respective owners.
|