Как да настроите защитна стена на сървъра на Ubuntu
Публикувано: 15 февруари 2025 г. в 21:32:40 ч. 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=да. При моята инсталация вече беше там, но ако не е или ако пише не, трябва да го редактирате
След това просто използвайте командния ред, за да активирате портовете, които искате да отворите. Ако сте свързани със сървъра си чрез ssh, не забравяйте да разрешите и това, защото това може да наруши връзката ви и евентуално да ви блокира от сървъра, когато го активирате – в зависимост от това дали имате физически достъп до сървъра или не, това може да е малко неудобно ;-)
Например, ако използвате ssh на стандартния порт 22 и конфигурирате уеб сървър, който поддържа както нешифровани (HTTP на порт 80), така и шифровани (HTTPS на порт 443) връзки, трябва да издадете следните команди за конфигуриране на ufw:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Ако имате нужда от повече правила, просто ги добавете както по-горе.
Ако имате статичен IP адрес и трябва да можете да се свържете чрез ssh само от едно място, можете също да ограничите ssh връзките до един адрес на произход по следния начин:
Разбира се, вместо това въведете свой собствен IP адрес.
Когато сте готови, активирайте ufw, като въведете:
И сте готови! Защитната стена работи и ще се стартира автоматично, когато рестартирате сървъра си :-)
Ако направите промени в конфигурацията на ufw, може да се наложи да я деактивирате и активирате отново, за да ги приложите, като този:
sudo ufw enable
За да разгледате текущата конфигурация, просто въведете:
Ако ufw не е активиран, това просто ще покаже съобщение "неактивно", в противен случай ще изброява текущо дефинираните правила.