Оповещение при подключении к SSH —
Как известно, при установке соединения по SSH к системе никаких оповещений не появится, и Вы никак об этом не узнаете. Этим может воспользоваться злоумышленник — пока Вы сейчас спокойно читаете хабр, возможно с Вашего компьютера уже передаются конфиденциальные данные. Но это можно исправить.
При установке соединения будет выполнен файл /etc/ssh/sshrc, причём помешать этому нельзя. Поэтому мы создадим скрипт и поместим команду для его запуска в этот файл:
/usr/local/alert/start.sh
Скрипт будет выводить сообщение с важной информацией через notify-osd и включать привлекающую внимание сирену:
#!/bin/bash
export DISPLAY=:0
notify-send "Security Warning" "SSH Connection Established with \"$USER\" $(echo $SSH_CONNECTION | sed 's/\(.*\) \(.*\) \(.*\) \(.*\)/from \1:\2 to \3:\4/')" -u critical -i /usr/local/alert/icon.png
play /usr/local/alert/sound.wav > /dev/null 2>&1
Первой строкой мы устанавливаем текущий дисплей для правильной работы notify-osd, а затем выводим сообщение с иконкой и пометкой критической важности, используя системные переменные $USER (текущий пользователь) и $SSH_CONNECTION (данные о соединении, которые мы преобразуем с помощью регулярных выражений чрезвычайно удобной утилитой sed). После этого мы проигрываем привлекающую внимание сирену*.
Сюда же можно добавить и отправку сообщения на e-mail (sendmail) или jabber (sendxmpp).
Для простой установки Вы можете просто распаковать содержимое этого архива в корень (эта операция сотрёт предыдущее содержимое SSHRC!).
Не забудьте также доставить нужные библиотеки, для Ubuntu это делается так:
sudo apt-get install libnotify-bin sox
Так же Вы можете поставить такие оповещения и просто на подключение к порту или запросу к HTTP-серверу.
Вот так вот — просто, а удобно!
* Распространение иконки свободно, а вот звук взят из игры Red Alert и имеет лицензию только для некоммерческого использования.
P. S.: Я модифицировал скрипт /usr/local/alert/start.sh:
#!/bin/sh
export DISPLAY=:0
notify-send "Security Warning" "Occured Login as user \"$USER\" $(echo $SSH_CONNECTION $SSH_TTY | sed 's/\(.*\) \(.*\) \(.*\) \(.*\) \(.*\)/using SSH connection at \5 from \1:\2 to \3:\4/')" -u critical -i /usr/local/alert/icon.png
aplay -q /usr/local/alert/sound.wav
И добавил в /root/.bashrc код:
unset SSH_CONNECTION
/usr/local/alert/start.sh
Теперь скрипт совершенно универсальный — он может ещё и сигнализировать при логине в root и запуске оболочки. При этом упоминания об SSH уберутся благодаря логике работы sed.
P. P. S.: Также заметьте, что если есть ~/.ssh/rc, то выполнится он, а система работать не будет. Более того, для правильного выполнения эти скрипты ничего не должны выводить в stdout (на экран).
Categorised as: Linux
Comments are disabled on this post