###### tags: `Linux basic`
# Linux_Basic-Омаров_Джамалутин-Практика-3
*Выполнил Омаров Джамалутин*
## Практическая работа №3.1 Cron
### Часть 1. Основные операции
1.1 Изменить crontab-файл, содержащий инструкции к выполнению запланированных действий.
crontab -e;

Если вы хотите изменить crontab-файл другого пользователя, используйте команду crontab -u username -e с правами администратора.
1.2 Удаление.
crontab -r, crontab -i;
1.3 Есть ли crontab файлы;

### Часть 2. Разница между сron, сrontab и сron Job. Особенности cron
- Daemon (Демон) ‘crond’ Произносится «demon» или «day-mon». Это фоновые системные процессы Linux.
- Table (Таблица) ‘crontab’ Вы записываете строки в эту таблицу при вводе команды crontab. Каждая звездочка «*» представляет отрезок времени и соответствующий столбец в каждой строке.
- Job (Задача) Cron Job Конкретная задача, которая должна быть выполнена, описана в строке в сочетании с назначенным ей идентификатором времени
*Утилита обладает рядом особенностей, которые необходимо учитывать при работе с ней и составлении описаний регулярных действий:*
- Минимальное время составляет одну минуту.
- Файл crontab должен всегда заканчиваться пустой строкой
- Условия времени запуска «день недели» и «день месяца» обрабатываются через логическую операцию «ИЛИ», все остальные условия — через логическое «И».
- Выводы запускаемых команд выводятся в виде сообщений пользователю, но если в файле crontab была определена директива MAILTO – сообщение будет отправлено по указанному в этой директиве e-mail.
2.1 Узнать запущен ли cron;

2.2 Запуск systemctl start cron. Остановка systemctl stop cron.
### Часть 3. Синтаксис Crontab
3.1 crontab [options] * * * * * OR * * * * *
* 1 звездочка - минуты
* 2 звездочка - часы
* 3 звездочка - дни
* 4 звездочка - месяцы
* 5 звездочка - названия дней
3.2 Пример: 0 0 * * 0 -> Выполнять команду в 0:00 каждое воскресенье
3.3 Пример скрипта:
#!/bin/bash - указывает, что это скрипт
This is a comment - любой комментарий
cat /dev/null > /var/log/cron.log - удаление текста в cron.log
cat /dev/null > /var/log/cron.txt - удаление текста в cron.txt
pwd && whoami >> /var/log/cron.log - последовательное выполнение pwd и whoami с последующей записью в cron.log
w >> /var/log/cron.log - выполнение команды w с последующей записью в cron.log
ping -c3 ya.ru >> /var/log/cron.txt - выполнение ping -c3 ya.ru с последующей записью в cron.txt
ping -c4 77.88.8.8 >> /var/log/cron.log - выполнение ping -c4 77.88.8.8 с последующей записью в cron.txt
Также необходимо выставить тайминг в crontab;
### Часть 4. Мои запланированные задания
4.1 first.sh

Каждые 15 минут -> crontab -e;

Результат:

4.2 second.sh

Один раз в день -> crontab -e;

4.3 third.sh

В 15:00 в среду -> crontab -e;

4.4 fourth.sh

В 20:00 каждое воскресенье -> crontab -e;

ИТОГ crontab -e:

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

## Практическая работа №3.2 Настройке SFTP и FileZilla
Для того чтобы настроить SFTP нам необходимо указывать группу, которая будет предоставлять доступ определённым образом.
Приступим к настройке:
### Часть 1. Настройка SFTP
1.1 Проверим ssh клиент;

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

1.3 Перезапускаем сервис;

1.4 Создадим пользователя;

1.5 Проверяем наличие группы sftp;

Группы sftp нет, добавим.
1.6 Добавим группу sftp;

1.7 Добавим пользователя в данную группу;

1.8 Проверим добавление;

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

Работает!
### Часть 2. Работа в Filezilla и SFTP
2.1 Проверяем ip-адрес linux куда нам надо подключиться;

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

2.3 Вводим параметры для входа;

2.4 Попробуем подключиться к Kali, на котором была изменена конфигурация ранее;

2.5 А удаленное подключение по sftp работает;

2.6 Команда ls;

2.7 Можно положить файлик;

2.8 И скачать что-нибудь;

2.9 На linux запускаем wireshark и на windows подключаемся через filezilla и смотрим вывод wireshark;


Происходит взаимодействие между клиентом и сервером. Образуется зашифрованный тунель. Как видим на скрине, используется SSH протокол.
ТCP SYN и ACK вначале - для установления связи. Клиент посылает SYN с указанием номера порта сервера, который предлагается использовать для организации канала связи.
SSHv2 вначале происходит аутентификация, в нашем случае по паролю и логину в зашифрованном виде.
Так же в Wireshark наблюдаем Encrypted packet, означает, что передаваемые пакеты зашифрованы.
## Практическая работа №3.3 Сервисы в Linux
### Часть 1. Сервисы или службы
Это программы, которые работают в фоновом режиме. Запускаются при загрузке системы.
1.1 Посмотрим какие сервисы работают;

"+" означает, что они включены
### Часть 2. Apache2
2.1 Проверим apache2;

2.2 Запустим его;

