Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчеты / 1.3 Lab - Linux Servers.docx
Скачиваний:
26
Добавлен:
28.06.2021
Размер:
2.1 Mб
Скачать

Лабораторная работа. Серверы Linux

  1. Введение

В этой лабораторной работе вы будете использовать командную строку Linux для определения серверов, работающих на данном компьютере.

  1. Рекомендуемое оборудование

  • Виртуальная машина рабочей станции CyberOps

  1. Серверы

Серверы, в сущности, являются программами, написанными для выдачи определенной информации по запросам. Клиенты, которые также являются программами, обращаются к серверу, размещают запрос и ожидают ответа сервера. Существует множество технологий клиент-серверного взаимодействия, наиболее распространенные из них ― IP-сети. Эта лабораторная работа посвящена клиентам и серверам на основе сетей IP.

    1. Доступ к командной строке

      1. Выполните вход на ВМ CyberOps Workstation от имени пользователя analyst с паролем cyberops. В этой лабораторной работе в качестве примера учетной записи используется учетная запись analyst.

      2. Для получения доступа к командной строке щелкните значок терминала на док-панели в нижней части экрана виртуальной машины. Откроется эмулятор терминала.

    1. Отобразите запущенные в настоящее время службы.

На компьютере может выполняться множество различных программ, особенно в операционной системе Linux. Многие программы работают в фоновом режиме, поэтому пользователь может не сразу определить все программы, которые работают на данном компьютере. В Linux запущенные программы также называются процессами.

Примечание. Выходные данные команды ps будут зависеть от состояния ВМ CyberOps Workstation.

      1. Команда ps отображает все программы, работающие в фоновом режиме.

<некоторые выходные данные пропущены>

Почему было необходимо запускать команду ps от имени пользователя root (предваряя ее командой sudo)?

Этот параметр заставляет показать все процессы, которые принадлежат всем пользователям независимо от терминала, а также процессы от имени администратора

      1. В Linux программы также могут вызывать другие программы. Команда ps также может использоваться для отображения такой иерархии процессов. Параметр –ejH отображает дерево запущенных процессов.

Примечание. Сведения о процессе для службы nginx выделяются цветом. У вас значения PID будут другими.

Примечание. Если служба nginx не запущена, введите команду sudo /usr/sbin/nginx в приглашении командной строки, чтобы запустить ее.

<некоторые выходные данные пропущены>

Как иерархия процессов представляется командой ps?

Иерархия представлена древовидно, например с ключом - f эта команда выводит как сам PID процесса, так и ветвь PPID

      1. Как уже говорилось, серверы — это в сущности программы, которые часто запускаются самой системой во время загрузки. Задача, выполняемая сервером, называется службой. Таким образом, веб-сервер предоставляет веб-сервисы.

Команда netstat — отличное средство для определения сетевых серверов, запущенных на компьютере. Преимущество команды netstat состоит в ее способности отображать сетевые подключения.

Примечание. Вывод будет зависеть от числа сетевых подключений, открытых виртуальной машиной.

В окне терминала введите netstat.

Как показано выше, команда netstat возвращает большой объем информации, если вызвать ее без параметров. У команды netstat есть различные параметры для фильтрации и форматирования выходных данных, позволяющие сделать результат более информативным.

      1. Команда netstat с параметром –tunap позволяет настроить вывод команды netstat. Обратите внимание, что команда netstat позволяет объединить несколько параметров в один с помощью знака «-».

Информация о сервере nginx выделена цветом.

Каково назначение параметров –t, -u, –n, –a и –p в команде netstat? (Воспользуйтесь командой man netstat при ответе на этот вопрос.)

- a показывает состояние всех сокетов;

-n показывает сетевые адреса в виде цифр;

-р идентифицирует название процесса;

-t отражает активные подключения в режиме переноса нагрузки с процессора на сетевой адаптер при передаче данных;

-u просматривает UDP соединения.

Важен ли порядок указания параметров в команде netstat?

Нет

Клиенты подключаются к порту и по соответствующему протоколу запрашивают информацию с сервера. Выходные данные netstat также содержат число служб, прослушивающих определенные порты. Интересные столбцы:

  1. В первом столбце показаны используемые протоколы уровня 4 (UDP или TCP в данном случае).

  2. Третий столбец представлен в формате <адрес:порт> и показывает локальный IP-адрес и порт, по которым доступен определенный сервер. IP-адрес 0.0.0.0 означает, что сервер прослушивает на всех IP-адресах, настроенных для данного компьютера.

  3. Четвертый столбец представлен в том же формате сокета <адрес:порт> и отображает адрес и порт устройства на удаленном терминале. 0.0.0.0:* означает, что никакое удаленное устройство не использует данное подключение.

  4. Пятый столбец отображает состояние подключения.

  5. В шестом столбце отображается идентификатор процесса (PID), отвечающего за подключение. Также отображает короткое имя, связанное с процессом.

Исходя из вывода команды netstat в строке (d), каковы протокол уровня 4, состояние подключения и PID процесса, запущенного на порту 80?

____________________________________________________________________________________

Назначение номеров портов — это необязательное соглашение, но какая служба, вероятнее всего, запущена на TCP-порту 80?

