Как отключить ограничение скорости на соединениях SSH в UFW?

У меня есть сервер разработки, на котором я постоянно синхронизирую свой код с помощью rsync. Для большей безопасности dev-сервера я теперь активировал UFW, который, кажется, работает нормально. Проблема в том, что он работает слишком хорошо, потому что теперь я часто получаю сообщение об ошибке при попытке синхронизации:

rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at /SourceCache/rsync/rsync-45/rsync/io.c(453) [sender=2.6.9]

Согласно этому посту, проблема в том, что UFW устанавливает "ограничение скорости" для соединений SSH; если вы попытаетесь подключиться через SSH более X раз за 30 секунд, это на некоторое время отключит вас. Это, конечно, здорово, чтобы блокировать нежелательных людей, но я хочу

  • либо отключите это для определенных IP-адресов,
  • или отключите его для успешных попыток подключения (т. е. разрешите работать только этому ограничению скорости для неудачных попыток).

Пост блога, на который я ссылаюсь выше, не предлагает решения для UFW, а просто заменил UFW на ip-таблицы. Поскольку мне нужно тратить время на программирование, я не хочу тратить время на изучение ip-таблиц. Поэтому мне было интересно, знает ли кто-нибудь здесь, как заставить это работать с UFW? Все советы приветствуются!

2 ответа

Не UFW-решение, но вы можете использовать ssh-мультиплексирование для уменьшения количества соединений SSH, которые вы делаете. Протокол SSH позволяет нескольким независимым потокам проходить через одно и то же TCP-соединение и OpenSSH. ssh Программа позволяет одному процессу использовать мультиплексирование для встраивания в соединение, открытое другим процессом.

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

На этой странице есть хорошее описание того, как настроить мультиплексирование и как управлять соединениями. По сути, вы бы добавили что-то подобное в свой ~/.ssh/config файл:

Host name-of-rsync-server
    ControlPath ~/.ssh/controlmasters/%r@%h:%p
    ControlMaster auto
    ControlPersist 10m

Когда вы запускаете копию ssh- или в твоем случае беги rsync который работает ssh для вас - он будет искать розетку на ControlPath который он может использовать, чтобы поговорить с существующим ssh экземпляр ("управляющий мастер"), который имеет соединение, открытое к серверу rsync. Если это работает, два процесса будут работать вместе, чтобы запустить новый сеанс ssh через существующее TCP-соединение. В противном случае экземпляр ssh откроет новое TCP-соединение с сервером rsync и станет управляющим мастером для других экземпляров ssh.

Этот ответ может помочьбрандмауэр UFW может быть настроен на «ограничение» ваших SSH-соединений.

Поскольку rsync подключается через SSH-туннель, вы можете достичь этого предела.

Возможные варианты: разрешить IP-адрес вашего сервера без ограничений (лучше всего), вставив правило перед ограничением скорости ssh; или полностью удалить ограничение ssh (это не лучший метод обеспечения безопасности, поэтому убедитесь, что вы хотите это сделать!).

Другие вопросы по тегам