Гайд по обеспечению безопасности Linux-системы

Статус
В этой теме нельзя размещать новые ответы.

Ens

Местный
Подтвержденный
Сообщения
3.471
Реакции
2.112
Эта статья — гайд параноидального юниксоида, посвященный тотальной защите Linux-машины от всего и вся. Я не решусь сказать, что все описанное здесь обязательно к применению. Совсем наоборот, это сборник рецептов, информацию из которого можно использовать для защиты себя и данных на тех рубежах, где это нужно именно в твоей конкретной ситуации.

Пароль!

Все начинается с паролей. Они везде: в окне логина в Linux-дистрибутиве, в формах регистрации на интернет-сайтах, на FTP- и SSH-серверах и на экране блокировки смартфона. Стандарт для паролей сегодня — это 8–12 символов в разном регистре с включением цифр. Генерировать такие пароли своим собственным умом довольно утомительно, но есть простой способ сделать это автоматически:
Код:
openssl rand -base64 16
Никаких внешних приложений, никаких расширений для веб-браузеров, OpenSSL есть на любой машине. Хотя, если кому-то будет удобней, он может установить и использовать для этих целей pwgen (поговаривают, пароль получится более стойким):
Код:
pwgen -Bsy 16 1
Где хранить пароли? Сегодня у каждого юзера их так много, что хранить все в голове просто невозможно. Довериться системе автосохранения браузера? Можно, но кто знает, как Google или Mozilla будет к ним относиться. Сноуден рассказывал, что не очень хорошо. Поэтому пароли надо хранить на самой машине в зашифрованном контейнере. Отцы-основатели рекомендуют использовать для этого KeePassX 2.0. Штука графическая, что не сильно нравится самим отцам-основателям, но зато работает везде, включая известный гугль-зонд Android (KeePassDroid). Останется лишь перекинуть базу с паролями куда надо.

Шифруемся

Шифрование — как много в этом слове… Сегодня шифрование везде и нигде одновременно. Нас заставляют пользоваться HTTPS-версиями сайтов, а нам все равно. Нам говорят: «Шифруй домашний каталог», а мы говорим: «Потом настрою». Нам говорят: «Любимое занятие сотрудников Dropbox — это ржать над личными фотками юзеров», а мы: «Пусть ржут». Между тем шифрование — это единственное абсолютное средство защиты на сегодняшний день. А еще оно очень доступно и сглаживает морщины.

В Linux можно найти тонны средств шифрования всего и вся, от разделов на жестком диске до одиночных файлов. Три наиболее известных и проверенных временем инструмента — это dm-crypt/LUKS, ecryptfs и encfs. Первый шифрует целые диски и разделы, второй и третий — каталоги с важной информацией, каждый файл в отдельности, что очень удобно, если потребуется делать инкрементальные бэкапы или использовать в связке с Dropbox. Также есть несколько менее известных инструментов, включая TrueCrypt например.

Сразу оговорюсь, что шифровать весь диск целиком — задача сложная и, что самое важное, бесполезная. Ничего особо конфиденциального в корневом каталоге нет и быть не может, а вот домашний каталог и своп просто кладезь инфы. Причем второй даже больше, чем первый, так как туда могут попасть данные и пароли уже в расшифрованном виде (нормальные программеры запрещают системе скидывать такие данные в своп, но таких меньшинство). Настроить шифрование и того и другого очень просто, достаточно установить инструменты ecrypts:
Код:
sudo apt-get install ecryptfs-utils
И, собственно, включить шифрование:
Код:
sudo ecryptfs-setup-swap
ecryptfs-setup-private
Далее достаточно ввести свой пароль, используемый для логина, и перезайти в систему. Да, все действительно так просто. Первая команда зашифрует и перемонтирует своп, изменив нужные строки в /etc/fstab. Вторая — создаст каталоги ~/.Private и ~/Private, в которых будут храниться зашифрованные и расшифрованные файлы соответственно. При входе в систему будет срабатывать PAM-модуль pam_ecryptfs.so, который смонтирует первый каталог на второй с прозрачным шифрованием данных. После размонтирования ~/Private окажется пуст, а ~/.Private будет содержать все файлы в зашифрованном виде.

