testssl.sh

testssl.sh — это скрипт, который позволяет протестировать SSL сервис и вывести подробную статистику по нему. Это как SSLlabs, только имеется возможность проведения проверки разных сервисов. Кроме того, для скрипта доступен простой веб-интерфейс.

Обозревать скрипт будем на Fedora, так что в качестве пакетного менеджера будет использоваться dnf. Для CentOS и yum настройки выполняются аналогичные, но возможно там нужно будет подключить EPEL и Nginx репозитории для получения нужных пакетов.

testssl.sh

Для начла посмотрим на работу со скриптом просто из командной строки. Забираем его с Github’а:

# dnf install git bind-utils
# git clone --depth 1 https://github.com/drwetter/testssl.sh.git

И запускаем стандартную проверку:

# ./testssl.sh https://sysadmin.pm/

testssl.sh

У скрипта есть много опций для запуска — можно выполнить только какую-то определённую проверку, записать результаты в лог файл, вывести отчёт в нужном формате, указать путь до кастомного бинарника openssl т. д. Полный список опций можно получить указав ключ —help при запуске:

# ./testssl.sh --help

Например, выполнить проверку на наличие уязвимостей, можно так:

# ./testssl.sh -U https://sysadmin.pm/

testssl.sh Web Frontend.

Для скрипта был написан веб-интерфейс. Что бы запустить его в работу, нам потребуется — Nginx, python3, python3-flask и aha. Для начала, ставим всё необходимое:

# dnf install nginx python3 python3-flask gcc make httpd-tools
# cd /usr/local/src/
# git clone https://github.com/theZiz/aha
# cd aha/
# make
# make install

Теперь заберём с Github’а сам фронтенд:

# cd /opt
# git clone --recursive https://github.com/TKCERT/testssl.sh-webfrontend.git

Открывfем основной скрипт /opt/testssl.sh-webfrontend/SSLTestPortal.py, и находим в нём секцию ### Configuration ### и изменяем параметры на нужные. Менять что-либо не обязательно, в случае если мы оставляем всё как есть, из редактора выходим и создаём нужные нам директории:

# mkdir /opt/testssl.sh-webfrontend/log/
# mkdir -p /opt/testssl.sh-webfrontend/result/{json,html}

И запускаем интерфейс:

# screen -d -m -A -s TestSSL /opt/testssl.sh-webfrontend/SSLTestPortal.py

Запустили мы его в фоне. При этом, на локалхосте, по адресу http://127.0.0.1:5000/ будет доступна панель, с помощью которой мы сможем выполнить тестирование нужного нам ресурса и сервиса.

testssl.sh

Для того, что бы сделать сервис доступным по сети, запустим на сервере Nginx и настроим проксирование запросов на наш локалхост. Открываем конфиг нужного нам домена, либо дефолтный конфиг, если это тестовая инсталляция, и добавляем туда вот такой location:

location /testssl/ {
 proxy_pass http://127.0.0.1:5000/;
 gzip_types text/plain application/javascript;
 proxy_http_version 1.1;
 proxy_set_header Upgrade $http_upgrade;
 proxy_set_header Connection "upgrade";
 proxy_connect_timeout 200;
 proxy_send_timeout 200;
 proxy_read_timeout 200;
 send_timeout 200;
 }

Возможно, таймауты в последних параметрах локейшена нужно будет увеличить, тут уже стоит смотреть по ситуации.

Остаётся только перезапустить Nginx, и если всё было сделано верно, то по нужному нам адресу, по сети окажется доступна всё та же панель, из которой мы сможем выполнять проверки сторонних сервисов. Если оставить публичный доступ для нас критично, не забываем настроить авторизацию для доступа к /testssl/, сделать это можно прямо в конфиге Nginx’а. Файл с паролями оставим, например в conf.d/htpasswd, сгенерируем его командой:

# htpasswd -cbd htpasswd testssl pa55w0rd

Итоговый конфиг будет вот такой:

location /testssl/ {
 auth_basic "protected";
 auth_basic_user_file conf.d/htpasswd;

proxy_pass http://127.0.0.1:5000/;
 gzip_types text/plain application/javascript;
 proxy_http_version 1.1;
 proxy_set_header Upgrade $http_upgrade;
 proxy_set_header Connection "upgrade";
 proxy_connect_timeout 200; 
 proxy_send_timeout 200;
 proxy_read_timeout 200;
 send_timeout 200;
 }

Перезапускаем Nginx и получаем прикрытый авторизацией собственный сервис проверки SSL соединений. Почти как SSLlabs, только на своём домене и сервере.

@SysadminNotes | https://sysadmin.pm

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *