Как глобально настроить безопасное клиентское использование OpenSSL на Oracle Linux 5/RHEL 5?

Расширяя подход jordanm, я смог создать что-то удивительно устойчивое, не имея необходимость обращаться к статистике. Сценарий стал немного длиннее, к сожалению, но это закончено, и теперь я могу использовать его так часто, как мне нужен он только с выяснением правильных параметров.

Я протестировал его на дюжине фактических файлов данных, некоторые столь же грязные как этот:

chart of messy cpu and memory csv

Прием здесь является использованием MIN_DURATION переменная, которая помогает игнорирующим временным скачкам и резкому спаду до конкретного количества строк.

Использование:

grep-begin-end FIELD_SEPARATOR FIELD_INDEX THRESHOLD_UP THRESHOLD_DOWN MIN_DURATION ...

Пример:

grep-begin-end , 2 30 4 5 file.csv

grep-begin-end

FIELD_SEPARATOR=$1
FIELD_INDEX=$2
THRESHOLD_UP=$3
THRESHOLD_DOWN=$4
MIN_DURATION=$5
shift 5
awk -F$FIELD_SEPARATOR -vthreshold_up=$THRESHOLD_UP -vthreshold_down=$THRESHOLD_DOWN 'BEGIN {
    cur = "gt";
}
{
    val = $'$FIELD_INDEX';
    # strip of double quotes and convert to number
    if (substr(val, 1, 1) == "\"") { val = 0 + substr(val, 2, length(val) - 3); } else { val = 0 + val; }
    buf = "";
    if (cur == "gt")
    {
        if (val >= threshold_up)
        {
            if (buf == "")
                buf = $0;
            if (duration >= '$MIN_DURATION')
            {
                print buf;
                cur = "lt";
                duration = 0;
                buf = "";
            }
            else
            {
                duration++;
            }
        }
        else
        {
            duration = 0;
        }
    }
    else if (cur == "lt")
    {
        if (val <= threshold_down)
        {
            if (buf == "")
                buf = $0;
            if (duration >= '$MIN_DURATION')
            {
                print buf;
                cur = "gt";
                duration = 0;
                buf = "";
            }
            else
            {
                duration++;
            }
        }
        else
        {
            duration = 0;
        }
    }
}' "$@"
3
27.10.2014, 18:29
2 ответа

Во-первых, зачем? В docs для s_client указано, что openssl по умолчанию будет использовать рукопожатие, которое определит правильный для вас протокол. Это и есть вся основа атаки POODLE. Проблема в том, что в версии 0.9.8 это рукопожатие начинается с SSL_V23 и в какой-то момент позже попробует TLSv1 . Многим серверам не нравится, когда клиенты соединяются с помощью SSL_V23, потому что это красный флаг, что клиент делает что-то небезопасное, следовательно, ваша проблема.

Как это исправить? Ну, я не смог найти ни одной опции для openssl.cnf, которая позволила бы вам сказать: "Эй, по умолчанию просто используйте TLSv1". В этом потоке , похоже, предполагают, что это возможно в v1.0.0+. После часа поиска в Google я решил, что лучше всего будет перекомпилировать openssl и отключить SSLv2 и SSLv3. Если вы перекомпилируете openssl, то, вероятно, будет намного проще использовать 0.9.8, попытка обновить openssl до 1.x+ в чем-то вроде RHEL может стать полным кошмаром.

2
27.01.2020, 21:27

Поскольку RHEL 5 страдает той же проблемой, я только что проверил их багзиллу: https://bugzilla.redhat.com/show_bug.cgi?id=1152789

Они сосредоточились в основном на Tomcat 6 и их JBoss-файлах, где это сводится к изменению нескольких строк в конфигурации сервера приложений.

Но внутри этого багзиллы есть поток, ведущий к openssl-проблеме RHEL5.

https://rhn.redhat.com/errata/RHSA-2014-1653.html

openssl-0.9.8e-31.el5_11 - это перекомпилированный openssl, который вам нужен.

Итак: IMHO вам просто нужно установить этот патч и заставить ваши серверы web/приложений не использовать небезопасные протоколы.

0
27.01.2020, 21:27

Теги

Похожие вопросы