Сигурната защитна стена в Linux е първата линия на отбрана срещу нежелани връзки, а добрата новина е, че всяка голяма дистрибуция разполага с мощен и лесен инструмент за нея – ufw, firewalld или nftables. В тази статия ще ви покажем стъпка по стъпка как да я създадете, с готови команди, които можете да копирате директно в терминала, за да защитите компютъра или малкия си сървър.
| Инструмент | Дистрибуции | Какво представлява |
|---|---|---|
| UFW | Ubuntu, Debian | Лесен интерфейс над iptables/nftables |
| firewalld | Fedora, openSUSE, RHEL | Защитна стена със зони и услуги |
| nftables | Всички (ядрото на Linux) | Модерният наследник на iptables |
Общият принцип е „deny by default“ – забрани всичко входящо и позволи само конкретни портове. Така намалявате повърхността за атаки още от първия ден.
sudo ufw status
sudo ufw enable
Важно: ако се свързвате отдалечено по SSH, първо позволете SSH, а чак след това включете защитната стена – иначе се отрязвате от собствената си машина.
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 'Nginx Full'
UFW разполага и с готови профили за популярни услуги – проверете ги с sudo ufw app list. Профилът 'Nginx Full' например отваря едновременно портове 80 и 443, без да налага да ги помните.
sudo ufw deny 23/tcp
sudo ufw deny from 203.0.113.101
sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp
Командата по-долу блокира временно всеки IP, който направи повече от шест опита за връзка за 30 секунди – идеално за SSH:
sudo ufw limit ssh
sudo ufw status verbose
sudo ufw status numbered
sudo ufw delete 3
Пълната документация е достъпна на wiki.ubuntu.com/UncomplicatedFirewall.
firewalld разделя мрежите на „зони“ с различна степен на доверие – например public за Wi-Fi в кафене и home за домашната мрежа. Проверете статуса и активните зони с:
sudo systemctl enable --now firewalld
firewall-cmd --state
firewall-cmd --list-all
firewall-cmd --zone=public --add-service=http
firewall-cmd --zone=public --add-service=https
firewall-cmd --runtime-to-permanent
firewall-cmd --add-port=443/tcp
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
firewall-cmd --permanent --remove-service=http
firewall-cmd --permanent --remove-port=8080/tcp
firewall-cmd --zone=home --change-interface=eth0
Правилото е същото: по подразбиране всичко входящо е блокирано, а вие отваряте само нужните услуги. Официалната документация е на firewalld.org.
nftables е съвременният пакетен филтър в ядрото на Linux и наследник на iptables. Работи с таблици, вериги (chains) и правила. Ето как изглежда пълна конфигурация за защитна стена на уеб сървър – запазете я в /etc/nftables.conf:
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
iif lo accept
ct state established,related accept
ct state invalid drop
tcp dport 22 accept
tcp dport { 80, 443 } accept
tcp dport 22 ct state new limit rate 5/minute accept
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0; policy accept;
}
}
Правилата за rate limiting ограничават новите SSH връзки до 5 в минута, а set-ът { 80, 443 } отваря HTTP и HTTPS едновременно за IPv4 и IPv6. Приложете конфигурацията и я проверете с:
sudo nft -f /etc/nftables.conf
sudo nft list ruleset
sudo systemctl enable nftables
Референцията на синтаксиса е в man страницата nft(8).
UFW е предварително инсталиран в Ubuntu, но ако ползвате друга дистрибуция или сървърна версия, може да го добавите с пакетния мениджър на съответната система:
sudo apt install ufw # Debian, Ubuntu
sudo dnf install ufw # Fedora
sudo zypper install ufw # openSUSE
Firewalld пък е стандартният избор във Fedora, докато nftables присъства във всяко съвременно ядро и се управлява през файла /etc/nftables.conf. Изберете един инструмент на машина и не смесвайте ufw с firewalld – те управляват една и съща система от правила и могат да си попречат.
След като приложите правилата, проверете дали всичко работи. От самия компютър можете да тествате локалните услуги с:
curl -I http://localhost
nc -zv localhost 22
От друга машина в мрежата (или отвън, ако сървърът е в интернет) проверете дали желаните портове отговарят, а останалите са недостъпни:
nmap -p 22,80,443,8080 ваш_ip
Ако порт се окаже затворен по погрешка, проверете реда на правилата – в nftables и ufw правилата се прилагат отгоре надолу и първото съвпадение печели. Не забравяйте, че защитната стена на самата машина не е единствената стена – при домашен рутер или хостинг доставчик може да има отделен филтър, който също трябва да отворите.
| Действие | UFW | firewalld | nftables |
|---|---|---|---|
| Позволяване на SSH | ufw allow OpenSSH | firewall-cmd --add-service=ssh | nft add rule inet filter input tcp dport 22 accept |
| HTTP/HTTPS | ufw allow 80 && ufw allow 443 | firewall-cmd --add-service=http/https | nft add rule inet filter input tcp dport { 80, 443 } accept |
| Отказ на порт | ufw deny 23 | firewall-cmd --remove-port=23/tcp | nft add rule inet filter input tcp dport 23 drop |
| Rate limiting | ufw limit ssh | rich rule | limit rate 5/minute |
| Преглед на правилата | ufw status | firewall-cmd --list-all | nft list ruleset |
ufw status, firewall-cmd --list-all или nft list ruleset.С ufw, firewalld или nftables можете да създадете сигурна защитна стена в Linux само с няколко команди – независимо дали става дума за домашен компютър, сървър или точка за достъп. Ако искате по-сложна конфигурация, защита на сървър в интернет или цялостно укрепване на системата след миграция от Windows, екипът на ВСВ Систем ЕООД в Балчик е на ваше разположение.
Запишете час през страницата за контакти и ние ще настроим и тестваме защитната стена на вашата машина, заедно с всички други мерки за сигурност от нашите услуги.
Може да ви е полезно да прочетете още: