Перейти с Windows на Linux

Описание перехода с операционной системы Windows на Ubuntu Linux

UFW — простая настройка iptables

Как любят говорить системные администраторы: «Работать без фаервола — это как незащищённый секс». Спорить о полезности брандмауэра бессмысленно, это как с бэкапами — пока не «ужалит», оно не нужно, а когда понадобится — необходимо. И не надо бояться: если раньше настройка межсетевого экрана была очень сложной, то теперь есть специальные утилиты, в том числе и графические, которые позволяют сделать всё элементарно. Именно об одной из таких утилит мы сегодня и поговорим.

GUFW

(Картинка для привлечения внимания.)

Итак, давайте разбираться. Сначала терминология: iptables — это сам фаервол с очень сложной настройкой, ufw — это утилита для простой настройки iptables, Gufw — это графический интерфейс для ufw. Теперь чуть сложнее: allow, deny, reject — это действия (разрешить, запретить, отклонить), которые применяются к определенным соединениям, incoming/outgoing — это направление соединения (исходящее/входящее), app — в данном контексте это приложение с определенным набором правил. Вроде, для начала нам этого должно хватить.

Хотел рассказать про Gufw, но понял, что там настолько всё интуитивно понятно, что толком и рассказывать нечего. На картинке выше видно, что там всего лишь пара переключателей и, собственно, правила. Status — это статус фаервола, вкл/выкл. Incoming — это политика по умолчанию для входящих соединений, Outgoing — для исходящих. Обычно по умолчанию входящие соединения запрещают, а исходящие разрешают. Далее идёт набор правил, там тоже всё просто: порт, через который идут соединения; действие и направление (разрешить/запретить/отклонить входящие/исходящие); откуда идёт соединение (например, здесь можно указать IP, для которого запретить доступ). Всё.

Давайте перейдём непосредственно к самой утилите ufw и рассмотрим особенности. Первое — читаем man ufw (у меня нет никакого желания переписывать это сюда). Чтобы сэкономить время, вот то, что делать нельзя:

  • включать фаервол (ufw enable) без предварительной настройки — это может привести к полной блокировке машины, кроме локального доступа («прощай сервер!»);
  • собственно, практически то же самое, что и первый пункт, но это действительно важно: не заблокируйте себя! — если вы заходите на сервер по SSH, то первым делом разрешаете соединения на 22 порт (по умолчанию): ufw allow 22/tcp или ufw allow ssh;
  • я серьёзно! ufw allow proto tcp from any to any port 22;
  • помните, что правила применяются последовательно, поэтому если запретить что-то, а потом разрешить всё, то всё будет разрешено.

Хочу отметить пару моментов, которые надо понимать, и про которые нельзя забывать. Часто можно писать правила не по номеру порта, а по названию сервиса. Сервисы перечислены в файле /etc/services, например, там есть ssh, который привязан к 22 порту, это значит, что можно писать ufw allow ssh. Но, тут есть нюанс. Например, вы повесили ssh на 1022 порт, поправили /etc/services, и прописали ufw allow ssh всё хорошо, но может случиться страшное: система решила обновить /etc/services, и поставить там заново 22 порт. В итоге, система больше не доступна (22 порт открыт, а ssh висит на 1022 порте). Поэтому я лично всегда за прописывание портов напрямую — надо открыть 80 порт, пиши: ufw allow 80

Теперь можно разобраться с приложениями (app). Смотрим список: ufw app list — выводится список названий профилей приложений. Там может быть много всего, что есть в системе, например: apache2, nginx, openssh-server и так далее. Смысл их в том, чтобы использовать так же как сервисы — прописывать правила в более простом виде. Но, тут есть сложность в том, как именно ufw применяет и обновляет эти правила. В мануале написано: «The default application policy is skip, which means that the update --add-new command will do nothing» — это значит, что по умолчанию невозможно применить новый профиль приложению через update --add-new. Другими словами, нужно отслеживать обновленные и новые профили приложений и обрабатывать по-разному: для новых профилей ufw allow|deny|reject appname, а для измененных: ufw app update appname. В общем это никогда не запомнишь. Проще не использовать. Там есть ещё один момент, который заключается в сбрасывании всех правил при включении фаервола. Эмпирическим путём я выяснил, что если разрешить какие-то соединения через профили приложений (типа: ufw allow OpenSSH), а других правил нет (а мы помним про skip-политику для приложений), то при включении фаервола заблокируется всё. В общем, штука полезная, если у вас очень много софта на сервере… Очень много. В остальных случаях я не рекомендую этим пользоваться.

Это было о грустном, теперь о хорошем: даже если у вас много правил, ими всё равно можно удобно управлять без использования сомнительных «упрощалок». Помогут нам numbered-правила. Вкратце: каждому правилу назначается номер, и можно управлять этим правилом по номеру. Например, чтобы удалить правило номер 3, нужно сделать: ufw delete 3, посмотреть список правил с номерами можно командой: ufw status numbered

Ещё один момент, на котором хотелось бы заострить внимание: чем отличается deny от reject. Я уже устал повторяться, но тут тоже всё очень просто: deny не делает ничего, просто не дает доступ, reject же мгновенно отправляет ответ «Connection refused». Собственно, использовать их надо именно в таком ключе: если надо «скрыть» какой-то сервис, используется deny, если надо показать, что сервис есть, но доступ к нему закрыт, то используется reject. Например, если использовать фаервол для защиты от перебора пароля, тогда надо отправлять reject, а если надо скрыть какой-то сервис, например, FTP от всех, кроме локальных пользователей, то используется deny. Ещё deny лучше при защите от сканирования портов — сканер видит, что порт закрыт (не открыт) и «пропускает» его, а если увидит reject, то это повод приглядеться к этому серверу.

Итого, для простого использования достаточно знать следующее:

  1. установить правила по умолчанию можно с помощью следующих команд:
    ufw default deny incoming
    ufw default allow outgoing
  2. разрешить соединения на определенный порт:
    ufw allow 22
    ufw allow 80/tcp
  3. запретить соединения на определенный порт:
    ufw deny 21
  4. отклонять соединения на определенном порте:
    ufw reject 7
  5. запустить фаервол (и добавить в автозагрузку):
    ufw enable
  6. посмотреть статус (и правил) фаервола:
    ufw status
    ufw status verbose
    ufw status numbered
  7. выключить фаервол (и убрать из автозагрузки):
    ufw disable

В общем, будьте аккуратны, защищая себя. Не сломайте систему. (Как-то вместо простой статьи с описанием ufw получилась «пугалка», но, как говорится, «предупреждён — значит защищён!»)

Оставить комментарий

Главное

Разделы сайта

Наш интернет-магазин

Поиск по сайту

Закладки и сервисы

Метки

Реклама

Архив записей

Реклама

Подписка и счетчики


Участник Blograte.ru

© 2008–2017 Блог «Перейти с Windows на Linux». Все права сохранены и защищены.