Назад | Перейти на главную страницу

apache как ограничить для каждого пользователя ip

У меня есть защищенный паролем каталог с сотнями пользователей в файле htpasswd.

я хочу разрешить загрузку файлов на следующих условиях:

  1. проверьте правильность имени пользователя (уже сделано).
  2. проверьте, существует ли другое соединение с тем же именем пользователя. (есть модули для проверки соединения с того же IP-адреса, но я не нашел ни одного на основе имени пользователя)
  3. Если 2 правильно, проверьте, поступают ли оба соединения с одного и того же IP-адреса.

другими словами, как ограничить загрузку каждого пользователя только с 1 ip одновременно?

Я видел сотни статей и вопросов о том, как ограничить количество подключений на основе IP. но ни один на основе User. уточнить User я имею в виду valid-user в htpasswd файл.

пример: допустим, у меня есть htpasswd со следующими пользователями:

simon:$apr1$oL5flt.H$ayy6GOm0TblhH3lJXqf9o0
john:$apr1$JLGdTKlz$72ImnSlauIsCRV4lkrqE3/

и я добавил require valid-user в htaccess.

заранее спасибо.

Использовать iptables? Это ниже может быть не идеально, но я надеюсь, что оно укажет вам правильное направление. Если у вас есть несколько виртуальных хостов, где вам не нужно это ограничение, вам, возможно, придется разместить его на отдельном IP-адресе или немного поиграть с местом назначения.

/sbin/iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 1 -j REJECT --reject-with tcp-reset