Как да използвате iptables за филтриране на пакети в Linux

Съдържание

В този урок ще говорим за iptables, защитната стена или защитната стена, които имаме в Linux. Този инструмент ще ни позволи да филтрираме пакети (с които ще се занимаваме с урока), да генерираме запис на дневник, да извършим NAT преводи.

Благодарение на iptables можем да генерираме правила за филтриране на пакети доста просто, въпреки че при първото му използване може да изглежда малко объркващо, ще видите, че когато го използвате за няколко дни, няма никакви усложнения.

Използването на този инструмент изисква високи привилегии, тоест ще трябва да сме суперпотребители, за да го стартираме. Имаме много функции в iptables, целта на урока е да видим приближение на използването му чрез примери. Важно е, след като завършите урока, да продължите да копаете, тъй като е много полезно.

След това напускаме официалния уебсайт, в случай че представлява интерес:

ЗабележкаЗа IPv6 имаме ip6tables.

Ако искаме да видим информация за iptables, ще изпълним следното в терминал:

 човек iptables
Ще видим следната информация:

На изображението можете да видите част от информацията, предоставена от командата, за да видите цялата, превъртете надолу в терминала. Както видяхме в началото на урока, една от задачите, които iptables ще ни позволи, е да създадем правила или филтри, за да знаем какво да правим с пакетите, чиято машина е източник / местоназначение. За тази задача ще ни е интересно да знаем защо използваме следните понятия:

Табла
Iptables има няколко таблици, но за нашия урок ние се фокусираме само върху филтърна маса, който отговаря за филтрирането, се използва по подразбиране в iptables.

Вериги
Низовете, които ще поставя тук, са тези, които принадлежат към таблицата, коментирана преди това.

  • Вход: Пакети, предназначени за нашата машина.
  • Изход: Пакети, които произхождат от нашата система.
  • Напред: Пакети, които преминават през нашата машина, за да бъдат насочени към друга.

Правила
Ще посочим 2, които ще се използват в урока, но има още.

  • Приемам: Пакетите се приемат.
  • Изпускайте: Пакетите се изхвърлят.

Параметри
Някои от параметрите, които можем да използваме, са следните.

  • -Правило: За да добавите правило
  • -D правило: За да изтриете посоченото от нас правило.
  • : Позволява ни да изброим правилата.
  • -F: Изтрийте всички съществуващи правила.
  • -j цел: Задайте тип правило (Приемете, Отпуснете).
  • -t маса: Той ще посочи използваната таблица (по подразбиране филтърна таблица).
  • -p протокол: Използва се за обозначаване на протокола.
  • -i интерфейс: Установяваме интерфейса за правилото.
  • : За да посочите произхода.
  • : За да посочите дестинацията.
  • : Показва помощ.

Има много повече, каквито могат да бъдат -дестинация-порт или --source-port. За да видите всички от тях, можете да изпълните командата, която обсъдихме по -горе:

 човек iptables
Или можете също да стартирате:
 iptables -h
ЗабележкаТрябва да разгледате внимателно опциите, предлагани от инструмента, тъй като той прави разлика между малки и главни букви и можем да направим грешка (няма да е същото -стр че ).

Нека започнем с примерите, ще бъдат поставени общо 10, така че ще бъде по -добре разбрано и можем да видим как iptables работи в режим на защитна стена. В примерите няма да видите sudo, няма да е необходимо, ако сте като root, в противен случай ще трябва да добавите думата sudo в началото на всеки пример.

1. Забранете заминаването до всяка дестинацияКато начало ще дадем лесен пример, не напускайте никъде изхода.

 iptables -A ИЗХОД -j DROP
Това е много лесно, както виждате, следващото е още по -лесно.

2. Изчистете всички правилаПродължаваме с много прост пример, оставяме нашите iptables без правила, за това ще изпълним:

 iptables -F
Е, нека усложним още малко в следващия.

3. Забранете заминаването през пристанище 80Сега ние се грижим за затваряне на изхода през определен порт, в този случай той е 80, следователно няма да имаме сърфиране в мрежата чрез http протокола (ако отидем до https страница, можем да се придвижваме, въпреки че бихме могли да направим същото като 80).

 iptables -A ИЗХОД -p tcp -дестинация -порт 80 -j DROP
ЗабележкаКогато използваме порт на местоназначение или източник, ще трябва да поставим параметъра -p, за да посочим протокола.

Преминаваме към четвъртия пример.
4. Забранете навигацията към страницаПо този повод се интересуваме да забраним достъпа до X страница от нашата система, нека си представим, че тази страница е solutiontic.com, за това откриваме нейния IP, много лесно, като изпълним пинг, ще го получим.

И сега ще изпълним:

 iptables -A ИЗХОД -d 178.33.118.246 -j DROP
Както виждаме, достатъчно е да посочите вашия IP след параметъра .

5. Избройте съществуващите правилаТози пример ще се опита да изброи правилата за филтриране, които в момента сме дефинирали:

 iptables -L
Виждаме изображение, имаме само две дефинирани правила, както виждаме по -долу:

Нека преминем към шестия пример, в който отново ще използваме списъка с правила.

6. Изтрийте конкретно правилоТук, като започнем от правилата, които имахме в предишния пример, ще изтрием едно от правилата за излизане, в този случай първото, което се появи, изпълняваме следното:

 iptables -D ИЗХОД 1
И за да проверим дали е ефективно изтрит, използваме пример 5:

Нека продължим с още.

7. Избягвайте да получавате пингНе искаме те да ни пингват, за това ще блокираме входа за протокола ICMP.

 iptables -A INPUT -p ICMP -j DROP
По -долу оставям изображение на пинг преди изпълнение на горната команда и след:

Можем да видим, че нашата машина не отговаря, защото отхвърля ICMP пакети. Ако блокираме изхода вместо входа, ще изпълним:

 iptables -A ИЗХОД -p ICMP -j DROP
Същото като на предишното изображение ще се случи отново. За да тествам, направих 3 пъти ping, ако изпълним можем да видим броя на пакетите:
 iptables -L -v

Виждаме, че ефективно поставя 3 в предишното изображение.

8. Предотвратете IP да ни изпраща данниЩе приложим входен, не искаме определен IP да ни свърже, затова ще изпълним:

 iptables -A INPUT -s 192.168.66.1 -j DROP
Нека разгледаме малко по -дълъг пример.

9. Разрешете изходи към редица IP адресиПредставете си, че искате да приемате само изходи за редица IP адреси, но да отхвърлите останалите изходи, трябва да изпълним:

 Iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT Iptables -A OUTPUT -j DROP
ЗабележкаРедът на изпълнение на правилата има значение, опитайте този пример с мрежата, която искате да разрешите, и направете връзка, ще видите, че тя работи, след това изтрийте всички правила и изпълнете 2 -те изречения обратно, сега ще отхвърли връзките .

Нека преминем към десетия и последен пример.

10. Отворете порт 143 (imap)Ще отворим порт за въвеждане на всички tcp пакети, в този случай 143 (би било същото за останалите).

 iptables -A INPUT -m състояние -state НОВ -p tcp --dport 143 -j ACCEPT
В този пример искахме да използваме --dport, така че можете да видите, че можем да използваме това или -дестинация-порт, също бихме могли да използваме -спорт вместо --source-port.

Урокът завършва тук, сега се опитвате да приложите други правила, колкото повече практикувате, толкова по -бързо ще имате, когато прилагате правила, и толкова по -малко ще ви струва. За да завършим, оставяме урок, който може да ви интересува, отваряне и затваряне на портове в Windows 10.

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave