fix all homeworks in 03-sysadmin

This commit is contained in:
2022-05-06 11:28:52 +07:00
parent 6867d8f214
commit dd9731b3d5
8 changed files with 239 additions and 85 deletions

View File

@@ -3,21 +3,29 @@
## Q/A ## Q/A
1. Какого типа команда `cd`? ### Задача 1
> Какого типа команда `cd`?
При вызове `type cd` будет выведено, что `cd is a shell builtin`, то есть команда встроенная в оболочку. При вызове `type cd` будет выведено, что `cd is a shell builtin`, то есть команда встроенная в оболочку.
Данная команда необходима для работы пользователя с терминалом и для работы других команд, именно поэтому она встроена в ядро операционной системы. Данная команда необходима для работы пользователя с терминалом и для работы других команд, именно поэтому она встроена в ядро операционной системы.
2. Какая альтернатива без pipe команде `grep <some_string> <some_file> | wc -l`? ### Задача 2
> Какая альтернатива без pipe команде `grep <some_string> <some_file> | wc -l`?
Альтернативой является команда `grep -c <some_string> <some_file>`. Альтернативой является команда `grep -c <some_string> <some_file>`.
3. Какой процесс с PID 1 является родителем для всех процессов в вашей виртуальной машине Ubuntu 20.04? ### Задача 3
> Какой процесс с PID 1 является родителем для всех процессов в вашей виртуальной машине Ubuntu 20.04?
Найти родителя всех процессов можно вызвав команду `pstree -p | grep \(1\)`. Найти родителя всех процессов можно вызвав команду `pstree -p | grep \(1\)`.
Ответ: процесс с PID 1 - `systemd`. Ответ: процесс с PID 1 - `systemd`.
4. Как будет выглядеть команда, которая перенаправит вывод stderr `ls` на другую сессию терминала? ### Задача 4
> Как будет выглядеть команда, которая перенаправит вывод stderr `ls` на другую сессию терминала?
Откроем два терминала на виртуальной машине. Для каждого из них будет создан новый файл в директории `/dev/pts/`. Откроем два терминала на виртуальной машине. Для каждого из них будет создан новый файл в директории `/dev/pts/`.
Таким образом, если мы хотим перенаправить stderr команды, то нужно выполнить следующие действия: Таким образом, если мы хотим перенаправить stderr команды, то нужно выполнить следующие действия:
@@ -28,7 +36,9 @@
ls /some/invalid/dir 2>&1 1>&/dev/pts/<n> ls /some/invalid/dir 2>&1 1>&/dev/pts/<n>
``` ```
5. Получится ли одновременно передать команде файл на stdin и вывести ее stdout в другой файл? ### Задача 4
> Получится ли одновременно передать команде файл на stdin и вывести ее stdout в другой файл?
Да, подобное можно реализовать следующим способом. Да, подобное можно реализовать следующим способом.
@@ -42,20 +52,26 @@ cat out_file
Содержимое out_file является выводом команды grep, а именно одна строка `abc`. Содержимое out_file является выводом команды grep, а именно одна строка `abc`.
6. Получится ли находясь в графическом режиме, вывести данные из PTY в какой-либо из эмуляторов TTY? Сможете ли вы наблюдать выводимые данные? ### Задача 6
> Получится ли находясь в графическом режиме, вывести данные из PTY в какой-либо из эмуляторов TTY? Сможете ли вы наблюдать выводимые данные?
Да, подобное возможно. Достаточно, например, открыть новую сессию терминала в графической оболочке и выполнить перенаправление потока в `/dev/pts/<n>`. Да, подобное возможно. Достаточно, например, открыть новую сессию терминала в графической оболочке и выполнить перенаправление потока в `/dev/pts/<n>`.
Так же любая программа с графическим интерфейсом может выполнить данное действие. Наблюдать данные возможно, Так же любая программа с графическим интерфейсом может выполнить данное действие. Наблюдать данные возможно,
если открыт терминал, подключённый к конкретной сессии. если открыт терминал, подключённый к конкретной сессии.
7. Выполните команду `bash 5>&1`. К чему она приведет? Что будет, если вы выполните `echo netology > /proc/$$/fd/5`? Почему так происходит? ### Задача 7
> Выполните команду `bash 5>&1`. К чему она приведет? Что будет, если вы выполните `echo netology > /proc/$$/fd/5`? Почему так происходит?
Насколько я понимаю, команда `bash 5>&1` создаёт новую терминальную сессию с перенаправлением потока из `5` в `1`, то есть в `stdout`. Насколько я понимаю, команда `bash 5>&1` создаёт новую терминальную сессию с перенаправлением потока из `5` в `1`, то есть в `stdout`.
Но так как `5` - это не стандартный идентификатор потока, поэтому оболочка создаст новый файл `/proc/$$/fd/5`. Но так как `5` - это не стандартный идентификатор потока, поэтому оболочка создаст новый файл `/proc/$$/fd/5`.
Данный файл будет алиасом для stdout, поэтому выполнение `echo` выведет содержимое в терминал, Данный файл будет алиасом для stdout, поэтому выполнение `echo` выведет содержимое в терминал,
как это сделал бы обычный вызов команды без перенаправлений потока. как это сделал бы обычный вызов команды без перенаправлений потока.
8. Получится ли в качестве входного потока для pipe использовать только stderr команды, не потеряв при этом отображение stdout на pty? ### Задача 8
> Получится ли в качестве входного потока для pipe использовать только stderr команды, не потеряв при этом отображение stdout на pty?
Да, такая возможность есть. Сначала необходимо запустить терминал с новым перенаправлением, как в предыдущем вопросе: `bash 5>&1`. Да, такая возможность есть. Сначала необходимо запустить терминал с новым перенаправлением, как в предыдущем вопросе: `bash 5>&1`.
Затем уже можно выполнить перенаправление потоков следующим образом: Затем уже можно выполнить перенаправление потоков следующим образом:
@@ -66,22 +82,30 @@ ls -la /tmp/wrong_dir 2>&1 1>&5 | less
Таким образом в команду `less` попадёт следующий текст: `ls: cannot access '/tmp/wrong_dir': No such file or directory`. Таким образом в команду `less` попадёт следующий текст: `ls: cannot access '/tmp/wrong_dir': No such file or directory`.
9. Что выведет команда `cat /proc/$$/environ`? Как еще можно получить аналогичный по содержанию вывод? ### Задача 9
> Что выведет команда `cat /proc/$$/environ`? Как еще можно получить аналогичный по содержанию вывод?
Данная команда выведет все переменные окружения, которые инициализированы в текущей сессии терминала. Данная команда выведет все переменные окружения, которые инициализированы в текущей сессии терминала.
Аналогичный результат может быть достигнут вызовом команд `printenv` или `env`. Аналогичный результат может быть достигнут вызовом команд `printenv` или `env`.
10. Используя `man`, опишите что доступно по адресам `/proc/<PID>/cmdline`, `/proc/<PID>/exe`. ### Задача 11
> Используя `man`, опишите что доступно по адресам `/proc/<PID>/cmdline`, `/proc/<PID>/exe`.
Файл `/proc/<PID>/cmdline` - это файл, предназначенный только для чтения, который содержит в себе полную команду процесса, но только если процесс не зомби. Файл `/proc/<PID>/cmdline` - это файл, предназначенный только для чтения, который содержит в себе полную команду процесса, но только если процесс не зомби.
Файл `/proc/<PID>/exe` - это файл-символическая ссылка, содержащая актуальный полный путь до выполняемой команды. Файл `/proc/<PID>/exe` - это файл-символическая ссылка, содержащая актуальный полный путь до выполняемой команды.
11. Узнайте, какую наиболее старшую версию набора инструкций SSE поддерживает ваш процессор с помощью `/proc/cpuinfo` ### Задача 12
> Узнайте, какую наиболее старшую версию набора инструкций SSE поддерживает ваш процессор с помощью `/proc/cpuinfo`
Выполним команду `cat /proc/cpuinfo | grep sse`. В выводе можно найти такие версии, как `sse`, `sse2`, `ssse3`, `sse4_1`, `sse4_2`. Выполним команду `cat /proc/cpuinfo | grep sse`. В выводе можно найти такие версии, как `sse`, `sse2`, `ssse3`, `sse4_1`, `sse4_2`.
Таким образом, ответом на вопрос будет `sse4_2`. Таким образом, ответом на вопрос будет `sse4_2`.
12. Почему команда `ssh localhost 'tty'` внутри виртуальной машины выдаёт ошибку `not a tty` ### Задача 13
> Почему команда `ssh localhost 'tty'` внутри виртуальной машины выдаёт ошибку `not a tty`
Изначально, нужно понять, что происходит при выполнении исходной команды. Судя по мануалу команды `ssh`, Изначально, нужно понять, что происходит при выполнении исходной команды. Судя по мануалу команды `ssh`,
`localhost` является пунктом назначения, куда будет произведено подключение, `localhost` является пунктом назначения, куда будет произведено подключение,
@@ -93,7 +117,9 @@ ls -la /tmp/wrong_dir 2>&1 1>&5 | less
Изменить поведение можно принудительно заставив `ssh` создать новую сессию, для этого нужно добавить ключ `-t`, Изменить поведение можно принудительно заставив `ssh` создать новую сессию, для этого нужно добавить ключ `-t`,
то есть выполнить команду `ssh -t localhost 'tty'`. то есть выполнить команду `ssh -t localhost 'tty'`.
13. Необходимо переместить запущенный процесс из одной сессии в другую с использованием утилиты `reptyr` ### Задача 14
> Необходимо переместить запущенный процесс из одной сессии в другую с использованием утилиты `reptyr`
На виртуальной машине утилита не установлена, поэтому установим её `sudo apt install reptyr`. На виртуальной машине утилита не установлена, поэтому установим её `sudo apt install reptyr`.
В качестве примера запустим утилиту `screen`, которая запустит новую сессию внутри себя. В качестве примера запустим утилиту `screen`, которая запустит новую сессию внутри себя.
@@ -104,7 +130,9 @@ ls -la /tmp/wrong_dir 2>&1 1>&5 | less
К сожалению, полностью перенести процесс не получилось, есть какие-то странные ошибки по типу `Operation not permitted` К сожалению, полностью перенести процесс не получилось, есть какие-то странные ошибки по типу `Operation not permitted`
или "зависания" второго терминала, если выполнить команду от администратора. или "зависания" второго терминала, если выполнить команду от администратора.
14. Узнайте что делает команда `tee` и почему в отличие от `sudo echo` команда с `sudo tee` будет работать. ### Задача 15
> Узнайте что делает команда `tee` и почему в отличие от `sudo echo` команда с `sudo tee` будет работать.
Команда `tee` читает стандартный поток ввода и пишет его в стандартный поток вывода и файлы. Команда `tee` читает стандартный поток ввода и пишет его в стандартный поток вывода и файлы.
В отличие от `echo` перенаправление идёт в рамках одного процесса, именно поэтому `sudo tee` будет работать, В отличие от `echo` перенаправление идёт в рамках одного процесса, именно поэтому `sudo tee` будет работать,