Не возбраняется шифровать и весь домашний каталог целиком. Производительность при этом упадет не сильно, зато под защитой окажутся вообще все файлы, включая тот же сетевой каталог ~/Dropbox. Делается это так:
Код:
ecryptfs-migrate-home -u user_name
Кстати, места на диске должно быть в 2,5 раза больше, чем данных у user_name, так что рекомендую заранее почиститься. После завершения операции следует сразу войти под своей учётной записью и проверить работоспособность:
Код:
mount | grep Private
/home/user_name/.Private on /home/user_name type ecryptfs ...
Если все ок, незашифрованную копию данных можно затереть:
Код:
sudo rm -r /home/user_name.*

Заметаем следы

ОK, пароли в надежном месте, личные файлы тоже, что теперь? А теперь мы должны позаботиться о том, чтобы какие-то куски наших личных данных не попали в чужие руки. Ни для кого не секрет, что при удалении файла его актуальное содержимое остается на носителе даже в том случае, если после этого произвести форматирование. Наши зашифрованные данные будут в сохранности даже после стирания, но как быть с флешками и прочими картами памяти? Здесь нам пригодится утилита srm, которая не просто удаляет файл, но и заполняет оставшиеся после него блоки данных мусором:
Код:
sudo apt-get install secure-delete
srm секретный-файл.txt home-video.mpg
Как всегда, все просто до безобразия. Далее, если речь идет о всем носителе, то можно воспользоваться старым добрым dd:
Код:
dd if=/dev/zero of=/dev/sdb
Эта команда сотрет все данные на флешке sdb. Далее останется создать таблицу разделов (с одним разделом) и отформатировать в нужную ФС. Использовать для этого рекомендуется fdisk и mkfs.vfat, но можно обойтись и графическим gparted.

Угроза извне

Теперь позаботимся об угрозах, исходящих из недр всемирной паутины. Здесь я должен был бы начать рассказ об iptables и pf, запущенном на выделенной машине под управлением OpenBSD, но все это излишне, когда есть ipkungfu. Что это такое? Это скрипт, который произведет за нас всю грязную работу по конфигурированию брандмауэра, без необходимости составлять километровые списки правил. Устанавливаем:
Код:
sudo apt-get install ipkungfu
Правим конфиг:
Код:
sudo nano /etc/ipkungfu/ipkungfu.conf
# Локальная сеть, если есть — пишем адрес сети вместе с маской, нет — пишем loopback-адрес
LOCAL_NET="127.0.0.1"

# Наша машина не является шлюзом
GATEWAY=0

# Закрываем нужные порты
FORBIDDEN_PORTS="135 137 139"

# Блокируем пинги, 90% киддисов отвалится на этом этапе
BLOCK_PINGS=1

# Дропаем подозрительные пакеты (разного рода флуд)
SUSPECT="DROP"

# Дропаем «неправильные» пакеты (некоторые типы DoS)
KNOWN_BAD="DROP"

# Сканирование портов? В трэш!
PORT_SCAN="DROP"
Для включения ipkungfu открываем файл /etc/default/ipkungfu и меняем строку IPKFSTART = 0 на IPKFSTART = 1. Запускаем:
Код:
sudo ipkungfu
Дополнительно внесем правки в /etc/sysctl.conf:
Код:
sudo nano /etc/systcl.conf
# Дропаем ICMP-редиректы (против атак типа MITM)
net.ipv4.conf.all.accept_redirects=0
net.ipv6.conf.all.accept_redirects=0
# Включаем механизм TCP syncookies
net.ipv4.tcp_syncookies=1
# Различные твики (защита от спуфинга, увеличение очереди «полуоткрытых» TCP-соединений и так далее)
net.ipv4.tcp_timestamps=0
net.ipv4.conf.all.rp_filter=1
net.ipv4.tcp_max_syn_backlog=1280
kernel.core_uses_pid=1
Активируем изменения:
Код:
sudo sysctl -p

