mysurik.ru

Настройка брандмауэра: 3 команды UFW которые я ввёл первым делом

bkcsuibkcsuibkcs

Настройка брандмауэра — это первое, что я сделал после того, как мой сервер взломали. Та история с майнером, который жрал весь процессор, многому меня научила. UFW на Ubuntu — простой инструмент, который делает восемьдесят процентов работы по защите сервера. Если вы ещё не настроили брандмауэр, вот как я это делал.

Почему именно UFW

UFW расшифровывается как Uncomplicated Firewall, и название говорит само за себя. Это оболочка над iptables, которая превращает сложные правила в простые команды. Я пробовал настраивать iptables напрямую и запутался в цепочках и флагах. С UFW всё стало нагляднее, и я перестал бояться ошибиться.

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

Синтаксис элементарный

Всё, что нужно, умещается в несколько команд. Я открыл порты для SSH, HTTP и HTTPS, запретил всё входящее по умолчанию и включил брандмауэр. Вот они, мои команды:

sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
sudo ufw default deny incoming
sudo ufw enable

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

Почему порядок важен

Порядок команд критичен. Если включить UFW до того, как разрешишь порт SSH, ты потеряешь доступ к серверу. Я с этим сталкивался, когда настраивал первый сервер. Пришлось идти к машине и подключаться через консоль, чтобы всё исправить.

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

Логирование — глаза брандмауэра

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

Смотреть логи — не самое весёлое занятие, но оно даёт полную картину происходящего. Я вижу, с каких адресов идут атаки, и при желании блокирую особо назойливых. Логи помогают понять, что сервер жив и защищён.

UFW для продвинутых задач

Для продвинутой настройки существуют iptables или nftables. У них больше возможностей, но и сложность выше. Я пробовал настраивать правила вручную и понял, что для обычного сервера с веб-сайтом это излишне. UFW справляется со всем, что мне нужно.

Если проект вырастет и понадобится тонкая маршрутизация или сложные сценарии, я вернусь к более мощным инструментам. Но пока мой опыт говорит: не усложняйте то, что решается простым и надёжным способом.

Что даёт запрет по умолчанию

Ключевая идея — запретить всё входящее по умолчанию, а потом открывать только нужные порты. Это называется белым списком. Новые сервисы не будут доступны наружу, пока я явно не открою для них порт. Такой подход исключает случайно открытые дыры.

Когда я ставил новый сервис и забывал открыть порт в UFW, сервис оставался невидимым снаружи. Сначала это казалось проблемой, но потом я понял, что это защита. Всё, что не открыто явно, по умолчанию закрыто.

Проверка после настройки

После включения брандмауэра я всегда проверяю статус. Команда ufw status показывает все правила, и я убеждаюсь, что нужные порты открыты, а лишние закрыты. Также я проверяю доступность сайта и SSH с другого устройства.

sudo ufw status verbose

Проверка занимает пару минут, но даёт уверенность, что настройка сделана правильно. Я заметил, что после настройки UFW количество подозрительных попыток в логах резко упало. Сервер стал тихим и спокойным.

Ошибка, которую я не повторю

Когда я впервые настраивал брандмауэр, я забыл открыть порт для сайта. После включения UFW сайт перестал открываться, и я не сразу понял, в чём дело. Пришлось вспоминать, что фаервол закрыл всё, кроме SSH. Быстрая команда открыла порт 80, и всё заработало.

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

Блокировка конкретных адресов

Иногда в логах видно особо назойливый адрес, который долбится на сервер. Для таких случаев UFW умеет блокировать конкретный IP. Я добавляю такой адрес в запрещённые, и он перестаёт докучать.

sudo ufw deny from 1.2.3.4

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

UFW и Fail2Ban вместе

UFW отлично сочетается с Fail2Ban. Fail2Ban следит за логами и автоматически блокирует адреса после неудачных попыток входа. Блокировки он добавляет как раз через правила UFW. Вместе они дают двойную защиту.

Я настроил Fail2Ban на своём сервере, и связка работает отлично. UFW закрывает всё лишнее, а Fail2Ban точечно отсекает тех, кто пытается взломать доступ. Уровень спокойствия после такой настройки заметно вырос.

Частые вопросы новичков

Мне часто пишут: а не сломает ли UFW работу сервисов? Отвечаю: нет, если открыть нужные порты. Другой вопрос: а нужен ли UFW, если сервер в локальной сети? Нужен — даже в локальной сети есть другие устройства, и лучше закрыть лишнее.

Ещё спрашивают, как откатить настройки, если что-то пошло не так. Просто отключаю UFW командой ufw disable и возвращаю доступ, потом разбираюсь с правилами. Знать путь назад так же важно, как и сами команды.

Регулярная проверка правил

Правила брандмауэра со временем обрастают новыми записями, и я периодически их пересматриваю. Старые открытые порты, которые уже не нужны, закрываю. Так список правил не превращается в кашу и всегда отражает реальные потребности сервера.

Пересмотр правил я делаю раз в месяц или после серьёзных изменений на сервере. Это не занимает много времени, но держит конфигурацию в порядке. Аккуратный список правил — залог предсказуемой работы фаервола.

Чему меня научил взлом

История с взломом и майнером стала для меня главным уроком. Я понял, что безопасность — это не одно действие, а привычка. Брандмауэр, ключи SSH, обновления и логи — всё это части одного процесса. Настраивать их лучше заранее, а не после инцидента.

Сейчас каждый новый сервер я поднимаю по единому шаблону: обновляю систему, включаю UFW, закрываю лишние порты, настраиваю вход по ключу. На всё уходит около часа, зато потом сервер работает спокойно без сюрпризов.

UFW на сервере с сайтом

Для сервера, на котором крутится сайт, базовая схема такая: SSH для управления, порты 80 и 443 для посетителей. Всё остальное я держу закрытым. Если сайту нужен доступ к базе данных или почте, эти порты тоже открываю, но только при необходимости и только откуда надо.

Иногда кажется, что проще открыть всё и не париться. Но каждая открытая дверь — это риск. Я предпочитаю потратить минуту на правило, чем потом разбираться с последствиями открытого порта.

Как я запоминаю настройки

Все настройки брандмауэра я записываю в заметки по каждому серверу. Когда проходят месяцы, легко забыть, зачем открыт тот или иной порт. Заметки помогают вспомнить и поддерживать конфигурацию в актуальном виде.

Я завёл простой файл, где перечислены серверы и их открытые порты. При любом изменении я обновляю запись. Это экономит время при обслуживании и передаче серверов другим людям.

Скорость работы сервера

Многие переживают, что брандмауэр замедлит сервер. На практике это не так. UFW работает на уровне ядра и добавляет минимальную задержку. Я не заметил никакой разницы в скорости после включения фаервола, зато заметил разницу в безопасности.

Так что не бойтесь, что защита замедлит сайт. Современные фаерволы очень эффективны. Главное — правильно настроить правила, и тогда и скорость, и безопасность будут на высоте.

Пример из жизни

Расскажу конкретный случай. На одном из моих серверов я заметил в логах, что кто-то пытается подключиться к базе данных извне. Порт базы данных по умолчанию был закрыт UFW, поэтому все попытки отсекались. Я просто посмотрел на статус и убедился, что правило на месте.

Если бы брандмауэра не было, эти попытки могли привести к реальной проблеме. А так сервер молча отбрасывает такие соединения, и я даже не переживаю. Вот что значит правильно настроенная защита.

Чек-лист для нового сервера

Для всех, кто поднимает новый сервер, я собрал простой чек-лист. Обновить систему. Включить UFW и открыть нужные порты. Настроить SSH по ключу. Поставить Fail2Ban. Проверить статус и доступность сервисов. На всё — около часа, а защита получается надёжной.

Я пользуюсь этим чек-листом каждый раз и советую взять его на вооружение. Он избавляет от типичных ошибок новичков и помогает не пропустить важное. Защита сервера начинается с простых шагов.

Почему я пишу об этом

Я делюсь этой историей, потому что сам однажды не настроил брандмауэр и заплатил за это. Если мой опыт поможет кому-то избежать взлома, значит, статья написана не зря. Безопасность — это то, о чём лучше узнать заранее, а не на своих ошибках.

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

Итог

UFW — это простой и надёжный способ защитить сервер. Несколько команд открывают нужные порты и закрывают всё остальное. Логи показывают, кто пытается пробиться, а проверки подтверждают, что всё работает правильно.

Я включаю брандмауэр на каждом новом сервере в первую очередь. Это пять минут, которые экономят дни разбирательств в случае взлома. Не откладывайте — настройте файрвол уже сегодня, как это сделал я.

Не поленитесь — включите файрвол

Мой главный совет: не откладывайте настройку брандмауэра на потом. Это пять минут, которые спасут от многих проблем. Я откладывал и получил взломанный сервер с майнером. Больше я так не делаю.

Включите файрвол сегодня, даже если на сервере пока ничего нет. Привычка защищать с первого дня избавит вас от неприятных сюрпризов в будущем. Поверьте, я знаю, о чём говорю.

Ваш комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *