SlideShare una empresa de Scribd logo
1 de 27
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 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.
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 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.
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 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]
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 ALL
Allow 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 Basic
AuthUserFile /home/myaccount/.HTPASSWD
require 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 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.
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
Dziękuję za uwagę
http://morphic.pl
kontakt@morphic.pl
690 696 232

Más contenido relacionado

La actualidad más candente

ansible kmonticolo bezlogo
ansible kmonticolo bezlogoansible kmonticolo bezlogo
ansible kmonticolo bezlogo
Kamil Monticolo
 
Apache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użyciaApache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użycia
Wojciech Lichota
 
HTTP od zera do bohatera
HTTP od zera do bohateraHTTP od zera do bohatera
HTTP od zera do bohatera
HordeTechnology
 

La actualidad más candente (20)

REST API - teoria i praktyka - WordUp Warszawa
REST API - teoria i praktyka - WordUp WarszawaREST API - teoria i praktyka - WordUp Warszawa
REST API - teoria i praktyka - WordUp Warszawa
 
REST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp TrójmiastoREST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp Trójmiasto
 
Word up warszawa 2015
Word up warszawa 2015Word up warszawa 2015
Word up warszawa 2015
 
Motywy dla WordPressa - historia prawdziwa - WordUp Katowice
Motywy dla WordPressa - historia prawdziwa - WordUp KatowiceMotywy dla WordPressa - historia prawdziwa - WordUp Katowice
Motywy dla WordPressa - historia prawdziwa - WordUp Katowice
 
Word up łódź kwiecień 2015
Word up łódź   kwiecień 2015Word up łódź   kwiecień 2015
Word up łódź kwiecień 2015
 
Błędy userów, niedoróbki koderów
Błędy userów, niedoróbki koderówBłędy userów, niedoróbki koderów
Błędy userów, niedoróbki koderów
 
Electron + WordPress = ❤
Electron + WordPress = ❤Electron + WordPress = ❤
Electron + WordPress = ❤
 
ansible kmonticolo bezlogo
ansible kmonticolo bezlogoansible kmonticolo bezlogo
ansible kmonticolo bezlogo
 
Hugo - make webdev fun again
Hugo - make webdev fun againHugo - make webdev fun again
Hugo - make webdev fun again
 
Serwer internetowy w systemie Linux
Serwer internetowy w systemie LinuxSerwer internetowy w systemie Linux
Serwer internetowy w systemie Linux
 
Apache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użyciaApache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użycia
 
Zhakuj swojego Wordpressa, WordUP Trojmiasto
Zhakuj swojego Wordpressa, WordUP TrojmiastoZhakuj swojego Wordpressa, WordUP Trojmiasto
Zhakuj swojego Wordpressa, WordUP Trojmiasto
 
Wordpress dla początkujących szkolenie / warsztat 08/10 Wtyczki
Wordpress dla początkujących szkolenie / warsztat 08/10 WtyczkiWordpress dla początkujących szkolenie / warsztat 08/10 Wtyczki
Wordpress dla początkujących szkolenie / warsztat 08/10 Wtyczki
 
[BDD] Introduction to Behat (PL)
[BDD] Introduction to Behat (PL)[BDD] Introduction to Behat (PL)
[BDD] Introduction to Behat (PL)
 
Drupal multisite i domain access - kiedy, jak i dlaczego [PL]
Drupal multisite i domain access - kiedy, jak i dlaczego [PL]Drupal multisite i domain access - kiedy, jak i dlaczego [PL]
Drupal multisite i domain access - kiedy, jak i dlaczego [PL]
 
HTTP od zera do bohatera
HTTP od zera do bohateraHTTP od zera do bohatera
HTTP od zera do bohatera
 
Poznaj wp-config.php "Ukryte" możliwości.
Poznaj wp-config.php  "Ukryte" możliwości.Poznaj wp-config.php  "Ukryte" możliwości.
Poznaj wp-config.php "Ukryte" możliwości.
 
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótkaWebpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
 