TCP, LISTEN, 395

      1. Иногда бывает полезно сверить информацию от команд netstat и ps. По выводу в строке (d) нам известно, что процесс с PID 395 привязан к TCP-порту 80. В этом примере используется порт 395. Используйте ps и grep для вывода строк команды ps, которые содержат PID 395.

В вышеприведенном примере выходные данные команды ps передаются конвейером команде grep, которая оставляет только те строки, которые содержат число 395. Результат содержит три строки с переносом текста.

В первой строке показан процесс, принадлежащий пользователю root (третий столбец), запущенный другим процессом с PID 1 (пятый столбец) 27 февраля (двенадцатый столбец) с командой /usr/bin/nginx -g pid /run/nginx.pid; error_log stderr;

Во второй строке показан процесс с PID 396, принадлежащий пользователю http, который был запущен процессом PID 395 27 февраля.

Третья строка показывает, что владельцем процесса c PID 3789 является пользователь analyst, а запущен он процессом с PID 1872 с командной строкой grep 395.

Процесс с PID 395 ― служба nginx. Какой вывод можно сделать из этих выходных данных?

На основе последнего столбца строки 1, на выходе отображается командную строку nginx

Что такое nginx? В чем ее функция? (Поищите в google ответы на вопросы о nginx.)

nginx – это веб-сервер, который представляет собой почтовый прокси-сервер, TCP / UDP прокси-сервер общего назначения

Во второй строке показано, что процесс 396 принадлежит пользователю с именем http, а номер его родительского процесса — 395. Что он означает? Это типичная ситуация?

Это означает, что nginx запустил процесс 396 под http именем. Это нормально, поскольку nginx работает для каждого клиента, который подключается к порту 80 TCP

Почему в последней строке отображается grep 395?

Поскольку grep 395 использовался для фильтрации вывода ps, когда вывод был сделан, grep 395 все еще работал, следовательно, он появился в списке

  1. Использование команды Telnet для проверки служб TCP

Telnet — это простое приложение для удаленного доступа к оболочке. Telnet считается небезопасным, поскольку не обеспечивает шифрование. Администраторы, использующие протокол Telnet для удаленного управления сетевыми устройствами и серверами, подвергают риску компрометации свои учетные данные для входа на сервер, так как протокол Telnet передает данные сеанса в виде открытого текста. Хотя протокол Telnet не рекомендуется для удаленного доступа к оболочке, он может оказаться очень полезным для быстрой проверки или сбора информации о службах TCP.

Протокол Telnet работает через порт 23 с использованием протокола TCP по умолчанию. Но клиент telnet позволяет указать другой порт. Изменив порт и подключившись к серверу, клиент telnet позволяет сетевому аналитику быстро определить параметры сервера, напрямую обменявшись с ним данными.

Примечание. Настоятельно рекомендуется в качестве удаленной оболочки пользоваться программой ssh вместо telnet.

      1. В первой части лабораторной работы мы запускали nginx и назначали ему TCP-порт 80. Хотя быстрый поиск в Google показал, что nginx является простым веб-сервером, как аналитику убедиться, что это действительно так? Что делать, если хакер просто изменил имя вредоносного ПО на nginx, чтобы сделать ее похожей на популярный веб-сервер? С помощью telnet подключитесь к локальному узлу через TCP-порт 80.

      2. Нажмите несколько букв на клавиатуре. Все клавиши должны работать. После нажатия нескольких клавиш нажмите клавишу «ВВОД». Ниже приведены полные выходные данные, включая подключение по протоколу Telnet и случайные нажатия клавиш (в данном случае qwe).

Благодаря протоколу Telnet клиентом Telnet было установлено незашифрованное TCP-подключение напрямую к серверу nginx, который прослушивает TCP-порт 80 по адресу 127.0.0.1. Данное подключение позволяет отправлять данные непосредственно на сервер. Поскольку nginx является веб-сервером, он не понял переданную ему последовательность случайных букв и вернул ошибку в формате веб-страницы.

Почему ошибка отправляется в виде веб-страницы?

Потому, что nginx и есть веб-сервер

Поскольку сервер выдал ошибку и закрыл подключение, нам не очень много удалось узнать. Мы узнали, что:

        1. Nginx с PID 395 — это на самом деле веб-сервер.

        2. Версия nginx — 1.10.2.

        3. Сетевой стек нашей ВМ CyberOps Workstation полностью работоспособен вплоть до уровня 7.

Не все службы одинаковы. Некоторые службы предназначены для получения неформатированных данных и не прерывают подключение, если ввести с клавиатуры бессмысленные данные. Ниже представлен пример такой службы.

      1. Выберем в приведенном выше выводе команды netstat процесс, подключенный к порту 22. Подключитесь к ней с помощью команды Telnet.

Порт 22 TCP назначен службе SSH. SSH позволяет администратору безопасно подключаться к удаленному компьютеру.

Ниже представлены выходные данные.

Подключитесь через Telnet к порту 68. Что происходит? Дайте пояснение.

В соединении отказано, это объясняется тем, что данный порт не входит в конфигурации порта прослушивания как 68, в файле nginx он имеет значение 8