Právě prohlížíte: Úvod Články Komunita Joomlaportal.cz Bezpečnostní seznam pro administrátory Joomla

22.
září
2009
Bezpečnostní seznam pro administrátory Joomla Tisk Email
Napsal VirtueArt   

O dokumentu

Ochrana webu je rozsáhlou a rychle se měnící záležitostí. Žádný dokument ji neumí kompletně pokrýt. Tento seznam Vám má pomoci pouze se dvěma problémy.
  1. Upozornit Vás na důležité věci
  2. Navést Vás správným směrem, abyste se dozvěděli více

joomla instalacejoomla instalaceNe všechny bezpečnostní techniky jsou vhodné pro obě verze Joomla. Pokud technika platí pouze na jednu z verzí, je u ní uveden příslušný obrázek.

Stahujte rozšíření z důvěryhodných stránek a srovnejte chyby v souboru MD5, abyste odhalili chyby. Toto doporučení platí pro obě verze, takže není použit žádný obrázek kompatibility.

Nejdříve si přectěte...

Bez práce nejsou koláče!

Nenechte se zmást oceněním Joomly za jednoduché a přehledné používání. Provozovat bezpečný dynamický web na otevřeném internetu není až tak jednoduché. Adekvátní ochrana vyžaduje neustálou pozornost a úsilí.

Není pouze jedna správná cesta!

Díky rozmanitosti a složitosti moderních webových systémů jako je Joomla, nemohou být bezpečnostní otázky vyřešeny jednou jednoduchou a pro všechny platící metodou. Vy nebo někdo, komu věříte, se musí naučit hodně o Vaší serverové infrastruktuře, aby udělal vhodná bezpečnostní opatření.

Zkušenost nelze nahradit!

Abyste ochránili svůj Joomla web, musíte získat vlastní zkušenosti (některé z nich budou hořké) nebo získat zkušené rady od jiných.

Vystupte ze stáda

Bezpečnostní fóra jsou přeplněna žádostmi typu „Pomoc, hackli mi web!“ od lidí, kteří nedodržují standardní bezpečnotní postupy. Pokud jste se rozhodli studovat dokumenty jako je tento, možná na Váš web někdo útočí. Gratuluji, právě jste vystoupili ze stáda.

Není to tak těžké, jak to vypadá

Následující seznam se může zdát zastrašující, ale nemusíte se zabývat vším najednou.

Jakmile se začněte seznamovat s prostředky pro vývoj Open Source webů, jako je GNU/Linux, Apache, MySQL, SQL, PHP, HTTP, CSS, XML, RSS, TCP/IP, FTP, JavaScript, Joomla!, budete zdokonalovat své bezpečnostní taktiky.

Všechny komplexní, dynamické a otevřené systémy vyžadují výkonnou kontrolu chyb a opravné metody. Webové stránky nejsou rozlišné. Silná ochrana je základní cíl. Dnešní expert může být zítra oběť.

Vítejte ve hře...

Začínáme

Jste připraveni?

Umíte administrovat dynamický, celosvětově přístupný, databázový, interaktivní web server s autentizací uživatelů?
Máte čas a zdroje reagovat na nově vznikající bezpečnostní problémy na internetu? 10 nejstupidnějších administrátorských triků je komický i tragický pohled na to, co všechno se může přihodit. V závislosti na Vašich dosavadních zkušenostech Vás přečtení článku o stupidních tricích buď rozesměje nebo rozpláče.

Zůstaňte informování o bezpečnostních otázkách

Díky složitosti webových serverů jsou neustále objevovány nové chyby a konflikty. Abyste zůstali v obraze, přihlaste se k Joomla Security Announcements .

K dispozici je také RSS feed od Joomla Security Strike Týmu , který Vás bude informovat o každé chybě v jádru.

Čtěte FAQ

Nejužitečnější příspěvky z Joomla! bezpečnostního fóra jsou shrnuty do Security and Performance FAQs. Mnoho problémů z tohoto seznamu je zde vysvětleno podrobněji.

Učte se od profíků

  • Pátrejte po nových informacích na fóru Joomla!.
  • Vyberte si kvalitního poskytovatele hostingu

Nejdůležitejší rozhodnutí

