Как да настроите защитна стена на сървъра на Ubuntu
Публикувано: 15 февруари 2025 г. в 21:32:40 ч. UTC
Последна актуализация: 12 януари 2026 г. в 8:36:44 ч. UTC
Тази статия обяснява и предоставя някои примери за това как да настроите защитна стена на GNU/Linux, използвайки ufw, което е съкращение от Uncomplicated FireWall - и името е подходящо, наистина е много лесен начин да се уверите, че нямате отворени повече портове, отколкото е необходимо.
How to Set Up a Firewall on Ubuntu Server
Информацията в тази публикация е базирана на Ubuntu Server 14.04 x64. Тя може или не може да е валидна за други версии. (Актуализация: Мога да потвърдя, че информацията в тази публикация е все още валидна и функционална от Ubuntu Server 24.04, но през последните 10 години ufw стана донякъде „по-умна“, като има профили за често срещани сървърни приложения (например, можете да активирате „Nginx full“ вместо портове 80 и 443 поотделно) и деактивирането/активирането на цялата защитна стена, за да се приложат нови правила, вече не е необходимо).
Когато за първи път започнах работа със сървъри GNU/Linux (Ubuntu), настройването на защитна стена включваше ръчно създаване и поддържане на потенциално сложен конфигурационен файл за iptables. Наскоро обаче открих ufw, което е съкращение от Uncomplicated Firewall (Неусложнена защитна стена) – и наистина е така :-)
Моята инсталация на Ubuntu Server 14.04 вече имаше инсталиран ufw, но ако вашата не е, просто го инсталирайте от хранилищата:
UFW всъщност е просто инструмент, който опростява конфигурацията на iptables – зад кулисите, все още iptables и защитната стена на ядрото на Linux извършват филтрирането, така че ufw не е нито по-малко, нито по-сигурен от тях. Тъй като обаче ufw значително улеснява правилното конфигуриране на защитна стена, може да намали риска от човешка грешка и следователно е вероятно по-сигурен за неопитни администратори.
Ако вашият сървър е конфигуриран с IPv6, както и с IPv4, уверете се, че това е активирано и за UFW. Редактирайте файла /etc/default/ufw и потърсете ред, който казва IPV6=yes. В моята инсталация той вече беше там, но ако не е или ако пише „не“, трябва да го редактирате.
След това просто използвайте командния ред, за да активирате портовете, които искате да бъдат отворени. Ако сте свързани към сървъра си чрез ssh, не забравяйте да разрешите и това, в противен случай може да се наруши връзката ви и евентуално да ви заключи от сървъра, когато го активирате – в зависимост от това дали имате физически достъп до сървъра или не, това може да е малко неудобно ;-)
Например, ако използвате ssh на стандартния порт 22 и конфигурирате уеб сървър, който поддържа както некриптирани (HTTP на порт 80), така и криптирани (HTTPS на порт 443) връзки, трябва да издадете следните команди, за да конфигурирате ufw:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Ако имате нужда от още правила, просто ги добавете както е посочено по-горе.
Ако имате статичен IP адрес и трябва да можете да се свързвате чрез ssh само от едно място, можете също да ограничите ssh връзките до един origin адрес, както следва:
Разбира се, въведете вместо това собствения си IP адрес.
Когато сте готови, активирайте ufw, като въведете:
И сте готови! Защитната стена работи и ще се стартира автоматично, когато рестартирате сървъра си :-)
Ако направите промени в конфигурацията на ufw, може да се наложи да го деактивирате и активирате отново, за да влязат в сила, както следва:
sudo ufw enable
За да видите текущата конфигурация, просто въведете:
Ако ufw не е активиран, това просто ще покаже съобщение „неактивен“, в противен случай ще изброи текущо дефинираните правила.
