Това ръководство ще обсъди как да конфигурирате и използвате правилата на 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.
- Следва аргумент -I, използван за вмъкване. Аргументът за вмъкване добавя правило в началото на веригата iptables и по този начин получава по-висок приоритет. За да добавите правило на определен номер във веригата, използвайте аргумента -I, последван от номера, на който трябва да бъде присвоено правилото.
- Аргументът -s помага да се посочи източника. Следователно използваме аргумента -s, последван от IP адреса.
- Параметърът -j с iptables указва скока към определена цел. Тази опция задава действието, което Iptables трябва да извърши, след като има съвпадащ пакет. Iptables предлага четири основни цели по подразбиране, те включват: ACCEPT, DROP, LOG и REJECT.
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 -L3: Таблици 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.
Ето внимателна проверка на командата:
- Първият аргумент (-A) добавя ново правило в края на веригата на таблицата.
- Аргументът INPUT добавя посоченото правило към таблицата.
- Аргументът DROP задава действието, което да се изпълнява съответно като ACCEPT и DROP. Това означава, че след като пакетът съвпадне, той отпада.
- -p определя протокола като TCP и позволява преминаването на трафик по други протоколи.
- -destination-port задава правилото да приема или отпада целия трафик, предназначен за порт 1001.
- -i
казва на iptables да прилагат правилото към трафика, идващ от интерфейса 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 за създаване на правила на защитната стена, които помагат за защитата на вашата система.