e-ogloszenia.info

Etykiety

poniedziałek, 1 maja 2017

Alternatywne oprogramowanie routera: OpenWRT

Na większości dostępnych na rynku urządzeń sieciowych, takich jak routery bądź punkty dostępowe Wi-Fi, można w prosty sposób zainstalować alternatywny system operacyjny. Na podstawie mojego doświadczenia w tym zakresie, mogę śmiało stwierdzić, iż pomysł ten jest bardzo dobry, a jego realizacja przeważnie otwiera zupełnie nowe horyzonty jeśli chodzi o funkcjonalność i bezpieczeństwo sprzętu, pod warunkiem umiejętnego podejścia do tego zagadnienia oraz doboru odpowiedniego rozwiązania.

Trudny wybór alternatywy


W sieci można dziś znaleźć bardzo dużo rozwiązań programistycznych, które stanowią alternatywę dla fabrycznego oprogramowania routerów i tym podobnych urządzeń. W śród tak szerokiego zakresu oprogramowania może być dość ciężko podjąć właściwą decyzję odnośnie najlepszego rozwiązania dla danego urządzenia i jego docelowego przeznaczenia.

OpenWRT


W niniejszym artykule mam zamiar wstępnie przedstawić czytelnikom darmowy system operacyjny OpenWRT, przeznaczony dla routerów i podobnych urządzeń sieciowych oraz zaprezentować jego przykładową instalację na punkcie dostępowym Wi-Fi TP-LINK TL-WA701ND. Celem takiej instalacji ma być znaczne poszerzenie możliwości urządzenia oraz zwiększenie poziomu bezpieczeństwa obsługiwanej przez niego sieci Wi-Fi.

Nowe urządzenie TP-LINK TL-WA701ND V2.2
Nowe urządzenie TP-LINK TL-WA701ND V2.2

W przeciwieństwie do większości innych dystrybucji tego typu oprogramowania, OpenWRT jest zbudowany całkowicie od podstaw w sposób taki, aby spełniać rolę w pełni funkcjonalnego i łatwego do modyfikowania systemu operacyjnego, przeznaczonego dla szerokiej gamy aktywnych urządzeń sieciowych. W praktyce oznacza to, że system może zawierać tylko te składniki, które są w danej chwili użytkownikowi potrzebne, bez zbędnego nadmiaru kodu i bez niepotrzebnych modułów obciążających jego działanie. OpenWRT umożliwia bowiem dodawanie i usuwanie pakietów oprogramowania wedle potrzeb użytkownika, który - wbrew sytuacji jaka ma miejsce w przypadku fabrycznego oprogramowania sieciowych urządzeń - może w ten sposób wpływać na przewidywany przez producenta zakres funkcjonalności sprzętu, programowo personalizując i poszerzając jego sposób działania.

OpenWRT: ponad 2000 dostępnych pakietów oprogramowania!


Na chwilę obecną oficjalne repozytorium OpenWRT udostępnia ponad 2000 pakietów oprogramowania, które mogą być obsługiwane przez zainstalowany na urządzeniu system operacyjny. Użytkownik może więc dowolnie instalować lub usuwać te pakiety, które go w danej chwili interesują lub nie są już mu potrzebne.

OpenWRT: wyższy poziom ochrony sieci


OpenWRT ponadto umożliwia korzystanie z zaawansowanych funkcji związanych z bezpieczeństwem IT, takich jak inspekcja pakietów danych, bądź funkcji związanych z detekcją włamań do sieci. Tego typu możliwości były dotychczas przeważnie fabrycznie dostępne wyłącznie w bardzo drogich aktywnych urządzeniach sieciowych, a czytelnik raczej nie natknie się na nie w fabrycznym oprogramowaniu domowych routerów bądź punktów dostępowych Wi-Fi.

Uwagi wstępne do instalacji OpenWRT


Oprogramowanie OpenWRT działa na rozmaitych routerach, punktach dostępowych Wi-Fi i tym podobnych aktywnych zarządzalnych urządzeniach sieciowych, lecz niestety nie na wszystkich. Muszę tutaj koniecznie czytelników ostrzec, iż flaszowanie binarnego pliku systemu OpenWRT na urządzeniu, które nie jest wpierane przez jego twórców, a nawet próba instalacji niewłaściwej dla danego sprzętu wersji oprogramowania, to czynności które mogą definitywnie zniszczyć urządzenie. Dlatego przed przystąpieniem do ewentualnego zakupu sprzętu w celu instalacji na nim systemu OpenWRT, warto sprawdzić czy urządzenie sieciowe widnieje na oficjalnej liście sprzętu OpenWRT i czy w ogóle jego wsparcie jest przewidziane przez twórców systemu. Warto także zapoznać się z informacją dotyczącą aktualnej wersji oprogramowania dla danego urządzenia. Istotny jest nie tylko model, ale także jego wersja. Dokładne informacje o modelu, a także o wersji sprzętu można przeważnie znaleźć na opakowaniu produktu.

Informacje o modelu i wersji urządzenia
Informacje o modelu i wersji urządzenia

Przed przystąpieniem do instalacji oprogramowania OpenWRT należy uważnie przeczytać wszelkie instrukcje, zalecenia, a szczególnie ostrzeżenia opublikowane w witrynie jego twórców. Należy również pamiętać o tym, że nikt nie daje jakiejkolwiek gwarancji na to, iż dana instalacja się powiedzie, a sprzęt nie zostanie definitywnie zniszczony w skutek jej przeprowadzenia. Pamiętajmy, że jeśli decydujemy się na instalację na naszym sprzęcie sieciowym jakiegokolwiek oprogramowania alternatywnego, robimy to tylko i wyłącznie na własne ryzyko. Gwarancja producenta nie uwzględnia możliwości naprawy sprzętu uszkodzonego w skutek instalacji alternatywnego oprogramowania.


Pobieranie i instalacja OpenWRT


Po zapoznaniu się z informacjami wstępnymi możemy rozpocząć procedurą zdobywania właściwego dla naszego urządzenia oprogramowania.

Istotną kwestią jest to, iż procedura instalacji systemu OpenWRT może się nieco różnić w zależności od urządzenia. Opisany tutaj sposób podejścia do tej kwestii odnosi się do konkretnego produktu oraz do konkretnej wersji oprogramowania.

Aby w prosty sposób znaleźć właściwą dla interesującego nas sprzętu wersję oprogramowania OpenWRT, należy przejść na stronę https://wiki.openwrt.org/toh/views/toh_extended_all. W tym miejscu znajduje się tabela zawierająca listę rozmaitych urządzeń sieciowych różnych producentów.

Aby uzyskać większą ilość szczegółów dotyczących danego urządzenia, a w tym ewentualnie odnośnik do pobierania obsługiwanej przez urządzenie wersji oprogramowania, należy ograniczyć ilość wpisów w tabeli, wprowadzając w okienku nagłówka kolumny dotyczącej modelu informacje o modelu urządzenia.

Przykładowo, w przypadku opisywanej w niniejszym artykule procedury dotyczącej punktu dostępowego TP-LINK Tl-WA701ND, wystarczy wpisać 701ND, aby uzyskać bardziej szczegółowe informacje o tym modelu oraz wyświetlić odnośnik do pobierania odpowiedniej wersji oprogramowania dla tego sprzętu.

Wersja systemu OpenWRT dla danego urządzenia
Należy upewnić się, że pobieramy odpowiednią dla urządzenia wersję systemu

Instalacja OpenWRT na urządzeniu TP-LINK TL-WA701ND


Po pobraniu oprogramowania OpenWRT, w celu rozpoczęcia procedury instalacyjnej należy się ze sprzętem połączyć za pomocą przeglądarki internetowej, korzystając w tym celu koniecznie z sieci przewodowej, a nie z Wi-Fi. Zalecam w tym celu korzystać z przeglądarki Mozilla FireFox. Jeśli urządzenie nie było jeszcze używane, wówczas w celu połączenia się z nim i zalogowania do systemu producenta należy skorzystać z informacji widniejących na spodzie obudowy. W pasku adresów przeglądarki należy zatem wpisać adres 192.168.0.254. Po pojawieniu się okienka z monitem o nazwę użytkownika i hasło należy wpisać admin i admin. To są bowiem standardowe wartości dla tego sprzętu.

Informacje na spodzie urządzenia
Informacje na spodzie urządzenia

Po nawiązaniu połączenia z punktem dostępowym oraz pomyślnym zalogowaniu się do fabrycznego systemu producenta, należy z dostępnego w prawej części widoku menu wybrać opcję System Tools a następnie przejść do Firmware Upgrade.

Wybór i załadowanie pliku binarnego
Wybór i załadowanie pliku binarnego OpenWRT

Korzystając z widniejącej w głównej części widoku kontrolki plików należy wybrać poprzednio pobrane oprogramowanie oraz kliknąć w przycisk Upgrade w celu rozpoczęcia procedury instalacji nowego systemu.

Podmiana fabrycznego oprogramowania na OpenWRT
Podmiana fabrycznego oprogramowania na OpenWRT

Po udanej instalacji nowego systemu należy poczekać kilkadziesiąt sekund aż router się zrestartuje. Wówczas można rozpocząć konfigurację.

Konfiguracja OpenWRT na urządzeniu TP-LINK TL-WA701ND


Po restarcie router powinien posiadać adres IP 192.168.1.1, a więc aby się do niego ponownie dostać interfejs sieciowy komputera powinien być ustawiony na tę samą podsieć.

Tym razem nazwa użytkownika to root, a hasło jest puste.

Logowanie się do OpenWRT
Logowanie się do OpenWRT

Po zalogowaniu się do OpenWRT, pierwsze co się pojawia to informacje o statusie sprzętu i systemu.

OpenWRT - status systemu
OpenWRT - status systemu

Ze względów bezpieczeństwa hasło należy oczywiście ustawić natychmiast po pierwszym zalogowaniu się do systemu. W tym celu, aby przejść do związanych z tą czynnością ustawień, z sekcji System menu znajdującego się w górnej części widoku należy wybrać Administration. W sekcji Router Password należy wpisać i potwierdzić nowe hasło.

OpenWRT - ustawianie hasła do routera
OpenWRT - ustawianie hasła do routera

Aby korzystanie z podstawowej funkcji urządzenia było teraz możliwe, należy z sekcji Network górnego menu wybrać Wi-Fi.

OpenWRT - ustawienia sieci Wi-Fi
OpenWRT - ustawienia sieci Wi-Fi

