Как подключиться к серверу по ssh с помощью пароля или ключа

Откуда Apple знает, что ваш пароль взломан?

По утверждениям Apple для такой проверки пароля iOS пользуется информацией со специализированных ресурсов. Официально они не называются, но их и немного. Одна из самых известных подобных баз именуется Have I Been Pwned. Создатели этого ресурса публикуют учетные данные уже взломанных аккаунтов, информация о которых была найдена как на открытых площадках, так и в даркнете. Надо лишь ввести на сайте свой логин или пароль, и тут же появится информация об их надежности или известности посторонним людям. Правда, кроме самого факта утечки ничего больше узнать не получится – в готовом и открытом виде учетные данные не хранятся. Вполне вероятно, что Apple черпает информацию о ненадежности вашего пароля именно на этом ресурсе.

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

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

Шаблоны в файле настроек SSH

Шаблон состоит из нуля или более символов, которые не являются белыми пробелами, ‘*’ (подстановочного символа, который соответствует нулю или более символам), а также ‘?’ (подстановочный символ, который соответствует ровно одному любому символу). Например, чтобы охарактеризовать любой хост в наборе доменов «.co.uk» можно использовать следующий шаблон:

Host *.co.uk

Следующий шаблон будет соответствовать любому хосту в сетевом диапазоне 192.168.0.:

Host 192.168.0.?

Список шаблонов — это несколько шаблонов, разделённых запятой. Шаблоны внутри списка могут иметь противоположное значение если перед ними стоит восклицательный знак («!»). Например, для разрешения ключа использовать откуда угодно внутри организации, кроме пула «dialup», можно использовать следующее (в authorized_keys):

from="!*.dialup.example.com,*.example.com"

Помните, что отрицательное совпадение никогда само по себе не даст положительных результатов. Например, попытка сопоставить хост «host3» следующими списку шаблонов не найдёт совпадений:

from="!host1,!host2"

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

from="!host1,!host2,*"

Как в iOS проверить свой пароль на безопасность по базе украденных паролей?

Принудительная проверка пароля на безопасность включается в системе единоразово. После активации функции система уже в пассивном режиме будет анализировать пароли без участия пользователя. От него потребуется лишь ответные действия в случае выявления ненадежности используемой комбинации – заменить ее на новую, более сложную. И даже в этом iOS поможет, предложив создать пароль, который трудно будет быстро подобрать. Вот что для этого надо сделать.

1. Перейдите в Настройки → Пароли.

2. Подтвердите вход в этот раздел с помощью отпечатка пальца или сканированием лица, перейдите в раздел «Рекомендации по безопасности».

3. Активируйте переключатель «Выявлять украденные пароли» и просто дождитесь появления списка потенциально скомпрометированных паролей.

4. При нажатии на проблемный пароль будет представлена подробная информация о подозрении к нему.

5. Нажмите на кнопку «Изменить пароль на веб-сайте» и зайдите в свой аккаунт на открывшемся сайте.

6

Замените пароль профиля, обратив внимание на комментарии браузера Safari о его надежности или выбрав предложенный системой надежный пароль. Его можно будет и не запоминать – он останется в Связке ключей iCloud и будет автоматически вводиться на всех ваших устройствах Apple

7. После подтверждения замены надо убедитесь, что ваш аккаунт уже не значится незащищенным в «Настройках».

Как работает двухфакторная аутентификация

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

Принцип работы двухфакторной аутентификации заключается в том, что требуется подтверждение личности пользователя двумя разными методами. Одним из этих методов обычно является пароль, который пользователь придумал сам. А второй элемент аутентификации должен быть получен по другому каналу, который пользователь привязал к своему аккаунту. Таким другим каналом может быть может быть одноразовый код из СМС сообщения, код-ответ из специального приложения (используется, например, в WebMoney), одноразовый пароль, выданный банкоматом (используется, например, в Сбербанк-онлайн) и другие варианты.

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

Настройка Fail2ban для SSH

