АйТи-ПАРАЗИТ

#АйТи-ПАРАЗИТ 

Вс 27 января 2019

Väinämöinen: Runo II

Posted by Andrey Korhonen in Väinämöinen   

Väinämöinen Kalevala

Ма́нала (Tuonela, Туо́нела) — загробный мир в финно-угорской мифологии.
Манала расположена под землёй на окраине мира в Похьёле и от земли живых её отделяет одноименная река, которая одновременно именуется черной (musta) и святой (pyhän). Также Калевала описывает Маналу как остров.

Совершать даже маленькие подвиги «голыми» руками, да и на чуждой территории — задача нетривиальная даже для героя эпоса. Непростая, но вполне выполнимая, если есть правильно подобранный по задаче инструмент. Особенно, если это — «сделай сам» инструмент. Для Вяйнямёйнена таким стала собственноручно построенная лодка, для меня же — программно-аппаратный комплекс, о «железной» составляющей которого, я рассказал в одном из прошлых постов.

И раз уж целью одного из первых нисхождений Вяйнямёйнена в Маналу был поиск недостающих для спуска лодки на воду трёх слов заклинания, то и я, своё повествование о софтовой сущности ПАК «Väinämöinen», начну с рассказа об установке и эксплуатации трёх утилит, без которых результат использование комплекса для «эксгумации» данных — весьма ничтожен.

Первоoснова

В качестве операционной системы для обеих моделей программно-аппаратного комплекса я использую ОС от Raspberry Pi Foundation. В первом случае это — Raspbian, во второмRaspberry Pi Desktop.

Raspbian — основанная на Debian операционная система для Raspberry Pi. Существует несколько версий Raspbian, в том числе Raspbian Stretch и Raspbian Jessie. С 2015 года Raspbian официально представлена Raspberry Pi Foundation в качестве основной операционной системы для одноплатных компьютеров Raspberry Pi. Raspbian была создана Майком Томпсоном и Питером Грином в качестве независимого проекта. Первоначальная сборка была выполнена в июне 2012 года. Операционная система находится в стадии активной разработки. Raspbian оптимизирована для низкопроизводительных процессоров ARM, используемых в линейке компьютеров Raspberry Pi.

Raspberry Pi Desktop — версия Raspbian для обычных PC или MAC.

После «добычи» образа операционной системы, его необходимо записать на носитель, с которого будет загружаться ПАК:

  • Карта памяти формата micro SD для Raspbian (я отдаю предпочтение картам 10 класса);
  • USB flash-drive для Raspberry Pi Desktop.

Что касается объёма носителя, у меня в каждой из реализованных моделей его ёмкость составляет 16Гб. Хотя, судя по утилизированному пространству, для обсуждаемых целей будет вполне достаточно и 8Гб.

Конфиг

Для эффективной настройки, при первой загрузке к устройствам должны быть подключены монитор, клавиатура и, желательно, мышь. Загрузку с usb-носителя я рекомендую осуществлять через boot-меню ПК. Установленный по умолчанию режим загрузки Raspberry Pi Desktop «Run with persistance», необходимо оставить без изменений, он позволяет работать в режиме LiveUSB с сохранением параметров.

Первоначально система грузится в графический интерфейс системы (кроме Raspbian Lite) и отображает приветствие. Я его закрываю и запускаю терминал, в котором вызываю утилиту конфигурации.

pi@väinämöinen:~ $ sudo raspi-config
┌──                       ──┤ Raspberry Pi Software Configuration Tool (raspi-config) ├──                      ──┐

               1 Change User Password Change password for the current user                                        
               2 Network Options      Configure network settings                                                  
               3 Boot Options         Configure options for start-up                                              
               4 Localisation Options Set up language and regional settings to match your location                
               5 Interfacing Options  Configure connections to peripherals                                        
               6 Overclock            Configure overclocking for your Pi                                          
               7 Advanced Options     Configure advanced settings                                                 
               8 Update               Update this tool to the latest version                                      
               9 About raspi-config   Information about this configuration tool                                   



                          <Select>                                            <Finish>                            

└──                                                                                                            ──┘

Причём, состав инструментов основного меню (ОМ) утилиты конфигурации Raspberry Pi Desktop на USB-носителе несколько отличается от Raspbian на Raspberry PI.

