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

 

History

37 Commits
 
 
 
 
 
 
 
 

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