{"id":71,"date":"2009-08-18T19:51:47","date_gmt":"2009-08-18T17:51:47","guid":{"rendered":"http:\/\/antynet.pl\/word\/?p=71"},"modified":"2025-01-23T10:31:52","modified_gmt":"2025-01-23T09:31:52","slug":"bezpieczny-apache2-plus-mod_security2","status":"publish","type":"post","link":"https:\/\/www.antynet.pl\/index.php\/2009\/08\/18\/bezpieczny-apache2-plus-mod_security2\/","title":{"rendered":"Bezpieczny Apache2 plus mod_security2"},"content":{"rendered":"<p>W tym artykule zajm\u0119 si\u0119 konfiguracj\u0105 serwera apache2 w \u015brodowisku Debian. Krok po kroju zainstalujemy apache2 wraz z php5, mysql5 oraz kilkoma dodatkami podnosz\u0105cymi bezpiecze\u0144stwo naszej instalacji. Zainstalowanie tego oprogramowania ci\u0119\u017cko nazwa\u0107 czym\u015b trudnym, jednak\u017ce skonfigurowa\u0107 wszystko w spos\u00f3b skutecznie utrudniaj\u0105cy hackerom \u017cycie jest ju\u017c pewnym wyzwaniem.<\/p>\n<p>Artyku\u0142 zosta\u0142 tak napisany by czytaj\u0105c go i wykonuj\u0105c zapisane w nim polecenia w pe\u0142ni skonfigurowa\u0107 serwer apache2 wraz z obs\u0142ug\u0105 PHP oraz MYSQL. Oczywi\u015bcie g\u0142\u00f3wny nacisk konfiguracji skierowany b\u0119dzie na bezpiecze\u0144stwo serwera. Pisz\u0105c artyku\u0142, wszystkie polecenia wykonywa\u0142em na \u015bwie\u017co zainstalowanym Debian 5.0 z niestandardowo skonfigurowanym plikiem \/etc\/apt\/sources.list , oto jego zawarto\u015b\u0107:<\/p>\n<p>deb\u00a0<a style=\"font-family: Tahoma, Arial, Helvetica, sans-serif; text-decoration: none; color: #34717f;\" title=\"http:\/\/ftp.fr.debian.org\/debian\/\" href=\"http:\/\/ftp.fr.debian.org\/debian\/\" rel=\"nofollow noopener\" target=\"_blank\">http:\/\/ftp.fr.debian.org\/debian\/<\/a> stable main<\/p>\n<p>deb-src\u00a0<a style=\"font-family: Tahoma, Arial, Helvetica, sans-serif; text-decoration: none; color: #34717f;\" title=\"http:\/\/ftp.fr.debian.org\/debian\/\" href=\"http:\/\/ftp.fr.debian.org\/debian\/\" rel=\"nofollow noopener\" target=\"_blank\">http:\/\/ftp.fr.debian.org\/debian\/<\/a> stable main<\/p>\n<p>deb\u00a0<a style=\"font-family: Tahoma, Arial, Helvetica, sans-serif; text-decoration: none; color: #34717f;\" title=\"http:\/\/security.debian.org\/\" href=\"http:\/\/security.debian.org\/\" rel=\"nofollow noopener\" target=\"_blank\">http:\/\/security.debian.org\/<\/a> stable\/updates main<\/p>\n<p>deb\u00a0<a style=\"font-family: Tahoma, Arial, Helvetica, sans-serif; text-decoration: none; color: #34717f;\" title=\"http:\/\/ftp2.de.debian.org\/debian-volatile\" href=\"http:\/\/ftp2.de.debian.org\/debian-volatile\" rel=\"nofollow noopener\" target=\"_blank\">http:\/\/ftp2.de.debian.org\/debian-volatile<\/a> stable\/volatile main<\/p>\n<p>deb\u00a0<a style=\"font-family: Tahoma, Arial, Helvetica, sans-serif; text-decoration: none; color: #34717f;\" title=\"http:\/\/etc.inittab.org\/~agi\/debian\/libapache-mod-security2\/etch\" href=\"http:\/\/etc.inittab.org\/~agi\/debian\/libapache-mod-security2\/etch\" rel=\"nofollow noopener\" target=\"_blank\">http:\/\/etc.inittab.org\/~agi\/debian\/libapache-mod-security2\/etch<\/a> .\/<\/p>\n<p>deb\u00a0<a style=\"font-family: Tahoma, Arial, Helvetica, sans-serif; text-decoration: none; color: #34717f;\" title=\"http:\/\/ftp2.de.debian.org\/debian-volatile\" href=\"http:\/\/ftp2.de.debian.org\/debian-volatile\" rel=\"nofollow noopener\" target=\"_blank\">http:\/\/ftp2.de.debian.org\/debian-volatile<\/a> stable\/volatile main<\/p>\n<p>Po zmianie zawarto\u015bci source.list nale\u017cy wykona\u0107 polecenia:<\/p>\n<p>apt-get update<\/p>\n<p>apt-get upgrade<\/p>\n<p>apt-get dist-upgrade<\/p>\n<p><strong>Instalacja oprogramowania podstawowego.<\/strong><\/p>\n<p>W konsoli wydajemy polecenie:<\/p>\n<p>apt-get install apache2 php5 mysql-server-5.0 php5-mysql mysql-client<\/p>\n<p>Oprogramowanie zostanie automatycznie \u015bci\u0105gni\u0119te z repozytorium i zainstalowane. Ten etap jest absolutnie automatyczny i \u201edzieje si\u0119 sam\u201d (wyj\u0105tkiem jest pro\u015bba o podanie has\u0142a dla serwera mysql), po instalacji tych pakiet\u00f3w nasz serwer www w zasadzie ju\u017c dzia\u0142a. Mo\u017cna to sprawdzi\u0107 wpisuj\u0105c do przegl\u0105darki internetowej adres naszego serwera, na potrzeby tego artyku\u0142u uruchomi\u0142em serwer pod adresem IP 10.10.10.32. Tak wi\u0119c po wpisaniu adresu IP do przegl\u0105darki zobaczymy wspania\u0142y komunikat:<br \/>\nIt works!<\/p>\n<p>W tym momencie serwer www apache2 wraz obs\u0142ug\u0105 PHP oraz MYSQ mamy \u201egotowy\u201d, obs\u0142ug\u0119 php sprawdzimy tworz\u0105c plik informacyjny:<\/p>\n<p>w konsoli wpisujemy:<\/p>\n<p>echo &#8221; &#8221; &gt; \/var\/www\/info.php<\/p>\n<p>Wpisuj\u0105c w przegl\u0105darce internetowej adres\u00a0<a style=\"font-family: Tahoma, Arial, Helvetica, sans-serif; text-decoration: none; color: #34717f;\" title=\"http:\/\/10.10.10.32\/info.php\" href=\"http:\/\/10.10.10.32\/info.php\" rel=\"nofollow\">http:\/\/10.10.10.32\/info.php<\/a> zobaczy szczeg\u00f3\u0142owe informacje na temat zainstalowanego PHP oraz modu\u0142\u00f3w dodatkowych. Jak da si\u0119 zauwa\u017cy\u0107 w domy\u015blnej konfiguracji instalacja jest zaopatrzona w Suhosin Patch, patch ma<\/p>\n<p>za zadanie chroni\u0107 zar\u00f3wno skrypty, jak i serwery korzystaj\u0105ce z PHP przed znanymi i przysz\u0142ymi b\u0142\u0119dami bezpiecze\u0144stwa.<\/p>\n<p>Pozosta\u0142o przetestowa\u0107 poprawno\u015b\u0107 wsp\u00f3\u0142pracy apache2-PHP5-Mysql5, w tym celu stworzymy plik php o nazwie sql.php i umie\u015bcimy go w katalogu \/var\/www. Oto zawarto\u015b\u0107 pliku:<\/p>\n<p>mysql_connect(&#8222;localhost&#8221;, &#8222;root&#8221;, &#8222;testowe&#8221;) or die(mysql_error());<\/p>\n<p>echo &#8222;Polaczony MySQL<br \/>\n&#8222;;<\/p>\n<p>?&gt;<\/p>\n<p>Wpisuj\u0105c w przegl\u0105darce internetowej adres\u00a0<a style=\"font-family: Tahoma, Arial, Helvetica, sans-serif; text-decoration: none; color: #34717f;\" title=\"http:\/\/10.10.10.32\/sql.php\" href=\"http:\/\/10.10.10.32\/sql.php\" rel=\"nofollow\">http:\/\/10.10.10.32\/sql.php<\/a> zobaczy komunikat:<\/p>\n<p>Polaczony MySQL, oczywi\u015bcie oznacza to poprawno\u015b\u0107 instalacji.<\/p>\n<p>Niestety na tym etapie wielu administrator\u00f3w ko\u0144czy konfiguracj\u0119, serwer dzia\u0142a prawid\u0142owo, strony wymagaj\u0105ce obs\u0142ugi PHP oraz MYSQL prawid\u0142owo si\u0119 instaluj\u0105 oraz dzia\u0142aj\u0105. Efektem takiego post\u0119powania s\u0105 bardzo cz\u0119ste w\u0142amania na systemy CMS, nieprawid\u0142owo napisane skrypty PHP itp. Naszym zadaniem b\u0119dzie takie skonfigurowanie oprogramowania, \u017ce wi\u0119kszo\u015b\u0107 pr\u00f3b w\u0142amania zostanie zablokowane.<\/p>\n<p><strong>Konfiguracja serwera apache2<\/strong><\/p>\n<p>W celu eliminacji zagro\u017cenia cross-site tracing uruchomimy modu\u0142 rewrite, modu\u0142 ten ma ogromne mo\u017cliwo\u015bci konfiguracyjne pomocne webmasterom, np. pozwala tworzy\u0107 \u201eprzyjazne adresy\u201d czy tworzy\u0107 przekierowania. My wykorzystamy jego moc do walki z cross-site tracing, kt\u00f3ry w uproszczeniu pozwala na kradzie\u017c ciasteczek przy pomocy metody TRACE.<\/p>\n<p>W celu uruchomienia modu\u0142u wpisujemy w konsoli:<\/p>\n<p>ln -s \/etc\/apache2\/mods-available\/rewrite.load \/etc\/apache2\/mods-enabled\/rewrite.load<\/p>\n<p>nast\u0119pnie dodajemy odpowiednie wpisy do pliku apache2.conf:<\/p>\n<p>RewriteEngine on<\/p>\n<p>RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)<\/p>\n<p>RewriteRule .* &#8211; [F]<\/p>\n<p>Warto tak\u017ce wy\u0142\u0105czy\u0107 metod\u0119 TRACE w \/etc\/apache2\/conf.d\/security ustawiaj\u0105c dyrektyw\u0119 TraceEnable On na TraceEnable Off<\/p>\n<p>W wi\u0119kszo\u015bci przypadk\u00f3w zasadniczo mo\u017cna ograniczy\u0107 serwer do przyjmowania tylko standardowych metod komunikacji:<\/p>\n<p>RewriteEngine on<\/p>\n<p>RewriteCond %{REQUEST_METHOD} !^(GET|POST|PUT|HEAD)$<\/p>\n<p>RewriteRule .* &#8211; [F]<\/p>\n<p>Przegl\u0105daj\u0105c sekcj\u0119 apache2handler na wcze\u015bniej utworzonej stronie\u00a0<a style=\"font-family: Tahoma, Arial, Helvetica, sans-serif; text-decoration: none; color: #34717f;\" title=\"http:\/\/10.10.10.32\/info.php\" href=\"http:\/\/10.10.10.32\/info.php\" rel=\"nofollow\">http:\/\/10.10.10.32\/info.php<\/a>mo\u017cemy zobaczy\u0107 \u017ce nasz serwer jest strasznie gadatliwy i podaje bardzo du\u017co informacji. Wiadomo \u017ce im mniej wie atakuj\u0105cy tym lepiej, dlatego te\u017c teraz zajmiemy si\u0119 tym problemem. W chwili obecnej serwer przedstawia si\u0119 jako:<\/p>\n<p>Apache\/2.2.9 (Debian) mod_python\/3.2.10 Python\/2.4.4 PHP\/5.2.6-1+lenny3 with Suhosin-Patch mod_perl\/2.0.4 Perl\/v5.10.0<\/p>\n<p>W celu uciszenia serwera edytujemy plik \/etc\/apache2\/conf.d\/security, i odpowiednio zmieniamy dyrektywy:<\/p>\n<p>ServerTokens Prod<\/p>\n<p>ServerSignature Off<\/p>\n<p>Po tym zabiegu odpytany serwer podaje tylko jedn\u0105 informacj\u0119:<\/p>\n<p>apache<\/p>\n<p>w dalszej cz\u0119\u015bci artyku\u0142u zmienimy tak\u017ce i t\u0119 informacj\u0119.<\/p>\n<p>Domy\u015blnie obs\u0142uga PHP jest dost\u0119pna dla wszystkich, nie jest to dobry pomys\u0142, bior\u0105c pod uwag\u0119 \u017ce cz\u0119\u015b\u0107 u\u017cytkownik\u00f3w nawet nie wie co to jest PHP, zak\u0142adaj\u0105 proste statyczne strony, kt\u00f3re w zupe\u0142no\u015bci zaspokajaj\u0105 ich potrzeby. Obs\u0142uga PHP na ich kontach jest tylko zagro\u017ceniem dla ca\u0142ego serwera. W ka\u017cdym razie warto \u015bwiadomie za\u0142\u0105cza\u0107 PHP tylko dla odpowiednich katalog\u00f3w, oczywi\u015bcie pami\u0119taj\u0105c r\u00f3wnocze\u015bnie o odpowiednim skonfigurowaniu \u015brodowiska.<\/p>\n<p>W tym celu w pliku apache2.conf dopisujemy odpowiednie dyrektywy:<\/p>\n<p>Skoro domy\u015blnie PHP jest za\u0142\u0105czone, musimy ustawi\u0107 aby domy\u015blnie PHP by\u0142o wy\u0142\u0105czone:<\/p>\n<p>php_admin_flag engine Off<\/p>\n<p>Nast\u0119pnie za\u0142\u0105czamy obs\u0142ug\u0119 PHP dla konkretnego katalogu, w naszym przypadku \/var\/www , ponadto zmuszamy aplikacje PHP aby korzysta\u0142y z katalogu tmp w katalogu u\u017cytkownika, domy\u015blnie jest to katalog \/tmp, czyli w g\u0142\u00f3wnym drzewie.<\/p>\n<p>php_admin_flag engine On<\/p>\n<p>php_admin_value open_basedir &#8222;\/var\/www:\/usr\/lib\/php:\/var\/www\/tmp:\/usr\/share\/pear&#8221;<\/p>\n<p>php_admin_value upload_tmp_dir &#8222;\/var\/www\/tmp&#8221;<\/p>\n<p>php_admin_value session.save_path &#8222;\/var\/www\/tmp&#8221;<\/p>\n<p>Dobrym zwyczajem jest zainstalowanie serwera w wyodr\u0119bnionym \u015brodowisku za pomoc\u0105 mechanizmu chroot(), jednak\u017ce jest to temat na osobny artyku\u0142. Wszystkie techniki opisane w tym artykule z powodzeniem mo\u017cna stosowa\u0107 w \u015brodowisku chroot(). Dlatego zach\u0119cam do zapoznania si\u0119 ze sposobem umieszczania serwera apache2 w \u015brodowisku wydzielonym.<\/p>\n<p><strong>Poprawa konfiguracji PHP5<\/strong><\/p>\n<p>Domy\u015blny plik konfiguracyjny PHP5 jest bardzo liberalny w kwestii bezpiecze\u0144stwa, dlatego te\u017c absolutn\u0105 konieczno\u015bci\u0105 jest sp\u0119dzenie kilku chwil nad jego zawarto\u015bci\u0105. Z pewno\u015bci\u0105 znacznie to podniesie poziom bezpiecze\u0144stwa serwera. Konfiguracja znajdziemy znajduje si\u0119 w \/etc\/php5\/apache2\/php.ini<\/p>\n<p>Bardzo istotn\u0105 z punktu widzenia bezpiecze\u0144stwa jest dyrektywa register_globals, musi ona zosta\u0107 wy\u0142\u0105czona. W przypadku gdy funkcja jest aktywna wszystkie zmienne dost\u0119pne jako $zmienna, bez wykorzystywania tablic. Przy takiej konfiguracji nie ma mo\u017cliwo\u015bci sprawdzenia pochodzenia zmiennej, zmienna mo\u017ce pochodzi\u0107 z zapytania GET lub POST wygenerowanego przez w\u0142amywacza, co dalej mo\u017ce si\u0119 sta\u0107 to ju\u017c chyba wiadomo. Dlatego sprawdzamy czy register_globals na pewno ma warto\u015b\u0107 OFF.<\/p>\n<p>register_globals = Off<\/p>\n<p>PHP posada wiele bardzo ciekawych funkcjonalno\u015bci, np. mo\u017cemy wykonywa\u0107 polecenia systemowe w ramach skryptu PHP, sprawdza\u0107 konfiguracj\u0119 serwera itp. Do typowych zastosowa\u0144 wi\u0119kszo\u015b\u0107 tych funkcji nie jest potrzebna, nawet rozbudowane CMS jak PHPBB czy WordPress dzia\u0142aj\u0105 prawid\u0142owo przy wy\u0142\u0105czeniu wielu z tych funkcji. Poni\u017cej przedstawiam konfiguracj\u0119 ze swoich serwer\u00f3w.<\/p>\n<p>disable_functions = dl,proc_open,get_cfg_var,get_cfg_all,<\/p>\n<p>ini_get_all,set_time_limit,system,readfile,passthru,phpinfo,<\/p>\n<p>exec,sendmail,popen,phpinfo,shell_exec,posix_getpwuid,disk_free_space,php_uname<\/p>\n<p>List\u0119 blokowanych wywo\u0142a\u0144 stworzy\u0142em na podstawie exploit\u00f3w, kt\u00f3re by\u0142y testowane na moich maszynach przez zwykle azjatyckich i brazylijskich w\u0142amywaczy. Szczerze zalecam wy\u0142\u0105czenie tych funkcji na swoich serwerach.<\/p>\n<p>Podobnie jak apache tak i PHP jest gadatliwy na sw\u00f3j temat, zdradzaj\u0105c w\u0142amywaczowi zbyt wiele informacji, dlatego te\u017c ustawiamy:<\/p>\n<p>expose_php = off<\/p>\n<p>Warto tak\u017ce wy\u0142\u0105czy\u0107 wy\u015bwietlanie b\u0142\u0119d\u00f3w PHP na stronie skryptu, informacje z b\u0142\u0119du zwykle przedstawiaj\u0105 bardzo du\u017co ciekawych informacji, dlatego dodajemy:<\/p>\n<p>display_errors = Off<\/p>\n<p>Przegl\u0105daj\u0105c logi serwera apache bardzo szybko zauwa\u017cymy \u017ce pojawiaj\u0105 si\u0119 pr\u00f3by doklejania do adresu URL link\u00f3w do skrypt\u00f3w na innych serwerach. W\u0142amywacz na zdalnym serwerze umieszcza plik napisany w PHP b\u0119d\u0105cym exploitem, czyli plikiem kt\u00f3ry jest wstanie skompromitowa\u0107 nasz serwer. Nast\u0119pnie wykorzystuj\u0105c b\u0142\u0119dnie napisane skrypty na naszym serwerze stara si\u0119 wykona\u0107 sw\u00f3j kod, czyli nasz serwer apache2 wykonuje kod napisany przez w\u0142amywacza. Oczywi\u015bcie wy\u0142\u0105czamy t\u0105 w\u0105tpliw\u0105 funkcjonalno\u015b\u0107:<\/p>\n<p>allow_url_fopen = Off<\/p>\n<p>allow_url_include = Off<\/p>\n<p>Ten prosty zabieg uchroni nas przed ogromn\u0105 armi\u0105 dzieci staraj\u0105cych si\u0119 za wszelk\u0105 cen\u0119 zosta\u0107 hakierami. Niedawna fala w\u0142ama\u0144, kt\u00f3rych \u017ar\u00f3d\u0142em byli tureccy w\u0142amywacze wykorzystywa\u0142a min. tego typu podatno\u015b\u0107.<\/p>\n<p>Bardzo popularne sta\u0142o si\u0119 instalowanie przez u\u017cytkownik\u00f3w rozbudowanych system\u00f3w CMS, korzystaj\u0105 one z mechanizmu sesji, dlatego te\u017c niewolno zapomina\u0107 o prawid\u0142owej konfiguracji tej sekcji.<\/p>\n<p>session.use_only_cookies = 1<\/p>\n<p>session.cookie_domain = twoja.domena<\/p>\n<p>session.referer_check = twoja.domena<\/p>\n<p>session.entropy_length = 16<\/p>\n<p>session.entropy_file = \/dev\/urandom<\/p>\n<p>session.hash_bits_per_character = 6<\/p>\n<p>Tych kilka dyrektyw znacznie utrudni w\u0142amywaczowi zgadywanie identyfikatora sesji.<\/p>\n<p><strong>Instalacja i uruchamianie modsecurity.<\/strong><\/p>\n<p>Mod_Security jest modu\u0142em dla serwera apache2, kt\u00f3ry w znaczny spos\u00f3b podnosi stopie\u0144 bezpiecze\u0144stwa serwera. Po zainstalowaniu i skonfigurowaniu modu\u0142 przechwytuje wszelkie zapytania kierowane (GET , POST ,cookies) do naszego serwera i poddaje je dok\u0142adnym analiz\u0105, w zale\u017cno\u015bci od wyniku analizy zapytania podejmuje odpowiednie akcje.<\/p>\n<p>Dzi\u0119ki tej funkcjonalno\u015bci i dobrze dobranej konfiguracji, pozwala udaremni\u0107 znakomit\u0105 wi\u0119kszo\u015b\u0107 atak\u00f3w na aplikacje web. Ka\u017cdego dnia publikowane s\u0105 exploity umo\u017cliwiaj\u0105ce zaatakowanie system\u00f3w CMS, dok\u0142adnie skonfigurowane mod_security zwykle udaremnia te dzia\u0142ania ju\u017c na przedbiegach.<\/p>\n<p>Na pocz\u0105tek nale\u017cy zainstalowa\u0107 niezb\u0119dne oprogramowanie oraz biblioteki.<\/p>\n<p>apt-get install libxml2-dev liblua5.1-0 lua5.1 apache2-threaded-dev g++ make<\/p>\n<p>Tworzymy katalog, w kt\u00f3rym b\u0119dziemy kompilowa\u0107 modu\u0142:<\/p>\n<p>mkdir \/usr\/src\/mod_security<\/p>\n<p>cd \/usr\/src\/mod_security<\/p>\n<p>Pobieramy najnowsz\u0105 wersj\u0119 modu\u0142u ze strony producenta, na dzi\u015b tj. 30.07.09 jest to wersja 2.5.9.<\/p>\n<p>wget\u00a0<a style=\"font-family: Tahoma, Arial, Helvetica, sans-serif; text-decoration: none; color: #34717f;\" title=\"http:\/\/www.modsecurity.org\/download\/modsecurity-apache_2.5.9.tar.gz\" href=\"http:\/\/www.modsecurity.org\/download\/modsecurity-apache_2.5.9.tar.gz\" rel=\"nofollow noopener\" target=\"_blank\">http:\/\/www.modsecurity.org\/download\/modsecurity-apache_2.5.9.tar.gz<\/a><\/p>\n<p>Rozpakowanie pobranego archiwum:<\/p>\n<p>tar zxvf modsecurity-apache_2.5.9.tar.gz<\/p>\n<p>cd modsecurity-apache_2.5.9\/apache2\/<\/p>\n<p>Nast\u0119pnie kompilujemy:<\/p>\n<p>.\/configure<\/p>\n<p>make<\/p>\n<p>make install<\/p>\n<p>Tworzymy plik \/etc\/apache2\/mods-available\/mod-security2.load o zawarto\u015bci:<\/p>\n<p>LoadFile \/usr\/lib\/libxml2.so<\/p>\n<p>LoadFile \/usr\/lib\/liblua5.1.so.0<\/p>\n<p>LoadModule security2_module \/usr\/lib\/apache2\/modules\/mod_security2.so<\/p>\n<p>Pozosta\u0142o aktywowa\u0107 nowo zainstalowany modu\u0142:<\/p>\n<p>a2enmod mod-security2<\/p>\n<p>a2enmod unique_id<\/p>\n<p>Tworzymy plik konfiguracyjny:<\/p>\n<p>touch \/etc\/apache2\/conf.d\/mod-security2.conf<\/p>\n<p>o zawarto\u015bci:<\/p>\n<p>Include \/etc\/apache2\/mod_security\/*.conf<\/p>\n<p>Tworzymy katalog, w kt\u00f3rym b\u0119d\u0105 przechowywane regu\u0142y filtr\u00f3w:<\/p>\n<p>mkdir \/etc\/apache2\/mod_security<\/p>\n<p>Umieszczamy w nim filtry, kt\u00f3re pobrali\u015bmy wraz modu\u0142em:<\/p>\n<p>cp \/usr\/src\/mod_security\/modsecurity-apache_2.5.9\/rules\/*.conf \/etc\/apache2\/mod_security\/<\/p>\n<p>Domy\u015blnie modu\u0142 stara si\u0119 umieszcza\u0107 logi w katalogu \/etc\/apache2\/logs , je\u015bli nie zmienimy tej domy\u015blnej konfiguracji w pliku \/etc\/apache2\/mod_security\/modsecurity_crs_10_config.conf musimy utworzy\u0107 katalog:<\/p>\n<p>mkdir \/etc\/apache2\/logs<\/p>\n<p>Szybki restart us\u0142ugi:<\/p>\n<p>\/etc\/init.d\/apache2 restart<\/p>\n<p>W tym momencie modu\u0142 mod_security zosta\u0142 zainstalowany i uruchomiony do pracy z naszym serwerem apache2.<\/p>\n<p>Wcze\u015bniej pisa\u0142em \u017ce zmienimy informacje o nazwie serwera www, kt\u00f3ry pracuje na naszej maszynie. W jaki spos\u00f3b przedstawia si\u0119 nasz serwer mo\u017cemy sprawdzi\u0107 za pomoc\u0105 serwisu:<\/p>\n<p>Nasz serwer przedstawia si\u0119 jako:<\/p>\n<p>Apache<\/p>\n<p>Sprawd\u017amy jak przedstawiaj\u0105 si\u0119 znane serwery znanych firm:<\/p>\n<p>Onet.pl &#8211; AOLserver\/3.4.2<\/p>\n<p>Wp.pl &#8211; aris<\/p>\n<p>Microsoft.pl &#8211; Microsoft-IIS\/7.0<\/p>\n<p>Na potrzeby tego artyku\u0142u b\u0119dziemy przedstawia\u0107 si\u0119 jako aris, w tym celu w pliku w pliku \/etc\/apache2\/mod_security\/modsecurity_crs_10_config.conf ustawiamy dyrektyw\u0119:<\/p>\n<p>SecServerSignature &#8222;aris&#8221;<\/p>\n<p>Oczywi\u015bcie nazwa serwera to dowolny ci\u0105g znak\u00f3w i nic nie stoi na przeszkodzie aby serwer nazwa\u0107 antynet.pl lub jeszcze inaczej, jak to zrobi\u0142 administrator serwera debacom.pl.<\/p>\n<p>Gor\u0105co zach\u0119cam do zapoznania si\u0119 zawarto\u015bci\u0105 plik\u00f3w w katalogu \/etc\/apache2\/mod_security\/ nawet pocz\u0105tkuj\u0105cy administrator bez wi\u0119kszych problem\u00f3w b\u0119dzie potrafi\u0142 tworzy\u0107 w\u0142asne zaawansowane regu\u0142y filtrowania.<\/p>\n<p>W Internecie mo\u017cna znale\u017a\u0107 zbiory regu\u0142 przygotowane przez zaawansowanych administrator\u00f3w, zwykle regu\u0142y te zabezpieczaj\u0105 przed nowo wykrytymi lukami bezpiecze\u0144stwa w aplikacjach PHP. Imponuj\u0105cy zbi\u00f3r regu\u0142 znajduje si\u0119 pod adresem\u00a0<a style=\"font-family: Tahoma, Arial, Helvetica, sans-serif; text-decoration: none; color: #34717f;\" title=\"http:\/\/www.gotroot.com\/tiki-index.php?page=mod_security+rules\" href=\"http:\/\/www.gotroot.com\/tiki-index.php?page=mod_security+rules\" rel=\"nofollow noopener\" target=\"_blank\">http:\/\/www.gotroot.com\/tiki-index.php?page=mod_security+rules<\/a> .<\/p>\n<p>Zmor\u0105 system\u00f3w CMS s\u0105 boty spamuj\u0105ce fora, komentarze itp. formularze, przy pomocy modsecurity mo\u017cemy unieszkodliwi\u0107 te dzia\u0142ania jeszcze zanim zapytanie dotrze do atakowanego skryptu.<\/p>\n<p><strong>Podsumowanie<\/strong><\/p>\n<p>Instalacja serwera www apache2 wraz z PHP i MYSQL, nie jest zaskakuj\u0105co trudnym zadaniem, wystarcz\u0105 absolutne podstawy znajomo\u015bci linuxa. W podstawowej konfiguracji serwer jest prosty w obs\u0142udze, nie stwarza problem\u00f3w z uruchomieniem zaawansowanych skrypt\u00f3w CMS. Jednak\u017ce taka konfiguracja jest niezwykle niebezpieczna, to w\u0142a\u015bnie podstawowe konfiguracje s\u0105 powodem tak wielu w\u0142ama\u0144 na strony internetowe. W\u0142amanie na stron\u0119 to nie tylko deface strony www, od pewnego czasu coraz cz\u0119\u015bciej w\u0142amania s\u0105 niezauwa\u017calne dla administrator\u00f3w i u\u017cytkownik\u00f3w. W\u0142amywacze wykorzystuj\u0105 skompromitowane strony www do rozprzestrzeniania z\u0142o\u015bliwego oprogramowania, rozsy\u0142ania spamu a nawet do \u0142\u0105czenia serwer\u00f3w w botnety i wykonywania atak\u00f3w Ddos. Zastosowanie si\u0119 administratora do porad zawartych w tym artykule w znakomity spos\u00f3b zabezpiecza serwer przed wi\u0119kszo\u015bci\u0105 tego typu zagro\u017ce\u0144. Nic jednak nie zwalnia administratora od czytania dziennik\u00f3w zdarze\u0144 i reagowania na zagro\u017cenia poprzez ci\u0105g\u0142\u0105 aktualizacj\u0119 oprogramowania, konfiguracji oraz instalowania aktualnych filtr\u00f3w modsecurity. Filtry s\u0105 jak bazy antywirusowe, nale\u017cy je mo\u017cliwie cz\u0119sto aktualizowa\u0107.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>W tym artykule zajm\u0119 si\u0119 konfiguracj\u0105 serwera apache2 w \u015brodowisku Debian. Krok po kroju zainstalujemy apache2 wraz z php5, mysql5 oraz kilkoma dodatkami podnosz\u0105cymi bezpiecze\u0144stwo naszej instalacji. Zainstalowanie tego oprogramowania ci\u0119\u017cko nazwa\u0107 czym\u015b trudnym, jednak\u017ce skonfigurowa\u0107 wszystko w spos\u00f3b skutecznie utrudniaj\u0105cy hackerom \u017cycie jest ju\u017c pewnym wyzwaniem. Artyku\u0142 zosta\u0142 tak napisany by czytaj\u0105c go i [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[3],"tags":[],"class_list":["post-71","post","type-post","status-publish","format-standard","hentry","category-uslugi"],"_links":{"self":[{"href":"https:\/\/www.antynet.pl\/index.php\/wp-json\/wp\/v2\/posts\/71","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.antynet.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.antynet.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.antynet.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.antynet.pl\/index.php\/wp-json\/wp\/v2\/comments?post=71"}],"version-history":[{"count":2,"href":"https:\/\/www.antynet.pl\/index.php\/wp-json\/wp\/v2\/posts\/71\/revisions"}],"predecessor-version":[{"id":943,"href":"https:\/\/www.antynet.pl\/index.php\/wp-json\/wp\/v2\/posts\/71\/revisions\/943"}],"wp:attachment":[{"href":"https:\/\/www.antynet.pl\/index.php\/wp-json\/wp\/v2\/media?parent=71"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.antynet.pl\/index.php\/wp-json\/wp\/v2\/categories?post=71"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.antynet.pl\/index.php\/wp-json\/wp\/v2\/tags?post=71"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}