View File

@@ -3,7 +3,9 @@
## Q/A ## Q/A
1. Какой системный вызов делает команда `cd`? ### Задача 1
> Какой системный вызов делает команда `cd`?
Для удобства поиска перенаправим вывод команды `strace` в утилиту `less` Для удобства поиска перенаправим вывод команды `strace` в утилиту `less`
@@ -14,7 +16,9 @@ strace /bin/bash -c 'cd /tmp' 2>&1 | less
Далее, найдём в трейсе упоминание директории `tmp`, указанной в команде. Таким образом, обнаружим, что команда `cd` Далее, найдём в трейсе упоминание директории `tmp`, указанной в команде. Таким образом, обнаружим, что команда `cd`
делает системный вызов `chdir("/tmp")`. делает системный вызов `chdir("/tmp")`.
2. Используя `strace` выясните, где находится база данных `file` на основании которой она делает свои догадки. ### Задача 2
> Используя `strace` выясните, где находится база данных `file` на основании которой она делает свои догадки.
При использовании команды `file` на любом файле, `strace` выведет такую строку: При использовании команды `file` на любом файле, `strace` выведет такую строку:
@@ -24,7 +28,9 @@ openat(AT_FDCWD, "/usr/share/misc/magic.mgc", O_RDONLY) = 3
Предположительно, `/usr/share/misc/magic.mgc` - это и есть база данных для команды `file`. Предположительно, `/usr/share/misc/magic.mgc` - это и есть база данных для команды `file`.
3. Предложите способ обнуления открытого удаленного файла (чтобы освободить место на файловой системе) ### Задача 3
> Предложите способ обнуления открытого удаленного файла (чтобы освободить место на файловой системе)
Зная PID процесса и то, что каждый процесс пишет свои потоки в файлы в директории `/proc/<PID>/fd`. Зная PID процесса и то, что каждый процесс пишет свои потоки в файлы в директории `/proc/<PID>/fd`.
Таким образом, можно найти конкретный поток, который пишет в файл, вызвав команду Таким образом, можно найти конкретный поток, который пишет в файл, вызвав команду
@@ -48,12 +54,16 @@ lr-x------ 1 vagrant vagrant 64 Feb 16 03:25 3 -> /tmp/do_not_delete_me
echo "" > /proc/1988/fd/3 echo "" > /proc/1988/fd/3
``` ```
4. Занимают ли зомби-процессы какие-то ресурсы в ОС (CPU, RAM, IO)? ### Задача 4
> Занимают ли зомби-процессы какие-то ресурсы в ОС (CPU, RAM, IO)?
Нет, zombie-процессы не используют никаких ресурсов операционной системы. Нет, zombie-процессы не используют никаких ресурсов операционной системы.
Единственное, что они занимают - это идентификатор процесса. Единственное, что они занимают - это идентификатор процесса.
5. На какие файлы вы увидели вызовы группы `open` за первую секунду работы утилиты `opensnoop-bpfcc`? ### Задача 5
> На какие файлы вы увидели вызовы группы `open` за первую секунду работы утилиты `opensnoop-bpfcc`?
За первую секунду работы утилиты был произведён следующий вывод: За первую секунду работы утилиты был произведён следующий вывод:
@@ -68,8 +78,10 @@ PID COMM FD ERR PATH
619 dbus-daemon 19 0 /var/lib/snapd/dbus-1/system-services/ 619 dbus-daemon 19 0 /var/lib/snapd/dbus-1/system-services/
``` ```
6. Какой системный вызов использует `uname -a`? Приведите цитату из man по этому системному вызову, ### Задача 5
где описывается альтернативное местоположение в /proc, где можно узнать версию ядра и релиз ОС.
> Какой системный вызов использует `uname -a`? Приведите цитату из man по этому системному вызову,
> где описывается альтернативное местоположение в /proc, где можно узнать версию ядра и релиз ОС.
Утилита `uname` использует системный вызов `uname`, мануал к которому можно прочитать командой `man 2 uname`. Утилита `uname` использует системный вызов `uname`, мануал к которому можно прочитать командой `man 2 uname`.
@@ -79,15 +91,17 @@ PID COMM FD ERR PATH
PS. На виртуальной машине не было установленных мануалов для системных вызовов. Чтобы их установить, PS. На виртуальной машине не было установленных мануалов для системных вызовов. Чтобы их установить,
нужно выполнить команду `sudo apt install manpages-dev`. нужно выполнить команду `sudo apt install manpages-dev`.
7. Чем отличается последовательность команд через `;` и через `&&` в bash? ### Задача 7
Есть ли смысл использовать в bash `&&`, если применить `set -e`?
> Чем отличается последовательность команд через `;` и через `&&` в bash?
> Есть ли смысл использовать в bash `&&`, если применить `set -e`?
При использовании `&&` будет учитываться код выхода предыдущей выполненой команды. Если он не 0, то выполнение последовательности будет прервано. При использовании `&&` будет учитываться код выхода предыдущей выполненой команды. Если он не 0, то выполнение последовательности будет прервано.
В случае же `;` последовательность будет выполнена в любом случае. В случае же `;` последовательность будет выполнена в любом случае.
В случае `set -e` параметр имеет следующее определение В случае `set -e` параметр имеет следующее определение
>When this option is on, if a simple command fails for any of the reasons listed in Consequences of Shell Errors or returns an exit status value >0, > When this option is on, if a simple command fails for any of the reasons listed in Consequences of Shell Errors or returns an exit status value >0,
> and is not part of the compound list following a while, until, or if keyword, > and is not part of the compound list following a while, until, or if keyword,
> and is not a part of an AND or OR list, > and is not a part of an AND or OR list,
> and is not a pipeline preceded by the ! reserved word, then the shell shall immediately exit. > and is not a pipeline preceded by the ! reserved word, then the shell shall immediately exit.
@@ -95,7 +109,9 @@ PS. На виртуальной машине не было установлен
То есть, если данная команда будет выполнена в связке с другими командами, то она не сможет прервать выполнение последовательности. То есть, если данная команда будет выполнена в связке с другими командами, то она не сможет прервать выполнение последовательности.
Таким образом, для данной команды использование `&&` и `;` будет иметь одинаковое поведение. Таким образом, для данной команды использование `&&` и `;` будет иметь одинаковое поведение.
8. Из каких опций состоит режим bash `set -euxo pipefail` и почему его хорошо было бы использовать в сценариях? ### Задача 8
> Из каких опций состоит режим bash `set -euxo pipefail` и почему его хорошо было бы использовать в сценариях?
Параметр `-e` уже был рассмотрен в предыдущем вопросе. Параметр `-e` уже был рассмотрен в предыдущем вопросе.
@@ -107,7 +123,9 @@ PS. На виртуальной машине не было установлен
`-o` - устанавливает настройку работы последовательности команд. В данном случае значение `pipefail` говорит о том, `-o` - устанавливает настройку работы последовательности команд. В данном случае значение `pipefail` говорит о том,
что статус работы всей последовательности будет значение последней команды с ненулевым кодом выхода или 0, если все команды выполнились успешно. что статус работы всей последовательности будет значение последней команды с ненулевым кодом выхода или 0, если все команды выполнились успешно.
9. Используя `-o stat` для `ps`, определите, какой наиболее часто встречающийся статус у процессов в системе. ### Задача 9
> Используя `-o stat` для `ps`, определите, какой наиболее часто встречающийся статус у процессов в системе.
Выполним данную команду на виртуальной машине Выполним данную команду на виртуальной машине
```shell ```shell