Po pojawieniu się widoku Network Overview należy kliknąć w przycisk Edit aby przejść do ustawień interfejsu Wi-Fi.

OpenWRT - ustawienia sieci Wi-Fi
OpenWRT - ustawienia sieci Wi-Fi

Ze względów bezpieczeństwa ważne jest aby po przejściu do zakładki Wireless Security, ustawić szyfrowanie WPA2-PSK lub WPA-PSK/WPA2-PSK Mixed Mode i wprowadzić długą i skomplikowaną frazę szyfrującą. To jest podstawą bezpieczeństwa każdej sieci Wi-Fi. Pamiętajmy, że żadne filtrowanie adresów MAC w jakimkolwiek stopniu nie uchroni pred hakerami naszej sieci Wi-Fi, gdyż metoda ta stanowi jedynie lekkie utrudnienie, które haker jest w stanie ominąć w kilkadziesiąt sekund lub kilku minut.


Zabezpieczenia Wi-Fi
Zabezpieczenia Wi-Fi

Kolejną podstawową czynnością jest dostosowanie parametrów interfejsu sieciowego LAN urządzenia, tak aby sprzęt mógł prawidłowo działać w docelowej sieci. W tym celu należy z sekcji menu Network wybrać Interfaces, a następnie kliknąć w przycisk Edit. W widoku ustawień interfejsu LAN należy wprowadzić odpowiednie dla sieci docelowej wartości.

Ustawienia interfejsu LAN
Ustawienia interfejsu LAN


Polska wersja językowa interfejsu


Osoby zainteresowane polską wersją językową interfejsu www OpenWRT powinny zainstalować odpowiedni pakiet językowy. Czynność tą powinno się jednak wykonać dopiero po zakończeniu podstawowej konfiguracji urządzenia, którą opisałem powyżej. Najprostszy sposób instalacji polskiego pakietu językowego polega na przejściu do System / Software, a następnie do zakładki Available Packages. W okienku Download and Install Packages należy wprowadzić nazwę pakietu luci-i18n-ahcp-pl oraz potwierdzić instalację przyciskiem OK.



Można także instalować różnego rodzaju pakiety oprogramowania, w tym oczywiście pakiety językowe, z poziomu shell'a systemu OpenWRT, po uprzednim połączeniu się z urządzeniem i zalogowaniu do systemu poprzez SSH. W takim przypadku, aby zainstalować polski pakiet językowy, należy w wierszu poleceń wpisać:
root@OpenWrt:~# opkg install luci-i18n-ahcp-pl

Dalsze instrukcje związane z ustawieniami systemu OpenWRT można znaleźć pod adresem https://wiki.openwrt.org.

Bezpieczeństwo i funkcjonalność


System OpenWRT jest naprawdę bardzo elastyczny w konfiguracji, a opcji związanych z różnego rodzaju ustawieniami jest w nim naprawdę wiele. Na szczęście nawigacja po różnych sekcjach interfejsu jest bardzo intuicyjna i nie powinna sprawiać problemów nawet mniej doświadczonym użytkownikom.

Wspomnę jeszcze tutaj o kilku ciekawostkach. Po pierwsze istotną sprawą jest to, że po wybraniu opcji Software z sekcji System górnego menu, pojawiają się narzędzia umożliwiające zarządzanie pakietami oprogramowania, które - jak już wspominałem - można dowolnie instalować i usuwać według potrzeb, personalizując zakres funkcji urządzenia.

OpenWRT - zarządzanie pakietami oprogramowania
OpenWRT - zarządzanie pakietami oprogramowania

Drugą ciekawostką jest to, że po kliknięciu w Interfaces z sekcji menu Network pojawia się narzędzie zarządzania interfejsami sieciowymi. W odróżnieniu od fabrycznie instalowanego oprogramowania producenta, mnogość możliwości różnego rodzaju ustawień jest tutaj naprawdę imponująca.

Kolejną fajną sprawą jest narzędzie tworzące różnego rodzaju wykresy w czasie rzeczywistym. Aby się do niego dostać należy wybrać Realtime Graphs z sekcji menu Status.

OpenWRT - Wykresy w czasie rzeczywistym
OpenWRT - Wykresy w czasie rzeczywistym

Podsumowanie


Zdecydowałem się przygotować ten artykuł głównie w celu przedstawienia czytelnikom możliwości korzystania z alternatywnego oprogramowania routerów i tym podobnych urządzeń. Chciałem również wstępnie zaprezentować ogólny zakres możliwości systemu OpenWRT oraz udokumentować generalną prostotę jego instalacji na urządzeniach sieciowych, na przykładzie popularnego punktu dostępowego Wi-Fi. Mam nadzieję, że mój zamiar się spełnił. Gdyby coś okazało nie jasne, a także w przypadku jakichkolwiek pytań dotyczących tego tematu, bądź chęci wymiany doświadczeń, bardzo proszę o komentarze.

piątek, 28 kwietnia 2017

Ataki hakerskie. Jak się chronić?

Bezpieczeństwo IT jest dziś pojęciem bardzo ogólnym, odnoszącym się do metod stosowanych w celu zapewnienia ochrony przed nieautoryzowanym dostępem zarówno do mediów sieciowych jak i urządzeń należących do danej infrastruktury informatycznej.

Chciałbym już na wstępie tego artykułu zaznaczyć, że w praktyce żaden produkcyjny system informatyczny nie jest dziś zupełnie bezpieczny. Pełne bezpieczeństwo nie jest w tej dziedzinie możliwe do osiągnięcia. Nawet najwyższej klasy sprzętowe firewalle i inne podobne urządzenia, jakie są dziś stosowane w bankach i podobnych instytucjach, nie są w stanie zapewnić pełnego bezpieczeństwa. Dlaczego? Otóż dlatego, że całkowicie bezpieczny system nie był by funkcjonalny, a ochrona systemów informatycznych to dynamiczny proces, w którym ma miejsce nie tylko wdrażanie zabezpieczeń, lecz także ciągły nadzór zdarzeń oraz podejmowanie odpowiednich kroków w przypadku wystąpienia zagrożeń.

Fundamentalne znaczenie ma zrozumienie iż przejęcie kontroli przez hakera nad jakimkolwiek z elementów będących częścią danej infrastruktury IT, oznacza w praktyce utratę kontroli nad całym systemem, co wymaga podjęcia natychmiastowych, przewidywanych przez politykę bezpieczeństwa informacji środków.

Polityka bezpieczeństwa informacji


Polityka bezpieczeństwa informacji jest podstawowym elementem bezpieczeństwa IT w instytucjach rządowych i prywatnych. Powinna ona zarówno uwzględniać wszystkie możliwe cele ataków, obecne w danej infrastrukturze IT, jak również przedstawiać metody ochrony przed uwzględnionymi w niej zagrożeniami. Polityka bezpieczeństwa powinna również zawierać wykaz procedur stosowanych w różnego rodzaju sytuacjach podwyższonego ryzyka. Polityka ta jest dziś owszem powszechnie stosowana w różnego rodzaju organizacjach, lecz w praktyce mała jest z niej korzyść, ponieważ użytkownicy na ogół jej nie przestrzegają. I tu mamy duży problem, ponieważ w kwestiach bezpieczeństwa IT na ogół nawala najsłabsze ogniwo, czyli człowiek. Dlatego właśnie tak bardzo skuteczne bywają hakerskie ataki socjotechniczne, czyli te, w których czynnik ludzki odgrywa kluczową rolę.

Hakerski framework Metasploit zawiera cały zestaw narzędzi, za pomocą których można w bardzo prosty sposób przeprowadzić złożone i bardzo efektowne ataki socjotechniczne, bez posiadania dogłębnej wiedzy w tej dziedzinie.

Metasploit
Metasploit

Jak się skutecznie chronić przed atakami hakerskimi? W tym zakresie mam zamiar udzielić czytelnikom kilka ważnych wskazówek. Ponieważ temat jest bardzo rozległy, w tym artykule ograniczę się dosłownie do kilku prostych porad, ponieważ w przeciwnym przypadku musiałbym napisać całą książkę, a na to wyzwanie nie jestem jeszcze gotowy.

Ponieważ najpopularniejszym dziś systemem operacyjnym jest rodzina produktów Windows, dla poniższych zaleceń zakładam taki właśnie scenariusz.

Bezpieczeństwo komputera


Zupełnie bezpieczny komputer do niczego by się nam nie przydał gdyż nie mógł by on przechowywać jakichkolwiek informacji, czy być częścią jakiejkolwiek sieci. Taki komputer musiałby być odpięty od sieci, wyłączony, a na dodatek zamknięty w sejfie, do którego nikt nie zna możliwości dostępu. Wówczas można by uznać taki komputer za zupełnie bezpieczny. Bezpieczny, ale oczywiście bezużyteczny.

Skoro w praktyce nie da się zapewnić stu procentowego bezpieczeństwa komputera, to jak w takim razie należy chronić tego typu sprzęt? W tym zakresie mogę udzielić kilku przydatnych wskazówek.

Bezpieczeństwo komputera – ochrona przed atakami z dostępem fizycznym


Komputer do którego haker może uzyskać dostęp fizyczny nie jest bezpieczny. Dlaczego? Otóż dlatego, że nawet jeśli system jest chroniony hasłem, to w dużej części przypadków można w prosty sposób takie hasło złamać, korzystając w tym celu z powszechnie dostępnego oprogramowania, takiego jak przykładowo Ophcrack. Haker, który uzyskał fizyczny dostęp do komputera, może uruchomić atakowaną maszynę z płyty CDROM lub z urządzenia USB z systemem Ophcrack bądź podobnym, pomijając wszelkie zabezpieczenia systemu Windows.

Łamanie haseł Windows - Ophcrack
Łamanie haseł Windows - Ophcrack

Ophcrack to oprogramowanie hakerskie, które umożliwia pozyskanie nazw użytkowników systemu Windows oraz skrótów NT ich haseł. Ponadto Ophcrack, na podstawie tęczowych tablic, jest w stanie odszyfrować skróty haseł i wyświetlić hakerowi ich postać jawną, która jest niezbędna do lokalnego zalogowania się do atakowanej maszyny. Jeśli hasło jest dość złożone, wówczas istnieje duże prawdopodobieństwo, że Opcrack nie poradzi sobie z nim tak szybko, a nawet w ogóle nie będzie w stanie wyliczyć jego postaci jawnej. Podczas gdy rozszyfrowanie prostych haseł zajmuje kilka-kilkanaście minut, to z bardziej złożonymi hasłami Ophcrack może sobie dość ciężko radzić, a niekiedy próba ich rozszyfrowania może zająć wiele godzin i dni, czasami nawet bez efektu. Pamiętajmy jednak, że nawet jeśli haker nie będzie w stanie zdobyć jawnej postaci pożądanego hasła, to aby zalogować się do atakowanej maszyny zdalnie, wystarczy mu informacja o nazwie użytkownika oraz o skrócie NT jego hasła. Posiadając te informacje haker może przykładowo skorzystać z narzędzia psexec pakietu frameworka hakerskiego Metaspoit, bądź z setek innych podobnych narzędzi dostępnych na różnych hakerskich portalach.

