1. Zabezpiecz swoją stronę w
Joomla! – od wyboru hostingu do
strony produkcyjnej
Wojciech Klocek
2. 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
3. Wybór hostingu
Co powinien posiadać idealny hosting:
• Support 24/7,
• Regularne kopie zapasowe,
• Możliwość odtworzenia lub pobrania kopii
zapasowych,
• Zabezpieczenia – firewall, blokowanie portów,
systemy antywirusowe.
4. 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…
5. Serwer FTP
Wyłącz w Joomla! obsługę protokołu FTP.
Generalnie nie jest on w jakimkolwiek stopniu
potrzebny czy używany jeśli stosujesz klienta
FTP.
6. 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
8. 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 URL
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]
• # Block out any script that includes a < script> tag in URL
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
• # Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
• # Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{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]
9. 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
10. 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
11. 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
12. 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
13. 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
14. 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 ALL
Allow from x.x.x.x
15. .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 Basic
AuthUserFile /home/myaccount/.HTPASSWD
require valid-user
16. Two-Factor Authentication
• Dodatkowe pole z
unikalnym kluczem
generowanym
dynamicznie,
• Wymaga pobrania na
urządzenie mobilne
programu
generującego klucz
20. Nieużywane Zasoby
Elementy, 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.
21. 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
22. 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
23. 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ę
24. Captcha ReCaptcha
• Eliminuje w znaczny sposób ilość fałszywych
kont,
• Praktycznie uniemożliwia botom dodawanie
komentarzy,
• Znacznie ogranicza ilość otrzymywanego
spamu.
25. 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