Установка и настройка Fail2ban. Защита ssh сервера

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

Создайте пары ключей SSH

Подготовьте ключи для использования с вашим узлом. Для этого:

Linux/MacOS Windows 10 Windows 7/8

  1. Откройте терминал.

  2. Создайте новый ключ с помощью команды ssh-keygen:

    $ ssh-keygen -t rsa -b 2048

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

    Публичная часть ключа будет сохранена в файле с названием <имя_ключа>.pub.

  1. Запустите или

  2. Создайте новый ключ с помощью команды ssh-keygen. Выполните команду:

    $ ssh-keygen -t rsa -b 2048

    После выполнения команды вам будет предложено указать имя файлов, в которые будут сохранены ключи и ввести пароль для закрытого ключа. По умолчанию используется имя id_rsa, ключи создаются в директории C:\Users\<имя_пользователя>\.ssh\.

    Публичная часть ключа будет сохранена в файле с названием <имя_ключа>.pub.

Создание ключей для Windows будет выполняться с помощью приложения PuTTY.

  1. Скачайте и установите PuTTY.

  2. Убедитесь, что директория, куда вы установили PuTTY, присутствует в PATH:

    1. Нажмите правой кнопкой на Мой компьютер. Выберите пункт Свойства.
    2. В открывшемся окне выберите Дополнительные параметры системы, затем Переменные среды (находится в нижней части окна).
    3. В разделе Системные переменные найдите PATH и нажмите Изменить.
    4. В поле Значение переменной допишите путь к директории, куда вы установили PuTTY.
  3. Запустите приложение PuTTYgen.

  4. В качестве типа генерируемой пары выберите RSA и укажите длину 2048. Нажмите Generate и поводите курсором в поле выше до тех пор, пока не закончится создание ключа.

  5. В поле Key passphrase введите надежный пароль. Повторно введите его в поле ниже.

  6. Нажмите кнопку Save private key и сохраните закрытый ключ. Никогда его никому не передавайте и не говорите никому ключевую фразу от него.

  7. Сохраните ключ в текстовом файле одной строкой. Для этого скопируйте открытый ключ из текстового поля в текстовый файл с названием id_

Задача:

OpenNET сообщает:

Третий день в Сети наблюдается массовый взлом серверов на базе Linux. Имеется подозрение, что атака совершается через неисправленную 0-day уязвимость в одном из доступных по сети сервисов. Среди взломанных систем отмечаются серверы на базе CentOS и другие дистрибутивы на основе пакетной базы RHEL 5 и 6, на которых установлены все доступные обновления. На многих взломанных системах используются панели управления cPanel, DirectAdmin, ISP config и Plesk, но пока не ясно могут ли они быть источником проникновения.

Причины пока не выяснены и программных заплаток (патчей) для закрытия этой уязвимости нет.

Проверка

Проверьте наличие этих файлов на вашем сервере:

ls -la /lib64/ ls -la /lib/

Если файла нет, то вы получите сообщение в ответ на выполнение команды

ls: cannot access /lib64/: No such file or directory

или

ls: cannot access /lib/: No such file or directory

Если файл найден, то проверьте принадлежность этих файлов установленным пакетам.

rpm -qf /lib64/ rpm -qf /lib/

Сообщите о факте обнаружения в службу поддержки.

Защита:

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

Управлять службой можно через KVM для выделенных серверов.

Для виртуальных серверов это можно делать через KVM-консоль в панели управления:

в или через меню управления службами в панели управления ISPManager и т.п. .

Для управления вы должны авторизоваться, зайти в консоль и выполнить команды:

Для CentOS: остановка слубы

service sshd stop

запуск службы

service sshd start

Для Debian или Ubuntu: остановка службы:

service ssh stop

запуск службы

service ssh start

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

  1. Измените порт демона SSH на нестандартный. Это снизит вероятность обнаружения службы.
  2. Закройте доступ к службе SSH со всех адресов кроме списка разрешенных.

Изменение порта

Обычно для службы SSH используется порт 22.

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

Для SSH можно использовать любой незанятый порт в диапазоне 1025-65000. Выберите что-нибудь в верхнем краю диапазона, но этот номер необходимо будет запомнить и сообщать службе поддержки при возникновении проблем.

Помните, что злоумышленники хорошие психологи. Распространенная ошибка изменить номер порта на 22222 или 22022; выберите номер, который трудно угадать.

Для изменения необходимо изменить переменную Port в главном конфигурационном файле ssh демона

