Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Jak trwoga to do „boga" cz. 2 - SSH, LAMP, Joomla

Previously...

W poprzednim moim wpisie "Jak trwoga to do "boga" cz.1" skonfigurowaliśmy oprogramowanie VirtualBox wraz z maszyną wirtualną. Zainstalowaliśmy system Ubuntu Serwer wraz z oprogramowaniem openssh, bind9, mc, less, bzip2, unzip, zip, dnsutils. Na tak zaopatrzonym systemie operacyjnym skonfigurowaliśmy serwer SSH by łączyć się zdalnie do naszej maszyny wirtualnej. Skonfigurowaliśmy też i zobaczyliśmy jak działa własny serwer DNS. Wykonaliśmy wszystkie założenia z laboratorium lab 0 i lab 1. Zanim jednak przejdziemy dalej do wykonywania kolejnych zadań poddajmy analizie to co do tej pory zrobiliśmy.

2625492

DNS

Pewnie zapis powyższego nagłówka na pierwszy rzut oka nie jest dla Ciebie zrozumiały , i nie dziwie Ci się. Prawdopodobnie nie znasz sposobu dzięki któremu, byś zamienił/zmieniła to na ciąg bardziej zrozumiały. Może poniższy obrazek troszkę Ci podpowie.
Od razu łatwiej prawda?
Dokładnie tak samo działa serwer dns (w naszym przypadku oprogramowanie bind9) ma zdefiniowane domeny i przypisane do nich właściwy adres IP. W zasadzie to pozwala on na zamianę adresów znanych użytkownikom internetu na adresy zrozumiałe dla urządzeń tworzących siec komputerową. Tak, DNS nazwę mnemoniczną dobreprogramy.pl zamienia na odpowiadający jej adres IP, czyli 194.0.171.163. Dlatego po wpisaniu nazwy łatwej do zapamiętania dla ludzi a trudnej do interpretacji dla komputera, jesteśmy przekierowywania na odpowiedni adres gdzie kryje się strona portalu. Tak samo też było w naszym przypadku (podobnie - logika ta sama). Sprawdziliśmy adres IP domeny lab.lokalne narzędziem nslookup.

SSH

Nasz serwer SSH działa i nasłuchuje domyślnie na porcie 22 i przyjmie każde żądanie odpowiedzi od każdego, kto pozna adres IP naszego serwera. Komunikacja po SSH jest bezpieczna ponieważ w odróżnieniu od Telnetu jest szyfrowana (telnet przesyła dane otwartym tekstem przez sieć) i uwierzytelniana nas na kilka sposobów. Pierwszy poznałeś, jest nim uwierzytelnianie na podstawie hasła. Pozostałe to klucz (RSA, DSA) lub protokół kerberos.

Tu może urodzić się nam myśl jak zabezpieczyć się przed "szkodnikami" którzy, w grupie oprócz odpowiedniej wiedzy wyróżniają się też dużą tendencją do płatania figli. Zastanówmy się co wiemy.

  • Po pierwsze jesteśmy leniwi i zapominalscy, więc jak Pan doktor Grzegorz Śliwiński podpowie nam by dla łatwiejszego zapamiętania dać hasło na użytkownika user user, tak też zrobimy.
  • Po drugie port nasłuchu i komunikacji SSH zostanie domyślnie ustawiony podczas instalacji na 22 (w przypadku studentów ZUT jest on już zainstalowany i uruchomiony na serwerze z domyślnym hasłem).
  • Po trzecie podejrzenie przez ramie adresu IP serwera kolegi nie będzie jakimś tam wielkim wyczynem.

Teraz wystarczy tylko zastanowić się na odpowiednim rozwiązaniem które, z jednej strony nie będzie od nas wymagało zapamiętania hasła, a z drugiej strony da nam gwarancję bezpiecznej i zarazem łatwej komunikacji.

  • Weryfikacja adresu IP z którego, się łączymy jest może i fajnym rozwiązaniem ale rodzi pewne problemy natury technicznej. Nie mamy pewności czy komputer przy którym, siądziemy zawsze będzie miał ten sam adres IP. Ustawienie adresu IP serwera RDC też mija się z celem - inni też mają do niego dostęp.
  • Zmiana portu z domyślnego 22 na inny jest już lepszym rozwiązaniem, ale to też kwestia czasu kiedy to ktoś podejrzy nasze ustawień które to, będziemy wpisywali do putty.
  • Najlepszym rozwiązaniem wydaje się zastosowanie certyfikatu. Certyfikat taki możemy wygenerować dzięki puttygen na zdalnym RDC lub lokalnym komputerze. Plik z certyfikatem możemy przechowywać na dysku sieciowym do którego, mamy jedynie my dostęp w ramach konta uczelnianego. Dzięki takiemu rozwiązaniu unikniemy zapamiętywania niestandardowego hasła, odgadnięcia naszego portu, oraz problemu z łatwym hasłem. Niegroźne też już będą ataki "przez ramię".

Zatem pobieramy aplikację puttygen.

Uruchamiamy ją ustawiamy SSH-2 RSA, liczbę bitów w naszym kluczu (pole Number of in generated key) na większą niż 1024 i generujemy klucz poprzez naciśniecie przycisku Generate.
Wygenerowanie klucza będzie zależne od losowości wygenerowanych liczb na podstawie ruchów naszą myszą w wyznaczonym obszarze aplikacji.
Po wygenerowaniu klucza ujrzymy okno podobne do tego prezentowanego przeze mnie.
Będziemy mogli uzupełnić komentarz klucza o własny wpis oraz wygenerować parę kluczy publiczny i prywatny
Klucz publiczny musimy otworzyć do edycji (polecam program notepad++) i zapisać go w miej więcej takiej formie. Kasując dwie pierwsze linie i ostatnie oraz wszystko zapisując w jednym ciągu na początku dopisując ssh-rsa.

Teraz wystarczy na naszym serwerze w katalogu danego użytkownika (np user) utworzyć ukryty katalog .ssh (W Linuxie ukryte pliki/katalogi zaczynają się od kropki i nie jest to wymuszane tak jak w Windows za pomocą atrybutu). mkdir .ssh Nadać mu odpowiednie uprawnienia co nie powinno być dla Ciebie już problemem.chmod 700 .ssh Przechodzimy do nowo utworzonego katalogu.cd .ssh Tworzymy nowy plik.nano authorized_keysKopiujemy zawartość pliku z naszym publicznym kluczem i wklejamy do nowo utworzonego pliku w naszym terminalu SSH.ssh-rsa xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==Zmieniamy uprawnienia do tego plikuchmod 600 authorized_keys Przełączamy się na rootasu - Password: root@dp:~#  
Otwieramy do edycji plik sshd_confignano /etc/ssh/sshd_configOdszukujemy linię 51 i usuwamy znak komentarza # oraz zmieniamy wartość na "no"PasswordAuthentication noTeraz tylko restart ssh i po rozłączeniu możemy logować się już za pomocą certyfikatu/etc/init.d/ssh restart [ ok ] Restarting OpenSSH Secure Shell server: sshd.Na koniec konfiguracja putty gdzie wskażemy klucz prywatny

Od teraz możemy cieszyć się bezpiecznym logowaniem z użyciem klucza. Nadal będziemy podawali nazwę użytkownika jednak bez samego klucza nie zostaniemy uwierzytelnieni.

Dobra czas wrócić do laboratorium bo czas nas goni. Zatem...

Linux, Apache, MySQL i PHP w jednym domu stały

Nadal lekko zagubiony jesteś jeżeli chodzi o DNS? Lepszy pogląd na całą sytuację da nam wykonanie laboratorium numer 2 które, możesz obejrzeć na portalu youtube. Poniżej tak jak poprzednio znajdzie się swoisty opis tego ćwiczenia. Tak więc zaczynamy.

Laboratorium 2

W tym laboratorium zajmiemy się LAMP (czyli Linux, Apache, MySQL i PHP). Nim na początku zainstalujemy odpowiednie pakiety musimy sobie wyrobić taki odruch, aktualizacji listy pakietów i oprogramowania dostępnego dla naszego serwera. Nawyk ten spowoduje że, nie będziemy mieli problemów z instalacją oprogramowania na naszej platformie.

[Uwaga] Oprogramowanie zmienia się bardzo szybko, ale nie aż tak szybko. Wydanie polecenia raz w ciągu danego dnia podczas instalacji pakietów wystarczy, nie ma potrzeby wydawania go przed każda instalacją pakietu. Co innego gdy zmienimy listę naszych pakietów wtedy musimy wydać polecenie aktualizacji.

Przypominam polecenie:sudo apt-get update && sudo apt-get upgrade

LAMP – zestaw oprogramowania open source stanowiący popularną platformę serwerową dynamicznych stron WWW:

  • Linux (system operacyjny)
  • Apache (serwer WWW)
  • MariaDB / MySQL (serwer bazy danych)
  • Perl, PHP, ew. Python, Primate (język skryptowy)
Pomimo że żaden z tych elementów nie został stworzony specjalnie do współdziałania z pozostałymi, taki zestaw oprogramowania jest bardzo popularny ze względu na niski koszt i dostępność wszystkich komponentów (m.in. są dołączane do większości dystrybucji Linuksa).

Akronim LAMP został stworzony przez Michaela Kunze w artykule dla niemieckiego magazynu komputerowego c't. Celem artykułu było wskazanie zestawu darmowego oprogramowania, który mógł stanowić alternatywę dla oprogramowania komercyjnego. Znając zamiłowanie środowiska informatycznego do akronimów, Kunze stworzył LAMP jako chwytliwy sposób popularyzacji wolnego oprogramowania (w jęz. angielskim słowo „lamp” oznacza lampę).

Wśród anglojęzycznych informatyków termin LAMP został rozpowszechniony przez wydawnictwo O’Reilly i producentów MySQL.

Istnieją odmiany tego zestawu oprogramowania i co za tym idzie akronimu: LAPP (gdzie MariaDB jest zastąpiona przez PostgreSQL), LASP (gdzie MariaDB jest zastąpiona przez SQLite), LNMP (gdzie Apache jest zastąpiony przez nginx), LLMP (gdzie Apache jest zastąpiony przez lighttpd), WAMP (Microsoft Windows zamiast Linuksa), FAMP (FreeBSD) oraz samo AMP (pominięty system operacyjny – wariant lansowany przez Apple Inc.).

