iptables

Ubuntu Iptables Как да контролираме мрежовия трафик с помощта на iptables?

Ubuntu Iptables Как да контролираме мрежовия трафик с помощта на iptables?
„... А потребителско пространство Unix помощна програма, която дава на системните администратори възможността да конфигурират правила за филтриране на IP пакети, приложени от модула за нетен филтър на ядрото.” Iptables действат като защитна стена, използвайки правила за филтриране на пакети, базирани на различни критерии като IP адрес, порт и протоколи.

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

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

ЗАБЕЛЕЖКА: За да използвате и конфигурирате iptables, ще ви трябват права на sudo във вашата система. Можете да научите повече за sudo от следващия урок.

След като вече знаете какво е Iptables, нека се потопим направо!

Как да използваме iptables за управление на IPv4 трафик?

За да използвате Iptables за IPv4 мрежа и управление на трафика, трябва да разберете следното:

Командата Iptables

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

ЗАБЕЛЕЖКА: Можете да конфигурирате набор от правила, които управляват конкретно подмножество, известно като iptables вериги.

Параметри на Iptables

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

Помислете за командата по-долу:

sudo iptables -I INPUT -s 192.168.0.24 -j DROP

Командата по-горе казва на iptables да създадат правило във веригата. Правилото изпуска всички пакети от IP адреса 192.168.0.24.

Нека разгледаме командата, ред по ред, за да я разберем по-добре.

Iptables предлага селекция от параметри, които можете да използвате за конфигуриране на различни правила. Различните параметри, които можете да използвате за конфигуриране на правила на iptables, включват:

Параметър на правилото на Iptables Описание
-s -източник Посочете източника, който може да бъде адрес, име на хост или име на мрежа.
-р -протокол Указва протокола за връзка; например TCP, UDP и т.н.
-г-дестинация Посочва местоназначението, което може да бъде адрес, име на мрежа или име на хост.
-j-скок Задава действието, което iptables трябва да извършат след намиране на пакет.
-o -out-интерфейс Задава интерфейса, чрез който iptable изпраща пакета.
-i -in-интерфейс Задава интерфейса, използван за установяване на мрежови пакети.
-c -set-броячи Позволява на администратора да задава броячите на байтове и пакети за определено правило.
-g -goto верига Параметърът посочва, че обработката трябва да продължи в зададената от потребителя верига при връщане.
-f -фрагмент Казва на iptables да прилагат правилото само към втория и следващите фрагменти от фрагментираните пакети.

Опции за Iptables

Командата iptables поддържа широка гама от опции. Някои често срещани включват:

Вариант Описание
-A-добавяне Добавя правило в края на определена верига
-D -изтриване Премахва правило от посочената верига
-F -промиване Премахва всички правила, едно по едно
-L-списък Показва всички правила в посочената верига
-Вмъквам Вмъква правило в посочената верига (подава се като число, когато няма посочен номер; правилото се добавя отгоре)
-C -проверете Заявки за съответствие на правило; изискване в определено правило
-v -вербозен Показва повече подробности, когато се използва с параметъра -L
-N-нова верига Добавя нова дефинирана от потребителя верига
-X-изтриване на верига Премахва конкретна дефинирана от потребителя верига

Iptables Таблици

Ядрото на Linux има таблици по подразбиране, които съдържат набор от свързани правила. Тези таблици по подразбиране имат набор от вериги по подразбиране, но потребителите могат да персонализират правилата, като добавят дефинирани от потребителя правила.

ЗАБЕЛЕЖКА: Таблиците по подразбиране силно зависят от вашата конфигурация на ядрото и инсталираните модули.

Ето таблиците по подразбиране iptables:

1: Филтърни таблици

Филтърната таблица е таблица по подразбиране, която съдържа вериги, използвани за филтриране на мрежови пакети. Някои от веригите по подразбиране в тази таблица включват:

