Статията не претендира за изчерпателност, тя обслужва преди всичко автора. Ползвайте на ваш риск и страх.
Това е моят LAN, познат ви от предходната тема тема FTP сървър ProFTPD в Ubuntu Server 10.04. Там се запознахме с начина за пренос на сайта от десктоп-машина към сървър-машината.
Каченият сайт не е самоцел, а желание, той да изгрее в интернет и да служи за наша визитка пред посетителите постоянно. Рано или късно към тях ще се присъедини човек с желание да проникне, затова превантивно, доколкото умеем, ще заложим блокади. Това значи да пипнем тук-там по настройките на индианеца.
Нека първо погледнем какво получаваме по подразбиране в Ubuntu server и по-точно неговия пълководец Apache.
Всеки един каталог (разбирай папка) се браузва. Това трябва да се скрие на всяка цена. Най-лесния начин е да се добави празен файл - index.html.
На снимката съм дал за пример каталог, съдържащ всички CSS файлове. Същото важи и за каталог images, съдържащ всичката графика на сайта. Нещата бият тревога, ако тук стоят php-скриптове. Да речем, че прибегнете до WordPress или Joomla!. Тогава лошият ще види инсталираните допълнения, модули и т.н. и ще получи площадка за действие.
Вижте подписа:
Apache/2.2.14 (Ubuntu) Server at 192.168.1.103 Port 80
Това пък на кого му трябва и определено ще го скрия. Нека се чудят, нека се потят повече.
Втората изненада идва от URL на phpMyAdmin. Достатъчно е до IP-то или до домейна да допишем phpMyAdmin и ние сме пред портата му. Това положение разчита на една парола и остава да се включи брутфорс, за да се отгатне.
Как беше до сега?
До сега беше просто. Ползваш готов и настроен хостинг и ако ти трябва повече защита добавяш в корена на сайта файл .htaccess.
HTACCESS e файл без име с разширение .htaccess. Този файл служи за децентрализирано управление на сървър Apache. Хостинг- компаниите закриват достъпа до конфигурационните файловe на Apache по разбираеми причини за безопасност и нашего брата, хоствания му остава да ползва малкия брат на тези - .htaccess.
Какво постигах аз с него, например:
Бан на Сульо и Пульо по IP. Ако се обяви и Хульо, хайде и той с бан-ан.
#това е Сульо
deny from 173.1.61.69
#това е Пульо
deny from 83.228.32.1
Забрана прегледа на каталозите (виж втора снимка горе). Тук забрана идва от добавен знак минус (-) пред Indexes.
RewriteBase /
Options -Indexes
Без подпис на сървъра (виж втора снимка горе)
RewriteBase /
ServerSignature Off
Защита на файл .htaccess от достъп. Неговите атрибути са 0644.
RewriteBase /
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>
Забрана HOTLINKING на списък от посочени файлове. Променете на вашето име в примера и на разширения, които желаете да защитите.
#RewriteEngine on
RewriteBase /
Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?profruit.blogspot.com/.*$ [NC]
RewriteRule \.(gif|jpg|jpeg|png|js|css|rar|zip|php)$ - [F]
Пренасочване на безсмислени заявки към дадена страница от сайта.
Да речем, че потребител задава URL в вашия сайт до несъществуващ файл или каталог, тогава ще бъде пренасочен към избрано място от вас, в случая index.php.
RewriteBase /
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ./index.php [L]
</IfModule>
Срещу DDoS атаки
RewriteBase /
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} HEAD
RewriteRule .* - [F]
</IfModule>
В каталози ~/images/, ~/style/, ~/js/ и т.н. срещу браузване на съдържанието им, слагам следния .htaccess файл. Той пренасочва при всеки опита за преглед съдържанието им на главната страница на сайта. Аман от воайори! Променете на IP-то на сайта ви и спете спокойно.
RewriteBase /
RewriteEngine on
RewriteCond %{HTTP_HOST} ^84.228.91.15$ [OR]
RewriteCond %{HTTP_HOST} ^84.228.91.15$
RewriteRule ^$ http://84.228.91.15 [R=301,L]
Какво следва?
С притежаването на Ubuntu server нещата стават по-интересни. Определeно вие държите в ръцете си всички лостове за управление на Apache. Стартирането на .htaccess забавя сървъра, защото той преглежда при всяка заявка първо за него. Така, че .htaccess само по необходимост.
Това е командния пулт на Apache (/etc/apache2) под Ubuntu server. В тези папки и файлове ще ровим.
За по-лесно ориентиране на нещата се свървам с Ubuntu server от Ubuntu desktop, чрез Nautilus и едновременно още с PuTTY по локална мрежа.
Първия начин ми дава графика,за да не се лутам и по-лесен прочит на даден файл през gedit, докато през втория редактирам с Midnight Commander под sudo.
Активация на .htaccess в Ubuntu server 10.04
При опит да качите в корена на сайта файл .htaccess, Apache го отхвърля. Причина са първоначалните настройки на Ubuntu server след инсталация. За да активирате тази опция преминете в каталог
/etc/apache2/sites-enabled
вътре се намира файл 000-default. Редактирайте следния ред в него така:
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
...
Сега е момента да добавим знак минус (-) пред Indexes. По този начин ще си спестим писане в .htaccess за забрана прегледа на каталозите. Нещата изглеждат така:
Options -Indexes FollowSymLinks MultiViews
Съхраняваме изменениятa в Midnight Commander с F2, a c F10 излизаме, за да рестартираме Apache. По този начин нещата влизат в сила и вече може да качвате .htaccess в сайта си.
Вижда се от примерите горе, че някои рестрикции изискват активен mod_rewrite или проверяват за наличието му. Това е модул на сървър Apache. Този мод служи за преобразуване на адресите в фиктивни в CMS, тоест, прави ги по-разбираеми и нагледни. Реверанс към WordPress и Joomla! и въпрос на една команда и рестарт.
sudo invoke-rc.d apache2 restart
Логовете четем в /var/log
На Apache2 в /var/log/apache2
Защита на URL http://site/phpMyAdmin
Преминете в/etc/apache2/conf.d/phpmyadmin.conf
Първи начин е да промените псевдонима (Alias) на phpMyAdmin на нещо по ваш избор. Да речем, че phpmyadmin промените на mydbadmin. Тогава URL ще бъде
http://site/mydbadmin
Това става като редактирате файл phpmyadmin.conf. В самото начало променете Alias /phpmyadmin на Alias /mydbadmin или направено е така:
Alias /mydbadmin /usr/share/phpmyadmin
...
Втори начин е да сложите парола на каталог
/usr/share/phpmyadmin
Това определено не ми допада, защото става банков трезор от писане на пароли и губене на време.
Как става е описано тук
Браво на мен, защото мога да броя до три. Третия начин нарекох тесла за хацкерите Сульо и Пульо. Хайде няма нужда да ми пълзят по админчето.
Пак там дописваме IP-то на компютрите от вътрешната мрежа и режем външния свят. Съответно напишете адресите от вашия рутер, модем или каквото е там. След редакция:
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
order deny,allow
deny from all
allow from 192.168.1.100/10
Options FollowSymLinks
DirectoryIndex index.php
...
На практика, всеки заредил адрес http://your_site/phpmyadmin ще вижда това
Защита от Brute force атаки
Brute force атаките се числят за най-прости, но към днешен ден все още ефективни за проникване в сървърна система. Техният успех зависи от мързела на администратора. Атаката се заключава в налучкване на паролата с помощта на речник или метода на прекия подбор.Противодействието е закриване достъпа на атакуващия до интересуващия го порт. На помощ идва огнена стена (firewall), а още скрипт, анализиращ лога за аутентификация. Признат скрипт в това дело fail2ban, позволяващ защитаване от брутфорс на голямо число сервизи (ssh, apache, vsftpd, proftpd, postfix, sasl).
Този скрипт упоменах в тема Настройка на SSH. Време е да го инсталираме.
Конфигурационите файлове на fail2ban се намират в каталог /etc/fail2ban.
Тук се намират два важни файла: fail2ban.conf (конфигурация на демона) и jail.conf, в когото се указват настройките на защитаваните сервизи
/etc/fail2ban/fail2ban.conf
В конфига се променя единствено детализацията на логовете.
loglevel = 3 # ниво детализация на логове (1-4)
logtarget = /var/log/fail2ban.log # лог файл
socket = /tmp/fail2ban.sock # сокет на демона
/etc/fail2ban/jail.conf
Тък промените са повечко, в зависимост от ползваните демони.
Променяте enabled = false на enabled = true за дадения демон, задавате порт, на когото да слуша и брой опити за аутентификация.
Списъкът е дълъг, но интуитивен и можете сами да го разучите. Изучавайте регулярни изрази.
Съхранете изменеията и пуснете сервиза
Имитация на злоумишленик
На една от машините си ще се опитам да се свържа с сървъра, като налучквам. Тази машина има сив адрес 192.168.1.101. Предварително съм задал три опита за въвеждане на име и парола в fail2ban. При неуспех, програмата ще ban-ва.Стартирам PuTTY и правя три поредни налучквания за вход. Нищо. На четвъртия опит виждам това:
От машина 192.168.1.100 се свързвам по ssh протокол и чета лога на fail2ban. Вижда се, че ме е сложил в затвора за време зададено в конфигурацията му.
Отделни настройки по Apache2
Преминаваме в каталог /etc/apache2/conf.d и редактираме файл charset. Задаваме кодировка по подразбиране UTF-8, просто махаме коментара.# In general, it is only a good idea if you know that all your files
# have this encoding. It will override any encoding given in the files
# in meta http-equiv or xml encoding tags.
AddDefaultCharset UTF-8
Редактираме съседния файл - security. Там ще скрием подписа на сървъра и запитванията за тип ОС-ма. Намираме следните части и редактираме както е показано долу:
#ServerTokens OS
...
#
#ServerSignature Off
ServerSignature Off
...
Нюанси
В Windows и по-точно в програмата за него - xampp, настройките на apache се задават в файл httpd.conf. Той се намира традиционно в директория C:\xampp\apache\confТова е подражание на Unix.
В този файл можем да променим портове 80 и 443, на които слуша apache по протоколи http и https, например.
В Ubuntu server - файл httpd.conf е празен. Неговото съдържание е поделено в файлове apache2.conf и в ports.conf. Това е подражание на Debian.
По-подробно за тях в бъдеща среща.
Извор:
htaccess.net.ru
Enable .htaccess in Apache2
apache2 mod_rewrite в Ubuntu
Защита от брутфорс атак
до нови срещи ^.^
0 Response to "Базова защита на Ubuntu Server 10.04"
Публикуване на коментар