Как отключить ограничение скорости на соединениях 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 (это не лучший метод обеспечения безопасности, поэтому убедитесь, что вы хотите это сделать!).