Oprogramowanie, na którym działa Wikipedia, jest również platformą LAMP – MediaWiki stworzone na Linuksie, korzysta z serwera Apache, dane z kolei przechowuje baza danych MySQL, a językiem skryptowym jest PHP (poprzednio Perl).

zródło -Wikipedia

Przystąpmy do instalacji pakietów odpowiedzialnych za LAMPa, można to zrobić prostą komendą która, zainstaluje nam wszystkie pakiety:sudo apt-get install apache2 php5 mysql-server php5-mysql phpmyadmin

Lub pojedynczo, instalując każdy pakiet oddzielnie:sudo apt-get install <nazwa_pakietu>

Nim jednak przystąpisz do instalacji zatrzymaj się chwileczkę i rozważ który, sposób instalacji wybierzesz. Instalowane pakiety wymagają od użytkownika interakcji. W przypadku pakietu MySQL jest to skonfigurowanie nazwy użytkownika głównego administratora do bazy danych a w przypadku pakietu phpMyAdmin podania parametrów logowania do bazy danych oraz utworzenia hasła dla użytkownika phpmyadmin. Trochę wyszło to zagmatwane. Ułatwimy to sobie troszeczkę, instalując każdy pakiet osobno. Wtedy będzie łatwiej nam zrozumieć i okiełznać te komunikaty a przy okazji poznamy każdy pakiet z osobna.

Apache

Pierwszym pakietem od którego najlepiej zacząć jest instalacja pakietu Apache2 - będzie on pełnił rolę naszego serwera www i będzie dostępny pod adresem IP naszego serwera lub gdy wpiszemy http://lab.lokalne. U mnie był to adres 192.168.0.XXX (wstawiam XXX gdyż ćwiczenia nie udało mi się zrobić ciągiem i adres IP był przydzielany u mnie automatycznie).

Apacha2 zainstalujemy poleceniem:

sudo apt-get install apache2Po samej instalacji pakiet jest już gotowy i nie wymaga żadnej konfiguracji do działania. Sprawdźmy to podając w przeglądarce na pasku adresu adres IP komputera z naszym systemem Ubuntu Serwer.

Zostańmy na chwile z Apache2 nim przejdziemy do instalacji kolejnych pakietów. Zadajmy sobie pytanie. Czym tak naprawdę jest ten nasz Apache2?
Apache2 jest jak już wspomniałem serwerem działającym na protokole http i https. Oprogramowanie to jest oprogramowaniem otwartym i dostępnym na wielu systemach operacyjnych (m.in. Unix, Linux, BSD, OS X, Windows). Pliki konfiguracyjne są przechowywane w /etc/apache2/. Plik ze stroną główną która, nam się wyświetli po wpisaniu adresu http://lab.lokalne naszego serwera w pasku adresu naszej przeglądarki znajduje się w /var/www/html (ścieżka ta może się różnic w zależności od dystrybucji, wersji Apache oraz może być też konfigurowalna - zmieniona).

Wybiegnę trochę poza zakres ćwiczenia, ale tym właśnie miał być ten wpis uzupełnieniem do filmu które, gdyby się w nim pojawiło strasznie by go wydłużyło. Wspomniane pliki konfiguracyjne Apache2 które, znajdują się w /etc/apache2/ są zwykłymi plikami tekstowymi. Przyjrzyjmy się trochę im i poznajmy ich zadania.

  • apache2.conf:

    Główny plik konfiguracyjny Apache2. Zawiera ustawienia, które są globalne dla Apache2.

  • httpd.conf:

    Historycznie główny plik konfiguracyjny Apache2, nazwany na cześć demona httpd. Teraz tego plik nie ma. W starszych wersjach Ubuntu plik może być obecny, ale pusty, a wszystkie opcje konfiguracyjne zostały przeniesione do opisanych plików/katalogów.

  • conf-available:

    Ten katalog zawiera dostępne pliki konfiguracyjne. Wszystkie pliki, które wcześniej były w /etc/apache2/conf.d powinny zostać przeniesione do /etc/apache2/conf-available.

  • conf-enabled:

    Posiada dowiązania do plików w /etc/apache2/conf-available. Gdy plik konfiguracyjny jest dowiązany, to zostanie włączony przy ponownym restarcie Apache2.

  • envvars:

    Plik, w którym są ustawione Apache2 zmienne środowiskowe.

  • mods-available:

    Ten katalog zawiera pliki konfiguracyjne dla modułów. Nie wszystkie moduły będą miały tu swe pliki konfiguracyjne.

  • mods-enabled:

    Posiada dowiązania do plików w /etc/apache2/mods-available. Gdy plik konfiguracyjne modułu są dowiązane to zostaną włączone przy następnym restarcie Apache2.

  • ports.conf

    Dyrektywy, które określają, które porty TCP Apache2 nasłuchują.

  • sites-available:

    Ten katalog zawiera pliki konfiguracyjne dla Apache2 hostów wirtualnych. Wirtualne hosts allow Apache2 powinno być skonfigurowane do obsługi wielu witryn, które mają osobne konfiguracje.

  • sites-enabled:

    Jak w mods-enabled, strony obsługujące zawierające dowiązania do /etc/apache2/sites-available/<katalogu>/. Podobnie, gdy plik konfiguracyjny stron jest dowiązany, strony konfigurowane przez niego będą aktywne po ponownym uruchomieniu Apache2.

  • magic:

    Instrukcje określające typ MIME na podstawie kilku pierwszych bajtów pliku.

