bolt Valebyte VPS from $4/mo — NVMe, 60s deploy.

Get a VPS arrow_forward

Використання брандмауера для фільтрації трафіку на сервері

calendar_month September 29, 2024 schedule 10 хв. читання visibility 768 переглядів
person
Valebyte Team
Використання брандмауера для фільтрації трафіку на сервері
summarize

TL;DR

  • Закрийте всі порти за замовчуванням і відкрийте тільки ті, що необхідні для роботи конкретних сервісів.
  • Обмежте доступ до SSH і панелей управління тільки для довірених IP, щоб захиститися від брутфорс-атак.
  • Контролюйте вихідний трафік, щоб запобігти витокам даних і блокувати активність шкідливого ПЗ.
  • Використовуйте правила фільтрації для запобігання горизонтальному переміщенню хакерів всередині вашої мережі.

Привіт, колеги-сисадміни та всі, хто керує своїми серверами! Якщо ви задаєтесь питанням, як використовувати брандмауер для фільтрації трафіку на сервері, то відповідь проста: брандмауер — це ваш перший і один з найнадійніших рубежів оборони. Він дозволяє точно контролювати, які пакети даних можуть входити у вашу систему, залишати її і навіть пересилатися всередині, ефективно блокуючи шкідливі спроби, несанкціонований доступ та непотрібні з'єднання. Правильно налаштований брандмауер — це не просто опціональний захід безпеки, а фундаментальний елемент стабільної, безпечної та передбачуваної роботи будь-якого сервера, будь то скромний VPS або потужний виділений фізичний хост.

У цій статті ми глибоко поринемо у світ серверних брандмауерів, розглянемо їх типи, принципи роботи і, звичайно ж, дамо практичні рекомендації щодо налаштування для різних операційних систем. Ми будемо говорити однією мовою, тож приготуйтеся до обміну досвідом!

Чому брандмауер — це не розкіш, а необхідність?

A digital illustration showing a server protected by a glowing firewall shield, deflecting malicious data packets and allowing secure connections to pass through.

Можливо, хтось із вас ще пам'ятає часи, коли сервери могли відносно безпечно "жити" без суворих правил фаєрволу, будучи прихованими за корпоративним периметром або просто не представляючи особливого інтересу для зловмисників. Ці часи давно минули. Сьогодні будь-який сервер, підключений до інтернету, постійно піддається скануванню портів, спробам підбору паролів та іншим видам атак. Ось кілька ключових причин, чому брандмауер абсолютно незамінний:

  • Мінімізація поверхні атаки: Сервер часто має безліч відкритих портів для різних сервісів. Брандмауер дозволяє закрити всі порти за замовчуванням і відкрити лише ті, які абсолютно необхідні для роботи ваших програм. Менше відкритих дверей - менше можливостей для злому.
  • Захист від несанкціонованого доступу: Ви можете обмежити доступ до критично важливих сервісів (наприклад, SSH, панель управління) лише з певних IP-адрес або мереж, значно знижуючи ризик брутфорс-атак.
  • Запобігання поширенню загроз: Якщо один з ваших сервісів буде скомпрометовано, брандмауер може допомогти обмежити горизонтальне переміщення зловмисника всередині вашої мережі або запобігти використанню вашого сервера для атак на інші ресурси.
  • Контроль вихідного трафіку: Брандмауер не тільки захищає від зовнішніх загроз, але й контролює вихідні з'єднання. Це корисно для запобігання витоку даних, блокування шкідливого ПЗ, яке намагається зв'язатися з управляючими серверами, або обмеження використання ресурсів сервера для несанкціонованих дій (наприклад, спам-розсилок).
  • Дотримання нормативів та політик безпеки: У багатьох галузях існують суворі вимоги до безпеки даних, які включають обов'язкове використання та правильне налаштування брандмауерів.

Вибір брандмауера: Різновиди та підходи

Коли мова заходить про брандмауери для сервера, важливо розуміти, що вони бувають різних типів та рівнів. Для VPS та виділених серверів, як правило, ми маємо справу з програмними брандмауерами.

Хостові брандмауери (Software Firewalls)

