---
# System prepended metadata

title: Linux. Практическая работа №3

---

# Linux. Практическая работа №3

## Практическая работа №3.1

**Цель работы:**

- Изучить базовые настройки Cron
- Научиться планировать задачи в Cron
- Понять bash-скрипты на начальном уровне

**Основные операции с cron:**

`crontab -l` - посмотреть содержимое файла crontab или (если файла не существует)проверить, есть ли вообще crontab-файлы.
`crontab -e` - изменить crontab-файл.
`crontab -r` - удалить текущий файл crontab текущего пользователя
`crontab -i` - тоже удаляет, но просит подтверждения
`sudo crontab -u username -l` - посмотреть crontab-файлы указанного пользователя

**Сервисные команды**

`service cron status` - текущий статус утилиты
`service cron start`
`service cron stop`
`service cron restart` тут и так все понятно.

Файлов на сервере нет. Ничего, скоро создадим.

![](https://i.imgur.com/MdLNwKb.jpg)

Напишем тестовый крон-файл.

![](https://i.imgur.com/qrVj6mk.jpg)

Теперь мы посмотрим список файлов из-под рута и после, удалим этот файл.
Также проверим статус демона cron

![](https://i.imgur.com/3PKtkon.jpg)

![](https://i.imgur.com/T5q9jBD.jpg)

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

Напишем сначала скрипты, а после оформим их в кронтаб.

Скрины скриптов:

![](https://i.imgur.com/DY0TecW.jpg)


Теперь, согласно заданию запишем задачи в crontab:

![](https://i.imgur.com/vAE7pUA.jpg)

Осталось только дождаться логов. Думаю, надо переводить системное время, чтобы заставить выполниться все задачи.

Итак, файлы логов:
![](https://i.imgur.com/epvV5Us.jpg)

![](https://i.imgur.com/DKuo5yQ.jpg)


## Практическая работа №3.2

**Цель работы:** Научиться настраивать SFTP (Secure File Transfer Protocol) и работать с FileZilla.

Настроим SFTP-клиент:

в файле конфигурации `/etc/ssh/sshd_config` добавим/изменим следующие строки

```
Match group sftp
ChrootDirectory /home
X11Forwarding no
AllowTCPForwarding no
ForceCommand internal-sftp-ForceCommand internal-sftp
```

После чего перезапускаем сервис: `sudo service ssh restart`

Далее мы проверяем есть ли у нас пользователь sftpuser, есть ли группа sftp и состоит ли пользователь sftpuser в группе sftp. При необходимости создаем недостающие элементы.

![](https://i.imgur.com/TfEmZvh.jpg)

Теперь мы можем подключиться к нему по Winscp

![](https://i.imgur.com/IfylomH.jpg)

проверяем и отключаемся

Пробуем соединиться через Filezilla. Успешно. Получили доступ к файлам сервера.

![](https://i.imgur.com/O3kvxts.jpg)


**Установка соединения из командной строки**

Устанавливаем соединение с сервера 
`sftp sftpuser@192.168.1.5`
И пробуем к примеру загрузить файл, посмотреть права на на файлы, скачать файл себе.

![](https://i.imgur.com/q9I4Neb.jpg)

**Проверка видимости данных через wireshark**

Создадим соединение sftp между сервером Win16 и Кали. На Кали запустим Wireshark, а соединение будем инициализировать с Win16.

![](https://i.imgur.com/JAkaoYw.jpg)

Как видно из скрина, соединение установлено у Кали на порту 22, у сервера - на порту 1641. Происходит соединение  по протоколу SSH второй версии, который является протоколом ассиметричного шифрования. На нашем фрагменте видно, что подтверждения (ACK) отправляются по TCP, но при этом соединение устанавливается по SSHv2.  Также видим, что в самом протоколе шифрования инициализирован обмен ключами  и даже видно какими - на основе функции Диффи-Хелмана на эллиптических кривых.

---

## Практическая работа №3.3

**Цель работы:**

- Научиться работать с базовыми сервисами Linux (Apache, Telnet, FTP, SMB)

### 1.Сервисы или службы

`service --status-all` - посмотреть, какие сервисы запущены.
[+] - запускается при загрузке ОС.

![](https://i.imgur.com/xCxYVzL.jpg)


`sudo service apache2 status` - (1 на скрине) проверить статус сервиса (apache2)

В нашем случае - не запущен, что можно понять также и из предыдущего скрина.

`sudo service apache2 start` - запускаем сервис (2)

Повторно смотрим статус (3)

![](https://i.imgur.com/yD0zbOr.jpg)

Еще раз посмотрим запущенные сервисы. Видим, что Апач добавился как сервис, который работает

![](https://i.imgur.com/9mFC1jG.jpg)

### 2.1 Затем давайте попробуем зайти на страничку нашего Apache2

Она находится по адресу localhost или 127.0.0.1

![](https://i.imgur.com/XFaYW0G.jpg)

Если на этом адресе будет крутиться веб-приложение, то мы увидим страницу приложения.

Отключим сервис и посмотрим на что будет в браузере

`sudo service apache2 stop` - остановить сервис

![](https://i.imgur.com/q2Awtr2.jpg)

Как видим, при выключенном сервисе, страница не доступна.

Рассмотрим аналоги: **systemctl**

`sudo systemctl status` - посмотреть статус
На мой взгляд, древовидная структура нагляднее.

![](https://i.imgur.com/fxwePt7.jpg)

**управление сервисами через systemctl**

`sudo systemctl start apache2` - запустить сервис
`sudo systemctl stop apache2` - остановить сервис
`sudo systemctl enable apache2` - добавить в автозагрузку
`sudo systemctl disable apache2` - убрать из автозагрузки

![](https://i.imgur.com/uaFiJMg.jpg)

### 2.2 сервис Telnet

Небезопасен, актуален только для пентеста.

**Режим Тестирование**
В этом режиме устанавливается соединение ведется работа в текстовом режиме.

Установим соединение `telnet opennet.ru 80` и после, введем ключ для показа кода страницы `GET /` 

> ВАЖНО! Набирать GET / нужно сразу, т.к. предложение ввода не поступает. Нет указателя курсора.

![](https://i.imgur.com/CaFs56Y.jpg)

`telnet -d 192.168.1.10 22` - проверить, доступен ли по адресу ssh

![](https://i.imgur.com/6GtV33u.jpg)

**Установка сервера ssh**

`apt-get install telnetd` - инсталляция (при необходимости)
`telnet -d 192.168.1.10 23` - подключение. Далее  вводим логин-пароль.

![](https://i.imgur.com/xfsgaLK.jpg)

> ВАЖНО! Протокол не использует шифрования, поэтому крайне не рекомендуется использовать его... для любых целей.

### 2.3 Протокол SSH

`sudo apt-get install openssh-server` - установка
Файл конфигурации находится в `/etc/ssh/sshd_config`


Ссылки:

[Какие порты чаще всего используют атакующие](https://scan.netlab.360.com/#/dashboard)

[Подробное описание параметров конфигурационного файла](http://tdkare.ru/sysadmin/index.php/Sshd_config) 

`sudo sshd -t` - Проверка синтаксиса. Команда не должна возвращать ошибки.

Команды рестарта, запуска и остановки сервиса:

`sudo service ssh restart`
`sudo service ssh stop`
`sudo service ssh start`

### 2.4 Протокол FTP

`sudo apt install vsftpd` - установка
`sudo nano /etc/vsftpd.conf` - расположение конфигурационного файла

![](https://i.imgur.com/S80ioe2.jpg)

Типовые настройки:
`listen=NO` старт сервер в независимом от inetd/xinetd режиме "standalone mode". Default: NO

`listen_ipv6` Тоже самое что listen, за исключением того что vsftpd слушает IPv6 протокол включительно. Этот параметр и listen взаимно исключаемые.
Default: NO

`anonymous_enable` Разрешает или запрещает вход анонимных пользователей. Default: YES

`local_enable` Разрешить анонимный вход под локальными логинами или нет? Если включено, то для авторизации могут использоваться обычные нормальные учётные записи пользователей из «/etc/passwd»
По-умолчанию: NO

`dirmessage_enable` Если включено, то пользователям FTP-сервера можно показывать сообщения, когда они переходят в каталог. По-умолчанию каталог сканируется на наличие файла «.message», но вы можете указать другой файл, изменив расположение в значении параметра «message_file».
По-умолчанию: NO (но демонстрационный файл настроек содержит YES)

`use_localtime` Если параметр установлен в «YES», то vsftpd будет отображать время в вашей локальной временной зоне в списке содержимого в каталоге. По-умолчанию отображается GMT.По-умолчанию: NO

`xferlog_enable` YES - лог-файл будет содержать детальную информацию о загрузках на vsftpd и закачках с vsftpd. По-умолчанию, этот файл находится в «/var/log/vsftpd.log», но путь к файлу может быть изменён установкой значения параметра «vsftpd_log_file».
По-умолчанию: NO

`connect_from_port_20` Указывает исходящим с сервера соединениям использовать 20 порт (ftp-data). По соображением безопасности, некоторые клиенты могут настаивать на таком случае (чтобы параметр был установлен в YES). Наоборот, отключение этого параметра позволяет vsftpd запускаться с меньшими привилегиями.
По-умолчанию: NO (но демонстрационный файл настроек содержит YES)

`secure_chroot_dir` Параметр должен содержать имя пустого каталога. Так же этот каталог не должен быть доступен для записи ftp-пользователем. Каталог используется безопасной клеткой chroot() во время, когда vsftpd не требует доступ к файловой системе.
По-умолчанию: /usr/share/empty

`rsa_cert_file` Cодержит путь в файловой системе до сертификата RSA для использования в шифрованных SSL-соединениях.
По-умолчанию: /usr/share/ssl/certs/vsftpd.pem

Установим соединение с [https://ftp.dlink.ru/pub/](https://ftp.dlink.ru/pub/)

![](https://i.imgur.com/sminsqL.jpg)


Теперь выполним дополнительную конфигурацию по добавлению сервиса в автозагрузку.

`sudo systemctl enable vsftpfd` - добавить в автозагрузку
`sudo service vsftpd status` - просмотр состояния

![](https://i.imgur.com/DLcX8pa.jpg)

Теперь открываем браузер в Kali и переходим по адресу ftp://192.168.1.5 

Что-бы увидеть всю файловую систему на сервисе необходимо в файле конфигурации установить

`chroot_local_user=NO`

Однако, браузер уже не поддерживает FTP даже если принудительно его разрешить через настройки браузера.
Воспользуемся WinSCP

![](https://i.imgur.com/0R4Ptvl.jpg)



**Как можно продемонстрировать, что сервис ftp не шифруется**

Запускаем Wireshark и запускаем FileZilla на Windows подключаемся к нашей kali и видим, как раз что был запрошен пароль в открытом виде с Win7.
Таким образом можно перехватить трафик FTP.


### 2.5 Samba

Samba — это программа, которая позволяет компьютерам UNIX/Linux имитировать машины Windows. Что позволяет организовывать совместные смешанные сети.

`sudo apt-get install samba` - установка
`sudo nano /etc/samba/smb.conf` - файл конфигурации.
`sudo testparm` - проверка правильности конфигурации.

[Всё об этом конфигурационном файле тут](https://smb-conf.ru/aio-write-behind-s.html)

![](https://i.imgur.com/vbf81fe.jpg)

Настроим общую сетевую папку на Кали и попробуем открыть ее в Win7

В файле настроек запишем следующие значения.

![](https://i.imgur.com/PzAEZ67.jpg)


 
 где \[sharedir\] - имя сетевой папки
     comment - комментарий к ней
     browseable - видимость папки
     path - путь на сервере
     guest ok - разрешен доступ гостевой учетной записи
     read only - только для чтения


Обязательно проверим синтаксис конфигурации `sudo testparm`.

Добавляем сервис в автозагрузку и запускаем его

```
sudo systemctl enable smbd
sudo systemctl start smbd
```
![](https://i.imgur.com/i5721KC.jpg)

После, в win7 открываем нашу сетевую папку

![](https://i.imgur.com/NOQrxG4.jpg)

Здесь же создаем и наполняем текстовый файл, и идем смотреть на него в Кали

![](https://i.imgur.com/DjRa0i7.jpg)

Сетевая папка работает. Задача выполнена.


