Ръководството на начинаещия за iptables, защитната стена на Линукс

Съдържание:

Ръководството на начинаещия за iptables, защитната стена на Линукс
Ръководството на начинаещия за iptables, защитната стена на Линукс

Видео: Ръководството на начинаещия за iptables, защитната стена на Линукс

Видео: Ръководството на начинаещия за iptables, защитната стена на Линукс
Видео: Настя и сборник весёлых историй - YouTube 2024, Може
Anonim
Iptables е изключително гъвкава програма за защитна стена, изградена за операционни системи Linux. Независимо дали сте начинаещ оператор на Linux или системен администратор, вероятно има някакъв начин, че iptables може да ви бъде от голяма полза. Прочетете, докато ви показваме как да конфигурирате най-гъвкавата защитна стена на Linux.
Iptables е изключително гъвкава програма за защитна стена, изградена за операционни системи Linux. Независимо дали сте начинаещ оператор на Linux или системен администратор, вероятно има някакъв начин, че iptables може да ви бъде от голяма полза. Прочетете, докато ви показваме как да конфигурирате най-гъвкавата защитна стена на Linux.

Снимка от ezioman.

За iptables

iptables е помощна програма за защитна стена на командния ред, която използва вериги от правила за разрешаване или блокиране на трафика. Когато дадена връзка се опитва да се установи във вашата система, iptables търси правило в своя списък, за да съответства на него. Ако не намери такъв, той прибягва до действието по подразбиране.

iptables почти винаги идва предварително инсталиран на всяко разпределение на Linux. За да го актуализирате / инсталирате, просто изтеглете пакета iptables:

sudo apt-get install iptables

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

Видове вериги

iptables използва три различни вериги: вход, напред и изход.

Вход - Тази верига се използва за управление на поведението на входящите връзки. Например, ако даден потребител се опита да SSH в компютъра / сървъра, iptables ще се опита да съчетае IP адреса и порта с правило във веригата за въвеждане.

напред - Тази верига се използва за входящи връзки, които всъщност не се доставят на място. Помислете за маршрутизатор - данните винаги се изпращат до него, но рядко всъщност са предназначени за самия маршрутизатор; данните се препращат към целта. Освен ако не правите някакъв маршрут, NATing или нещо друго на вашата система, което изисква пренасочване, вие дори няма да използвате тази верига.

Има един сигурен начин да проверите дали вашата система използва / се нуждае от веригата напред.

iptables -L -v

Горното изображение на екрана е на сървър, който работи няколко седмици и няма ограничения за входящи или изходящи връзки. Както можете да видите, входната верига е обработила 11GB пакети и изходната верига е обработена с 17GB. Задната верига, от друга страна, не е трябвало да обработва един пакет. Това е така, защото сървърът не прави каквото и да е пренасочване или се използва като пропускащо устройство.
Горното изображение на екрана е на сървър, който работи няколко седмици и няма ограничения за входящи или изходящи връзки. Както можете да видите, входната верига е обработила 11GB пакети и изходната верига е обработена с 17GB. Задната верига, от друга страна, не е трябвало да обработва един пакет. Това е така, защото сървърът не прави каквото и да е пренасочване или се използва като пропускащо устройство.

продукция - Тази верига се използва за изходящи връзки. Например, ако се опитате да ping howtogeek.com, iptables ще провери изходната си верига, за да види какви са правилата относно ping и howtogeek.com, преди да вземе решение да разреши или отрече опита за свързване.

Предпазливостта

Макар че pinging на външен хост изглежда като нещо, което ще трябва да премине само към изходната верига, имайте предвид, че за връщането на данните ще се използва и входната верига. Когато използвате iptables за заключване на вашата система, не забравяйте, че много протоколи ще изискват двупосочна комуникация, така че и двете входни и изходни вериги ще трябва да бъдат правилно конфигурирани. SSH е общ протокол, който хората забравят да разрешат и на двете вериги.

Поведенческо поведение по веригата на правилата

Преди да влезете и да конфигурирате конкретни правила, ще искате да решите какво искате да бъде по подразбиране поведението на трите вериги. С други думи, какво искате да правите от iptables, ако връзката не съответства на съществуващи правила?

За да видите какви вериги на правилата понастоящем са конфигурирани да правят с несравним трафик, изпълнете

iptables -L

команда.

Както можете да видите, ние също използвахме командата Grep, за да ни даде по-чиста мощност. В тази екранна снимка нашите вериги понастоящем се смятат за приемливи за трафика.
Както можете да видите, ние също използвахме командата Grep, за да ни даде по-чиста мощност. В тази екранна снимка нашите вериги понастоящем се смятат за приемливи за трафика.

