# OS Linux ## Занятие 2. Общие положения, терминал и системные утилиты. Домашнее задание. >Выполнить первые 5 уровней https://overthewire.org/wargames/bandit/ Пароль bandit0: bandit0 > ssh bandit0@bandit.labs.overthewire.org -p 2220 > ls > cat readme ![](https://i.imgur.com/vd37Nvc.png) Пароль bandit1: boJ9jbbUNNfktd78OOpsqOltutMc3MY1 >ls >cat ./- ![](https://i.imgur.com/jBwtg5r.png) Пароль bandit2: CV1DtqXWVFXTvM2F0k09SHz0YwRINYA9 >ls >cat "spaces in this filename" ![](https://i.imgur.com/XbEphnc.png) Пароль bandit3: UmHadQclWmgdLOKQ3YNgjWxGoRMb5luK >ls -la >cd inhere/ >ls -la >cat ./.hidden ![](https://i.imgur.com/LUoyyn9.png) Пароль bandit4: pIwrPrtPN36QITSp3EQaw936yaFoFgAB >ls -la >cd inhere/ >ls -la >cat ./-file07 ![](https://i.imgur.com/WlWjYJ5.png) Пароль bandit5: koReBOKuIDDepwhWk7jZC0RTdopnAYKh >find . -type f -size -1034c -and -size +1032c cat inhere/maybehere07/.file2 ![](https://i.imgur.com/EfcEzpO.png) Пароль bandit6: DXjZPULLxYr17uwoI01bNLQbtFemEgo7 >find / -type f -user bandit7 -group bandit6 -size -34c -and -size +32c 2>/dev/null >cat /var/lib/dpkg/info/bandit7.password ![](https://i.imgur.com/CT5ct80.png) Пароль bandit7: HKBPTKQnIay4Fw76bEy8PVxKEDQRKTzs >grep millionth data.txt ![](https://i.imgur.com/LiW8TfF.png) Пароль bandit8: cvX2JJa4CFALtqS87jk27qwqGhBM9plV >sort data.txt | uniq -u ![](https://i.imgur.com/a71vg3B.png) Пароль bandit9: UsvVyFSfZZWbi6wgC7dAFyFuR6jQQUhR >strings data.txt | grep '==' ![](https://i.imgur.com/BodaQhX.png) Пароль bandit10: truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk >base64 -d data.txt ![](https://i.imgur.com/sn9CHeQ.png) Пароль bandit11: IFukwKGsFW8MOq3IRFqrxE1hxTNEbUPR >tr 'A-Za-z' 'N-ZA-Mn-za-m' < data.txt ![](https://i.imgur.com/RrYghSk.png) Пароль bandit12: 5Te8Y4drgCRfCx8ugdwuEX8KFC6k2EUu ## Занятие 3. Домашнее задание. >Настроить SSH подключение к Linux машине с помощью публичного ключа Добавить еще один интерфейс на виртуальную машину (NAT) и настроить сеть для этого интерфейса по DHCP Установить ПО для мониторинга сервера Linux Генерируем пару ключей ![](https://i.imgur.com/WJEZp93.png) ![](https://i.imgur.com/0dBmSwR.png) Передаем на SSH сервер публичный ключ и затем подключаемся по ssh не вводя пароль ![](https://i.imgur.com/wQDoqCI.png) Добавляем в VBOX сетевой интерфейс, командой ip a выводим имя нового интерфейса и настраиваем его редактируя файл /etc/network/interfaces ![](https://i.imgur.com/3o27Js8.png) Делаем рестарт(/etc/init.d/networking restart) и проверяем ![](https://i.imgur.com/P4IJwlC.png) Устанавливаем ПО для мониторинга сервера Monitorix >apt-get update apt-get install monitorix systemctl status monitorix ![](https://i.imgur.com/SOguqCx.png) Запускаем веб интерфейс https://localhost:8080/monitorix ![](https://i.imgur.com/fOSJTJC.png) ## Занятие 4. Практическая работа_1. Настройка сети в Linux (на примере Ubuntu) - [ ] Научиться настраивать сеть. Вариант 1 - через графический интерфейс. Settings -> Network -> Wired -> IPv4 Вариант 2 - через конфигурационные файлы /etc/network/interfaces (/etc/network/interfases.d/*) /etc/resolv.conf - DNS серверы или в некоторых ОС, например, Ubuntu с версии 17.10 /etc/netplan/01-network-manager-all.yaml - [ ] Изучить настройки и конфигурационные файлы. - [ ] Настроить проводную сеть. >sudo passwd root (файл конфигурации sudo - /etc/sudoers и файлы в каталоге /etc/sudoers.d) Чтобы не набирать каждый раз sudo можно набрать >sudo su Чтобы выяснить имя интерфейса набираем >ls /sys/class/net/ Видим 2 интерфейса lo и ens33. Можно отредактировать конфигурационный файл >nano 01-network-manager-all.yaml А также можно произвести настройки командой netplan set, что более безопасно. Настройка динамического получения IP адреса выполняется командой >netplan set ethernets.ens33.dhcp4=true Затем применяем новые настройки командой >netplan try или netplan apply Проверяем что IP адрес получен по DHCP ![](https://i.imgur.com/HDx3gMN.png) В результате выполнения команды netplan set ethernets.ens33.dhcp4=true создается файл 70-netplan-set.yaml Чтобы настроить статический IP адрес отредактируем его следующим образом ![](https://i.imgur.com/lu5WSPl.png) Команда netplan get выводит следующий результат: ![](https://i.imgur.com/dJOivJD.png) Применяем изменения командой netplan try и проверяем настройку статического IP адреса ![](https://i.imgur.com/ez205yi.png) Если сетевые настройки задаются через файлы /etc/network/interfaces (/etc/network/interfases.d/*) (/etc/resolv.conf) пример /etc/network/interfaces: ``` auto lo #интерфейс для loopback интерфейса iface lo inet loopback #аналог Localhost allow-hotplug ens33 #автоматически выполнять перезапуск интерфейса при его падении auto ens33 #поднимать интерфейс автоматически при старте системы #iface ens33 inet dhcp #получить адрес по DHCP iface ens33 inet static #статический адрес address 192.168.84.17 #IP адрес netmask 255.255.255.0 #маска network 192.168.84.0 #задаём адрес сети broadcast 192.168.84.255 #задаём адрес для широковещательной рассылки gateway 192.168.84.2 #шлюз dns-nameserver 8.8.8.8 #задаём адреса DNS-серверов ``` ``` а также если в /etc/netplan/*.yaml указана программа-обработчик networkd, а не NetworkManager, то после изменения этих конфигурационных файлов необходимо перезагрузить сетевую службу командой >sudo /etc/init.d/networking restart Устанавливаем пакеты, содержащие ifconfig traceroute >apt install net-tools traceroute Проверяем настройку через ifconfig ens33 ![](https://i.imgur.com/gIhQ5ip.png) Назначим еще один IP адрес интерфейсу ens33 >ip address add 192.168.84.18/24 dev ens33 ![](https://i.imgur.com/khFoj7j.png) Удалим первый IP адрес >ip address del 192.168.84.17/24 dev ens33 ![](https://i.imgur.com/rRL4mwk.png) - [ ] Выполнить практическую работу по команде ip a . https://hackmd.io/@IgorLitvin/SklxGVyXt ![](https://i.imgur.com/yuSwE4x.png) Изменяем и проверяем статус интерфейса ![](https://i.imgur.com/RZdgqU7.png) Добавляем маршрут к сети 192.168.3.0 и пингуем хост из этой сети ![](https://i.imgur.com/n1IF52C.png) - [ ] Научиться работать с командой traceroute. https://hackmd.io/@IgorLitvin/B11mb8JXK ![](https://i.imgur.com/nwtNuoA.png) ## Занятие 4. Практическая работа_2. Настройка и конфигурация Linux-систем и прав доступа на базе Debian 11. Добавляем пользователя user в группу sudo ![](https://i.imgur.com/RqJdKHk.png) для этого редактируем /etc/sudoers ![](https://i.imgur.com/emQ0N4F.png) подключаем в VBOX новый диск ![](https://i.imgur.com/o98hOGZ.png) создаем новый раздел на диске программой fdisk ![](https://i.imgur.com/v4YiXPm.png) форматируем диск командой >sudo mkfs.ext4 /dev/sdc ![](https://i.imgur.com/VBNq2Ny.png) монтируем диск командой >sudo mount /dev/sdc /home/data ![](https://i.imgur.com/qMLtIUN.png) Чтобы диск автоматически монтировался при загрузке редактируем /etc/fstab добавляя в него строку /dev/sdc /home/data/ ext4 defaults 0 0 ![](https://i.imgur.com/2E4ofWO.png) Другой способ монтирования это создание файла в каталоге /etc/systemd/systеm Ниже приведен пример файла home-30GB.mount для монтирования диска /dev/sdb в каталог /home/30GB ![](https://i.imgur.com/r5O7CUi.png) Чтобы монтирование происходило автоматически при загрузке надо выполнить коману >sudo systemctl enable home-30GB.mount ![](https://i.imgur.com/lwXwDJB.png) После перезагрузки проверяем что диски /dev/sdb и /dev/sdc автоматически примонтировались. ![](https://i.imgur.com/KZGZBHJ.png) >Создать новую группу “CYB”. Создать папку “23” в директории “Data”. Назначить на данную папку “23” группу “CYB”. Назначить права доступа таким образом на директорию “Data”, чтобы результат работы команды ls был отрицательным, пояснить вывод команды ls. ![](https://i.imgur.com/HGbQ9yJ.png) Если на каталог отсутствует право Read, то посмотреть его содержимое командой ls нельзя. Но если есть право X (eXecute), то можно перейти в этот каталог, а также, при наличии соттветствующих прав на вложенный каталог, перейти во вложенный каталог и просмотреть его содержимое. ![](https://i.imgur.com/Zq9G54O.png) >Создать нового пользователя.(sudo adduser test) Назначить пароль.(sudo passwd test) Включить нового пользователя в группу “mirea”(sudo usermod -aG mirea test) Убедиться, что в домашнем каталоге создана директория с новым пользователем.(ls /home) Залогиниться новым пользователем в Linux(su test). ![](https://i.imgur.com/g2otmAf.png) >Установить SSH-сервер (сменить стандартный порт на любой другой) продемонстрировать подключение с linux на linux. https://hackmd.io/@IgorLitvin/Hkz5b78MY ![](https://i.imgur.com/FuEb7cx.png) ![](https://i.imgur.com/eqhmq0y.png) ![](https://i.imgur.com/PtbHVE0.png) >Подключиться из Windows на виртуальную машинку Linux по SSH с помощью PuTTY https://hackmd.io/@IgorLitvin/BJm5SfIMK ![](https://i.imgur.com/42vOYla.png) ## Занятие 6. Управление сервисами. Практическая работа_3 Устанавливаем samba: >sudo apt-get update >sudo apt-get install -y samba samba-client Создаем резервную копию файла конфигурации Samba: >sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak Создаем директорию, к которой все пользователи будут иметь общий доступ: >sudo mkdir -p /samba/public Изменим режим доступа : >cd /samba sudo chmod -R 0755 public Создадим каталог к которому будет иметь доступ ограниченное число пользователей: >sudo mkdir /samba/private Создадим группу пользователей, которые будут иметь доступ к приватным данным: >sudo groupadd smbgrp Создадим пользователей с помощью команды useradd: >sudo useradd user1 Добавим созданных пользователей в группу: >sudo usermod -aG smbgrp user1 Изменим группу, которой принадлежит приватная директория: >sudo chgrp smbgrp /samba/private Зададим пароль, с помощью которого пользователь будет подключаться к каталогу: >sudo smbpasswd -a user1 Отредактируем файл конфигурации SMB: >sudo nano /etc/samba/smb.conf внеся в него следующие строки ``` [global] workgroup = WORKGROUP security = user map to guest = bad user wins support = no dns proxy = no [public] path = /samba/public guest ok = yes force user = nobody browsable = yes writable = yes [private] path = /samba/private valid users = @smbgrp guest ok = no browsable = yes writable = yes ``` Чтобы изменения вступили в силу надо перезапустить сервис: >sudo service smbd restart ![](https://i.imgur.com/MILU1Pn.png) для подключения к папке private требуется аутентификация ![](https://i.imgur.com/f6Z2rMI.png) Далее нужно настроить firewall, открыв порты, которые использует SAMBA. Разрешим только подключения из локального диапазона IP-адресов: >iptables -A INPUT -p tcp -m tcp --dport 445 –s 192.168.10.0/24 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 139 –s 192.168.10.0/24 -j ACCEPT iptables -A INPUT -p udp -m udp --dport 137 -s 192.168.10.0/24 -j ACCEPT iptables -A INPUT -p udp -m udp --dport 138 –s 192.168.10.0/24 -j ACCEPT Теперь необходимо сделать так, чтобы указанные выше правила фаервола iptables были сохранены после перезагрузки машины. Для это установим пакет iptables-persistent: >apt-get install iptables-persistent После установки откроется окно с предложением последовать запомнить текущие правила iptables для IPv4 и IPv6. Подтвердите это действие. ![](https://i.imgur.com/bLKem7l.png) Проверить актуальные правила iptables можно командой: >iptables -L В выводе команды должны увидеть ранее добавленные разрешающие политики (Accept). Запретить остальные соединения можно коммандами: >iptables --policy INPUT DROP iptables --policy OUTPUT DROP iptables --policy FORWARD DROP ## Занятие 8. Bash-scripts и автоматизация сервисов. ### Домашнее задание - Создать bash-скрипт для присвоения всем файлам и папкам в текущей директории - одинаковых прав (текущий пользователь владелец имеет права RWX, остальные r--) - Настроить скрипт - как сервис с автозапуском - Настроить скрипт - для запуска каждый день в 14.00 - Разработка скриптов для реализаций разных стратегий резервного копирования (полная, дифференциальная/инкрементальная) ![](https://i.imgur.com/2fdrEPf.png) ![](https://i.imgur.com/ylPK7M6.png) >touch /etc/systemd/system/test-script.service chmod 664 /etc/systemd/system/test-script.service nano /etc/systemd/system/test-script.service ![](https://i.imgur.com/86hW4xJ.png) Проверяем и перезапускаем: >systemctl daemon-reload systemctl start test-script.service systemctl status test-script.service Добавляем в автозагрузку: >systemctl enable test-script.service Настраиваем автозапуск: >crontab -e ![](https://i.imgur.com/FQvPUWB.png) Скрипт для полного резервного копирования ```#!/bin/bash #Daily backup script #Create some needed variable day=$(date +%F) Folder="/root/bash/" File="/home/data/Backup/$day.tar.gz" #Backup Server Configuration tar cpzf $File $Folder #Remove backup files older than 90 days find /home/data/Backup/* -mtime +90 -exec rm {} \; ```