Егер Apache веб-сервері сайттарды басқару үшін пайдаланылса, файл арқылы кіруді шектеуге болады.htaccess, ол бір каталогқа немесе барлық кірістірілген ішкі каталогтарға қолданылады. Әр түрлі жағдайларда пайдалы болуы мүмкін кіру шектеулерінің бірнеше түрлері бар. Осы ықтимал опцияларды қарастырайық:

IP мекенжайын шектеу

Мұндай шектеудің дизайны өте қарапайым:

order allow,deny
deny from 1.1.1.1
deny from 2a01:230::6d0a:8406:c4e4:9e19
deny from 10.10
deny from 192.168.0.0/24
deny from domain.dom
allow from all

Осы ережелердің жұмыс істеуіне қойылатын жүйелік талаптар: Apache 2.2. mod_authz_host модулі қосылған x веб-сервері.

Бұл мысалда мен қол жетімділік шектеулерінің барлық мүмкін нұсқаларын келтірдім. Ал төменде біз әр жолды бөлек талдаймыз.

Бірінші жол келесі ережелердің логикасын белгілейді. Қандай тәртіппен бұғаттау және рұқсат беру ережелері орындалады.

Екінші және үшінші жолдар белгілі БІР IP мекенжайларына (тиісінше ipv4 және ipv6) кіруді блоктайды.

Төртінші жол ішінара IP мекенжайын көрсетуге болатынын көрсетеді және бұл жағдайда (мысалда көрсетілгендей) ол a /16 ішкі желісі ретінде қарастырылады.

Бесінші жол-ауқымды көрсету арқылы бүкіл желілер мен ішкі желілерді блоктауға болады.

Блоктау опцияларының жұмыс істеуі үшін, алтыншы жолдағыдай, HostnameLookups параметрін қосу қажет болады.

Ақырында, «барлығынан рұқсат ету» деген соңғы жолда басқалардың барлығына кіруге рұқсат етілгені айтылады.

Дегенмен Apache 2.2.x ескірген, ол әлі де жиі қолданылады. Apache 2.4 үшін ережелер басқаша болады.x:

<RequireAll>
Require all granted
Require not ip 1.1.1.1
Require not ip 2a01:230::6d0a:8406:c4e4:9e19
Require not ip 10.10
Require not ip 192.168.0.0/24
Require not host domain.dom
</RequireAll>

Бірінші және соңғы жолдар-ережелер тобын бөлектеу үшін қолданылатын директивалар.

Екінші жол-apache 2.2 жүйесіндегі барлық блоктан рұқсат ету,бас тарту + рұқсат ету ретінің аналогы. Ол ережелердің логикасын белгілейді.

3-6-жолдар Apache 2.2 ережелерінің 2-5-жолдарына ұқсас, ал 7-жол Apache 2.2-дегі 6-жолға ұқсас.

Құпия сөзді шектеу

Логин мен парольді авторизациялау арқылы кіруді шектеудің қарапайым әдісін қарастырайық.:

AuthType Basic
AuthName "Access is limited by the password "
AuthUserFile "/path/to/.htpasswd"

Бұл дизайнға қойылатын жүйелік талаптар: Apache 2.2.x немесе 2.4.x auth_basic, authn_file модульдері қосылған веб-сервер.

Пароль жасау

Логин-пароль жұбын құру Apache тарату пакетіне кіретін htpasswd қосымшасының тікелей қатысуымен жүзеге асырылады. Параметрлерсіз жұмыс істегенде, бұл қызметтік бағдарлама анықтаманы көрсетеді, оның аудармасы менде төменде берілген.:

Using:
        htpasswd [-cmdpsD] passwordfile username
        htpasswd -b[cmdpsD] passwordfile username password

        htpasswd -n[mdps] username
        htpasswd -nb[mdps] username password

 -c Create a new file.
 -n Do not update the file, display the result on the screen.
 -m Encrypt the password using [[MD5]].
 -d Encrypt the password using [[CRYPT]] (default).
 -p Do not encrypt the password (plaintext).
 -s Encrypt the password using [[SHA]].
 -b Specify the password in the command line parameter.
 -D Delete the specified user.
On [[Windows]], [[NetWare]] and [[TPF]] systems, the '-m' flag is used by default.
The '-p' flag may not work on all other systems.

Htpasswd жұмысының мысалдары

Осылайша, MD5 жүйесінде шифрланған құпия сөзбен авторизациялау үшін пайдаланушы аты мен құпия сөзі бар файлды жасау үшін пәрменді іске қосу қажет болады:

htpasswd -bcm /path/to/.htpasswd sampleuser samplepass

Пайдаланушы sampleuser үшін құпия сөзді қосу

Нәтиже файл болады.htpasswd жолымен:

sampleuser:$apr1$i5Kx715D$qkWbaZLztXohMGOdfCUy5/

Пайдаланушыны бар файлға қосу үшін пәрменді іске қосыңыз

htpasswd -bm /path/to/.htpasswd sampleuser1 samplepass1

Пайдаланушы sampleuser1 үшін құпия сөзді жаңарту

Егер файлда бірнеше пайдаланушы болса және біреуін жою қажет болса, пәрмен келесідей болады:

htpasswd -D /path/to/.htpasswd sampleuser2

Пайдаланушы sampleuser2 үшін құпия сөзді жою

Алдау парақтары

Жұмыс кезінде пайдалы болуы мүмкін тағы бірнеше мысалдар .htaccess файлы.

Apache 2.2-де бәріне тыйым салыңыз.x:

Order deny,allow
Deny from all

Apache 2.4-те бәріне тыйым салыңыз.x:

Require all denied

Apache 2.2 жүйесінде боттарды блоктау.x:

SetEnvIfNoCase User-Agent «DotBot» bad_bot
Deny from env=bad_bot

Apache 2.4 жүйесінде боттарды блоктау.x:

<If «%{HTTP_USER_AGENT} =~ m#DotBot#i»>
Require expr %{HTTP_USER_AGENT} != ‘DotBot’

#DotBot-бір мысал, мұндай боттар көп болуы мүмкін.

Apache 2.2 жүйесінде белгілі БІР IP МЕКЕНЖАЙЫНАН белгілі бір файлға кіруге рұқсат беріңіз.x:

<Files path to file>
Order Deny,Allow
Deny from all
Allow from 1.1.1.1
</Files>

Apache 2.4 жүйесінде белгілі БІР IP МЕКЕНЖАЙЫНАН белгілі бір файлға кіруге рұқсат беріңіз.x:

<Files path to file>
Require ip 1.1.1.1
</Files>