Ponadto inne pliki konfiguracyjne mogą być dodawane przy użyciu dołączonych dyrektywy z symbolami wieloznacznymi by swym zakresem obejmować wiele plików konfiguracyjnych. Każda dyrektywa może być umieszczony w dowolnym z tych plików konfiguracyjnych. Zmiany głównych plików konfiguracyjnych są rozpoznawane przez Apache2 po ponownym uruchomieniu usługi.

PHP 5

Kolejnym w kolejności pakietem którego, będziemy instalować w ramach tego ćwiczenia jest pakiet php. Pakiety które, będą nam potrzebne do wykonania ćwiczenia to php5 i php5-mysql instalujemy je wydając komendę:sudo apt-get install php5 php5-mysqlPakiety te w zupełności wystarczą, jednak gdybyś chciał doinstalować inne pakiety do swojego php wykonaj poniższą komendę by sprawdzić jakie są dostępne w ramach wersji php5:sudo apt-cache search php5-Rezultat:php5-cgi - server-side, HTML-embedded scripting language (CGI binary) php5-cli - command-line interpreter for the php5 scripting language php5-common - Common files for packages built from the php5 source php5-curl - CURL module for php5 php5-dbg - Debug symbols for PHP5 php5-dev - Files for PHP5 module development php5-gd - GD module for php5 php5-gmp - GMP module for php5 php5-ldap - LDAP module for php5 php5-mysql - MySQL module for php5 php5-odbc - ODBC module for php5 php5-pgsql - PostgreSQL module for php5 php5-pspell - pspell module for php5 php5-recode - recode module for php5 php5-snmp - SNMP module for php5 php5-sqlite - SQLite module for php5 php5-tidy - tidy module for php5 php5-xmlrpc - XML-RPC module for php5 php5-xsl - XSL module for php5 php5-adodb - Extension optimising the ADOdb database abstraction library php5-auth-pam - A PHP5 extension for PAM authentication [...] Instalacja dodatkowych modułów możemy wykonać poleceniemsudo apt-get install <nazwa_modułu> <nazwa_modułu> <..itd..>Poprawność konfiguracja oraz czy interpreter PHP działa możesz sprawdzić tworząc plik
w katalogu /var/www/html/ o nazwie info.phpnano /var/www/html/info.phporaz dokonując w tym pliku wpisu:<?php phpinfo(); ?>Pamiętajcie o tym by restartować Apacha2 po zmianach w plikach konfiguracyjnych - a taką zmianą jest instalacja php i odpowiednich modułów.sudo service apache2 restartPo uruchomienie usługi Apache2 możemy przejść do przeglądarki i w adresie połączyć się ze stroną http://192.168.0.XXX/info.php lub http://lab.lokalne/info.php i naszym oczom powinien pokazać się obraz podobny do tego:
Gdyby jednak był problem z wyświetleniem tej strony zmień uprawnienia do pliku info.phpchown www-data:www-data /var/www/html/info.php

Czym tak naprawdę jest to PHP - interpretowany skryptowy język programowania zaprojektowany do generowania stron internetowych i budowania aplikacji webowych w czasie rzeczywistym. PHP stosowany jest do tworzenia skryptów po stronie serwera WWW, ale może być on również używany do przetwarzania danych z poziomu wiersza poleceń, a nawet do pisania programów pracujących w trybie graficznym (np. za pomocą biblioteki GTK+, używając rozszerzenia PHP-GTK).

Tak mamy zainstalowane Apache2 i PHP5 do szczęścia brakuje nam jeszcze tylko MySQL i phpMyAdmin.

MySQL i phpMyAdmin

MySQL od Oracla jest serwerem baz danych a phpMyAdmin graficzną nakładka na ten serwer obsługiwaną przez stronę internetową. MySQL i phpMyAdmin zainstalujemy wydając odpowiednią komendę w konsoli naszego SSH. sudo apt-get install mysql-server phpmyadminPodczas instalacji będą wyskakiwać okna interakcji z użytkownikiem.
W którym, należy podać hasło dla konta administracyjnego w bazie danych MySQL - nie mylić z kontem root systemu. Pamiętamy zasadę że, w środowisko testowym dajemy proste łatwo zapamiętywane hasła a w środowisku produkcyjny jak najbardziej losowe i skomplikowane. Dobra praktyka jest taka by hasło było inne niż na użytkownika root systemu.
Potwierdzamy wpisane hasło w poprzednim oknie.
Wskazujemy serwer Apache2 jako ten który ma być prze-konfigurowany do właściwej współpracy z phpMyAdmin.
Na pytanie o załadowanie bazy dla platformy phpMyAdmin odpowiadamy twierdząco - jest ona potrzebna do prawidłowego działania i funkcjonowania phpMyAdmin. Konfiguracja ta zawiera wszystkie ustawienia niezbędne do działania platformy.
Podajemy hasło utworzone dla użytkownika administracyjnego do bazy danych MySQL - czyli tak zwanego roota MySQL - nie mylić z rootem Linuxa to jest inne hasło.
Tworzymy teraz hasło dla użytkownika phpmyadmin - tu taka sama zasada hasło w środowisku testowym dajemy proste łatwe do zapamiętania a w środowisku produkcyjnym zmieniamy na jak najbardziej losowe, skomplikowane i trudne do odgadnięcia.
Powtarzamy hasło wpisane w kroku poprzednim.

Na koniec wystarczy tylko zrestartować Apache2 - pamiętamy że, do poprawnego działania po zmianie w plikach konfiguracyjnych potrzebny jest restart - MySQL i phpMyAdmin takiej modyfikacji dokonało.

sudo /etc/init.d/apache2 restart

Komunikatem o podanej treści się nie przejmujemy.

Dla ciekawskich:nano /etc/apache2/apache2.confServerName "TwojaDomena.pl"service apache2 restart

Działanie phpMyAdmin możemy sprawdzić wpisując w przeglądarce na pasku adresu, adres naszego Serwera - http://192.168.0.XXX/phpmyadmin lub http://lab.lokalne/phpmyadmin

Spostrzegawcze osoby mogą zapytać się gdzie znajduje się folder phpmyadmin, ponieważ próżno go szukać w katalogu /var/www/html/

Mają rację ponieważ plik z całą konfiguracją znajduje się w /etc/apache2/conf-available/phpmyadmin.conf a dokładnie dowiązanie do pliku z konfiguracją. Pamiętamy o funkcjach plików i katalogów Apacha2. Zawartość pliku prezentuje się następująco.
Ustawienie Aliasu w pliku wskazuje na katolog w /usr/share/phpmyadmin i tam przechowywana jest strona którą, otrzymujemy po wpisaniu http://lab.lokalne/phpmyadmin
Wróćmy do naszego panelu zarządzania phpMyAdmin i zalogujmy się na użytkownika root MySQL lub phpmyadmin z hasłem podanym podczas instalacji.
Po poprawnym zalogowaniu powinniśmy zobaczyć panel administracyjny zarządzania bazami SQL.
Gdyby pojawił się wam taki błąd jak u mnie trzeba sprawdzić konfigurację i zainstalowane moduły.
Instalujemy moduł php5-mcrypt. Komunikat zwrotny poinformuje nas czy dany moduj jest już zainstalowany. Gdy komunikat będzie informował o tym że dany moduł już jest zainstalowany należy utworzyć odwołanie symboliczne do niego w katalogu /etc/php5/mods-available
Odwołanie symboliczne tworzymy za pomocą polecenialn -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-availableW przypadku błędu o tym że, dany plik już istnieje(mamy już utworzone odwołanie symboliczne). Należy zlokalizować ten plik.
Zanim przystapimy do lokalizacji zaktualizujmy informacje o wszystkich plikach w systemie. Służy do tego polecenieupdatedb
Następnie wyszukujemy nasz pliku konfiguracyjny mcrypt.ini - w tym pliku jest informacja z jakiej biblioteki korzysta ten plik konfiguracyjny czyli samo mcrypt. Służy do tego polecenie locatelocate mcrypt.ini
oraz biblioteki mcrypt.so (szukany plik z biblioteką) poleceniemlocate mcrypt.so
Edytujemy nasz odszukany plik /etc/php5/mods-available/mcrypt.ini poleceniemnano /etc/php5/mods-available/mcrypt.ini W edytowanym pliku mcrypt.ini poprawiamy linię numer 2 z słowem extension i tu wklejamy ścieżkę do naszego pliku mcrypt.so - w moim przypadku to /usr/lib/php5/20121212+lfs/mcrypt.so
Po edycji i zapisaniu zmian należy wydać polecenie aktywujące modułphp5enmod mcryptJeszcze tylko restart Apache2 i MySQL - będę powtarzał to do bólu, po zmianie w konfiguracji restart usługi./etc/init.d/apache2 restart /etc/init.d/mysql restart
Po ponownym zalogowaniu do phpMyAdmin możemy cieszyć się działającym panelem administracyjnym MySQL bez komunikatu o błędzie w mcrypt.

Teraz weźmy się za konfiguracje bazy danych z poziomu phpMyAdmin.

Wybieramy bazę "mysql" a następnie tabelę "user"
Zakładamy nowego użytkownika o nazwie joomla dla hosta localhost oraz funkcję "Password" dla pola z hasłem gdzie podamy hasło dla naszego użytkownika. Nie dajemy żadnych uprawnień.
Na koniec klikamy wykonaj by dodać zmiany.
Komunikatem o błedzie a w zasadzie ostrzeżeniem nie przejmujemy się.
Następnie przechodzimy do tabeli "db"
Wykonujemy dodanie rekordu i przypisujemy wszystkie uprawnienia dla użytkownika joomla do nowej bazy danych joomla przypisując wszystko do localhost
Tworzymy nowa baze joomla.
Baza gotowa, należy jednak przekazać zmiany serwerowi poprzez jego przeładowanie.
Możemy to zrobić w zapytaniach SQL w phpMyAdmin lub z wiersza poleceń logując się do wiersza zapytań SQL.
Wylogujmy się z portalu phpMyAdmin. Testujemy możliwość logowania się na użytkownika joomla. Po udanym zalogowaniu przyjdzie nam teraz pobranie instalacji Joomla na nasz serwer.

Na początku utworzymy katalog joomla w /var/www/html/ poleceniemmkdir /var/www/html/joomlaZmieńmy uprawnienia dla katalogu joomlachmod 0777 /var/www/html/joomlaPrzejdźmy do katalogu joomla w /var/www/html/joomla i pobierzmy tu instalacje joomla w archiwum zip poleceniem:wget https://github.com/joomla/joomla-cms/releases/download/3.6.0/Joomla_3.6.0-Stable-Full_Package.zipWypakujmy zawartość archiwum do katalogu joomla poleceniem:cd /var/www/html/joomla uzip Joomla_3.6.0-Stable-Full_Package.zip Po rozpakowaniu archiwum z CMS Joomla przechodzimy do przeglądarki internetowej i w pasku adresowym przeglądarki wpisujemy adres naszego serwera http://192.168.0.XXX/joomla (zamiast adresu IP możesz używać http://lab.lokalne/joomla w końcu działa u nas serwer DNS który, domenę lab.lokalne mapuje nam na adres IP naszego serwera.)

Uzupełniamy konfigurację witryny.
Uzupełniamy parametry logowania do bazy danych.
konfiguracja serwera ftp pomijamy.
W podsumowaniu ustawiamy by Joomla zaimportował nam przykładowe dane.
Gratulację! Udało Ci się zainstalować Joomla. Klikamy tylko jeszcze usuń katalog instalacyjny.
Gdy pojawi się komunikat o błędzie usunięcia katalogu instalacyjnego możemy go usunąć ręcznie poleceniem:rm -rf /var/www/html/joomla/instalation
Po usunięciu katalogu instalacyjnego możemy cieszyć się działającą witryną i CMS Joomla.

Koniec laboratorium 2.

P.S. Czekam na wasze komentarze i uwagi do już dwóch wpisów "Jak trwoga to do "boga"" Dzięki.

P.S. 2 - W artykule jest ukryta zagadka, rozwiązanie w trzeciej części - miłego polowania

 

linux porady inne

Komentarze

0 nowych
NieGooglujMnie   6 #1 22.07.2016 22:48

- czemu nie PHP 7 ?
- ani słowa o Iptables ?
- ani słowa o cron, php-workerach?
- 0zerowe zabezpieczenie SSH?
(sam mam z 15 rzeczy z hardeningu porobionych)
- piszesz o phpMyAdmin, a ani słowa o composer?
- ani słowa o hardeningu?
- j/w, co z sql injection?

Za dużo komend wkleiłeś, a dałoby się z 20-30 linijkowy skrypt z tego ułożyć z krótkimi komentarzami i byłoby po sprawie.

- polecasz joomla, której wartość na rynku bliska jest 0.
przydałby się jakiś wstęp do Symfony3, CakePHP, Zend, Laravel
I ... nie. Nie WordPress.

Według mnie taki średni wpis, w każdym razie wiele złych nawyków utrwala (jakby ktoś chciał się zacząć bawić w serwer i konfigurację).
Pisanie o PHP w 2016 roku bez frameworków, to cofnięcie się w czasie o dobre 10 lat.

Autor edytował komentarz w dniu: 22.07.2016 22:49
  #2 22.07.2016 23:05

"Aaaabym przyjechała zadzwoń!". Sorry, nie to okienko ;-P

A tak na poważnie: Joomla? PhpMyAdmin? Ty tak na serio...?
Narobiłeś się, ale... Kosz.

themamuth   6 #3 22.07.2016 23:09

@NieGooglujMnie: Dziękuję za uwagi i opinie.

NieGooglujMnie   6 #4 22.07.2016 23:23

@themamuth:

Na szybko ostatni feedback:

Z PHP sprawa wygląda tak, że to stary język z ogromnymi naleciałościami z przeszłości. Jak weźmiemy repozytorium dla composera:
https://packagist.org

To okazuje się, że mamy:
https://packagist.org/statistics
... ponad 100k pakietów.

A więc jest sporo dodatkowego softu. Aktualnie najważniejsze dla PHP są frameworki, powiedzmy że walka przebiega pomiędzy Laravel a symfony3.

Według mnie najlepszy aktualny dokument dotyczący czystego PHP to jest tutaj (na początek):
http://www.phptherightway.com
PHP The Right Way
(ostatnia aktualizacja: 2016-07-19)

generalnie chodzi żeby uważać na sql injection, używać composera, używać wersji 7.0, biblioteki PDO (zamiast mysqli), pisać ładne PHPDoc, object oriented programming, używać też design patterns.

