Jak zadbać o bezpieczeństwo forum

Założony przez Szogi1910.

Witajcie 
W tym poradniku przedstawie wam jak zabezpieczyć się przed nie autoryzowanym dostępem do witryny 

Dwie z najważniejszych zasad jest posiadanie aktualnej wersji skryptu oraz posiadanie mocnych haseł.
Pamiętaj również o wykonaniu kopii zapasowej, która możemy ustawić aby odbywała się codziennie.


1 Ustawianie automatycznych kopii zapasowych


W tym celu logujemy sie do Acp - Narzędzia i Konserwacja - Menadżer zadań następnie odszukujemy Codzienna kopia zapasowa - wybieramy opcje - włącz zadanie.
Wykonywanie automatycznych kopii zapasowych możemy zaplanować kiedy maja się odbywać, aby zmienić te ustawienia Wybieramy opcje - Edytuj Zadanie.


2 Ukrywanie informacji o  wersji skryptu


Następna nasza czynnością będzie ukrycie informacji o wersji skryptu mybb, aby to zrobić należny
Zalogować się do ACP następnie Konfiguracja - Ustawienia strony - Pokazuj numer wersji - ustawiamy na Nie 

3 Zmiana nazwy katalogu /admin


Logujemy sie na konto ftp za pomocą klienta FTP wybieramy opcje zmień nazwę dla katalogu adminNastępnie w pliku config.php podajemy nowa nazwe katalogu.
$config['admin_dir'] = 'admin'

4 Weryfikacja dwuetapowa


Aby uzyskać weryfikacje dwuetapowa do naszego panelu administracyjnego musimy wykonać odpowiednie kroki w celu jej konfiguracja 
Logujemy się do Acp - Start (Home) - Ustawienia Acp - Dwuetapowa weryfikacja - Wybieramy Tak
Następnym naszym krokiem będzie pobranie aplikacji Google Authenticator lub Authy (Aplikacje są przeznaczone na urządzenia z Androidem)
W przypadku utraty dostępu do urządzenia, przez które uzyskiwaliśmy kody autoryzacji ulegnie zniszczeniu lub utracie do panelu administracyjnego możemy się zalogować wcześniej pozyskanymi kodami zapasowymi. 
Aby pozyska kody zapasowe musimy przejść do Acp - Start (Home) - Ustawienia Acp - Weryfikacja dwuetapowa - nastepnie odszukujemy fraze kody zapasowe lub przechodzimy poprzez podany adres.
http://adresstrony.pl//admin/index.php?module=home-preferences&action=recovery_codes
Uwaga: kody zapasowe są regenerowane przy każdej wizycie na stronie i mogą być użyte jedynie


5 Ukrywanie linku do panelu administratora.


Logujemy sie na konto ftp za pomocą klienta FTP, nastepnie przechodzimy do /inc/config.php i edytujemy plik 
$config['hide_admin_links'] = 0 – link jest widoczny1 – link ukryty

6 Ustalenie pinu dla acp


Gdy podczas instalacji skryptu mybb pominęliśmy opcje utworzenia naszego sekretnego pinu do acp, możemy go ustalić poprzez edycje pliku.
W tym przypadku będziemy musieli się zalogować na nasze konto ftp, po zalogowaniu na nasze konto ftp przechodzimy do katalogu /inc/config.php i edytujemy plik 

$config['secret_pin'] = 'Nasz sekretny pin'

7 Szyfrowanie pinu do acp w md5


Logujemy sie na nasze konto ftp, po czym przechodzimy do /admin/index.php
W index.php odszukujemy linie 
if(!empty($config['secret_pin']) && (empty($mybb->input['pin']) || $mybb->input['pin'] != $config['secret_pin'])) 
Następnie podmieniamy na 
if(!empty($config['secret_pin']) && (empty($mybb->input['pin']) || md5($mybb->input['pin']) != $config['secret_pin'])) 

