Linux32 - Блог



LINUX32

Свобода выбирать


ArchLinux
Блог >> 2016 >> Январь


14.01.2016

Немного паранойи




Доброго дня всем.

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

Вот его принцип: для поднятия уровня безопасности отключаем возможность залогиниться в системе под рутом, придумываем и устанавливаем новый супер сложный пароль для своего пользователя. Все! Все гениальное просто!

Но всегда есть но. Новый сложный пароль желательно записать на бумажный носитель или в текстовый файл (главное в безопасном месте) чтобы не забыть, иначе без рута при утере пароля поможет только Live диск. И еще одно но, самое главное: при сложном пароле пользователя администрировать систему становится крайне неудобно, так как каждый раз вводить пароль, особенно когда не помнишь его наизусть несколько проблематично.

Поэтому это решение нужно немного усовершенствовать.

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

В чем суть: флешка будет своего рода физическим ключем доступа к администрированию компьютера. Подключили флешку - можете редактировать конфиги, устанавливать/удалять приложения без ввода пароля. Отключили - все тоже самое сможете делать, но уже как обычно, после ввода пароля пользователя. По-моему удобно.

Итак, теперь конкретные шаги по реализации задуманного.

Чтобы ключем была только единственная выбранная нами флешка нужно однозначно ее идентифицировать. Сделать это можно по ее серийному номеру, он уникален. За подсказку спасибо пользователю русскоязычного форума archlinux 52th.

Подключаем флешку, определяем присвоенное ей в системе имя командой от рута (его мы еще не отключили):

fdisk -l


Интересует только присвоенная буква после sd. Номер раздела на флешке нам не нужен. Допустим это буква b, тогда следующей командой мы определим уникальный серийный номер флешки:

udevadm info -a -p /sys/block/sdb | grep serial


Вывод будет подобен этому:

ATTRS{serial}=="1234567898765432"


Его запоминаем.

Теперь в папке /etc/udev/rules.d создаем файл 10-tmp-root.rules:

ACTION=="add" KERNEL=="sd[a-z]" ATTRS{serial}=="1234567898765432" RUN=="/usr/bin/systemctl start tmp-root"
ACTION=="remove" KERNEL=="sd[a-z]" ATTRS{serial}=="1234567898765432" RUN=="/usr/bin/systemctl stop tmp-root"


В котором прописываем серийный номер флешки.

Этот файл будет запускать сервис tmp-root при подключении флешки и останавливать его при отключении.

Далее идем в папку /etc/systemd/system и создаем в ней вышеупомянутый сервис tmp-root.service со следующим содержимым:

[Unit]
Description=Temporary Root privileges for regular user

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/sh /home/user/.local/bin/tmp-root-start
ExecStop=/usr/bin/sh /home/user/.local/bin/tmp-root-stop

[Install]
WantedBy=multi-user.target


Вместо user не забудьте вставить имя своего пользователя.

Теперь для правильной работы сервиса нужно создать два скрипта в папке /home/user/.local/bin. Для старта сервиса tmp-root-start:

#!/bin/bash
sed -i 's/# %wheel ALL=(ALL) NOPASSWD: ALL/%wheel ALL=(ALL) NOPASSWD: ALL/g' /etc/sudoers.d/10-tmp-root


И для остановки сервиса tmp-root-stop:

#!/bin/bash
sed -i 's/%wheel ALL=(ALL) NOPASSWD: ALL/# %wheel ALL=(ALL) NOPASSWD: ALL/g' /etc/sudoers.d/10-tmp-root


Эти скрипты просто комментируют и раскомментируют строку в файле 10-tmp-root, который осталось создать в папке /etc/sudoers.d:

# %wheel ALL=(ALL) NOPASSWD: ALL


Изначально строка закомментирована, чтобы соответствовать состоянию системы при остановленном сервисе.

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

Для этого выполним команду:

passwd -l root


Все, настройка завершена. Теперь при подключении флешки можно администрировать систему без ввода пароля, правда нужно вводить перед каждой командой sudo. Чтобы этого избежать (так как тоже не совсем удобно) можно или написать алиасы в .bashrc на часто используемые команды, или ввести в терминале:

sudo su


Тем самым залогинившись в системе под рутом без ввода пароля, несмотря на то что логин с паролем (именно с паролем!) под рутом мы отключили.

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

PS: вернуть возможность логиниться под рутом можно следующей командой:

sudo passwd -u root


И ввести новый пароль для рута.

Вот такая немного объемная инструкция получилась. Читайте, пробуйте, комментируйте.

Статья


Ваш комментарий:

Имя:
E-mail:
Код с картинки:
Комментарий: