diff options
| author | vlapa <vlapa@ya.ru> | 2026-06-13 20:33:26 +0300 |
|---|---|---|
| committer | vlapa <vlapa@ya.ru> | 2026-06-13 20:33:26 +0300 |
| commit | e5abc1fe99340b979b18864d978179f71fe8f5c5 (patch) | |
| tree | 98fd0ad7c6d0744894d6e74e446daacd9e6dd1b5 /LINUX/UFW.md | |
First
Diffstat (limited to 'LINUX/UFW.md')
| -rw-r--r-- | LINUX/UFW.md | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/LINUX/UFW.md b/LINUX/UFW.md new file mode 100644 index 0000000..af92d4e --- /dev/null +++ b/LINUX/UFW.md @@ -0,0 +1,165 @@ +```sh +sudo su + +ufw status + +ufw enable + +ufw app list +ufw allow OpenSSH + +# Чтобы увидеть, что в настоящее время заблокировано или разрешено, вы можете использовать параметр **verbose** при запуске **ufw status**, как показано ниже: + +sudo ufw status verbose + +sudo ufw disable + +# Блокировка обращения IP-адреса +# Чтобы заблокировать все сетевые подключения, исходящие с определенного IP-адреса, выполните следующую команду, заменив выделенный IP-адрес на IP-адрес, который вы хотите заблокировать: + +sudo ufw deny from 91.198.174.190 + +# Заблокировать подсеть +# Если вам нужно заблокировать всю подсеть, вы можете использовать адрес подсети в качестве параметра «from» в команде ufw deny. Это заблокирует все IP-адреса в приведенной в примере подсети 91.198.174.0/24: + +sudo ufw deny from 91.198.174.0/24 + +# Блокирование входящих подключений к сетевому интерфейсу +# Чтобы заблокировать входящие подключения с определенного IP-адреса к определенному сетевому интерфейсу, выполните следующую команду, заменив IP-адрес на IP-адрес, который вы хотите заблокировать: + +sudo ufw deny in on eth0 from 91.198.174.192 + +# Параметр «in» указывает брандмауэру применять правило только для входящих соединений, а параметр «on eth0» указывает, что правило применяется только для интерфейса eth0. +# Это может быть полезно, если у вас есть система с несколькими сетевыми интерфейсами (включая виртуальные), и вам нужно заблокировать внешний доступ к некоторым из этих интерфейсов, но не ко всем. + +# Разрешить обращения IP-адреса +# Чтобы разрешить все сетевые подключения, исходящие с определенного IP-адреса, выполните следующую команду, заменив выделенный IP-адрес на IP-адрес, к которому вы хотите разрешить доступ: + +sudo ufw allow from 91.198.174.192 + +# Если теперь вы запустите «sudo ufw status», вы увидите вывод, похожий на этот, с надписью ALLOW рядом с IP-адресом, который вы только что добавили: + +# Разрешение входящих подключений к сетевому интерфейсу +# Чтобы разрешить входящие подключения с определенного IP-адреса к определенному сетевому интерфейсу, выполните следующую команду, заменив IP-адрес на тот, который вы хотите разрешить: + +sudo ufw allow in on eth0 from 91.198.174.22 + +# Параметр «in» указывает брандмауэру применять правило только для входящих соединений, а параметр «on eth0» указывает, что правило применяется только для интерфейса «eth0». + +# Удалить правило брандмауэра +# Чтобы удалить правило, ранее установленное в UFW, используйте **ufw delete**, затем введите правило (allow / deny) и целевую спецификацию. В следующем примере удаляется правило, ранее установленное для разрешения всех подключений с IP-адреса 91.198.174.192: + +sudo ufw delete allow from 91.198.174.192 + +# Другой способ указать, какое правило вы хотите удалить, – это указать ID правила. Эту информацию можно получить с помощью следующей команды: + +sudo ufw status numbered + +sudo ufw delete 1 + +# Список доступных профилей приложений +# При установке приложения, которые полагаются на сетевые коммуникации, обычно устанавливают профиль брандмауэра, который можно использовать для разрешения подключения с внешних адресов. Это часто то же самое, что запустить «ufw allow from», с тем преимуществом, что это ярлык, который абстрагирует конкретные номера портов, используемые службой, и обеспечивает удобную номенклатуру для ссылающихся служб. + +sudo ufw app list + +# Если вы установили службу, например, веб-сервер или другое сетезависимое программное обеспечение, и профиль не был доступен в брандмауэре, сначала убедитесь, что служба включена. + +# В следующем примере мы включаем профиль OpenSSH, который разрешит все входящие SSH-соединения на стандартном порту SSH. + +sudo ufw allow OpenSSH + +# Отключить профиль для определенного приложения +# Чтобы отключить профиль приложения, который вы ранее настроили в брандмауэре, вам нужно удалить соответствующее правило. + +sudo ufw status + +# Этот вывод указывает на то, что профиль приложения «Nginx Full» в настоящее время включен, разрешая любые соединения с веб-сервером как через HTTP[](https://serverspace.ru/support/glossary/http/), так и через HTTPS. + +# Если вы хотите разрешить только HTTPS-запросы к вашему веб-серверу, вам нужно сначала включить наиболее ограничивающее правило, которым в данном случае будет «Nginx HTTPS», а затем отключить активное правило «Nginx Full»: + +sudo ufw allow "Nginx HTTPS" sudo ufw delete allow "Nginx Full" + +# Помните, что вы можете перечислить все доступные профили приложений с помощью: + +sudo ufw app list + + + +ip addr show +hostname -I + +curl -4 icanhazip.com +``` +===================================================== +### Шпаргалка по ufw для базовой настройки фаервола + +Сетевой безопасностью часто пренебрегают при создании своих проектов на своем сервере. Но даже базовая настройка фаервола уже существенно снижает риски. + +`ufw (Uncomplicated Firewall)` - простой способ настроить фаервол на Linux. Работает как обёртка над iptables, но не требует глубоких знаний сетевого стека. + +Зачем вообще нужен фаервол? + +Когда ты поднимаешь сервер (особенно публичный), он сразу становится видимым всему интернету. И даже если ты не настраиваешь ничего «опасного», какие-то сервисы по умолчанию могут слушать порты. + +ufw помогает ограничить доступ: только те порты, которые ты явно разрешил - будут открыты. Если ты только поднял VPS и хочешь защитить сервер - это именно то, что нужно. Если по какой-то причине у тебя ufw не установлен: + +`sudo apt install ufw + +Перед включением стоит задать основные правила, иначе можно случайно отрезать себя от SSH-доступа (особенно на VPS). Начнем с самого важного: + +`sudo ufw allow ssh + +Теперь можно активировать фаервол: + +`sudo ufw enable + +Просмотр статуса и активных правил: + +`sudo ufw status verbose + +Отключение при необходимости: + +`sudo ufw disable + +Базовые правила, которые стоить задать + +Одно правило по разрешению ssh-доступа мы уже добавили, также будет правильно разрешить веб-траффик (http/https): + + +$ sudo ufw allow 80,443/tcp + + +Полезно запретить весь входящий трафик по умолчанию и разрешить только нужное. Также оставить открытым все на выход: + +`sudo ufw default deny incoming + +`sudo ufw default allow outgoing + +#### Полезные команды: + +**Удалить правило: + +`sudo ufw delete allow 80/tcp + +**Разрешить доступ по конкретному IP: + +sudo ufw allow from 192.168.1.10 + +Это может понадобиться, например, чтобы открыть порты для веб-траффика только Cloudflare или ServicePipe и закрыть для всего остального: + +`ufw default deny incoming +`ufw default allow outgoing + +предположим что 192.168.1.10 - IP нашего ServicePipe + +`sudo ufw allow from 192.168.1.10 to any port 22 + +Сбросить все правила и начать с нуля: + +`sudo ufw reset + +После настройки рекомендую протестировать сервер из другого устройства или использовать онлайн-сервисы вроде portquiz или nmap для сканирования портов. Также полезно мониторить логи: + +`sudo less /var/log/ufw.log + +Если `ufw` работает - ты увидишь записи о заблокированных соединениях, особенно на нестандартные порты. Даже минимальные настройки ufw — это уже огромный шаг вперёд в безопасности. Он не требует глубокого понимания iptables и легко вписывается в ежедневный рабочий процесс. Один раз настроил — и забыл.
\ No newline at end of file |