Верига Описание
Вход Iptables използват тази верига за всички входящи пакети в системата, т.е.д., пакети, преминаващи към локални мрежови сокети.
Изход Iptables използват изходната верига за локално генерирани пакети, т.е.д., пакети, излизащи от системата.
Напред Тази верига е това, което Iptables използват за пакети, пренасочени или препратени през системата.

2: NAT таблиците

NAT или Network Address Table е маршрутизиращо устройство, използвано за промяна на източника и целевите IP-адреси в мрежов пакет. Основната употреба на NAT таблицата е свързване на две мрежи в частен адресен диапазон с публичната мрежа.

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

Таблицата NAT се използва, когато пакет инициира нова връзка.

Iptables имат таблица по подразбиране за NAT адресиране. Тази таблица има три основни вериги:

Верига Описание
ПРЕДВАРИТЕЛНО Позволява модифициране на информацията за пакета, преди да пристигне във веригата INPUT, използвана за входящи пакети
ИЗХОД Запазено за пакети, създадени локално, т.е.д., преди да настъпи мрежовото маршрутизиране
ПОСТРОЙКА Позволява модифицирането на изходящи пакети - Пакети, напускащи веригата OUTPUT

Диаграмата по-долу показва общ преглед на този процес на високо ниво.

Използвайте командата по-долу, за да видите вашите таблици за маршрутизиране на NAT.

iptables -t nat -n -v -L

3: Таблици Mangle

Таблицата mangle се използва главно за специална модификация на пакети. С прости думи, той се използва за модифициране на IP заглавията на мрежов пакет. Модификацията на пакетите може да включва промяна на TTL стойност на пакета, промяна на валидни мрежови скокове за пакет и т.н.

Таблицата съдържа следните вериги по подразбиране:

Верига Описание
ПРЕДВАРИТЕЛНО Запазено за входящи пакети
ПОСТРОЙКА Използва се за изходящи пакети
ВХОД Използва се за пакети, идващи директно в сървъра
ИЗХОД Използва се за локални пакети
Напред Запазено за пакети, пренасочени през системата

4: Суровите таблици

Основната цел на суровата таблица е да конфигурира изключения за пакети, които не са предназначени да бъдат обработвани от системата за проследяване. Необработената таблица задава отметка NOTRACK на пакетите, подканвайки функцията conntrack да игнорира пакета.

Conntrack е мрежова функция на ядрото на Linux, която позволява на ядрото на Linux да проследява всички мрежови връзки, позволявайки на ядрото да идентифицира пакети, съставляващи мрежов поток.

Суровата маса има две основни вериги:

Верига Описание
ПРЕДВАРИТЕЛНО Запазено за пакети, получени от мрежови интерфейси
ИЗХОД Запазено за пакети, инициирани от локални процеси

5: Таблицата за сигурност

Основната употреба на тази таблица е настройването на механизма за вътрешно подобряване на защитата за Linux (SELinux), който маркира върху пакетите. Маркът за защита може да се прилага за връзка или пакет.

Той се използва за задължителни правила за контрол на достъпа и е втората таблица, достъпвана след таблицата с филтри. Той предлага следните вериги по подразбиране:

Верига Описание
ВХОД Запазено за входящи пакети в системата
ИЗХОД Използва се за локално създадени пакети
НАПРЕД Използва се за пакети, пренасочени през системата

След като разгледахме Iptables по подразбиране, нека да отидем още една стъпка напред и да обсъдим как да работим с правилата на iptables.

Как да работите с правила на iptables?

Правилата на Iptables се прилагат във възходящ ред. Това означава, че първото правило в определен набор се прилага първо, последвано от второто, после третото и така нататък, докато последното.

Поради тази функция iptables ви пречат да добавяте правила в набор с помощта на параметъра -A; трябва да използвате -I, последвано от номера или като го изпразните, за да добавите в горната част на списъка.

Показване на Iptables

За да видите своите iptables, използвайте командата iptables -L -v за IPv4 и ip6tables -L -v за IPv6.

Вмъкване на правила

За да вмъкнете правила в набор, трябва да ги позиционирате в точния ред, като спазвате правилата, използвани от същата верига. Можете да видите списъка с вашите правила на iptables с командата, както е обсъдено по-горе:

sudo iptables -L -v

Например, за да вмъкнем правило, позволяващо входящи връзки към порт 9001 през TCP, трябва да посочим номера на правилото към веригата INPUT, придържаща се към правилата за трафик в мрежата.

sudo iptables -I INPUT 1 -p TCP --dport 9001 -m състояние - състояние НОВО -j ПРИЕМ

След като разгледате текущите iptables, трябва да видите новото правило в набора.

sudo iptables -L -v

Замяна на правила

Функцията за заместване работи по подобен начин за вмъкване, но използва командата iptables -R. Например, за да модифицираме правилото по-горе и да зададем порт 9001 да откаже, ние:

sudo iptables -R INPUT 1 -p TCP --dport 9001 -m състояние - състояние НОВО -j ОТХВЪРЛЯ

Изтриване на правило

За да изтрием правило, предаваме номера на правилото. Например, за да изтрием правилото по-горе, можем да посочим като:

sudo iptables -D INPUT 1

В повечето дистрибуции на Linux iptables са празни за IPv4 и IPv6. Следователно, ако не сте добавили ново правило, ще получите изход, подобен на показания по-долу. Това е рисковано, защото означава, че системата позволява целия входящ, изходящ и маршрутизиран трафик.

Нека се включим в това как да конфигурираме iptables:

Как да конфигурирам iptables?

Има многобройни начини за конфигуриране на правила на iptables. Този раздел използва примери, за да ви покаже как да задавате правила, използвайки IP адреси и портове.

Блокиране и разрешаване на трафик от пристанища

Можете да използвате определен порт, за да блокирате или разрешите целия трафик в мрежов интерфейс. Обмислете следните примери:

sudo iptables -A INPUT -j ACCEPT -p TCP - destination-port 1001 -i wlan0

Горните команди позволяват трафик на порт 1001 TCP на интерфейса wlan0.

sudo iptables -A INPUT -j DROP -p TCP - destination-port 1001 -i wlan0

Тази команда прави обратното на горната команда, тъй като блокира целия трафик на порт 1001 на wlan0.

Ето внимателна проверка на командата:

ЗАБЕЛЕЖКА: Iptables не разбират псевдоними на мрежовия интерфейс. По този начин в система с повече от един виртуален интерфейс ще трябва да дефинирате адреса на местоназначение ръчно и изрично.

Например:

sudo iptables -A INPUT -j DROP -p TCP - destination-port 1001 -i wlan0 -d 192.168.0.24

Списък с бели и черни списъци с IP адреси

Можете да създавате правила на защитната стена с помощта на iptables. Един пример е чрез спиране на целия трафик и разрешаване на мрежовия трафик само от явни IP адреси.

Пример:

iptables -A INPUT -m състояние - състояние УСТАНОВЕНО, СВЪРЗАНО -j ПРИЕМ
iptables -A INPUT -i lo -m comment --comment "Allow loopback connections" -j ACCEPT
iptables -A INPUT -p icmp -m comment - коментар “Разрешаване на Ping да работи според очакванията” -j

ПРИЕМ

iptables -A INPUT -s 192.168.0.1/24 -j ПРИЕМ
iptables -A INPUT -s 192.168.0.0 -j ПРИЕМ
iptables -P INPUT DROP
iptables -P НАПРЕД ПАДАНЕ

Първият ред задава правило, което позволява всички IP адреси на източника в 192.168.0.1/24 подмрежа. Можете също да използвате CIDR или индивидуални IP адреси. В следващата команда задаваме правилото да разрешава целия трафик, свързан със съществуващи връзки. В последните команди задаваме политика за INPUT и FORWARD, за да отпадне всички.

Използване на iptables на IPv6

Командата Iptables работи само на IPv4. За да използвате iptables на IPv6, трябва да използвате командата ip6tables. Ip6tables използва таблици raw, filter, security и mangle. Общият синтаксис за ip6tables е подобен на iptables и също така поддържа съвпадащи опции на iptables като добавяне, изтриване и т.н.