Кто-то наследил…

Для поиска руткитов и бэкдоров используем rkhunter:
Код:
sudo apt-get install rkhunter
Запускаем:
Код:
sudo rkhunter -c --sk
Софтина проверит всю систему на наличие руткитов и выведет на экран результаты. Если зловред все-таки найдется, rkhunter укажет на место и его можно будет затереть. Более детальный лог располагается здесь: /var/log/rkhunter.log. Запускать rkhunter лучше в качестве cron-задания ежедневно:
Код:
sudo nano /etc/cron.daily/rkhunter.sh
#!/bin/bash
/usr/bin/rkhunter -c --cronjob 2>&1 | mail -s "RKhunter Scan Results" [email protected]
Заменяем email-адрес user_name на свой и делаем скрипт исполняемым:
Код:
sudo chmod +x /etc/cron.daily/rkhunter.sh
Базу rkhunter рекомендуется время от времени обновлять с помощью такой команды:
Код:
sudo rkhunter --update
Ее, кстати, можно добавить перед командой проверки в cron-сценарий. Еще два инструмента поиска руткитов:
Код:
sudo apt-get install tiger
sudo tiger

sudo apt-get install lynis
sudo lynis -c
По сути, те же яйца Фаберже с высоты птичьего полета, но базы у них различные. Возможно, с их помощью удастся выявить то, что пропустил rkhunter. Ну и на закуску debsums — инструмент для сверки контрольных сумм файлов, установленных пакетов с эталоном. Ставим:
Код:
sudo apt-get install debsums
Запускаем проверку:
Код:
sudo debsums -ac
Как всегда запуск можно добавить в задания cron.

Выводы

Вот и все. Не вдаваясь в детали и без необходимости изучения мануалов мы создали Linux-box, который защищен от вторжения извне, от руткитов и прочей заразы, от непосредственно вмешательства человека, от перехвата трафика и слежки. Остается лишь регулярно обновлять систему, запретить парольный вход по SSH, убрать лишние сервисы и не допускать ошибок конфигурирования.

Редактировано мной.

}{акер 2014
автор: ЕВГЕНИЙ ЗОБНИН
 
Статус
В этой теме нельзя размещать новые ответы.

Похожие темы

Необходимость делать бекапы – своих проектов, сид фраз и паролей – становится очевидной после первого обыска или просто вышедшего из строя компьютера. Большинство учится на своих ошибках и тут как повезёт: кто-то теряет код-базу за месяц работы, а кто-то до сих пор грызёт себе локти из-за того...
Ответы
7
Просмотры
Каждый третий сайт при регистрации спрашивает ФИО, страну, адрес, род деятельности и другую мусорную информацию, которую в большинстве случаев и не собирается верифицировать. Чтобы оставаться анонимным, лучше всего каждый раз придумывать новые фейковые данные. Что-то типа: На хостинге 1 где-то...
Ответы
6
Просмотры
Привет, коллеги. CyberSec RuTOR на связи. 5 лет назад я арендовал небольшой VPS для своего первого проекта. Всё работало, клиенты были довольны. А потом в один «прекрасный» день сайт просто лёг. Страницы грузились по минуте, а потом и вовсе перестали открываться. Я зашёл в терминал, набрал top...
Ответы
1
Просмотры
82
В темных уголках даркнета, где анонимность и безопасность — это всё, каждый инструмент может быть либо вашим щитом, либо слабым звеном. Firejail — это мощный инструмент песочницы для Linux, который действует как укрепленный бункер для ваших приложений. Он изолирует программы, ограничивает их...
Ответы
6
Просмотры
Привет, коллеги. CyberSec RuTOR на связи. В прошлой статье я подробно разобрал, как настроить базовую защиту на Ubuntu + Nginx и какие сервисы подключить. Но время идёт, и DDoS-атаки эволюционируют. Сегодня я расскажу о новых трендах, с которыми столкнулся лично, и о неочевидных фишках защиты...
Ответы
0
Просмотры
80
Назад
Сверху Снизу