/etc/ssh/sshd_config

Например, для того, чтобы он работал на порте 54340:

Port 54340

Убедитесь, что выбранный вами новый порт разрешен на вашем фаерволе. Если это не так, то вы потеряете доступ.

После этого необходимо перезагрузить демон ssh:

Для CentOS: service sshd restart

Для Debian или Ubuntu: service ssh restart

Ограничение доступа к SSH

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

В случае ошибочных действий с вы можете заблокировать себе доступ к вашему серверу.

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

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

В разных системах и дистрибутивах могут использоваться разные средства управления системный фаерволом (брандмаером).

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

Узнать спиок адресов с которых выполнялся вход по SSH:

last -a -w root

Описывать подробно настройку вашего фаервола я не буду. Неопытному человеку это не принесет пользы.

Если вы не знаете как это делать, обратитесь к специалисту.

Настройка SSH

Настройка будет происходить под выделенный сервер, VDS, VPS на Debian, Ubuntu. Конфигурационный файл располагается тут: /etc/ssh/sshd_config. Если у вас обычный хостинг, всё и так должно быть настроено как надо, переходите к разделу авторизации по ключам.

По умолчанию, демон SSHD (именно в него мы вносим изменения) не нуждается в каких-либо настройках и работает нормально. Мы внесём лишь пару небольших изменений с целью ограничить доступ нежелательных лиц к серверу.

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

Подключение к SSH за NAT

Чтобы подключиться к домашней машине с Ubuntu через Интернет, вам необходимо знать свой общедоступный IP-адрес и настроить маршрутизатор на прием данных через порт 22 и их отправку в систему Ubuntu, где работает SSH.

Чтобы определить общедоступный IP-адрес компьютера, к которому вы пытаетесь подключиться по SSH, просто перейдите по следующему URL-адресу: .

Когда дело доходит до настройки переадресации портов , каждый маршрутизатор имеет свой способ настройки переадресации портов. Чтобы узнать, как настроить переадресацию портов, обратитесь к документации маршрутизатора. Короче говоря, вам нужно ввести номер порта, на который будут выполняться запросы (порт SSH по умолчанию — 22), и частный IP-адрес, который вы нашли ранее (с помощью команды ip a ) машины, на которой работает SSH.

После того, как вы нашли IP-адрес и настроили маршрутизатор, вы можете войти в систему, набрав:

ssh [email protected]_ip_address

Если вы открываете свою машину для доступа в Интернет, рекомендуется принять некоторые меры безопасности. Самый простой — настроить маршрутизатор на прием трафика SSH на нестандартный порт и пересылку его на порт 22 на машине, на которой запущена служба SSH.

Вы также можете настроить аутентификацию на основе ключа SSH и подключиться к компьютеру с Ubuntu без ввода пароля.

Рекомендуемые параметры. Безопасность

Сам по себе, неправильно настроенный SSH-сервер — огромная уязвимость в безопасности системы, т. к. у возможного злоумышленника есть возможность получить практически неограниченный доступ к системе. Помимо этого, у sshd есть много дополнительных полезных опций, которые желательно включить для повышения удобства работы и безопасности).

Port, ListenAddress и AddressFamily

На нашем ресурсе есть статья про правильную настройку ssh сервера.

Если есть вопросы, то пишем в комментариях.

Также можете помочь проекту, заранее всем СПАСИБО!!!

Пожертвовать

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Доступ по SSH на ubuntu server

Данная статья посвящена настройкам удаленного доступа к Ubuntu Server.

Принцип подключения очень прост: на стороне клиента мы используем программу для удаленного доступа (например, Putty), на стороне сервера устанавливаем и настраиваем пакет OpenSSH.

При подключении клиент проходит процедуру авторизации у сервера и между ними устанавливается зашифрованное соединение. Более подробно принцип работы протокола SSH рассматривался в статье по ссылке.

Доступ по SSH на ubuntu server

Схема сети представлена ниже. Удаленное подключение к серверу будет производиться с компьютера client.

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

А, именно, задать Ip-адрес, маску сети, шлюз по-умолчанию. Если у вас интерфейс уже настроен – можете этот шаг пропустить. Настройки сетевых интерфейсов задаются в файле /etc/network/interfaces.

Для редактирования воспользуемся текстовым редактором nano.

Попадаем в режим редактирования файла interfaces. Нас тут интересует все, что ниже # The primary network interface. В данный момент сервер получает IP-адрес по DHCP, что не совсем правильно. Сервер должен иметь статический IP, чтобы все узлы в сети точно знали его адрес. Пропишем сетевые настройки вручную.

