вторник, 22 ноября 2016 г.

Установка NAS installation

NAS - Network Attached Storage, т.е. доступное по сети хранилище данных. Существует два типа решений: жёсткий диск с дополнительным железом и прошивкой, которое умеет быть доступным по сети, и компьютер-сервер. В случае второго варианта на него ставится специальная операционка, обычно порезанная по своим возможностям, но со специфическим софтом, и необходимое количество жёстких дисков.
Я выбрал второй вариант с OpenMediaVault, которая является бесплатным решением на базе debian. Она нетребовательна к ресурсам (например, ей достаточно ~600 MB RAM в фоновом режиме), но не обладает некоторыми возможностями типа полного шифрования траффика и других. Собственная графическая оболочка у неё отсутствует, её заменяет графический интерфейс настройки через браузер (WebGUI).

NAS - Network Attached Storage, a data storage which is accessible using internet. There are two usual solutions: HDD with additional hard- and software to look to network, or an ordinary PC. In the latter case a limited OS with special utilities and some HDDs provide the functionality.
I've chosen the second option using OpenMediaVault as an OS. It is a freeware based on debian, which does not need a powerful configuration (like it needs 600 MB RAM in a usual mode), but does not provide service like full traffic encryption. It does not have a graphical interface (only console), but all tuning can be made using WebGUI.

Сама установка проходит крайне легко. В моём случае статический внешний IP адрес был приписан по mac-адресу сетевой карты, поэтому установка прошла в полностью автоматическом режиме, и никакой дополнительной конфигурации не потребовалось.
После установки надо сразу поставить сложные пароли на root и admin (для доступа), после этого - обновить операционку через вкладку Update Management (всё, от самого openmediavault до ядра linux). 
Очень важно не забывать тыкать не только в "сохранение изменений", но и в "apply" в появляющейся жёлтой строке "The configuration has been changed. You must apply the changes in order for them to take effect."
Первым делом я установил плагин openmediavault-clamav (антивирус). Грамотных полных обзоров антивирусов под linux я не видел, во всяком случае, этот выглядит не хуже других из имеющихся бесплатных. После его установки появляется вкладка Antivirus, на которой можно задать частоту обновления и прочие настройки.
Вторым делом я поставил плагин openmediavault-letsencrypt. Этот плагин, который надо скачать отдельно и загрузить через web-интерфейс, позволяет автоматически получать сертификаты SSL от сервиса Let's encrypt. В некоторых случаях он позволяет уменьшить количество ругани третьего софта. После его установки и создания во вкладке LetsEncrypt нужно в Certificates - SSL указать этот сертификат, а потом в General Settings (и всех других вкладках типа FTP) указать этот сертификат. Желательно - как необязательный. Поскольку этот сертификат выдаётся, по сути, кому угодно, браузеры очень любят на него ругаться.

После этого настраиваются жёсткие диски. Один зарезервирован под систему и не особо предназначен для общих папок. Остальные диски можно соединить в RAID; плагины позволяют настраивать вещи типа автоматического резервирования данных на USB/eSATA внешнем диске. Также может быть нужен плагин lvm (Logical Volume Manager), который позволяет объединить несколько физических дисков в один логический.

После настройки файловой системы надо создать пользователей во вкладке Users. Там же задаются права в группах ssh, sudo и других при наличии такой необходимости. Тут же необходимо установить домашние директории (потом, при настройке SMB/CIFS, надо будет отдельно указать, что они используются).