Pravděpodobně žádné rozhodnutí není závaznější, co se týče ochrany stránek, než výběr hostingu a serveru. Každopádně díky široké pestrosti hostingových nastavení a alternativ, není možné poskytnout kompletní seznam všech situací.

Rizika sdíleného serveru

Pokud máte nízký rozpočet a Váš web nezpracovává vysoce důvěrná data, pravděpodobně si vystačíte se sdíleným serverem, ale musíte pochopit nevyhnutelná rizika. Většina níže uvedených tipů je vhodná pro ochranu webů na sdílených serverech.

Vyhněte se ledabylému nastavení serveru

Pro opravdové ponaučení si přečtěte tento report o tisíci stránkách, které dovolují Googlu indexovat výsledky z phpinfo(). Neudělejte stejnou chybu na svých stránkách! Report obsahuje alarmující statistiky o množství webů, které používají znehodnocující nastavení jako zapnuté register_globals nebo nemají vůbec nastavený open_basedir adresář: Mimochodem, pokud neznáte výrazy phpini a register_globals, pravděpodobně nejste připraveni bezpečně spravovat svůj web.

Nastavení testovacího a vývojařského prostředí

Vyvíjejte lokálně, umisťujte globálně

Vyvíjejte a testujte svůj web nejdříve lokálně na Vašem PC. Lokální instalace Joomla není tak těžká, jak to může vypadat, a procvičení podpoří Vaši sebedůvěru.

Buďte schopní vrátit se k Vaší původní verzi webu použitím moderního verzového systému jako je CVS nebo Subversion.

Doporučované nástroje

Podívejte se na Joomla seznam oblíbených vývojářských nástrojů a softwaru.

Nastavení Joomla!

Instalujete oficiální verze Joomla!

  • Abyste předešli napadení svých stránek, než upgradujete n a vyšší verzi Joomly, vyhledejte různá foŕa s reporty o nekompatibilních rozšřeních. Upgradujte na nejnovější stabilní verzi Joomly co nejdříve.
  • Stahujte instalaci Joomly z oficiálních stránek jako je JoomlaCode.org a podívejte se také na MD5 hash.
  • Používejte Joomla diagnostické programy, abyste se ujistili, že byly všechny soubory nainstalovány správně.
  • Změňte výchozí uživatelské jméno administrátora

Tento jednoduchý krok změna jména administrátora velmi zvyšuje bezpečnost tohoto důležitého účtu. Modyfikaci jedné ze dvou proměnných útočníci mohou využít k získání přístupu do admina. Druhá proměnná je heslo administrátora. Často jej měňte.

Chraňte adresáře a soubory

Zvyšte bezpečnost zásadního souboru configuration.php tím, že jej přemístíte mimo veřejný public_html adresář. Ujistěte se, že všechny nastavitelné cesty do zapisovatelných nebo úložných adresářů (úložiště dokumentů, obrázkové galerie, cache) jsou mimo veřejný public_html adresář. Neexistuje jednoduchý způsob jak přemístit v Joomle adresáře /image a /media. Ujistěte se, že open_basedir je správně nastaven pro všechny uživatelské účty na Vašem serveru. Pokud si nejste jistí, zeptejte se svého poskytovatele hostingu.

Upravte práva souborů a adresářů

Jakmile je Váš web nakonfigurován a stabilní, ochraňte kritické adresáře a soubory před zápisem změnou práv adresáře na 755 a práv souborů na 644. Poté otestujte všechny rozšíření třetích stran, protože je možné, že některé nebudou v tomto nastavení fungovat správně.
V závislosti na právech serveru budete možná potřebovat dočasně přejít na více otevřená práva při instalaci rozšíření přes Joomla instalátor.
Odstraňte všechny grafické šablony
, které na webu nepotřebujete. Vymažte i související soubory. Instalační proces bude vyžadovat, abyste smazali instalační adresář a celý jeho obsah. Nestačí, abyste soubory přejmenovali, smažte je! Pokud nahrajete soubory na svůj web jako komprimovaný archiv (xxxx.zip například), nezapomeňte pak tento archiv smazat. Obecně nenechávejte žádné nepotřebe soubory (komprimované nebo nekomprimované) na veřejném severu.

 

joomla instalaceVypněte kompatibilitu s Register Globals. Je mnohem lepší se takovému nastavení vyhnout, stejně tak všem aplikacím, které to vyžadují. Toto nastavení najdete v backendu v Obecném nastavení. Toto nastavení už není v Joomla 1.5

Nastavení Apache

Používejte soubor .htaccess

Blokujte typické útočné pokusy prostřednictvím lokálního Apache souboru .htaccess. Tato možnost není povolena na všech serverech. Pokud s tím budete mít problém, poraďte se svým poskytovatel hostingu. Za použití .htaccess můžete ochraňovat heslem citlivé adresáře jako je administrator, omezit přístup k citlivým adresářům přes IP adresu a v závislosti na nastavení Vašeho serveru můžete také zvýšit bezpečnost přechodem z PHP4 na PHP5.

Používejte Apache mod_security

Nastavte Apache mod_security a mod_rewrite filtry tak, aby blokovali PHP útoky. Najděte si tyto výrazy na Googlu. Jsou to pokročilé metody, které většinou vyžadují souhlas a koordinaci s Vaším poskytovatelm hostingu.

Nastavení MySQL

Chraňte databázi

Ujistěte se, že MySQL účty mají nastaven omezený přístup. Prvotní instalace MySQL je nechráněná a je vyžadována opatrná konfigurace. (Podívejte se na MySQL Manual) Toto platí jenom pro ty administrátory, kteří vlastní dedikované servery. Uživatelé sdílených serveru jsou závislí na svém poskytovali hostingu, který je zodpovědný za správné nastavení ochrany databáze.)

Nastavení PHP

Pochopte, jak pracuje PHP

Naučte se pracovat se souborem php.ini a pochopte, jak jsou kontrolována PHP nastavení. Nastudujte si Oficiální seznam směrnic php.ini na http://www.php.net a dobře zdokumentovaný výchozí soubor php.ini, který je součástí každé PHP instalace. Zde je minimální verze výchozího souboru php.ini.

Používejte PHP5

V současnosti jsou udržovány obě verze PHP - PHP4 a PHP5 a obě jsou často dostupné na všech serverech. Předtím než se PHP 4 stane zastaralým, upgradujte na PHP5. Nedělejte si starosti s jádrem Joomly; všechny současné verze jsou PHP5 kompatibilní.

Používejte lokální soubour php.ini

Na sdílených serverech nemůžete editovat hlavní soubor php.ini, ale můžete přidávat své vlastní upravené soubory php.ini lokálně. V tomto případě musíte udělat kopie tohoto souboru do každého podadresáře, který vyžaduje vlastní nastavení.

Zde je pár důležitých věcí, které byste si měli zapamatovat

Lokální php.ini soubory mají efekt, pokud je Váš server nakonfigurován tak, aby je používal. Toto zahrnuje soubor php.ini v kořenovém adresáři http_root. Můžete otestovat, jestli tyto soubory fungují tak, že nastavíte nějaký na první pohled na webu zjevný příkaz v lokálním soubory php.ini.
Lokální php.ini soubory mají efekt na .php souory, které jsou umístěny ve stejném adresáři (nebo do příslušného souboru includovány přes funci included nebo required). To znamená, že normálně jsou pouze dva adresáře v Joomle, do kterých byste php.ini měli umístit. Je to kořenový adresář http_root, což je adresář, kde je umístěn frontedový soubor index.php, a, administrátorský adresář, který je umístěn tam, kde je backendový soubor index.php. Ostatní adresáře, které nemají soubory volané přes web, nepotřebují soubor php.ini.

Používejte PHP disable_functions

Používejte funkce disable_functions, abyste vypnuli nebezpečné PHP funkce, které Váš web nepotřebuje.

Používejte PHP open_basedir

open_basedir by měl být zapnutý a dobře nastavený. Tento příkaz omezuje soubory, které mohou být otevřeny prostřednictvím PHP do specifického adresářového stromu. Tento příkaz není závislý na zapnutém nebo vypnutém Safe mode.

Nastavte magic_quotes_gpc

Nastavte příkaz magic_quotes_gpc tak, jak požadujete. Doporučované nastavení pro Joomla! 1.0.x je zapnuto, což znamená ochrnu proti ledabyle nakódovaným rozšířením třetích stran.
Joomla! 1.5 ignoruje toto nastavení a pracuje dobře v obou případech

Nepoužívejte PHP safe_mode

Vyvarujte se použítí PHP safe_mode. Je to validní, ale nekompletní řešení hlubšího problému false sense ochrany. Podívtejte se na oficiální PHP stránku pro lepší osvětlení této problematiky.

Nepoužívejte PHP register_globals

Automatická registrace globálních proměnných je pravděpodobně jedno z nejhloupějších rozhodutí, které developeři PHP udělali. Tento příkaz determinuje, jestli registrovat nebo neregistrovat EGPCS proměnné (Environment, GET, POST, Cookie, Server) jako globální proměnné, čímž se stanou dostupné pro všechny PHP skripty a můžou jednoduše přepsat Vaše vlastní proměnné, pokud nejste opatrní. Naštěstí si PHP vývojáři uvědomili tuto chybu a znehodnotili tuto funkci.

Pokud je Váš web na sdíleném serveru u poskytovale hostingu, který vyžaduje zapnuté register_globals, měli byste být na pozoru. Přestože můžete často tuto funkci vypnout přes lokální soubor php.ini, znamená to malou ochranu, protože jiné stránky na stejném serveru zůstávají zranitelné vůči útokům, takže to může způsobit útok také na Váš web.

Nepoužívejte PHP allow_url_fopen

Rozširování Joomly!

Před instalací zálohujte

Před instalací nového rozšíření vždy udělejte rychlou zálohu souborů a databáze. Je to postaveno na velice jednoduchém a základním principu:
Pokud se něco pokazí, měli byste schopni vždy vrátit svůj web do předchozího fungujícího stavu.
Nejlepší je vytvořit jednoduchý a rychlý zálohovací skript, který tento proces zautomatizuje. Pokud nenastavíte tento jednoduchý proces, budete vážně sváděni z nějakého důvodu udělat rychlý upgrade bez zálohy. Tato velice pochopitelná tendence je jednou z hlavních případů předčasné vývojařské smrti.

Kontrolujte funkčnost rozšíření

Nejvíce náchylné na útoky jsou rozšíření třetích stran. Před instalací jakéhokoliv rozšíření si nejdříve projděte Oficiální seznam zranitelných rozšíření třetích stran..

Stahujte z důvěryhodných stránek

Plně kvalifikovaná a oficiální definice „důvěryhodné stránky“ je ta, které můžete věřit Vy.
Mějte se na pozoru! Kontrolujte kvalitu kódu. Přestože existují standardy pro kód Joomly, vývojáři rozšíření třetích stran nejsou zavázani je dodržovat. Rozšíření uvedená na oficiálním webu Joomly nejsou kontrolována a nemusí být vyhovující, každopádně pokud se objeví ověřené bezpečnostní chyby, jsou tyto rozšíření ze seznamu odstraněny do doby, než jsou opraveny.

Testujte, testujte, testujte ...

Testuje všechny rozšíření na vývojovém webu, než je nainstalujete na ostrou verzi. Poté je testuje i na ostré verzi. Nezapomeňte zkontrolovat chyby a varování v lozích.

Odstraňujte nepotřebné soubory

Odstraňte všechny nepoužívané rozšíření a dvakrát zknotrolujte, že byly opravdu odinstalovány všechny související adresáře a soubory. Během odinstalace nechává mnoho rozšíření na stránkách související soubory a databáze s daty. Toto je buď výhoda nebo chyba, záleží na Vašem úhlu pohledu. Všechny takové soubory zůstavají přístupné přímo přes URL adresy, jako například http://example.com/modules/spatny_modul.

Vyhněte se zašifrovanému kódu

Joomla je (a navzdory dezinformujícím kampaním vždycky byla) projektem GNU/GPL. To znamená, že všechny rozšíření musí být také volně k užití (co se týče svobody) a otevřené (co se týče kódu).
Zašifrovaný kód může být bezpečený, ale nemůžete do něj zasahovat, takže musíte věřit vývojářům.Použití dalších zašifrovaných kódu Vás vrátí zpět do světa vlastnického softwaru, kde musíte čekat na bezpečnostní záplaty od vývojářů, doufajíc, že útočníci nenajdou Váš web předtím, než to opravíte.

Často nemáte možnost zašifrovaný kód upravovat, vylepšovat nebo sdílet. Tyto omezení jako celek jsou měně hodnotné pro komunitu a redukují celkovou realizovatelnost Joomla projektu, který závisí na otevřeném sdílení všech zúčastněných.