View File

@@ -3,7 +3,9 @@
## Q/A ## Q/A
1. Создайте самостоятельно простой unit-файл для [node_exporter](https://github.com/prometheus/node_exporter) ### Задача 1
> Создайте самостоятельно простой unit-файл для [node_exporter](https://github.com/prometheus/node_exporter)
Для начала необходимо установить `node_exporter` в систему. Для этого воспользуемся [официальным гайдом](https://prometheus.io/docs/guides/node-exporter/#installing-and-running-the-node-exporter), Для начала необходимо установить `node_exporter` в систему. Для этого воспользуемся [официальным гайдом](https://prometheus.io/docs/guides/node-exporter/#installing-and-running-the-node-exporter),
а именно: а именно:
@@ -119,7 +121,9 @@ sudo systemctl status prometheus_node_exporter
<...> <...>
``` ```
2. Приведите несколько опций, которые вы бы выбрали для базового мониторинга хоста по CPU, памяти, диску и сети. ### Задача 2
> Приведите несколько опций, которые вы бы выбрали для базового мониторинга хоста по CPU, памяти, диску и сети.
По умолчанию в `node_exporter` включено достаточно много различной информации (~1000 строк). Поэтому, на мой взгляд, По умолчанию в `node_exporter` включено достаточно много различной информации (~1000 строк). Поэтому, на мой взгляд,
для начала стоит включить только следующие флаги: для начала стоит включить только следующие флаги:
@@ -130,7 +134,9 @@ sudo systemctl status prometheus_node_exporter
* `--collector.os` - отображение информации об операционной системе * `--collector.os` - отображение информации об операционной системе
* `--collector.time` - отображение информации о текущем системном времени * `--collector.time` - отображение информации о текущем системном времени
3. Ознакомьтесь с метриками, которые по умолчанию собираются `Netdata`, и с комментариями, которые даны к этим метрикам. ### Задача 3
> Ознакомьтесь с метриками, которые по умолчанию собираются `Netdata`, и с комментариями, которые даны к этим метрикам.
`netdata` отображает следующие метрики: `netdata` отображает следующие метрики:
* `cpu` - утилизация CPU по всем ядрам * `cpu` - утилизация CPU по всем ядрам
@@ -143,12 +149,16 @@ sudo systemctl status prometheus_node_exporter
Доступны так же подробные графики по каждой из категорий. Доступны так же подробные графики по каждой из категорий.
4. Можно ли по выводу `dmesg` понять, осознает ли ОС, что загружена не на настоящем оборудовании, а на системе виртуализации? ### Задача 4
> Можно ли по выводу `dmesg` понять, осознает ли ОС, что загружена не на настоящем оборудовании, а на системе виртуализации?
В `dmesg` можно найти следующий вывод `Detected virtualization oracle.` от `systemd`. Таким образом да, можно понять, что система осознаёт, В `dmesg` можно найти следующий вывод `Detected virtualization oracle.` от `systemd`. Таким образом да, можно понять, что система осознаёт,
что находится внутри виртуальной машины, а не на физическом оборудовании. что находится внутри виртуальной машины, а не на физическом оборудовании.
5. Как настроен `sysctl fs.nr_open` на системе по-умолчанию? Какой другой существующий лимит не позволит достичь такого числа? ### Задача 5
> Как настроен `sysctl fs.nr_open` на системе по-умолчанию? Какой другой существующий лимит не позволит достичь такого числа?
```shell ```shell
sysctl fs.nr_open sysctl fs.nr_open
@@ -159,7 +169,9 @@ fs.nr_open = 1048576
Для текущей сессии bash можно посмотреть и изменить ограничение при помощи команды `ulimit -n`. Для текущей сессии bash можно посмотреть и изменить ограничение при помощи команды `ulimit -n`.
Для конкретных групп и пользователей ограничения можно задать в файле `/etc/security/limits.conf`. Для конкретных групп и пользователей ограничения можно задать в файле `/etc/security/limits.conf`.
6. Запустите любой долгоживущий процесс в отдельном неймспейсе процессов; покажите, что ваш процесс работает под PID 1 через `nsenter`. ### Задача 6
> Запустите любой долгоживущий процесс в отдельном неймспейсе процессов; покажите, что ваш процесс работает под PID 1 через `nsenter`.
Запустим процесс `bash` в изолированном пространстве имён: Запустим процесс `bash` в изолированном пространстве имён:
@@ -195,10 +207,12 @@ root 21 0.0 0.3 8960 4000 pts/1 S 03:35 0:00 -bash
root 52 0.0 0.3 10616 3252 pts/1 R+ 03:36 0:00 ps aux root 52 0.0 0.3 10616 3252 pts/1 R+ 03:36 0:00 ps aux
``` ```
7. Найдите информацию о том, что такое `:(){ :|:& };:`. ### Задача 7
Запустите эту команду в своей виртуальной машине. Некоторое время все будет "плохо", после чего (минуты) ОС должна стабилизироваться.
Вызов `dmesg` расскажет, какой механизм помог автоматической стабилизации. > Найдите информацию о том, что такое `:(){ :|:& };:`.
Как настроен этот механизм по-умолчанию, и как изменить число процессов, которое можно создать в сессии? > Запустите эту команду в своей виртуальной машине. Некоторое время все будет "плохо", после чего (минуты) ОС должна стабилизироваться.
> Вызов `dmesg` расскажет, какой механизм помог автоматической стабилизации.
> Как настроен этот механизм по-умолчанию, и как изменить число процессов, которое можно создать в сессии?
Команда - это `fork bomb`, которую можно разделить на следующие блоки: Команда - это `fork bomb`, которую можно разделить на следующие блоки:

View File

@@ -3,7 +3,9 @@
## Q/A ## Q/A
1. Разряженные файлы ### Задача 1
> Разряженные файлы
Суть таких файлов в том, чтобы разделить реальные данные последовательностью нуль-символов (`\x00`), которые не занимают реального места на физическом носителе. Суть таких файлов в том, чтобы разделить реальные данные последовательностью нуль-символов (`\x00`), которые не занимают реального места на физическом носителе.
При этом сами данные записываются на разных фрагментах на физическом диске. При этом сами данные записываются на разных фрагментах на физическом диске.
@@ -12,12 +14,16 @@
Это позволяет сделать запись туда, где доступно 1-2KB (например, после удаления другого файла), Это позволяет сделать запись туда, где доступно 1-2KB (например, после удаления другого файла),
но куда оригинальный файл целиком не поместится. но куда оригинальный файл целиком не поместится.
2. Могут ли файлы, являющиеся жесткой ссылкой на один объект, иметь разные права доступа и владельца? Почему? ### Задача 2
> Могут ли файлы, являющиеся жесткой ссылкой на один объект, иметь разные права доступа и владельца? Почему?
Не могут. Причина в том, что жёсткие ссылки всегда ссылаются на одну `Inode` (идентификатор объекта файла внутри ОС). Не могут. Причина в том, что жёсткие ссылки всегда ссылаются на одну `Inode` (идентификатор объекта файла внутри ОС).
То есть, все файлы, которые имеют одну `Inode` будут синхронизированы по: содержимому, правам доступа и другим мета-данным. То есть, все файлы, которые имеют одну `Inode` будут синхронизированы по: содержимому, правам доступа и другим мета-данным.
3. Реконфигурация виртуальной машины ### Задача 3
> Реконфигурация виртуальной машины
В текущую конфигурацию [`vagrant`](/src/vagrant/Vagrantfile) добавлена конфигурация дисков: В текущую конфигурацию [`vagrant`](/src/vagrant/Vagrantfile) добавлена конфигурация дисков:
@@ -40,7 +46,9 @@ lvm_experiments_disk0.vmdk
lvm_experiments_disk1.vmdk lvm_experiments_disk1.vmdk
``` ```
4. Используя `fdisk`, разбейте первый диск на 2 раздела: 2 Гб, оставшееся пространство. ### Задача 4
> Используя `fdisk`, разбейте первый диск на 2 раздела: 2 Гб, оставшееся пространство.
Найдём диски, которые были подключены на предыдущем шаге Найдём диски, которые были подключены на предыдущем шаге
@@ -116,7 +124,9 @@ Device Start End Sectors Size Type
/dev/sdb2 4196352 5242846 1046495 511M Linux filesystem /dev/sdb2 4196352 5242846 1046495 511M Linux filesystem
``` ```
5. Используя `sfdisk`, перенесите данную таблицу разделов на второй диск. ### Задача 5
> Используя `sfdisk`, перенесите данную таблицу разделов на второй диск.
Перенесём таблицу разделов с `/dev/sdb` на `/dev/sdc`. Перенесём таблицу разделов с `/dev/sdb` на `/dev/sdc`.
@@ -174,7 +184,9 @@ Device Start End Sectors Size Type
/dev/sdc2 4196352 5242846 1046495 511M Linux filesystem /dev/sdc2 4196352 5242846 1046495 511M Linux filesystem
``` ```
6. Соберите `mdadm` `RAID1` на паре разделов 2 Гб. ### Задача 6
> Соберите `mdadm` `RAID1` на паре разделов 2 Гб.
Разделы, которые необходимо объединить в `RAID1`: `/dev/sdb1` и `/dev/sdc1`. Разделы, которые необходимо объединить в `RAID1`: `/dev/sdb1` и `/dev/sdc1`.
@@ -184,7 +196,9 @@ mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started. mdadm: array /dev/md0 started.
``` ```
7. Соберите `mdadm` `RAID0` на второй паре маленьких разделов ### Задача 7
> Соберите `mdadm` `RAID0` на второй паре маленьких разделов
Разделы, которые необходимо объединить в `RAID0`: `/dev/sdb2` и `/dev/sdc2`. Разделы, которые необходимо объединить в `RAID0`: `/dev/sdb2` и `/dev/sdc2`.
@@ -194,7 +208,9 @@ mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started. mdadm: array /dev/md1 started.
``` ```
8. Создайте 2 независимых PV на получившихся md-устройствах ### Задача 8
> Создайте 2 независимых PV на получившихся md-устройствах
```shell ```shell
sudo pvcreate /dev/md0 sudo pvcreate /dev/md0
@@ -228,7 +244,9 @@ sudo pvdisplay
PV UUID PB8hEQ-bZGA-M6Xe-tOQV-1CAb-DRSf-syoUSA PV UUID PB8hEQ-bZGA-M6Xe-tOQV-1CAb-DRSf-syoUSA
``` ```
9. Создайте общую volume-group на этих двух PV. ### Задача 9
> Создайте общую volume-group на этих двух PV.
```shell ```shell
sudo vgcreate test_vg /dev/md0 /dev/md1 sudo vgcreate test_vg /dev/md0 /dev/md1
@@ -257,7 +275,9 @@ sudo vgdisplay
VG UUID 7xcN3Z-o9Ca-iXl2-5eao-iA4e-cEVJ-YgSajr VG UUID 7xcN3Z-o9Ca-iXl2-5eao-iA4e-cEVJ-YgSajr
``` ```
10. Создайте LV размером 100 Мб, указав его расположение на PV с `RAID0`. ### Задача 10
> Создайте LV размером 100 Мб, указав его расположение на PV с `RAID0`.
```shell ```shell
sudo lvcreate --size=100MB test_vg /dev/md1 sudo lvcreate --size=100MB test_vg /dev/md1
@@ -282,7 +302,9 @@ sudo lvdisplay
Block device 253:1 Block device 253:1
``` ```
11. Создайте `mkfs.ext4` ФС на получившемся `LV` ### Задача 11
> Создайте `mkfs.ext4` ФС на получившемся `LV`
```shell ```shell
sudo mkfs.ext4 /dev/test_vg/lvol0 sudo mkfs.ext4 /dev/test_vg/lvol0
@@ -295,14 +317,18 @@ Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done Writing superblocks and filesystem accounting information: done
``` ```
12. Смонтируйте этот раздел в любую директорию. ### Задача 12
> Смонтируйте этот раздел в любую директорию.
```shell ```shell
mkdir /tmp/new mkdir /tmp/new
sudo mount /dev/test_vg/lvol0 /tmp/new sudo mount /dev/test_vg/lvol0 /tmp/new
``` ```
13. Поместите туда тестовый файл. ### Задача 13
> Поместите туда тестовый файл.
```shell ```shell
sudo wget https://mirror.yandex.ru/ubuntu/ls-lR.gz -O /tmp/new/test.gz sudo wget https://mirror.yandex.ru/ubuntu/ls-lR.gz -O /tmp/new/test.gz
@@ -317,7 +343,9 @@ Saving to: /tmp/new/test.gz
2022-03-02 03:04:09 (9.33 MB/s) - /tmp/new/test.gz saved [22388361/22388361] 2022-03-02 03:04:09 (9.33 MB/s) - /tmp/new/test.gz saved [22388361/22388361]
``` ```
14. Прикрепите вывод `lsblk`. ### Задача 14
> Прикрепите вывод `lsblk`.
```shell ```shell
sudo lsblk sudo lsblk
@@ -347,7 +375,9 @@ sdc 8:32 0 2.5G 0 disk
└─test_vg-lvol0 253:1 0 100M 0 lvm /tmp/new └─test_vg-lvol0 253:1 0 100M 0 lvm /tmp/new
``` ```
15. Протестируйте целостность файла ### Задача 15
> Протестируйте целостность файла
```shell ```shell
sudo gzip -t /tmp/new/test.gz sudo gzip -t /tmp/new/test.gz
@@ -356,7 +386,9 @@ echo $?
0 0
``` ```
16. Используя `pvmove`, переместите содержимое PV с `RAID0` на `RAID1`. ### Задача 16
> Используя `pvmove`, переместите содержимое PV с `RAID0` на `RAID1`.
```shell ```shell
sudo pvmove /dev/md1 /dev/md0 sudo pvmove /dev/md1 /dev/md0
@@ -364,14 +396,18 @@ sudo pvmove /dev/md1 /dev/md0
/dev/md1: Moved: 100.00% /dev/md1: Moved: 100.00%
``` ```
17. Сделайте `--fail` на устройство в вашем `RAID1` md. ### Задача 17
> Сделайте `--fail` на устройство в вашем `RAID1` md.
```shell ```shell
sudo mdadm --fail /dev/md0 /dev/sdb1 sudo mdadm --fail /dev/md0 /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md0 mdadm: set /dev/sdb1 faulty in /dev/md0
``` ```
18. Подтвердите выводом `dmesg`, что `RAID1` работает в деградированном состоянии ### Задача 18
> Подтвердите выводом `dmesg`, что `RAID1` работает в деградированном состоянии
```shell ```shell
sudo dmesg | tail -n 5 sudo dmesg | tail -n 5
@@ -382,7 +418,9 @@ sudo dmesg | tail -n 5
md/raid1:md0: Operation continuing on 1 devices. md/raid1:md0: Operation continuing on 1 devices.
``` ```
19. Протестируйте целостность файла, несмотря на "сбойный" диск он должен продолжать быть доступен ### Задача 19
> Протестируйте целостность файла, несмотря на "сбойный" диск он должен продолжать быть доступен
```shell ```shell
sudo gzip -t /tmp/new/test.gz sudo gzip -t /tmp/new/test.gz

View File

@@ -3,7 +3,9 @@
## Q/A ## Q/A
1. Работа c HTTP через телнет. ### Задача 1
> Работа c HTTP через телнет.
```shell ```shell
telnet stackoverflow.com 80 telnet stackoverflow.com 80
@@ -34,7 +36,9 @@ Set-Cookie: prov=a65f8cdf-ae94-33aa-2d32-b4ba53feba61; domain=.stackoverflow.com
В ответ пришёл статус код `301`, который означает постоянное перемещение с запрашиваемой страницы. В ответ пришёл статус код `301`, который означает постоянное перемещение с запрашиваемой страницы.
2. Повторите задание 1 в браузере, используя консоль разработчика F12. ### Задача 2
> Повторите задание 1 в браузере, используя консоль разработчика F12.
Код ответа при заходе на сайт `http://stackoverflow.com`: `Status Code: 307 Internal Redirect`. Код ответа при заходе на сайт `http://stackoverflow.com`: `Status Code: 307 Internal Redirect`.
Наиболее долгих по загрузке запрос - это запрос на загрузку самой страницы после редиректа (`https://stackoverflow.com/`). Наиболее долгих по загрузке запрос - это запрос на загрузку самой страницы после редиректа (`https://stackoverflow.com/`).
@@ -42,7 +46,9 @@ Set-Cookie: prov=a65f8cdf-ae94-33aa-2d32-b4ba53feba61; domain=.stackoverflow.com
![stackoverflow.png](stackoverflow.png) ![stackoverflow.png](stackoverflow.png)
3. Какой IP адрес у вас в интернете? ### Задача 3
> Какой IP адрес у вас в интернете?
Чтобы узнать текущий внешний ip-адрес, можно воспользоваться онлайн сервисами, такими как [myip.com](https://www.myip.com/) или [whoer.net](https://whoer.net/). Чтобы узнать текущий внешний ip-адрес, можно воспользоваться онлайн сервисами, такими как [myip.com](https://www.myip.com/) или [whoer.net](https://whoer.net/).
В дополнение к этому, можно использовать только консоль и команду `dig`: В дополнение к этому, можно использовать только консоль и команду `dig`:
@@ -57,7 +63,9 @@ dig TXT +short o-o.myaddr.l.google.com @ns1.google.com
Ответ: `46.181.144.146`. Ответ: `46.181.144.146`.
4. Какому провайдеру принадлежит ваш IP адрес? Какой автономной системе AS? ### Задача 4
> Какому провайдеру принадлежит ваш IP адрес? Какой автономной системе AS?
```shell ```shell
whois 46.181.144.146 whois 46.181.144.146
@@ -77,7 +85,9 @@ source: RIPE
Ответ: оператор - `Goodline.info`, AS - `AS39927`. Ответ: оператор - `Goodline.info`, AS - `AS39927`.
5. Через какие сети проходит пакет, отправленный с вашего компьютера на адрес 8.8.8.8? Через какие AS? ### Задача 5
> Через какие сети проходит пакет, отправленный с вашего компьютера на адрес 8.8.8.8? Через какие AS?
По умолчанию утилита `traceroute` не установлена в системе ubuntu. Для её установки достаточно выполнить команду По умолчанию утилита `traceroute` не установлена в системе ubuntu. Для её установки достаточно выполнить команду
@@ -111,7 +121,9 @@ traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
19 * dns.google (8.8.8.8) [AS15169] 57.661 ms 56.687 ms 19 * dns.google (8.8.8.8) [AS15169] 57.661 ms 56.687 ms
``` ```
6. Повторите задание 5 в утилите mtr. На каком участке наибольшая задержка - delay? ### Задача 6
> Повторите задание 5 в утилите mtr. На каком участке наибольшая задержка - delay?
```shell ```shell
mtr -w 8.8.8.8 mtr -w 8.8.8.8
@@ -140,7 +152,9 @@ HOST: host Loss% Snt Last Avg
Наибольшая задержка была на 7-ом хопе с худшим показателем в 81ms. Наибольшая задержка была на 7-ом хопе с худшим показателем в 81ms.
7. Какие DNS сервера отвечают за доменное имя `dns.google`? Какие A записи? ### Задача 7
> Какие DNS сервера отвечают за доменное имя `dns.google`? Какие A записи?
```shell ```shell
dig dns.google dig dns.google
@@ -168,7 +182,9 @@ dns.google. 370 IN A 8.8.8.8
Ответ: dns-сервера с ip-адресами `8.8.4.4` и `8.8.8.8`. Оба адреса являются `A`-записями. Ответ: dns-сервера с ip-адресами `8.8.4.4` и `8.8.8.8`. Оба адреса являются `A`-записями.
9. Проверьте PTR записи для IP адресов из задания 7. Какое доменное имя привязано к IP? ### Задача 9
> Проверьте PTR записи для IP адресов из задания 7. Какое доменное имя привязано к IP?
```shell ```shell
dig -x 8.8.4.4 dig -x 8.8.4.4
@@ -212,4 +228,4 @@ dig -x 8.8.8.8
;; SERVER: 127.0.0.53#53(127.0.0.53) ;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Ср мар 09 10:33:34 +07 2022 ;; WHEN: Ср мар 09 10:33:34 +07 2022
;; MSG SIZE rcvd: 73 ;; MSG SIZE rcvd: 73
``` ```

View File

@@ -3,17 +3,23 @@
## Q/A ## Q/A
1. Проверьте список доступных сетевых интерфейсов на вашем компьютере. Какие команды есть для этого в Linux и в Windows? ### Задача 1
> Проверьте список доступных сетевых интерфейсов на вашем компьютере. Какие команды есть для этого в Linux и в Windows?
В Linux можно выполнить команду `ip link`, которая покажет все сетевые интерфейсы, включая виртуальные. В Linux можно выполнить команду `ip link`, которая покажет все сетевые интерфейсы, включая виртуальные.
Для Windows аналогом данной команды является вызов `ipconfig /all`. Для Windows аналогом данной команды является вызов `ipconfig /all`.
2. Какой протокол используется для распознавания соседа по сетевому интерфейсу? Какой пакет и команды есть в Linux для этого? ### Задача 2
> Какой протокол используется для распознавания соседа по сетевому интерфейсу? Какой пакет и команды есть в Linux для этого?
Для получения информации о соседнем устройстве используется протокол [LLDP](https://en.wikipedia.org/wiki/Link_Layer_Discovery_Protocol). Для получения информации о соседнем устройстве используется протокол [LLDP](https://en.wikipedia.org/wiki/Link_Layer_Discovery_Protocol).
Данный протокол в ОС Linux реализован в утилите `lldpd`. Данный протокол в ОС Linux реализован в утилите `lldpd`.
3. Какая технология используется для разделения L2 коммутатора на несколько виртуальных сетей? Какой пакет и команды есть в Linux для этого? Приведите пример конфига. ### Задача 3
> Какая технология используется для разделения L2 коммутатора на несколько виртуальных сетей? Какой пакет и команды есть в Linux для этого? Приведите пример конфига.
Технология имеет название [VLAN](https://en.wikipedia.org/wiki/Virtual_LAN). Технология имеет название [VLAN](https://en.wikipedia.org/wiki/Virtual_LAN).
В Linux для управления виртуальными сетями используется пакет `vlan`, а именно утилита `vconfig` (устарела, рекомендуется использовать утилиту `ip route`). В Linux для управления виртуальными сетями используется пакет `vlan`, а именно утилита `vconfig` (устарела, рекомендуется использовать утилиту `ip route`).
@@ -28,7 +34,9 @@ iface eth0.1400 inet static
vlan_raw_device eth0 vlan_raw_device eth0
``` ```
4. Какие типы агрегации интерфейсов есть в Linux? Какие опции есть для балансировки нагрузки? Приведите пример конфига. ### Задача 4
> Какие типы агрегации интерфейсов есть в Linux? Какие опции есть для балансировки нагрузки? Приведите пример конфига.
В конфигурации Linux предусмотрены следующие типы агрегации: В конфигурации Linux предусмотрены следующие типы агрегации:
* static/manual - ручная статическая настройка * static/manual - ручная статическая настройка
@@ -70,7 +78,9 @@ iface bond0 inet dhcp
bond-miimon 100 bond-miimon 100
``` ```
5. Сколько IP адресов в сети с маской `/29` ? Сколько `/29` подсетей можно получить из сети с маской `/24`. Приведите несколько примеров `/29` подсетей внутри сети `10.10.10.0/24`. ### Задача 5
> Сколько IP адресов в сети с маской `/29` ? Сколько `/29` подсетей можно получить из сети с маской `/24`. Приведите несколько примеров `/29` подсетей внутри сети `10.10.10.0/24`.
Всего в сети с маской `/29` находятся 8 IP адресов, 2 из которых зарезервированы. Всего в сети с маской `/29` находятся 8 IP адресов, 2 из которых зарезервированы.
@@ -83,13 +93,17 @@ iface bond0 inet dhcp
* `10.10.10.9/29` * `10.10.10.9/29`
* `10.10.10.19/29` * `10.10.10.19/29`
6. Задача: вас попросили организовать стык между 2-мя организациями. Диапазоны `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16` уже заняты. Из какой подсети допустимо взять частные IP адреса? Маску выберите из расчета максимум 40-50 хостов внутри подсети. ### Задача 6
> Задача: вас попросили организовать стык между 2-мя организациями. Диапазоны `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16` уже заняты. Из какой подсети допустимо взять частные IP адреса? Маску выберите из расчета максимум 40-50 хостов внутри подсети.
Так как самые ходовые сети, используемые для внутренних сетей, уже заняты, то остаётся только вариант с сетью `100.64.0.0/10`. Так как самые ходовые сети, используемые для внутренних сетей, уже заняты, то остаётся только вариант с сетью `100.64.0.0/10`.
Если рассчитывать на 40-50 хостов в рамках данной сети, то можно взять подсеть `100.64.0.0/26`, Если рассчитывать на 40-50 хостов в рамках данной сети, то можно взять подсеть `100.64.0.0/26`,
у которой будет диапазон доступных адресов `100.64.0.1 - 100.64.0.62`. у которой будет диапазон доступных адресов `100.64.0.1 - 100.64.0.62`.
7. Как проверить ARP таблицу в Linux, Windows? Как очистить ARP кеш полностью? Как из ARP таблицы удалить только один нужный IP? ### Задача 7
> Как проверить ARP таблицу в Linux, Windows? Как очистить ARP кеш полностью? Как из ARP таблицы удалить только один нужный IP?
Работа с ARP-таблицами: Работа с ARP-таблицами:
* linux * linux

View File

@@ -3,7 +3,9 @@
## Q/A ## Q/A
1. Подключитесь к публичному маршрутизатору в интернет. Найдите маршрут к вашему публичному IP ### Задача 1
> Подключитесь к публичному маршрутизатору в интернет. Найдите маршрут к вашему публичному IP
```shell ```shell
telnet route-views.routeviews.org telnet route-views.routeviews.org
@@ -58,7 +60,9 @@ Paths: (23 available, best #22, table default)
<...> <...>
``` ```
2. Создайте dummy0 интерфейс в Ubuntu. Добавьте несколько статических маршрутов. Проверьте таблицу маршрутизации. ### Задача 2
> Создайте dummy0 интерфейс в Ubuntu. Добавьте несколько статических маршрутов. Проверьте таблицу маршрутизации.
Создание dummy-интерфейса: Создание dummy-интерфейса:
@@ -82,7 +86,9 @@ default via 10.0.2.2 dev eth0 proto dhcp src 10.0.2.15 metric 100
10.2.2.3 via 10.0.2.16 dev eth0 10.2.2.3 via 10.0.2.16 dev eth0
``` ```
3. Проверьте открытые TCP порты в Ubuntu, какие протоколы и приложения используют эти порты? Приведите несколько примеров. ### Задача 3
> Проверьте открытые TCP порты в Ubuntu, какие протоколы и приложения используют эти порты? Приведите несколько примеров.
Для вывода открытых TCP-портов используем утилиту `ss` со следующими флагами: Для вывода открытых TCP-портов используем утилиту `ss` со следующими флагами:
* `-t` вывод только TCP-портов * `-t` вывод только TCP-портов
@@ -100,7 +106,9 @@ LISTEN 0 128
В данном случае открыты только порты для соединения по `ssh` (порты `:22`) и для [`systemd-resolved`](https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html) (порт `:53`). В данном случае открыты только порты для соединения по `ssh` (порты `:22`) и для [`systemd-resolved`](https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html) (порт `:53`).
4. Проверьте используемые UDP сокеты в Ubuntu, какие протоколы и приложения используют эти порты? ### Задача 4
> Проверьте используемые UDP сокеты в Ubuntu, какие протоколы и приложения используют эти порты?
По аналогии с предыдущим заданием используем утилиту `ss`, заменив флаг `-t` на `-u` По аналогии с предыдущим заданием используем утилиту `ss`, заменив флаг `-t` на `-u`
@@ -114,7 +122,9 @@ UNCONN 0 0
Порт `:53` предназначается для использования [`systemd-resolved`](https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html), Порт `:53` предназначается для использования [`systemd-resolved`](https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html),
а порт `68` используется для получения информации о динамической IP-адресации от DHCP-сервера. а порт `68` используется для получения информации о динамической IP-адресации от DHCP-сервера.
5. Используя diagrams.net, создайте L3 диаграмму вашей домашней сети или любой другой сети, с которой вы работали. ### Задача 5
> Используя diagrams.net, создайте L3 диаграмму вашей домашней сети или любой другой сети, с которой вы работали.
В качестве сети взята стандартная домашняя сеть с wi-fi-роутером. В качестве сети взята стандартная домашняя сеть с wi-fi-роутером.
@@ -122,7 +132,9 @@ UNCONN 0 0
![network.png](network.png) ![network.png](network.png)
6. Установите Nginx, настройте в режиме балансировщика TCP или UDP. ### Задача 6
> Установите Nginx, настройте в режиме балансировщика TCP или UDP.
Установка nginx: Установка nginx:

View File

@@ -3,19 +3,25 @@
## Q/A ## Q/A
1. Установите Bitwarden плагин для браузера. Зарегестрируйтесь и сохраните несколько паролей. ### Задача 1
> Установите Bitwarden плагин для браузера. Зарегестрируйтесь и сохраните несколько паролей.
![bitwarden](bitwarden.png) ![bitwarden](bitwarden.png)
2. Установите Google authenticator на мобильный телефон. Настройте вход в Bitwarden акаунт через Google authenticator OTP. ### Задача 2
> Установите Google authenticator на мобильный телефон. Настройте вход в Bitwarden акаунт через Google authenticator OTP.
Заместо `Google Authenticator` использовал приложение `Microsoft Authenticator`. Заместо `Google Authenticator` использовал приложение `Microsoft Authenticator`.
![birtwarden](bitwarden-2fa.png) ![birtwarden](bitwarden-2fa.png)
3. Установите apache2, сгенерируйте самоподписанный сертификат, настройте тестовый сайт для работы по HTTPS. ### Задача 3
Вместо `apache2` будем производить настройку уже установленного в виртуальную машину `nginx` (установка производилась в [дз 3.8:6](/src/homework/03-sysadmin/3.8sysadmin/3.8/readme.md#Q/A)). > Установите apache2, сгенерируйте самоподписанный сертификат, настройте тестовый сайт для работы по HTTPS.
Вместо `apache2` будем производить настройку уже установленного в виртуальную машину `nginx` (установка производилась в [дз 3.8](/src/homework/03-sysadmin/3.8/readme.md#Задача 6)).
Первым шагом необходимо сгенерировать сертификат: Первым шагом необходимо сгенерировать сертификат:
@@ -131,7 +137,9 @@ Commercial support is available at
</html> </html>
``` ```
4. Проверьте на TLS уязвимости произвольный сайт в интернете ### Задача 4
> Проверьте на TLS уязвимости произвольный сайт в интернете
```shell ```shell
git clone --depth 1 https://github.com/drwetter/testssl.sh.git git clone --depth 1 https://github.com/drwetter/testssl.sh.git
@@ -172,7 +180,9 @@ cd testssl
Done 2022-03-28 10:31:34 [ 27s] -->> 217.61.246.126:443 (metagamerscore.com) <<-- Done 2022-03-28 10:31:34 [ 27s] -->> 217.61.246.126:443 (metagamerscore.com) <<--
``` ```
5. Установите на Ubuntu ssh сервер, сгенерируйте новый приватный ключ. Скопируйте свой публичный ключ на другой сервер. Подключитесь к серверу по SSH-ключу. ### Задача 5
> Установите на Ubuntu ssh сервер, сгенерируйте новый приватный ключ. Скопируйте свой публичный ключ на другой сервер. Подключитесь к серверу по SSH-ключу.
На виртуальной машине уже установлен ssh-сервер и настроен один ssh-ключ для подключения к машине с хоста. На виртуальной машине уже установлен ssh-сервер и настроен один ssh-ключ для подключения к машине с хоста.
Таким образом сгенерируем новый ssh-ключ для пользователя `vagrant` и попробуем подключиться как пользователь `root` через ssh-сервер. Таким образом сгенерируем новый ssh-ключ для пользователя `vagrant` и попробуем подключиться как пользователь `root` через ssh-сервер.
@@ -217,7 +227,9 @@ Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.4.0-104-generic x86_64)
root@vagrant:~# root@vagrant:~#
``` ```
6. Переименуйте файлы ключей из задания 5. Настройте файл конфигурации SSH клиента, так чтобы вход на удаленный сервер осуществлялся по имени сервера. ### Задача 6
> Переименуйте файлы ключей из задания 5. Настройте файл конфигурации SSH клиента, так чтобы вход на удаленный сервер осуществлялся по имени сервера.
```shell ```shell
mv ~/.ssh/id_rsa ~/.ssh/localhost_key mv ~/.ssh/id_rsa ~/.ssh/localhost_key
@@ -241,7 +253,9 @@ Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.4.0-104-generic x86_64)
root@vagrant:~# root@vagrant:~#
``` ```
7. Соберите дамп трафика утилитой tcpdump в формате pcap, 100 пакетов. Откройте файл pcap в Wireshark. ### Задача 7
> Соберите дамп трафика утилитой tcpdump в формате pcap, 100 пакетов. Откройте файл pcap в Wireshark.
```shell ```shell
sudo tcpdump -c 100 -w dump.pcap sudo tcpdump -c 100 -w dump.pcap