Как обезопасить себя. 9 трюков для линуксоидов

Как обезопасить себя. 9 трюков для линуксоидов

https://t.me/nuancesprog

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

Отключение камеры

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

С помощью mkinitcpio -M можно определить название модуля камеры и поместить его в черный список. Для этого достаточно отредактировать файл  /etc/modprobe.d/camera.conf, добавив строку:

blacklist uvcvideo

Если же паранойя зашкаливает и голоса в твоей голове постоянно твердят, что камеру может включить другой модуль или даже ты сам (например в состоянии транса или лунатизма), то можно "пригвоздить" его в том же файле строкой:

install uvcvideo /bin/false

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

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

Перенос домашнего каталога на флешку

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

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

Флешку нужно предварительно отформатировать в ext4, затем с помощью команды blkidвыяснить ее UUID (в нашем примере используется cbfb13ea-38ce-4a5c-b00b-542b9763038e) и внести в /etc/fstab в строку, монтирующую домашний раздел пользователя username:

UUID=cbfb13ea-38ce-4a5c-b00b-542b9763038e /home/username ext4 defaults 0 0

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

Флешка — ключ аутентификации

Надежную защиту твоих данных может дать только шифрование в сочетании с надежным паролем, а что такое надежный пароль? Правильно! Это длинный и сложный пароль и постоянно его вводить — это слишком долго и нудно. А вводить его придется при каждой разблокировке экрана, к тому же особо любознательные личности могут его тупо подсмотреть.

Чтобы не выйти из себя, во время набора свого надежного пароля, достаточно начать использовать в качестве ключа аутентификации обычный USB-накопитель. Сделать это можно с помощью PAM-модуля pam_usb.

Несмотря на то что разработка ведется "не спеша" и последний стабильный релиз 0.5.0 датирован аж 2011 годом, инструмент жизнеспособен.

Энтузиасты могут попробовать собрать вручную git-версию утилиты, в которой добавлена поддержка SD-карт (однако их работа не всегда гарантирована), или обратиться к форкам, созданным неравнодушными пользователями, с различными дополнительными плюшками (например, поддержкой udisks2).

Для настройки USB-ключа необходимо:

1. Выбрать носитель и задать ему имя (например, FLASHKEY):

$ sudo pamusb-conf --add-device FLASHKEY

2. Добавить пользователя, зарегистрированного в системе, который будет авторизоваться с помощью флешки (например, username):

$ sudo pamusb-conf --add-user username

3. Проверить корректность установок:

$ sudo pamusb-check username

4. Включить pam_usb в процесс авторизации, добавив в начало /etc/pam.d/system-auth строку:

auth sufficient pam_usb.so

Эта строка указывает системе, что вставленной флешки достаточно для авторизации. Если ее вынуть, система снова станет запрашивать пароль пользователя.

Настройка авторизации с помощью флешки

Для авторизации рута благоразумнее иметь отдельную флешку и вставлять ее в разъем, когда понадобится повысить привилегии в системе с помощью su или sudo. В этом случае строку из пункта 4 следует добавить в /etc/pam.d/su.

Двухфакторная аутентификация

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

Сперва необходимо установить на компьютер сам пакет. Под тем или иным названием он доступен во всех популярных дистрибутивах. Поиск следует вести по ключевым словам pam google.

Установив пакет, следует отредактировать файл /etc/pam.d/sshd, добавив в него строку

auth required pam_google_authenticator.so no_increment_hotp

Опция no_increment_hotp запретит счетчику неудачных попыток авторизации увеличивать их количество.

Теперь осталось настроить сам модуль, выполнив команду

$ google-authenticator

В ходе ее выполнения будет сгенерирована ссылка на QR-код для привязки телефона (ее следует отсканировать с помощью приложения Google Authenticator), секретный ключ для ввода в телефоне вручную, один текущий код доступа и пять резервных. На все вопросы (привязка кода к линейке времени, обновление настроек программы в папке пользователя, запрет повторного использования одного и того же кода, ограничение в виде трех попыток входа в 30-секундный промежуток времени) следует ответить утвердительно и лишь на один — четвертый по счету (увеличение временного расхождения между клиентом и сервером) — из соображений безопасности лучше ответить отрицательно.

Занимательно, но данный метод аутентификации, несмотря на свое название, никак не связан с Google или его серверами. Вместо Google Authenticator ты можешь использовать приложение от независимых разработчиков — FreeOTP.

