Разработать сервис, который выполняет мониторинг подключённых к системе пользователей по ssh каждые 30 секунд. При подключении внешнего пользователя по ssh, пользователю должно выводиться на экран уведомление (механизм notify) с именем пользователя, который подключился к системе удалённо.
Студенты группы Б17-505
- Гришин Максим (MaxG175)
- Иванова Нина (cheraten)
- Николаева Елизавета (elizanikol)
- Худоярова Анастасия (Neprincessa)
- Шайбель Анастасия (Lilicat1359)
- Сгенерировать шаблон модуля политики 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
- Запустить скрипт ssh_monitoring.sh:
sudo ./ssh_monitoring.sh
Будет создан модуль политики SELinux - файл ssh_monitoring.pp
-
Добавить политику в список системных модулей:
semodule -i ssh_monitoring.pp
-
Изменить контекст безопасности (тип) сервиса :
sudo chcon -t ssh_monitoring_exec_t /usr/bin/ssh-monitoring
Посмотреть изменившийся контекст можно командой:
ps -eZ | grep ssh-monitoring
- Проверить работу сервиса:
Подключиться к ssh от имени другого пользователя cheraten1 и переключиться обратно на cheraten:
Посмотреть запись в файле /var/log/messages
:
При появлении сообщений в файле /var/log/messages
о необходимости создания дополнительных модулей политики, выполнить предложенные команды.
cd ~
rpmdev-setuptree
cd ~/rpmbuild/SOURCES
mkdir ssh-monitoring-lastver
cp ~/ssh_system_service/rpm_and_repo/rpmbuild/SOURCES/ssh-monitoring-lastver/* ./ssh-monitoring-lastver
tar -cvzf ssh-monitoring-lastver.tar.gz ssh-monitoring-lastver
cd ../SPECS
~/ssh_system_service/rpm_and_repo/rpmbuild/SPECS/ssh-monitoring-lastver.spec ./
rpmbuild --ba ssh-monitoring-lastver.spec
sudo rpm -addsign ~/rpmbuild/RPMS/noarch/ssh-monitoring-lastver-1.el7.noarch.rpm
sudo mkdir -p /var/www/html/ssh-monitoring
sudo cp ~/rpmbuild/RPMS/noarch/ssh-monitoring-lastver-1.el7.noarch.rpm /var/www/html/ssh-monitoring
sudo createrepo -v /var/www/html/ssh-monitoring
sudo mv ~/ssh_system_service/rpm_and_repo/rpmbuild/RPM-GPG-KEY-cheraten3 /var/www/html/gpg-key
sudo cp ~/ssh_system_service/rpm_and_repo/ssh-monitoring.repo /etc/yum.repos.d
gpg --gen-key
-
gpg2 --export -a 'cheraten3' > ~/rpmbuild/RPM-GPG-KEY-cheraten3
-
vi ~/.rpmmacros
-
gpg --export --armor 7A36FC6D > /tmp/gpg-key
-
cp /tmp/gpg-key /var/www/html/
sudo yum install ssh-monitoring
sudo systemctl start ssh-monitoring
- Дерево процессов
pstree
ps -eZ | grep ssh-monitoring
Сервис работает в собственном домене.
sudo systemctl restart ssh-monitoring
journalctl -f -u ssh-monitoring
Собственный журнал событий. Ведутся записи о старте сервиса, его остановке, о выполнении основной функции.
Запуск сервиса (логгирование запуска в /var/log/messages
)
- Подключение пользователя cheraten1 в систему по ssh
ssh cheraten1@localhost
Запись логов работы сервиса при подключении в /var/log/messages
и запись о выполнении функции в журнале (см.пункт выше)
Вывод уведомления при подключении пользователя cheraten1 на стороне сервера и клиента
- Обработка сигнала USR1:
sudo kill -SIGUSR1 PID
- Демонстрация man страницы