- Как установить и использовать брандмауэр Linux
- Защитите свой рабочий стол Ubuntu с помощью брандмауэра UFW
- Что такое брандмауэр?
- Установка UFW
- Активация UFW
- Политика по умолчанию
- Разрешение входящего трафика
- Удаление правил
- Защита Linux-сервера. Что сделать в первую очередь
- Содержание
- Нерутовый юзер
- Ключи вместо паролей SSH
- Файрвол
- Fail2Ban
- Автоматические обновления безопасности
- Смена портов по умолчанию
- На правах рекламы
Как установить и использовать брандмауэр Linux
Защитите свой рабочий стол Ubuntu с помощью брандмауэра UFW
Linux является одной из самых безопасных настольных и серверных платформ на планете. Из коробки вы найдете большинство дистрибутивов Linux гораздо более безопасными, чем Windows или macOS. На самом деле, для большинства случаев использования настольных систем безопасность, предлагаемая в большинстве дистрибутивов Linux, будет вам полезна. Однако это не означает, что вы должны полностью игнорировать безопасность операционной системы, для которой вы доверили свои данные. На самом деле, вам следует знать, как работать с брандмауэром Linux.
Что такое брандмауэр?
Проще говоря, брандмауэр – это подсистема на компьютере, которая блокирует входящий или исходящий сетевой трафик на ваш компьютер. Брандмауэры могут быть созданы как очень ограничивающие (позволяющие очень мало входить и/или выходить) или очень разрешающие (допускающие довольно много входов и/или выходов). Брандмауэры бывают двух разных типов:
- Аппаратное обеспечение – физические устройства, которые служат только для защиты вашей сети (и компьютеров в вашей сети).
- Программное обеспечение – подсистемы на отдельных компьютерах, которые защищают только хост-компьютер.
Большинство домашних сетей зависят от их комбинации. Аппаратным решением обычно является модем/маршрутизатор, развернутый вашим провайдером. Много раз эти устройства настроены как очень строгие. Что касается программного обеспечения, ваш настольный компьютер использует программный брандмауэр. Одним из таких брандмауэров, который можно установить и использовать во многих дистрибутивах Linux (таких как Ubuntu и его производные), является Uncomplicated Firewall (UFW). Несложный брандмауэр – именно то, на что это похоже. Это простой инструмент, который делает управление блокировкой/разрешением сетевого трафика довольно простым. UFW – это инструмент для командной строки, который отлично справляется с задачей защиты вашего компьютера с Linux.
Установка UFW
Как на Ubuntu, так и на большинстве производных Ubuntu UWF уже установлен. Чтобы узнать, установлен ли UFW на вашем компьютере, откройте окно терминала и введите команду:
Эта команда (скорее всего) сообщит, что UFW неактивен. Если вы обнаружите, что UFW не установлен, введите команду
Активация UFW
Поскольку UFW по умолчанию неактивен, вы захотите его активировать. Для этого выполните команду
Теперь, когда вы проверяете статус, он будет отображаться как активный.
Политика по умолчанию
Большинству пользователей не нужно слишком беспокоиться о политике по умолчанию. Однако лучше по крайней мере понять основы этой политики.
Политика по умолчанию – это набор правил, которые управляют обработкой трафика, который явно не соответствует никаким другим правилам. Существует четыре политики по умолчанию:
- INPUT – трафик, поступающий в компьютер.
- ВЫХОД – трафик, выходящий из компьютера.
- FORWARD – трафик, который пересылается из одного пункта назначения в другой.
- ПОЛИТИКА ПРИЛОЖЕНИЯ – трафик, который определяется приложением (а не сетевым портом).
Для большинства пользователей будут важны только политики INPUT и OUTPUT.
Политики UFW по умолчанию задаются в файле /etc/default/ufw . Выполните команду
и найдите следующие четыре строки:
- DEFAULT_INPUT_POLICY = “DROP”
- DEFAULT_OUTPUT_POLICY = “ПРИНЯТЬ”
- DEFAULT_FORWARD_POLICY = “DROP”
- DEFAULT_APPLICATION_POLICY = “SKIP”
Важно знать, что каждая из вышеперечисленных политик может быть скорректирована с немного разными значениями по умолчанию.
- INPUT/OUTPUT/FORWARD может быть установлен на ACCEPT, DROP или REJECT
- ПРИЛОЖЕНИЕ может быть установлено на ПРИНЯТЬ, ОТКЛЮЧИТЬ, ОТКАЗАТЬ или ПРОПУСТИТЬ
Разница между ACCEPT, DROP и REJECT:
- ПРИНЯТЬ – разрешить трафик через брандмауэр.
- REJECT – не разрешать трафик через брандмауэр и отправлять сообщение о недоступности получателя ICMP обратно отправляющему источнику.
- DROP – запретить прохождение пакета через брандмауэр и не отправлять ответ.
Вы можете настроить политики по умолчанию в соответствии с вашими потребностями. Если вы измените политики в файле, перезагрузите правила UFW с помощью команды:
Разрешение входящего трафика
Поскольку вам, вероятно, не потребуется изменять политику исходящего трафика по умолчанию, давайте сосредоточимся на разрешении входящего трафика. Скажем, например, вы хотите иметь возможность защищать оболочку на своем рабочем столе (используя команду ssh ) с другого компьютера. Для этого вам нужно указать UFW разрешить входящий трафик через стандартный порт SSH (порт 22).Команда для этого будет:
Приведенная выше команда позволит любому компьютеру в вашей сети (или даже вне вашей сети, если ваш маршрутизатор настроен на пропуск внешнего трафика) получить доступ к вашему компьютеру через порт 22.
Это все хорошо, если только вы не хотите разрешить доступ к определенным компьютерам в вашей сети. Скажем, например, вы хотите разрешить только один компьютер – компьютер с IP-адресом 192.168.1.162. Для этого команда будет:
Оператор allow from указывает UFW, что ниже следует адрес, с которого разрешается трафик. к любому порту указывает UFW разрешить трафик для указанного порта. В приведенном выше примере компьютер only в вашей сети, которому будет разрешено защищать оболочку на вашем компьютере, будет иметь компьютер с IP-адресом 192.168.1.162.
Вы также можете запретить трафик на указанный сетевой интерфейс. Скажем, например, ваша машина имеет два сетевых интерфейса:
- ВНУТРЕННИЙ – с использованием сетевого интерфейса ens5 со схемой IP-адресов 192.168.1.x.
- ВНЕШНЕЕ – использование сетевого интерфейса enp0s3 со схемой IP-адресов 172.217.1.x
Что если вы хотите оставить правило, разрешающее входящий трафик ssh на 192.168.1.162, но запретить весь входящий трафик от внешнего интерфейса? Для этого команда будет:
, чтобы увидеть, что трафик ssh из 192.168.1.162 по-прежнему разрешен, тогда как трафик с внешнего интерфейса запрещен.
Удаление правил
Если вы обнаружите, что создали правила, вызывающие проблемы с подключением компьютеров к вашему компьютеру, вы можете удалить созданные вами правила. Первое, что вы хотите сделать, – это чтобы UFW перечислил ваши правила по номеру. Для этого выполните команду:
Скажем, вы хотите удалить правило номер 1. Для этого введите команду:
Вам будет предложено подтвердить удаление правила. Введите y и используйте Enter/Return на клавиатуре для подтверждения. Выполните команду
Источник
Защита Linux-сервера. Что сделать в первую очередь
Habib M’henni / Wikimedia Commons, CC BY-SA
В наше время поднять сервер на хостинге — дело пары минут и нескольких щелчков мыши. Но сразу после запуска он попадает во враждебную среду, потому что открыт для всего интернета как невинная девушка на рокерской дискотеке. Его быстро нащупают сканеры и обнаружат тысячи автоматически скриптовых ботов, которые рыскают по сети в поисках уязвимостей и неправильных конфигураций. Есть несколько вещей, которые следует сделать сразу после запуска, чтобы обеспечить базовую защиту.
Содержание
Нерутовый юзер
Первым делом нужно завести для себя нерутового юзера. Дело в том, что у пользователя root абсолютные привилегии в системе, а если разрешить ему удалённое администрирование, то вы сделаете половину работы для хакера, оставив для него валидный username.
Поэтому нужно завести другого юзера, а для рута отключить удалённое администрирование по SSH.
Новый пользователь заводится командой useradd :
Затем для него добавляется пароль командой passwd :
Наконец, этого пользователя нужно добавить в группу, которая имеет право выполнять команды с повышением привилегий sudo . В зависимости от дитрибутива Linux, это могут быть разные группы. Например, в CentOS и Red Hat юзера добавляют в группу wheel :
В Ubuntu он добавляется в группу sudo :
Ключи вместо паролей SSH
Брутфорс или утечка паролей — стандартный вектор атаки, так что аутентификацию по паролям в SSH (Secure Shell) лучше отключить, а вместо неё использовать аутентификацию по ключам.
Есть разные программы для реализации протокола SSH, такие как lsh и Dropbear, но самой популярной является OpenSSH. Установка клиента OpenSSH на Ubuntu:
Установка на сервере:
Запуск демона SSH (sshd) на сервере под Ubuntu:
Автоматический запуск демона при каждой загрузке:
Нужно заметить, что серверная часть OpenSSH включает в себя клиентскую. То есть через openssh-server можно подключаться к другим серверам. Более того, со своей клиентской машины вы можете запустить SSH-туннель с удалённого сервера на сторонний хост, и тогда сторонний хост будет считать удалённый сервер источником запросов. Очень удобная функция для маскировки своей системы. Подробнее см. статью «Практические советы, примеры и туннели SSH».
На клиентской машине обычно нет смысла ставить полноценный сервер, чтобы не допускать возможность удалённого подключения к компьютеру (в целях безопасности).
Итак, для своего нового юзера сначала нужно сгенерировать ключи SSH на компьютере, с которого вы будете заходить на сервер:
Публичный ключ хранится в файле .pub и выглядит как строка случайных символов, которые начинаются с ssh-rsa .
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ3GIJzTX7J6zsCrywcjAM/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWm49NWvoo0hdM71sblF956IXY3cRLcTjPlQ84mChKL1X7+D645c7O4Z1N3KtL7l5nVKSG81ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUmt1a00mWci/1qUlaVFft085yvVq7KZbF2OP2NQACUkwfwh+iSTP username@hostname
Затем из-под рута создать на сервере директорию SSH в домашнем каталоге пользователя и добавить публичный ключ SSH в файл authorized_keys , используя текстовый редактор вроде Vim:
Наконец, установить корректные разрешения для файла:
и изменить владение на этого юзера:
На стороне клиента нужно указать местоположение секретного ключа для аутентификации:
Теперь можно залогиниться на сервер под именем юзера по этому ключу:
После авторизации можно использовать команду scp для копирования файлов, утилиту sshfs для удалённого примонтирования файловой системы или директорий.
Желательно сделать несколько резервных копий приватного ключа, потому что если отключить аутентификацию по паролю и потерять его, то у вас не останется вообще никакой возможности зайти на собственный сервер.
Как упоминалось выше, в SSH нужно отключить аутентификацию для рута (по этой причине мы и заводили нового юзера).
На CentOS/Red Hat находим строку PermitRootLogin yes в конфигурационном файле /etc/ssh/sshd_config и изменяем её:
На Ubuntu добавляем строку PermitRootLogin no в конфигурационный файл 10-my-sshd-settings.conf :
После проверки, что новый юзер проходит аутентификацию по своему ключу, можно отключить аутентификацию по паролю, чтобы исключить риск его утечки или брутфорса. Теперь для доступа на сервер злоумышленнику необходимо будет достать приватный ключ.
На CentOS/Red Hat находим строку PasswordAuthentication yes в конфигурационном файле /etc/ssh/sshd_config и изменяем её следующим образом:
На Ubuntu добавляем строку PasswordAuthentication no в файл 10-my-sshd-settings.conf :
Инструкцию по подключению двухфакторной аутентификации по SSH см. здесь.
Файрвол
Файрвол гарантирует, что на сервер пойдёт только тот трафик по тем портам, которые вы напрямую разрешили. Это защищает от эксплуатации портов, которые случайно включились с другими сервисами, то есть сильно уменьшает поверхность атаки.
Перед установкой файрвола нужно убедиться, что SSH внесён в список исключений и не будет блокироваться. Иначе после запуска файрвола мы не сможем подключиться к серверу.
С дистрибутивом Ubuntu идёт Uncomplicated Firewall (ufw), а с CentOS/Red Hat — firewalld.
Разрешение SSH в файрволе на Ubuntu:
На CentOS/Red Hat используем команду firewall-cmd :
После этой процедуры можно запустить файрвол.
На CentOS/Red Hat запускаем сервис systemd для firewalld:
На Ubuntu используем такую команду:
Fail2Ban
Сервис Fail2Ban анализирует логи на сервере и подсчитывает количество попыток доступа с каждого IP-адреса. В настройках указаны правила, сколько попыток доступа разрешено за определённый интервал — после чего данный IP-адрес блокируется на заданный отрезок времени. Например, разрешаем 5 неудачных попыток аутентификации по SSH в промежуток 2 часа, после чего блокируем данный IP-адрес на 12 часов.
Установка Fail2Ban на CentOS и Red Hat:
Установка на Ubuntu и Debian:
В программе два конфигурационных файла: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf . Ограничения для бана указываются во втором файле.
Джейл для SSH включён по умолчанию с дефолтными настройками (5 попыток, интервал 10 минут, бан на 10 минут).
Кроме SSH, Fail2Ban может защищать и другие сервисы на веб-сервере nginx или Apache.
Автоматические обновления безопасности
Как известно, во всех программах постоянно находят новые уязвимости. После публикации информации эксплоиты добавляются в популярные эксплоит-паки, которые массово используются хакерами и подростками при сканировании всех серверов подряд. Поэтому очень важно устанавливать обновления безопасности как только они появляются.
На сервере Ubuntu в конфигурации по умолчанию включены автоматические обновления безопасности, так что дополнительных действий не требуется.
На CentOS/Red Hat нужно установить приложение dnf-automatic и включить таймер:
Смена портов по умолчанию
SSH был разработан в 1995 году для замены telnet (порт 23) и ftp (порт 21), поэтому автор программы Тату Илтонен выбрал порт 22 по умолчанию, и его утвердили в IANA.
Естественно, все злоумышленники в курсе, на каком порту работает SSH — и сканируют его вместе с остальными стандартными портами, чтобы узнать версию программного обеспечения, для проверки стандартных паролей рута и так далее.
Смена стандартных портов — обфускация — в несколько раз сокращает объём мусорного трафика, размер логов и нагрузку на сервер, а также сокращает поверхность атаки. Хотя некоторые критикуют такой метод «защиты через неясность» (security through obscurity). Причина в том, что эта техника противопоставляется фундаментальной архитектурной защите. Поэтому, например, Национальный институт стандартов и технологий США в «Руководстве по безопасности сервера» указывает необходимость открытой серверной архитектуры: «Безопасность системы не должна полагаться на скрытность реализации её компонентов», — сказано в документе.
Теоретически, смена портов по умолчанию противоречит практике открытой архитектуры. Но на практике объём вредоносного трафика действительно сокращается, так что это простая и эффективная мера.
Номер порта можно настроить, изменив директиву Port 22 в файле конфигурации /etc/ssh/sshd_config. Он также указывается параметром -p
в sshd. Клиент SSH и программы sftp тоже поддерживают параметр -p
можно использовать для указания номера порта при подключении с помощью команды ssh в Linux. В sftp и scp используется параметр -P
(заглавная P). Указание из командной строки переопределяет любое значение в файлах конфигурации.
Если серверов много, почти все эти действия по защите Linux-сервера можно автоматизировать в скрипте. Но если сервер только один, то лучше вручную контролировать процесс.
На правах рекламы
Закажи и сразу работай! Создание VDS любой конфигурации и с любой операционной системой в течение минуты. Максимальная конфигурация позволит оторваться на полную — 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe. Эпичненько 🙂
Источник