После этого можно начать создавать общие папки (Shared Folders). Очень важно заходить в Privileges и проверять, что у всех пользователей, которым "можно", есть соответствующие права на эту папку. Если пользователь создан после создания папки, у него не будет на неё прав, даже если он находится в группе users (у которой есть права R/W папок).
Важно помнить, что в OMV две системы прав доступа - от ОС и от файловой системы, которые ОЧЕНЬ легко конфликтуют. В сети гуляют скрипты, которые рекурсивно меняют права доступа на что-нибудь типа rwxrwxrwx. Их установка в cron может сэкономить много сил, нервов, кофеина и никотина.
После этого можно начать настраивать доступ по сети. Я открыл три вида доступа: 
  • SSH без прямого логина superuser и со включённым туннелированием (что позволяет использовать сервер как прокси и через него переливать данные с других машин).
  • FTP с возможностью SSL/TLS по сертификату Let's Encrypt, со включённым FXP (переливать файлы с сервера на сервер без загрузки на клиентскую машину) и возможностью докачки файлов. Очень важно на вкладке Shares прописать все директории, открытые для загрузки файлов.
  • SMB/CIFS - основная часть. Это позволяет подключать NAS так, что он видится как сетевой диск в файл-менеджере на клиентской машине. Наиболее удобный способ обмена файлами. Здесь, опять же, необходимо вручную выбрать папки для показа по сети. Они будут показываться отдельными дисками. Очень важно в настройках расшаренных папок ставить галку "Enable permission inheritance", котора позволит пользователям работать с файлами вне зависимости от их атрибутов доступа в файловой системе.

Installation itself is very easy. In my case, a static IP address was assigned to a specific MAC-address, so that all network configuration was semi-automatic.
Just after the installation it is necessary to set hard passwords for root and admin. Also it might be a good idea to update OMV itself and OS (incl. linux kernel) trough tab Update Management in WebGUI. 
Note that you must not only make changes and save them, but also click apply in a nasty yellow bar "The configuration has been changed. You must apply the changes in order for them to take effect.". Otherwise there will be no miracle.
The first add-on I've installed is openmediavault-clamav (antivirus). I haven't seen a good guide throughout antiviruses for linux, and this one seems to be not worser than other freeware. After it's installation you can alter the preferences in a new-appeared tab.
The second one was openmediavault-letsencrypt. It should be found somewhere on the web and uploaded and activated manually. Let's encrypt SSL certificate allows to reduce sometimes number of warnings by third-party software. After it's creation via new specific tab you should get it used by
Certificates - SSL, and then point to it in all appropriate cases (General Settings, FTP etc.). To reduce the headache it's better to set it not obligatory: this certificate is not well authorised, so all the browsers like to complain about it.

Now you are ready to set up the HDDs. One is reserved for the system. Others can be collected to RAID. Or not. Plugins allow to turn on features like automatic data backup to USB/eSATA drive or join a set of physical drives to one logical using
Logical Volume Manager (lvm plugin).

Next step is to create users. Surprisingly, in a tab "Users". You must include them to groups like ssh, sudo and others if you want them to carry those specific duties. You may also set here home directories (do not forget to set them also in SMB/CIFS).

