Skip to content

Проект по курсу "Безопасность операционных систем"

Notifications You must be signed in to change notification settings

Neprincessa/ssh_system_service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

a732c1c · Jun 11, 2020

History

37 Commits
Jun 3, 2020
Jun 4, 2020
Jun 11, 2020
Jun 4, 2020

Repository files navigation

Сервис мониторинга сеансов пользователей

Разработать сервис, который выполняет мониторинг подключённых к системе пользователей по ssh каждые 30 секунд. При подключении внешнего пользователя по ssh, пользователю должно выводиться на экран уведомление (механизм notify) с именем пользователя, который подключился к системе удалённо.

Выполнили:

Студенты группы Б17-505

Демонстрация:

Создание политики SELinux

  1. Сгенерировать шаблон модуля политики SELinux: sepolicy generate --init ssh_monitoring

Будут созданы 5 файлов:

  • Type Enforcing File ssh_monitoring.te;

  • Interface File ssh_monitoring.if;

  • File Context ssh_monitoring.fc;

  • RPM Spec File ssh_monitoring_selinux.spec;

  • Shell File ssh_monitoring.sh

  1. Запустить скрипт ssh_monitoring.sh: sudo ./ssh_monitoring.sh

Будет создан модуль политики SELinux - файл ssh_monitoring.pp

  1. Добавить политику в список системных модулей: semodule -i ssh_monitoring.pp

  2. Изменить контекст безопасности (тип) сервиса :

sudo chcon -t ssh_monitoring_exec_t /usr/bin/ssh-monitoring

Посмотреть изменившийся контекст можно командой:

ps -eZ | grep ssh-monitoring

  1. Проверить работу сервиса:

Подключиться к ssh от имени другого пользователя cheraten1 и переключиться обратно на cheraten:

Посмотреть запись в файле /var/log/messages:

При появлении сообщений в файле /var/log/messages о необходимости создания дополнительных модулей политики, выполнить предложенные команды.

Сборка RPM пакета и создание репозитория

  1. cd ~
  2. rpmdev-setuptree
  3. cd ~/rpmbuild/SOURCES
  4. mkdir ssh-monitoring-lastver
  5. cp ~/ssh_system_service/rpm_and_repo/rpmbuild/SOURCES/ssh-monitoring-lastver/* ./ssh-monitoring-lastver
  6. tar -cvzf ssh-monitoring-lastver.tar.gz ssh-monitoring-lastver
  7. cd ../SPECS
  8. ~/ssh_system_service/rpm_and_repo/rpmbuild/SPECS/ssh-monitoring-lastver.spec ./
  9. rpmbuild --ba ssh-monitoring-lastver.spec
  10. sudo rpm -addsign ~/rpmbuild/RPMS/noarch/ssh-monitoring-lastver-1.el7.noarch.rpm
  11. sudo mkdir -p /var/www/html/ssh-monitoring
  12. sudo cp ~/rpmbuild/RPMS/noarch/ssh-monitoring-lastver-1.el7.noarch.rpm /var/www/html/ssh-monitoring
  13. sudo createrepo -v /var/www/html/ssh-monitoring
  14. sudo mv ~/ssh_system_service/rpm_and_repo/rpmbuild/RPM-GPG-KEY-cheraten3 /var/www/html/gpg-key
  15. sudo cp ~/ssh_system_service/rpm_and_repo/ssh-monitoring.repo /etc/yum.repos.d

Cоздание gpg ключа

  1. gpg --gen-key

  1. gpg2 --export -a 'cheraten3' > ~/rpmbuild/RPM-GPG-KEY-cheraten3

  2. vi ~/.rpmmacros

  1. gpg --export --armor 7A36FC6D > /tmp/gpg-key

  2. cp /tmp/gpg-key /var/www/html/

Демонстрация работы сервиса

  1. sudo yum install ssh-monitoring
  2. sudo systemctl start ssh-monitoring
  3. Дерево процессов

pstree

  1. ps -eZ | grep ssh-monitoring

Сервис работает в собственном домене.

  1. sudo systemctl restart ssh-monitoring

  1. journalctl -f -u ssh-monitoring

Собственный журнал событий. Ведутся записи о старте сервиса, его остановке, о выполнении основной функции.

Запуск сервиса (логгирование запуска в /var/log/messages)

  1. Подключение пользователя cheraten1 в систему по ssh

ssh cheraten1@localhost

Запись логов работы сервиса при подключении в /var/log/messages и запись о выполнении функции в журнале (см.пункт выше)

Вывод уведомления при подключении пользователя cheraten1 на стороне сервера и клиента

  1. Обработка сигнала USR1:

sudo kill -SIGUSR1 PID

  1. Демонстрация man страницы

About

Проект по курсу "Безопасность операционных систем"

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published