Metasploit
Metasploit

Jak więc chronić komputer przed atakami związanymi z nieautoryzowanym dostępem fizycznym? Otóż wyłączenie możliwości uruchamiania maszyny z innych mediów niż dysk z systemem Windows i ustawienie hasła dostępu do systemu BIOS to żadna ochrona, tylko lekkie utrudnienie, które można szybko ominąć wyciągając na chwilę bateryjkę CMOS w celu zresetowania ustawień BIOSa. Dość skuteczną ochronę przed tego typu atakami zapewni jednak szyfrowanie systemowego dysku za pomocą oprogramowania BitLocker. Aby w pełni cieszyć się z ogromnych możliwości jakie oferuje to oprogramowanie nasz sprzęt powinien być wyposażony w moduł TPM. Jednak można korzystać z oprogramowania BitLocker nawet w przypadku nie posiadania tego modułu jeśli administrator systemu na to pozwoli.

Szyfrowanie dysku - BitLocker

Uniemożliwi to łamanie haseł zapisanych w pliku SAM przy pomocy tęczowych tablic, lecz nie zapewni ochrony przed atakami brute-force. Jeśli hasła użytkowników są dość skomplikowane to metoda brute force raczej się nie powiedzie. Pamiętajmy jednak, że programy typu Ophcrack stają się dla hakera bezużyteczne w przypadku kont użytkowników logujących się do systemu za pomocą konta Microsoft, a także w przypadku kont domenowych, gdyż wówczas lokalny plik SAM nie zawiera ich haseł.

W skrócie poziom ochrony przed atakami lokalnymi można zwiększyć poprzez:
  • Wyłączenie w systemie BIOS możliwości bootowania maszyny z urządzeń USB i napędów optycznych oraz zastosowanie hasła dostępu do ustawień BIOS (utrudnienie);
  • Stosowanie kont Microsoft (Microsoft Account);
  • Stosowanie długich i złożonych haseł, zawierających duże i małe litery, cyfry oraz znaki specjalne;
  • Szyfrowanie dysku systemowego za pomocą oprogramowania BitLocker;


Bezpieczeństwo komputera: ataki zdalne


Najbardziej skuteczny rodzaj ataków zdalnych na komputery, czyli ataków przeprowadzanych przez sieć, to ataki socjotechniczne. Decydującym elementem w tego typu atakach jest człowiek, czyli najsłabsze ogniwo obrony, a strategia polega na skłonieniu ofiary do zrobienia czegoś, czego normalnie by nie zrobiła. Przykładem takiego ataku może być wysłanie do ofiary wiadomości email z przekonującą treścią oraz zainfekowanym załącznikiem, w który oczywiście ofiara kliknie, a wówczas z dużym prawdopodobieństwem hakerowi uda się przejąć kontrolę nad systemem.

Programy antywirusowe owszem zapobiegają wykonaniu podejrzanego kodu, lecz generalnie są skuteczne w przypadku znanych producentowi oprogramowania wirusów i trojanów, czyli tych które widnieją w bazie danych stosowanego programu. Dlatego, swoją drogą, zalecane jest regularne aktualizowanie bazy danych oprogramowania antywirusowego. Lecz to nie wszystko co należy zrobić by się przed tego typu atakami zabezpieczyć.

Zawodowi hakerzy są w stanie napisać wrogi kod na konkretne zlecenie. Kod ten nie zostanie wykryty przez większość programów antywirusowych, ponieważ nie będą one miały o nim żadnych informacji. Pomijając wyspecjalizowany kod, pisany przez zawodowców na zlecenie za dość duże pieniądze, prawda jest taka, że od pojawienia się nowego typu wirusa/trojana, mija co najmniej 2-3 tygodnie zanim producenci antywirusów uwzględnią go w swoich bazach danych. Co to wszystko oznacza? Oznacza to, że należy się w dodatkowy sposób chronić przed możliwością wykonania podejrzanego kodu na naszych komputerach. Jak to zrobić?

Dość wysoki poziom ochrony przed wykonywaniem podejrzanego kodu można uzyskać włączając w systemie Windows funkcję DEP – Data Execution Prevention.

Oto jak to zrobić:
  • Uruchomić eksplorator plików;
  • Trzymając myszkę nad ikonką Ten Komputer należy przycisnąć prawy klawisz myszki i wybrać Właściwości;
  • Z widniejącego w prawej części widoku menu należy wybrać Zaawansowane Ustawienia Systemu;
  • W zakładce Zaawansowane należy w sekcji Wydajność kliknąć w Ustawienia;
  • Należy wybrać zakładkę Zapobieganie Wykonywaniu Danych;
  • Włączyć ochronę DEP w odpowiednim trybie;


Jak ustawić funkcję DEP
Jak ustawić funkcję DEP


Jak ustawić funkcję DEP
Jak ustawić funkcję DEP

Zapora ogniowa systemu Windows stanowi dobrą ochronę przed wieloma rodzajami ataków z wykorzystaniem sieci. Oferuje ona bardzo dużo zaawansowanych ustawień. W większości przypadków dobry poziom ochrony zapewniają już standardowe ustawienia oprogramowania. Zapora powinna być zawsze włączona, ewentualnie pod kontrolą oprogramowania antywirusowego.

Poziom ochrony w zakresie wrogiego kodu można dodatkowo zwiększyć ograniczając możliwość uruchamiania przez użytkowników dowolnego oprogramowania. W tym celu należy skorzystać z przystawki Zasady Zabezpieczeń Lokalnych secpol.msc, definiując odpowiednie reguły zabezpieczeń w ustawieniach Zasady Ograniczeń Oprogramowania. Na stronach Technet Microsoft można znaleźć szczegółowe instrukcje o tym jak to zrobić.

Zasady oprogramowania umożliwiają sporą kontrolę nad tym co jest w systemie uruchamiane. Jednak są to ustawienia bardzo rygorystyczne. O ile wprowadzenie zasad oprogramowania w wielu przedsiębiorstwach napotyka się na duży opór ze strony użytkowników, o tyle w warunkach domowych ograniczenia tego typy przeważnie zupełnie tracą sens, chyba że korzystamy z kilku ulubionych programów i nie zamierzamy niczego innego uruchamiać.

Zasady zapezpieczeń lokalnych
Zasady zapezpieczeń lokalnych

Innym rodzajem ataków zdalnych są ataki sieciowe, wykorzystujące luki bezpieczeństwa w oprogramowaniu ofiary. Są to bardzo powszechne ataki, ze względu na prostotę ich przeprowadzania. Hakerski framework Metasploit zawiera cały zestaw narzędzi i modułów umożliwiających przeprowadzanie tego typu ataków bez konieczności posiadania gruntownej wiedzy informatycznej. Jak to działa? Otóż od momentu otrzymania przez producenta oprogramowania informacji o potencjalnym problemie do chwili pojawienia się poprawek zawartych w aktualizacjach mija przeważnie wiele miesięcy. Okres ten może być krótszy w przypadku bardzo poważnych problemów, które stanowią realne zagrożenie. Informacje o lukach bezpieczeństwa w oprogramowaniu są publicznie dostępne. Jeśli chodzi o system Windows 10 to całą listę problemów mamy tutaj: https://www.cvedetails.com/vulnerability-list/vendor_id-26/product_id-32238/Microsoft-Windows-10.html

Na podstawie publicznie dostępnych informacji o lukach powstają odpowiednie moduły frameworków Hakerskich. W szczegółowych informacjach publicznych o danym problemie technicznym można się dowiedzieć, między innymi, czy został już opracowany związany z nim moduł frameworka Metasploit. Niekiedy jednak jest tak, że hakerzy tworzą własny kod, jeszcze przed pojawieniem się publicznych informacji o danej luce. Są bowiem tacy zawodowi hakerzy, którym wcale nie zależy na nagłośnieniu problemu, lecz bardziej na wykorzystaniu istniejącej luki w celu osiągnięcia zysku.

W skrócie poziom ochrony przed atakami zdalnymi można znacznie zwiększyć poprzez:
  • Korzystanie tylko z najnowszych wersji oprogramowania;
  • Stosowanie sprawdzonego oprogramowania antywirusowego z zawsze aktualną bazą wirusów;
  • Włączenie odpowiedniego poziomu ochrony DEP;
  • Stosowanie lokalnych zasad oprogramowania;
  • Stosowanie zapory ogniowej systemu Windows;

Bezpieczeństwo IT – monitorowanie aktywności podstawą bezpieczeństwa


Żadne z opisanych wcześniej zaleceń nie zapewni długoterminowej ochrony systemu, jeśli pominiemy fundamentalną część polityki bezpieczeństwa, związaną z monitorowaniem aktywności w sieci i w samym systemie. Warto zapoznać się w tym celu z możliwościami jakie oferują zaawansowane dzienniki systemu Windows oraz z oprogramowaniem służącym do monitorowania ruchu w sieci. Gorąco polecam program WireShark, którego jestem zwolennikiem od wielu lat. Ciekawe narzędzia umożliwiające dokładny nadzór procesów można znaleźć w darmowym pakiecie Microsoft SysInternal Suite.

A więc zaglądajmy do dzienników systemu Windows i monitorujmy procesy oraz ruch w sieci. Gdy już będziemy mieli w tym wprawę, będziemy w stanie dostrzec zagrożenia, które często pozostają niezauważane przez powszechne oprogramowanie mające na celu chronić system.

Podsumowanie


Mam nadzieję, że powyższe wskazówki okażą się czytelnikom przydatne. Są to jednak podstawowe porady, dotyczące samego komputera. Pamiętajmy, że komputery są jednak częścią sieci, w których ważną rolę odgrywają także inne urządzenia, takie jak routery, switche, access pointy i tym podobne. Należy więc pamiętać również o tych urządzeniach i odpowiednio je zabezpieczyć. O tym jak to zrobić postaram się napisać innym razem.
Jeśli są jakieś pytania lub wątpliwości, lub ktoś pragnie się podzielić własną wiedzą w tym zakresie, bardzo proszę o komentarze.

