ssh - уведомления по email
Этот пост преимущественно для параноиков вроде меня. Ну или для людей которые очень сильно беспокоятся за безопасность своего сервера =]
Я конечно уже давно настроил авторизацию по ключам, настроил blacklist и сделал все остальные действия которые уже не раз описывались во многих блогах и не только. И все чтобы обезопасить свой сервер. Был я спокоен до поры до времени, пока не захотел еще посмотреть документацию. Обнаружил я там еще одну интересную возможность. Если на сервере, в домашней директории, в поддиректории .ssh создать файл под названием rc, то все инструкции прописанные в нем, будут выполняться как только вы зайдете по ssh! Далее уже можно придумывать как это можно применить. Я решил о каждом заходе по ssh уведомлять себя на email. Для этого нам понадобится postfix (на серверах у меня везде дебиан, поэтому sudo aptitude install postfix) и ваш любимый текстовой редактор :) Postfix скорее привычка чем надобность. Можно заменить любым демоном умеющим отправлять почту.
И так, открываем или создаем на сервере файл ~/.ssh/rc
и пишем примерно следующее:
echo $(date) $SSH_CONNECTION $USER $SSH_TTY | mail -s "ssh login" admin@google.com
Конечно уведомлять администрацию google об этом не стоит, поэтому следует заменить admin@google.com на свой email адрес, или адрес нехорошего человека, и раз 10 залогиниться\разлогиниться на сервер(шутка конечно же) :) Еще можно дополнительно дописать запись в файл каждого посещения, и выводит его при очередном подключении. Я собственно, использую оба метода.
Ну и конечно же можно прописать глобально для всех пользователей в файле /etc/ssh/ssh_config
, но мне это не нужно. Как правило на сервере у меня один пользователь остальные (кроме root. Ему вообще запрещен вход удаленно) - /bin/false
.
Кстати если на сервере установлен archlinux(скажу честно - вы извращенец), то postfix может выдавать ошибку
localhost postfix/postdrop [13652]: warning: unable to look up public/pickup: No such file or directory
То исправить все крайне просто:
sudo mkfifo /var/spool/postfix/public/pickup
sudo /etc/rc.d/postfix restart
Лично я использую еще персональный органайзер osmo. Т.е. когда нужно что-то сделать на сервере, например поднять сервер samba, то я, добавляю эту задачу в osmo, а затем, выполняю на сервере. Таким образом у меня в органайзере подробно описано что мне надо было сделать, а на сервере, когда я последний раз заходил. Проще говоря, сопоставив все это, можно легко понять что где сломал и было ли проникновение. Ну и конечно же, если вы не один администрируете сервер (странно это правда), то сразу легко выяснить кто виноват, что сделал, и как теперь чинить :)
Я думаю вы найдете еще не одно удобное применения этой возможности =]