Ad Widget

Collapse

Возможность мониторить срок действия SSL без Агента

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • JustCommonNick
    Junior Member
    • Feb 2024
    • 13

    #1

    Возможность мониторить срок действия SSL без Агента

    Доброго времени суток! Подскажите пожалуйста, можно ли мониторить сайт на предмет срока действия SSL без Агента и скриптов, просто настроив на Zabbix сервере?
  • DSV12
    Senior Member
    Zabbix Certified Specialist
    • Nov 2018
    • 156

    #2
    Originally posted by JustCommonNick
    Доброго времени суток! Подскажите пожалуйста, можно ли мониторить сайт на предмет срока действия SSL без Агента и скриптов, просто настроив на Zabbix сервере?
    Без проблем - за основу взята статья отсюда: https://serveradmin.ru/monitoring-sr...kata-v-zabbix/ Есть lld по списку (с формированием честного json). Мои мелкие доработки свелись к возможности мониторить сертификат по любому порту (а не только 443) - в список мониторируемых хостов вставляю host: port (без пробела). Проверка - два раза в сутки. Навешан триггер - предупреждение, если осталось < 14 дней.

    Comment

    • Alex_UUU
      Senior Member
      • Dec 2018
      • 541

      #3
      Просто с сервера - можно, но имхо, только опять скриптами "Внешняя проверка".

      Comment

      • Diesel315
        Senior Member
        • Jan 2020
        • 159

        #4
        А чем не устраивает скриптами. Там ничего сложно нет.
        Далее триггер и дашборд. У меня аскетично все в части дашборда, а триггер настроил на 30 дней, чтобы успеть заказать, оплатить и внедрить... Click image for larger version

Name:	Безымянный.png
Views:	171
Size:	25.2 KB
ID:	480098
        Attached Files

        Comment

        • Semiadmin
          Senior Member
          • Oct 2014
          • 1625

          #5
          А почему agent2 на сервере - не вариант? И никаких внешних скриптов.

          Comment

          • JustCommonNick
            Junior Member
            • Feb 2024
            • 13

            #6
            Не вариант, очень большой кластер серверов, Устанавливать Agent 2, писать скрипты для Agent 1, будет очень проблематично.

            Comment

            • Semiadmin
              Senior Member
              • Oct 2014
              • 1625

              #7
              Один agent2 на zabbix-сервере и шаблон с LLD rule

              Comment

              • DSV12
                Senior Member
                Zabbix Certified Specialist
                • Nov 2018
                • 156

                #8

                Originally posted by JustCommonNick
                Не вариант, очень большой кластер серверов, Устанавливать Agent 2, писать скрипты для Agent 1, будет очень проблематично.
                Не понял: в чём проблема со скриптами? Их же не надо на каждый сервер отдельно внедрять. Один раз, на zabbix-сервере инициируются два пользовательских скрипта - обнаружения/проверки. Добавляете (один раз) имя:порт в текстовый файлик для каждого хоста, который собираетесь мониторить на предмет сертификата - всё, собственно.
                Вот реальный пример:
                Code:
                ===
                /etc/zabbix/scripts/disc_ssl_https.sh:
                #!/bin/bash
                
                JSON=$(for i in `cat /etc/zabbix/scripts/ssl_https.txt`; do printf "{\"{#DOMAIN_HTTPS}\":\"$i\"},"; done | sed 's/^\(.*\).$/\1/')
                printf "{\"data\":["
                printf "$JSON"
                printf "]}"
                ===
                /etc/zabbix/scripts/check_ssl_https.sh
                #!/bin/bash
                
                SERVER=$1
                SERVERNAME=$(cut -d':' -f1 <<<"$SERVER")
                TIMESTAMP=`echo | date`
                EXPIRE_DATE=`echo | openssl s_client -connect $SERVER -servername $SERVERNAME -tlsextdebug 2>/dev/null | openssl x509 -noout -dates 2>/dev/null | grep notAfter | cut -d'=' -f2`
                EXPIRE_SECS=`date -d "${EXPIRE_DATE}" +%s`
                EXPIRE_TIME=$(( ${EXPIRE_SECS} - `date +%s` ))
                
                if [ $EXPIRE_TIME -lt 0 ]; then
                  RETVAL=0
                else
                  RETVAL=$(( ${EXPIRE_TIME} / 24 / 3600 ))
                fi
                
                echo ${RETVAL}
                ===
                /etc/zabbix/scripts/ssl_https.txt
                
                host1.xxx.zzz:443
                host2.xxx.zzz:993
                host3.xxx.zzz:465
                ...
                ===
                /etc/zabbix/zabbix_agentd.d/userparameter_ssl.conf
                UserParameter=ssl_https.discovery[*],/etc/zabbix/scripts/disc_ssl_https.sh
                UserParameter=ssl_https.expire[*],/etc/zabbix/scripts/check_ssl_https.sh $1
                ===
                Создаём правило обнаружения (один раз), в нём прототип ЭД с именем "Certificate $1 expire", с ключом: ssl_https.expire[{#DOMAIN_HTTPS}], прототип триггера с именем "Certificate {#DOMAIN_HTTPS} expire less then 14 days", с выражением "{SSL Sert Expiration:ssl_https.expire[{#DOMAIN_HTTPS}].last()}<14"


                Вроде ничего не забыл. В /etc/zabbix/scripts/ssl_https.txt заносим имена хостов, на которых хотим проверять сертификаты. Через max интервал обнаружения создадутся соотв. ЭД. Для которых раз в 12 часов запускается /etc/zabbix/scripts/check_ssl_https.sh. Понятные особенности такой реализации: если в момент проверки хост был недоступен, вернётся 0 => сработает триггер. Который успокоится во время следующей проверки (через 12 часов), если сертификат действительно не просрочен (> 14 дней до expire).

                У меня эта схема работает уже много лет, проверка делается по нескольким десяткам SSL/TLS-хостов.

                Comment

                • Alex_UUU
                  Senior Member
                  • Dec 2018
                  • 541

                  #9
                  Originally posted by DSV12
                  Не понял: в чём проблема со скриптами? Их же не надо на каждый сервер отдельно внедрять. Один раз, на zabbix-сервере инициируются два пользовательских скрипта - обнаружения/проверки. Добавляете (один раз) имя:порт в текстовый файлик для каждого хоста, который собираетесь мониторить на предмет сертификата - всё, собственно.
                  Не, проблем никаких нет, список серверов, у которых надо мониторить сертификат можно даже не в файле хранить, а в макросе, или в предобработке, или дискаверинг типа "Скрипт".
                  Такое решение - отличное, если от сервера есть доступы по всем SSL портам к удаленным хостам. А вот это, зачастую бывает очень проблематично. Поэтому можно рассматривать разные варианты.
                  Несомненный плюс мониторинга с сервера - то, что проверяется не просто сертификат, а еще и его доступность, доступность канала, маршрутизации и т.д.

                  Comment

                  • manetied
                    Junior Member
                    • Mar 2024
                    • 2

                    #10
                    А почему agent2 на сервере - не вариант?

                    Comment

                    • manetied
                      Junior Member
                      • Mar 2024
                      • 2

                      #11
                      И никаких внешних скриптов. krnl.fun
                      hdstreamz apk

                      Comment

                      • Alex_UUU
                        Senior Member
                        • Dec 2018
                        • 541

                        #12
                        Originally posted by manetied
                        И никаких внешних скриптов. krnl.fun
                        hdstreamz apk
                        Первоначальный вопрос был "без агента". :-)

                        Comment

                        Working...