Пакетният филтър е програма, която преглежда заглавните части (header) на преминаващите пакети, и решава съдбата на целия пакет. Той може да реши да отхвърли (DROP) пакета (с други думи, да се държи така, все едно този пакет никога не е пристигал), да приеме (ACCEPT) пакета (т.е, да разреши на пакета да премине), или да извърши друго по-сложно действие.
При Линукс кодът за филтриране на пакети е част от ядрото (като модул, или компилиран директно в ядрото) и можем да правим някои доста сложни неща с пакетите, но основният принцип на предглеждане на заглавната част и решаване на съдбата на целия пакет е все още валиден.
Контрол. Сигурност. Наблюдение.
когато използвате компютър с Линукс за да свържете вашата вътрешна мрежа с някоя друга (например Интернет) вие имате възможност да разрешите само някои конкретни типове трафик, както и да забраните други. Например в заглавната част на пакета се съдържа адреса към който е насочен този пакет (destination), така че можете да спрете всички пакети насочени към определена част от външната мрежа. Ето и друг пример - аз използвам Netscape за да разглеждам архивите Dilbert. На страниците там има реклами от doubleclick.net и Netscape губи моето време и честотна лента като радостно ги зарежда. Казвайки на пакетния филтър да не приема пакети от или за адресите притежавани от doubleclick.net може да решим този проблем (има по-добри начини да се справите с това, виж Junkbuster).
когато вашият компютър с Линукс е единственото нещо между хаосът в Интернет и вашата хубава и подредена мрежа, то добре е да знаете как да ограничите какво може да почука на вашата врата. Например, може да искате да разрешите всичко което излиза навън от вашата мрежа, но се притеснявате от добре известния `Ping на смъртта' идващ от злонамерени външни хора. Или пък не искате някои отвън да има телнет достъп до вашата Линукс машина, въпреки че всички потребители имат пароли. Може би (както повечето хора) вие искате да бъдете само наблюдател в Интернет, а не и сървър (със или без ваше знание). Просто не позволявайте на някой отвън да се свързва с мрежата ви, като накарате вашият пакетен филтър да отказва всички входящи пакети които се опитват да инициират връзка.
понякога лошо конфигурирана машина от локалната мрежа ще реши да изплюе пакети към външния свят. Добре е да кажете на пакетния филтър да ви уведоми в случай, че се случи нещо странно; може би ще можете да направите нещо по въпроса, или пък просто сте си любопитни по природа.
Линукс ядрата имат възможности за филтриране на пакети още от версиите 1.1. Първото поколение, базирано на ipfw от BSD, беше пренесено от Алан Кокс в края на 1994 година. То беше подобрено от Йос Вос (Jos Vos) и други хора във версията на Линукс 2.0; потребителската програма `ipfwadm' контролираше правилата за филтриране в ядрото. В средата на 1998 година, за Линукс 2.2 аз преработих голяма част от кода в ядрото с помощта на Майкъл Нюлинг и създадох потребителската програма `ipchains'. И накрая, друго пренаписване на кода в ядрото и потребителската програма от четвърто пололение `iptables' станаха факт в средата на 1999 година за Линукс 2.4. По-голямата част от това ръководство е концентрирана върху iptables.
Трябва ви ядро с netfilter инфраструктура в него; netfilter е общата основа в Линукс ядрото към която се включват останалите компоненти (като iptables модула например). Това означава, че ви трябва ядро версия 2.3.15 или по-нова. Отговорете с `Y' на CONFIG_NETFILTER при конфигурацията на ядрото.
Програмата iptables
си говори с ядрото и му казва кои
пакети да филтрира. Освен ако не сте програмист, или пък извънаредно
любопитен, то това ще е начин по който ще контролирате филтрирането
на пакети.
Програмата iptables
вмъква и изтрива правила от таблицата за
пакетно филтриране в ядрото. Това означава, че всички настройки които
направите ще бъдат загубени след рестарт; виж
Запазване на правилата след рестарт за обяснение как да
се осигури възстановяването на настройките при следващото зареждане на
Линукс.
iptables
заменя програмите ipfwadm
и
ipchains
: виж
Използване на ipchains и ipfwadm за това как
безболезнено на избегнете употребета на iptables ако вече ползвате
някои от другите инструменти.
Текущата конфигурация на вашата защитна стена (firewall) се пази в ядрото, следователно тя ще се загуби при рестарт. Може да ползвате скриптовете iptables-save и iptables-restore за запазване на конфигурацията във файл и нейното възстановяване.
Друг начин е да сложите необходимите команди за задаване на желаните правила в инициализиращите скриптове. Уверете се, че ще направите нещо интелигентно, в случай че изпълнението на някоя от командите се провали (обикновено `exec /sbin/sulogin').