Це програмне забезпечення, що працює безпосередньо на вашому сервері. Вони контролюють трафік, що досягає мережевих інтерфейсів сервера і залишає їх. У Linux-системах найпоширеніші такі:

  • iptables / netfilter: Це ядро системи фільтрації пакетів у Linux. iptables - це утиліта командного рядка, яка взаємодіє з модулями netfilter ядра. Це потужний, гнучкий, але досить складний інструмент, що вимагає глибокого розуміння принципів роботи мережі та правил фаєрволу.
  • ufw (Uncomplicated Firewall): Це високорівнева оболонка для iptables, розроблена для спрощення налаштування фаєрволу. Ідеально підходить для новачків і для більшості типових задач, де не потрібна екстремальна кастомізація. За замовчуванням встановлений в Ubuntu та багатьох інших дистрибутивах Debian-based.
  • firewalld: Динамічний демон управління фаєрволом, який надає зону-орієнтований підхід до налаштування. Особливо популярний у дистрибутивах Red Hat-based (CentOS, Fedora, RHEL). Він дозволяє змінювати правила без перезавантаження всього фаєрволу.

Мережеві брандмауери (Network Firewalls) та Security Groups

Хоча в контексті хостового брандмауера це менш актуально, варто згадати:

  • Апаратні брандмауери: Окремі пристрої, які фізично розташовуються перед вашим сервером (або цілою мережею серверів) і фільтрують трафік на апаратному рівні. Забезпечують високу продуктивність і часто мають розширені функції безпеки. На рівні VPS ви з ними, швидше за все, не зіткнетесь.
  • Security Groups (Групи безпеки) у хмарних середовищах: Якщо ваш сервер розміщений у провайдера, який надає інфраструктуру як послугу (IaaS), наприклад, AWS EC2, Google Cloud, Azure або навіть деякі просунуті VPS-провайдери, ви, швидше за все, будете працювати з групами безпеки. Це віртуальні брандмауери, які застосовуються на рівні гіпервізора або мережевої інфраструктури провайдера. Вони контролюють трафік ще до того, як він досягне вашої ОС, що є чудовим першим рівнем захисту.

У рамках цієї статті ми сфокусуємось на хостових брандмауерах, оскільки саме вони знаходяться під вашим прямим контролем на рівні ОС.

Потрібен надійний сервер для вашого захисту?

Застосовуйте найкращі практики фільтрації трафіку на сервері з нашими VPS-планами. Отримайте повний контроль та безпеку. — from €4.49/mo.

Вибрати VPS-план →

Основні принципи налаштування брандмауера

Перш ніж перейти до конкретних команд, давайте закріпимо основні принципи, які повинні лежати в основі будь-якої конфігурації брандмауера:

  1. Принцип "deny all, allow explicitly" (заборонити все, дозволити явно): Це золоте правило безпеки. За замовчуванням брандмауер повинен блокувати весь вхідний і вихідний трафік, а ви повинні явно дозволяти тільки те, що дійсно необхідно.
  2. Принцип найменших привілеїв: Дозволяйте доступ тільки тим IP-адресам, портам і протоколам, які абсолютно необхідні для роботи сервісу.
  3. Стан з'єднань (Stateful Firewall): Сучасні брандмауери відстежують стан з'єднань. Це означає, що якщо ви дозволили вихідне з'єднання (наприклад, ваш сервер робить запит до зовнішнього DNS-сервера), то зворотний трафік по цьому ж з'єднанню буде автоматично дозволений, навіть якщо для нього немає явного правила. Це значно спрощує конфігурацію і підвищує безпеку.
  4. Порядок правил: Брандмауер обробляє правила зверху вниз. Як тільки пакет відповідає якому-небудь правилу, до нього застосовується відповідна дія, і подальша перевірка правил припиняється. Це критично важливо для запобігання конфліктів і забезпечення правильної логіки.
  5. Логування: Налаштуйте логування відкинутих пакетів. Це безцінний інструмент для налагодження, моніторингу спроб атак і розуміння, чому щось не працює.
rocket_launch Quick pick

Looking for a server that just works?

Valebyte VPS — NVMe, 24/7 support, deploy in 60 seconds.

View VPS plans arrow_forward

Практичне налаштування брандмауера: UFW, firewalld, iptables

Давайте розглянемо, як застосувати ці принципи на практиці, використовуючи найпоширеніші інструменти.

UFW (Uncomplicated Firewall) – для простоти та швидкості

UFW - чудовий вибір для більшості VPS на Ubuntu/Debian. Він простий в освоєнні та налаштуванні.

# Включаємо UFW і встановлюємо політики за замовчуванням
sudo ufw enable
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Дозволяємо SSH (стандартний порт 22) # Це вкрай важливо зробити ДО ввімкнення UFW, інакше ви заблокуєте собі доступ! sudo ufw allow ssh # Якщо SSH на нестандартному порту, наприклад 2222: # sudo ufw allow 2222/tcp # Дозволяємо веб-трафік (HTTP і HTTPS) sudo ufw allow http sudo ufw allow https # Або за номером порту: # sudo ufw allow 80/tcp # sudo ufw allow 443/tcp # Дозволяємо трафік для конкретної IP-адреси (наприклад, для адмінки) sudo ufw allow from 192.168.1.100 to any port 3306 comment 'Allow MySQL access from admin IP' # Дозволяємо Ping (ICMP) sudo ufw allow out to any port 53 comment 'Allow DNS resolution' sudo ufw allow in from any to any port 53 comment 'Allow incoming DNS queries if this is a DNS server' sudo ufw allow in from any to any proto icmp comment 'Allow incoming pings' # Перевіряємо статус UFW sudo ufw status verbose # Вимикаємо UFW (тільки якщо дійсно потрібно, будьте обережні!) # sudo ufw disable # Скидання всіх правил (теж з обережністю!) # sudo ufw reset

Важлива порада: Завжди перевіряйте правила UFW, особливо після змін, і робіть це з активною сесією SSH. Якщо ви заблокуєте порт SSH, вам доведеться звертатися в техпідтримку хостингу для доступу через VNC/консоль.

firewalld – для гнучкості та зон

firewalld використовується в CentOS, Fedora, RHEL. Він працює з концепцією "зон", що дозволяє застосовувати різні набори правил до різних мережевих інтерфейсів або джерел трафіку.

# Перевіряємо статус firewalld
sudo systemctl status firewalld

# Якщо не запущено, запускаємо і додаємо в автозавантаження
sudo systemctl start firewalld
sudo systemctl enable firewalld

# Дивимось активні зони та їх налаштування
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --list-all --zone=public

# Додаємо сервіси (SSH, HTTP, HTTPS) в публічну зону
# --permanent означає, що правило збережеться після перезавантаження
sudo firewall-cmd --zone=public --add-service=ssh --permanent
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent

# Перезавантажуємо firewalld, щоб застосувати постійні правила
sudo firewall-cmd --reload

# Відкриваємо нестандартний порт, наприклад 2222 для SSH
sudo firewall-cmd --zone=public --add-port=2222/tcp --permanent

# Дозволяємо доступ з конкретного IP до SSH
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept' --permanent

# Приклад блокування IP
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="203.0.113.45" reject' --permanent

# Перевіряємо зміни
sudo firewall-cmd --list-all --zone=public

firewalld також підтримує "паніки" (firewall-cmd --panic-on) для негайного блокування всього трафіку, що може бути корисним в екстрених ситуаціях.

iptables – для повного контролю (і болю)

Пряма робота з iptables дає вам максимальний контроль, але вимагає ретельності. Правила iptables не зберігаються автоматично після перезавантаження, якщо не налаштувати спеціальний механізм.

# Очищаємо всі поточні правила (ДУЖЕ НЕБЕЗПЕЧНО, якщо ви не розумієте, що робите!)
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X

# Встановлюємо політики за замовчуванням: заборонити все вхідне і пересилаєме, дозволити вихідне
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

# Дозволяємо трафік на loopback-інтерфейсі
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

# Дозволяємо вже встановлені та пов'язані з'єднання (stateful firewall)
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# Дозволяємо SSH (порт 22)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Дозволяємо HTTP (порт 80)
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# Дозволяємо HTTPS (порт 443)
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# Дозволяємо вихідні DNS-запити
sudo iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT

# Логування відкинутих пакетів (для налагодження)
sudo iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables_dropped: " --log-level 7
sudo iptables -A INPUT -j DROP # Це правило вже не потрібно, так як політика за замовчуванням DROP

# Виводимо поточні правила
sudo iptables -L -v -n

# Збереження правил (для Debian/Ubuntu)
# sudo apt install iptables-persistent
# sudo netfilter-persistent save

# Збереження правил (для CentOS/RHEL)
# sudo yum install iptables-services
# sudo systemctl enable iptables
# sudo service iptables save

Робота з iptables напряму вимагає глибокого розуміння ланцюжків (INPUT, OUTPUT, FORWARD), таблиць (filter, nat, mangle, raw) і станів з'єднань. Для більшості завдань ufw або firewalld будуть більш ніж достатніми та значно безпечнішими у налаштуванні.

Моніторинг, тестування та регулярне обслуговування

Налаштувати брандмауер — це лише пів справи. Важливо переконатися, що він працює так, як задумано, і регулярно підтримувати його актуальність.

Тестування брандмауера

Після налаштування необхідно провести тестування. Не покладайтеся на "авось".

  • Перевірка відкритих портів: Використовуйте утиліти, такі як nmap, з іншого сервера або вашої локальної машини, щоб просканувати порти вашого сервера.
    nmap -p 1-65535 your_server_ip
    Переконайтеся, що відкриті тільки ті порти, які ви явно дозволили.
  • Перевірка доступу до сервісів: Спробуйте підключитися до кожного з дозволених сервісів (SSH, веб-сервер, база даних) з дозволених і, що більш важливо, з *заборонених* IP-адрес.
  • Перевірка логування: Переконайтеся, що брандмауер записує відкинуті пакети.

Моніторинг та логування

Брандмауер генерує логи, які містять цінну інформацію про спроби доступу та заблокований трафік.

  • Системні логи: В Linux логи ядра (де записуються повідомлення від netfilter) зазвичай знаходяться в /var/log/syslog, /var/log/messages або доступні через journalctl.
    sudo tail -f /var/log/syslog | grep "UFW BLOCK"
    sudo journalctl -f | grep "iptables_dropped"
  • Інструменти: Використовуйте такі інструменти, як fail2ban, який аналізує логи та автоматично блокує IP-адреси, що здійснюють підозрілі дії (наприклад, багаторазові невдалі спроби входу по SSH).

Регулярне обслуговування

Світ загроз постійно змінюється, як і ваші власні потреби. Тому правила брандмауера не повинні бути статичними.

  • Оновлення правил: При додаванні нових сервісів або зміні мережевої інфраструктури не забувайте оновлювати правила фаєрвола.
  • Перегляд правил: Регулярно (раз на місяць, квартал) переглядайте свої правила. Можливо, якісь з них застаріли або стали надлишковими. Видаляйте все зайве.
  • Оновлення ПЗ брандмауера: Переконайтеся, що ваше ПЗ брандмауера (UFW, firewalld) і, звичайно ж, ядро Linux, регулярно оновлюються для отримання останніх патчів безпеки.

Висновки

Використання брандмауера для фільтрації трафіку на сервері — це не просто одна з задач по налаштуванню, а безперервний процес забезпечення безпеки та стабільності. Ми, як системні адміністратори, повинні підходити до цього питання з максимальною відповідальністю. Незалежно від того, чи вибрали ви простий у використанні UFW, гнучкий firewalld або потужний, але складний iptables, пам'ятайте про базові принципи: "заборонити все, дозволити явно", найменші привілеї та постійний моніторинг.

Правильне налаштування брандмауера не тільки захистить ваш сервер від більшості поширених атак, але й надасть вам цінну інформацію про те, хто намагається отримати доступ до вашої системи. Вкладайте час у вивчення та налаштування цього найважливішого компонента безпеки, і ваші сервери будуть служити вам вірою і правдою, залишаючись захищеними від більшості загроз в агресивному середовищі інтернету. Удачі в ваших адмінських пригодах!

Масштабуйте безпеку з хмарними інстансами

Застосовуйте просунуті правила файрволу та легко масштабуйте ресурси. Ваші дані будуть в безпеці.

Запустити інстанс →
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.