zabezpiecz swoją stronę w joomla!
TRANSCRIPT
Zabezpiecz swoją stronę w Joomla! – od wyboru hostingu
do strony produkcyjnej
Wojciech Klocek
Zacznij od SIEBIe• Zainwestuj w program antywirusowy,• Nie zapisuj haseł w przeglądarce i kliencie FTP,• Zapisywanie haseł na kartkach i przyklejanie
ich na monitor czy biurko też nie jest dobrym pomysłem
Wybór hostinguCo powinien posiadać idealny hosting:• Support 24/7,• Regularne kopie zapasowe,• Możliwość odtworzenia lub pobrania kopii
zapasowych,• Zabezpieczenia – firewall, blokowanie portów,
systemy antywirusowe.
Baza danych• Używaj innego użytkownika dla bazy danych
niż główny użytkownik na hostingu• Używaj randomowych i unikalnych prefixów
tabel• Phpmyadmin jest fajny, ale…
Serwer FTPWyłącz w Joomla! obsługę protokołu FTP. Generalnie nie jest on w jakimkolwiek stopniu potrzebny czy używany jeśli stosujesz klienta FTP.
Hasła i Hasełka• Hasło powinno być w miarę silne – najbardziej
podstawowa bezpieczna kombinacja to minimum 6 znaków – pięć liter (z czego jedna duża), jedna cyfra i jeden znak specjalny,
• Przykładowo hasło Admin1# jest hasłem już w miarę bezpiecznym,
• Wbrew pozorom numer PESEL jest hasłem bezpiecznym
Ustawienia serwera – php.ini• disable_functions = show_source, system,
shell_exec, passthru, exec, phpinfo, popen, proc_open
• magic_quotes_gpc = 0• safe_mode = 0• register_globals = 0• allow_url_include = 0
Plik .htaccess• # Block out any script trying to set a mosConfig value through the URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [OR]
• # Block out any script trying to base64_encode crap to send via URLRewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]
• # Block out any script that includes a < script> tag in URLRewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
• # Block out any script trying to set a PHP GLOBALS variable via URLRewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
• # Block out any script trying to modify a _REQUEST variable via URLRewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2}) [OR]
• # Block out any script that tries to set CONFIG_EXT (com_extcal2 issue)RewriteCond %{QUERY_STRING} CONFIG_EXT([|%20|%5B).*= [NC,OR]
• # Block out any script that tries to set sbp or sb_authorname via URL (simpleboard)RewriteCond %{QUERY_STRING} sbp(=|%20|%3D) [OR]
RewriteCond %{QUERY_STRING} sb_authorname(=|%20|%3D)
• # Send all blocked request to homepage with 403 Forbidden error!RewriteRule ^(.*)$ index.php [F,L]
Użytkownicy• Wyłącz automatyczną rejestrację
użytkowników• Jeśli posiadasz włączoną rejestrację to ustaw
potwierdzenie rejestracji lub akceptację przez nowych kont przez administratorów serwisu
Superadministrator• Po zainstalowaniu Joomla! utwórz nowe konto
Superadministratora, a staremu zmień uprawnienia lub je usuń – inny numer ID
• Im mniej Superadminów tym stabilniejsza praca i mniej śmieci
• Zmiana domyślnej nazwy Superadmina
Kopie zapasowe• Rób kopie minimum raz dziennie oraz przed
każdą znaczącą zmianą na stronie• Możliwe jest również zautomatyzowanie
tworzenia kopii – Akeeba Backup oraz Cron
Aktualizacje• Pamiętaj o aktualizacjach, szczególnie tych
usuwających błędy krytyczne oraz luki w zabezpieczeniach
• Przy innych aktualizacjach odczekaj parę dni i poszukaj opinii czy wszystko działa prawidłowo
Prawa dostępu do folderów i plików
Prawa dostępu (CHMOD):• Pliki PHP – 644• Plik configuration.php – 644 (lub 444)• Pliki hmtl oraz zdjęcia - 644• Katalogi – 755• Katalog główny instalacji Joomla! - 750• Nigdy nie używaj 777, jeśli już jest to
absolutnie niezbędne ustaw 707
Logowanie do zaplecza• Inna ścieżka dostępu do zaplecza• Ograniczenie dostępu dla wybranych
numerów IP (w pliku .htaccess) – w przypadku stałego IP dla adminów
Deny from ALLAllow from x.x.x.x
.htpasswd• Utwórz w katalogu administrator plik .htpasswd• W jego wnętrzu umieść login:hasło• Utwórz plik .htaccess w katalogu administrator• Wewnąrz pliku umieść kod:
AuthName "Secured Area"AuthType BasicAuthUserFile /home/myaccount/.HTPASSWDrequire valid-user
Two-Factor Authentication• Dodatkowe pole z
unikalnym kluczem generowanym dynamicznie,
• Wymaga pobrania na urządzenie mobilne programu generującego klucz
Two-Factor Authentication
YubiKey
Certyfikaty SSL• Umożliwiają ochronę plików cookies,• Ochrona sesji,• Uwiarygodnienie połączenia certyfikatem
Nieużywane ZasobyElementy, których nie używasz najlepiej usunąć z CMS-a. Poza potencjalnymi błędami w kodzie, rootkitami mogą one również znacząco spowalniać działanie strony.
Dotyczy to zarówno komponentów, modułów i wtyczek, jak i szablonów.
Legalność• Instaluj tylko oryginalne rozszerzenia• Rozszerzenia pobrane z warezów mogą:– Zawierać złośliwy kod,– Zawierać backdoory,– Zawierać niechciane treści reklamowe oraz
przekierowania
Rozszerzenia• Instaluj rozszerzenia pochodzące z zaufanych
źródeł (JED, strony producentów)• Jeśli na stronie wyświetla się informacja
odnośnie rozszerzenia staraj się ją ukryć – dajesz osobie atakującej informacje z czego korzystasz
System komentarzy• Zastąp standardowy system
komentarzy innym, np. Disqus – zwłaszcza w przypadku K2,
• Włącz dla komentarzy Captcha,• Zapobiegaj automatycznemu
publikowaniu komentarzy – włącz ich moderację
Captcha ReCaptcha• Eliminuje w znaczny sposób ilość fałszywych
kont,• Praktycznie uniemożliwia botom dodawanie
komentarzy,• Znacznie ogranicza ilość otrzymywanego
spamu.
Rozszerzenia typu SEF• Dobry dodatek SEF zwiększa również
bezpieczeństwo strony• Maskuje on wyświetlanie w URL-u informacji
odnośnie użytego rozszerzenia• sh404SEF zawiera element zabezpieczający
zatrzymujący różne ataki i informujący o tym na maila
• Usuwa ona również Tag Generator informujący o rodzaju wykorzystywanego CMS-a
Rozszerzenia do zarządzania bezpieczeństwem
• Akeeba Admin Tools• jHackGuard• RSFirewall