2.3 Посмотрим его в списке сервисов, появится +;

2.4 Зайдем на страницу apache2;

2.5 Отключим веб-сервер apache2;

2.6 Рассмотрим аналоги работы с сервисами;

2.7 Теперь включим apache2;

2.8 Выключим;

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

### Часть 3. TELNET
Данный сервис актуален для пентеста, но не для администрирования.
3.1 Установим;

3.2 У Telnet есть режимы работы, например Тестирование. Обрабатывает только текст, например;

3.3 Есть на хосте ssh сервер;

У меня ssh сервер стоит на debian на порту 2222, поэтому проверил этот порт.
3.4 На удаленной машине установим сервер telnet;

3.5 После чего проверим, есть ли telnet на 23 порту;

3.6 Заходим на удаленный сервер;

### Часть 4. SSH
**Возможности SSH**
- Позволяет удаленно работать на компьютере через командную оболочку.
- Позволяет осуществлять шифрование с помощью различных алгоритмов.
- Так как SSH позволяет безопасно передавать практически любой сетевой протокол, это позволяет передавать по шифрованному каналу звуковые и видео файлы.
- Производит сжатие файлов для их последующего шифрования и передачи.
- Защищает передачу данных по каналу и предотвращает возможность включения в установленную сессию и перехватить данные.
-
4.1 Серверс установлен и активен;

4.2 Зайдем в конфигурацию;

4.3 Данная команда не возвращает текст и ошибок, как просили;

4.4 Перезапуск сервиса;

4.5 Остановка сервиса;

4.6 Запуск сервиса;

### Часть 5. FTP
Протокол прикладного уровня для передачи файлов. Протокол FTP, также как и HTTP для адресации файлов использует url. URL состоит из 3 частей: идентификатора протокола, имя сервера или ip, путь к файлу.
5.1 Установим. sudo apt install vsftpd;

5.2 Заходим в файл конфигурации;

5.3 Listen:

Если опция включена сервер стартует в независимом от inetd/xinetd режиме "standalone mode".
5.4 Listen_ipv4:

Тоже самое что listen, за исключением того что vsftpd слушает IPv6 протокол включительно.
5.5 anonymous_enable:

Разрешает или запрещает вход анонимных пользователей. Если разрешено, пользователи с именами ftp и anonymous распознаются как анонимные пользователи
5.6 local_enable:

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

Если включено, то пользователям FTP-сервера можно показывать сообщения, когда они переходят в каталог.
5.8 use_localtime:

Если параметр установлен в «YES», то vsftpd будет отображать время в вашей локальной временной зоне в списке содержимого в каталоге.
5.9 xferlog_enable:

Если параметр установлен в «YES», то лог-файл будет содержать детальную информацию о загрузках на vsftpd и закачках с vsftpd.
5.10 connect_from_port_20:

Включение этого параметра указывает исходящим с сервера соединениям использовать 20 порт (ftp-data).
5.11 secure_chroot_dir:

Параметр должен содержать имя пустого каталога. Так же этот каталог не должен быть доступен для записи ftp-пользователем
5.12 rsa_cert_file:

Параметр содержит путь в файловой системе до сертификата RSA для использования в шифрованных SSL-соединениях.
5.13 Теперь давайте выполним дополнительную конфигурацию по дополнению сервиса в автозагрузку:

5.14 Посмотрим статус сервиса;

5.15 Теперь я установлю сервис FTP на Kali;

5.16 Запущу его;



5.17 Для того чтобы увидеть всю файловую систему на сервисе необходимо в файле конфигурации снять комментарий и изменить YES на NO;

5.18 Демонстрация работы ftp через filezilla;

5.19 Демонстрация работы ftp через браузер;





5.19 Демонстрация того, что трафик не шифруется;

Видим логин;

Видим пароль;

Таким образом можно перехватить трафик FTP.
### Часть 6. Samba
При помощи Samba компьютеры могут обмениваться файлами или управлять заданиями на печать как файл-серверы или серверы печати под Windows.
**C помощью Samba можно реализовать следующие наиболее распространенные:**
- Давать доступ к дискам Linux Windows-машинам.
- Получать доступ к дискам Windows для машин под Linux.
- Давать доступ к принтерам Linux для Windows-машин.
- Получать доступ к принтерам Windows из Linux-систем.
6.1 Установим;

6.2 Заходим в конфигурационный файл. sudo vim.tiny /etc/samba/smb.conf;

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

6.4 Настроим samba;

- [shared] — имя общей папки, которое увидят пользователи, подключившись к серверу.
- comment — комментарий для удобства.
- path — путь на сервере, где будут храниться данные.
- public — для общего доступа. Установите в yes, если хотите, чтобы все могли работать с ресурсом.
- writable — разрешает запись на сетевой ресурс.
- read only — только для чтения. Установите no, если у пользователей должна быть возможность создавать папки и файлы.
- guest ok — разрешает доступ к папке гостевой учетной записи.
- create mask, directory mask, force create mode, force directory mode — при создании новой папки или файла назначаются полные права.
6.5 Добавляем сервис в автозагрузку и включаем его;


6.6 Заходим на шару;

6.7 Созздаем файл;

6.8 Проверяем его наличие в папке /tmp на Kali;

Работает!