Profruit banner

Умен звънец в openHAB

16 декември 2023

Телефонът е винаги с мен и сега, където и да се намирам получавам известие от openHAB, че някой е позвънил и чака пред вратата. А ако ме няма вкъщи става ясно часа и датата на последното позвъняване.

Tasmota Multipress

30 септември 2023

Идеята е Sonoff Touch T1 US 2 в салона, да управлява освен своето осветление и това в кухнята, а още вентилатора.

DIY 12V 1A WiFi Router UPS

22 април 2023

При поредно прекъсване на захранването вкъщи, батерията на нoтбука и двата UPS автоматично превключват на аварийно захранване и едновременно полита съобщение за конфуза

Zigbee2MQTT клониране

21 януари 2023

... как да клонираме съществуваща настройка на Zigbee2MQTT без да се налага последвало интервю на zigbee-устройствата.

LD2410 - бюджетен датчик присъствие в openHAB

11 февруари 2023

Цената на HLK-LD2410 зададе име на поредната тема в моя блог. С негова помощ се постига "народен" датчик присъствие в домашната автоматизация. . ...


В поредната среща "Как да си направя домашен хостинг" следва уговорка - не разглеждаме случай за организиране на професионален хостинг, a ситуация по-проста - разучаване и разработка на web-сървър.

Статията не претендира за изчерпателност, тя обслужва преди всичко автора. Ползвайте на ваш риск и страх.

Profruit Lan

Това е моят LAN, познат ви от предходната тема тема FTP сървър ProFTPD в Ubuntu Server 10.04. Там се запознахме с начина за пренос на сайта от десктоп-машина към сървър-машината.

Каченият сайт не е самоцел, а желание, той да изгрее в интернет и да служи за наша визитка пред посетителите постоянно. Рано или късно към тях ще се присъедини човек с желание да проникне, затова превантивно, доколкото умеем, ще заложим блокади. Това значи да пипнем тук-там по настройките на индианеца.

Нека първо погледнем какво получаваме по подразбиране в Ubuntu server и по-точно неговия пълководец Apache.

Всеки един каталог (разбирай папка) се браузва. Това трябва да се скрие на всяка цена. Най-лесния начин е да се добави празен файл - index.html.

На снимката съм дал за пример каталог, съдържащ всички CSS файлове. Същото важи и за каталог images, съдържащ всичката графика на сайта. Нещата бият тревога, ако тук стоят php-скриптове. Да речем, че прибегнете до WordPress или Joomla!. Тогава лошият ще види инсталираните допълнения, модули и т.н. и ще получи площадка за действие.

browsing directory

Вижте подписа:
Apache/2.2.14 (Ubuntu) Server at 192.168.1.103 Port 80
Това пък на кого му трябва и определено ще го скрия. Нека се чудят, нека се потят повече.

Втората изненада идва от URL на phpMyAdmin. Достатъчно е до IP-то или до домейна да допишем phpMyAdmin и ние сме пред портата му. Това положение разчита на една парола и остава да се включи брутфорс, за да се отгатне.

phpmyadmin

Как беше до сега?


До сега беше просто. Ползваш готов и настроен хостинг и ако ти трябва повече защита добавяш в корена на сайта файл .htaccess.


HTACCESS e файл без име с разширение .htaccess. Този файл служи за децентрализирано управление на сървър Apache. Хостинг- компаниите закриват достъпа до конфигурационните файловe на Apache по разбираеми причини за безопасност и нашего брата, хоствания му остава да ползва малкия брат на тези - .htaccess.

Какво постигах аз с него, например:

Бан на Сульо и Пульо по IP. Ако се обяви и Хульо, хайде и той с бан-ан.

## BAN
#това е Сульо
deny from 173.1.61.69
#това е Пульо
deny from 83.228.32.1

Забрана прегледа на каталозите (виж втора снимка горе). Тук забрана идва от добавен знак минус (-) пред Indexes.

## Без листинг на каталозите
RewriteBase /
Options -Indexes

Без подпис на сървъра (виж втора снимка горе)

## Без подпис
RewriteBase /
ServerSignature Off

Защита на файл .htaccess от достъп. Неговите атрибути са 0644.

## Защита на htaccess
RewriteBase /
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>

Забрана HOTLINKING на списък от посочени файлове. Променете на вашето име в примера и на разширения, които желаете да защитите.

## Без 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 атаки

## DDOS atack with HEAD requests
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. В тези папки и файлове ще ровим.

каталог на Apache2

За по-лесно ориентиране на нещата се свървам с Ubuntu server от Ubuntu desktop, чрез Nautilus и едновременно още с PuTTY по локална мрежа.