Wordpress dla początkujących szkolenie / warsztat 09/10 migracje, backup, mul...
Wordpress dla początkujących szkolenie / warsztat 09/10 migracje, backup, mul...Wordpress dla początkujących szkolenie / warsztat 09/10 migracje, backup, mul...
Wordpress dla początkujących szkolenie / warsztat 09/10 migracje, backup, mul...
 
HTML5: Atak i obrona
HTML5: Atak i obronaHTML5: Atak i obrona
HTML5: Atak i obrona
 

Similar a Zabezpiecz swoją stronę w Joomla!

Flash i PHP5. Podstawy
Flash i PHP5. PodstawyFlash i PHP5. Podstawy
Flash i PHP5. Podstawy
Wydawnictwo Helion
 

Similar a Zabezpiecz swoją stronę w Joomla! (20)

Feo w-joomla
Feo w-joomlaFeo w-joomla
Feo w-joomla
 
Xdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHPXdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHP
 
W3 Total Cache - skuteczne przyśpieszanie WordPressa
W3 Total Cache - skuteczne przyśpieszanie WordPressaW3 Total Cache - skuteczne przyśpieszanie WordPressa
W3 Total Cache - skuteczne przyśpieszanie WordPressa
 
Drobne błędy w portalach WWW -- prawdziwe studium przypadku
Drobne błędy w portalach WWW -- prawdziwe studium przypadkuDrobne błędy w portalach WWW -- prawdziwe studium przypadku
Drobne błędy w portalach WWW -- prawdziwe studium przypadku
 
Jaki hosting pod wordpressa
Jaki hosting pod wordpressaJaki hosting pod wordpressa
Jaki hosting pod wordpressa
 
Automatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHPAutomatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHP
 
Daj się wyręczyć - Joomla Day Polska 2014
Daj się wyręczyć - Joomla Day Polska 2014Daj się wyręczyć - Joomla Day Polska 2014
Daj się wyręczyć - Joomla Day Polska 2014
 
Wydajny frontend 2023
Wydajny frontend 2023Wydajny frontend 2023
Wydajny frontend 2023
 
xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
xD bug - Jak debugować PHP-owe aplikacje (Xdebug) xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
 
WordUp Warszawa - Wordpress dla początkujących
WordUp Warszawa - Wordpress dla początkującychWordUp Warszawa - Wordpress dla początkujących
WordUp Warszawa - Wordpress dla początkujących
 
Bezpieczeństwo stron opartych na popularnych systemach zarządzania treścią
Bezpieczeństwo stron opartych na popularnych systemach zarządzania treściąBezpieczeństwo stron opartych na popularnych systemach zarządzania treścią
Bezpieczeństwo stron opartych na popularnych systemach zarządzania treścią
 
Flash i PHP5. Podstawy
Flash i PHP5. PodstawyFlash i PHP5. Podstawy
Flash i PHP5. Podstawy
 
WordPress dla początkujących
WordPress dla początkującychWordPress dla początkujących
WordPress dla początkujących
 
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
 
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistomWordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
 
Za darmo nie umarło - WordCamp Wrocław
Za darmo nie umarło - WordCamp WrocławZa darmo nie umarło - WordCamp Wrocław
Za darmo nie umarło - WordCamp Wrocław
 
Krytyczne błędy konfiguracji
Krytyczne błędy konfiguracjiKrytyczne błędy konfiguracji
Krytyczne błędy konfiguracji
 
Jak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyJak stworzyć udany system informatyczny
Jak stworzyć udany system informatyczny
 
Dekalog bezpieczeństwa Magento
Dekalog bezpieczeństwa MagentoDekalog bezpieczeństwa Magento
Dekalog bezpieczeństwa Magento
 
[PLCUG] Power shell (PL)
[PLCUG] Power shell (PL)[PLCUG] Power shell (PL)
[PLCUG] Power shell (PL)
 

Zabezpiecz swoją stronę w Joomla!

  • 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
  • 7. 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
  • 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
  • 19. Certyfikaty SSL • Umożliwiają ochronę plików cookies, • Ochrona sesji, • Uwiarygodnienie połączenia certyfikatem
  • 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
  • 26. Rozszerzenia do zarządzania bezpieczeństwem • Akeeba Admin Tools • jHackGuard • RSFirewall