Знания Прости инструкции за работа с услугата Profitserver
основен Знания Конфигуриране на защитна стена на Linux

Конфигуриране на защитна стена на Linux


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

В тази статия ще разгледаме два основни инструмента за конфигуриране на защитната стена на Linux: firewalld и iptables. Ще проведем сравнителен анализ на техните характеристики, функционалност и предимства. Освен това ще предоставим подробни инструкции за настройване и използване на всеки от тези инструменти, както и ще обсъдим най-добрите практики за защита на вашата система със защитна стена на Linux платформа. Всички действия ще бъдат демонстрирани на виртуален сървър с root достъп.

Конфигуриране на защитна стена на Linux

Firewalld (Firewall Daemon) е програма за управление на защитната стена (firewall) в операционни системи Linux. Тя предоставя потребителски интерфейс за конфигуриране на правила за защитната стена, разрешаване или блокиране на връзки на мрежови приложения. Предварително е инсталирана по подразбиране в повечето сървърни дистрибуции. Ако Firewalld не е предварително инсталирана, тя може да бъде инсталирана независимо от официалните хранилища на дистрибуцията.

За Red Hat системи (като RHEL, CentOS, Fedora) инсталацията се извършва с командата:

yum install firewalld

За Debian/Ubuntu:

apt-get install firewalld

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

systemctl start firewalld

След това трябва да добавите услугата към стартиране:

systemctl enable firewalld
Добавяне на защитна стена в автоматично зареждане на Linux

На този етап препоръчваме да деактивирате ufw, тъй като не се препоръчва едновременното използване на този инструмент с firewalld или iptables. Проверете състоянието:

systemctl status ufw
Проверка на ufw linux

За да го спрете, въведете командата:

systemctl stop ufw

За пълно деактивиране:

ufw disable

След тези действия можете да продължите да конфигурирате защитната стена.

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

firewall-cmd --get-zones

Обикновено се използват 4 основни зони:

  1. Обществен: Тази зона е за мрежи, които смятате за опасни;
  2. частен: Отнася се за домашни мрежи или други надеждни мрежови връзки;
  3. вътрешен: Използва се за вътрешни мрежи, като тези в рамките на организация или корпоративна мрежа;
  4. DMZ: Тази зона е мястото, където обикновено се поставят сървъри, които трябва да са достъпни от интернет.

Това обаче е само един пример. Можете да добавите своя собствена зона с помощта на командата:

firewall-cmd --permanent --new-zone=nameyourzone

След добавяне е необходимо презареждане:

firewall-cmd --reload

За изтриване на зона се използва подобен метод

firewall-cmd --permanent --delete-zone=nameyourzone

След дефиниране на зони е необходимо да се разреши трафик за необходимите услуги и портове. За да разрешите определена услуга, използвайте командата:

firewall-cmd --zone=public --add-service=name

Където „име“ е името на услугата. Например, за да разрешите трафик за Apache:

firewall-cmd --zone=public --add-service=http

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

firewall-cmd --zone=public --add-port=number/protocol

Например стандартният 22 порт за SSH ще изглежда така:

firewall-cmd --zone=public --add-port=22/tcp

На този етап основните правила вече са създадени. След това определете как ще се обработва трафикът в зависимост от източника, местоназначението, порта и други критерии. За да добавите правило (използвайки публичната зона като пример):

firewall-cmd --zone=public rule

Например, за да разрешите входящ трафик от всеки източник към порт 80 (HTTP):

firewall-cmd --zone=public --add-port=80/tcp --permanent

За да премахнете правило:

firewall-cmd --permanent --remove-rule=rule_specification

Където rule е типът правило (напр. порт, услуга, rich-rule и т.н.), а rule_specification е спецификацията на самото правило.

След като направите промени в конфигурацията на Firewalld, е необходимо да ги запазите и приложите. За да запазите промените, използвайте командата:

firewall-cmd --runtime-to-permanent

За да приложите промените:

firewall-cmd --reload

След като завършите настройката, можете да проверите избраните параметри, като отворите списъка с всички правила:

firewall-cmd --list-all
правила за защитна стена на Linux

Ако възникнат проблеми, проверете регистрационните файлове на Firewalld с командата:

journalctl -u firewalld

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

firewall-cmd --help

Конфигуриране на iptables на Linux

За разлика от Firewalld, iptables е по-стар, но все още широко използван инструмент в Linux за управление на защитната стена. Той предоставя по-директен и гъвкав подход към правилата за филтриране на пакети на ниво ядро ​​на Linux. Въпреки това, iptables изисква по-напреднали знания и опит в сравнение с Firewalld, което го прави по-малко достъпен за начинаещи. Проверете предварително инсталираната версия на инструмента с командата:

iptables -V

Ако инструментът не е инсталиран, ще трябва да бъде инсталиран. Командата за инсталиране на Ubuntu, Debian:

apt install iptables

За системи Red Hat (напр. CentOS, Fedora):

yum install iptables

