Керування портами в Linux Ubuntu/Debian/CentOS.
Керування портами в Linux Ubuntu/Debian/CentOS.
Багато часу не минає з замовлення сервера на хостингу до першого підключення до нього. Зазвичай це триває лише кілька хвилин. Однак, незважаючи на те, що сервер готовий до використання, він не захищений від зовнішніх загроз, як і новонароджена дитина. Тому для забезпечення безпеки сервера потрібне налаштування брандмауера або міжмережевого екрана.
Що таке порт у Linux?
У контексті мережевої взаємодії порт - це числовий ідентифікатор, який визначає конкретну програму або службу, до якої відбувається запит або від якої йде відповідь. Обмін інформацією між вузлами мережі здійснюється через порти, які можуть бути керованими за допомогою брандмауера. Керування портами сервера важливе для забезпечення безпеки та контролю за трафіком. Взаємодія між вузлами мережі здійснюється через порти, які мають бути відкриті передачі даних. Порти поділяються на дві основні категорії: TCP та UDP. TCP порти використовуються для встановлення надійного з'єднання між хостами, в той час як порти UDP призначені для обміну даними без встановлення з'єднання.
Керування портами в Ubuntu/Debian
В операційних системах Ubuntu та Debian для цієї мети часто застосовується утиліта iptables. Її спрощеним інтерфейсом є UFW. UFW (Uncomplicated Firewall) – це утиліта для керування налаштуваннями брандмауера на основі iptables у Linux. Вона розроблена для того, щоб спростити налаштування та керування правилами брандмауера, роблячи процес більш зрозумілим та доступним для користувачів. У Ubuntu інтерфейс UFW зазвичай є за промовчанням, тоді як у Debian його необхідно встановити окремо. Перед встановленням брандмауера рекомендується оновити репозиторії. Для додавання правил до брандмауера використовуються команди типу "allow", щоб дозволити доступ за певними портами або протоколами. Розглянемо основні команди та параметри UFW.
Примітка: Якщо Ви працюєте з-під користувача root, вам не потрібно на початку кожної команди вказувати sudo .
Основні команди UFW
Активувати UFW
До або після додавання правил необхідно увімкнути брандмауер. Ця команда потрібна для активації UFW. Після її виконання брандмауер почне застосовувати правила фільтрації трафіку:sudo ufw enable
Деактивувати UFW
Ця команда відключає UFW, тимчасово припиняючи застосування всіх правил брандмауера:sudo ufw disable
Перевірка статусу UFW
Щоб перевірити стан брандмауера, можна скористатися командою з ключем status. Команда виводить поточний статус UFW (увімкнений або вимкнений) та список активних правил:sudo ufw status
Керування правилами
Дозволити трафік
Для дозволу трафіку через певні порти можна використовувати команди на кшталт:
sudo ufw allow <порт/сервис>
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
В Ubuntu можна використовувати також дозвіл вхідного трафік для зазначеного сервісу або протоколу. Наприклад, для SSH/HTTP:
sudo ufw allow OpenSSH
sudo ufw allow http
sudo ufw allow https
Заборонити трафік
Крім того, можна використовувати команду "deny" для заборони доступу через певні порти чи протоколи. Вона забороняє вхідний трафік на вказаний порт або вказаний сервіс. Наприклад:
sudo ufw deny <порт/сервис>
sudo ufw deny 23
Видалити правило
Вже створені правила можна видалити за допомогою команди "delete". Видаляє вказане правило команда:
sudo ufw delete <правило>
Наприклад, для видалення правила дозволу порта 80:
sudo ufw delete allow 80
Розширені команди
UFW робить налаштування брандмауера в Linux більш простим і доступним, надаючи зручний інтерфейс для управління правилами фільтрації трафіку.
Дозволити трафік для певного протоколу
sudo ufw allow <порт>/<протокол>
Наприклад, щоб дозволити лише TCP трафік на порт 80:
sudo ufw allow 80/tcp
Налаштування стандартної політики
sudo ufw default allow|deny incoming|outgoing
Встановлює стандартну політику для вхідного або вихідного трафіку. Наприклад, щоб заборонити весь вхідний трафік за замовчуванням:
sudo ufw default deny incoming
Перегляд номерів правил
Команда для відображення поточних правил з їх номерами, щоб спростити їх видалення або редагування:sudo ufw status numbered
Дозволити повний доступ до сервера з конкретної IP-адреси
sudo ufw allow from <IP-адрес>
Дозволяє трафік із вказаної IP-адреси. Наприклад:
sudo ufw allow from 192.168.1.100
Дозволити доступ до конкретного порту з конкретної IP-адреси
Для більш складних випадків, наприклад, для відкриття цілого діапазону портів або роботи з конкретними IP-адресами, існують відповідні команди. Команда дозволяє трафік із зазначеної IP-адреси до вказаного вами порту. Наприклад, відкрити доступ до SSH:
sudo ufw allow from <IP-адрес> to any port <порт> sudo ufw allow from 192.168.1.100 to any port 22
Дозволити з локальної мережі для всіх ІР, у зазначеній підмережі, доступ до HTTP-сервера (порту 80):
sudo ufw allow from 192.168.1.0/24 to any port 80
Журнали та відладка
Включити журналування
Включает журналирование событий брандмауэра:sudo ufw logging on
Перегляд журналу
Журнал подій можна переглянути за допомогоюdmesg
або у файлі/var/log/ufw.log
.
Приклади використання
Дозволити доступ до SSH (порт 22)
Для прикладу, щоб дозволити доступ до SSH (Secure Shell), можна використовувати команду, в якій також можна вказати конкретний номер порту:sudo ufw allow SSH sudo ufw allow 22 sudo ufw allow 22/tcp
Заборонити доступ до Telnet (порт 23)
sudo ufw deny 23/tcp
Дозволити доступ до HTTP (порт 80) з локальної мережі
Для більш складних випадків, наприклад, для відкриття цілого діапазону портів або роботи з конкретними IP-адресами, існують відповідні команди. UFW робить налаштування брандмауера в Linux більш простим і доступним, надаючи зручний інтерфейс для управління правилами фільтрації трафіку.sudo ufw allow from 192.168.1.0/24 to any port 80
Управління портами у CentOS
Для роботи з міжмережевим екраном CentOS використовується клієнтський інтерфейс програми firewalld. Зазвичай firewalld вже встановлено за промовчанням у системі CentOS. Однак, якщо це не так, його можна встановити за допомогою наступних команд.
Встановлення.
sudo dnf update -y
sudo dnf install firewalld -y
Якщо Firewall вже встановлено, буде виведено повідомлення про це. Щоб дізнатися про поточний стан служби firewalld, виконайте команду:
systemctl status firewalld
Список програм.
Список програм, для яких доступ вже надано у firewalld, можна отримати за допомогою команди:
sudo firewall-cmd --permanent --list-all
Відкрити порти.
Щоб дозволити підключення до сервера через певні порти або протоколи, використовуйте команди на зразок:
sudo firewall-cmd --permanent --add-service=http
Аналогічно, можна відкрити доступ до підключень по HTTPS:
sudo firewall-cmd --permanent --add-service=https
Также, можно открыть доступ для подключений по SSH:
sudo firewall-cmd --permanent --add-service=ssh
Також можна додати доступ до конкретного порту, наприклад для порту MySQL 3306 за протоколом tcp:
sudo firewall-cmd --zone=public --add-port=3306/tcp
Діапазон портів.
Для открытия доступа к диапазону портов по протоколу, и например udp используйте команду:
sudo firewall-cmd --zone=public --add-port=32811-32814/udp
Перевірка портів.
Чтобы убедиться, что порты добавлены, выполните:
sudo firewall-cmd --zone=public --list-ports
Блокування портів.
Для блокування доступу через певні порти використовуйте команди:
sudo firewall-cmd --zone=public --remove-port=32814/udp
Застосування.
Нарешті, щоб застосувати всі зміни, підхопити нові правила Firewalld:
sudo firewall-cmd --reload
Вимкнення firewall.
Для отключения брандмауэра используется команда "disable".
sudo firewall-cmd --disable
Підсумки.
Отже, ми розглянули встановлення та налаштування брандмауера в Linux-системах, таких як Ubuntu, Debian та CentOS, а також навчилися додавати та видаляти правила для керування доступом до сервера через певні порти та протоколи.