Първия начин ми дава графика,за да не се лутам и по-лесен прочит на даден файл през gedit, докато през втория редактирам с Midnight Commander под sudo.

Активация на .htaccess в Ubuntu server 10.04

mod-rewrite.
При опит да качите в корена на сайта файл .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 в сайта си.

sudo /etc/init.d/apache2 restart

Вижда се от примерите горе, че някои рестрикции изискват активен mod_rewrite или проверяват за наличието му. Това е модул на сървър Apache. Този мод служи за преобразуване на адресите в фиктивни в CMS, тоест, прави ги по-разбираеми и нагледни. Реверанс към WordPress и Joomla! и въпрос на една команда и рестарт.

sudo a2enmod rewrite
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 или направено е така:

# phpMyAdmin default Apache configuration
Alias /mydbadmin /usr/share/phpmyadmin
...

Втори начин е да сложите парола на каталог

/usr/share/phpmyadmin

Това определено не ми допада, защото става банков трезор от писане на пароли и губене на време.

Как става е описано тук

Браво на мен, защото мога да броя до три. Третия начин нарекох тесла за хацкерите Сульо и Пульо. Хайде няма нужда да ми пълзят по админчето.
Пак там дописваме IP-то на компютрите от вътрешната мрежа и режем външния свят. Съответно напишете адресите от вашия рутер, модем или каквото е там. След редакция:

# phpMyAdmin default Apache configuration

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 ще вижда това

phpmyadmin forbidden

Защита от Brute force атаки

Brute force атаките се числят за най-прости, но към днешен ден все още ефективни за проникване в сървърна система. Техният успех зависи от мързела на администратора. Атаката се заключава в налучкване на паролата с помощта на речник или метода на прекия подбор.

Противодействието е закриване достъпа на атакуващия до интересуващия го порт. На помощ идва огнена стена (firewall), а още скрипт, анализиращ лога за аутентификация. Признат скрипт в това дело fail2ban, позволяващ защитаване от брутфорс на голямо число сервизи (ssh, apache, vsftpd, proftpd, postfix, sasl).

Този скрипт упоменах в тема Настройка на SSH. Време е да го инсталираме.

sudo apt-get install fail2ban

Конфигурационите файлове на fail2ban се намират в каталог /etc/fail2ban.

Тук се намират два важни файла: fail2ban.conf (конфигурация на демона) и jail.conf, в когото се указват настройките на защитаваните сервизи

/etc/fail2ban/fail2ban.conf


В конфига се променя единствено детализацията на логовете.

[Definition]
loglevel = 3 # ниво детализация на логове (1-4)
logtarget = /var/log/fail2ban.log # лог файл
socket = /tmp/fail2ban.sock # сокет на демона

/etc/fail2ban/jail.conf

Тък промените са повечко, в зависимост от ползваните демони.
Променяте enabled = false на enabled = true за дадения демон, задавате порт, на когото да слуша и брой опити за аутентификация.

Списъкът е дълъг, но интуитивен и можете сами да го разучите. Изучавайте регулярни изрази.

Съхранете изменеията и пуснете сервиза

sudo invoke-rc.d fail2ban start

Имитация на злоумишленик

На една от машините си ще се опитам да се свържа с сървъра, като налучквам. Тази машина има сив адрес 192.168.1.101. Предварително съм задал три опита за въвеждане на име и парола в fail2ban. При неуспех, програмата ще ban-ва.

Стартирам PuTTY и правя три поредни налучквания за вход. Нищо. На четвъртия опит виждам това:

putty fatal error

От машина 192.168.1.100 се свързвам по ssh протокол и чета лога на fail2ban. Вижда се, че ме е сложил в затвора за време зададено в конфигурацията му.

log

Отделни настройки по Apache2

Преминаваме в каталог /etc/apache2/conf.d и редактираме файл charset. Задаваме кодировка по подразбиране UTF-8, просто махаме коментара.

# Read the documentation before enabling AddDefaultCharset.
# 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
Защита от брутфорс атак






до нови срещи   ^.^

08.04.2011 profruit 

0 Response to "Базова защита на Ubuntu Server 10.04"

Публикуване на коментар

Този блог е реинкарнация на първите ми опити за споделяне в нета. На времето започнах с къси разкази на преживяното. После се обезсмисли и превърнах блога си в системно радио. Пиша единствено неща, които карат душата ми да живее: openHAB, Ubuntu, Споделено и т.н. Това е моето системно радио, разбирате ли? Моята вълна и вие сте на нея сега.

Архив на блога