W pliku /inc/config.php podajemy nasz tajny pin w postaci md5. Aby wygenerować nasze hasło w postaci md5 można skorzystać z darmowych generatorów .np http://www.md5hashgenerator.com/
Po wygenerowaniu naszego hasła w md5, linijka odpowiedzialna za tajny pin, powinna wyglądać przykładowo
$config['secret_pin'] = '81dc9bdb52d04dc20036dbd8313ed055'

8 Blokowanie edytowania konta głównego administratora


Aby zablokować możliwość edycji konta głównego administratora za pomocą acp poprzez inne osoby, musimy nadać mu uprawnienia super administratora.
W przypadku głównego administratora, który wykonał instalacje skryptu jego Uid wynosi 1

Teraz musimy zalogować się ponownie na nasze konto ftp oraz dokonać zmian w /inc/config.php

$config['super_admins'] = '1'; - Domyślnie ustawione na konto podane podczas instalacji skryptu 
Dodatkowo mozemy nadac super administratora dodatkowym osoba, odbywa sie to tak samo tylko musimy dodac jego Uid po ,

$config['super_admins'] = '1,2'; - Domyślnie ustawione na konto podane podczas instalacji skryptu oraz dla drugiego administratora 

9 Ograniczenie nieudanych prób logowania na  konta administratora


Aby ograniczyć możliwość nie udanych logowań do panelu administratora po błędnych próbach możemy zmienić ich ilość oraz ograniczyć czasowo limit do ponownego logowania w tym celu musimy zalogować się do Acp - konfiguracja - Preferencje panelu administratora następnie możemy ograniczyć próby logowań do 3 lub według uznania w zakładce Maksymalna liczba nieudanych prób logowania oraz ustalić czas do następnej próby logowania w zakładce 
Czas pomiędzy nieudanymi próbami zalogowania


10 Zmiana prefixow bazy danych


Podczas instalacji skryptu mybb możemy ustalic wlasny prefix bazy czyli zamiast mybb_ podajemy np. k7w1_
Jeżeli pozostaliśmy przy domyślnym prefiksie bazy danych możemy go zmienić poprzez edycje pliku w /inc/config.php
$config['database']['table_prefix'] = 'mybb_'
Teraz aby uniknąć problemów po zmianie prefikow z nie działającym forum, musimy pobrać nasza bazę.
Nastepnie edytujemy ja np. notepadd ++  odszykujemy w niej mybb_ nastepnie zmieniamy na nowy prefix np. k7w1 po wykonaniu tych czynności zapisujemy plik z nasza baza danych.  Przed zaimportowaniem bazy danych po zmianie prefixow, należy usunąć cala nasza bazę danych z phpmyadmin i zaimportować nowa ze zmienionymi prefiksami 
Przeprowadzenie zmiany prefixow możemy wykonać z poziomu Pma
W tym celu logujemy sie do phpmyadmin następnie wybieramy nasza bazę danych po czym przechodzimy do zakładki SQL i wykonujemy następujące zapytania 

RENAME TABLE mybb_adminlog Na k7w1_adminlog
RENAME TABLE mybb_adminoptions Na k7w1_adminoptions
RENAME TABLE mybb_announcements Na k7w1_announcements
RENAME TABLE mybb_attachments Na k7w1_attachments
RENAME TABLE mybb_attachtypes Na k7w1_attachtypes
RENAME TABLE mybb_awaitingactivation Na k7w1_awaitingactivation
RENAME TABLE mybb_badwords Na k7w1_badwords
RENAME TABLE mybb_banned Na k7w1_banned
RENAME TABLE mybb_datacache Na k7w1_datacache
RENAME TABLE mybb_events Na k7w1_events
RENAME TABLE mybb_favorites Na k7w1_favorites
RENAME TABLE mybb_forumpermissions Na k7w1_forumpermissions
RENAME TABLE mybb_forums Na k7w1_forums
RENAME TABLE mybb_forumsubscriptions Na k7w1_forumsubscriptions
RENAME TABLE mybb_groupleaders Na k7w1_groupleaders
RENAME TABLE mybb_helpdocs Na k7w1_helpdocs
RENAME TABLE mybb_helpsections Na k7w1_helpsections
RENAME TABLE mybb_icons Na k7w1_icons
RENAME TABLE mybb_joinrequests Na k7w1_joinrequests
RENAME TABLE mybb_moderatorlog Na k7w1_moderatorlog
RENAME TABLE mybb_moderators Na k7w1_moderators
RENAME TABLE mybb_polls Na k7w1_polls
RENAME TABLE mybb_pollvotes Na k7w1_pollvotes
RENAME TABLE mybb_posts Na k7w1_posts
RENAME TABLE mybb_privatemessages Na k7w1_privatemessages
RENAME TABLE mybb_profilefields Na k7w1_profilefields
RENAME TABLE mybb_regimages Na k7w1_regimages
RENAME TABLE mybb_reportedposts Na k7w1_reportedposts
RENAME TABLE mybb_reputation Na k7w1_reputation
RENAME TABLE mybb_searchlog Na k7w1_searchlog
RENAME TABLE mybb_sessions Na k7w1_sessions
RENAME TABLE mybb_settinggroups Na k7w1_settinggroups
RENAME TABLE mybb_settings Na k7w1_settings
RENAME TABLE mybb_smilies Na k7w1_smilies
RENAME TABLE mybb_templates Na k7w1_templates
RENAME TABLE mybb_templatesets Na k7w1_templatesets
RENAME TABLE mybb_themes Na k7w1_themes
RENAME TABLE mybb_threadratings Na k7w1_threadratings
RENAME TABLE mybb_threads Na k7w1_threads
RENAME TABLE mybb_threadsread Na k7w1_threadsread
RENAME TABLE mybb_userfields Na k7w1_userfields
RENAME TABLE mybb_usergroups Na k7w1_usergroups
RENAME TABLE mybb_users Na k7w1_users
RENAME TABLE mybb_usertitles Na k7w1_usertitles 


11 Dodatkowa ochrona pliku /inc/config.php


W katalogu inc tworzymy nowy plik o nazwie .htaccess, następnie umieszczamy w nim zawartość podana niżej 
# Ochrona config.php
<files config.php> 
Order deny
,allow 
deny from all 
</files
  

12 Zmiana nazwy pliku config.php


Aby zmienić domyślna nazwę pliku config.php, musimy zalogować się na nasze konto ftp. Następną czynnością będzie sklonowanie pliku config.php pod nowa nazwą czyli kopiujemy całą zawartość config.php do nowe pliku z nową nazwą np.config1.php gdy już to wykonaliśmy, wgrywamy nasz zmieniony config do katalogu /inc/ po tych czynnościach otwieramy nasz plik oryginalny config.php i usuwamy jego zawartość a następnie dodajemy zawartość poniżej i wysyłamy na serwer. 
Pamiętaj o nadaniu chmod dla nowego pliku, który jest następujący 666


<?
if (realpath(__FILE__) == realpath($_SERVER['SCRIPT_FILENAME'])) {
    exit('Denied.');
}

@include(
'nasznazwaconfigu.php');
?>

13 Usuwanie możliwości pobrania kopii zapasowej poprzez acp


Logujemy się na nasze konto ftp, po czym przechodzimy do katalogu /admin/modules/tools i pobieramy plik backupdb.php gdy już pobraliśmy plik przystępujemy do jego edycji.

Odnajdź

$table->construct_cell("<a href=\"index.php?module=tools-backupdb&amp;action=dlbackup&amp;file={$backup['file']}\">{$backup['file']}</a>");
$table->construct_cell(get_friendly_size(filesize(MYBB_ADMIN_DIR.'backups/'.$backup['file'])), array("class" => "align_center")); 
Następnie usuń