Co do SSH to praktyka serwerowa pokazuje, że nie jest żadną trudnością uruchomienie usługi, ale jej ochronienie (hardening). Jest z 15 tricków pozwalających to ochronić - to jest najważniejsze.
Mamy cyber-przestrzeń w której rządzą boty i bot-nety, a wypuszczenie SSH na "zewnątrz" równa się automatycznie próbę zalogowania przez bota. Żeby oprzeć się chińskim botom, to trzeba mieć hardening w małym palcu.

co do sql - to tak samo, najważniejsze są praktyki dotyczące sql injection.

na joomle i phpadmin według mnie szkoda czasu, lepiej od razu za composera się brać, no ale to zależy "po co komu serwer". ;)

z apache2 też dochodzi kwestia hardeningu (zabezpieczenia), sam znam z 5 dobrych tricków.

generalnie najważniejsze przy kwestiach z LAMP to jest hardening, bo inaczej chiński bot-net zmasakruje śmiałka który odważy się taki LAMP wypuścić do "realnego internetu".

Autor edytował komentarz w dniu: 22.07.2016 23:28
themamuth   6 #5 22.07.2016 23:36

@NieGooglujMnie: Kolejna łapka w górę i podziękowanie za komentarz i poszerzenie wiedzy mojej i czytelników. Wpis jest o zaliczeniu laboratorium z tej strony http://gsliwinski.strony.wi.ps.pl/j/index.php?option=com_content&view=articl... od lab 0 do 13. Nie chcę siebie bronić ale wpisu. Po lekturze twoich publikacji i komentarzy wiem na pewno że nie korzystałeś z mojej pomocy przy zaliczeniu :P... a może... ;) ciężko jest komuś wytłumaczyć tak "zaawansowane" rzeczy (rozumiesz te cudzysłowowa świadczące o absolutnych podstawach) jeżeli maja problem z zaliczeniem przedmiotu. Plus pstryczek w nos dla autora strony z lab która, ostatnią aktualizacje ma - sobota, 16 stycznia 2010 11:13 :(

NieGooglujMnie   6 #6 23.07.2016 07:50

@themamuth:

spoko, patrzę teraz to dużo ciekawych rzeczy robicie w tych lab`ach. Aż studia się przypominają ;-)
powodzenia z labami i następnymi materiałami

themamuth   6 #7 23.07.2016 09:05

@NieGooglujMnie: Laboratoria u mnie już dawno zaliczone. Teraz praca inżynierska tylko do napisani i obrony. Dzięki i pozdrawiam

NieGooglujMnie   6 #8 23.07.2016 11:37

@themamuth:

najlepsze, że całkiem fajny ten wpis dałeś (pomimo tego co skrytykowałem). Jest duża wartość merytoryczna. I nawet z tą joomlą można porobić ciekawe rzeczy. Wpis można sobie spokojnie przerobić na Linuxie/vboxie - co jest niby popularne na tym portalu i pełno osób czyta o Linuxie.

I co? Nic. Nikt ci nie komentuje, a jest co.

Może jeszcze przyjdą jakieś ciekawe komentarze, bo inaczej to całkiem stracę wiarę w tutejszych "linuxiarzy", których podstawy podstaw nawet nie interesują (LAMP to całkowita podstawa jeżeli chodzi o wstęp do PHP, czy też wielu różnych kwestii związanych z web-developingiem, czy nawet programowaniem).

Autor edytował komentarz w dniu: 23.07.2016 11:39
bachus   20 #9 23.07.2016 13:02

@NieGooglujMnie:
" czemu nie PHP 7 ?
- ani słowa o Iptables ?
- ani słowa o cron, php-workerach?
- 0zerowe zabezpieczenie SSH?
(sam mam z 15 rzeczy z hardeningu porobionych)
- piszesz o phpMyAdmin, a ani słowa o composer?
- ani słowa o hardeningu?
- j/w, co z sql injection? "

Miałem nie komentować, no ale nie wytrzymałem... To nie książka na trzy tomy, to wpis blogowy. Jak sobie wyobrażasz poruszenie tych tematów w jednym wpisie?
Lekka bezczelność wytykać merytorykę i objętość treści po takim Twoim wpisie: http://www.dobreprogramy.pl/NieGooglujMnie/Pierwszy-miesiac-z-Debianem-Sid.-Bylo...

Autor edytował komentarz w dniu: 23.07.2016 13:02
NieGooglujMnie   6 #10 23.07.2016 13:10

@bachus:

nie do końca, bo korzystanie LAMP w 2016 roku (zaznaczam w 2016 roku) oznacza dostosowanie do frameworków (Symfony3 / Laravel) oraz hardening (czyli zabezpieczenie).
takie rzeczy jak joomla, czy tam phpMyAdmin, są dalej używane, ale znacznie mniej ważne od w/w

Autor edytował komentarz w dniu: 23.07.2016 13:11
sr57be45   5 #11 23.07.2016 13:11

@NieGooglujMnie:

Użytkownik VPS kopiuj wklej.

- PHP7 kwestia innej komendy w instalacji ale warto bo jest szybszy.
- php-workery kto poczyta o 7 ten php-fpm zainstaluje wdg przewodnika.
- phpMyadmin a adminer nie wystarczy ?

Dzięki poczytam o hardzie ;) to co pokazuje wyszukiwarka wystarczy czy poleciłbyś lepsze strony ? (Poza Cloudflare)


A jak nie Wordpress czy Joomla to co ? Każdy ma od zera stronę tworzyć ;) ?


@themamuth
- apache2 to wygodne rozwiązanie działa wszystko prawie od ręki, Ale większe zużycie pamięci i wolniejszy.

A może opis Nginx ? Tu już się kończy w pewnym stopniu kopiowanie opisów i trzeba kombinować z prawidłową kolejnością i hierarchią bloków z nawiasami { } .

Autor edytował komentarz w dniu: 23.07.2016 13:20
bachus   20 #12 23.07.2016 13:14

@NieGooglujMnie: no to jak znasz się na technologii lepiej (tak zakładam, bo nie moja działka) napisz ciekawy tekst o tym.

NieGooglujMnie   6 #13 23.07.2016 13:34

@sr57be45:

hardening to po prostu zabezpieczenie.
kwestia z całym LAMP polega na tym, że jak ktoś zaczyna się w to bawić, a w koncu wypuści "na świat zewnętrzny", to od razu przyjdą chińsko-rusko-koreańskie boty i przeskanują wzdłuż i wszerz czy nie ma jakiś luk w bezpieczeństwie.

Jeżeli są luki, to od razu exploit idzie na usługę, a na końcu Pan Hacker ze Skośnymi Oczami zacznie sobie szperać co tam mamy na serwerze.

Więc na dzień dzisiejszy stawianie LAMP w realnym świecie, to z 50% zabawy w hardening (przynajmniej), żeby właśnie chińskie boty tak łatwo nie wlazły do środka.
Oddzielnie można zabezpieczać SSH, Apache2, SQL, ale też PHP dobre praktyki.
to jest rozległy temat, np. co do SSH to mamy :
http://www.cyberciti.biz/tips/linux-unix-bsd-openssh-server-best-practices.html

https://feeding.cloud.geek.nz/posts/hardening-ssh-servers/

https://askubuntu.com/questions/2271/how-to-harden-an-ssh-server

hardening apache2:
http://www.tecmint.com/apache-security-tips/
https://geekflare.com/apache-web-server-hardening-security/

hardening mysql:
https://www.upguard.com/articles/top-11-ways-to-improve-mysql-security

(nie sprawdzałem wszystkich tricków, w ramach wolnego czasu warto stosować kolejne)

generalnie jest dziesiątki różnych wskazówek, wystarczy już kilkanaście podstawowych zastosować, żeby bezpieczeństwo całego LAMP znacznie się zwiększyło
google i szukamy:
hardening //nazwa-czegos

Autor edytował komentarz w dniu: 23.07.2016 13:41
sr57be45   5 #14 23.07.2016 13:40

@NieGooglujMnie: Dzięki za lekturę.

Frankfurterium   10 #15 23.07.2016 14:00

Przyjemny wpis. Ale dobrze by było, gdyby tytuły poza nazwą serii w dwóch czy trzech słowach odnosiły się do zawartości.

themamuth   6 #16 23.07.2016 15:00

@Frankfurterium: Warte przemyślenia - jednak uważam że tytuł jest dobry.

@bachus: Sam komentarz o tym może być wpisem. Ale fakt warto to poruszyć w innym już wpisie - dziękuję za podpowiedz.

@sr57be45: Dziękuję za uwagi - warte rozważenia na przyszłe wpisy.

Autor edytował komentarz w dniu: 23.07.2016 15:01
Frankfurterium   10 #17 23.07.2016 17:52

@themamuth: Nie chodzi o to, że tytuł mi się nie podoba. Rozszerzenie go byłoby zwyczajnie praktyczne. Raz, że wpisy lepiej by się pozycjonowały w wyszukiwarkach, a dwa - jeżeli dorobisz się liczonej w dziesiątkach części serii (czego ci życzę) i będę kojarzył, że w którejś odsłonie pojawiła się istotna dla mnie informacja, będę zmuszony do otwierania i sprawdzania każdego wpisu po kolei. A tak szybkie spojrzenie na listę tytułów rozwiązałoby problem.

zaku   6 #18 25.07.2016 15:48

@NieGooglujMnie
samo logowanie się kluczem i zmiana portu nie wystarczy do zabezpieczenia ssh?!

rob006   7 #19 25.07.2016 16:22

@NieGooglujMnie: "generalnie chodzi żeby uważać na sql injection, używać composera, używać wersji 7.0, biblioteki PDO (zamiast mysqli), pisać ładne PHPDoc, object oriented programming, używać też design patterns.
/.../
na joomle i phpadmin według mnie szkoda czasu, lepiej od razu za composera się brać, no ale to zależy "po co komu serwer". ;) "

Czemu mam wrażenie, że jesteś teoretykiem który w gruncie rzeczy nie ma pojęcia o czym mówi? Composer zamiast Joomli i PMA? Może od razu poleć naukę C++ zamiast instalowania Apache. :D
Człowiek tu pisze o jakichś podstawach administracji Linuksem i instalowania *gotowego* softu, a ty wyskakujesz z jakimś dziwnym poradnikiem jak programować w PHP...