Настройка безопасности локальной станции
При установке ОС (операционная система)
1) Установить пароль на GRUB при попытке редактирования го настроек
а. Генерируем шифрованный пароль при помощи grub-md5-crypt:
# /sbin/grub-md5-crypt
(дважды вводим пароль)
и на экране получаем что-то вроде этого:
Зашифрованный пароль GRUB
При недоступности
grub-md5-cryp
можно использовать
openssl passwd -1
Копируем полученный шифрованный пароль (в нашем примере начинается с $1$f8k7..)
б) Отрываем на редактирование в своем любимом редакторе файл
/etc/grub.d/10_linux
Ищем строку
CLASS="--class gnu-linux --class gnu --class os"
Приводим ее к виду
CLASS="--class gnu-linux --class gnu --class os --unrestricted"
В файле /etc/grub.d/40_custom
Добавляем
set superusers="root"
password_pbkdf2 root grub.pbkdf2.sha512.10000.3450C89...
Где root имя пользователя при запросе пароля на изменение настроек grub.
Далее необходимо обновить grub командой
sudo update-grub
2) Создать отдельные дисковые разделы
/
/boot
/home
/tmp
/var/tmp
Для всех перечисленных дисковых разделов рекомендуется использовать файловую систему ext4. Разлел tmp должен быть не менее 250 МБ.
Разделы /home /tmp /var/tmp рекомендуется монтировать с опциями: noexec,nodev,nosuid (данные опции прописываюстся в файле /etc/fstab)
Пример файла /etc/fstab
После установки ОС
1. Настроить монтирование раздела /boot c опциями ro (перед обновлением ядра перемонтировать в rw, например путем редактирования файла /etc/fstab
2. Установить все доступные обновления
sudo apt-get update && sudo apt-get upgrade
3. Установить единственным устройством для загрузки ОС жесткий диск , на котором была установлена ОС
4. Отключить доступ к консоли пользователей которым она не нужна (смотрим тут
https://forum.ubuntu.ru/index.php?topic=301815.0)
5. Включить блокировку макросовв VLC
find /usr/lib/ -type f -name "liblua_plugin*" -exec sudo dpkg-statoverride --update --add root root 640 {} \;
6.Включить блокировку трассировки ptrace
В файле /etc/sysctl.d/10-ptrace.conf есть параметр kernel.yama.ptrace_scope = 3
установить его равным 3, что соответствует:
Значения 0-3, находящиеся в данном псевдофайле существенно меняют поведение ptrace:
0 — UID трассирующего процесса должен совпадать с UID трассируемого или быть 0 (поведение как было раньше);
1 — ограниченный ptrace, процессы должны быть родственными, трассируемый процесс должен быть потомком
трассирующего или трассирующий процесс должен иметь UID=0;
2 — для трассирующего процесса должен быть установлен флаг CAP_SYS_PTRACE или потомок устанавливает себе флаг PTRACE_TRACEME;
3 — трассирование запрещено.
7. Убедиться, что pam_tally настроен на блокировку учетных записей при попытках подбора паролей
Блокировка локального пользователя при неоднократном введении неправильного пароля. При этом другие пользователи не блокируются.
sudo nano /etc/pam.d/common-auth
Добавляем строки
auth [success=ignore default=die]
pam_tally.so per_user deny=3 unlock_time=60
где deny количество неудачных попыток
unlock_time время блокировки
auth [success=ignore] pam_unix.so nullok_secure try_first_pass
faillog -a
Сброс счетчика для всех
faillog -r
Сброс счетчика для пользователя user
faillog -u user -r
8. Настроить ограничения ОС (так называемые ulimits).
Рекомендуемые настройки /etc/security/limits.conf:
#размер дампа ядра
* hard core 0
#максимальный размер создаваемого файла
* hard fsize 50000000
#блокировка форк-бомбы(большого количества процессов)
* hard nproc 1000
9. Отключить все неиспользуемые сервисы (в т.ч. сетевые) которые запускаются при старте ОС (в зависимости от системы механизм может отличаться поэтому гуглим как отключить) могу порекомендовать программу Stacer v1.0.9 для управления службами и загрузкой и очистки системы. Скачать можно тут
https://github.com/oguzhaninan/Stacer/releases
10.Включить межсетевой экран ufw и настроить iptables в минимально необходимой конфигурации (для всех индивидуально, поэтому гуглим)
11.Подготовить файл sysctl.conf
Перед изменением сделать резервную копию файла
cd /etc/sysctl.conf{,.old}
Шаблон файла который необходимо скопировать в свой подготовленный файл
# отключаем маршрутизацию
net.ipv4.ip_forward = 0
net.ipv6.conf.allforwarding = 0
# отключаем перенаправление ICMP и IPv6
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.default.accept_redirects = 0
net.ipv4.conf.all.default.secure_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
# отключаем отсылку пакетов с перенаправлением
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
# отключаем прием маршрутов их опций IP-протоколов
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.default.accept_ra = 0
#защита от smurf-атак, отключаем ответы на broadcast и multicast-запросы
net.ipv4.icmp_echo_ignore_broadcasts = 1
# включаем поддержку SYN-cookies
net.ipv4.tcp_syncookies = 1
# отключение реакции на пакеты с нарушением RFC-1122
net.ipv4.icmp_ignore_bogus_error_responses = 1
# включаем логирование пакетов с недоступным адресом отправителя
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1
# отключаем ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
# закрываем доступ к сообщениям ядра
kernel.dmesg_restrict = 1
# отключение механизма SysRq
kernel.sysrq=0
# отключение выгрузок памяти ядра привилегированных программ
fs.suid_dumpable=0
# контроль использования ядром памяти ASLR (защита от атак переполнения буфера)
kernel.randomize_va_space=2
# количество секунд после ошибки в ядре до перезагрузки
kernel.panic=30
#Включить фильтрацию обратного пути для предотвращения некоторых IP-cпуфинг атак
net.ipv4.conf.default.rp_filter=1
net.ipv4conf.all.rp_filter=1
#Защита от неправильных сообщениф и ошибок
net.ip4.icmp_ignore_bogus_error_responses=1
Применяем шаблон файла
cat sysctl.conf > /etc/sysctl.conf
Примечание. Команду необходимо запускать в директори где находиться шаблон файла.
После проведения настроек необходимо проверить их корректность путем ввода команды
sysctl -p
12. Удалить компиляторы из системы по мере возможности для предотвращения злоумышленником компиляции вредоносного кода.
Для этого следует улалить пакеты начинающиеся на g++ (компилятор С++), a так же пакеты gcc,gcc-6
Примечание. При удалении пакетов gcc-6 обращаем внимание на зависимости. Пакет с зависимостями gnome, anacron, xorg, x11, gimp необходимо оставить.
13. Для Intel платформ необходимо устранить уязвимости Intel-SA-00086 в Intel Management Engine (если он инегрирован в процессор) посредством установки обновления микропрограммы Intel Management Engine
(производитель оборудования должен обеспечить данную возможность - это либо обновления BIOS, либо ПО для интеграции обновлений). Для частичных проверок используйте: Intel-SA-00086 Detection Tool.
Более подробно:
https://www.intel.ru/content/www/ru/ru/support/articles/000025619/software.html14. Заблокировать консоль для пользователей которым она не нужна
https://forum.ubuntu.ru/index.php?topic=301815.msg2365091#msg236509115. Создать стандартную учетную запись с ограниченными правами, этому пользователю будет недоступна консоль и vim, остальное требует проверки.
16. При необходимости програмно отключить web камеру
https://forum.ubuntu.ru/index.php?topic=292488.017. Запретить использовать su для не администраторов
sudo dpkg-statoverride --update--add root sudo 4750 /bin/su
Для отмены запрета выполнить
sudo dpkg-statoverride --update--add root sudo 4755 /bin/su
18. Защитить свой домашний каталог
Ваш домашний каталог по умолчанию будет доступен каждому пользователю в системе. Так что если у вас есть гостевая учетная запись, то гость сможет получить полный доступ ко всем вашим личным файлам и документам. Но вы можете сделать его доступным только вам. Откройте терминал и выполните следующую команду:
chmod 0700 /home/имя_пользователя
Она устанавливает права таким образом, чтобы владельцу папки, то есть вам было доступно все, а другие пользователи даже не могли посмотреть содержимое. В качестве альтернативы можно установить разрешения 750, которые предоставят доступ на чтение в вашей папке для пользователей из той же группы, что и вы:
chmod 0750 /home/имя_пользователя
Для возвращения к исходному состоянию выполнить:
chmod 0755 /home/имя_пользователя
Для применения значения по умолчанию (при создании нового пользователя), для недоступности домашнего каталога другим пользователям в файле /etc/adduser.conf установить значение DIR_MODE=0755 или иное в зависимости от потребностей.
19. Заблокируйте исполнение модулей python с расширенным функционалом:
find /usr/lib/python* -type f -name "_ctype*" -exec sudo dpkg-statoverride --update --add root root 640 {} \;
При проблеме запуска python приложений отмените блокировку командами
find /usr/lib/python* -type f -name "_ctype*" -exec dpkg-statoverride --remove {} \;
find /usr/lib/python* -type f -name "_ctype*" -exec chmod 644 --remove {} \;