Shared Folders are the most prominent feature of a NAS. They should be assigned to a specific device. You might enter here to Privileges to check which rights are given to a specific dude. If it was made after the folder, it might have no rights to RW/R it even when it belongs to group "users".
It is a wonderful disaster to find out that there are two different systems of rights on files in OMV: one is provided by OS, and the second one by the harddrive. Of course, this two idiots try to make a fight asap, so that your poor user cries and complains. There is a number of scripts in the Internet to resolve such issues. The easiest way is to set in cron a script to go recursively throughout HDD and chmod rwxrwxrwx.
Now you are at a point to set the network access to your NAS. I opened as far those three ways:
  • SSH with disabled superuser login and enable SSH-tunneling to allow file copying from remote to remote.
  • FTP with enabled SSL/TLS (Let's Encrypt) with enabled FXP (direct remote-remote file transfer) and file download/upload resume. Do not forget to set all the shared folders manually.
  • SMB/CIFS is the most relevant option. It allows to attach the NAS as a network drive in a local file manager. The most convenient way of file management. Also requires to pick up manually the folders to share. Also might be useful to pick in each folder's options "Enable permission inheritance", which should remove the conflicts of file system permission attributes.

Extra-story #1. Постскриптум 1.

Встроенное в OMV ПО позволяет автоматически пользоватеолю root получать полезные письма о состоянии жёстких дисков об их SMART статусе. Поскольку я пользуюсь Ржавым Железным Дерьмом железом, чьё техническое состояние вызывает обоснованные опасения, я уже через неделю получил такое письмо о нечитаемом секторе:

Software included in OMV monitors HDDs and email root automatically. Because I applied some uncertified necromancy to rise the rusty irons up, I got one just a week later:
From root@localhost.localdomain  Mon Nov 14 19:00:20 2016
X-Original-To: root
To: root@localhost.localdomain
Subject: SMART error (CurrentPendingSector) detected on host: ***
Date: Mon, 14 Nov 2016 19:00:18 +0100 (CET)
From: root@localhost.localdomain (root)

This message was generated by the smartd daemon running on:

   host name:  ***
   DNS domain: ethz.ch

The following warning/error was logged by the smartd daemon:

Device: /dev/sdc [SAT], 1 Currently unreadable (pending) sectors

Device info:
WDC WD2500JD-00FYB0, S/N:WD-WMAEH2276659, FW:02.05D02, 250 GB

For details see host's SYSLOG.

You can also use the smartctl utility for further investigation.
Another message will be sent in 24 hours if the problem persists.
Extra-story #2. Постскриптум 2.
Изначально я включил SSH с разрешённым логином root и паролем на него 1111. Сервер был взломан через сутки после 12 часов брутфорса. Через двое суток он уже обладал TROJAN DDoS.XOR и послужным списком из ~ 2 793 817 отсканенных адресов. 
Думаю, это неплохо показывает, что безопасность даже домашнего сервера - это очень важная вещь.

Initially I turned on SSH access with allowed superuser login and 1111 as a password for it. The NAS was hacked in 24h after 12h of bruteforce. After two days it already had TROJAN DDoS.XOR and 2 793 817 scanned IPs.
Seems to be an argument strong enough to say that even home server needs protection against  invasions from the outer space.
Nov 13 02:12:52 *** sshd[41327]: Failed password for root from 116.31.116.26 port 37054 ssh2
Nov 13 02:12:55 *** sshd[41327]: Failed password for root from 116.31.116.26 port 37054 ssh2
Nov 13 02:12:57 *** sshd[41327]: Failed password for root from 116.31.116.26 port 37054 ssh2
Nov 13 02:12:58 *** sshd[41327]: Received disconnect from 116.31.116.26: 11:  [preauth]
Nov 13 02:12:58 *** sshd[41327]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.26  user=root
Nov 13 02:13:20 *** sshd[41329]: Received disconnect from 116.31.116.26: 11:  [preauth]
Nov 13 02:13:41 *** sshd[41335]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.26  user=root
Nov 13 02:13:43 *** sshd[41335]: Failed password for root from 116.31.116.26 port 22560 ssh2
Nov 13 02:13:45 *** sshd[41335]: Failed password for root from 116.31.116.26 port 22560 ssh2
Nov 13 02:13:45 *** sshd[41335]: Accepted password for root from 116.31.116.26 port 22560 ssh2
Для простого решения этой проблемы есть софт типа denyhost или fail2ban, который автоматически сканирует логи авторизации в систему и на основе нескольких неудачных попыток выдаёт бан на определённое время. За выходные набежало вот столько:
The simplest solution is to install tool like denyhost or fail2ban, which monitors authorization logs and give a ban to each IP failed to many times. Weekend's game was like:
/var/log/fail2ban.log:5:2016-11-20 16:10:41,860 fail2ban.actions[2538]: WARNING [ssh] Ban 35.160.110.237
/var/log/fail2ban.log:6:2016-11-20 17:37:42,979 fail2ban.actions[2538]: WARNING [ssh] Ban 121.14.5.104
/var/log/fail2ban.log:7:2016-11-20 17:39:23,101 fail2ban.actions[2538]: WARNING [ssh] Ban 27.74.252.208
/var/log/fail2ban.log:12:2016-11-21 03:24:38,412 fail2ban.actions[2538]: WARNING [ssh] Ban 116.31.116.27
/var/log/fail2ban.log:15:2016-11-21 17:14:06,796 fail2ban.actions[2538]: WARNING [ssh] Ban 123.31.34.214
/var/log/fail2ban.log:18:2016-11-21 19:28:11,237 fail2ban.actions[2538]: WARNING [ssh] Ban 118.69.183.92
/var/log/fail2ban.log:19:2016-11-21 21:09:34,349 fail2ban.actions[2538]: WARNING [ssh] Ban 91.224.161.88
/var/log/fail2ban.log:24:2016-11-22 03:27:56,915 fail2ban.actions[2538]: WARNING [ssh] Ban 116.31.116.27
/var/log/fail2ban.log:25:2016-11-22 05:48:35,848 fail2ban.actions[2538]: WARNING [ssh] Ban 91.224.160.108
/var/log/fail2ban.log.1:23:2016-11-16 18:18:10,473 fail2ban.actions[972]: WARNING [ssh] Ban 118.69.183.92
/var/log/fail2ban.log.1:24:2016-11-16 19:30:38,544 fail2ban.actions[972]: WARNING [ssh] Ban 123.31.35.185
/var/log/fail2ban.log.1:25:2016-11-16 23:23:16,892 fail2ban.actions[972]: WARNING [ssh] Ban 123.31.34.214
/var/log/fail2ban.log.1:26:2016-11-17 00:08:33,079 fail2ban.actions[972]: WARNING [ssh] Ban 218.87.109.247
/var/log/fail2ban.log.1:27:2016-11-17 00:30:25,622 fail2ban.actions[972]: WARNING [ssh] Ban 91.224.160.108
/var/log/fail2ban.log.1:28:2016-11-17 12:14:10,247 fail2ban.actions[972]: WARNING [ssh] Ban 67.63.203.91
/var/log/fail2ban.log.1:48:2016-11-18 03:49:15,722 fail2ban.actions[2538]: WARNING [ssh] Ban 116.31.116.27
/var/log/fail2ban.log.1:49:2016-11-18 04:15:56,624 fail2ban.actions[2538]: WARNING [ssh] Ban 117.21.173.11
/var/log/fail2ban.log.1:50:2016-11-18 16:17:16,351 fail2ban.actions[2538]: WARNING [ssh] Ban 218.2.0.16
/var/log/fail2ban.log.1:52:2016-11-19 00:15:22,944 fail2ban.actions[2538]: WARNING [ssh] Ban 118.69.183.92
/var/log/fail2ban.log.1:55:2016-11-19 05:13:59,986 fail2ban.actions[2538]: WARNING [ssh] Ban 58.187.135.78
/var/log/fail2ban.log.1:56:2016-11-19 15:04:31,580 fail2ban.actions[2538]: WARNING [ssh] Ban 116.31.116.27
/var/log/fail2ban.log.1:58:2016-11-19 17:56:10,677 fail2ban.actions[2538]: WARNING [ssh] Ban 81.171.75.46
/var/log/fail2ban.log.1:59:2016-11-19 19:15:08,280 fail2ban.actions[2538]: WARNING [ssh] Ban 221.194.44.225
/var/log/fail2ban.log.1:60:2016-11-19 21:32:00,971 fail2ban.actions[2538]: WARNING [ssh] Ban 117.1.108.10
/var/log/fail2ban.log.1:62:2016-11-20 01:37:28,322 fail2ban.actions[2538]: WARNING [ssh] Ban 192.241.232.126
/var/log/fail2ban.log.1:63:2016-11-20 04:41:26,276 fail2ban.actions[2538]: WARNING [ssh] Ban 77.244.72.39

Комментариев нет:

Отправить комментарий