Как реализовать авторизацию клиентов и воркеров для gearman
К серверу задач Gearman можно подключиться без какой-либо авторизации. Для подключения достаточно знать ip и порт.
Понятно, что данные для обработки можно принудительно шифровать (gearman из коробки работает только по http? ssl или tls так и не реализованы?), тогда подключившийся злоумышленник вряд ли справится с дешифрацией. Можно даже на воркерах пытаться что-то валидировать, чтобы отличать собственные задачи от сторонних.
Но как защититься от:
— подключения злоумышленником своих воркеров к серверу (это может привести к выпаданию задач — они будут передаваться сервером сторонним воркерам и фактически не выполняться);
— размещения злоумышленником собственных задач в существующих очередях с целью просто заспамить очереди?
Вопросы к тем, кто использует Gearman:
— Подскажите, с помощью чего вы реализуете авторизацию клиентов и воркеров?
— А если авторизацию не используете, то как решаете приведенные проблемы?
Дальнейшее погружение в вопрос дало следующую картину:
Вопрос безопасности постоянно всплывает, однако никаких решений в эту сторону не предпринимается.
Те, кто думает о безопасности, поднимают VPN и настраивают german на работу в локальной сети.
Эх, им бы страничку в документации на этот счет, с примерами… Сколько бы времени сберегли!
Не совсем понятно, как левые воркеры будут «воровать» задачи, учитывая что functionName таски должен совпадать с functionName вокрека + левый порт + правило в iptables «только для локальной сети»
> Не совсем понятно, как левые воркеры будут «воровать» задачи,
> учитывая что functionName таски должен совпадать с functionName вокрека Протокол Gearman позволяет посмотреть список функций и количество задач для каждой функции в очереди. Поэтому, если сервер смотрит наружу, то список функций — не секрет.
> левый порт
Ну это тоже не средство.
> правило в iptables «только для локальной сети»
Да, наверно из этого может что-то получиться. Спасибо за подсказку! К сожалению я не системный администратор, и не силен в настройках локальных сетей. Попробую покопать в эту сторону!
Обычно, системы, рассчитанные на удаленные запросы, имеют средства авторизации, а тут их просто проигнорировали, и никаких подсказок в документации не оставили как правильно обеспечить безопасность… Да и поиск по Интернет ничего толкового тоже не принес. Думаю у большинства так и висит открытый наружу порт к которому без проблем можно подключиться.