Автор Гілка: iptables: блокування за рядком  (Прочитано 1740 раз)

Відсутній noddeat

  • Кореспондент
  • ***
  • дописів: 197
  • Карма: +0/-0
Отже, треба відхиляти всі GET і POST запити, які містять в назві або значеннях змінних певний рядок «badword».

Роблю це отак:

iptables -I INPUT -m string --string "badword" --algo bm -j DROP
Проблема: на одних сторінках воно спрацьовує, а на інших ні, і я не можу зрозуміти, чому: в обох випадках стандартна форма, де я в textarea вписую цей badword. Хтось робив взагалі такі штуки, може порадити, як це правильно вписати? І ще цікавить, як порадити з кирилицею (badword = "погане слово")?
« Змінено: 2010-04-19 23:13:04 від noddeat »
Filenames are infinite in length, where infinity is set to to 255 characters. Peter Collinson, "The Unix File System"

Відсутній cadca

  • Письменник
  • *****
  • дописів: 955
  • Карма: +0/-0
  • free like beer
Re: iptables: блокування за рядком
« Відповідей #1 : 2010-04-20 00:37:10 »
echo -n "badword" | recode cr..base64?
Для кирилиці можна було б спробувати
echo -n "badword" | perl -MURI::Escape -e 'print uri_escape(<>," \x7f-\xff");'
Ubuntu 20.04/18.04; CentOS 7.x

Відсутній noddeat

  • Кореспондент
  • ***
  • дописів: 197
  • Карма: +0/-0
Re: iptables: блокування за рядком
« Відповідей #2 : 2010-04-20 10:36:25 »
а навіщо його в base64 перекодовувати?  :o

Ні, то нічого не дає. Воно в простому вигляді працює. Працює, коли badword є частиною url-а (запит GET), але чомусь не працює в деяких (але не всіх) запитах POST.
Filenames are infinite in length, where infinity is set to to 255 characters. Peter Collinson, "The Unix File System"

Відсутній cadca

  • Письменник
  • *****
  • дописів: 955
  • Карма: +0/-0
  • free like beer
Re: iptables: блокування за рядком
« Відповідей #3 : 2010-04-21 13:55:12 »
$ echo -n "погане слово" | perl -MURI::Escape -e 'print uri_escape(<>,"^A-Za-z0-9/");'|sed "s/\%20/\+/g"
%EF%EE%E3%E0%ED%E5+%F1%EB%EE%E2%EE
Ubuntu 20.04/18.04; CentOS 7.x

Відсутній noddeat

  • Кореспондент
  • ***
  • дописів: 197
  • Карма: +0/-0
Re: iptables: блокування за рядком
« Відповідей #4 : 2010-04-21 14:23:42 »
ну, це тільки для GET-запитів працює. А POST не працює :(
Filenames are infinite in length, where infinity is set to to 255 characters. Peter Collinson, "The Unix File System"

Capitan iptables

  • Гість
Re: iptables: блокування за рядком
« Відповідей #5 : 2010-04-21 19:57:10 »
iptables -I INPUT -m string --algo kmp --string vkontakte -j DROP

Юзвері звіріють від такого.

Відсутній noddeat

  • Кореспондент
  • ***
  • дописів: 197
  • Карма: +0/-0
Re: iptables: блокування за рядком
« Відповідей #6 : 2010-04-21 20:45:36 »
iptables -I INPUT -m string --algo kmp --string vkontakte -j DROP

Юзвері звіріють від такого.
хехехе :) в мене дещо інша задача: зробити так, щоб користувачі сайту не могли відправити допис на форумі з матюками чи іншими словами. На ЛОУ це mod_security робить, але хочу спробувати саме через iptables — так веселіше + ліньки ставити mod_security :)
Filenames are infinite in length, where infinity is set to to 255 characters. Peter Collinson, "The Unix File System"

Відсутній cadca

  • Письменник
  • *****
  • дописів: 955
  • Карма: +0/-0
  • free like beer
Re: iptables: блокування за рядком
« Відповідей #7 : 2010-04-21 22:34:02 »
Off-topic:
iptables -I INPUT -m string --algo kmp --string vkontakte -j DROP

Юзвері звіріють від такого.
Аж ніяк. Обходиться зразу ж. А от після цього звіріють:
$ cat bad_sites.conf    
proxy                              
anonymiser                          
odnoklas+niki                      
Lm9kbm9rbGFz                        
vkontakte                          
dmtvbnRha3Rl                        
vk\.com\/                          
dmsuY29tL                          
L3ZrLmNvb                          
some-domain-01                      
\/st\.cmd                          
login\.some--s1                    
httpssJHudh82                      
my\.mail\.ru                        
love\.                              
mamba\.ru                          
bWFtYmEucnU
По суті справи - може не обходитись суто iptables, а спробувати завернути http-трафік на прозорий проксі і вже там випробовувати нерви юзверів?
Ubuntu 20.04/18.04; CentOS 7.x

Відсутній noddeat

  • Кореспондент
  • ***
  • дописів: 197
  • Карма: +0/-0
Re: iptables: блокування за рядком
« Відповідей #8 : 2010-04-22 12:50:45 »
уже розібрався: все працює, крім кирилиці :)

можна вважати проблему вирішеною, буду шукати інші способи.
Filenames are infinite in length, where infinity is set to to 255 characters. Peter Collinson, "The Unix File System"