Рубрика:
Администрирование /
Хранение данных
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
АЛЕКСЕЙ БЕРЕЖНОЙ, системный администратор. Главные направления деятельности: виртуализация и гетерогенные сети. Еще одно увлечение помимо написания статей – популяризация бесплатного ПО
NETGEAR ReadyNAS Pro Установка дополнительных модулей и программ
Раздвигаем рамки функциональности обычной конфигурации сетевых хранилищ за счет использования доступа по SSH в режиме командной строки
В номере «СА» за декабрь 2009 года [1] шла речь о некоторых функциях, позволяющих более полно использовать сетевые хранилища ReadyNas Pro от NETGEAR. Обновление прошивки, смена типа RAID, тонкая настройка прав – все это, конечно, здорово. Но иногда необходимо несколько больше, чем заложено в штатные функции сетевого хранилища.
В статье в июле 2009 года [2] я указывал, что в качестве основы для программного обеспечения ReadyNas Pro (оно называется RAIDiator) использовался Linux Debian. И значит, есть возможность значительно расширить функциональность данных сетевых хранилищ за счет использования программного обеспечения, предназначенного для Linux-платформ.
Внимание! Установка дополнительных расширений производится «на свой страх и риск», без каких-либо гарантий со стороны производителя. (И автора, кстати, тоже. Хотя все описанные в этой статье процедуры у меня завершились весьма успешно.) В случае возникновения серьезных сбоев компания NETGEAR может отказать в предоставлении гарантийного обслуживания. Также перед выполнением нижеописанных действий крайне необходимо выполнить полное резервирование данных и настроек хранилища на другой ресурс (или съемный носитель). Даже если вы «гуру» в области UNIX-платформ, резервная копия (а лучше две) никогда не помешает.
После такого грозного предупреждения возникает резонный вопрос: «А зачем, собственно это нужно? Не проще ли использовать хранилище как есть, с заводскими функциями?» Естественно, при ответе на вопрос, стоит ли игра свеч, нужно руководствоваться принципом «Можно ли без этого обойтись?». Но бывают случаи, когда новая функция действительно необходима. Например, вам нужно проверять содержимое хранилища на вирусы в автономном режиме. Или управлять им с помощью SSH. Или создавать архивные копии в сжатом виде посредством небезызвестной связки tar+gzip. Существует еще много задач, которыми можно «нагрузить» ReadyNAS. Например, некоторые энтузиасты превращают сетевое хранилище в полноценный веб-сервер.
Следует сразу оговориться, что для использования описываемых в данной статье технологий необходимо хорошее знание основ работы в UNIX-системах, в частности Debian Linux. Иначе можно запросто остаться у разбитого корыта, то есть с неработоспособным устройством, лишенным гарантийного обслуживания. Хотя и в этом случае существует «запасной парашют» – возврат к заводским установкам (cм. мою статью [1]). С данным в этом случае придется распрощаться, но хранилищу вернется работоспособность. Также при этом обновляется показатель «был ли включен доступ через SSH», и у вас появляется шанс не потерять гарантию (поддержку).
Если вы имеете опыт общения с UNIX-like платформами и не боитесь разбираться со сложными ситуациями, для которых нет готовых рецептов, – тогда, возможно, стоит рискнуть, чтобы еще лучше приспособить хранилище под свои нужды.
Еще один принцип, на который мне хочется обратить внимание: «Для хорошего художника главное – вовремя остановиться». Если вы установили и настроили программное обеспечение, которое было действительно необходимо, и оно работает, не следует больше ничего предпринимать. Просто закройте сессию. Дополнительные эксперименты с настройками из чистого любопытства ни к чему хорошему, как правило, не приводят.
Установка дополнительных расширений
В данном случае мы установим модуль EnableRootSSH, чтобы получить возможность удаленного управления хранилищем по SSH и добраться непосредственно до самой операционной системы. Далее мы сможем устанавливать программные пакеты для Debian и выполнять команды непосредственно из Linux-оболочки (shell).
Перед установкой данный модуль необходимо скачать по адресу: http://www.readynas.com/download/addons/x86/4.2/EnableRootSSH_1.0-x86.bin (на момент написания статьи была доступна версия 1.0).
Установка производится посредством FrontView (веб-интерфейс управления) сетевым хранилищем) из меню «Система -> Обновления» вкладка «Локальный». Нажав на кнопку «Обзор», находим на диске наш предварительно скачанный установочный бинарник EnableRootSSH и загружаем его в хранилище (см. рис. 1).
Рисунок 1. Установка EnableRootSSH
Далее система выдаст сообщение: «Загрузка и верификация займет несколько минут. Не прерывайте браузер в течение этого времени. Вы получите запрос на подтверждение перед выполнением фактического обновления».
После того как устанавливаемый вами модуль будет загружен и проверен, система выведет окно, подтверждающее корректность модуля, и разрешит выполнить обновление системы (см. рис. 2).
Рисунок 2. Запрос на обновление системы
Далее появляется сообщение «Для продолжения обновления, пожалуйста, перезагрузите NAS)». После загрузки системы можно проверить возможность входа в систему:
berezhnoy@linux-1zti:~>ssh root@10.0.0.86
The authenticity of host "10.0.0.86 (10.0.0.86)" can"t be established. RSA key fingerprint is 2c:88:b8:1d:ff:9e:5a:d8:3f:ab:66:38:19:cd:3d:5e. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added "10.0.0.86" (RSA) to the list of known hosts. root@10.0.0.86"s password: Last login: Mon Sep 21 06:48:01 2009 from linux-6922.vai.lan on pts/0 Linux nas-EA-17-91 2.6.25 #1 SMP Thu Sep 4 15:24:58 PDT 2008 i686 GNU/Linux |
Внимание! Пароль для SSH будет тот же, что и у пользователя admin, который действовал на момент установки EnableRootSSH. Далее вы можете изменять отдельно пароль для root (например, командой passwd) и отдельно пароль пользователя admin из веб-интерфейса FrontView.
Установка дополнительных пакетов для Linux Debian
Прежде чем выполнять какие-либо работы, определимся с конечной целью. Допустим, в конечном итоге мы хотим видеть наше хранилище с установленным антивирусом ClamAV и настроенной системой сканирования два раза в сутки при помощи скриптов. Вирусы, «живущие» на рабочих станциях под управлением Windows, не смогут навредить сетевому хранилищу на UNIX-like операционной системе. Но это не отменяет необходимости антивирусной проверки содержимого общих каталогов, которые могут стать источником размножения malware.
Проводим синхронизацию индексов пакетов с источником
Установка пакетов с Linux Debian при помощи менеджера пакетов apt-get. Особенность установки в данной версии заключается в том, что, если мы просто введем команду:
apt-get install clamav
то будет установлена устаревшая версия ClamAV 0.90, не способная работать в данной конфигурации.
Чтобы инсталляция прошла гладко и в итоге была установлена работоспособная версия ClamAV, обратимся к страничке с документацией по установке этого пакета: http://www.clamav.net/download/packages/packages-linux.
Из описания становится понятно, что установки пакета необходимо добавить в файл описаний репозиториев /etc/apt/sources.list дополнительную строку, указывающую на репозиторий с обновленной рабочей версией.
Выполняем резервное копирование sources.list (на всякий случай):
#cp /etc/apt/sources.list /etc/apt/sources.list.old
И собственно добавляем строку с адресом репозитория:
#echo deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free >> /etc/apt/sources.list
В итоге в файл должно быть записано следующее:
# cat /etc/apt/sources.list
#deb http://www.backports.org/debian etch-backports main deb http://ftp.debian.org/debian etch main deb http://security.debian.org/debian-security etch/updates main deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free
Выполним синхронизацию файлов описаний пакетов, указанных в /etc/apt/sources.list с их источниками. Другими словами, обновить локальный кэш пакетов, выполнив команду:
nas-EA-17-91:~# apt-get update
В ответ система выдаст следующую информацию:
Get:1 http://volatile.debian.org etch/volatile Release.gpg [189B] Get:2 http://ftp.debian.org etch Release.gpg [1032B] Get:3 http://volatile.debian.org etch/volatile Release [40.7kB] Get:4 http://ftp.debian.org etch Release [67.8kB] Get:5 http://security.debian.org etch/updates Release.gpg [835B] Get:6 http://security.debian.org etch/updates Release [37.6kB] Ign http://ftp.debian.org etch Release Get:7 http://volatile.debian.org etch/volatile/main Packages [6775B] Get:8 http://ftp.debian.org etch/main Packages [5620kB] Get:9 http://volatile.debian.org etch/volatile/contrib Packages [513B] Get:10 http://volatile.debian.org etch/volatile/non-free Packages [20B] Ign http://security.debian.org etch/updates Release Get:11 http://security.debian.org etch/updates/main Packages [460kB] Fetched 6236kB in 2s (2527kB/s) Reading package lists... Done W: GPG error: http://ftp.debian.org etch Release: The following signatures couldn"t be verified because the public key is not available: NO_PUBKEY 9AA38DCD55BE302B W: GPG error: http://security.debian.org etch/updates Release: The following signatures couldn"t be verified because the public key is not available: NO_PUBKEY 9AA38DCD55BE302B W: You may want to run apt-get update to correct these problems |
Обратите внимание на ошибку the public key is not available при подключении к репозиториям http://ftp.debian.org etch и http://security.debian.org etch. Дело в том, что для подключения этого репозитория необходимо для начала получить gpg-ключ. Чтобы это сделать, сначала импортируем ключ с данным ID с сервера сертификатов. Адрес сервера wwwkeys.eu.pgp.net указывается посредством директивы –keyserver:
# gpg --keyserver wwwkeys.eu.pgp.net --recv-keys 9AA38DCD55BE302B
Ответ системы:
gpg: directory `/root/.gnupg" created gpg: can"t open `/gnupg/options.skel": No such file or directory gpg: keyring `/root/.gnupg/secring.gpg" created gpg: keyring `/root/.gnupg/pubring.gpg" created gpg: requesting key 55BE302B from hkp server wwwkeys.eu.pgp.net gpg: /root/.gnupg/trustdb.gpg: trustdb created gpg: key 55BE302B: public key "Debian Archive Automatic Signing Key (5.0/lenny) " imported gpg: no ultimately trusted keys found gpg: Total number processed: 1 gpg: imported: 1 (RSA: 1) |
Импортируем полученный ключик в менеджер пакетов:
# gpg --armor --export 9AA38DCD55BE302B | apt-key add -
Ответ системы:
Теперь с чистой совестью снова вводим:
# apt-get update
И получаем информацию о том, что синхронизация прошла без ошибок:
Get:1 http://ftp.debian.org etch Release.gpg [1032B] Get:2 http://security.debian.org etch/updates Release.gpg [835B] Hit http://ftp.debian.org etch Release Hit http://security.debian.org etch/updates Release Get:3 http://volatile.debian.org etch/volatile Release.gpg [189B] Ign http://ftp.debian.org etch/main Packages/DiffIndex Ign http://security.debian.org etch/updates/main Packages/DiffIndex Hit http://volatile.debian.org etch/volatile Release Hit http://ftp.debian.org etch/main Packages Hit http://security.debian.org etch/updates/main Packages Ign http://volatile.debian.org etch/volatile/main Packages/DiffIndex Ign http://volatile.debian.org etch/volatile/contrib Packages/DiffIndex Ign http://volatile.debian.org etch/volatile/non-free Packages/DiffIndex Hit http://volatile.debian.org etch/volatile/main Packages Hit http://volatile.debian.org etch/volatile/contrib Packages Hit http://volatile.debian.org etch/volatile/non-free Packages Fetched 1868B in 0s (3647B/s) Reading package lists... Done |
Для удобства дальнейшего редактирования и манипулирования файлами установим файловый менеджер Midnight Commander, заодно проверим работу установщика пакетов.
# apt-get install mc
Установка ClamAV
# gpg --armor --export 9AA38DCD55BE302B | apt-key add -
Ответ системы:
Reading package lists... Done Building dependency tree... Done The following extra packages will be installed: clamav-base clamav-freshclam libclamav6 Suggested packages: clamav-docs libclamunrar6 The following NEW packages will be installed: clamav clamav-base clamav-freshclam libclamav6 0 upgraded, 4 newly installed, 0 to remove and 39 not upgraded. Need to get 23.4MB of archives. |
Далее программа-инсталлятор задаст вам несколько вопросов:
After unpacking 24.8MB of additional disk space will be used. Do you want to continue [Y/n]? |
«После распаковки будет использовано 24,8 Мб дополнительного дискового пространства. Вы хотите продолжить?»
После чего система выдаст сообщения об успешном скачивании и установке пакетов:
Get:1 http://volatile.debian.org etch/volatile/main libclamav6 0.95.2+dfsg-0volatile1 [579kB] Get:2 http://volatile.debian.org etch/volatile/main clamav-base 0.95.2+dfsg-0volatile1 [22.3MB] Get:3 http://volatile.debian.org etch/volatile/main clamav-freshclam 0.95.2+dfsg-0volatile1 [278kB] Get:4 http://volatile.debian.org etch/volatile/main clamav 0.95.2+dfsg-0volatile1 [268kB] Fetched 23.4MB in 4s (5268kB/s)
debconf: delaying package configuration, since apt-utils is not installed Selecting previously deselected package libclamav6. (Reading database ... 16978 files and directories currently installed.) Unpacking libclamav6 (from .../libclamav6_0.95.2+dfsg-0volatile1_i386.deb) ... Selecting previously deselected package clamav-base. Unpacking clamav-base (from .../clamav-base_0.95.2+dfsg-0volatile1_all.deb) ...
Selecting previously deselected package clamav-freshclam. Unpacking clamav-freshclam (from .../clamav-freshclam_0.95.2+dfsg-0volatile1_i386.deb) ... Selecting previously deselected package clamav.
Unpacking clamav (from .../clamav_0.95.2+dfsg-0volatile1_i386.deb) ... Setting up libclamav6 (0.95.2+dfsg-0volatile1) ...
Setting up clamav-base (0.95.2+dfsg-0volatile1) ...
Setting up clamav-freshclam (0.95.2+dfsg-0volatile1) ... Starting ClamAV virus database updater: freshclam.
Setting up clamav (0.95.2+dfsg-0volatile1) ... |
Собственно, и вся установка. Обратите внимание на номер версии 0.95.2 (на момент написания статьи). Это то, что нужно.
Окончательная настройка ClamAV
В случае с обычным файл-сервером можно без каких-либо дополнительных настроек переходить к написанию скриптов для проверки. Но в сетевых хранилищах операционная система устанавливается на встроенный flash-носитель, имеющий ограниченное количество циклов перезаписей. Поэтому необходимо перенести перезаписываемые файлы (такие как: журналы отчетов о работе программ, антивирусные базы и т.д.) на дисковую подсистему, благо места у нас там, как говорится, хоть танцуй.
Первоначально создадим каталог для хранения часто обновляемых файлов. Дисковая подсистема по умолчанию примонтирована в каталог /c. Уточнить это можно командой mount без параметров:
# mount
Результат выполнения:
/dev/md0 on / type ext3 (rw,noatime) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw) tmpfs on /ramfs type ramfs (rw) tmpfs on /USB type tmpfs (rw,size=16k) usbfs on /proc/bus/usb type usbfs (rw) /dev/c/c on /c type ext3 (rw,noatime,acl,user_xattr,usrquota,grpquota) |
Поэтому создаем «служебный» каталог /c/system/ и в нем каталог /c/system/clamav:
# mkdir -p /c/system/clamav
Для доступа меняем владельца каталога /c/system/clamav и его права для обеспечения доступа нашего антивируса:
# chown clamav:clamav /c/system/clamav # chmod 770 /c/system/clamav
Теперь необходимо подредактировать файлы конфигурации, чтобы система сохраняла свои файлы по новому адресу.
На всякий случай сохраняем предыдущую версию конфигурационных файлов:
# cp /etc/clamav/freshclam.conf /etc/clamav/freshclam.conf.old # cp /etc/clamav/clamd.conf /etc/clamav/clamd.conf.old
Начнем с freshclam.conf, отвечающего за обновление антивирусной базы.
Находим в файле следующие строки:
UpdateLogFile /var/log/clamav/freshclam.log DatabaseDirectory /var/lib/clamav/ PidFile /var/run/clamav/freshclam.pid
и изменяем их соответственно на:
UpdateLogFile /c/system/clamav/freshclam.log DatabaseDirectory /c/system/clamav/ PidFile /c/system/clamav/freshclam.pid
Аналогичные изменения производим в основном конфигурационном файле clamd.conf. Значения:
LocalSocket /var/run/clamav/clamd.ctl PidFile /var/run/clamav/clamd.pid DatabaseDirectory /var/lib/clamav LogFile /var/log/clamav/clamav.log
меняем на:
LocalSocket /c/system/clamav/clamd.ctl PidFile /c/system/clamav/clamd.pid DatabaseDirectory /c/system/clamav LogFile /c/system/clamav/clamav.log
Запускаем антивирусное обновление:
# freshclam
Результат:
ClamAV update process started at Wed Sep 23 05:36:21 2009 Downloading main.cvd [100%] main.cvd updated (version: 51, sigs: 545035, f-level: 42, builder: sven) Downloading daily.cvd [100%] daily.cvd updated (version: 9825, sigs: 79288, f-level: 43, builder: ccordes) Database updated (624323 signatures) from db.local.clamav.net (IP: 194.186.47.19) WARNING: Clamd was NOT notified: Can"t connect to clamd through /c/system/clamav/clamd.ctl connect(): No such file or director |
Последние три строчки системного сообщения появились из-за того, что демон clamd не запущен. В настоящий момент нам это и не нужно, так как дальше будет настроен запуск антивирусного сканера по расписанию.
Скрипты для антивирусной проверки
Допустим, мы хотим организовать антивирусную проверку дважды в день. В проверке нуждаются каталоги: Users, Document и Public.
Пусть наш файл называется /opt/everydayscan.sh. Рассмотрим его содержимое. Ниже приводится содержимое скрипта с дополнительными комментариями:
//Создаем импровизированный log-файл для скрипта и пишем в него комментарий ClamAV VIRUS BASE UPDATES. //Данный файл будет перезаписываться каждый раз, когда запускается проверка
echo ClamAV VIRUS BASE UPDATES > /c/system/everydayscan.log //Обновляем ClamAV, результаты вывода добавляем в лог freshclam >> /c/system/nightscan.log
//Проверяем на вирусы общие ресурсы: Users, Documents, Public clamscan --recursive=yes --detect-broken=yes --phishing-ssl=yes --phishing-cloak=yes --move=/c/quarantine -i /c/users >> /c/system/nightscan.log clamscan --recursive=yes --detect-broken=yes --phishing-ssl=yes --phishing-cloak=yes --move=/c/quarantine -i /c/document >> /c/system/nightscan.log clamscan --recursive=yes --detect-broken=yes --phishing-ssl=yes --phishing-cloak=yes --move=/c/quarantine -i /c/public >> /c/system/nightscan.log
Необходимо прокомментировать параметры командной строки:
- recursive=yes – проверять подкаталоги;
- detect-broken=yes – означает проверку на разрушенные исполняемые модули (под которыми часто маскируются вирусы и другие вредоносные программы);
- phishing-cloak=yes – всегда блокировать скрытые URL;
- phishing-ssl=yes – всегда блокировать несоответствия SSL в URL;
- move=/c/quarantine – перемещать зараженные объекты в директорию /c/quarantine, то есть в каталог quarantine на общем ресурсе.
Как уже говорилось выше, наш скрипт будет запускаться два раза в сутки: ночью в 23:59 и днем в обеденный перерыв в 13:59. Для этого добавляем в /etc/crontab следующие строки:
59 23 * * * root /opt/everydayscan.sh 59 13 * * * root /opt/everydayscan.sh
и перезапускаем демон cron, отвечающий за запуск запланированных заданий:
#/etc/init.d/cron restart
Ответ системы:
Restarting periodic command scheduler: crond. |
Настройка антивирусной системы завершена.
Пример настройки резервного копирования
Что еще можно сделать в плане улучшения работы нашего хранилища?
Можно организовать резервное копирование при помощи команды tar. Дело в том, что штатная система резервного копирования, управляемая через FrontView, копирует файлы без сжатия. Неплохо, но расточительно. Используя команду tar с ключом -z, можно сжать архивную копию в один файл меньшего размера, который потом легко можно переписать на другой сетевой ресурс, ленту и т.д. (Для поклонников архиватора bzip2 возможно применение ключа -j для использования bzip2 вместе с tar.)
Рассмотрим пример. В общем разделе «backup» создаем сжатый архивный файл user.tar.gz, содержащий информацию каталога users:
#tar -czf /c/backup/user.tar.gz /c/users
Получившийся архив можно переписать на внешний ресурс или съемный носитель.
Аналогично рассмотренному выше примеру с антивирусной проверкой можно при помощи демона cron организовать запуск данной команды по расписанию, решив тем самым задачу резервного копирования.
***
Использование доступа по SSH в режиме командной строки (shell) может значительно увеличить функциональный диапазон сетевых хранилищ от NETGEAR, в частности ReadyNAS Pro. Возможности при этом открываются весьма значительные. Можно устанавливать программы, редактировать скрытые конфигурационные файлы, напрямую перезаписывать файлы и т.д. Естественно, к таким тонким настройкам необходимо подходить вдумчиво и с осторожностью. Но если есть желание, знания и опыт, возможно, стоит рискнуть и использовать нестандартный подход для получения новых функций.
- Бережной А. Расширение возможностей при работе с сетевыми хранилищами NETGEAR ReadyNAS. //Системный администратор, №12, 2009 г. – С. 40-43.
- Бережной А. Альтернатива файловому серверу это – дисковое хранилище NETGEAR ReadyNAS. //Системный администратор, №7, 2009 г. – С. 14-20.
- Официальный сайт антивируса ClamAV – http://www.clamav.org.
- Сайт сообщества Debian Linux – http://www.debian.org.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|