Удаление корзины

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

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

Для этого достаточно всего лишь удалить каталог ~/.local/share/Trash и создать на его месте пустой файл:

$ rm -rf ~/.local/share/Trash
$ touch ~/.local/share/Trash

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

Клетка для софта

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

И этот инструмент зовется Firejail. Программа лаконична и проста в использовании в сравнении с прочими средствами схожей функциональности. Использование программы в графическом режиме возможно с помощью незатейливого Qt-фронтенда Firetools. Впрочем, и консольный вариант не вызовет затруднений.

Окно настройки Firejail с помощью Firetools

Например, запустить нужное приложение (к примеру Chromium) в изолированном контейнере с запретом доступа к критическим каталогам, системным вызовам и в приватном режиме можно командой

$ firejail --seccomp --private chromium

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

$ mkdir ~/.config/firejail
$ mkdir ~/chromium

Далее следует скопировать конфигурационный файл песочницы в домашний каталог:

$ cp /etc/firejail/chromium.profile ~/.config/firejail

и отредактировать его, добавив параметр приватности:

$ echo "private ${HOME}/chromium" >> ~/.config/firejail/chromium.profile

Чтобы по умолчанию приложение запускалось в подготовленной таким образом «тюрьме», нужно выполнить от рута

# echo "firejail --seccomp /usr/bin/chromium $@" > /usr/local/bin/chromium
# chmod +x /usr/local/bin/chromium

Отключение фоновых служб в Chrome

Современные веб-приложения сложны, многофункциональны и во многих случаях превосходят свои десктопные аналоги. Но у них есть одна проблема: ты закрываешь вкладку, и приложение перестает работать. Чтобы решить эту проблему, разработчики Chrome придумали штуку под названием Service Worker. Это API, который позволяет загрузить в браузер код и вызывать его позже даже в том случае, если само веб-приложение закрыто.

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

По умолчанию браузер не позволяет отключить Service Worker, однако мы можем применить небольшой трюк и просто удалить каталог хранения скриптов и создать на его месте пустой файл (если ты используешь Chromium, замени chrome на chromium):

$ cd .config/chrome/Default
$ rm -rf "Service Worker"
$ touch "Service Worker"

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

Ускоренная торификация

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

Чтобы обеспечить быстрый доступ к сервису Tor любым программам без необходимости настройки их каждой в отдельности, можно использовать утилиту torify из комплекта Tor. С ее помощью можно прозрачно связать нужное приложение и библиотеку tsocks, содержащую необходимые для проксирования конфигурационные файлы. Использовать ее проще простого:

$ torify wget -qO- https://check.torproject.org/ | grep -i congratulations

Следует заметить, что резолвинг DNS в этом случае будет осуществляться обычным образом, не через Tordns. Это можно исправить, применив утититу tor-resolv, которая возвращает IP переданного доменного имени. Пример открытия страницы с помощью консольного браузера elinks:

$ torify elinks $(tor-resolve checkip.dyndns.org)

Криптографический netcat

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

Утилита cryptcat лишена этого недостатка. Она использует шифрование по алгоритму Twofish. Ключ шифрования по умолчанию — metallica, поэтому сразу после установки его следует изменить с помощью ключа -k (для примера пусть будет brutallica):

$ cryptcat -k brutallica

В остальном логика работы и семантика команд такая же, как и в netcat:

$ cryptcat -lp 1234 # машина-получатель
$ cryptcat <IP адресата> 1234  # машина-отправитель

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

Дополнив cryptcat ключом запуска внешнего приложения на устройстве адресата, можно запускать на ней командную оболочку и обеспечить выполнение команд с удаленной машины:

$ cryptcat -lp 1234 -e /bin/bash # машина-адресат
$ cryptcat <IP адресата> 1234 # машина-манипулятор

Команды будут выполняться на машине-адресате, а вывод команд появится в том числе и в окне терминала машины-манипулятора.

Потоковая передача видеофайла с машины-транслятора и его просмотр с помощью проигрывателя mplayer на машине-наблюдателе:

$ cat video.avi | cryptcat -lp 1234 # машина-транслятор
$ cryptcat <IP адресата> 1234 | mplayer -vo x11 -cache 3000 - # машина-наблюдатель

Отправка файлов (куда ж без них):

$ cryptcat -lp 1234 > my.jpg # машина-получатель
$ cryptcat <IP адресата> 1234 < my.jpg # машина-отправитель

Выводы

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


Report Page