<a href=\"index.php?module=tools-backupdb&amp;action=dlbackup&amp;file={$backup['file']}\"> 
Odnajdź

$table->construct_cell("{$backup['file']}</a>"); 
Następnie usuń

</a
Odszukaj i usuń

$table->construct_cell("<a href=\"index.php?module=tools-backupdb&amp;action=backup&amp;action=delete&amp;file={$backup['file']}&amp;my_post_key={$mybb->post_code}\" onclick=\"return AdminCP.deleteConfirmation(this, '{$lang->confirm_backup_deletion}')\">{$lang->delete}</a>", array("class" => "align_center")); 
Odszukaj 

$table->construct_cell("<strong>{$lang->save_method}</strong><br />\n{$lang->save_method_desc}<br /><div class=\"form_row\">".$form->generate_radio_button("method""disk"$lang->backup_directory)."<br />\n".$form->generate_radio_button("method""download"$lang->download, array('checked' => 1))."</div>", array('width' => '50%')); 
Następnie usuń

"<br />\n".$form->generate_radio_button("method""download"$lang->download, array('checked' => 1)). 

Odszukaj
flash_message("<span><em>{$lang->success_backup_created}</em></span><p>{$lang->backup_saved_to}<br />{$file}{$ext} (<a href=\"{$file_from_admindir}\">{$lang->download}</a>)</p>"'success'); 

Następnie usuń
<p>{$lang->backup_saved_to}<br />{$file}{$ext} (<a href=\"{$file_from_admindir}\">{$lang->download}</a>)</p> 


Po wykonani tych czynności nadpisujemy plik i cieszymy się brakiem możliwości pobierania kopii zapasowej za pomocą acp.


14 Dodatkowe zabezpieczenie katalogu /admin na adres ip


Katalog /admin możemy dodatkowo zabezpieczyć na dodatkowe adresy ip , dzięki któremu utrudnimy dostęp do naszego Acp na forum
W tym celu tworzymy nowy plik o nazwie .htaccess w katalogu /admin z następująca zawartością.

Order Deny,Allow
Deny from all
Allow from 127.0.0.1 
Przed wysłaniem pliku na serwer warto pamiętać o podmianie adresu ip 127.0.0.1 na własny adres ip, metoda ta jest skuteczna przy stałym adresie ip.

Ustawienie poprawnych praw dla plików (chmod)
Nie będę rozpisywał się jak w danym programie ustalać uprawnienia chmod z racji ze mamy kilkanaście klientów ftp, poniżej zamieszczę informacje jakie pliki i katalogi powinny zawierać chmody zalecane poprzez mybb.com

Plik lub katalog                             Uprawnienia
-------------------------------------------------------
inc/config.php                                666
inc/settings.php                              666
cache/                                        777
cache/themes/                                 777
uploads/                                      777
uploads/avatars/                              777
admin/backups/                                777
inc/languages/każdy katalog/każdy plik        666
inc/languages/każdy katalog/admin/każdy plik  666

15 Instalacja pluginów na forum


Dodatkowym zabezpieczeniem przed utrata dostępu do forum jest instalowanie pluginów pobranych z oficjalnej bazy www.mybb.com lub z innych oficjalnych supportów mybb jak hmybboard.pl 
Pobierając plugin od stron trzecich możemy zostań, narażeni na instalacje plugin z kodem złośliwym dzięki temu atakujący będzie mógł uzyskać nie autoryzowany dostęp do naszej witryny www

Najczęstsza metoda straty dostępu do naszego forum są.
Nie odpowiednie rozdawanie uprawnień innym osoba.
Posiadanie tych samych haseł do różnych stron.
Brak posiadania aktualnego antywirusa na komputerze.
Posiadanie zbyt słabych haseł dostępu.
Korzystanie z opcji zapamiętaj hasło.
Korzystanie z przestarzałych programów komunikacyjnych ftp
(08.02.2016, 12:49)Szogi1910 napisał(a): Witajcie
  • Aby ustawić automatyczne kopie zapasowe
W tym celu logujemy sie do Acp - Narzędzia i Konserwacja - Menadżer zadań następnie odszukujemy [b]Codzienna kopia zapasowa - wybieramy opcje - włącz zadanie.

Mam tylko tygodniowa kopia zapasowa
Prośby na PW dotyczące wsparcia z problemami będą ignorowane. Pomoc poza forum - odpłatna.
(08.02.2016, 19:14)Conors napisał(a): Mam tylko tygodniowa kopia zapasowa


Wejdź w edytuj zadanie. Tam masz coś takiego

   
Dodal bym
Zwracanie uwagi na kod js przy wymianie linkow ;)
A mocne hasla to takie z niczym nie zwiazane minimum 8 znakow dla mniej znaczacych aplikacji itp i minimum 12 dla czegos bardziej cennego. Hasla powinny zawierac litery roznej wielkosci, liczby i znaki specjale.
Testowac pluginy przed uzyciem na stronie.
Nie umiesz jezyka nie przerabiaj skryptu. ^_^
Jak czytasz mój post to sprawdź czy go nie zedytowałem bo niezdecydowany jestem.
Miałem już to wszystko zrobione :) , ale jest to przydatne :D
(09.02.2016, 13:20)NiespecjalnieUzdolniony napisał(a): A mocne hasla to takie z niczym nie zwiazane minimum 8 znakow dla mniej znaczacych aplikacji itp i minimum 12 dla czegos bardziej cennego. Hasla powinny zawierac litery roznej wielkosci, liczby i znaki specjale.

