Настройка UFW на linux

Настройка UFW под Майнкрафт сервера

Быстрый старт

apt install ufw
yum -y install ufw
systemctl enable ufw
ufw --version
ufw status
ufw allow 22
ufw allow 25565
ufw default deny incoming
ufw default allow outgoing
ufw enable

#Доступ к порту только с определённого IP
ufw allow from 228.14.88.0 to any port 25567
ufw allow from 228.14.88.0 to any port 3306

#Удалить правило (закрыть порт)
ufw delete allow 25565

Введение

UFW - ультимейт файр волл, лучшее что изобрело человечество. И это поистине правдивые слова, более оказуаленного, не побоюсь этого слова, файрволла для linux ещё не изобрели. Если вы всё ещё мучаетесь с IPTABLES, то это именно для вас. В общем, для начала посмотрите, есть ли у вас какие-то правила в IPTABLES, если да, то постарайтесь понять для чего они и по возможности сохранить.

iptables -L

Если у вас там пусто, или какие-то непонятные правила, которые вы не создавали и не знаете зачем они, то очищаем полностью IPTABLES, так же рекомендую посмотреть, есть ли что-то интересное в кроне, а именно в секции @reboot, так как правила IPTABLES после перезагрузки исчезают, их по идее надо сохранять в файлик и восстанавливать:

iptables -F #очистка iptables
crontab -l #смотрим крон

Установка

Замечательнейший файрволл UFW по умолчанию входит в Ubuntu 18, но если у вас Debian 9 или CentOS 7, вы можете его смело установить (для Центос вроде нужно установить репозиторий epel)

#centos 7
sudo yum -y install epel-release ufw

#debian 9
apt install ufw

Настройки и интеграция

После успешной установки можно приступить к настройке. Для начала можно проверить, установился ли UFW командой:

ufw --version
ufw status

Теперь открываем нужные порты, чтобы нас не выкинуло из SSH сессии, и устанавливаем политики по умолчанию: исходящие все разрешить, входящие все запретить. Ну и заодно откроем главный порт майнкрафта.

ufw allow 22
ufw allow 25565
ufw default deny incoming
ufw default allow outgoing

Проверяем, что у нас правила применились, и можем активировать UFW, так же пропишем его в автозагрузку, хотя я свои дедики крайне редко перезагружаю:

ufw show added
ufw enable
systemctl enable ufw

Полезные команды

Для защиты базы данных для внешних подключений, или для защиты RCON порта от взлома, или для защиты порта сервера, который находится у вас в сети BungeeCord, но сама банджа на другом физическом сервере (для сокрытия реального айпи дедика) разрешаем доступ к порту только с определённого айпи:

ufw allow from 79.137.70.179 to any port 25567

#для примера взят реальный айпи сервиса TradeMC,
#который коннектится для выдачи доната через RCON

ufw allow from <ip с которого можно коннектиться> to any port <на порт>

Крайне полезно бывает, когда у вас есть дедик, который более менее мощный, но не имеет защиты от DDoS, и есть виртуальный сервер с мощной защитой от DDoS, например от SRV game. Удалить правило:

ufw delete allow 25565
ufw delete allow from 79.137.70.179 to any port 25567

Заключение

В завершении хотелось бы сказать, что выше рассмотренный firewall очень прост в использовании, проще даже, чем firewalld, который входит в комплект поставки систем RedHat, openSUSE, CentOS итд. О более гибкой настройке разумеется можно нагуглить, и при всём при этом у вас так же остаётся функциональным IPTABLES.

Last updated