Помислете за използването на страниците с ръководството за ip6tables за повече информация.

Пример за iptables Rulesets за мрежова сигурност

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

1: Позволете трафика на Loopback интерфейс и отхвърлете всички обратни връзки, идващи от други интерфейси

iptables -A INPUT -i lo -j ACCEPT (Можете също да използвате ip6tables)
iptables -А ВХОД ! -аз е-127.0.0.0 -j ОТХВЪРЛЯНЕ (ip6tables също приложими)

2: Отхвърляне на всички заявки за пинг

iptables -A INPUT -p icmp -m състояние - състояние НОВО - type-type 8 -j ОТХВЪРЛЯ

3: Разрешаване на SSH връзки

iptables -A INPUT -p tcp --dport 22 -m състояние - състояние НОВО -j ПРИЕМ

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

ВНИМАНИЕ: Ако предпочитате да деактивирате IPv6 напълно, уверете се, че коментирате реда, тъй като това ще забави процеса на актуализация:

приоритет :: ffff: 0: 0/96 100 намерен в / etc / gai.конф .

Това е така, защото APT мениджърът на пакети разрешава огледалния домейн в IPv6 поради apt-get update.

Как да разположим правила на iptables?

За да разположите своите iptables на Ubuntu или други базирани на Debian системи, започнете, като създадете два файла, ip4 и ip6, за съответните им IP адреси.

Във всеки файл добавете правилата, които искате да наложите в съответните файлове - IPv4 правила към ip4 файл и IPv6 правила към ip6 файл.

След това трябва да импортираме правилата с помощта на командата:

sudo iptables-възстановяване < /tmp/ip4 (replace filename for IPv6)

След това можете да проверите дали правилата са приложени с помощта на командата:

sudo iptables -L -v

Кратко ръководство, устойчиво на iptables

Ubuntu и разпространените базирани на Debian дистрибуции се предлагат с устойчив пакет iptables, който ви позволява лесно да прилагате правилата на защитната стена при рестартиране. Пакетът предоставя файлове, които можете да използвате за задаване на правила за IPv4 или IPv6 и могат да бъдат приложени автоматично при зареждане.

Можете също да използвате правила на защитната стена, използвайки UFW или GUFW. Обмислете следния урок, за да научите как да използвате UFW.

Как да инсталирам iptables-persistent?

Уверете се, че сте инсталирали iptables-persistent на вашата система. Използвайте dpkg, за да проверите дали имате инсталиран пакета.

Ако не, използвайте следната команда:

sudo apt-get install iptables-persistent

Ще получите подкана два пъти да запазите текущите си правила IPv4 и IPv6. Щракнете върху Да, за да запазите и двете правила.

Щракнете върху да, за да запазите IPv6.

След като инсталацията приключи, проверете дали имате поддиректория iptables, както е показано на изображението по-долу.

Сега можете да използвате правилата.v4 и правила.v6 за добавяне на правила на iptables и те ще се прилагат автоматично от iptables-persistent. Файловете са прости текстови файлове, които можете лесно да редактирате с помощта на всеки текстов редактор по ваш избор.

Заключение

В този урок разгледахме основите на iptables. Започвайки с работа с iptables, основни команди, таблици на iptables по подразбиране и параметри.

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

Как да заснемете и поточно предадете игралната си сесия на Linux
В миналото играта на игри се смяташе само за хоби, но с течение на времето игралната индустрия отбеляза огромен ръст по отношение на технологиите и бр...
Най-добрите игри за игра с ръчно проследяване
Oculus Quest наскоро представи страхотната идея за ръчно проследяване без контролери. С непрекъснато нарастващия брой игри и дейности, които изпълнява...
Как да покажете OSD наслагване в приложения на цял екран за Linux и игри
Играта на цял екран или използване на приложения в режим на цял екран без разсейване може да ви откъсне от съответната системна информация, видима в п...