Nah. Wystarczy, aby nie używać czegoś, co da się złamać metodą słownikową. A już przy bruteforce zazwyczaj jedzie się po całej tablicy znaków, więc można po prostu używać dłuuugich haseł zawierających np. same duże i małe litery (np używać jako hasła całego zdania składającego się z kilku wyrazów). Takie rozwiązanie ma lepszą skuteczność niż 8-12 znakowe hasło składające się z losowych charów :) Tak więc SuperTajneHasloNiespecjalnieUzdolnionegoAdmina jest obliczeniowo dużo lepszym wyborem niż np. bW&92J&A7&yS

A jeśli komuś naprawdę będzie zależało na dostępie, to go dostanie o wiele łatwiejszymi sposobami niż zabawa w łamanie haseł (https://xkcd.com/538/) :D
:: Akcja DZIĘKUJĘ ZA POMOC ::
Pomocy udzielam jedynie na forum. Wszystkie rzeczy wykraczające poza tą dziedzinę wykonuję odpłatnie.
Ja od siebie dodam, że warto też uruchomić weryfikację dwuetapową, która jest wbudowana w silnik forum :)
Link do generatora MD5 nieaktualny. Proponuję ten:
http://www.md5.cz/
Działa, PIN wygenerowany i jest ok.
Mam zastrzeżenia co do punktu "Usuwanie możliwości pobrania kopii zapasowej poprzez acp", przy tworzeniu backupu ręcznie pojawia się modal z przyciskiem download. Proponuje dodać sposób na usunięcie tego przycisku.

Z linijki
flash_message("<span><em>{$lang->success_backup_created}</em></span><p>{$lang->backup_saved_to}<br />{$file}{$ext} (<a href=\"{$file_from_admindir}\">{$lang->download}</a>)</p>", 'success');

należy usunąć

<p>{$lang->backup_saved_to}<br />{$file}{$ext} (<a href=\"{$file_from_admindir}\">{$lang->download}</a>)</p>



[Obrazek: backup.png]
Szogi1910 napisał 22.03.2018, 08:55:
Dzięki, poprawione :)
Sory, już wiem. Zapisywanie za na swój dysk nie jest możliwy, ale wykonywanie kopi na serwerze tak,



Użytkownicy przeglądający ten wątek:

1 gości