Использовать шифрование данных залог того что ваши данные не попадут в руки кому попало. В этой статье расскажу как производить шифрование диска или раздела в ОС Linux используется модуль ядра dm-crypt LUKS.
Введение
Чтобы выполнить шифрование диска в системе Linux используется модуль ядра dm-crypt. Этот модуль позволяет создавать в каталоге /dev/mapper виртуальное блочное устройство с возможностью его шифрования. Фактически все данные лежат на зашифрованном физическом разделе. Данные на лету шифруются и записываются на диск, при чтении с виртуального устройства, выполняется обратная операция — данные расшифровываются с физического диска и передаются в открытом виде через виртуальный диск пользователю. Обычно для шифрования используется протокол шифрования AES, потому что под него оптимизированы большинство современных процессоров.
Важно заметить, что вы можете шифровать не только разделы и диски, но и обычные файлы, создав в них файловую систему и подключив как loop устройство.
Для работы с LUKS и модулем dm-crypt используется утилита Cryptsetup.
Создание шифрованного устройства
Общая схема работы с шифрованным устройством следующая:
Определяется устройство для шифрования;
Создается шифрованный раздел;
Производится форматирование раздела в необходимую файловую систему;
Монтирование раздела в систему.
Установка CRYPTSETUP
Выберите свою команду исходя из своей системы и установите необходимую утилиту:
apt install cryptsetup
dnf install cryptsetup
Синтаксис запуска команды такой:
$ cryptsetup опцииоперацияпараметры_операции
Основные операции, которые можно сделать используя утилиту:
luksFormat — создать зашифрованный раздел luks linux;
luksOpen — подключить виртуальное устройство (нужен ключ);
luksClose — закрыть виртуальное устройство luks linux;
luksAddKey — добавить ключ шифрования;
luksRemoveKey — удалить ключ шифрования;
luksUUID — показать UUID раздела;
luksDump — создать резервную копию заголовков LUKS.
cryptsetup -y -v luksFormat /dev/sdb
= вывод команды =
ПРЕДУПРЕЖДЕНИЕ: Устройство /dev/sdb уже содержит подпись раздела «dos».
WARNING!
========
Данные на /dev/sdb будут перезаписаны без возможности восстановления.
Are you sure? (Type uppercase yes): YES - Внимание! Писать только заглавными буквами!
Введите парольную фразу для /dev/sdb: ! пароль
Парольная фраза повторно: ! повтор пароля
Existing 'dos' partition signature on device /dev/sdb will be wiped.
Создан слот ключа 0.
Команда выполнена успешно.
В данном примере я использую парольную фразу так как именно такой подход мне кажется наиболее правильным. При желании можно использовать ключевой файл вместо парольной фразы.
Откроем созданный раздел с помощью модуля dm-crypt в /dev/mapper, для этого понадобится ввести пароль, с которым выполнялось создание раздела:
cryptsetup luksOpen /dev/sdb sdb_crypt
Посмотрим созданное виртуальное устройство:
ls -l /dev/mapper/sdb_crypt
= вывод команды =
lrwxrwxrwx 1 root root 7 дек 27 21:53 /dev/mapper/sdb_crypt -> ../dm-3
Посмотреть состояние устройства можно выполнив команду:
cryptsetup -v status sdb_crypt
= вывод команды =
/dev/mapper/sdb_crypt is active.
type: LUKS2
cipher: aes-xts-plain64
keysize: 512 bits
key location: keyring
device: /dev/sdb
sector size: 512
offset: 32768 sectors
size: 625109680 sectors
mode: read/write
Команда выполнена успешно.
Рекомендую сделать резервную копию заголовков LUKS это может помочь при возможных в будущем проблем.
После открытия раздела он воспринимается системой, как и все другие. Для проверки можно использовать утилиту fsck ( при условии что файловая система отмантирована ):
fsck -vy /dev/mapper/sdb_crypt
Изменение парольной фразы LUKS
Парольную фразу можно изменить или создать до восьми разных парольных фраз.
Перед началом обязательно сделайте резервную копию заголовков LUKS:
cryptsetup luksDump /dev/sdb
Команда для создания новой парольной фразы:
cryptsetup luksAddKey /dev/sdb
= вывод команды =
Введите любую существующую парольную фразу: ! вводим существующий пароль
Введите новую парольную фразу для слота ключа: ! вводим новый пароль
Парольная фраза повторно: ! повторяем новый пароль
Пользуюсь таким вариантом в работе уже давно и каких то проблем я не замечал.
Единственный минус заключается только в том что при перезагрузке системы приходится вручную подключать шифрованные разделы указывая пароль. Используя файл ключа шифрования можно настроить автоматическое монтирование шифрованного устройства, но тогда вообще пропадает смысл шифрования. Когда в системе с шифрованным устройством находится и сам ключ шифрования при правильных манипуляциях хороший специалист без проблем подключит шифрованный диск.
Решать в любом случае вам как защищать свои данные, но то что сейчас это надо делать обязательно актуально как никогда.
Установим и настроим почтовую программу Mozilla Thunderbird для обмена защищенными сообщениями с помощью дополнения Enigmail для PGP шифрования. Настройка одинаково проста как в системах Linux так и Windows. Не ленитесь защищать свою переписку.
Вступление
Рано или поздно у каждого пользователя возникает необходимость в общении по почте с помощью защищенных сообщений. Давно использую почтовую программу Thunderbird но не думал что в ней можно без особых усилий настроить механизм шифрования сообщений.
Скачать последнюю русскоязычную версию программы Thunderbird вы можете на официальном сайте.
Пример настройки рассмотрим на системе Windows. Для Linux все действия идентичны. В Calculate Linux при установке Thunderbird всё необходимое уже установлено и останется только настроить шифрование для необходимой почты.
Упускаю процесс установки и добавления почтового ящика.
Установка дополнения Enigmail
Расширение Enigmail необходимо для работы с шифрованием почты.
Открываем настройки программы и выбираем «Дополнения».
Выбираем «Получить дополнения» и жмем ссылку справа «Подробнее».
По поиску находим Enigmail и добавляем в Thunderbird.
После установки в меню Thunderbird появится закладка Enigmail.
Настройка Enigmail
В меню Thunderbird в закладке Enigmail выбираем «Мастер установки».
После выбора стандартной конфигурации выйдет сообщение которое сообщает о том что необходимо установить программу GnuPG которая и будет производить всю криптографическую работу.
Нажимаем «Установить…» и выполним установку.
После установки переходим к созданию ключа шифрования.
Создадим сертификат отзыва ключа.
После всех выполненных действий почтовая программа готова к работе с шифрованными сообщениями.
Работа с шифрованными сообщениями в Thunderbird
Для обмена шифрованными сообщениями вам необходимо обменяться открытыми ключами с нужными контактами!
Зашифрованные сообщения без расшифровки будет выглядеть таким образом.
Все ваши ключи мы можем посмотреть перейдя в Меню Thunderbird —> Enigmail —> Менеджер ключей.
Отправка открытого ключа
Выбираем нужный ключ и по нажатию правой кнопки мыши выбираем «Отправить открытые ключи по электронной почте».
Установка открытого ключа
Полученный открытый ключ добавим в Менеджере ключей перейдя по ссылке Файл —> «Импортировать ключи из файла»
После успешного импорта он появится в списке ключей.
Пример зашифрованного сообщения
Вывод
Обмен защищенными сообщениями на порядок усиливает конфиденциальность вашей переписки и по большому счету надо пользоваться этим по возможности чаще. На примере было показано как можно просто настроить безопасную переписку в электронной почте, ну а пользоваться таким механизмом или нет, конечно решать вам.
Применим удобное и эффективное средство для защиты сайта от подбора паролей с помощью популярного сервиса Fail2ban. Помогает для защиты от ботов и очень любопытных товарищей. Заблокируем назойливых роботов на уровне VDS хостинга.
Введение
Рано или поздно ваш сайт будут пробовать на прочность всякие роботы. Если движок сайта свободный, то роботы начинают проверять вас на прочность сразу.
Все бесплатные движки всегда надо обновлять и внимательно относиться ко всем дополнениям что устанавливайте. Обязательно держите резервные копии и тогда даже взлом не страшен.
Меня начали проверять почти сразу. Пользуясь случаем хочу передать привет товарищу Токарчуку Александру Степановичу с IP адреса которого упорно хотели попасть в админку моего сайта. Почему то пытаются войти, в моем случае, как правило с Украины.
Советую сразу смените путь к админке сайта с помощью iThemes Security. По умолчанию путь в WordPress домен/wp-admin и именно сюда все боты и лезут… Поленился я сразу сменить и боты стали ломится каждую минуту и причем в своем большинстве используя Российские ip адреса. Путь сменил, но они всё равно ломятся по стандартному пути…
Ошибка входа в админку
Для того чтобы понять пытаются к нам войти или нет надо посмотреть логи сайта. Если логи настроены правильно, то вы увидите все действия что происходят с вашим сайтам и ни одно событие не останется без внимания.
Посмотрим как выглядит лог неудачной попытки авторизации на популярном движке WordPress:
Согласно этим строчкам 2 раза неудачно авторизовались.
iThemes Security для WordPress
Для популярного движка WordPress существует свободный плагин iThemes Security для защиты сайта. Не буду останавливаться на рассмотрении настройки, покажу лишь как он показывает ошибки авторизации.
Согласно этих данных видим что регулярно производится по 2 попытки авторизации к административной панели сайта.
При нажатии на ip мы увидим информацию о координатах этого адреса:
У меня как обычно Украина. Нажмем на ISP: PP SKS-Lugan и увидим более детальную информацию:
Можно делать с этой информацией всё что угодно и тут всё в вашей власти.
Моя задача сделать так чтобы данные пользователи блокировались для всего моего VDS хостинга, а не только для сайта работающего на WordPress c защитой iThemes Security. Для этого и надо настроить Fail2ban.
Настройка Fail2ban
Установка
Устанавливать и настраивать будем для системы CentOS 7, хотя и для других систем, с учетом специфики операционной системы, данное описание подойдёт.
Установим:
yum install fail2ban
Конфигурационный файл настройки находится здесь — /etc/fail2ban/jail.conf, но, как сказано в комментариях файла, данный файл рекомендуется не изменять.
Чтобы при обновлении Fail2ban не удалялись наши настройки создадим локальную копию файла, именно с него и будет работать наша система защиты.
Отправка почты на внешний e-mail адрес
Настроим чтобы письма root пересылались на нужную нам внешнюю e-mail почту.
Открываем файл /etc/aliases и внесем изменения:
mcedit /etc/aliases
=необходимые изменения=
# Person who should get root's mail
root:info@sevo44.ru
Применим изменения выполнив команду:
newaliases
Отправим тестовое сообщение выполнив команду:
echo «test» | mail -s Testmail root
Если в выводе будет -bash: mail: команда не найдена то надо установить пакет:
= Для CentOS =
yum install mailx
= Для Debian =
apt-get install mailutils
Если на указанную почту пришло сообщение где в теле письма «test», то значит всё хорошо и теперь все сообщения что система создает для root будут переправлены на вашу почту.
Обязательно проверьте спам почты. Если в спаме нет то смотрите логи отправки почты. Всегда использую почтовый сервис yandex.ru и проблем с ними нет.
В случае если письмо не пришло то надо идти в файл лога и смотреть что там не так. В моем случае лог выглядит так:
cat /var/log/maillog
= вывод команды с необходимыми значениями =
Apr 10 22:57:03 ih378645 postfix/smtp[29844]: D56B64957: to=<info@sevo44.ru>, orig_to=<root>, relay=mx.yandex.ru[87.250.250.89]:25, delay=0.57, delays=0.02/0/0.03/0.52, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued on mxfront10g.mail.yandex.net as 1491854223-b3qP5cuV0Mf-v2CaUBlk)
Работа с почтой Postfix
Перестала приходить почта от f2b о блокировке желающих войти в админку сайта.
Вот количество ip которое стремительно увеличивалось:
В логах обнаружил сообщение о превышении лимита на отправку сообщений:
cat /var/log/maillog
= вывод команды с необходимыми значениями =
May 5 12:48:32 ih378656 postfix/smtp[12576]: 3111D5EE9: to=<dolotov44@yandex.ru>, orig_to=<root@localhost>, relay=mx.yandex.ru[93.158.134.89]:25, conn_use=23, delay=12862, delays=12859/3.1/0.07/0.06, dsn=4.5.1, status=deferred (host mx.yandex.ru[93.158.134.89] said: 451 4.5.1 The recipient <dolotov44@yandex.ru> has exceeded their message rate limit. Try again later. 1493977712-W6SydoLQur-mWE8thiK (in reply to end of DATA command))
May 5 12:48:32 ih378656 postfix/smtp[12563]: 2E9A05F20: host mx.yandex.ru[87.250.250.89] said: 451 4.5.1 The recipient <dolotov44@yandex.ru> has exceeded their message rate limit. Try again later. 1493977712-LwxkdR0eGu-mWD4A8YU (in reply to end of DATA command)
Посмотрим количество сообщений в очереди postfix:
mailq | grep Request
= вывод команды =
-- 5811 Kbytes in 1888 Requests.
Файл настройки большой, поэтому я покажу только настройки что я менял. Откроем файл и внесем нужные исправления и добавления:
mcedit /etc/fail2ban/jail.local
= вывод команды с необходимыми изменениями =
# "bantime" это количество секунд запрета
# 1 week = 604800
bantime = 604800
# Время работы параметра "maxretry"
# seconds.
findtime = 600
# "maxretry" количество попыток до бана
maxretry = 3
#
# ACTIONS
#
# Действия при срабатывании правил.
# Адрес электронной почты получателя
destemail = root@localhost
# Адрес отправителя
sender = f2b
# Выбрать действие по умолчанию. Чтобы изменить, просто переопределить значение 'действие' s
# Всего 3 вида действия
# action_ только запрет
# action_mw запретить и отправить по электронной почте с whois доклад destemail
# action_mwl запретить и отправить по электронной почте с whois отчет и соответствующие строки журнала
action = %(action_mwl)s
# Свои фильтры для защиты
# Название блока используемое при работе с сервисом
[sites-sevo44ru]
# Включение правила
enabled = true
# Какие порты блокируются
port = http,https
# Название файла фильтра
filter = sites-sevo44ru
# Путь до лог файла который анализируется
logpath = /web/sites/sevo44.ru/log/access.log
# Количество неудачных попыток до блокировки
maxretry = 3
# Период блокировки -- вечная. Иногда лучше использовать и такое :)
#bantime = -1
Обращаю особое внимание на строку action = %(action_mwl)s. Если хотите получать оповещения на почту обязательно правильно укажите этот параметр и настройте оповещение на необходимый почтовый ящик.
Мне пришлось отключить отправку сообщений на почту. Про перезагрузке сервиса на почту приходят сообщения о всех заблокированных ip. При большом количестве блокировок почтовый ящик на yandex отказывается их принимать. Если кто может подсказать как решить эту проблему подскажите.
Если укажите чтобы на почту приходила информация с whois докладом в письме можете увидеть missing whois program установите необходимое выполнив команду:
yum install jwhois
Теперь в сообщениях на почту будет приходить детальная информация об ip адресе блокируемого.
Файл фильтра
Создадим файл фильтра в необходимой папке с указанием нужных параметров:
Можно в новой строчке перечислять любые необходимые параметры.
В одном из фильтров я использую код ^<HOST> .*base64_decode который блокирует всех кто пытается использовать эту кодировальную хренодрянь.
Проверим наш фильтр выполнив команду:
fail2ban-regex /web/sites/sevo44.ru/log/access.log /etc/fail2ban/filter.d/sites-sevo44ru.conf
= вывод информации =
Running tests
=============
Use failregex filter file : sites-wpsevo44ru, basedir: /etc/fail2bаn
Use log file : /web/sites/wp.sevo44.ru/log/access.log
Use encoding : UTF-8
Results
=======
Failregex: 309 total
|- #) [# of hits] regular expression
| 1) [309] ^<HOST> .* "POST /wp-login.php
`-
Ignoreregex: 0 total
Date template hits:
|- [# of hits] date format
| [77612] Day(?P<_sep>[-/])MON(?P=_sep)Year[ :]?24hour:Minute:Second(?:\.Microseconds)?(?: Zone offset)?
`-
Lines: 77612 lines, 0 ignored, 309 matched, 77303 missed
[processed in 16.01 sec]
Missed line(s): too many to print. Use --print-all-missed to print all 77303 lines
Видим что в нашем логе 309 срабатываний правила.
Можно вывести информация обо всех этих строчках:
fail2ban-regex /web/sites/wp.sevo44.ru/log/access.log /etc/fail2ban/filter.d/sites-wpsevo44ru.conf --print-all-matched
= вывод информации =
Running tests
=============
Use failregex filter file : sites-wpsevo44ru, basedir: /etc/fail2ban
Use log file : /web/sites/sevo44.ru/log/access.log
Use encoding : UTF-8
Results
=======
Failregex: 309 total
|- #) [# of hits] regular expression
| 1) [309] ^<HOST> .* "POST /wp-login.php
`-
Ignoreregex: 0 total
Date template hits:
|- [# of hits] date format
| [77618] Day(?P<_sep>[-/])MON(?P=_sep)Year[ :]?24hour:Minute:Second(?:\.Microseconds)?(?: Zone offset)?
`-
Lines: 77618 lines, 0 ignored, 309 matched, 77309 missed
[processed in 15.31 sec]
|- Matched line(s):
| 185.34.244.250 - - [05/Mar/2017:13:11:24 +0300] "POST /wp-login.php HTTP/2.0" 200 2208 "https://sevo44.ru/wp-login.php?redirect_to=https%3A%2F%2Fsevo44.ru%2Fwp-admin%2F&reauth=1" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" "2.27"
| 185.34.244.250 - - [05/Mar/2017:13:11:30 +0300] "POST /wp-login.php HTTP/2.0" 302 955 "https://sevo44.ru/wp-login.php" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" "-"
= часть информации скрыта =
После последующих необходимых изменениях перезагружаем стандартной для CentOS 7 командой:
systemctl restart fail2ban
После перезагрузки на почту будут приходить сообщения об остановке, запуске всех работающих фильтров и всех заблокированных ip.
Для полной уверенности посмотрим статус:
systemctl status fail2ban
● fail2bаn.service - Fail2Bаn Service
Loaded: loaded (/usr/lib/systemd/system/fail2bаn.service; enabled; vendor preset: disabled)
Active: active (running) since Пн 2017-04-10 23:23:47 MSK; 2min 20s ago
Docs: man:fail2ban(1)
Process: 30794 ExecStop=/usr/bin/fail2bаn-client stop (code=exited, status=0/SUCCESS)
Process: 30830 ExecStart=/usr/bin/fail2bаn-client -x start (code=exited, status=0/SUCCESS)
Main PID: 30834 (fail2ban-server)
CGroup: /system.slice/fail2bаn.service
└─30834 /usr/bin/python2 -s /usr/bin/fail2bаn-server -s /var/run/fail2ban/fail2bаn.sock -p /var/run/fail2ban/fail2bаn.pid -x -b
апр 10 23:23:46 ih378645.vds.myihor.ru systemd[1]: Starting Fail2Ban Service...
апр 10 23:23:47 ih378645.vds.myihor.ru fail2ban-client[30830]: 2017-04-10 23:23:47,141 fail2bаn.server [30832]: INFO Starting ...v12.45.668
апр 10 23:23:47 ih378645.vds.myihor.ru fail2ban-client[30830]: 2017-04-10 23:23:47,141 fail2bаn.server [30832]: INFO Starting ...n mode
апр 10 23:23:47 ih378645.vds.myihor.ru systemd[1]: Started Fail2Ban Service.
Hint: Some lines were ellipsized, use -l to show in full.
Всё у нас хорошо. Работает и стартует при перезагрузке сервера.
Главный файл настройки
В главном файле настройки указывается куда будут складываться логи и другие параметры. Нам важно убедится в правильности пути до лог файлов. Откроем и посмотрим куда пишутся логи:
cat /etc/fail2ban/fail2ban.conf
= вывод команды с пояснениями =
# Где лежат логи
logtarget = /var/log/fail2ban.log
Ротация логов сервиса
Откроем файл ротации сервиса и сделаем необходимые изменения:
Мне удобней чтобы ротация проходила каждый день и хранилась 30 дней.
Сохраним и применим изменения без перезагрузки:
logrotate /etc/logrotate.conf
Работа с сервисом
Выведем информацию о работающих фильтрах:
fail2ban-client status
= вывод команды =
Status
|- Number of jail: 1
`- Jail list: sites-sevo44ru
Видим что активен один фильтр.
Выведем детальную информацию о фильтре:
fail2ban-client status sites-sevo44ru
= вывод команды =
Status for the jail: sites-sevo44ru
|- Filter
| |- Currently failed: 0
| |- Total failed: 4
| `- File list: /web/sites/sevo44.ru/log/access.log
`- Actions
|- Currently banned: 1
|- Total banned: 4
`- Banned IP list: 92.53.96.68
Видим что всего было 4 срабатывания и 1 IP что заблокирован.
Для ручного блокирования используем команду:
fail2ban-client set sites-sevo44ru banip 91.200.12.91
= вывод команды =
91.200.12.91
Для ручного разблокирование используем команду:
fail2ban-client set sites-sevo44ru unbanip 91.200.12.91
= вывод команды =
91.200.12.91
Осталось окончательно убедится что сервис работает. Посмотрим текущие правила iptables:
iptables -L -v -n
= вывод команды. только интересующая нас часть =
Chain f2b-sites-sevo44ru (1 references)
pkts bytes target prot opt in out source destination
0 0 REJECT all -- * * 91.200.12.91 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 REJECT all -- * * 92.53.96.68 0.0.0.0/0 reject-with icmp-port-unreachable
18949 3413K RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Всё отлично. В выводе команды видим заблокированные ip адреса.
Результат
Хочется вам или нет, но периодически необходимо просматривать логи сайтов. Только так можно вовремя выявить проблемные места с сайтом и вовремя отреагировать на паразитирующую активность всякой интернет шушары. Хочется сразу сказать что иногда можно не успеть вовремя среагировать и ресурс будет взломан но для этого случая всегда держите в сохраняемости актуальные резервные копии сайта.
Обслуживание компьютеров, ремонт, лечение вирусов, модернизация. Системы на ОС Linux. Создание и продвижение Интернет проектов. Бесплатные консультации. Офисные АТС. Видеонаблюдение.