Samozřejmě kód, který není distribuovaný jiným, je osvobozen od požadavků na GNU GPL. A tak můžete zašifrovat kód spojený s Joomlou, který Váš server nebude sdílet s jinými.

Pro maximum ochrany Joomla!

Vyhněte se sdíleným serverům, pokud je to možné

Pro maximum ochrany se vyhněte sdíleným serverům, u kterých neznáte další uživatele nebo kvalitu jejich kódu, či jsou nedůvěryhodní.

Používejte SSL

SSL servery jsou v současné době jediným způsobem, jak zajistit bezpečně důvěrné transakce a ochránit uživatelskou autentizaci. SSL pracují na základě zašifrování všech HTTP komunikací mezi webovým serverem a webovým klienem. A tak, přestože je přenos zachycen, nemůže být přečten.

Joomla! 1.0.x neumožňuje přiřadit SSL server individuálním podadresářům. Joomla! 1.5 má již tuto funkci vysoce vylepšenuPoužívejte Apache .htaccess

Pro další úroveň ochrany hesel můžete použít .htaccess, který heslem ochrání kritické adresáře.

Tato metoda je obvykle účiná pro blokování typických skriptových začátečníků, buďte si vědomi toho, že htaccess ochrana hesel sama o sobě není moc bezpečnou metodou. Musí být kombinována se SSL serverem pro maximální ochranu. SSL je vyžadován k ochraně Vašeho webu před důmyslnějšími útoky jako je packet sniffing.

Přejděte na Joomla! 1.5

Nejvýznamnější upgrad Joomla! v historii zahrnuje značné zlepšení bezpečnosti a výkonu.

Používejte správně formátovaná hesla

Pravidelně měntě hesla a mějte je unikátní. Používejte náhodné kombinace písmen, čísel nebo symbolů a vyvarujte se použivání jednoduchých jmen nebo slov nalezených ve slovníku. Nikdy nepoužívejte jména příbuzných, zvířat, apod.

Dodržujte úrovňový systém hesel

Většina uživatelů nepotřebuje více než tříúrovňové heslo a webmasteři ne více než pěti. Každá úroveň nesmí mít žádnou spojitost s jinou ve smyslu, v jakém se používají uživatelská jména a hesla.

Pravidělně provádějtě zálohy

Nikdy nespoléhejte na zálohy jiných. Zodpovědnost za zálohy je na Vás. Mnoho poskytovatelů hostingu má v podmínkách, že se nemůžete plně spolehnout na jejich zálohy.

Monitorujte škodlivé útoky

  • Uživatelé VPS a dedikovanách serverů mohou používat TripWire nebo SAMHAIN. Tyto aplikace poskytují kompletní kontrolu souborů a statistickou funkci a mohou tajně napomáhat v případech vážných infiltrací.Tuto techniku nemohou používat uživatelé sdílených serverů. Provádějte automatizovanou detekci vniknutí
  • Používejte Systém pro provenci/detekci vniknutí, abyste blokovali nebo upozornili na záludné HTTP dotazy.
  • Google vyhledávání
  • Provádějte manuální detekci vniknutí
  • Pravidelně kontrolujte logy, zda neobjevíte podezřelé aktivity. Nespoléhejte se na sumarizace a grafy.
  • Mějte aktualní bezpečnostní záplaty a upgrady
  • Aplikujte vydané bezpečnostní záplaty co nejdříve.

Informujte se o bezpečnostním softwaru

Není pouze jeden způsob, jak chránit Váš Joomla web. Pokud by byl, byl by tak lehce zacílitelný, že by se stal nevýhodou.

Konzultace

Jednou za čas zaplaťte profesionálního bezpečnostní konzultanta na Joomlu, aby zkontroloval Vaše nastavení. Nečekejte však, že odhalí všechny Vaše bezpečnostní chyby.

Obnova Joomla stránek

  • Vždy mějte kompletní zálohy.
  • Vězte, jak najít útočné pokusy za použití *NIX shell
  • Mějte otestovaný plán, jak napravíte škody, pokud bude Váš web napaden.

Jste na řadě ...

Pokud objevíte v jádře Joomly chyby, oznamte te to zde

Tento čnánek je převzat z webu joomla.org

Komentáře (9)
  • zlatuska  - hezký článek... nicméně..
    Článek pěkný, ale než se člověk dostal k jádru - k tomu co chtěl vědět tak musel přečíst skoro půlku... protože v první půlce článku v podstatě žádné podstatné informace nebyly :huh: ale jinak pěkné, určitě z toho pár věcí vyzkouším..
  • torm  - Poděkování
    Díky za pěkný článek, který tuto problematiku osvětluje
  • Enyoj  - Kozultant Joomla!
    Citace:
    Jednou za čas zaplaťte profesionálního bezpečnostní konzultanta na Joomlu


    Můžu poprosit o kontakt na profi konzultanta.
  • honzag  - re:
    No silná hesla si člověk nemusí pamatovat. Jsou určité nástroj (programy) jako je KeePass, které to dělají za Vás. Osobně používál placený Roboform a jsem navýsost spokojený. Pamatuju si jen jedno hlavní heslo :D

    HonzaG
  • Papik  - Bezpečná hesla
    "Používejte správně formátovaná hesla
    Pravidelně měňte hesla a mějte je unikátní. Používejte náhodné kombinace písmen, čísel nebo symbolů a vyvarujte se použivání jednoduchých jmen nebo slov nalezených ve slovníku."

    Známá teorie, ale zkuste si jí uvést do praxe, když máte desítky hesel, loginů a pinů... Pokud nemáte fotografickou paměť, tak si je stejně budete někam psát.

    A když už si člověk konečně nějaké silné heslo zapamatuje tak ho těžko bude co měsíc měnit, že.

    Myslím, že pro většinu uživatelů by bohatě postačila osvěta o silném a slabém hesle, jak heslo správně vytvořit, co je vyloženě špatné heslo a že lepit si papírek s heslem na monitor není nejlepší nápad.
  • ghost
    no, podle me neni problem mit mnoho silnych hesel v hlave, ale chce to mit na to nejakou pomucku
    preci jen, nikdo si nebude jen tak pamatovat "kljhfASjdeok24f5g4" ;)

    - napr jsou to zacatecni pismena oblibeneho delsiho citatu, basnicky, ... doplnene o posledni dvoucisli napr rodneho cisla ci domu popisneho, spz...

    - dalsi metoda, co se mi dost libi, je skladani slov, deleni je teckou ci jinym "divnym" znakem a na konci pridat nejake cislo
    napr: joomlaportal.ghost.12
    (12=pocet pismen prvniho slova)

    snad to nekterym jako inspirace staci a ubyde prihlasovani do cehokoliv pomoci hesel:
    12345
    aaaaa
    admin
    ...
  • svatas  - Tip k heslům
    Ještě jeden tip, který používám ve spojitosti s heslem. Je to náhrada znaků čísly, tedy čísly a znaky s podobnou vizuální podobou :

    1 = I
    7 = Z
    4 = A
    0 = O
    3 = E
    5 = S

    pak heslo "joomlaportal" nahradíte zápisem "j00ml4p0rtal" a tohle také funguje.
  • XarlieN  - substituce
    Sváťo bacha, většina hack nástrojů se substitucema počítá. Někde jsme četl zajímavý tip ... je třeba vzít nějakou známou větu jako např.: "Joomlaportal je super" a máš heslo třeba "jojesu". Zapamatovatelné a neodhadnutelné.

    Koukám že už to psal Ghostík, tak semholt zas druhý. :-)
  • XarlieN  - super článek ale ...
    S tím safe _mode ON/OFF si dovolím nesouhlasit. Ta problematika je tak široká, že to nelze takto paušálně stanovit. Důležité je aby server byl zabezpečený a Joomla na něm fungovala, jak to admini vyřeší je jejich práce.
Komentář mohou přidat pouze registrovaní uživatelé!
 
Právě připojeni - hostů: 417 a členů: 6 
Joomla!® je registrovaná ochranná známka společnosti Open Source Matters
© 2004-2010 JoomlaPortal.cz - provozováno Testudo corp. s.r.o.
design by VirtueArt geared by Joomla! Doporučujeme iTrefa.cz

Partneři Joomlaportal.cz

IgnumPhoca GalerieVirtueMart

Reklama Joomlaportal.cz

Artio

Joomla! Developer - Vulnerability News

[20100704] - Core - XSS Vulnerabillitis in Back End