Повече пъти, отколкото не, ще искате вашата система да приема връзки по подразбиране. Освен ако вече не сте променили правилата на веригата за правила, тази настройка вече трябва да бъде конфигурирана. Така или иначе, тук е командата за приемане на връзки по подразбиране:

iptables --policy INPUT ACCEPT

iptables --policy OUTPUT ACCEPT

iptables --policy FORWARD ACCEPT

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

Ако предпочитате да откажете всички връзки и ръчно да определите кои от тях искате да позволите да се свържете, трябва да промените политиката по подразбиране на вашите вериги, за да изпуснете. Това може би е полезно само за сървъри, които съдържат чувствителна информация и имат само същите IP адреси, които се свързват с тях.

iptables --policy INPUT DROP

iptables --policy OUTPUT DROP

iptables --policy FORWARD DROP

Отговори, специфични за връзката

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

приемам - Разрешаване на връзката.

Изпускайте - Откачете връзката, действайте така, както никога не се е случвало. Това е най-добре, ако не искате източникът да осъзнае, че вашата система съществува.

Отхвърляне - Не допускайте връзката, но изпратете грешка. Това е най-добре, ако не искате конкретен източник да се свърже с вашата система, но искате да знаят, че вашата защитна стена е блокирана.

Най-добрият начин да покажете разликата между тези три правила е да покажете как изглежда, когато компютърът се опитва да пинг на Linux машина с iptables, конфигурирани за всяка една от тези настройки.

Разрешаване на връзката:

Отказване на връзката:
Отказване на връзката:
Image
Image

Разрешаване или блокиране на конкретни връзки

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

DROP

но можете да ги включите

ACCEPT

или

REJECT

в зависимост от вашите нужди и начина, по който сте конфигурирали веригите си за правила.

Забележка: В тези примери ще използваме

iptables -A

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

iptables -I [chain] [number]

за да посочите номера, който трябва да бъде в списъка.

Връзки от един IP адрес

Този пример показва как да блокирате всички връзки от IP адреса 10.10.10.10.

iptables -A INPUT -s 10.10.10.10 -j DROP

Връзки от обхвата на IP адреси

Този пример показва как да блокирате всички IP адреси в обхвата на мрежата 10.10.10.0/24. Можете да използвате мрежова маска или стандартна наклонена черта, за да определите обхвата на IP адресите.

iptables -A INPUT -s 10.10.10.0/24 -j DROP

или

iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP

Връзки към конкретен порт

Този пример показва как да блокирате SSH връзките от 10.10.10.10.

iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP

Можете да замените "ssh" с всеки протокол или номер на порт. Най-

-p tcp

част от кода казва iptables какъв вид връзка използва протокола. Ако блокирахте протокол, който използва UDP, а не TCP, тогава

-p udp

би било необходимо вместо това.

Този пример показва как да блокирате SSH връзките от всеки IP адрес.

iptables -A INPUT -p tcp --dport ssh -j DROP

Съединяващи държави

Както споменахме по-рано, много протоколи ще изискват двупосочна комуникация. Например, ако искате да позволите SSH връзки към вашата система, входните и изходните вериги ще се нуждаят от добавено към тях правило. Но какво ще стане, ако искате SSH да влезе във вашата система? Няма ли добавяне на правило към изходната верига също да позволи изходящи SSH опити?

Това е мястото, където влизат състоянията на връзката, които ви дават възможност да се позволи двупосочна комуникация, но само да се установят еднопосочни връзки. Обърнете внимание на този пример, където са разрешени SSH връзки ОТ 10.10.10.10, но SSH връзките към 10.10.10.10 не са. Системата обаче може да изпрати обратно информация през SSH, докато сесията вече е установена, което прави възможно SSH комуникацията между тези два хоста.

iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -p tcp --sport 22 -d 10.10.10.10 -m state --state ESTABLISHED -j ACCEPT

Запазване на промените

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

Ubuntu:

sudo /sbin/iptables-save

Red Hat / CentOS:

/sbin/service iptables save

Или

/etc/init.d/iptables save

Други команди

Посочете правилата на iptables, които вече са конфигурирани:

iptables -L

Добавяне на

-v

опция ще ви даде информация за пакети и байтове и добавяне

-n

ще изброи всичко число. С други думи - имената на хостове, протоколите и мрежите са изброени като номера.

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

iptables -F

Препоръчано: