Kaip apsaugoti Joomla tinklapį nuo įsilaužimo

PDFSpausdintiEl. paštas

Antradienis, 16 Lapkritis 2010 22:59 Parašė Rimvydas Peržiūrų: 1630

( 5 Balsai )

Šiame straipsnelyje pateiksiu keletą patarimų ką reikėtų padaryti norint apsaugoti tinklapį nuo įsilaužimo. Žinoma niekada nėra šimtaprocentinės garantijos, kad tinklapis nebus “numuštas” . Tačiau tinkamai pasirengus ši galimybė sumažėja iki minimumo. Medžiaga surinkta iš savos patirties ir plačiojo interneto, įvairių kompanijų užsiimančiu interneto saugumo klausimais patarimų.
Taigi pradžiai bendri patarimai kurių BŪTINA laikytis kiekvienam kas naudojai Joomla TVS ir nori apsisaugoti nuo didesnių nemalonumų.

1. Įdiegus TVS negalima palikti pagal nutylėjimą nustatyto prisijungimo prie valdymo skydo vartotojo vardo. Pagal nutylėjimą jis būna “admin”.
2. Įjungti SEO nuostatas.
3. Naudokite tik pačią naujausią Joomlos versiją, pastoviai atsinaujinkite naudojamus modulius, komponentus.
4. Nepalikite nenaudojamų, bet išjungtų papildinių, komponentų, modulių.
5. Teisingai sukonfigūruokite katalogų ir failų prieigos teises ( chmod)
PHP failai turėtų būtį 664
Konfigūtacijos failai 666
Kiti katalogai 755
6. Reguliariai darykite tinklapio ir DB rezervines kopijas. Atsitikus bėdai bet kada galėsite atstatyti tinklapį iš jos.
7. Kompiuteryje iš kurio administruojate tinklapį  naudokite patikimą antivirusinę programą, nes dauguma įsilaužimų įvyksta pavagiant prisijungimo duomenis.

Dabar pereikime prie keleto konkretesnių patarimų. Joomloje kaip ir daugumoje TVS naudojamas .htaccess  failas kurį atitinkamai sukonfigūravę galime labiau sustiprinti tinklapio saugumą.
1.Atidarę failą teksto redaktoriumi ir papildę šiomis eilutėmis uždrausime prieigą keletui populiaresnių eksploitų :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
########## Nustatome taisykles kad užblokuoti ekspilotus
 
#
 
# Blokuojame visus skriptus kurie bando per URL gauti mosConfig reikšmę
 
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [OR]
 
# Blokuojame visus skriptus kurie bando kažką įkelti per base64_encode
 
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]
 
# Blokuojame visus skriptus kurie turi gairę URL įraše
 
RewriteCond %{QUERY_STRING} (|%3E) [NC,OR]
 
# Blokuojame visus skriptus kurie per URL bando įkelti globalinį PHP kintamajį
 
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
 
# Blokuojame visus skriptus kurie per URL bando pakeisti _REQUEST kintamajį
 
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2}) [OR]
 
# Blokuojame visus skriptus kurie bando įkelti CONFIG_EXT
 
RewriteCond %{QUERY_STRING} CONFIG_EXT([|%20|%5B).*= [NC,OR]
 
# Blokuojame visus skriptus kurie per URL bando įkelti sbp or sb_authorname
 
RewriteCond %{QUERY_STRING} sbp(=|%20|%3D) [OR]
 
RewriteCond %{QUERY_STRING} sb_authorname(=|%20|%3D)
 
# Persiunčiame visas blokuojamas užklausas į pagrindinį puslapį su klaidos
pranešimu 403 Forbidden!
 
RewriteRule ^(.*)$ index.php [F,L]
 
#
 
########## Taisyklių pabaiga


Toliau padarome sekančius įrašus:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<filesmatch ".(php)$">
order deny,allow
deny from all
</filesmatch>
 
<filesmatch "^index.php">
order allow,deny
allow from all
</filesmatch>
 
<filesmatch "^index2.php">
order deny,allow
allow from all
</filesmatch>

 


Šiomis eilutėmis uždraudžiame serveriui vykdyti, bet kokiuos skriptus šakniniame kataloge išskyrus index.php .Jei kažkam ir pavyks ką įkelti  į katalogą skriptas nebus vykdomas.

 

2. Kataloge “administrator”sukuriame .htaccess  failą ir nurodome IP adresus iš kurių galima prisijungti prie administravimo valdymo skydo. Tokiu atveju net pavogę prisijungimo duomenis asmenys negalės prisijungti iš kitų IP adresų.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<Filesmatch ".(php)$">
order deny, allow
deny from all
>

<Files index.php>
order deny, allow
deny from all
allow from 11.11.11.11
allow from 22.22.22.22
allow from 33.33.33.33
>
 
<Files index2.php>
order deny, allow
deny from all
allow from 11.11.11.11
allow from 22.22.22.22
allow from 33.33.33.33
>
 
<Files index3.php>
order deny, allow
deny from all
allow from 11.11.11.11
allow from 22.22.22.22
allow from 33.33.33.33
>

 

Kur 11.22.33.44 yra  jūsų naudojami IP adresai. Pastaba: Sistema veiks  tik jei turite išorinį statinį IP adresą.

3.Dauguma  serverių yra suderinti taip kad pateikus užklausą  pvz: www.jusu_tinklapis.lt/components/  yra pateikiamas katalogų sąrašas. Tai nėra saugumo spraga, tačiau pasinaudojant tuo galima analizuoti tinklapio struktūrą ir ieškoti pažeidžiamų vietų. Kad to išvengti į kiekvieną katalogą reikia patalpinti tuščią index.html failą. Įdiegiant Joomlą  jie sukuriami, bet įdiegiant įvairius komponentus kartais pasitaiko katalogų kuriuose to nebūna.

4. Dauguma SQL injekcijų kurios parašytos Joomla sistemos nulaužimui bando iš duomenų bazės gauti lentelės jos_users duomenis tokiu būdu sužinoti superadministratoriaus prisijungimo vardą ir slaptažodį. Pakeisdami standartinį jos_ prefiksą apsisaugosime nuo daugumos SQL infekcijų.
Prieš atlikdami šiuos veiksmus būtinai pasidarykite duomenų bazės atsarginę kopiją.
a)    prisijunkite prie tinklapio valdymo skydo
b)    einame ->Globalūs nustatymai->Serveris-> Surandame laukelį “Duomenų bazės priešdėlis” ir pakeičiame jį i savo sugalvotą pvz.: mano_
c)    spaudžiame “Išsaugoti”
Tai atlikus  jūsų tinklapis laikinai nebeveiks.
d)    per phpMyAdmin prisijungiame prie duomenų bazės.
e)    Atsidarome kortelę “Eksportas”,  (nieko nustatymuose nekeičiame ) pasižymime visas lenteles ir spaudžiame “Vykdyti”
f)    Failą atsidarykite  teksto redaktoriumi (aš naudoju Notepad ++ todėl pavyzdį pateikiu kaip daryti su juo) toliau užduodame paiešką  Ctrl+F  žodžiui jos_  tada atidarome kortelę “Replace “  įrašome mano_ ir spaudžiame “Replace All in All open documents”
g)    Nukopijuojate visą tekstą Ctrl+A , grįžtate į phpMyAdmin atidarote kortelę SQL ir įkeliate visą nukopijuotą tekstą.
h)    Spaudžiate “Vykdyti”.
Jei viską teisingai atlikome tinklapis turi veikti.

Čia aprašiau tik kelis būdus iš man žinomų kelių dešimčių, bet manau pirmai pradžiai to turėtų pakakti.
Dėl pilno ramaus miego dar įsidiekite saugumo komponentą RS firewall, X-Defender, ar kažką panašaus.

Paskelbta: 2011-09-12 06:30 nuo Dovydas #4894
Suvedus tai ir įkėlus .htaccess failą į serverį ir įėjus į tinklapį meta 500 Internal Server Error
Paskelbta: 2011-09-12 09:14 nuo Dovydas #4899
Ant jūsų nuorodos paspaudus išmeta Jūs neturite teisių matyti šį puslapį!
Ir čia šiaip labiau ne klausimas o komentaras.
Paskelbta: 2011-09-12 13:27 nuo Megejas #4900
Dovydas parašė:
Ant jūsų nuorodos paspaudus išmeta Jūs neturite teisių matyti šį puslapį!
Ir čia šiaip labiau ne klausimas o komentaras.

Išsivalyk naršyklės cashe
Paskelbta: 2011-09-12 14:27 nuo Dovydas #4902
Viskas išvalyta per visas naršykles bandžiau tas pats.
Paskelbta: 2011-09-28 00:23 nuo freakysoul #5133
Pas mane irgi tas pats identiškai. Įkėlus i .htaccess taisykles exploitų blokavimui, meta 500 klaidą. Norint peržiūrėti Megejas įmestą nuorodą irgi rašo, kad neturiu teisių matyti puslapį.
Paskelbta: 2011-09-28 09:19 nuo Megejas #5134
Iš esmės tai jau standartiniame (kartu su joomla įdiegtame) file jau dauguma šių taisyklių prarašyta.
Neveikimo priežastis greičiausiai serverio konfigūracijoje t.y. kažkurių komandų neleidžia vykdyti. Patikrinsiu ir artimiausiu metu parašysiu kas kaip ir dėl ko
Paskelbta: 2011-09-28 10:40 nuo Dovydas #5135
Man jau kaip įvedu bloga slaptažodį nemeta - 500 klaidos susitvarkė.

Bet
SveiasMeniuPunktasJumiKlaidaLentel_2011-09-28.png

Jeigu atsijungiu ir tinklapyje naršau kaip svečias tai daugumoje įėjus menių punktų tai meta.

Manau kad čia taip gali būti dėl kokio nors komponento, modulio ar plugino. Bet įvedus į paieška Calendar nieko neranda.

Aptarkite šį straipsnį forume
Norėdami dalyvauti diskusijoje turite prisijungti arba užsiregistruoti .

Joomla123.lt is not affiliated with or endorsed by Open Source Matters or the Joomla! Project.
The Joomla!® name is used under a limited license from Open Source Matters in the United States and other countries.