Как ограничить частоту обращений к серверу для каждого IP?

12 3
Elbran
На сайте с 29.03.2009
Offline
78
5940

На мой сервак постоянно кто-то долбиться, создавая 50-80 запросов в секунду. Создает кучу процессов, и сервак зависает, пока я его не перезагружу.

Как ограничить количество обращений к моему серверу в единицу времени для каждого уникального IP, а не для всех?

т.е.

1) 173.8.35.157 - мог делать не более 5 запросов в сек например,

2) 69.169.158.183 - и этот не более 5-ти запросов в сек.

....

....

10) xxx.xxx.xxx.xxx - тоже не более 5-ти в сек.

Но при этом не ограничивать общее количество запросов в секунду.

т.е. если все 10 IP долбить будут, то позволять им 50 запросов в секунду, а если 1000 - то 5 000 запросов в сек.

iptables -A INPUT -m limit --limit 5/second --limit-burst 5

Эта команда как я понимаю, делает не к каждому IP ограничение, а для всех.

Или я ошибаюсь?

Но даже если этим я предотвращю зависания сервака, то от этого гада я так и не отделаюсь, он так и будет долбить меня, пока я его в черный список не включу.

Так может можно, например после 1000 или 5000 запросов с его стороны (в определенный интервал времени), его ещё и автоматом в черный список внести?

Т.е. если кто то начинает очень часто дольбиться на протяжениии определенного интервала времени - то его в черный список без разбору.

Подкажите плиз-з-з-з-з, что почитать или что делать, куда копать?

Вот такие логи:

Nov 28 04:43:00 xxx-xxx-xxx-xxx dovecot: pop3-login: Aborted login (1 authentication attempts): user=<dawn>, method=PLAIN, rip=173.8.35.157, lip=xxx-xxx-xxx-xxx

Nov 28 04:43:00 xxx-xxx-xxx-xxx dovecot: pop3-login: Aborted login (1 authentication attempts): user=<lars>, method=PLAIN, rip=173.8.35.157, lip=xxx-xxx-xxx-xxx

Nov 28 04:43:00 xxx-xxx-xxx-xxx dovecot: pop3-login: Aborted login (1 authentication attempts): user=<darren>, method=PLAIN, rip=173.8.35.157, lip=xxx-xxx-xxx-xxx

Nov 28 04:43:00 xxx-xxx-xxx-xxx dovecot: pop3-login: Aborted login (1 authentication attempts): user=<lawrence>, method=PLAIN, rip=173.8.35.157, lip=xxx-xxx-xxx-xxx

Nov 28 04:43:00 xxx-xxx-xxx-xxx dovecot: pop3-login: Aborted login (1 authentication attempts): user=<kennedy>, method=PLAIN, rip=173.8.35.157, lip=xxx-xxx-xxx-xxx

Nov 28 04:43:00 xxx-xxx-xxx-xxx dovecot: pop3-login: Aborted login (1 authentication attempts): user=<kent>, method=PLAIN, rip=173.8.35.157, lip=xxx-xxx-xxx-xxx

Nov 28 04:43:00 xxx-xxx-xxx-xxx dovecot: pop3-login: Aborted login (1 authentication attempts): user=<kelvin>, method=PLAIN, rip=173.8.35.157, lip=xxx-xxx-xxx-xxx

Nov 28 04:43:00 xxx-xxx-xxx-xxx dovecot: pop3-login: Aborted login (1 authentication attempts): user=<kids>, method=PLAIN, rip=173.8.35.157, lip=xxx-xxx-xxx-xxx

Или вот такие:

Nov 28 10:00:07 xxx-xxx-xxx-xxx sshd[12149]: Failed password for root from 69.169.158.183 port 54314 ssh2

Nov 28 10:00:07 xxx-xxx-xxx-xxx sshd[12150]: Failed password for root from 69.169.158.183 port 53909 ssh2

Nov 28 10:00:07 xxx-xxx-xxx-xxx sshd[12152]: Failed password for root from 69.169.158.183 port 45221 ssh2

Nov 28 10:00:07 xxx-xxx-xxx-xxx sshd[12158]: error writing /proc/self/oom_adj: Operation not permitted

Nov 28 10:00:07 xxx-xxx-xxx-xxx sshd[12159]: error writing /proc/self/oom_adj: Operation not permitted

Nov 28 10:00:07 xxx-xxx-xxx-xxx sshd[12162]: error writing /proc/self/oom_adj: Operation not permitted

Nov 28 10:00:07 xxx-xxx-xxx-xxx sshd[12158]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=69.169.158.183.provo.static.broadweavenetworks.net user=root

Nov 28 10:00:07 xxx-xxx-xxx-xxx sshd[12159]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=69.169.158.183.provo.static.broadweavenetworks.net user=root

Домены по 95р (http://reg.ru-tbf.ru/), Сервис по проверке ссылок + генератор статей с уникальностью 95% (http://backlinksmanager.ru/) ICQ: 338-814-942
izbushka
На сайте с 08.06.2007
Offline
110
#1

Я для этого использую fail2ban

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

Andreyka
На сайте с 19.02.2005
Offline
822
#2

Смени порт ssh для начала

Не стоит плодить сущности без необходимости
N
На сайте с 06.05.2007
Offline
419
#3

Обычно сервер завешивают web-скрипты. Неужели там такая проблема, что несколько процессов ssh и почты приводят к зависанию сервера?

исходя из концепции НищебродZeroAdministration никого блокировать не нужно. Нужно позаботиться о сложных паролях.

Кнопка вызова админа ()
Elbran
На сайте с 29.03.2009
Offline
78
#4

Да там на все порты ко мне долбятся, я просто маленкую часть из сегодняшнего 12 мегового лога показал :-)

50-80 - запросов в сек. запускаю столько же процессов. А у меня 100 процесов максимум позволено.

Сервак сопротивляется часа 3, потом виснет.

N
На сайте с 06.05.2007
Offline
419
#5

Если и вебсервер нагружают, то fail2ban не поможет. Проанализируйте все же причину зависания.

L
На сайте с 13.01.2011
Offline
132
#6

поставить nginx (если его нет ) - ограничить число запросов с одного ip в nginx, поставить fail2ban, настроить конфиги apache, nginx

Контакты-icq 535609 ()
izbushka
На сайте с 08.06.2007
Offline
110
#7

ну кончено, куда ж без nginx-то.

Он и ssh поможет? ;)

Elbran
На сайте с 29.03.2009
Offline
78
#8

Должен поблагодарить izbushka, т.к. fail2ban - помоему и есть решение всех моих проблем.

Вот только покумекаю, как его установить и запустить, но это уже ерунда. Главное - что по описанию именно то, что я и хотел.

N
На сайте с 06.05.2007
Offline
419
#9
Elbran:
Главное - что по описанию именно то, что я и хотел.

не правда. ты ведь хотел чтобы сервер не зависал, хоть и не написал этого. мы лучше знаем.

L
На сайте с 13.01.2011
Offline
132
#10

врядли установка fail2ban решит проблему зависания, скорее какую то часть. все нужно в комплексе

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий