# Катенин Владимир - OS Linux Basic. Занятие 3. Сервисы Linux
[toc]
## Практическая работа №3.1 Cron
**Что это такое Cron?**
Cron – это планировщик заданий, который работает на UnixLinux хостинге. Он позволяет автоматически выполнять определенные действия на сервере (запуск программ, скриптов и т.д.), с заданным временем или периодичностью.
**Вот некоторые основные операции с сron:**
Если вы хотите изменить crontab-файл (файл содержащий инструкции по выполнению запланированных заданий), то есть создать и настроить своё первое cron job, введите в терминале следующую команду:
`crontab -e`

Если вы хотите изменить crontab-файл другого пользователя, используйте команду crontab -u username -e. Имейте в виду, что вы можете редактировать чужие файлы только как суперпользователь, то есть вам нужно ввести sudo su перед командой.
Если вы хотите удалить текущий файл crontab текущего пользователя, введите следующую команду:
`crontab -r`
Команда ниже делает то же самое, что и -r, однако она просит подтвердить действие, прежде чем удалить crontab:
`crontab -i`
Если вы хотите отобразить содержимое файла crontab, в который вы зашли, введите в терминале следующую команду:
`crontab -l`
Ещё одна операция этой команды позволяет посмотреть есть ли у вас crontab-файлы. Просто введите `crontab -l`. Если у вас нет созданных файлов, вывод покажет следующий результат:

Если вы хотите просмотреть списки crontab-файлов других пользователей, просто введите `crontab -u username -l` как суперпользователь.

В нашем случае текст скрипта pwd.sh следующий:

Cron

Проверяем работоспособность


### Выполнение задачи
Условие:
- Написать четыре скрипта (скрипт должен быть не менее 3 строчек)
- Скрипт должен выполнятся:
- один раз в 15 минут постоянно
- один раз в сутки
- 15:00 в среду
- 20:00 в воскресенье
Первый скрипт

Второй скрипт

Третий скрипт

Четвертый скрипт

Пропишем скрипты в Cron

---
## Практическая работа №3.2 Настройка SFTP и FileZilla
### SFTP
**SFTP** (Secure File Transfer Protocol) – протокол прикладного уровня передачи файлов, работающий поверх безопасного канала. Не следует путать с (Simple File Transfer Protocol), имеющим такую же аббревиатуру. Если FTPS является просто расширением FTP, то SFTP это отдельный и никак не связанный с ним протокол, который в качестве основы использует SSH (Secure Shell – безопасная оболочка).
Проверим работу SSH

**Настроим:**
`sudo nano /etc/ssh/sshd_config`
и добавим следующие строки в конец конфигурационного файла
- Match group sftp - все user не смогут выполнять команды с помощью ssh
- ChrootDirectory /home - это директория в которой пользователь будет работать
- X11Forwarding no - чтобы не давать доступ к рабочему окружению
- AllowTCPForwarding no - чтобы пользователь не смог использовать как proxy-сервер
- ForceCommand internal-sftp - использовать только sftp, встроенный в ssh

**Сохраняем и выходим**
*Перезапускаем сервис* `sudo service ssh restart`

Создадим пользователя sftpuser с паролем 12345

*Проверяем наличие группы sftp*
`grep sftp /etc/group`
*Добавляем группу sftp, т.к. её нет*
`sudo addgroup sftp`

*Добавляем пользователя в группу sftp*
`sudo usermod -aG sftp username`
И проверяем наличие пользователя в группе sftp

Теперь мы можем подключиться к нему c помощью winscp
Запускаем и вводим параметры


**Убеждаемся, что он работает и выходим**
Проверяем ip-адрес linux куда нам надо подключиться

Далее переходим в linux с которого мы будет подключаться, запускаем filezilla

Вносим параметры для входа:

Нажимаем кнопку быстрое соединение и получаем список файлов от OS, к которой подключились
**Теперь как это сделать из командной строки - заходим в другой linux и вводим команду**
`ssh sftpuser@192.168.56.102`
Получаем результат, что пользователю разрешено подключаться только по sftp

*После этого мы можем запустить удаленное подключение по sftp:*
`sftp sftpuser@192.168.56.102`
Вводим пароль и получаем следующее

*Тут мы можем вводить следующие команды, например:*
`ls`

*Далее: можно положить файлик*
`put /etc/passwd`

*Далее: посмотреть права*
`ls -la`

*И что-нибудь скачать, например:*
`get .bashrc /tmp/.bashrc`

*Далее: можно проверить видимость данных через wireshark*
*На linux запускаем wireshark и на windows подключаемся через filezilla и смотрим вывод wireshark*

Сначала идет перехват пакетов протокола TCP (22 порт), которые идут для установления соединения. SSH использует TCP в качестве транспортного протокола. Затем трафик начинает идти через SFTP при установлении соединении. При этом весь трафик шифруется, благодаря SSH.
---
## Практическая работа №3.3 Сервисы в Linux
Сервисы или службы — это программы, которые работают в системе Linux в фоновом режиме. Обычно они запускаются при загрузке системы. Большинство сервисов необходимы для полноценной работы системы, то есть они являются своего рода кирпичиками, из которых строится работающая система.
При запуске системы загружается целый ряд сервисов, которые включены для автозагрузки. Сервисы работают пока система запущена, и выгружаются при выключении системы.
Чтобы посмотреть какие сервисы у нас работают необходимо ввести команду
`service --status-all`

`systemd` — подсистема инициализации и управления службами в Linux, фактически вытеснившая в 2010-е годы традиционную подсистему init.
### Apache
`sudo service apache2 status`

Запустим

Видим, что он добавился как сервис, который работает

Зайдем на страничку нашего Apache2
*Открываем браузер и вводим в строке ip-адрес 127.0.0.1*

И мы видим страничку сервиса Apache2, если её заменить web-приложением, то мы уже будем видеть страничку приложения.
Таким образом проверяем, что web-сервер работает.
Далее давайте отключим web-сервер и посмотрим какой вывод нам даст браузер, отключается следующей командой:
`sudo service apache2 stop`

*И соответственно видим, что сервис выключился*
Теперь давайте рассмотрим аналоги: systemctl
**Введём**
`sudo systemctl status`

Также можно управлять сервисами:
`sudo systemctl start apache2`
`sudo systemctl stop apache2`
Все команды аналогичны
Если мы выполняем через команды управления сервисами, то это никак не влияет на автозагрузку сервиса
Но если есть необходимость добавить сервис в автозагрузку, то нужно ввести:
`sudo systemctl enable apache2`
Тем самым мы добавим сервис в автозагрузку

После этой команды сервис будет запущен при старте, если нам надо исключить сервис из автозагрузке, сделаем следующее:
`sudo systemctl disable apache2`

### Telnet
**Актуален для pentesta, но не для администрирования**
*Если данный сервис не установлен, то делаем следующее*
`sudo apt-get install telnet`

**У Telnet есть несколько режимов работы:**
Режим «Тестирование»
Другой не менее популярный вариант – тестирование веб-ресурсов. Чем удобен такой режим? Клиентская машина обрабатывает только текст, без загрузки графики. Например, введём в терминале:
`telnet opennet.ru 80`
Утилита отправит запрос сайту [opennet.ru](http://opennet.ru/) на порт под номером 80. Далее вводим ключ: `GET /` для показа кода страницы.
Утилита не работает с русскими шрифтами, поэтому вывод с такими знаками.

Также можно узнать есть ли на host ssh сервер с помощью telnet:
`telnet -d [ip-адрес] 22`
**Для установки сервера Telnet**
Введите команду на удалённом сервере
`apt-get install telnetd`

После чего на своей машинке вводим команду и заходим на удаленный сервер
`telnet -d [ip-адрес] 23`

Предварительно мы раскомментировали строчку с telnet в `/etc/inetd.conf` на сервере

### SSH
SSH (англ. Secure SHell — «безопасная оболочка») – протокол передачи данных, позволяющий производить безопасное и защищенное управление операционной системой и данными. Это сетевой протокол прикладного уровня, который дает возможность шифрования передаваемых данных и паролей. К тому же позволяет передавать любой другой протокол.
Для установки сервера нужно:
`sudo apt-get install openssh-server`
Конфигурацию меняем в `sudo nano /etc/ssh/ssh_config`

Рассмотрим несколько параметров:
- 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`

### FTP
FTP (File Transfer Protocol) — протокол передачи файлов. FTP придумали в 1971 году, еще до того, как появились протоколы TCP/IP. Сначала FTP работал поверх протокола NCP. Версия на основе TCP/IP появилась в 1980 году. А в 1985 году была принята спецификация FTP, которой пользуются до сих пор, позже в неё были добавлены полезные расширения, такие как, пассивный режим и поддержка IPv6.
**Принцип работы протокола FTP**
Протокол FTP работает в режиме клиент сервер. На сервере есть файловая система, это структура каталогов в которой находятся файлы. Клиент по протоколу FTP подключается к серверу и может работать с файловой системой, просматривать каталоги, переходить между ними, загружать и записывать файлы сервера, перемещать их между разными каталогами и выполнять другие операции, которые можно делать с файловой системой.
Установка:
`sudo apt install vsftpd`

apt - если, чтото делается вручную
get - если используются скрипты
Поэтому лучше использовать
`apt-get`
Заходим в конфигурационный файл
`sudo nano /etc/vsftpd.conf`

*Давайте выполним дополнительную конфигурацию по дополнению сервиса в автозагрузку:*
`sudo systemctl enable vsftpd`

*Посмотрим статус сервера*
`sudo service vsftpd status`

Чтобы увидеть всю файловую систему на сервисе необходимо в файле конфигурации снять комментарий и изменить YES на NO
`chroot_local_user=NO`

**Есть программа, которая здорово облегчет жизнь именно с работой FTP**
Это *filezilla*


**Как можно продемонстрировать, что сервис ftp не шифруется**
Запускаем Wireshark
И запускаем FileZilla на Windows подключаемся к нашей kali и видим следующее:

Видим пароль, который мы вводили.
Таким образом можно перехватить трафик FTP.
### 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`

Переходим в конфигурационный файл и настроим его
`sudo nano /etc/samba/smb.conf`
- [shared] — имя общей папки, которое увидят пользователи, подключившись к серверу.
- comment — комментарий для удобства.
- path — путь на сервере, где будут храниться данные.
- public — для общего доступа. Установите в yes, если хотите, чтобы все могли работать с ресурсом.
- writable — разрешает запись на сетевой ресурс.
- read only — только для чтения. Установите no, если у пользователей должна быть возможность создавать папки и файлы.
- guest ok — разрешает доступ к папке гостевой учетной записи.
- create mask, directory mask, force create mode, force directory mode — при создании новой папки или файла назначаются полные права.
1. Vladimir - имя шары
2. browseable - чтобы была видна
3. path - директория
4. quest ok - важная опция, можно использовать любого пользователя
5. read only - можно добавлять и удалять анонимным пользователям

Есть команда, которая позволяет убедиться о конфигурации samba и что она работает нормально
`sudo testparm`

Далее мы добавляем сервис в автозагрузку и запускаем его
`sudo systemctl enable smbd`
`sudo systemctl start smbd`

Зайдем в папку через Windows 10 и создадим текстовый файл test.txt

Теперь идём в linux в директорию tmp

---