Мой сервер находится в локальной подсети Серверу назначен IP , маска , шлюз по-умолчанию , адрес DNS-сервера

Доступ по SSH на ubuntu server

Для сохранения файла нажимаем клавиши Ctrl + X   –>  Y —> Enter. Чтобы применить настройки необходимо перезапустить процесс network. Также можно просто перезагрузить сервер командой sudo reboot.

Проверяем (команда ifconfig -a) – настройки применились

  • Все готово для OpesnSS, который можно установить из терминала командами
  • $ sudo apt-get install openssh-client
  • $ sudo apt-get install openssh-server
  • Управлять запуском, остановкой и перезапуском SSH-сервера можно с помощью команд
  • $ sudo service ssh stop | start | restart 

По сути доступ по SSH на сервер уже есть. Но для более тонкой настройки существует конфигурационный файл по адресу /etc/ssh/sshd_config. Доступ к конфигам осуществляется только из под рута.

На стороне клиента скачиваем любую программу для подключения по SSH, я рекомендую Putty. В программе останется лишь ввести Ip-адрес сервера и подключиться к нему. При подключении вводим имя и пароль пользователя.

Поддержите проект

Доступ по SSH на ubuntu server

Друзья, сайт Netcloud каждый день развивается благодаря вашей поддержке. Мы планируем запустить новые рубрики статей, а также некоторые полезные сервисы. 

У вас есть возможность поддержать проект и внести любую сумму, которую посчитаете нужной.

Настройка общих параметров

В созданной нами версии файла мы определили основные параметры для конкретной тюрьмы. Давайте теперь настроем общие параметры для всех. Откроем и рассмотрим некоторые из них.  Если вам потребуется изменить какие-либо значения, для определенной «тюрмы» их нужно скопировать в соответствующий раздел

bantime = 600

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

findtime = 600 maxretry = 3

Два следующих параметра, на которые стоит обратить внимание — findtime и maxretry. Они используются совместно для определения условий отказа клиенту в доступе.

Переменная maxretry устанавливает разрешенное клиенту количество попыток аутентификации во временном окне findtime, прежде чем ему будет отказано в доступе. По умолчанию это выполняется для клиента, который сделал 3 неудачных попытки входа в систему за 10 минут.

destemail = [email protected] sendername = Fail2Ban mta = sendmail

Настройки уведомлений по электронной почте. Параметр destemail указывает адрес электронной почты, на который будут отправляться сообщения об отказе в доступе. Опция sendername указывает, что будет написано в поле отправителя. Параметр mta определяет действие(action), которое нужно выполнить, sendmail-отправить письмо. Все доступные скрипты действий находятся в каталоге /etc/fail2ban/action.d. Если этих действий недостаточно, вы можете написать свои.

action = $(action_)s

В данном параметре настраивается действие Fail2ban при осуществлении отказа в доступе. Значение action_ определяется в файле перед этим параметром. По умолчанию это настройка брандмауэра для отклонения трафика от узла нарушителя до истечения времени отказа в доступе.

Если нужно настроить уведомления по электронной почте, можно заменить action_ на action_mw. Чтобы в сообщении содержались соответствующие записи журнала, укажите action_mwl. Эти значения также заданы по умолчанию, но для использования уведомлений необходимо правильно настроить электронную почту.

  • Изучаем firewalld: простой и мощный файрвол для Linux на замену iptables

После завершения редактирования файла конфигурации его нужно сохранить и перезапустить Fail2ban:

systemctl restart fail2ban

Для проверки работы службы можно воспользоваться программой fail2ban-client:

fail2ban-client status

Вы также можете получить более подробную информацию о конкретной “тюрьме”. Например информация о нашем примере будет следующий.

fail2ban-client status ssh-iptables

Использование sealert

В дополнение к aureport вы можете использовать хороший инструмент безопасности Linux, который называется sealert. Установить его можно так:

$ yum install setools

Теперь у нас есть средство, которое будет выдавать оповещения из файла /var/log/audit/ и даст нам дополнительные сведения о проблемах, выявленных SELinux.

Использовать его можно так:

$ sealert -a /var/log/audit/

Самое интересное тут то, что в оповещениях можно найти советы о том, как решать соответствующие проблемы.

Читайте также:  Как создать виртуальный рабочий стол в Windows 7, 10, XP