Мы можем настроить Fail2ban, изменив файл /etc/fail2ban/jail.conf. Перед изменением сделайте резервную копию этого файла.

ubuntu@ubuntu:~$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Теперь мы настроим Fail2ban, чтобы предотвратить злонамеренные входы в службу sshd. Откройте файл /etc/fail2ban/jail.local в своем любимом редакторе.

ubuntu@ubuntu:~$ sudo nano /etc/fail2ban/jail.local

Перейдите в раздел и введите параметры конфигурации в разделе .


ignoreip = 127.0.0.1/8 192.168.18.10/32

bantime = 300

maxretry = 2

findtime = 600

ignoreip – это список масок cidr, IP-адресов или DNS-хостов, разделенных пробелом. Добавьте свои доверенные IP-адреса в этот список, и эти IP-адреса будут внесены в белый список и не будут заблокированы fail2ban, даже если они выполнят атаку грубой силы на сервере.

bantime – это время, в течение которого IP-адрес будет заблокирован после определенного количества неудачных попыток доступа к серверу.

maxretry – это максимальное количество неудачных попыток, после которых IP-адрес блокируется fail2ban на определенное время.

findtime – это время, в течение которого, если хост делает неудачные попытки maxretry, он будет заблокирован.

После настройки вышеуказанных параметров теперь мы настроим сервис, к которому будут применяться вышеуказанные правила. По умолчанию Fail2ban имеет предварительно определенные фильтры для различных сервисов, поэтому нам не нужно вводить какие-либо конкретные записи для сервисов. Мы только включаем или отключаем различные службы в файле конфигурации. Откройте файл /etc/fail2ban/jail.local в своем любимом редакторе.

ubuntu@ubuntu:~$ sudo nano /etc/fail2ban/jail.local

Найдите в файле раздел  и введите в него следующие параметры.


enable = true

port = ssh

filter = sshd

logpath = /var/log/auth.log

maxretry = 3
  • enabled определяет, защищена ли эта служба с помощью fail2ban или нет. Если включено – истина, то служба защищена; в противном случае он не защищен.
  • port определяет служебный порт.
  • filter относится к файлу конфигурации, который будет использовать fail2ban. По умолчанию он будет использовать файл /etc/fail2ban/filter.d/sshd.conf для службы ssh.
  • logpath  определяет путь к журналам, fail2ban будет следить за защитой сервиса от различных атак. Для службы ssh журналы аутентификации можно найти в /var/log/auth.log, поэтому fail2ban будет отслеживать этот файл журнала и обновлять брандмауэр, обнаруживая неудачные попытки входа в систему.
  • maxretry определяет количество неудачных попыток входа в систему, прежде чем они будут заблокированы fail2ban.

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

ubuntu@ubuntu:~$ sudo systemctl restart fail2ban.service

ubuntu@ubuntu:~$ sudo systemctl status fail2ban.service

Как перехватить SSH пароль

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

В SSH для входа на удалённый компьютер можно использовать два способа:

  • ввод пароля пользователя на удалённой системе
  • аутентификация с помощью публичного ключа

Если вход выполняется по паролю, то можно представить следующий сценарий атаки:

  • трафик пользователя перенаправляется на машину атакующего
  • атакующий отслеживает попытки подключения к SSH серверу и перенаправляет их на свой SSH сервер
  • SSH сервер атакующего настроен, во-первых, вести журнал всех введённых данных, в том числе пароля пользователя, а, во-вторых, передавать команды на легитимный SSH сервер, к которому хочет подключиться пользователь, для их выполнения, а затем возвращать результаты легитимному пользователю

Программа SSH MITM выполняет именно то, что описано выше.

Инструмент SSH MITM состоит из нескольких компонентов:

  • модифицированный сервер SSH
  • вспомогательные скрипты для выполнения сопутствующих действий: обнаружение SSH подключений, ARP спуфинг и сниффинг трафика, перенаправление портов.

