- Сообщения
- 2.815
- Реакции
- 4.828
- Продажи
- 6
Сказ о том, как сохранить свои файлики в случае пиздеца.
В прошлой
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
, я рассказал вкратце, как и что шифровать, вообще для чего шифровать.Теперь постараюсь помочь сохранить нашифрованное.
В случае потери доступа к своему оборудованию, нужно успеть получить доступ к своим важным файлам. К логинам и паролям, файлам кошельков, важным документам. Допустим технику изъяли, либо вы сбежали в одних трусах, и все ваше добро захвачено врагом. В таких случаях и пригодилось шифрование, доступа к вашим секретам нет, но нужно все же поменять «пароли и явки», добыть деньги скопленные на чёрный день, а у вас из вещей трусы и шлёпанцы… В 21 веке найти компьютер с доступом в интернет не так сложно, как 20 лет назад.
И так, предпримем ещё один шаг к надёжности. Надёжнее бэкапа ничего нет, но и доступ к бэкапу нужно ограничить. Да и сам бэкап придётся доверить третьим лицам. Да, можно и нужно нашифровать флешек, заныкать в секретных местах, бэкапов много не бывает. Но самое важное и необходимое занимает совсем немного места, единицы мегабайт.
Мы можем нашифровать криптоконтейнеров, зарегать аккаунтов на файлопомойках и хранить там, и это правильно. Но у контейнеров есть один неприятный момент, их нужно регулярно обновлять, синхронизировать данные. В общем, можно разделить данные на 2 типа, регулярно обновляемые - динамические, и требующие актуальность, и на хранимые неопределённо долго — статичные.
Статичные данные вполне надёжно хранить в криптоконтейнерах, а криптоконтейнеры в облачных хранилищах. С динамическими данными несколько сложнее.
Я использовал 2 системы хранения, проверенные временем. У каждой есть достоинства и недостатки. Обе работают на модуле ядра FUSE. Вся дальнейшая статья о работе в Linux.
1) SSHFS, это удалённая файловая система, когда у вас есть доверенный сервер, с root доступом, в надежном месте, где физически его никто не тронет, там можно организовать шифрованный /home раздел, где и будут хранится ваши файлы. Монтируя скриптом по сети на рабочий компьютер ваш каталог с файлами, вы «прозрачно» работаете с ними, перетаскивая и синхронизируя данные. Минусы — это затупы по сети, особенно если ваш сервер в TOR. Есть драйвер коммерческий под Windows для этой системы, и можно работать из под «винды», но это неудобно.
2)EncFS. Система имеет уязвимости, в основном уязвимости связанные с доступом к компу, я считаю что эти уязвимости не критичны, и зашифрованные файлы прочесть владельцы хостинга не смогут, а извлечь, зная пароль будет достаточно просто. Кстати, никто не мешает совместно использовать EncFS и SSHFS, но по мне будет некоторый оверхед, если конечно сервер приватный, иначе, даже нужно их использовать совместно.
Я постараюсь рассмотреть и описать обе эти системы.
Установка на Debian based дистрибутивы. Поставим сразу обе программы.
Bash:
sudo apt update
sudo apt install sshfs encfs libpam-encfs
SSHFS
Первое, что нужно выполнить — ознакомиться со справкой по командам.
Bash:
sshfs --help
Makefile:
usage: sshfs [user@]host:[dir] mountpoint [options]
general options:
-o opt,[opt...] mount options
-h --help print help
-V --version print version
SSHFS options:
-p PORT equivalent to '-o port=PORT'
-C equivalent to '-o compression=yes'
-F ssh_configfile specifies alternative ssh configuration file
-1 equivalent to '-o ssh_protocol=1'
-o reconnect reconnect to server
-o delay_connect delay connection to server
-o sshfs_sync synchronous writes
-o no_readahead synchronous reads (no speculative readahead)
-o sync_readdir synchronous readdir
-o sshfs_debug print some debugging information
-o cache=BOOL enable caching {yes,no} (default: yes)
-o cache_max_size=N sets the maximum size of the cache (default: 10000)
-o cache_timeout=N sets timeout for caches in seconds (default: 20)
-o cache_X_timeout=N sets timeout for {stat,dir,link} cache
-o cache_clean_interval=N
sets the interval for automatic cleaning of the
cache (default: 60)
-o cache_min_clean_interval=N
sets the interval for forced cleaning of the
cache if full (default: 5)
-o workaround=LIST colon separated list of workarounds
none no workarounds enabled
[no]rename fix renaming to existing file (default: off)
[no]truncate fix truncate for old servers (default: off)
[no]buflimit fix buffer fillup bug in server (default: on)
[no]fstat fix fstat for old servers (default: off)
-o idmap=TYPE user/group ID mapping (default: none)
none no translation of the ID space
user only translate UID/GID of connecting user
file translate UIDs/GIDs contained in uidfile/gidfile
-o uidfile=FILE file containing username:remote_uid mappings
-o gidfile=FILE file containing groupname:remote_gid mappings
-o nomap=TYPE with idmap=file, how to handle missing mappings
ignore don't do any re-mapping
error return an error (default)
-o ssh_command=CMD execute CMD instead of 'ssh'
-o ssh_protocol=N ssh protocol to use (default: 2)
-o sftp_server=SERV path to sftp server or subsystem (default: sftp)
-o directport=PORT directly connect to PORT bypassing ssh
-o slave communicate over stdin and stdout bypassing network
-o disable_hardlink link(2) will return with errno set to ENOSYS
-o transform_symlinks transform absolute symlinks to relative
-o follow_symlinks follow symlinks on the server
-o no_check_root don't check for existence of 'dir' on server
-o password_stdin read password from stdin (only for pam_mount!)
-o SSHOPT=VAL ssh options (see man ssh_config)
FUSE options:
-d -o debug enable debug output (implies -f)
-f foreground operation
-s disable multi-threaded operation
-o allow_other allow access to other users
-o allow_root allow access to root
-o auto_unmount auto unmount on process termination
-o nonempty allow mounts over non-empty file/dir
-o default_permissions enable permission checking by kernel
-o fsname=NAME set filesystem name
-o subtype=NAME set filesystem type
-o large_read issue large read requests (2.4 only)
-o max_read=N set maximum size of read requests
-o hard_remove immediate removal (don't hide files)
-o use_ino let filesystem set inode numbers
-o readdir_ino try to fill in d_ino in readdir
-o direct_io use direct I/O
-o kernel_cache cache files in kernel
-o [no]auto_cache enable caching based on modification times (off)
-o umask=M set file permissions (octal)
-o uid=N set file owner
-o gid=N set file group
-o entry_timeout=T cache timeout for names (1.0s)
-o negative_timeout=T cache timeout for deleted names (0.0s)
-o attr_timeout=T cache timeout for attributes (1.0s)
-o ac_attr_timeout=T auto cache timeout for attributes (attr_timeout)
-o noforget never forget cached inodes
-o remember=T remember cached inodes for T seconds (0s)
-o nopath don't supply path if not necessary
-o intr allow requests to be interrupted
-o intr_signal=NUM signal to send on interrupt (10)
-o modules=M1[:M2...] names of modules to push onto filesystem stack
-o max_write=N set maximum size of write requests
-o max_readahead=N set maximum readahead
-o max_background=N set number of maximum background requests
-o congestion_threshold=N set kernel's congestion threshold
-o async_read perform reads asynchronously (default)
-o sync_read perform reads synchronously
-o atomic_o_trunc enable atomic open+truncate support
-o big_writes enable larger than 4kB writes
-o no_remote_lock disable remote file locking
-o no_remote_flock disable remote file locking (BSD)
-o no_remote_posix_lock disable remove file locking (POSIX)
-o [no_]splice_write use splice to write to the fuse device
-o [no_]splice_move move data while splicing to the fuse device
-o [no_]splice_read use splice to read from the fuse device
Module options:
[iconv]
-o from_code=CHARSET original encoding of file names (default: UTF-8)
-o to_code=CHARSET new encoding of the file names (default: UTF-8)
[subdir]
-o subdir=DIR prepend this directory to all paths (mandatory)
-o [no]rellinks transform absolute symlinks to relative
Так же посмотрим мануал man sshfs данные нам пригодятся.
Давайте протестируем эту файловую систему прям на своем компьютере, без поиска приватных серверов. Если не установлен SSH сервер в системе, то нужно установить.
Добавим пользователя и зададим ему новый пароль.
Bash:
sudo adduser testcrypt
Попробуем соединиться по ssh
Bash:
ssh testrypt@localhost
Если соединение прошло успешно, выполним пару команд:
Bash:
pwd
ls -al
mkdir securefiles
ls -al
Хорошо, вот что мы имеем: настроенный ssh сервер, каталог securefiles в домашней директории пользователя testcrypt и теперь нам нужно научиться удалённо монтировать каталог securefiles к своей системе.
Создадим в домашней директории нашего локального пользователя каталог, например remotefs (я создал еще одного пользователя spyadmin для удобства тестирования)
Bash:
mkdir remotefs
ls -al
Теперь попытаемся смонтировать удалённый каталог
Напомним формат usage: sshfs [user@]host:[dir] mountpoint [options]
Bash:
sshfs testcrypt@localhost:securefiles ~/remotefs -o allow_other
Давайте посмотрим, что у нас получилось.
Проверим что смонтировано у нас.
Bash:
df -h
testcrypt@localhost:securefiles 109G 45G 60G 43% /home/spyadmin/remotefs
значит наш удалённый каталог смонтировался успешно.
Попробуем в каталог remotefs записать что-нибудь.
Bash:
cd remotefs/
touch testfile.txt
echo Hello! > testfile.txt
теперь перейдем на «удаленный сервер» и прочтём что туда записалось
Bash:
cd securefiles/
ls -al
видим вывод
-rw-r--r-- 1 testcrypt testcrypt 7 фев 7 13:03 testfile.txt
Прочитаем.
Bash:
cat testfile.txt
Как видим, все записалось.
Теперь отмонтируем удаленный каталог на локальной системе
Bash:
fusermount -u remotefs
ls remotefs
df -h
Как видим, пропал на нашей локальной системе файл и точка монтирования.
Поздравляю! Мы успешно изобрели свой собственный локальный Dropbox с защищённой передачей файлов по ssh
Таким образом, мы можем хранить свои секреты далеко и надежно.
Хорошая
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
на хабре на тему SSHFS.EncFS
Прежде чем приступить к EncFS, я бы предложил установить Dropbox. Протестировать функционал можно и локально, но без облачного хранилища это не имеет смысла. Вообще можно установить любое облачное хранилище, скорее дело вкуса и опыта.
Для Linux
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
предлагается deb и rpm пакеты, а так же исходный код для самостоятельной компиляции.Для установки в Debian нужно скачать файл (у меня 64 битная версия системы), и установить зависимости.
Bash:
sudo dpkg -i dropbox_2020.03.04_amd64.deb
Bash:
sudo apt --fix-broken install
Bash:
sudo apt-get -f install
Сам пакет мы установили еще в начале статьи, теперь нужно его настроить.
Настроить его можно либо для ручного монтирования, либо для автоматического при входе в систему. Второе несомненно удобнее.
И так, первый вариант
Bash:
mkdir -p ~/Dropbox/.private ~/unprivate
encfs ~/Dropbox/.private ~/unprivate
В каталог unprivate будет смонтирован скрытый каталог .private в котором будут храниться зашифрованные файлы. После размонтирования, каталог unprivate будет пустой и файлы будут хранится в ~/Dropbox/.private только в зашифрованном виде.
Проверим, что у нас получилось.
Bash:
cd unprivate
ls
cd ~/Dropbox/.private
ls
А в каталоге Dropbox уже лежит его зашифрованная версия.
В файловом менджере появился диск unprivate с соответствующим файлом
А на аккаунте Dropbox появился каталог .private и файл в зашифрованном виде. И служебный файл настроек .encfs6.xml для EncFS, который подхватится на другом подключенном устройстве при расшифровке.
Для размонтирования нужно выполнить команду
Bash:
encfs -u ~/unprivate
Можно написать коротенькие скрипты, или просто ярлыки с командами и на этом все.
Настроим автоматическое монтирование
Bash:
sudo mcedit /etc/security/pam_encfs.conf
Bash:
# encfs_default --idle=1
В конце файла создадим еще строку, кстати в конце файла есть символы переноса строки, они должны остаться.
Дописываем по аналогии со строками в файле
Bash:
* Dropbox/.private unprivate -v allow_other
Если синхронизируемые папки находятся вне домашнего каталога, то придётся вместо «*» прописать логин пользователя.
Сохраняем файл и переходим к следующему.
Bash:
sudo mcedit /etc/fuse.conf
Bash:
user_allow_other
Все. Подробнее можно ознакомиться в справке программы, и вот хорошая статья на убунту
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
Теперь остается выучить наизусть Email, пароль к нему и ключ шифрования )