poniedziałek, 24 kwietnia 2017

PHP a połączenie z serwerem MySQL

Php i MySQL stanowią podstawę funkcjonalności większości rozbudowanych aplikacji web oraz firmowych witryn internetowych. Każdy zawodowy twórca aplikacji web dobrze wie jak ważny jest wybór odpowiedniej platformy bazodanowej dla swoich projektów. Kluczowe znaczenie w tym zakresie ma także sposób łączenia się z serwerem baz danych z poziomu skryptów php, tak aby interakcja użytkowników z tabelami danych była efektywna i nie stanowiła zagrożeń.

PHP a połączenie z serwerem MySQL
PHP a połączenie z serwerem MySQL

Z poziomu skryptów php można ustanowić połączenie z serwerem bazodanowym MySQL na kilka sposobów. W tym artykule postaram się omówić zalety i wady każdej z tych metod. Przedstawię również porównanie podstawowych cech każdego z tych rozwiązań.

W celach dydaktycznych przygotowałem kilka przykładowych skryptów, które pojawiają się w tym artykule. Jeśli któryś z czytelników będzie miał ochotę przetestować ich działanie, do czego oczywiście gorąco zachęcam, dołączam wspólny fragment skryptów, zawierający zmienne dotyczące nazwy hosta, użytkownika, hasła i nazwy bazy danych, które należy ustawić w pierwszych liniach kodu wedle własnych potrzeb:

$host = 'localhost' ; // nazwa hosta $user = 'uzytkownik' ; // użytkownik $password = 'haslo' ; // hasło $db = 'bazadanych '; // baza danych

Z góry zaznaczam, że zawarte w artykule skrypty mają charakter czysto szkoleniowy i nie są opatrzone w zabezpieczenia charakterystyczne dla środowisk produkcyjnych.

Połączenie z serwerem MySQL za pomocą funkcji mysql_connect() - nie stosować


Łączenie się z serwerem MySQL za pomocą funkcji php mysql_connect() to na dziś dzień już archaiczny sposób uzyskania tego typu połączenia z poziomu skryptu php. Niestety spora ilość nieświadomych entuzjastów proceduralnego PHP wciąż z niego korzysta. Poniżej przedstawiony szkoleniowy skrypt php jest prostym przykładem użycia funkcji mysql_connect(). Skrypt ustanawia połączenie z serwerem, wybiera bazę danych oraz wykonuje prostą kwerendę dopasowującą użytkownika i hasło. Tego typu procedura bywa często stosowana w celach związanych z uwierzytelnianiem:

$conn = mysql_connect($host, $user, $password); if (!$conn) { die('Nie połączono: ' . mysql_error()); } $db = mysql_select_db($db, $conn); if (!$db) { die ('Nie można wybrać bazy danych: ' . mysql_error()); } $query = sprintf("SELECT * FROM users WHERE login='%s' AND pwd='%s'", mysql_real_escape_string($login), mysql_real_escape_string($pwd));

Metoda ta, choć dziś raczej przestarzała, ma jedną wielką zaletę, a mianowicie stanowi świetny materiał historyczno-szkoleniowy dla początkujących programistów. Czemu? Otoż zapoznanie się ze starymi metodami ochrony przed atakami sql-injection może nie tylko okazać się niemałą ciekawostką, lecz może być bardzo przydatne w zrozumieniu natury tych ataków. Metoda ta ma bowiem jedną poważną wadę: nie udostępnia bezpośrednio narzędzi programistycznych chroniących przed atakami typu sql-injection, przez co jej stosowanie w środowisku produkcyjnym a priori odpada. Programista musi tutaj zawsze pamiętać o zabezpieczaniu serwera MySQL poprzez funkcje mysql_real_escape_string(), co może okazać się bardzo uciążliwe, a zarazem nie zupełnie skuteczne, szczególnie przy dużej ilości kodu związanego z zapytaniami. Kolejną wadą tej funkcji jest konieczność stosowania proceduralnego kodu, co samo w sobie stanowi wielką przeszkodę w tworzeniu profesjonalnych rozwiązań.

Połączenie z serwerem MySQL za pomocą klasy PDO


Stosowanie klasy PDO w celu łączenia się z serwerem MySQL z poziomu php gwarantuje ochronę przed atakami typu sql-injection, pod warunkiem stosowania metod tej klasy zgodnie z zaleceniami podręcznika. Metody klasy PDO są łatwe do zrozumienia i bardzo proste w użyciu. Duża elastyczność tej klasy względem obsługi różnorodnych serwerów baz danych, możliwość bezpiecznego wiązania parametrów zapytań z określeniem typu parametru PDO oraz szybkość działania metod, mogą być decydującymi argumentami w kwestii wyboru odpowiedniej opcji dla projektowanej aplikacji.

Możliwość obsługi serwera bazodanowego innego niż MySQL to mocny atut elastyczności, umożliwiający generalnie bezproblemową migrację serwera bazy danych, bez konieczności dużych ingerencji w kod php aplikacji klienckiej. Głównie ze względu na tą cechę moim wyborem, szczególnie w przypadku złożonych aplikacji php, jest zawsze PDO.

Na chwilę obecną klasa php PDO wspiera sterowniki obsługujące następujące serwery bazodanowe:
  • CUBRID
  • MS SQL Server
  • Firebird
  • IBM
  • Informix
  • MySQL
  • MS SQL Server
  • Oracle
  • ODBC i DB2
  • PostgreSQL
  • SQLite
  • 4D

Jedynym mankamentem klasy PDO, oczywiście jeśli można taką cechę uznać za mankament, jest brak proceduralnego API, co może być sporym utrudnieniem dla początkujących programistów. Aby korzystać z klasy PDO programista musi mieć doświadczenie z programowaniem obiektowym. Jednak stabilność i elastyczność działania miewają przeważnie swoją cenę, a ewentualny wkład w naukę programowania obiektowego ze strony nowicjuszy php pragnących rozpocząć przygodę z PDO przyniesie tak czy inaczej ogromną satysfakcję i wielkie korzyści.

Poniżej przedstawiam typowy skrypt php wykorzystujący klasę PDO do nawiązania połączenia z bazą danych serwera MySQL w celu zapisania prostego wiersza danych do tabeli. Zobaczmy jak to się robi obiektowo za pomocą metod klasy PDO:

// ## Połączenie php PDO MySql i prosty zapis wiersza danych try { $conn = new \PDO("mysql:host={$host};dbname={$db}", $user, $password, array( PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES utf8", PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ) ); $stm = $conn->prepare("insert into kontrahenci (imie, nazwisko, kodKraju) values (:imie, :nazwisko, :kodKraju) "); $stm->bindValue(':imie', $_POST['imie'], PDO::PARAM_STR); $stm->bindValue(':nazwisko', $_POST['nazwisko'], PDO::PARAM_STR); $stm->bindValue(':kodKraju', $_POST['kodKraju'], PDO::PARAM_INT); $stm->execute(); } catch (PDOException $e) { echo "Wystąpił błąd PDO"; }


Połączenie z serwerem MySQL za pomocą MySQLi


MySQLi jest nie tylko świetnym rozwiązaniem dla początkujących programistów, ze względu na możliwość wyboru zarówno obiektowego jak i proceduralnego API, ale zapewnia optymalną ochronę przed atakami sql-injection, podobnie do klasy PDO. Kolejnym atutem MySQLi jest jego szybkość i w tym zakresie MySQLi ma przewagę nad PDO. Niestety MySQLi jest o wiele trudniejsze do opanowania niż PDO. Dodatkowym mankamentem, w przeciwieństwie do możliwości jakie oferuje klasa PDO, jest tutaj brak możliwości wiązania parametrów zapytań po nazwach. Przykładowy skrypt pokazuje jak nawiązać połączenie korzystając z MySQLi w zakresie API obiektowego oraz jak wygląda tutaj kwestia wiązania parametrów kwerend:

mysqli_report(MYSQLI_REPORT_STRICT); try { $conn = new mysqli($host, $user, $password, $db) ; $stm = $conn->prepare(" insert into kontrahenci (imie, nazwisko, kodKraju) values (?, ?, ?) "); $stm->bind_param('Jan', 'Kowalski', 1); $stm->execute(); } catch (Exception $e ) { echo "Wystąpił błąd Mysqli"; exit; }


Co wybrać


Najlepszy wybór zazwyczaj wywodzi się z doświadczenia. Aby jednak czytelnikom ułatwić zrozumienie generalnych możliwości każdego z omawianych tutaj rozwiązań, przygotowałem poniższą tabelę:
Porównanie cech mysql_connect(), PDO oraz MySQLi
Cecha mysql_connect() PDO MySQLi
Ochrona przed sql-injection NIE TAK  TAK 
Styl proceduralny  TAK  NIE  TAK
 Styl obiektowy NIE  TAK  TAK 
Różne sterowniki (nie tylko MySQL) NIE  TAK NIE
 Wartości parametrów po nazwie NIE  TAK  NIE 
 Łatwość użytkowania TAK  TAK  NIE 
 Przygotowywanie zapytań po stronie klienta NIE  TAK  NIE 
 Przygotowywanie zapytań po stronie serwera NIE  TAK  TAK 
 PHP 5.x TAK  TAK  TAK 
 PHP 7.x NIE  TAK  TAK 


Test szybkości kwerend oraz kody php


Osoby pragnące sprawdzić szybkość działania opisanych tutaj rozwiązań, zachęcam do przetestowania mojego skryptu, który mierzy czas wykonania dowolnej kwerendy oraz czas wykonania kodu php odpowiedzialnego za nawiązanie połączenia z serwerem, ustawienie bazy danych, wykonanie zapytania i zwrócenie wyników w 3 omawianych wariantach łączenia się z serwerem MySQL:

// Porównanie szybkości odczytu danych z serwera MySQL // dla mysql_connect(), PDO oraz MySQLi // Autor: informatyka-porady.blogspot.com // Licencja: friko // // Tutaj należy ustawić odpowiednie dla własnego serwera wartości $host = ""; // np. localhost lub 127.0.0.1 $user = ""; $password = ""; $db = ""; echo "<pre>"; // Kwerenda odczytu lub zapisu danych bez wiązania parametrów zapytania // Można klasycznie użyć np. "SELECT BENCHMARK(1000000,ENCODE('hello',RAND()))" // Lub zastosować dowolną kwerendę... // W celach testowych warto wyłączyć caching // Stosując w kwerendach frazę SQL_NO_CACHE: np. "SELECT SQL_NO_CACHE * from abc" $query = ""; // mysql_connect() $time_start = microtime(true); $easyconn = mysql_connect($host, $user, $password); if (!$easyconn) { die('Nie udało się nawiązać połączenia: ' . mysql_error()); } $easyconn_db = mysql_select_db($db, $easyconn); if (!$easyconn_db) { die ('Nie można wybrać bazy danych: ' . mysql_error()); } mysql_query('set profiling=1'); mysql_query($query); $q = mysql_query('show profiles'); $result = mysql_fetch_assoc($q); $time_end = microtime(true); echo "Połączenie mysql_connect(). Czas wykonania zapytania: ".$result['Duration']."\n"; echo "Czas wykonania skryptu php zapytania sql:".(($time_end - $time_start)/60)."\n\n"; $easyconn = null; try { // PDO $time_start = microtime(true); $conn = new \PDO("mysql:host={$host};dbname={$db}", $user, $password, array( PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES utf8", PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ) ); $conn->query('set profiling=1'); $conn->query($query); $data = $conn->query('show profiles'); $result = $data->fetchAll(PDO::FETCH_ASSOC); $time_end = microtime(true); echo "Połączenie PDO. Czas wykonania zapytania:".$result[0]['Duration']."\n"; echo "Czas wykonania skryptu php zapytania sql:".(($time_end - $time_start)/60)."\n\n"; $conn = null; // MySQLi mysqli_report(MYSQLI_REPORT_STRICT); $time_start = microtime(true); $conn = new mysqli($host, $user, $password, $db) ; $conn->query('set profiling=1'); $conn->query($query); $data = $conn->query('show profiles'); $result = $data->fetch_assoc(); $time_end = microtime(true); echo "Połączenie MySQLi. Czas wykonania zapytania:".$result['Duration']."\n"; echo "Czas wykonania skryptu php zapytania sql:".(($time_end - $time_start)/60)."\n\n"; $conn = null; } catch (PDOException $e) { echo "Nie udało się nawiązać połączenia PDO"; } echo "</pre>";

Na moim serwerze wykonanie powyższego skryptu z zapytaniem SQL

SELECT BENCHMARK(1000000,ENCODE('hello',RAND()))

poskutowało wyświetleniem poniżej przedstawionych wyników:

Połączenie mysql_connect(). Czas wykonania zapytania: 17.36685392 Czas wykonania skryptu php zapytania sql:0.28945664962133 Połączenie PDO. Czas wykonania zapytania:17.36803179 Czas wykonania skryptu php zapytania sql:0.28948030074437 Połączenie MySQLi. Czas wykonania zapytania:17.38116807 Czas wykonania skryptu php zapytania sql:0.28969765106837

A więc MySQLi okazało się najbardziej powolne :-)

Czy któryś z czytelników zna inny sposób na wykonanie tego typu testów, oczywiście z poziomu skryptu PHP? Jeśli tak, to będę wdzięczny za komentarze.

poniedziałek, 17 kwietnia 2017

Serwis Lenovo: uszkodzenie mechaniczne laptopa

W połowie zeszłego roku zdecydowałem się na zakup laptopa dla graczy Lenovo Y700-17. Laptop sprawował się świetnie przez wiele miesięcy, lecz w lutym tego roku sprzęt zdecydowanie zaczął odmawiać posłuszeństwa. Niedowierzając w to, że praktycznie nowy i mało używany sprzęt za ponad 4000 zł mógł się tak szybko popsuć, postanowiłem spróbować przywrócić system Windows 10, lecz okazało się to niemożliwe do wykonania ze względu na problemy z zapisem danych na dysk.

Laptop Lenovo na gwarancji


Ponieważ najwidoczniej dysk twardy uległ awarii, oddałem laptopa do serwisu Saturn - gdzie sprzęt został zakupiony – w celu dokonania naprawy gwarancyjnej.

Serwis Lenovo: bardzo negatywne opinie klientów!


Dlaczego jednak oddałem sprzęt do punktu serwisowego Saturn, zamiast wysłać go bezpośrednio do serwisu Lenovo, co teoretycznie znacznie przyśpieszyłoby przebieg procedury? Otóż szukając w sieci informacji o serwisie Lenovo i sposobie załatwienia procedury reklamacyjnej, natknąłem się na sporą ilość bardzo negatywnych opinii osób, które oddały sprzęt Lenovo do autoryzowanego serwisu w ramach gwarancji. Na podstawie komentarzy i opinii znajdujących się w sieci, serwis Lenovo rzekomo słynie z odmawiania naprawy gwarancyjnej z powodu tak zwanego "uszkodzenia mechanicznego". Po zapoznaniu się z treścią licznych negatywnych opinii dotyczących autoryzowanego serwisu Lenovo, znajdujących się nie tylko na różnych portalach społecznościowych, lecz także na kilku znanych forach prawnych, zdecydowałem się oddać sprzęt do serwisu Saturn aby uzyskać niezależne od autoryzowanego serwisu Lenovo pisemne potwierdzenie – w postaci protokołu przyjęcia sprzętu do naprawy - braku widocznych usterek mechanicznych w moim laptopie. Mój laptop nie był nawet lekko zarysowany i wolałem uzyskać pisemne i niezależne potwierdzenie takiego stanu rzeczy! Na wszelki wypadek, po przeczytaniu komentarzy osób, które postanowiły złożyć sądowy pozew przeciwko autoryzowanemu serwisowi Lenovo, postanowiłem się z góry dobrze zabezpieczyć przed niemiłymi niespodziankami.

Prawnie istotne potwierdzenie stanu sprzętu: protokół przyjęcia do naprawy


Pracownik serwisu Saturn dokładnie obejrzał sprzęt, po czym sporządził protokół przyjęcia reklamacyjnego, na którym mi zależało i który przedstawiam poniżej:

Protokół przyjęcia sprzętu do naprawy gwarancyjnej
Protokół przyjęcia sprzętu do naprawy gwarancyjnej


Serwis Lenovo: uszkodzenie mechaniczne!


Serwis Saturn oczywiście przekazał laptop do serwisu producenta po czym – ku mojemu kompletnemu zaskoczeniu – ze strony serwisu Lenovo otrzymałem odmowę naprawy gwarancyjnej! Oczywiście powodem było... uszkodzenie mechaniczne! Serwis Lenovo przygotował wycenę naprawy i skrupulatnie załączył dowody uszkodzenia mechanicznego w postaci kilku zdjęć. Żadnego uszkodzenia tego typu oczywiście nie było w chwili przekazania laptopa do punktu serwisowego Saturn. Gdybym wiedział o istnieniu jakiegokolwiek uszkodzenia mechanicznego, to skorzystał bym z góry z ochrony G-Max, którą wykupiłem wraz z laptopem i za którą słono zapłaciłem, bo ponad 700zł. Oto dokumentacja, którą otrzymałem ze serwisu Lenovo za pośrednictwem firmy Saturn:

Uszkodzenie mechaniczne którego wcześniej nie było
Uszkodzenie mechaniczne którego wcześniej nie było

Uszkodzenie mechaniczne którego wcześniej nie było
Uszkodzenie mechaniczne którego wcześniej nie było
Panowie serwisanci Lenovo zdejmują klawisze i szukają cieczy!
Panowie serwisanci Lenovo zdejmują klawisze i szukają cieczy!

Sprzęt na gwarancji: wycena naprawy z powodu uszkodzenia mechanicznego!
Sprzęt na gwarancji: wycena naprawy z powodu uszkodzenia mechanicznego!


Walka z wiatrakami


Skoro serwis Saturn wystawił protokół przyjęcia sprzętu, w którym nie było mowy o jakichkolwiek uszkodzeniach mechanicznych, to skąd nagle wzięły się uszkodzenia udokumentowane przez serwis Lenovo? Ktoś najwidoczniej musiał przyczynić się do ich powstania! Skoro jednak sprzęt przekazałem osobiście do serwisu Saturn, to właśnie ta firma była prawnie odpowiedzialna za jakiekolwiek niezgodności sprzętu z opisem widniejącym w protokole przyjęcia sprzętu do naprawy. Próbowałem wyjaśnić okoliczności powstania uszkodzeń mechanicznych dzwoniąc, pisząc i kilkakrotnie udając się osobiście do punktu serwisowego Saturn. Moje wysiłki w tym kierunku poszły jednak na marne. Dodam jeszcze, że jedna z konsultantek telefonicznych firmy Saturn próbowała mnie nakłonić do skorzystania z wykopionej ochrony G-Max w celu załatwienia całej sprawy w prosty sposób. Ani firma Saturn, ani autoryzowany serwis Lenovo nie czuli się odpowiedzialni za powstałe uszkodzenia mechaniczne.

Adwokat i magiczna naprawa sprzętu w ramach gwarancji


Czując się nieco bezsilnie i niezręcznie w zaistniałej sytuacji, postanowiłem przestać walczyć z wiatrakami i udać się do dobrego adwokata. Adwokat do którego się wybrałem, uznając ewentualny proces w Sądzie z góry za wygrany, wysłał do firmy Saturn krótkie i zwięzłe pismo, za co zapłaciłem około 200zł, po czym - jakby w skutek magicznego zaklęcia - otrzymałem od serwisu Lenovo informację, iż zgłoszenie reklamacyjne zostało zrealizowane. Poniżej przedstawiam potwierdzenie wykonania bezpłatnej naprawy gwarancyjnej. Na dokumentacji widnieje również informacja o wykupionej przeze mnie ochronie G-Max, z której jednak nie miałem powodu korzystać, skoro uszkodzenia powstały po oddaniu sprzętu do naprawy!

Sprzęt Lenovo naprawiony bezpłatnie
Sprzęt Lenovo naprawiony bezpłatnie

Można jednak zauważyć, iż naprawa gwarancyjna nie objęła wszystkich elementów znajdujących się we wcześniejszym kosztorysie serwisu Lenovo. Nie dość, że sposób powstania uszkodzeń mechanicznych pozostaje do dziś niewyjaśniony - winni są prawdopodobnie pracownicy Saturn, kurierzy, bądź serwisanci Lenovo, to najwidoczniej wstępna wycena naprawy okazała się zwykłym naciąganiem klienta na wydatki, skoro naprawę udało się wykonać o wiele niższym kosztem!

Na dodatek panowie serwisanci zgubili gdzieś klawisz, o którym mowa w protokole przyjęcia sprzętu i który dołączyłem z prośbą o przymocowanie, wraz z jego elementami mocującymi.

Czy ktoś z Was ma podobne doświadczenie?


Jeśli ktoś z Was ma podobne doświadczenie z serwisem Lenovo to bardzo proszę o komentarze. Nie dajmy się naciągać na bezpodstawne koszty!

niedziela, 19 marca 2017

Sennheiser CX 3.00 - Opinie - Nie polecam

Należę do kategorii osób, które uwielbiają pracować słuchając muzyki, więc korzystam w tym celu ze słuchawek, szczególnie dokanałowych, gdyż często przebywam w otoczeniu innych osób, którym moja muzyka mogłaby nie odpowiadać. Do niedawna kupowałem słuchawki średnio-słabej jakości, w przedziale cenowym 80-120 zł. Jednak, ponieważ taki sprzęt często nawalał lub samoistnie stopniowo się rozpadał, postanowiłem nabyć nieco lepszy produkt.

Sennheiser CX 3.00 – Opinie - Dużo pozytywnych opinii w sieci


Przeszperałem intensywnie sieć i na podstawie znajdujących się tam opinii, które zdecydowanie świadczyły o dobrej jakości produktu, który sobie upatrzyłem, zdecydowałem się na słuchawki Sennheiser CX 3.00. Początkowo byłem bardzo zadowolony ze swojego wyboru. Dźwięk bardzo dobry, świetne basy, a wykonanie też wydawało mi się odporne na częste użytkowanie, ponieważ w przeciwieństwie do tego co działo się prawie ze wszystkimi moimi poprzednimi słuchawkami, tutaj kable praktycznie w ogóle się nie plątały. W sumie było wszystko naprawdę ok.

Sennheiser CX 3.00 – Dobry produkt, ale na krótko!


Niestety po krótkim czasie intensywnego użytkowania, może jakieś 2-3 miesiące słuchania muzyki po 5-7 godzin dziennie, z jednego z przewodów zaczęła odpadać chroniąca go osłona. Byłem mocno zaskoczony tym faktem, więc natychmiast zadzwoniłem do sklepu w którym nabyłem produkt, aby dowiedzieć się jak wygląda procedura naprawy gwarancyjnej. Moje zaskoczenie było jeszcze większe, gdy mój rozmówca dał mi do zrozumienia, że tego typu usterki nie są absolutnie objęte gwarancją, bo są to usterki mechaniczne, a ponieważ nie zdecydowałem się na specjalne ubezpieczenie, w przypadku wysłania sprzętu do serwisu został bym obarczony bardzo wysokimi kosztami naprawy! Po tej rozmowie dałem sobie spokój z naprawą i miałem tylko nadzieję, że przewody nie będą się dalej psuły, więc zakleiłem odpadający fragment osłonki taśmą izolacyjną.

Sennheiser CX 3.00 – Totalne rozczarowanie!


Po kilku tygodniach przewody zaczęły pękać w innych miejscach, które też natychmiast zakleiłem prewencyjnie taśmą. W końcu jednak dałem sobie spokój z zaklejaniem, gdyż nie miało to już większego sensu.

Teraz, po 8 miesiącach użytkowania, moje słuchawki wyglądają jak na zdjęciu poniżej. Jak widać osłona przewodów jest postrzępiona w wielu miejscach.

Słuchawki Sennheiser CX 3.0 po 8 miesiącach użytkowania
Sennheiser CX 3.00 - Postrzępione przewody po 8 miesiącach użytkowania


Słuchawki Sennheiser CX 3.00 przestały już działać, prawdopodobnie wskutek zniszczenia przewodów. Wysyłka na gwarancji nie ma sensu, ponieważ producent nie udziela gwarancji na usterki mechaniczne, do których zalicza się pękanie i odczepianie się osłony chroniącej przewody. Słuchawki za 200 zł mogę praktycznie wyrzucić do kosza na śmieci.

środa, 15 marca 2017

Egzaminy Microsoft online

Moje pierwsze doświadczenia ze ścieżkami certyfikacyjnymi Microsoft sięgają końca ostatniej dekady ubiegłego stulecia, gdy to w roku 1999, po zdaniu całej serii trudnych egzaminów, do których bardzo długo się przygotowywałem, otrzymałem tytuł MCSE (Microsoft Certified System Engineer) w ramach technologii Windows NT 4.0. W tamtych latach w Polsce zaledwie kilkaset osób mogło się cieszyć tytułem MCSE. Od tamtej pory wiele się zmieniło jeśli chodzi o technologię stosowaną w systemach Windows, lecz certyfikacje Microsoft są nadal bardzo cenne, a może nawet bardziej cenione niż kiedyś, a ze względu na metodykę egzaminacyjną Microsoft stanowią one niezaprzeczalny dowód dogłębnej wiedzy zarówno teoretycznej, jak i praktycznej ich posiadaczy.

MCSE Windows NT 4.0 - Microsoft Certified System Engineer
Rok 1999 - Uzyskałem tytuł MCSE z technologii NT 4.0

Jak dotąd, w Polsce, egzaminy certyfikacyjne Microsoft można było zdawać jedynie w autoryzowanych ośrodkach szkoleniowych. Tego typu ośrodków jest jednak naprawdę niewiele, a na dodatek znajdują się one tylko i wyłącznie w niektórych dużych miastach. W Warszawie jest zaledwie kilka takich miejsc. Umówienie się na konkretny termin i długi dojazd do takiego miejsca mogą stanowić spore wyzwanie, szczególnie dla osób mieszkających daleko.

Do egzaminów Microsoft możesz teraz podchodzić online w domu lub w miejscu pracy


Niedawno pojawiła się w naszym kraju możliwość zdawania egzaminów Microsoft w trybie online. Jest to spore ułatwienie logistyczne, gdyż kandydat nie musi już być fizycznie obecny w sali egzaminacyjnej autoryzowanego ośrodka szkoleniowego, lecz może zdawać egzamin certyfikacyjny z domu lub z miejsca pracy.

Egzaminy prowadzone w trybie online niczym nie różnią się trudnością względem ich formy tradycyjnej, a tych, którzy łudzą się możliwością korzystania ze ściągawek poukrywanych w domowych zakątkach, od razu uprzedzam, że takiej możliwości nie ma, gdyż kandydat jest nieustannie obserwowany przez nadzorcę w trakcie sesji.

Egzaminy Microsoft Online – Moje osobiste doświadczenie


Od lat pracuję w domu, skąd zdalnie administruję systemami informatycznymi i wdrażam w przedsiębiorstwach, które ze mną współpracują, różnego rodzaju rozwiązania programistyczne. Przez ten długi okres czasu przekonałem się definitywnie, że w przypadku mojego zawodu i zakresu działań, wszelkiego rodzaju dojazdy są ogromną stratą czasu i pieniędzy. Bardzo się przyzwyczaiłem do takiego podejścia i dlatego, w chwili gdy postanowiłem podejść do egzaminu certyfikacyjnego Microsoft, zdecydowałem się wybrać sesję przeprowadzaną w trybie online.
Kilka dni temu miałem okazję podejść do egzaminu online, po zdaniu którego zdobyłem mój pierwszy certyfikat MCP z technologii Windows 10. Moje ogólne wrażenia z egzaminu są bardzo pozytywne, więc chętnie się nimi z Wami podzielę.

Przygotowanie pomieszczenia


Po zapoznaniu się z wymogami dotyczącymi pomieszczeń, w których kandydat podchodzi do egzaminu Microsoft, zostałem zmotywowany do uporządkowania mojej pracowni, w której na ogół panuje straszny bałagan. Musiałem gdzieś poukładać przedmioty, które na co dzień znajdowały się na biurku. Zdjąłem ze ścian wszelkie kalendarze i tym podobne wynalazki, na których można by teoretycznie zapisać jakieś ściągawki. Takie są niestety, między innymi, wymogi dotyczące pomieszczeń w przypadku egzaminów przeprowadzanych w trybie online.

Moje biurko na co dzień
Moje biurko na co dzień

Moje biurko przygotowane do egzaminu
Moje biurko przygotowane do egzaminu

Testowanie systemu przed egzaminem


Aby podejście do sesji egzaminacyjnej online było możliwe, środowisko systemowe i sprzęt kandydata muszą spełniać pewne warunki, więc zgodnie z zaleceniami widniejącymi w witrynie Microsoft ściągnąłem i uruchomiłem oprogramowanie PVProctor, w celu sprawdzenia zgodności mojego systemu i sprzętu z wymogami egzaminacyjnymi. Oprogramowanie PVProctor można ściągnąć ze strony Pearson | VUE. Odnośnik widnieje w sekcji dotyczącej wymagań systemowych pod adresem https://www.microsoft.com/pl-pl/learning/online-proctored-exams.aspx
Program PVProctor
Program PVProctor


W witrynie, na której udostępniany jest program, który także służy do egzaminów, a nie tylko do testowania systemu, zostaje wygenerowany specjalny kod. Ten kod należy skopiować i wkleić do okienka programu, przed rozpoczęciem testów systemu.

Planowanie egzaminu


Po uzyskaniu pozytywnych wyników testów sprzętu i systemu, podejście do egzaminu 70-697 zaplanowałem za pomocą odnośnika dostępnego w witrynie Microsoft. Aby przejść do planowania egzaminu zalogowałem się w witrynie korzystając z mojego konta Microsoft.
Udało mi się zaplanować egzamin z zaledwie kilkugodzinnym wyprzedzeniem (!), co było by raczej niemożliwe w przypadku tradycyjnego podejścia do sesji w autoryzowanym ośrodku szkoleniowym. Byłem więc bardzo mile zaskoczony taką możliwością, ponieważ tamtego dnia czułem się naprawdę dobrze przygotowany i wypoczęty. Po zaplanowaniu egzaminu, termin sesji pojawił się w zakładce „Korzyści i egzaminy" w sekcji Learning witryny Microsoft. Gdy nadeszła pora zaplanowanego egzaminu, kliknąłem w widniejący tam odnośnik, po czym otrzymałem kod autoryzacyjny do egzaminu, który musiałem wkleić do programu PVProctor, za pomocą którego wcześniej testowałem mój system.

Sesja w trybie online – jesteś pod stałą obserwacją nadzorcy Microsoft


Do zdania egzaminu online niezbędna jest nie tylko dogłębna wiedza teoretyczna i praktyczna z zakresu objętych nim zagadnień, ale także... kamerka internetowa, głośniki i mikrofon :-)

Przed rozpoczęciem egzaminu musiałem skalibrować obraz w kamerce i wykonać zdjęcie mojego dowodu osobistego, po czym nadzorca skontaktował się ze mną poprzez czat oprogramowania Proctor, najpierw pisemnie, a potem także głosowo, w celu przeprowadzenia czynności poprzedzających sesję, takich jak kontrola pomieszczenia.

Komunikacja z nadzorcą odbywała się w języku angielskim, ponieważ jak dotąd, jest to jedyny dostępny język dla tej procedury. Nadzorca, który był bardzo uprzejmy i profesjonalnie wykonywał swoje zadanie, poinformował mnie o konieczności dokładnego sprawdzenia pomieszczenia w którym miałem zamiar przystąpić do egzaminu. Musiałem więc obracać kamerkę kilkakrotnie na wszystkie strony. Ku mojemu zaskoczeniu, nadzorca był bardzo zainteresowany także sufitem i podłogą, ale w szczególności tym, co znajdowało się w pobliżu mojego laptopa i na biurku. Musiałem oddalić od laptopa kilka przedmiotów, w których teoretycznie mogły być ukryte jakiegoś rodzaju ściągawki. Moje biurko musiało być zupełnie czyste i nie mogły na nim leżeć żadne przedmioty, oprócz komputera. Program egzaminacyjny sprawdza dodatkowo, czy na komputerze nie jest uruchamiane oprogramowanie, które może być wykorzystanie do nieuczciwego pozyskiwania nieposiadanej wiedzy w trakcie egzaminu.

Gdy już oddaliłem od laptopa wszelkie przedmioty i zamknąłem wszelkie niepotrzebne programy, w tych głównie przeglądarki internetowe, nadzorca przeprowadził dodatkową kontrolę. Musiałem oddalić się od kamerki, podwinąć długie rękawy bluzy, którą akurat miałem na sobie i pokazać, że niczego przy sobie nie ukrywam, po czym zostałem poproszony o położenie mojej komórki za sobą, w zakresie widoczności nadzorcy.

Po przeprowadzonej inspekcji nadzorca udostępnił mi testy egzaminacyjne, o których niestety nie mogę Wam nic powiedzieć, ponieważ jawnie zobowiązałem się do nie udostępniania jakichkolwiek informacji w tym zakresie. Mogę tylko dodać, że przez cały czas trwania sesji egzaminacyjnej prawdopodobnie byłem obserwowany przez nadzorcę poprzez kamerkę i nasłuchiwany poprzez mikrofon. W czasie trwania egzaminu kandydat nie ma prawa do jakiejkolwiek prywatności. W przypadku jakichkolwiek podejrzeń, że kandydat ściąga, egzamin jest natychmiast anulowany. W trakcie trwania egzaminu kandydat nie może opuszczać stanowiska, a na dodatek żadna inna osoba nie może być obecna w pomieszczeniu.

Ściąganie całkowicie odpada


Ze względu na fakt, że nadzorca Microsoft cały czas obserwuje gdzie kieruje swoje spojrzenie kandydat, w trakcie egzaminów Microsoft w trybie online nie ma absolutnie szans na ściąganie. Poza tym, ze względu na naturę tych testów, żadna ściągawka nie pomogła by w przypadku braku odpowiedniej wiedzy, nie tylko teoretycznej, ale także praktycznej. Podczas testów pojawiają się złożone pytania, na które można udzielić poprawnej odpowiedzi jedynie w przypadku dogłębnej i praktycznej znajomości tematu. Dodam jeszcze, że mój test zawierał ponad 50 tego rodzaju pytań, a na udzielenie wszystkich odpowiedzi miałem około 2 godziny czasu.

Podsumowanie


Podejście do sesji egzaminacyjnej przeprowadzanej w trybie online, z udziałem nadzorcy Microsoft, jest dla mnie całkiem nowym, a zarazem bardzo pozytywnym doświadczeniem. Trwający ponad 2 godziny egzamin bezproblemowo zdałem, co pozwoliło mi uzyskać certyfikaty, które umieszczam poniżej i które są cały czas dla mnie dostępne online, po zalogowaniu się w witrynie Microsoft Learning. Jest tam także cała historia moich egzaminów i uzyskanych certyfikacji.

Certyfikat Microsoft Specialist
Certyfikat Microsoft Specialist

Certyfikat MCP
Certyfikat MCP

sobota, 4 lutego 2017

Firmware dysku twardego

Czym jest firmware?


Określenie firmware generalnie odnosi się do wewnętrznego oprogramowania sprzętu, nie koniecznie dysku twardego, które udostępnia podstawowe funkcje sterujące jego pracą, jak również funkcje monitorujące stan urządzenia oraz ewentualnie metody zarządzające transferem danych. Krótko to ujmując, oprogramowanie firmware jest pośrednikiem, który umożliwia porozumiewanie się urządzenia z oprogramowaniem.

Firmware dysku twardego


Ze względu bezpieczeństwa danych, warto zadbać o to, by firmware dysku twardego było zawsze aktualne. Producenci dysków twardych udostępniają w swoich witrynach web aktualizacje oprogramowania firmware własnych modeli urządzeń. Tego typu aktualizacje firmware pojawiają się nie tylko w przypadku obecności błędów w starszych wersjach oprogramowania, lecz także w miarę wprowadzania różnego rodzaju optymalizacji, często pozytywnie wpływających na wydajność dysków.

Pojawienie się nowej wersji oprogramowania to sygnał, że czas zaktualizować starą wersję firmware, jeśli jeszcze tego nie zrobiliśmy. Sposoby i poziomy trudności procedury aktualizacyjnej różnią się nieco w zależności od modelu, producenta dysku i stosowanego systemu operacyjnego.

Jaki mam dysk? Jaką mam wersję firmware?


Sposobów uzyskiwania informacji dotyczących dysków twardych podpiętych do komputera oraz ich wersji oprogramowania wewnętrznego jest wiele. To jaką metodę wybrać zależne jest, przede wszystkim, od stosowanego systemu operacyjnego. W systemie operacyjnym Windows 10 można w tym celu wydać proste polecenie Powershell:
PS C:\WINDOWS\system32> Get-PhysicalDisk | select friendlyname, firmwareversion friendlyname firmwareversion ------------ --------------- KINGSTON SH103S3120G 526ABBF0 Samsung SSD 840 EVO 500GB EXT0DB6Q

W systemie operacyjnym Linux można posłużyć się narzędziem hdparm:
# hdparm -I /dev/sda /dev/sda: ATA device, with non-removable media Model Number: ST1000NM0033-9ZM173 Serial Number: xxxxxxxx Firmware Revision: SN04


Aktualizacja firmware dysku - podstawy


Aktualizacja firmware dysku twardego polega na nadpisaniu starszej wersji oprogramowania wewnętrznego nowszą wersją, którą ściągamy z witryny producenta. Aktualizacja firmware, ze względu na swoją naturę, jest operacją bardzo ryzykowną, której nie powinni przeprowadzać mało doświadczenii użytkownicy. Istnieje bowiem duże ryzyko uszkodzenia dysku twardego w trakcie aktualizacji firmware. Do uszkodzenia może dojść przykładowo, jeśli w trakcie zapisywania nowej wersji firmware zostanie wyłączony komputer, a może do tego dojść w przypadku odłączenia zasilania. Podstawą do wykonywania tego typu operacji jest przede wszystkim gwarancja ciągłego zasilania, czyli sprawna i naładowana bateria w przypadku laptopa, a zasilacz UPS z naładowaną baterią w przypadku komputera stacjonarnego.

Wiele sposobów – jeden cel


Producenci dysków twardych udostępniają różnego rodzaju narzędzia programowe, służące do aktualizacji firmware ich urządzeń. Narzędzia te, szczególnie w przypadku mechanicznych urządzeń, są zupełnie niezależne od stosowanego przez użytkownika systemu operacyjnego. Większość tych narzędzi wymaga uruchomienia komputera z bootowalnych nośników zawierających, oprócz załadowywanego do pamięci systemu operacyjnego, np. FREE-DOS, oprogramowanie aktualizujące firmware. Była to do niedawna jedyna dostępna procedura aktualizacji firmware dysków twardych, stosowana w celu pominięcia załadowania do pamięci operacyjnej programów systemowych Windows, co uniemożliwiało tak zwane flaszowanie, czyli nadpisywanie oprogramowania firmware urządzeń. Aplikacje aktualizujęce firmware dysków SSD, można przeważnie uruchamiać bezpośrednio z poziomu systemu operacyjnego. Najnowsze trendy producentów dysków twardych idą właśnie w tym kierunku, a tworzenie bootowalnych nośników z oprogramowaniem aktualizującym firmware zaczyna powoli odchodzić do lamusa.

SeaFlash - Aktualizacja firmware
SeaFlash - Aktualizacja firmware HDD


Aktualizacja firmware HDD z poziomu systemu Linux


Jako ciekawostka warto wspomnieć, że istnieje pewna metoda umożliwiająca wykonanie aktualizacji oprogramowania firmware dysku twardego z poziomu systemu operacyjnego Linux. Procedura ta jest jednak bardzo ryzykowna! Pamiętajmy, że wykonujemy ją wyłacznie na własną odpowiedzialność! Poniżej prezentuję przykładową procedurę aktualizacji firmware dysku twardego Constellation ES3 marki Seagate, rozpoznawanego przez system Linux jako urządzenie /dev/sda.

1. Ściągamy interesującą nas wersję firmware z witryny Seagate. Aby ściągnąć pliki firmware, w witrynie producenta należy wprowadzić numer seryjny urządzenia.

2. Odnajdujemy interesujący nas plik z rozszeżeniem .lod. Dla naszego przykładu jest to ConstellationES3-Megalodon-SATA-StdOEM-SN06.lod

5. Aktualizujemy oprogramowanie firmware naszego dysku z poziomu Linux:
hdparm --yes-i-know-what-i-am-doing --please-destroy-my-drive --fwdownload ConstellationES3-Megalodon-SATA-StdOEM-SN06.lod /dev/sda

Po dokonanej aktualizacji firmware, możemy sprawdzić czy procedura się powiodła:
# hdparm -I /dev/sda /dev/sda: ATA device, with non-removable media Model Number: ST1000NM0033-9ZM173 Serial Number: xxxxxxxx Firmware Revision: SN06

Przykład aktualizacji firmware HDD Samsung SSD 840 EVO


Samsung udostępnia w swojej witrynie bardzo ciekawe oprogramowanie, służące nie tylko jako narzędzie aktualizacyjne firmware SSD, lecz także jako oprogramowanie diagnostyczne i poprawiające ogólne parametry urządzeń. Moim zdaniem jest to najlepsze oprogramowanie tego typu, spośród rozwiązań oferowanych przez producentów urządzeń SSD.

Samsung Magician, to prawdziwy Magik, który współpracuje ze wszelkimi modelami urządzeń SSD tej firmy, w tym - na dzień dzisiejszy – z dyskami Solid State serii 470, 750, 830, 840, 850, 950 i 960. Samsung Magician udostępnia ponadto szereg bardzo przydatnych narzędzi, których dogłębne omówienie wychodzi poza zakres niniejszego artykułu. Wspomnę tylko o bardzo ciekawym włączniku 'Rapid mode', który umożliwia aktywację szybkiego trybu pracy urządzeń, co pozwala znacznie przyśpieszyć dysk.

Aby dokonać aktualizacji oprogramowania firmware dysków SSD marki Samsung, należy pobrać oprogramowanie Magician z witryny producenta. Magician wymaga uruchomienia z uprawnieniami Administratora i współpracuje tylko i wyłącznie z dyskami Samsung.

Samsung SSD EVO - Aktualizacja Firmware
Samsung SSD EVO - Aktualizacja Firmware

Jeśli po uruchomieniu oprogramowania i dokonania wyboru dysku z lewego-górnego menu dostęnych urządzeń, w sekcji 'Firmware Version' widnieje informacja 'Old Ver.', jest to znak iż warto zainstalować nową wersję firmware. Aby tego dokonać wystarczy wcisnąć niebieski przycisk Update, znajdujący się w dolnej części sekcji 'Firmware Version'.


Samsung SSD EVO - Aktualizacja Firmware - Nowa wersja zainstalowana
Samsung SSD EVO - Aktualizacja Firmware - Nowa wersja zainstalowana

Oprogramowanie zostanie wówczas pobrane ze strony producenta i automatycznie zainstalowane w urządzeniu SSD, po czym komputer zostanie ponownie uruchomiony. To wszystko. Jak widać procedura jest łatwa i szybka.

W przypadku uwag, pytań lub wątpliwości związanych z tematem, bardzo proszę o komentarze.

wtorek, 31 stycznia 2017

Jak ustawić przerwę techniczną witryny www

Podczas gdy możliwość ustawienia przerwy technicznej przeważnie nie ma większego sensu dla prostych serwisów web, to w przypadku bardziej złożonych witryn bywają sytuacje, w których warto tymczasowo całkowicie uniemożliwić dostęp użytkowników do treści stron. Są to przeważnie okoliczności związane z modyfikacją skryptów odpowiedzialnych za wyświetlanie treści lub z ingerencją w strukturę baz danych związanych z serwisem. Żaden webmaster raczej by nie chciał by osoby wówczas odwiedzające serwis napotykały się na wyświetlane błędy lub nieprawidłowe treści związane z wprowadzaniem modyfikacji lub z testowaniem nowych funkcjonalności serwisu.

Pomimo iż istnieje zgodny z dobrymi praktykami sposób na ustawienie przerwy technicznej serwisu www, to w praktyce webmasterzy posługują się w tym celu różnymi metodami mniej lub bardzie eleganckimi i mniej lub bardziej technicznie odpowiednimi. Niektóre z tych metod mogą bardzo negatywnie wpłynąć, nie tylko na reputację serwisu wśród odwiedzających, ale także na pozycję stron w wyszukiwarkach.

A może tak mała przerwa techniczna?
A może tak mała przerwa techniczna?

W przypadku konieczności ustawienia tymczasowej przerwy technicznej zdecydowanie odradzam wyłączać lub ograniczać funkcjonalność serwera www, ograniczać dostęp do serwisu za pomocą chronionych katalogów, reguł firewalla, bądź bezpośrednio wysyłając nagłówki z poziomu skryptów php za pomocą funkcji header(). Tego typu praktyki nie są przeważnie idealne dla przerwy technicznej, a mogą wręcz być przyczyną wielu negatywnych sytuacji.

W tym tutorialu przedstawię prosty i prawidłowy sposób ustawienia przerwy technicznej dla serwisu web obsługiwanym przez serwer Apache 2.x. Jest to sposób w pełni zgodny z dobrymi praktykami webmasterskimi.

W celu ustawienia przerwy technicznej w serwisie www w sposób omawiany w niniejszym artykule, muszą zostać spełnione następujące, wstępne warunki:

Moduł Apache mod_rewrite


Moduł Apache mod_rewrite (rewrite_module) umożliwia przekierowywania url, które w przypadku przerwy technicznej powinny kierować użytkownika na adres url, pod którym znajduje się dokument web informujący o tymczasowej sytuacji, w przypadku żądań HTTP dotyczących każdego innego adresu url, znajdującego się na domenie serwisu. Przed przejściem do dalszej części tego artykułu należy się upewnić, że moduł ten jest uruchomiony i działa prawidłowo. Można tego dokonać na kilka różnych sposobów. Najprostszym z nich może być, jeśli mamy dostęp do konsoli:

apachectl -M | grep rewrite_module

Innym prostym sposobem jest wywołanie polecenia php phpinfo() i sprawdzenie statusu modułu mod_rewrite w wyświetlanych wynikach skryptu.

Aby załadować moduł Apache mod_rewrite, jeśli nie jest jeszcze załadowany, należy dodać poniżej przedstawiony wiersz do pliku httpd.conf, lub do pliku /etc/httpd/conf.modules.d/, w zależności od dystrybucji systemu, po czym należy uruchomić ponownie serwer Apache:

LoadModule rewrite_module modules/mod_rewrite.so

Plik .htaccess


Plik .htaccess jest miejscem, w którym można ustawić wiele istotnych parametrów serwera www, które mają obowiązywać dla danego katalogu i ewentualnie jego podkatalogów, pod warunkiem, iż nie zawierają one kolejnych plików .htaccess z innymi ustawieniami, jeśli przetwarzanie plików .htaccess dla tych podkatalogów jest włączone. Aby ustawienia znajdujące się w tym pliku miały efekt, musi właśnie zostać włączona ich obsługa dla danego katalogu. Ustawień tych dokonujemy w głównym pliku konfiguracyjnym serwera Apache, czyli httpd.conf. Aby włączyć obsługę pliku .htaccess dla danego katalogu serwisu www, należy w sekcji <Directory> związanej z tym katalogiem dodać następujący wpis, jeśli jeszcze nie jest on tam obecny:

AllowOverride All

Przerwa techniczna: strona informująca o przerwie


Aby przekierowanie do dokumentu informującego o tymczasowej przerwie technicznej przyniosło efekt należy stworzyć dokument web z właściwą dla tej okoliczności informacją. Dla zgodności z niniejszym tutorialem, plik może mieć przykładową nazwę przerwaTechniczna.html i może znajdować się w głównym katalogu www serwera Apache, czyli lokalizacji określonej jako DocumentRoot w pliku konfiguracyjnym httpd.conf.

Przerwa techniczna: ustawienia .htaccess


Zakładając, że moduł mod_rewrite, o którym pisałem wcześniej, działa prawidłowo, a obsługa plików .htaccess jest włączona dla katalogów związanych z naszym serwisem, możemy teraz przystąpić do wprowadzenia odpowiednich, przykładowych wierszy „przerwy technicznej" do pliku .htaccess związanego z naszą witryną:

<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{DOCUMENT_ROOT}/przerwa-techniczna -f RewriteCond %{REMOTE_ADDR} !^192\.168\.0\.1 RewriteCond %{REQUEST_URI} !przerwaTechniczna.html$ [NC] RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC] RewriteRule .* /przerwaTechniczna.html [R=302,L] </IfModule>

Świetnie! Ale, co to wszystko oznacza?

W sekcji rozpoczynającej się od <IfModule mod_rewrite.c>, a kończącej na &lt/IfModule&gt znajdują się dyrektywy serwera Apache, które są przetwarzane tylko w przypadku prawidłowo działającego modułu mod_rewrite, w celu uniknięcia błędów. Dyrektywa 'RewriteEngine on' włącza przekierowania url, a kolejne wiersze ustawień przekierowują użytkownika do dokumentu informującego o przerwie technicznej w przypadku żądań HTTP dotyczących każdego innego adresu url witryny. Warunkiem przekierowań jest obecność pliku o przykładowej nazwie przerwa-techniczna w głównym katalogu www, określonego jako 'DocumentRoot' w pliku httpd.conf. Przekierowanie jednak nie następuje w przypadku wywołania plików zawierających grafikę, bądź wywołania adresu url dokumentu informującego o przerwie (aby uniknąć nieskończonej pętli przekierowań). Dodatkowo, użytkownicy, którzy łączą się z witryną z adresu 192.168.0.1 (tutaj adres klasy 'C' - dla przykładu - ten adres można oczywiście dowolnie zmienić) nie zostają przekierowani do dokumentu informującego o przerwie technicznej, co oznacza, że mają pełen dostęp do treści serwisu. Dostęp do serwisu w trakcie przerwy technicznej może okazać się przydatny np. webmasterom.

Warto również zauważyć, że przekierowanie następuje z kodem HTTP Error 302 (moved temporarily), co stanowi cenną informację dla robotów indeksujących zawartość witryny. W przypadku prawidłowo ustawionej przerwy technicznej, klient żądający dostępu do przekierowywanych adresów uri, otrzymuje następującą, przykładową odpowiedź HTTP:

HTTP/1.1 302 FoundLocation: http://naszadomena/przerwaTechniczna.html

Ustawienia wstępne gotowe. Czas włączyć przerwę techniczną!


Po dokonanych ustawieniach wstępnych, aby włączyć przerwę techniczną, należy utworzyć plik, o przykładowej nazwie, zgodnej z nazwą obecną w regułach przekierowań w pliku .htaccess, która w naszym przykładzie brzmi 'przerwa-techniczna'. Dopóki plik ten będzie istniał we wskazanym katalogu, obowiązywała będzie przerwa techniczna, co oznacza, że odwiedzający będą przekierowywani do dokumentu web o niej informującym.

Podobnie, aby zakończyć przerwę techniczną i przywrócić pełną dostępność serwisu, wystarczy usunąć plik 'przerwa-techniczna' z katalogu.

Oczywiście nie ma sensu każdorazowo tworzyć i usuwać tego pliku ręcznie, gdyż można w tym celu przygotować bardzo prosty skrypt php, składający się z zaledwie kilku wierszy, który będzie wykonywał tą czynność za nas.

Powodzenia! W przypadku uwag lub wątpliwości bardzo proszę o komentarze. Będę starał się na nie odpowiadać tak szybko, jak tylko będzie to możliwe.