┌──                       ──┤ Raspberry Pi Software Configuration Tool (raspi-config) ├──                      ──┐

               1 Change User Password Change password for the current user                                       
               2 Network Options      Configure network settings                                                 
               3 Boot Options         Configure options for start-up                                             
               4 Localisation Options Set up language and regional settings to match your location               
               5 SSH                  Enable/Disable remote command line access to your PC using SSH             
               6 Pixel Doubling       Enable/Disable 2x2 pixel mapping                                           
               8 Update               Update this tool to the latest version                                     
               9 About raspi-config   Information about this configuration tool                                  




                          <Select>                                            <Finish>                           

└──                                                                                                            ──┘

Перво-наперво, что необходимо сделать в начале конфигурации — это установить новый пароль, выбрав пункт 1 «Change User Password» и обновить raspi-config через пункт 8 «Update» ОМ.

Далее в пункте 2 «Network Options» ОМ назначить имя своему хосту — подпункт N1 «Hostname».

┌──                       ──┤ Raspberry Pi Software Configuration Tool (raspi-config) ├──                      ──┐

                    N1 Hostname                Set the visible name for this Pi on a network                     
                    N2 Wi-fi                   Enter SSID and and passphrase                                     
                    N3 Network interface names Enable/Disable predictable network interface names                









                          <Select>                                              <Back>                           

└──                                                                                                            ──┘

При желании можно настроить и подключение к WiFi, но я его не использую, т.к. предпочитаю, чтобы и Raspberry PI и ПК, загруженный с USB-флешки, в процессе восстановления данных имели подключение к проводной сети.

Следующий пункт утилиты конфигурации, требующий внимания — 3 «Boot Options» ОМ. Вернее его подпункт B1 «Desktop / CLI».

┌──                       ──┤ Raspberry Pi Software Configuration Tool (raspi-config) ├──                      ──┐

        B1 Desktop / CLI             Choose whether to boot into a desktop environment or the command line       
        B2 Wait for Network at Boot  Choose whether to wait for network connection during boot                    
        B3 Splash Screen             Choose graphical splash screen or text boot                                  









                          <Select>                                              <Back>                            

└──                                                                                                            ──┘

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

┌──                       ──┤ Raspberry Pi Software Configuration Tool (raspi-config) ├──                      ──┐

                       B1 Console           Text console, requiring user to login                                 
                       B2 Console Autologin Text console, automatically logged in as 'pi' user                    
                       B3 Desktop           Desktop GUI, requiring user to login                                  
                       B4 Desktop Autologin Desktop GUI, automatically logged in as 'pi' user                     








                          <Select>                                              <Back>                            

└──                                                                                                            ──┘

Далее необходимо задать настройки локализации. Для этого заполняем всё подпункты в пункте 4 «Localisation Options» ОМ:

┌──                       ──┤ Raspberry Pi Software Configuration Tool (raspi-config) ├──                      ──┐

               I1 Change Locale          Set up language and regional settings to match your location             
               I2 Change Timezone        Set up timezone to match your location                                   
               I3 Change Keyboard Layout Set the keyboard layout to match your keyboard                           
               I4 Change Wi-fi Country   Set the legal channels used in your country                              








                          <Select>                                              <Back>                            

└──                                                                                                            ──┘
  • I1 «Change Locale» — установка локали (поддерживаемого языка и региональных настроек). У меня: ru_RU.UTF-8 UTF-8(по умолчанию) и en_GB.UTF-8 UTF-8;
  • I2 «Change Timezone» — установка часового пояса У меня: Europe / Moscow;
  • I3 «Change Keyboard Layout» — настройка клавиатуры У меня: Generic 104-key PC, English;
  • I4 «Change Wi-fi Country» — настройка разрешённых в стране использования WiFi каналов.

Далее активируем SSH-подключение для удалённого управления ПАК. В случае с утилитой конфигурации Raspberry Pi Desktop всё на виду — пункт 5 «SSH» ОМ. С Raspbian чуточку сложнее — подпункт P2 «SSH» пункта 5 «Interfacing Options» ОМ утилиты.

┌──                       ──┤ Raspberry Pi Software Configuration Tool (raspi-config) ├──                      ──┐

                P1 Camera      Enable/Disable connection to the Raspberry Pi Camera                               
                P2 SSH         Enable/Disable remote command line access to your Pi using SSH                     
                P3 VNC         Enable/Disable graphical remote access to your Pi using RealVNC                    
                P4 SPI         Enable/Disable automatic loading of SPI kernel module                              
                P5 I2C         Enable/Disable automatic loading of I2C kernel module                              
                P6 Serial      Enable/Disable shell and kernel messages on the serial connection                  
                P7 1-Wire      Enable/Disable one-wire interface                                                  
                P8 Remote GPIO Enable/Disable remote access to GPIO pins                                          




                          <Select>                                              <Back>                            

└──                                                                                                            ──┘

Внимательный читатель может заметить, что на верхнем отображении меню есть опция включения VNC. Да есть, но только для Raspbian и клиентом может выступать только версия VNCViewer для Raspberry PI от RealVNC. Для других клиентов, а также на Raspberry Pi Desktop нужно поднимать отдельный VNC-сервер. Кроме того, все утилиты, про которые я рассказываю дальше — консольные.

Всем тем, кто будет реализовывать ПАК на основе Raspberry PI и Raspbian рекомендую выделить всё пространство карты памяти для ОС. Сделать это можно в подпункте A1 «Expand Filesystem» пункта 7 «Advanced Options» ОМ.

┌──                       ──┤ Raspberry Pi Software Configuration Tool (raspi-config) ├──                      ──┐

          A1 Expand Filesystem Ensures that all of the SD card storage is available to the OS                     
          A2 Overscan          You may need to configure overscan if black bars are present on display            
          A3 Memory Split      Change the amount of memory made available to the GPU                              
          A4 Audio             Force audio out through HDMI or 3.5mm jack                                         
          A5 Resolution        Set a specific screen resolution                                                   
          A6 Pixel Doubling    Enable/Disable 2x2 pixel mapping                                                   
          A7 GL Driver         Enable/Disable experimental desktop GL driver                                     





                          <Select>                                              <Back>                            

└──                                                                                                            ──┘

На этом работу с raspi-config можно считать завершённой.

Доступ к телу

Теперь необходимо узнать IP-адрес для осуществления дистанционного управления устройством с помощью SSH-протокола.

SSH (англ. Secure Shell — «безопасная оболочка») — сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов). Схож по функциональности с протоколами Telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли. SSH допускает выбор различных алгоритмов шифрования. SSH-клиенты и SSH-серверы доступны для большинства сетевых операционных систем.

pi@väinämöinen:~ $ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.77  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::dbcd:3e15:b2c5:f49f  prefixlen 64  scopeid 0x20<link>
        ether d0:27:88:44:ba:5a  txqueuelen 1000  (Ethernet)
        RX packets 440  bytes 46663 (45.5 KiB)
        RX errors 0  dropped 8  overruns 0  frame 0
        TX packets 376  bytes 38086 (37.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 1c:65:9d:f1:f4:8c  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

По умолчанию Raspbian/Raspberry PI Desktop получает динамический IP-адрес, что не удобно при постоянном переконнекте по SSH. Особенно, если устройство будет использоваться в разных адресных пространствах. В этом случае, можно сразу настроить подключение по VPN (мой вариант — Авоська для «эксгуматора» данных) и назначить статический адрес устройству уже в ней.

pi@väinämöinen:~ $ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.77  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::dbcd:3e15:b2c5:f49f  prefixlen 64  scopeid 0x20<link>
        ether d0:27:88:44:ba:5a  txqueuelen 1000  (Ethernet)
        RX packets 83628  bytes 116853743 (111.4 MiB)
        RX errors 0  dropped 230  overruns 0  frame 0
        TX packets 40948  bytes 3052375 (2.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 30  bytes 3121 (3.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 30  bytes 3121 (3.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 1c:65:9d:f1:f4:8c  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ztnwtppo46: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 2800
        inet 10.20.30.2  netmask 255.255.255.0  broadcast 10.20.30.255
        inet6 fe80::9459:ffff:fe98:a3a9  prefixlen 64  scopeid 0x20<link>
        ether 96:59:ff:98:a3:a9  txqueuelen 1000  (Ethernet)
        RX packets 82  bytes 9621 (9.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 121  bytes 17172 (16.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Или поступить по-старинке — назначить статический адрес одному из интерфейсов устройства. Сделать это можно, открыв в стандартном редакторе ОС конфигурационный файл автоприсвоения IP-адресов,

pi@väinämöinen:~ $ sudo nano /etc/dhcpcd.conf

найти раздел Example static IP configuration и привести к следующему виду, указав свои параметры адресации.

# Example static IP configuration:
interface eth0
static ip_address=192.168.0.77/24
static ip6_address=fd51:42f8:caae:d92e::ff/64
static routers=192.168.0.1
static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1

После перезагрузить систему.

pi@väinämöinen:~ $ sudo reboot

Подключиться по SSH можно с помощью клиента Putty для MS Windows или посредством терминала в Linux/MacOS. Детально останавливаться на них я не буду — в сети полно информации по этому вопросу.

[avk@it-parasite ~]$ ssh pi@192.168.0.77
pi@192.168.0.77: Permission denied (publickey).

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

pi@väinämöinen:~ $ sudo nano /etc/ssh/sshd_config

найти в нём строку

PasswordAuthentication no

и заменить её на:

PasswordAuthentication yes

и ...

Последним шагом будет обновление операционной системы.

pi@väinämöinen:~ $ sudo apt-get update && sudo apt-get upgrade -y

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

Утилита №1

TestDisk — мощная бесплатная программа для восстановления данных. Она была разработана в первую очередь, что бы помочь восстановить утраченные разделы и/или восстановить загрузочную способность дисков если эта проблема вызвана программно, вирусами или ошибками человека (таких как случайное удаление Таблицы Разделов).

Возможности:

  • Исправлять таблицу разделов, восстанавливать удаленные разделы;
  • Восстанавливать загрузочный сектор FAT32 из резервной копии;
  • Перестраивать (реконструировать) загрузочный сектор FAT12/FAT16/FAT32;
  • Исправлять таблицу FAT;
  • Перестраивать (реконструировать) загрузочный сектор NTFS;
  • Восстанавливать загрузочный сектор NTFS из резервной копии;
  • Восстанавливать MFT использую MFT зеркало;
  • Определять резервный SuperBlock ext2/ext3/ext4;
  • Восстанавливать удаленные файлы на файловых системах FAT, NTFS and ext2;
  • Копировать файлы с удалённых FAT, NTFS and ext2/ext3/ext4 разделов.

Утилита хоть и мощная, но устанавливается просто

pi@väinämöinen:~ $ sudo apt-get install testdisk

Утилита №2

WHDD — консольная утилита для диагностики жёстких дисков и восстановления данных с них.
Позволяет протестировать жёсткие диски или другое блочное устройство на скорость чтения и записи (определение времени доступа). Утилита имеет псевдографический интерфейс и визуализирует процесс выполнения (подобно DOS-утилите MHDD).

Одной из основных её достоинств — возможность выявления сбойных участков (бэд-секторов) на поверхности жёсткого диска. Утилита работает с тестируемыми дисками непосредственно через порты ввода-вывода, то есть на самом низком уровне, что позволяет получить наиболее достоверные результаты.

Тут несколько сложнее, целых три команды!

pi@väinämöinen:~ $ git clone https://github.com/whdd/whdd
.....
pi@väinämöinen:~ $ cd whdd
pi@väinämöinen:~/whdd $ sudo ./build.sh && sudo make install
.....

Утилита №3

Clam AntiVirus — пакет антивирусного ПО, работающий во многих операционных системах, включая Unix-подобные ОС, OpenVMS, Microsoft Windows и Apple Mac OS X. Выпускается под GNU General Public License и является свободным программным обеспечением.

Возможности:

  • управление из командной строки;
  • возможность использования с большинством почтовых серверов, включая реализацию milter-интерфейса для Sendmail;
  • сканер в виде библиотеки Си;
  • сканирование файлов и почты «на лету»;
  • определение более 850 000 вирусов, червей, троянов, сообщений фишинга;
  • анализ сжатых файлов RAR (2.0, 3.0), Zip, Gzip, Bzip2, MS OLE2, MS Cabinet, MS CHM (сжатый HTML) и MS SZDD;
  • поддержка сканирования mbox, Maildir и «сырых» почтовых файлов;
  • анализ файлов формата Portable Executable, упакованных UPX, FSG или Petite.

pi@väinämöinen:~ $ sudo apt-get install clamav clamav-daemon
.....
pi@väinämöinen:~ $ sudo reboot

Уйти, чтобы вернуться

На этой технологической ноте позволю повествование о пуско-наладочных работах программно-аппаратного комплекса «Väinämöinen» завершить. Завершить для того, чтобы вернуться позже с «камасутрой» по использованию трёх установленных утилит и подготовить читателя к нисхождению в Маналу .

Comments