Командата за активиране след инсталация:

systemctl start iptables

За да добавите към стартиране, изпълнете:

systemctl enable iptables

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

iptables -t table action chain additional_parameters

Нека се задълбочим във всеки елемент.

Iptables има четири основни таблици: filter, nat, mangle и raw . Всяка от тях е предназначена за обработка на определени типове пакети и има свои собствени вериги от правила:

  1. филтриране: Това е най-често използваната таблица, съдържаща правила за филтриране на пакети. Използва се за вземане на решения дали да се разрешат или откажат пакети.
  2. NAT: Тази таблица се използва за модифициране на мрежови адреси и портове в пакети. Често се използва за настройка на маскиране (NAT).
  3. развалям: В тази таблица можете да променяте заглавките на пакети. Използва се за специализирани операции с пакети, като например маркиране.
  4. суров: Тази таблица се използва за конфигуриране на правила, които се прилагат, преди да преминат през системата за проследяване на връзката. Обикновено се използва за настройка на правила, които не трябва да се променят от системата за проследяване, като например изхвърляне на пакети от определени адреси.

Всяка таблица съдържа набор от вериги. Веригите са поредица от правила, които се проверяват последователно. Има три предварително дефинирани вериги:

  1. ВХОД (входящ). Правилата в тази верига определят какво да се прави с входящите пакети.
  2. ИЗХОД (изходящ). Тази верига се прилага за всички пакети, които вашият компютър изпраща до други устройства или компютри в мрежата.
  3. НАПРЕД (препращане). Правилата в тази верига определят какво да се прави с препратените пакети.

И накрая, всяка верига притежава някакво действие (цел). На практика се използват 5 основни действия:

  1. Приемам: Позволете на пакета да премине през защитната стена.
  2. Капка: Отхвърлете пакета и го изхвърлете без никакъв отговор.
  3. ОТХВЪРЛЕТЕ: Отхвърлете пакета и изпратете на изпращача ICMP съобщение за грешка.
  4. LOG: Регистрирайте пакета в системния дневник и изпълнете друго действие (напр. ПРИЕМАНЕ или ОТПУСКАНЕ).
  5. RETURN: Спрете да проверявате правилата в текущата верига и се върнете към веригата за повикване (ако е приложимо).

За да започнете настройката, отворете списъка със съществуващи правила с командата:

iptables -L
Конфигуриране на защитна стена на Linux

Като ръководство за конфигуриране на Iptables, нека разгледаме практически примери за най-често използваните команди. За улеснение ще разделим примерите на 3 групи в зависимост от конкретната верига.

Вход на веригата :

  1. Разрешаване на входящ трафик през TCP протокол на порт 80:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

2. Разрешаване на входящ трафик през UDP протокол на порт 22:

iptables -A INPUT -p udp --dport 22 -j ACCEPT

3. Блокирайте входящия трафик от определен IP адрес:

iptables -A INPUT -s 192.168.1.100 -j DROP

ИЗХОД НА ВЕРИГАТА :

  1. Разрешаване на изходящ трафик през TCP протокол на порт 443:
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT

2. Разрешаване на изходящ трафик през UDP протокол на порт 80:

iptables -A OUTPUT -p udp --dport 80 -j ACCEPT

3. Блокирайте изходящия трафик към определен порт (например 21):

iptables -A OUTPUT -p tcp --dport 21 -j DROP

Верига НАПРЕД :

  1. Блокирайте препратен трафик от определен диапазон от IP адреси:
iptables -A FORWARD -s 172.16.0.0/24 -j DROP

2. Блокирайте препращането на пакети от определен мрежов интерфейс:

iptables -A FORWARD -i eth1 -j DROP

3. Ограничете броя на едновременните връзки за конкретен порт (в този пример 10 връзки в минута на порт 80):

iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/minute -j ACCEPT

Както можете да видите, във всеки отделен случай се използва допълнителен аргумент (команда). За да получите пълен списък с възможни аргументи и цялостна поддръжка за функционалността на инструмента, въведете:

iptables -h
iptables списък с команди за настройка на linux

За да сте сигурни, че настройките са правилни, въведете отново командата, за да видите списъка с правила:

iptables -L
Проверка на правилата на iptables за Linux

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

iptables -D chain rule_number

Например, ако искате да изтриете правило номер 1 от веригата INPUT, командата ще изглежда така:

iptables -D INPUT 1

За да изтриете всички правила с една команда:

iptables -F

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

iptables-save > /etc/iptables/rules.v4

Това запазва текущите правила на iptables във файла rules.v4. За да възстановите след рестартиране, въведете:

iptables-restore < /etc/iptables/rules.v4

Тази команда възстановява правилата от файла rules.v4.

Заключение

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

❮ Предишна статия Диагностика на натоварването на сървъра
Следваща статия ❯ Потребители на Linux: Управление и разрешения

Попитайте ни за VPS

Винаги сме готови да отговорим на вашите въпроси по всяко време на деня и нощта.