Обновяване на предпочитанията за бисквитки

Управление правилами iptables: просмотр, удаление и создание.

В тази статия ще разгледаме основните команди за управление на защитната стена на сървъра. А именно помощната програма iptables, която ви позволява да контролирате входящия, изходящия и препратения трафик въз основа на определени правила. Тя взаимодейства директно с подсистемата на ядрото Netfilter, която осигурява висока производителност.
Всички следващи команди се изпълняват на VPS под потребителя root. Бъдете внимателни, помощната програма iptables може напълно да ограничи достъпа до сървъра - включително и за вас.

Как да видите текущите правила на iptables

Нека започнем с най-простия - преглед на правилата, зададени с помощта на командата:
iptables -nL --line-numbers
  • -n - деактивира преобразуването на IP в домейн;
  • -L - извежда списък с всички правила по подразбиране, но можете да зададете конкретна верига от правила;
  • --line-numbers - показва номера на реда.
В примера получаваме следния резултат:
20250424_OJU5Kk8z

Нека го разгледаме отблизо.
Виждаме структура от три вериги (Chain): INPUT, FORWARD, OUTPUT. Това са основните вериги, които ще разгледаме в тази статия, но има и други. Освен това можете сами да създавате нови вериги, но тази тема е извън обхвата на нашата статия.
До името на веригата е показана нейната политика (policy). Тя също може да бъде променена.
В блока на всяка верига можем да видим правилата, които ще управляваме. В нашия пример веригите FORWARD и OUTPUT са празни, а INPUT съдържа две правила.

Нека разделим колоните на тази таблица:
КолонаОписание
numНомерът на реда (правилото) във веригата. Удобен за изтриване или вмъкване.
targetДействие - какво да се направи с пакета, ако той отговаря на това правило. Примери: ACCEPTDROPREJECTLOG, потребителско име на веригата.
protПротокол в цифрово обозначение: tcp(6), udp(17), icmp(1), или all(0, всеки).
optОпции, свързани с филтрирането. Обикновено тук е --, освен ако няма нещо специално. Понякога се появяват !, + или други опции, ако се използват допълнителни модули.
sourceИзточник - IP адресът на източника или обхватът му. В примера 1.2.3.4 или 103.21.244.0/22.
destinationДестинация - IP адрес на дестинацията. 0.0.0.0/0 означава "всички адреси".
КоментарИзвеждане на коментари към правилата, ако са добавени с помощта на модула comment (в примера: /* Blocking bad user */).

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

За да забраним достъпа до сървъра от определен IP адрес или, напротив, да забраним връзката от сървъра към определен адрес, добавяме правило към съответната верига на iptables. Например, нека забраним връзката към нашия сървър за потребител с IP адрес 1.2.3.4. Командата ще изглежда така:
iptables -I INPUT -s 1.2.3.4 -j DROP
  • -I - добавя правилото в началото на веригата [chain_name];
  • -s - IP адрес или обхват на източника;
  • -j - действието, което трябва да се извърши с пакета (ACCEPTDROPREJECT и др.).
Нека видим какво получихме:
20250424_TdT6anqc
Виждаме, че нашето правило е успешно добавено в началото на веригата INPUT. Може би сте забелязали също, че не сме посочили изрично протокола в нашето правило и колоната prot показва 0, което означава, че нашето блокиране ще бъде валидно за всеки протокол. Важно е да запомните, че iptables "изпълнява" правилата отгоре надолу.

Как да премахнете правило от верига на iptables

За да изтрием правило, трябва да знаем неговия номер. Тъй като преди това сме извели всички правила с показани номера на редове, вече знаем номера на правилото и можем да използваме командата:
iptables -D [chain_name] [rule_number]Например, нека премахнем правило № 2 от веригата INPUT:
iptables -D INPUT 2Резултат:
20250425_gJg6O7Fd
Това е най-лесният начин за премахване на правило от iptables, но има и друг начин.
Можем да премахнем правило, като посочим самото правило, а не номера му. За нашия пример командата ще бъде следната:
iptables -D INPUT -s 103.21.244.0/22 -p tcp -j ACCEPTПолучава се един и същ резултат:
20250425_gs7Pwban

Как да изчистите цялата верига на iptables

За да премахнете всички правила от веригата наведнъж, можете да използвате командата:
iptables -F [имя_цепочки]Да опитаме:
iptables -F INPUTНека получим резултата:
20250425_9AjE6XIb

Бъдете внимателни, защото ако не посочите верига след ключа -F, ще премахнете всички правила от всички вериги на iptables:
20250425_tgRhWywE
Изчистването на всички правила в дадена верига може да доведе до хаос, ако не сте взели предвид политиката по подразбиране за избраната верига.

Как да промените политиката по подразбиране за вериги в iptables

Политиката по подразбиране (policy) е действието, което ще бъде предприето по отношение на всички пакети, които съответстват на веригата, но не са обект на нито едно правило във веригата. За да промените политиката по подразбиране за дадена верига на iptables, използвайте командата:
iptables -P [chain_name] [policy]In the example, change the policy to DROP on the FORWARD chain with the command:
iptables -P FORWARD DROPНека получим това:
20250425_gkJ03gwC

Възможни политики по подразбиране:

ПолитикаКакво прави
ACCEPTПакетът е разрешен (пропуснат)
DROPПакетът се изпуска (безшумно)
REJECTПакетът е отхвърлен (с уведомление)

Запазване и възстановяване на правила на iptables

След като сме направили всички необходими промени в настройките на защитната стена, нека ги запишем във файл с помощта на командата:
iptables-save > ~/iptables_backup.txtТази команда ще запише всички правила на iptables във файла iptables_backup.txt в домашната директория на потребителя:
20250425_TPX4j4ZY

За да импортираме правилата от файла iptables_backup.txt в iptables, ще използваме една проста команда:
iptables-restore < ~/iptables_backup.txtРезултатът е следният:
20250425_JygFu2RE
Виждаме, че първоначално празният iptables е запълнен с правила от нашия файл iptables_backup.txt. Бъдете внимателни, защото тази команда ще презапише съществуващите правила на iptables и също така ще промени политиките по подразбиране.

Покрихме основните ключове при работа с iptables. Бъдете внимателни и изключително внимателни, когато работите със защитна стена на сървър. Направете копие на текущите настройки с iptables-save и проверете политиката по подразбиране на веригата, с която работите. В случай на неуспех не забравяйте - няма нерешими проблеми. Винаги можете да се свържете с техническата поддръжка.
25 Apr 2025, 00:10:01