Симуляция доступности сервиса и базовый мониторинг
На этом этапе вы изучите принцип доступности (Availability), третий компонент триады безопасности CIA. Доступность гарантирует, что системы и сервисы работают и доступны, когда это необходимо. Вы симулируете простой веб-сервис, научитесь проверять, запущен ли он, симулируете сбой сервиса, а затем напишете простой скрипт мониторинга для автоматизации проверки доступности.
Сначала убедитесь, что вы находитесь в директории ~/project.
Мы будем использовать встроенный веб-сервер Python для симуляции работающего сервиса. Эта команда запустит веб-сервер на порту 8000 и будет обслуживать файлы из текущей директории. Символ & в конце запускает процесс в фоновом режиме, позволяя вам продолжать использовать терминал.
python3 -m http.server 8000 &
Вы увидите сообщение, указывающее на запуск процесса, вместе с его идентификатором процесса (PID).
[1] 12345
Нажмите Enter для продолжения.
Ваш сервис теперь запущен. Базовый способ проверить, запущен ли сервис, — это увидеть, существует ли его процесс. Мы можем использовать команду pgrep для поиска PID процесса по имени.
pgrep -f http.server
Это должно вернуть PID серверного процесса, подтверждая, что он запущен в памяти.
12345
Однако запущенный процесс не гарантирует, что сервис работает правильно. Лучшая проверка — это попытаться подключиться к нему, как это сделал бы пользователь. Мы будем использовать команду curl для отправки запроса на наш локальный сервер.
curl http://localhost:8000/confidential_data.txt
Поскольку сервис доступен, он ответит содержимым файла, который вы создали на предыдущих шагах.
Top Secret Details
This is an unauthorized modification.
Теперь давайте симулируем сбой сервиса. Мы будем использовать команду kill для завершения процесса веб-сервера. Вам понадобится PID, который вы нашли ранее.
## Замените 12345 на фактический PID из команды pgrep
kill 12345
После выполнения команды kill вы можете увидеть сообщение "Terminated" для фонового задания. Теперь давайте снова попробуем получить доступ к сервису с помощью curl.
curl http://localhost:8000/confidential_data.txt
На этот раз команда завершится неудачей, потому что сервис больше не запущен и не может принять соединение. Это демонстрирует отсутствие доступности.
curl: (7) Failed to connect to localhost port 8000 after 0 ms: Connection refused
Наконец, давайте создадим простой скрипт мониторинга для автоматизации этой проверки. Создайте новый файл с именем monitor.sh с помощью nano.
nano monitor.sh
Введите следующий скрипт в редактор. Этот скрипт использует curl для проверки сервиса. Если он получает успешный ответ (200 OK), он сообщает, что сервис "UP" (работает); в противном случае он сообщает "DOWN" (не работает).
#!/bin/bash
## Проверяем, отвечает ли сервис на localhost:8000
if curl -s --head http://localhost:8000 | grep "200 OK" > /dev/null; then
echo "Service Status: UP"
else
echo "Service Status: DOWN"
fi
Сохраните файл и выйдите из nano, нажав Ctrl+X, затем Y и Enter.
Сделайте скрипт исполняемым с помощью chmod:
chmod +x monitor.sh
Теперь запустите ваш скрипт мониторинга. Поскольку сервис остановлен, он должен сообщить "DOWN".
./monitor.sh
Service Status: DOWN
Теперь вы узнали, как запустить сервис, проверить его доступность, симулировать сбой и создать базовый скрипт для его мониторинга.