# Макаров Дмитрий Владиславович - Linux Basic. Практическая работа №3. Сервисы Linux [toc] ## Практическая работа №3.1 Cron ### 1. Описание утилиты Cron – это планировщик заданий, который работает на UnixLinux хостинге. Он позволяет автоматически выполнять определенные действия на сервере (запуск программ, скриптов и т.д.), с заданным временем или периодичностью. **Вот некоторые основные операции с сron:** Если вы хотите изменить crontab-файл (файл содержащий инструкции по выполнению запланированных заданий), то есть создать и настроить своё первое cron job, введите в терминале следующую команду: `crontab -e` ![](https://i.imgur.com/SZJyXVB.png) ![](https://i.imgur.com/7RXfmSC.png) Если вы хотите отобразить содержимое файла crontab, в который вы зашли, введите в терминале следующую команду: `crontab -l` ![](https://i.imgur.com/BpeQXlw.png) Ещё одна операция этой команды позволяет посмотреть есть ли у вас crontab-файлы. Если вы хотите просмотреть списки crontab-файлов других пользователей, просто введите crontab -u username -l как суперпользователь. Просто введите `crontab -u username -l`: `sudo crontab -u root -l` ![](https://i.imgur.com/pwHz8pm.png) ### 2. Задача на Cron Текст скрипта `pwd.sh` следующий: ![](https://i.imgur.com/pQppi73.png) В Cron выглядит следующим образом ![](https://i.imgur.com/sskNelg.png) где `*/2 * * * * /bin/bash /home/skripts/pwd.sh` означает: - /2 * * * * - Что скрипт будет выполняться каждые две минуты постоянно - /bin/bash - Указывает cron что это скрипт - /home/skripts/pwd.sh - указывает полный путь до скрипта **Результат:** ![](https://i.imgur.com/BxEuU67.png) ![](https://i.imgur.com/RxtSw9a.png) ### 3. Собственные скрипты 1. Раз в 15 минут постоянно ![](https://i.imgur.com/SvgDSP0.png) 2. Раз в сутки постоянно ![](https://i.imgur.com/BAfc95S.png) 3. Каждую среду в 15:00 ![](https://i.imgur.com/sscwEK3.png) 4. Каждое воскресенье в 20:00 ![](https://i.imgur.com/yn8hzHS.png) Прописываем время выполнения скриптов в `crontab -e` ![](https://i.imgur.com/nIhmOLz.png) ## Практическая работа №3.2 Настройка SFTP и FileZilla ### 1. SFTP **SFTP** (Secure File Transfer Protocol) – протокол прикладного уровня передачи файлов, работающий поверх безопасного канала. Не следует путать с (Simple File Transfer Protocol), имеющим такую же аббревиатуру. Если FTPS является просто расширением FTP, то SFTP это отдельный и никак не связанный с ним протокол, который в качестве основы использует SSH (Secure Shell – безопасная оболочка). **Проверим работу ssh** ![](https://i.imgur.com/PfFROvp.png) **Настроим:** `sudo nano /etc/ssh/sshd_config` и добавим следующие строки в конец конфигурационного файла - Match group sftp - все user не смогут выполнять команды с помощью ssh - ChrootDirectory /home - это директория в которой пользователь будет работать - X11Forwarding no - чтобы не давать доступ к рабочему окружению - AllowTCPForwarding no - чтобы пользователь не смог использовать как proxy-сервер - ForceCommand internal-sftp - ForceCommand internal-sftp — использовать только sftp, встроенный в ssh ![](https://i.imgur.com/qpR5RFP.png) **сохраняем и выходим** ![](https://i.imgur.com/moImAfr.png) *проверяем наличие группы sftp* `grep sftp /etc/group` ![](https://i.imgur.com/yX29lEP.png) *добавляем её* `sudo addgroup sftp` ![](https://i.imgur.com/CjkuGEE.png) *далее делаем следующие: добовляем пользователя в группу sf*tp `sudo usermod -aG sftp username` ![](https://i.imgur.com/YVS9M2b.png) проверяем наличие пользователя в группе sftp ![](https://i.imgur.com/1UPJelO.png) и теперь мы можем подключиться к нему c помощью winscp запускаем и вводим параметры ![](https://i.imgur.com/GHRGEnx.png) ![](https://i.imgur.com/hEs6wrf.png) **убеждаемся, что он работает и выходим** Проверяем ip-адрес linux куда нам надо подключиться ![](https://i.imgur.com/TJNO5sl.png) Далее переходим в linux с которого мы будет подключаться, запускаем filezilla ![](https://i.imgur.com/qEV1esY.png) **вносим параметры для входа:** ![](https://i.imgur.com/pJgM8Ps.png) *нажимаем кнопку быстрое соединение и получаем список файлов от OS к которой подключились.* ### 2. Вход из комндной строки `ssh kali12345@192.168.71.138` получаем результат, что пользователю разрешено подключаться только по sftp ![](https://i.imgur.com/bbR4pcc.png) *после этого мы можем запустить удаленное подключение по sftp:* `sftp kali12345@192.168.71.138` вводим пароль и получаем следующий вид ![](https://i.imgur.com/kC4qNmv.png) *тут мы можем вводить следующие команды, например:* `ls` ![](https://i.imgur.com/XiyVMCs.png) *далее: можно положить файлик* `put /etc/passwd` ![](https://i.imgur.com/RcDbNDY.png) *далее посмотреть права* `ls -la` ![](https://i.imgur.com/NJVrMPV.png) *и что-нибудь скачать, например:* `get .bashrc /tmp/.bashrc` ![](https://i.imgur.com/9VVq3sx.png) *далее можно проверить видимость данных через wireshark* *на linux запускаем wireshark и на windows подключаемся через filezilla и смотрим вывод wireshark* ![](https://i.imgur.com/tLYUezj.png) ![](https://i.imgur.com/gA4CaOf.png) В Wireshark перехватываем пакеты TCP, которые идут по 22 порту к серверу для установления соедининия. Когда соединение установлено, весь трафик начинает идти через SFTP пакеты. При это учётные данные невозможно увидеть, из-за прокотола шифрования SSH. ## Практическая работа №3.3 Сервисы в Linux ### 1.Сервисы или службы - это программы, которые работают в системе Linux в фоновом режиме. Обычно они запускаются при загрузке системы. Большинство сервисов необходимы для полноценной работы системы, то есть они являются своего рода кирпичиками, из которых строится работающая система. При запуске системы загружается целый ряд сервисов, которые включены для автозагрузки. Сервисы работают пока система запущена, и выгружаются при выключении системы. **Чтобы посмотреть какие сервисы у нас работают необходимо ввести команду** `service --status-all` ![](https://i.imgur.com/Ak4IqYK.png) `systemd` — подсистема инициализации и управления службами в Linux, фактически вытеснившая в 2010-е годы традиционную подсистему init. **тут мы видим что где стоят +, то они включены и запускаются при загрузке системы** ### 2. Команды по управлению сервисами: `sudo service apache2 status` ![](https://i.imgur.com/JHgUh1y.png) *то запустим его с помощью* `sudo service apache2 start` *и введём* `sudo service apache2 status` ![](https://i.imgur.com/TZrpbAh.png) *увидим, что он запустился* *также введём команду* `service --status-all` ![](https://i.imgur.com/4toaUmp.png) *увидим, что он добавился как сервис который работает* #### 2.1 Затем давайте попробуем зайти на страничку нашего Apache2 *для этого делаем следующее:* *открываем браузер и вводим в строке ip-адрес 127.0.0.1* ![](https://i.imgur.com/VzkYIq6.png) и мы видим страничку сервиса Apache2, если её заменить web-приложением, то мы уже будем видеть страничку приложения. Таким образом проверяем, что web-сервер работает. Далее давайте отключим web-сервер и посмотрим какой вывод нам даст браузер, отключается следущей командой: `sudo service apache2 stop` ![](https://i.imgur.com/3Z1OB2J.png) ![](https://i.imgur.com/mC0ZCJo.png) *и соответственно видим, что сервис выключился* теперь давайте рассмотрим аналоги: systemctl **введём** `sudo sysyemctl status` ![](https://i.imgur.com/ByruWMg.png) **также можно управлять сервисами:** `sudo systemctl start apache2` `sudo systemctl stop apache2` все команды аналогичны Если мы выполняем через команды управления сервисами, то это никак не влияет на автозагрузку сервиса Но если есть необходимость добавить сервис в автозагрузку, то нужно ввести: `sudo systemctl enable apache2` *тем самым мы добавим сервис в автозагрузку* ![](https://i.imgur.com/FKUSD4h.png) после этой команды сервис будет запущен при старте, если нам надо исключить сервис из автозагрузке, сделаем следующее: `sudo systemctl disable apache2` ![](https://i.imgur.com/mYbsMWg.png) #### 2.2 сервис Telnet **он актуален для pentesta, но не актуален для администрирования** *если данный сервис не установлен, то делаем слудующее* `sudo apt-get install telnet` ![](https://i.imgur.com/J8gkZfK.png) **у Telnet есть несколько режимов работы:** - Режим «Тестирование» Клиентская машина обрабатывает только текст, без загрузки графики. Например, введём в терминале: **telnet [opennet.ru](http://opennet.ru/) 80** Утилита отправит запрос сайту [opennet.ru](http://opennet.ru/) на порт под номером 80. Далее вводим ключ: GET / для показа кода страницы. ![](https://i.imgur.com/XeGl6zX.png) **Для установки сервера Telnet** Введите команду на удалённом сервере `apt-get install telnet-server` ![](https://i.imgur.com/VZhh5M3.png) *после чего на свой машинке вводим команду* ``` telnet -d ip-адрес 23 ``` ![](https://i.imgur.com/gDZyqny.png) *и мы заходим на удалённый сервер* #### 2.3 SSH SSH (англ. Secure SHell — «безопасная оболочка») – протокол передачи данных, позволяющий производить безопасное и защищенное управление операционной системой и данными. Это сетевой протокол прикладного уровня, который дает возможность шифрования передаваемых данных и паролей. К тому же позволяет передавать любой другой протокол. **для установки сервера нужно:** `sudo apt-get install openssh-server` **конфигурацию меняем в sudo nano /etc/ssh/ssh_config** ![](https://i.imgur.com/GGDXzs2.png) **Давайте рассмотрим несколько параметров:** - sudo sshd -t - sudo service ssh restart - sudo service ssh stop - sudo service ssh start При внесении изменений в конфигурацию SSH, целесообразно перезапустить сервис. Настоятельно рекомендую перед запуском проверять конфигурацию (sshd_config). Это можно сделать используя флаг test mode. Этот дополнительный шаг позволяет убедиться, что синтаксис и опции корректны. `sudo sshd -t` - **Команда не должна возвращать текст или ошибки.** Перезапуск сервиса ssh `sudo service ssh restart` Остановка сервиса ssh `sudo service ssh stop` Запуск сервиса ssh `sudo service ssh start` ![](https://i.imgur.com/JFwAyQh.png) #### 2.4 FTP FTP (File Transfer Protocol) — протокол передачи файлов. **Принцип работы протокола FTP** Протокол FTP работает в режиме клиент сервер. На сервере есть файловая система, это структура каталогов в которой находятся файлы. Клиент по протоколу FTP подключается к серверу и может работать с файловой системой, просматривать каталоги, переходить между ними, загружать и записывать файлы сервера, перемещать их между разными каталогами и выполнять другие операции, которые можно делать с файловой системой. Установка: `sudo apt install vsftpd` ![](https://i.imgur.com/7cpT35G.png) - apt - если, чтото делается вручную - get - если используются скрипты *поэтомы лучше использовать* `apt-get` **заходим в конфигурационный файл** `sudo nano /etc/vsftpd.conf` ![](https://i.imgur.com/qxH1vOf.png) *Давайте выполним дополнительную конфигурацию по дополнению сервиса в атозагрузку:* `sudo systemctl enable vsftpd` ![](https://i.imgur.com/ZfC95jk.png) *посмотрим статус сервера* `sudo service vsftpd status` ![](https://i.imgur.com/rwOuW4g.png) **есть программа, которая здорово облегчет жизнь именно с работой FTP** это *file zilla* ![](https://i.imgur.com/ISlTeVz.png) ![](https://i.imgur.com/3WYFcib.png) **Как можно продемонстрировать, что сервис ftp не шифруется** *запускаем Wireshark* *и запускаем FileZilla на Windows подключаемся к нашей kali и видим следующее:* ![](https://i.imgur.com/yAbo0ja.png) **Видим пароль, который мы вводили.** *Таким образом можно перехватить трафик FTP.* #### 2.5 Samba Samba — это программа, которая позволяет компьютерам UNIX/Linux имитировать машины Windows. При помощи Samba компьютеры могут обмениваться файлами или управлять заданиями на печать как файл-серверы или серверы печати под Windows. Подобно операционной системе UNIX/Linux, на которой она работает, Samba представляет собой разработанное множеством программистов ПО с открытым исходным кодом. **C помощью Samba можно реализовать следующие наиболее распространенные:** - Давать доступ к дискам Linux Windows-машинам. - Получать доступ к дискам Windows для машин под Linux. - Давать доступ к принтерам Linux для Windows-машин. - Получать доступ к принтерам Windows из Linux-систем. *для начала необходимо установить sambu* `sudo apt-get install samba` ![](https://i.imgur.com/FY0Czm0.png) **переходим в конфигурационный файл** `sudo nano /etc/samba/smb.conf` ![](https://i.imgur.com/d1fkkZZ.png) *Давайте перейдём к настройке samba для того чтобы расшарить папку* ![](https://i.imgur.com/uYkqsw2.png) - [shared] — имя общей папки, которое увидят пользователи, подключившись к серверу. - comment — комментарий для удобства. - path — путь на сервере, где будут храниться данные. - public — для общего доступа. Установите в yes, если хотите, чтобы все могли работать с ресурсом. - writable — разрешает запись на сетевой ресурс. - read only — только для чтения. Установите no, если у пользователей должна быть возможность создавать папки и файлы. - guest ok — разрешает доступ к папке гостевой учетной записи. - create mask, directory mask, force create mode, force directory mode — при создании новой папки или файла назначаются полные права. 1. john - имя шары 2. browseablr - чтобы была видна 3. path - директория 4. quest ok - важная опция, можно использовать любого пользователя 5. read only - можно добавлять и удалять анонимным пользователям **есть команда** `sudo testparm` *Которая позволяет убедиться о конфигурации samba и что она работает нормально* ![](https://i.imgur.com/2OW6nh4.png) **Далее мы добавляем сервис в автозагрузку и запускаем его** ``` sudo systemctl enable abbd sudo systemctl start smbd ``` ![](https://i.imgur.com/7H3YjEZ.png) затем для доступа через Windows надо сделать следующие ![](https://i.imgur.com/32WQ5L6.png) *Затем создаём текстовый файл и 222.txt редактируем ![](https://i.imgur.com/yRxUQOf.png) идём в linux и затем уже в директорию tmp* ![](https://i.imgur.com/5aOqhwm.png)