Очередная инкарнация MassControl
На сей раз добавились механизм наблюдения за маршрутизаторами компании S-Terra CSP, позволяющий оперировать информацией о текущих ISAKMP/IPSec соединениях.
Технологически было произведен отказ от централизованного процесса контроля путем использования gproc. Дополнительно был дописан механизм выполнения через каналы SSH, раньше это было реализовано через единственный канал с запущенной оболочкой.
Но вообще с архитектурной точки зрения развиваться на что-то в дальнейшем обернется проблемами: и интерфейсными (текущий не рассчитан на большое число хостов и вообще откровенно слаб), так и архитектурными поскольку потребуется хранить большое количество данных, что автоматически несет за собой более серьезную БД, нежели Mnesia.
А хотелось бы многого:
- SNMP со складыванием данных в RRD и генерацией графиков
- Syslog-сервер для коллекционирования журналов с серверов
- IPMI-статистику для определения состояния оборудования
- SMART для контроля над состоянием дисков
Ну и, конечно же, сервисные фишки вроде доставания версий конфигурации из Git, откат конфигурации, мониторинг отдельных сервисов, оповещение о критических ситуациях, географические, топологические и монтажные карты сети и тд. и т.п.
К сожалению, в одиночку это неподъемно даже при 100% занятости этой задачей.
И, чтобы два раза не вставать: хозяйке на заметку — если у вас есть устройства с флешкой, выставленные в интернет, и (внезапно) на этой флешке кончается место из-за того, что создатели забыли выключить лог неудачных соединений по SSH, а c00l hatskers в сети много — удалите файл, а на его место положите ссылку на /dev/null, оно так надежнее.
MassControl — развлекаемся с Эрлангом
По основной работе мне приходится взаимодействовать с определенным количеством серверов и сетевого оборудования с целью их настройки и изменения конфигурации. Большинство конфигураций представляют собой текстовый файл, изменяемый оператором. Вполне очевидно, что в этом случае хранить конфигурации лучше всего в системе контроля версий (например, Git), а вносить изменения проще либо в SSH-консоли (что достаточно трудоемко), либо при помощи заранее заготовленных шаблонов, в которые необходимо подставить нужные параметры.
Чтобы немного упростить процедуру получения файлов конфигураций и внесения (что очень актуально, допустим для Cisco-like конфигураторов) я написал простое приложение на Erlang, которое позволяет:
- послать по SSH команду через web-интерфейс и послать результаты исполнения обратно;
- сохранить результаты выполнения в текстовый файл и добавить его в git.
Защита SSH-сервера при помощи sshguard
Как известно, многим людям не дает покоя слава Кевина Митника и прочих не столь раскрученных личностей. Поэтому когда в сеть выставляется сервер с SSH-демоном, то вполне вероятно, что вскоре на него начнется атака по подбору паролей. Что, в принципе, не очень приятно.
Решений тут много, подкину еще одно — при помощи sshguard. Рецепт прост:
1 | apt-get install sshguard |
далее прописываем строки в /etc/rc.local и повторяем их в консоли
1 2 3 | /sbin/iptables -N sshguard /sbin/iptables -A INPUT -p tcp --dport 22 -j sshguard tail -n0 -F /var/log/auth.log | /usr/sbin/sshguard & |
Первые две команды создают одноименную цепочку и перенаправляют туда все входящие на 22-й порт, последняя — транслирует логи к программе, которая смотрит частоту вхождения и успешность/неуспешность попытки и добавляет в цепочку правила по блокировке юных взломщиков.