При своей работе SSH MITM использует следующие инструменты (убедитесь, что они установлены в вашей системе):

  • tshark (версия Wireshark с интерфейсом командной строки)
  • ettercap (используется только для ARP спуфинга, поэтому вместо неё можно использовать arpspoof)
  • nmap
  • iptables

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

  • ARP спуфинг. Во время этой атаки, компьютер атакующего рассылает ложные сообщения ARP пакета о том, что MAC адресом роутера является MAC адрес компьютера атакующего. В результате компьютеры в локальной сети начинают отправлять сетевые пакеты через компьютер атакующего. Это универсальный вариант, который подойдёт во всех случаях
  • DNS спуфинг. Суть в подмене ответов на DNS запросы, в результате компьютер жертвы будет получать неправильные IP адреса для запрашиваемых хостов. Этот вариант подходит только если подключение к удалённому SSH серверу выполняется по имени хоста, например:
ssh root@w-e-b.site

DNS спуфинг можно выполнить во время атаки человек-посередине, либо с помощью мошеннического DNS сервера (в этом случае в роутере или на компьютере жертвы нужно будет установить IP адрес мошеннического DNS сервера.

Управление пользователями

Так как Linux заточена под использование большим количеством людей одновременно, разработчики придумали для нее продвинутую иерархию пользователей. У каждого свой набор прав и свои возможности. И есть целый набор команд для работы с ними. Рассмотрим главные.

useradd — создает на сервере новую учетную запись. По сути, нового пользователя. Синтаксис: useradd имя будущей учетной записи. Имя можно указать любое на свой вкус. Потом останется лишь добавить для нового аккаунта пароль.

passwd — задает пароль для учетной записи. Работает вкупе с предыдущей командой. То есть сразу после создания аккаунта, пишем: passwd имя новой учетной записи. После этого система попросит придумать и указать пароль для новой учетной записи.

Система безопасности в Linux не показывает во время ввода пароля даже звездочки, но это не значит, что он не вводится. Продолжайте набирать вслепую, а как закончите, нажмите Enter, и все сработает. И не бойтесь запутаться, вас попросят повторить придуманный пароль.

userdel — удаляет выбранную учетную запись. Синтаксис: userdel имя учетной записи, которую нужно стереть

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

  • -с — добавляет комментарий к аккаунту (можно вписать любой текст по желанию, чтобы запомнить для чего нужен выбранный пользователь).
  • -d — меняет расположение домашней директории выбранной учетной записи.
  • -e — указывает время, которое будет существовать аккаунт (после этого сработает автоматический userdel).
  • -g — меняет группу, к которой принадлежит аккаунт.
  • -G — привязывает аккаунт к выбранной группе.
  • -L — блокирует пользователя.
  • -m — перемещает контент из домашней папки пользователя в другую папку.
  • -p — устанавливает незашифрованный пароль (лучше так не делать).
  • -s — задает конкретную оболочку для нового аккаунта на усмотрение администратора компьютера.
  • -U — снимает блокировку с выбранной учетной записи.

Узнать пароль, если потерял

Поменять или установить пароль можно только с мобильной версии и если есть хотя бы один способ для подтверждения данных. Еще один вариант, как изменить защитный код – использовать вкладку: «Восстановление», если владелец не помнит предыдущий.

Инструкция:

  1. Зайти в Тик Ток – раздел: «Вход в аккаунт».
  2. Под формой ввода: «Забыли пароль» – ввести номер телефона или email.
  3. Получить комбинацию для ввода – перейти к созданию нового пароля.
  4. Войти с новыми данными в аккаунт.

Еще один вариант, как посмотреть пароль в Тик Токе – через сохранение в Google Chrome.Если владелец учетной записи ранее использовал компьютерную версию и вводил данные – сработает автоматическое сохранение.

Перейти в браузере для просмотра пароля:

  1. Открыть веб-обозреватель – нажать сверху три точки.
  2. Настройки – Пароли.
  3. Ввести сверху в поиске: «Tik Tok» – нажать рядом с логином по значку в виде глаза.
  4. Скопировать пароль и использовать для входа в профиль.

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

Как работает протокол SSH

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

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

Публичный ключ используется для шифрования сообщений (он не является секретным), которые можно расшифровать только приватным ключом. Это свойство и используется для аутентификации с помощью пары ключей. Публичный ключ загружается на удаленный сервер, к которому необходимо получить доступ. Его нужно добавить в специальный файл ~/.ssh/authorized_keys.

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

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

Системные компоненты и данные

Утилиты, делящиеся разного рода справочной информацией с администратором компьютера.

df — отображает количество свободного пространства на жестком диске. Правда, в неудобном формате, в виде блоков. Поэтому обычно эту утилиту используют вкупе с опцией -m, чтобы конвертировать данные в привычные и удобоваримые мегабайты.

du — показывает, сколько весит конкретный элемент файловой системы. Чтобы узнать, сколько места занимает timeweb.html на моем рабочем столе, введу в терминал следующее: du ~/Desktop/timeweb.html. По пути столкнусь с той же проблемой, что сталкивался при работе с df. Опять эти блоки. Меняем на мегабайты с помощью ключа -h. Получится du -h ~/Desktop/timeweb.html

free — это df для оперативной памяти. Показывает, сколько свободно и сколько используется.

uname — рассказывает подробности о системе. Обычно используется с аргументом -a, чтобы вывести сразу все данные, включая время и разрядность установленной операционной системы. А вообще можно по отдельности доставать что-то конкретное – имя ядра через опцию -s, имя ноды через опцию -n, тип процессора через опцию -p.

whoami — расскажет, кто вы такой, если вдруг забыли. Ваш логин при подключении к серверу.

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

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

Шаблон для мониторинга за SSH подключениями

Я подготовил простой шаблон, который состоит из:

  1. Элемента данных SSH auth, с ключом log[/var/log/secure,»^.*sshd.*(Accepted|closed).*»,,,,,] и типом данных — Журнал (лог) 
  2. Триггера с условием {SSH Auth:log[/var/log/secure,»^.*sshd.*(Accepted|closed).*»,,,,,].str(Accepted,#1)}=1, который ищет в элементе данных строку Accepted и срабатывает, если ее находит. 

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

На практике это все выглядит так. Когда вы подключаетесь по ssh на сервер, в zabbix приходит следующая информация.

Если включен триггер, то на почту получите уведомление, где сразу в тексте уведомления будет видно пользователя и адрес, с которого он подключился к серверу. Это удобно.

После того, как пользователь завершит свой сеанс, получите еще одно уведомление.

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

Скачиваем шаблон для версии 3.4 тут ssh-auth.xml. С другими версиями не проверял.

Как установить SSH MITM

В качестве машины атакующего я буду использовать Kali Linux. Там уже имеются программы tshark, ettercap, arpspoof, nmap и iptables. Поэтому устанавливаем оставшиеся зависимости и SSH MITM следующим образом:

sudo apt install python3-netaddr python3-netifaces
git clone https://github.com/jtesta/ssh-mitm
cd ssh-mitm/
export LANG=en_US.utf-8
sudo ./install.sh

Обратите внимание на строку export LANG=en_US.utf-8 — если у вас система на английском языке, то эту строку можно пропустить. Она нужна поскольку будет скачен исходный код SSH и будет проверена его подлинность с помощью GPG

Но дело в том, что GPG выводит сообщения на языке системы, а проверка в установочном скрипте install.sh выполняется только для английского языка. В общем, если не выполнить эту команду, то установка не завершиться из-за того, что установочный скрипт будет всё время спотыкаться о проверку подписи.

Также ближе к концу установки программа напишет:

Kali Linux detected with no AppArmor installed.  For added safety, it is highly recommended (though not required) that sshd_mitm is run in a restricted environment.  Would you like to automatically enable AppArmor? (y/n) n

Я выбрал «n».

7.4. Как сделать импорт или экспорт базы данных через SSH? Работа с БД по SSH

Для импорта сначала загружаете дамп на сервер. Дамп должен быть в формате .sql
Далее подключаетесь на сервер по ssh и выполняете команду:

mysql -u пользователь_БД -p имя_БД < файл_дампа_БД

В случае неудачи всегда будет указанна ошибка из за которой импорт не удался или прервался.

Для экспорта существует утилита, которая позволяет сделать бэкап базы данных в традиционном SQL-формате – mysqldump. Общий вид в командной строке:

mysqldump –u пользователь_БД -p имя-БД > файл_дампа_БД

Также утилита имеет много опций и ключей, рассмотрим несколько основных полезных примеров по использованию mysqldump.

mysqldump -–all-databases -uUSER -pPASSWORD > /path/mysql-db-server.sql

Команда с опцией -–all-databases сохраняет все базы данных пользователя USER на MySQL-сервере.

mysql -uUSER -pPASSWORD < /path/mysql-db-server.sql

Восстанавливает все БД mysql пользователя USER. Если USER — root — то все БД.

mysqldump -uUSER -pPASSWORD DATABASE table1 table2 table3 > /path/ DATABASE_t1-t2-t3.sql

Сохраняет таблицы table1, table2, table3, из базы DATABASE в файле DATABASE_t1-t2-t3.sql.

mysqldump —no-data -uUSER -pPASSWORD DATABASE > /path/DATABASE-schema.sql

Указав опцию —no-data команда сохранит структуру таблиц (без данных) в файле DATABASE_schema.sql.

mysqldump —add-drop-table -uUSER -pPASSWORD DATABASE > /path/DATABASE.sql

Опция —add-drop-table добавит команду DROP TABLE (удаление таблицы) перед созданием таблиц.

mysqldump —databases -uUSER -pPASSWORD DATABASE > /path/DATABASE.sql

Опция —databases добавит команду CREATE DATABASE перед созданием базы данных. Это позволяет не создавать и не задавать базу данных при восстановлении.

mysqldump -uUSER –pPASSWORD –h192.168.0.1 DATABASE > /path/DATABASE.sql

Команда сделает бэкап базы DATABASE с сервера с ip-адресом 192.168.0.1

mysqldump —max_allowed_packet=8M -uUSER –pPASSWORD DATABASE > /path/DATABASE.sql

Опция —max_allowed_packet=8M принудительно изменит размер пакета считываемых данных в оперативную память размером в 8 мегабайт.

mysqldump —quick -uUSER –pPASSWORD DATABASE > /path/DATABASE.sql

Опция —quick заставляет команду записывать данные непосредственно на диск.

mysqldump —default-character-set=cp1251 -uUSER –pPASSWORD DATABASE > /path/DATABASE.sql

Принудительно указываем кодировку cp1251.

mysqldump -uUSER –pPASSWORD DATABASE | gzip -c /path/DATABASE.sql.gz

Этой последовательностью получаем архивированный бэкап с помощью утилиты gzip (для последующего восстановления необходимо будет предварительно извлечь из архива).

Заливаем архив бекапа в базу
gunzip < /path/to/outputfile.sql.gz | mysql -u USER -pPASSWORD DATABASE
или так
zcat /path/to/outputfile.sql.gz | mysql -u USER -pPASSWORD DATABASE

Создаём новую базу данных
mysqladmin -u USER -pPASSWORD create NEWDATABASE

Для просмотра списка баз данных можно использовать команду:
mysqlshow -u USER -pPASSWORD

А так же можно посмотреть список таблиц базы:
mysqlshow -u USER -pPASSWORD DATABASE

где:

USER — это имя пользователя базы данных;

PASSWORD — пароль пользователя;

SERVER — это имя (или ip-адрес) сервера базы данных;

DataBase — наименование базы данных;

NameFile.sql — имя файла, в который будет помещен дамп базы данных.

Миллионы потерянных биткоинов

По данным компании Chainalysis, из существующих в настоящее время 18,5 млн биткойнов примерно пятая их часть (20%) хранится в кошельках, к которым у их владельцев по тем или иным причинам нет доступа. Они могли быть утеряны, пользователи могли просто забыть о них, или же как, в случае со Стефаном Томасом, потерять ключи к ним. В общей сложности стоимость таких недоступных биткоинов составляет в пределах $140 млрд.

Кейс МКБ: модернизация контактного центра с переходом на новую платформу
ИТ в банках

NYT привела еще несколько примеров историй, аналогичных той, которая приключилась с программистом из Сан-Франциско. Один из них – это случай с предпринимателем из Лос-Анджелеса (США) Брэдом Ясаром (Brad Yasar), у которого есть несколько настольных компьютеров, содержащих тысячи биткойнов. Ясар создал эти кошельки и добыл свои биткоины еще в первые дни существования этой криптовалюты, но потерял пароли от них много лет назад. «В течение многих лет я потратил сотни часов, пытаясь вернуть доступ к этим кошелькам», – сказал Брэд Ясар. Сейчас он хранит жесткие диски с кошельками в надежном месте.

Второй пример – это история предпринимателя из Барбадоса Гарбиэля Абеда (Gabriel Abed), но в его случае вина за потерю биткоинов лежит вовсе не на нем. В 2011 г. Абед лишился 800 биткоинов (около $28 млн по курсу на момент публикации материала) из-за того, что его коллега по неизвестным причинам отформатировал жесткий диск с ключами от криптокошелька.

Многие владельцы биткоинов просто выкидывают накопители с криптокошельками. Так, в 2013 г. поступил британец Джеймс Хоуэллс (James Howells) – он случайно выкинул в мусор HDD от своего сломанного ноутбука, в памяти которого находилось 7500 биткоинов.

За два года до этого, в 2011 г. в подобной ситуации оказался журналист веб-издания Gizmodo Кэмпбел Симпсон (Campbell Simpson). По его словам, в 2010 г. он купил 1400 биткоинов и решил хранить их в кошельке на своем внешнем жестком диске, который на тот момент издавал странные звуки при работе и был готов сломаться в любой момент. В 2011 г. Симпсон расстался со своей девушкой и решил выбросить несколько старых вещей, включая ненужные компьютерные аксессуары. Вместе с кипой проводов на свалку отправился и жесткий диск с криптокошельком.

Подобных случаев во всем мире десятки. Как пишет NYT, компания Wallet Recovery Services, которая помогает «находить» утраченные ключи к криптокошелькам, сообщила изданию о существенном росте обращений клиентов к ней. Ежедневно она фиксирует свыше 70 таких заявок, хотя еще месяц назад их было втрое меньше.

Как разрешить подключение только с определённого IP или группы IP. Как заблокировать определённые IP для SSH

С помощью директив (перечислены в порядке обработки) DenyUsers, AllowUsers, DenyGroups и AllowGroups и шаблонов можно настроить разрешения для доступа к SSH по IP.

Рассмотрим несколько примеров. Если в файл sshd_config добавить фильтрацию с AllowUsers:

AllowUsers johndoe@192.168.1.* admin2@192.168.1.* otherid1 otherid2

Это разрешит доступ для johndoe и admin2 только с адресов 192.168.1.*, а для otherid1, otherid2 доступ будет открыт с любого адреса.

Чтобы разрешить доступ к SSH любым пользователям, но только с определённых IP, в файле /etc/ssh/sshd_config используйте директиву AllowUsers с подстановочным символом:

AllowUsers *@192.168.1.100

Или:

AllowUsers *@ИМЯ_ХОСТА

Возможно ограничить ключ ssh или ключ на основе ca набором адресов в файле .ssh/authorized_keys домашнего каталога данного пользователя:

from="192.168.1.*,192.168.2.*" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABA...etc...mnMo7n1DD useralias

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

Мониторинг бэкапов mysql

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

Мониторинг за валидацией бэкапов будем осуществлять с помощью Zabbix.

Если у вас еще нет своего сервера для мониторинга, то рекомендую материалы на эту тему. Для тех, кто предпочитает систему CentOS:

  1. Установка CentOS 8.
  2. Настройка CentOS 8.
  3. Установка и настройка zabbix сервера.

То же самое на Debian 10, если предпочитаете его:

  1. Установка Debian 10.
  2. Базовая настройка Debian.
  3. Установка и настройка zabbix на debian.

Мы настроили вывод результатов проверки архивов в лог файл /var/log/mysql/backup.log. Теперь сделаем так, чтобы Zabbix анализировал содержимое файла и слал оповещение, если там появится слово corrupted, что будет означать проблему с созданием дампа.

Для этого создаем новый шаблон и добавляем туда элемент данных.

Тут всё очень просто и стандартно. Далее делаем триггер.

Выражение проблемы:

{Backup mysql status:log[/var/log/mysql/backup.log].str(corrupted)}=1

Выражение восстановления:

{Backup mysql status:log[/var/log/mysql/backup.log].str(OK)}=1

Прикрепляем шаблон к хосту, где делаем бэкап. Не забудьте убедиться, что у zabbix-agent на хосте есть доступ на чтение этого лог файла. Таким образом, если проверка дампа не будет завершена успешно, сработает триггер. Он будет висеть активным до тех пор, пока не будет создан корректный бэкап базы mysql.

Вот так достаточно просто и быстро я решаю вопрос создания, проверки и оповещения о проблемах при создании дампов и бэкапов mysql баз.

Просмотр логов Fail2ban и конфигурации брандмауэра

Для таких служб, как Fail2ban, особенно важно обеспечить правильную работу. Сначала воспользуйтесь systemctl для проверки состояния службы:

systemctl status fail2ban

Если что-то кажется ненормальным, можно попробовать устранить неполадки и проверить логи Fail2ban с момента последней загрузки:

journalctl -b -u fail2ban

Затем воспользуйтесь fail2ban-client для запроса общего состояния fail2ban-server или состояния отдельных “тюрем”.

fail2ban-client status
fail2ban-client status имя_тюрьмы

Просмотр записей о недавних действиях в логе Fail2ban (для выхода нажмите Ctrl-C):

tail -F /var/log/fail2ban.log

Вывод правил, настроенных в iptables:

iptables -L

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

iptables -S

Как работают ключи SSH?

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

Каждая пара ключей состоит из открытого и закрытого ключа. Секретный ключ сохраняется на стороне клиента и не должен быть доступен кому-либо еще. Утечка ключа позволит злоумышленнику войти на сервер, если не была настроена дополнительная аутентификация по паролю.

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

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

Заключение

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

Все команды evilginx2: https://kali.tools/?p=4761

У программы имеются и другие, не рассмотренные здесь возможности. Например, можно настроить автозаполнение некоторых полей (к примеру, адреса электронной почты), а также внедрить JavaScript код в фишинговую страницу.

Блог автора evilginx2 в котором описываются важные особенности программы:

  • https://breakdev.org/evilginx-2-3-phishermans-dream/
  • https://breakdev.org/evilginx-2-2-jolly-winter-update/
  • https://breakdev.org/evilginx-2-1-the-first-post-release-update/
  • https://breakdev.org/evilginx-2-next-generation-of-phishing-2fa-tokens/
  • https://breakdev.org/evilginx-1-1-release/

Формат файлов фишлетов (2.3.0) — для тех, кто хочет добавить поддержку других сайтов для фишинга: https://github.com/kgretzky/evilginx2/wiki/Phishlet-File-Format-(2.3.0)

Программа evilginx2 и данная инструкция написаны в целях демонстрации возможных атак в случае невнимательности пользователя.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: