= bubbalog =Дневникът на моето стадо

Ограничаване на достъпа с hosts.allow и .htaccess до web сървъра

Tuesday 20.04.2010 12:05 EEST · Публикувано от в = FreeBSD =

Оригинали: http://www.linuxquestions.org/questions/linux-security-4/hosts-allow-questions-333514/#post1695621
http://static.closedsrc.org/articles/dn-articles/hosts_allow.html
http://www.countryipblocks.net/continents/

Решението на този въпрос може да се изпълни по 2 начина, в зависимост от това коя версия на Apache използвате.

1. Ограничение от hosts.allow

След няколко опита се оказа, че от hosts.allow може доста ефективно да се контролира достъпа до машината, но това не сработваше за странични приложения които не са от операционната система, каквото е и Apache. Преди да започна искам да поясня, че този вариант е валиден при използването на Apache < 2.x, тъй като при Apache2 и нагоре опцията “ServerType” в httpd.conf вече не се подържа и апаха не може да се зареди от inetd.conf

В httpd.conf файла намерете опцията “ServerType” и заменете standalone с inetd, спрете процеса на апаха ако върви

# apachectl stop

след което прибавете следния ред в /etc/inetd.conf

http stream tcp nowait root /usr/local/sbin/httpd httpd

и рестартирайте inetd демона

# killall -HUP inetd

Следва прибавянето на нужните редове в hosts.allow, всичко би трябвало да е наред. Не намерих конкретно описание кои начин е по-адекватрен за изписване

httpd : net1/mask1 net2/mask2 net3/mask3 : deny

или

httpd : net1/mask1 : deny
httpd : net2/mask2 : deny
httpd : net3/mask3 : deny

лично на мен поради спецификата на проверка на правилата (а и е доста по-подредено) втория вариант е по-удачен.

2. Ограничение от .htaccess

Лично на мен този вариант ми се струва доста по-удачен и гъвкав, тъй като може да се изработят различни приложения за различни сайтове (ако има виртуален хостинг). Имено в този случай варианта с hosts.allow не е много приложин, тъй като реже всичко наред…

Самото изпълнение е много по-просто от първия вариант, просто прибавете в .htaccess файла редовете за ограничаване на достъпа в селения вид

order allow,deny
deny from 192.168.10.100 #1
deny from 192.168.1.0/8 #2
deny from 192.168 #3
deny from 192.168. #4
allow from all

като записа в реда #1 ограничава само едно IP,  а #2, #3 и #4 са различни записи за ограничаване на цели мрежи. Така и не намерих обяснение каква е причината за различното записване при #3 и #4 (с или без точка накрая), но не намерих разлика в работата, всичко си беше наред.

Тука е мястото да се спомене, че така записан файла дава грешка “403 FORBIDDEN” при опит за достъп и ако .htaccess има и друга функция, като например

Option -Indexes

трябва да се измисли подходящо съчетаване и изпълнение.

3. Генериране на подходящ списък с адреси/мрежи

Самата изработка на списъка с нежелани адреси е въпрос на лично решение, дали на ръка или с някакво помощно средство. В търсенето си вчера обаче се натъкнах на един много полезен сайт (http://www.countryipblocks.net/continents/) в който има възможност директно да се генерира файл в който има описани мрежите на цели държави, каквато беше всъщност и основната цел на занятието – имам познат който искаше да отреже достъпа на цяла една държава.  Просто влизаш, генерираш, копираш и слагаш в .htaccess файла.

Остави коментар

Писането на кирилица е задължително!
Коментари, които не са на кирилица ще бъдат изтрити без предупреждение.
Всеки коментари съдържащи 1 или повече линка, ще бъдат публикувани след одобрение.