Bądź na bieżąco - RSS

Homebrew autoaktualizacja – nakładka homebrew-autoupdate

16 września, 2017 | Brak Komentarzy | Kategoria: MacOS, Porady

Package Manager - homebrewJakiś czas temu napisałem krótki artykuł [1] o tym jak uslepszyć instalację oprogramowania w systemie Mac OS X. Krótko mówiąc najlepiej jest użyć w tym celu pakietu homebrew [2]. Przyznam, że jako właściciel Macbooka Pro od około pół roku dalej drążyłem temat. Nawyki nabyte podczas użytkownia od wielu lat laptopów z Linuksem dały o sobie znać. Po jakimś czasie zauważyłem, że generalnie dążę do upodobnienia środowiska graficznego Mac OS X do Gnome/Unity [3]. Rzeczywiście jeżeli ktoś przyzwyczaił się do Unity (a wiem, że ten wynalazek Canonical [4] ma tylu samu zwolenników co przeciwników) to trudno oprzeć się wrażeniu, że środowisko jest niemal skopiowane od Apple. Jednak interfejs graficzy to jedno a narzędzia systemowe to drugie. O ile trudno się nie zgodzić, że GUI na Macu jest po prostu bardzo dopracowane i nieporównywalnie lepsze, to już wszelkie narzędzia związane z instalacją oprogramowanie i po prostu zarządzania nim to zupełnie inna bajka.

Jedną z olbrzymich zalet Linuksa jest system zarządzania aplikacjami w oparciu o repozytoria. Szczerze mówiąc nie spotkałem żadnego lepszego rozwiązania, a wszystkie sklepy Microsoftu, Apple, Google itd. są po prostu namiastką. Oczywiście zawsze na początku działa efekt wow, głównie ze względu na rzekomą łatwość obsługi i dopracowane szczegóły graficzne, ale po jakimś czasie powoli rezygnuje z korzystania z takich rozwiązań. Naprawdę, bogate narzędzia linii poleceń do instalacji oprogramowania, które oferują praktycznie wszystkie dystrybucje Linuksa, są niezastąpione.

Wspomniany na początku homebrew ma być klonem dla Mac OS X opartym o podobne mechanizmy znane z Linuksa. I wszystko byłoby w porządku gdyby nie problem autoaktualizacji pakietów. Pod tym względem niestety jest po prostu niedopracowany. I tutaj z pomocą przychodzi kolejna nakładka: homebrew-autoupdate [5]. Ujawniając trochę szczegółów – wszystko moża doczytać na stronie projektu, jej instalacja jest bardzo prosta:

brew tap domt4/autoupdate

Po zainstalowaniu narzędzia, można w końcu wydać polecenie:

brew autoupdate

aby dowiedzieć się jakie są jego możliwości, do czego gorąco zachęcam.

MG

Tagi: , , ,

Czy działa połączenie UDP?

15 lipca, 2017 | Brak Komentarzy | Kategoria: Linux, Porady

UDP

 

 

Jedną z powszechnych czynności administracyjnych jest sprawdzanie stanu połączeń TCP lub UDP z serwerem. Zazwyczaj najpierw sprawdzamy czy serwer odpowiada – służy do tego polecenie ping:

ping 192.168.1.1

Jeśli administrator serwera zablokował protokół ICMP, co wcale nie zdarza się tak rzadko, to możemy posłużyć się poleceniem arping:

arping 192.168.1.1

Trzeba jednak pamiętać, że powyższa komenda zadziała tylko w sieci lokalnej. Kiedy będziemy już pewni, że wszystko z serwerem w porządku to możemy przejść do sprawdzania połączeń z usługami. Najprostszą czynnością będzie wykonanie polecenia telnet ze wskazaniem numeru portu usługi:

telnet 192.168.1.1 80

Powyższa komenda sprawdza połączenie z serwerem WWW na porcie 80. Jeśli wszystko działa powinniśmy otrzymać informację o ustanowieniu połączenia:

Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.

Jednak omawiane właśnie rozwiązanie dotyczy wyłącznie usług połączeniowych takich tak TCP. Co zrobić w przypadku protokołu UDP, z którego np. korzysta usługa DNS? Tutaj musimy posłużyć się aplikacją netcat, wskazując podobnie jak w poprzednim przypadku numer portu:

nc -vz -u 192.168.1.1 53

Opcja vz zwiększa poziom komunikatów oraz zmusza netcat wyłącznie do sprawdzenia usługi bez wysyłania danych. Z kolei u wymusza korzystanie z pakietów UDP w miejsc TCP. Przy prawidłowym przebiegu operacji otrzymamy informację, na której zależało nam od samego początku:

Connection to 192.168.1.1 53 port [udp/domain] succeeded!

MG

Tagi: , ,

Zakładka Windows Services Recovery

17 czerwca, 2017 | Brak Komentarzy | Kategoria: Porady, Windows

System ServiceAdministratorzy serwerów opartych o systemy firmy Microsoft, podobnie jak pozostali, zmagają się często z usługami systemowymi, które z niewyjaśnionych przyczyn odmawiają posłuszeństwa. Problemy tego typu potrafią być bardzo uciążliwe. Zwłaszcza jeżeli dotyczą serwisów działających w tle. Z jeszcze gorszą sytuacją mamy do czynienia jeżeli chodzi o serwer kluczowy dla działania większego systemu. Obserwowanie tzw. zwisów usług jest ciężkim doświadczeniem w życiu każdego admina. Wyobraźmy sobie, że jakaś usługa po prostu staje w miejscu co jakiś czas. Zaglądamy do komponentu Usługi Systemowe i widzimy, że niemalże regularnie jest zatrzymywana. Oczywiście zawsze można uruchomić ją ponownie ręcznie i najczęściej udaje się to bez problemu. Niemniej za jakiś czas ponownie zatrzymuje się i tak się dzieje bez wyraźnej przyczyny oraz co gorsza są to zdarzenia cykliczne.

Oczywiście w powyższym przypadku zawsze należy znaleźć źródło błedu aby wyleczyć jego przyczynę. Zgodnie z zasadą aby nie tylko usuwać objawy. Co jednak jeśli nie mamy na to czasu? System to rozpędzony serwer produkcyjny a każda przerwa w działaniu usługi oznacza duże kłopoty. W takiej sytuacji możemy skorzystać z tymczasowego rozwiązania, wbudowanego w serwery firmy Microsoft. Ciężko się przyznać, ale sam przez wiele lat obsługiwania takich systemów nie miałem pojęcia, że są takie możliwości.

Mowa tutaj o zakładce Recovery, która jest dostępna jeżeli wyświetlimy właściwości usługi sytemowej sprawiającej problemy. Zasadniczo na szybko możemy zaznaczyć opcje widoczne na poniższej ilustracji. Od tego momentu system sam będzie podnosił nieposłuszną usługę. Zawsze jednak trzeba pamiętać, że jest to rozwiązanie tymczasowe i na pewno powinniśmy dokonać głębszej analizy problemu. Póki co jednak zyskaliśmy cenny czas… i o to chodziło.

Windows Services Recovery

MG

Tagi: , ,

Brew – wygodny instalator dla Mac OS

20 maja, 2017 | Brak Komentarzy | Kategoria: MacOS, Porady

Apple instalatorMacbook jako komputer do pracy kojarzy się przede wszystkim z dość drogim ale za to bardzo wydajnym rozwiązaniem na długie lata. Praktycznie każda typowa czynność została tutaj zoptymalizowana tak aby ułatwić obsługę nawet bardzo opornym użytkownikom. Można śmiało napisać, że jedna z takich funkcji obrosła już legendą, mam na myśli instalator aplikacji. Zawsze bywa podawana jako argument 'za’ i rzeczywiście dla kogoś kto miał do czynienia tylko z systemem Windows, cały proces wydaje się nieprawdopodobnie prosty. Instaluję przeciągając program do katalogu Aplikacje, odinstalowywuje przeciągając ten sam program do Kosza.

Jednak dla kogoś kto jest przyzwyczajony np. do korzystania z repozytoriów, takie podejście wydaje się nieco dziwne. Przede wszystkim o ile producent aplikacji o to nie zadba, nie ma szans aby aktualizacje przebiegały w sposób automatyczny. Druga sprawa to przyglądając się całości od kuchni, deinstalacja wcale nie oznacza wyczyszczenia systemu z pozostałości po oprogramowaniu. Wystarczy sprawdzić dokładniej swój katalog domowy. Takie przykłady można mnożyć, niemniej nie chodzi o to aby kogoś tu zniechęcać.

Ponieważ żyjemy w bardzo różnorodnym świecie gdzie zamknięte, hermetyczne rozwiązania są praktycznie rzadkością, to okazuje się, że również Mac OS da się trochę podrasować. Z pomocą wszystkim niezadowolonym przychodzi bowiem narzędzie brew. Jego instalacja z poziomu terminala systemowego jest bardzo prosta:

ruby -e $(curl -fsSL https://raw.githubusercontent.com/ →
Homebrew/install/master/install)"

Następnie korzystając z tego samego terminala wystarczy wydać polecenie:

brew search

aby otrzymać, zadziwiająco długą listę programów, które można zainstalować komendą:

brew install {nazwa programu}

Jeśli dołożymy jeszcze polecenia takie jak:

brew update
brew doctor
brew upgrade

to widać wyraźne podobieństwo do narzędzi dobrze znanych z Linuksów.

Dalsze szczegółowe omawianie narządzia brew mija się z celem, dlatego że przede wszystkim w Internecie można znaleźć mnóstwo informacji na ten temat, a po drugie zawsze najlepiej jest pobawić się samemu. Warto jednak dodać, że zdecydowanie rzadziej można znaleźć informacje o tym, że za pomocą opisywanego instalatora można instalować również aplikacje graficzne czyli np. Chrome, Firefox oraz Gimp czy Inkscape. Wybór jest naprawdę duży. W tym przypadku trzeba skorzystać z rozszerzenia cask, czyli użyć komendy rozbudowanej np.

brew cask search

Pozostałe reguły nie zmianiają się. Jak widać za pomocą paru prostych poleceń możemy w Mac OS skorzystać z dość zaawansowanego systemu instalacji, z obsługą aktualizacji oraz  innymi ciekawymi funkcjami.

MG

Tagi: , , ,

Cron – zabawy z usługą harmonogramu zadań systemowych

15 kwietnia, 2017 | Brak Komentarzy | Kategoria: Linux, Porady

Cron - linuksowy budzik systemowyWszyscy użytkownicy Linuxa, zarówno korzystający tylko do celów domowych, jaki i administratorzy systemów serwerowych, na pewno nie raz zetknęli się z tak zwanym harmonogramem zadań systemowych czyli po prostu usługą cron. Pomysłowość ludzka bywa zadziwiająca i osobiście widziałem już najdziwniejsze zastosowania harmonogramu. Można go używać do wykonywania codziennych kopii zapasowych za pomocą ulubionego narzędzia rsync, można co 5 minut synchronizować dane pomiędzy dwoma systemami, można wreszcie wymusić okresowe ponowne uruchamianie usługi systemowej daemona, która nie zachowuje się tak jak byśmy tego oczekiwali. W tym ostatnim przypadku należałoby rzecz jasna zastanowić się raczej czemu usługa nie działa prawidłowo i poprawić jej błędy ale kto może zabronić leniwemu administratorowi pójść na skróty. Tak czy inaczej zastosowań może być mnóstwo.

Generalnie obsługa usługi cron sprowadza się do wywołania prostej komendy z odpowiednimi parametrami. Jeśli chcemy wyświetlić listę aktywnych zadań użyjemy wywołania:

crontab -l

W przypadku dodawania nowego zadania będzie to składnia:

crontab -e

I właśnie dopisanie nowej linijki z poleceniem uruchamiania programu czy skryptu o zadanym czasie, pomimo, że wydaje się stosunkowo proste, bardzo często budzi wątpliwości. Szczególnie początkujący użytkownicy mogą gubić się w gąszczu zasad dotyczących definiowania pory uruchamiania, definiowania okresu powtarzania, stosowania wyjątków itd. Często kończy się to szperaniem za pomocą Google, nikt przecież nie uczy się na pamięć wszyskich reguł. Właśnie w takiej sytuacji może przyjść z pomocą serwis crontab.guru.

Jak już wielokrotnie wspominałem w innych artykułach nie staram się opisywać szczegółowo wad i zalet każdego przytaczanego narzędzia ale jednocześnie gorąco zachęcam do zapoznania się z nim i wypróbowania w codziennej pracy. W końcu wszystko co może uczynić codzienne zadania łatwiejszymi i bardziej przyjemnymi jest warte poświęcenia uwagi. Zatem otwieramy kolejne okienko przeglądarki i wpisujemy adres crontab.guru. Życzę miłej pracy.

MG

Tagi: , ,

Redirect – automatyczne przekierowanie strony www

18 marca, 2017 | Brak Komentarzy | Kategoria: Linux, Porady, Windows

URL RedirectBardzo często zdarza się, że chcemy przenieść serwis www, swoją stronę domową czy nawet pojedyncze statyczne dokumenty HTML pod zupełnie nowy adres. Aby poinformować swoich użytkowników o zmianach można umieścić odpowiedni komunikat na stronie – tzw. URL Redirect Information. Jest to zdecydowanie najprostsza metoda ale czasami warto zastanowić się nad innymi sposobami. Jeśli akurat jesteśmy administratorami serwera to można oczywiście tak skonfigurować serwer wirtualny Apache aby robił to automatycznie:

<VirtualHost *:80>
  ServerName poprzedni_adres.pl
  Redirect permanent / http://nowy_adres.pl
</VirtualHost>

Jednak nie mając tak szerokich możliwości również możemy skonfigurować zaawansowane przekierowanie. Najprościej będzie zrobić to w HTML:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="refresh" content="0; url=http://nowy_adres">
</head>
<body>
</body>
</html>

Zdarza się jednak, że przeglądarki nie dopuszczają do tego typu przekierowań. Dlatego możemy skorzystać z pliku .htaccess:

Redirect 301 / http://nowy_adres

Jeśli nie mamy powyższych możliwości, nadal możemy próbować, używając JavaScript:

<!DOCTYPE html>
<html>
<body>
<script type="text/javascript">
    window.location.replace("http://nowy_adres");
</script>
</body>
</html>

lub języka PHP:

<?php
header("Location: http://nowy_adres", true, 301);
exit();
?>

Tak czy inaczej, mamy do wyboru całkiem sporo różnych metod.

MG

Tagi: , , ,

Macierz RAID1 i problemy z GRUB2

18 lutego, 2017 | Brak Komentarzy | Kategoria: Linux, Porady

RAID1Powszechnie wiadomo, że nie jest szczególnie trudno zbudować macierz programową RAID1 używając systemu operacyjnego Debian. Przy instalacji jest to jedna z najczęściej wybieranych opcji, w celu zabezpieczenia się przed niespodziewaną utratą danych. Większość tak zwanych software’owych raidów, oferowanych przez producentów płyt głównych, opiera się właśnie o pakiet mdadm, czyli w zasadzie jest to dokładnie takie samo rozwiązanie jak w przypadku zwyczajnej instalacji. Przyznam się, że często wyłączam raid na płycie głównej, bo wolę panować do końca nad systemem, i po prostu instaluję oprogramowanie ręcznie. I wszystko było by dobrze gdyby nie jeden, nie zrozumiały przeze mnie fakt. Otóż do tej pory, przy składaniu raidu, instalator modyfikuje konfigurację bootloadera grub tylko dla pierwszego dysku (np. /dev/sda). Co oznacza, że w przypadku uszkodzenia drugiego dysku (np. /dev/sdb) twardego komputer przeżyje awarię, jednak jeżeli zostanie uszkodzony pierwszy dysk można mieć sporo kłopotów z jego uruchomieniem. Internet jest pełen takich historii, jak również mnóstwo jest porad jak zapobiegać lub usunąć ten błąd. Ja gorąco będę namawiał do przygotowania się zawczasu i skonfigurowania prawidłowo systemu na samym początku. W tym celu zaraz po instalacji systemy wystarczy skorzystać z trzech prostych poleceń (wydawanych z konta root)):

mv /boot/grub/device.map /boot/grub/device.map.old
grub-mkdevicemap
update-grub2 && grub-install /dev/sda && grub-install /dev/sd

Czasami naprawdę niewiele wystarczy, żeby zabezpieczyć się na przyszłość.

MG

Tagi: , , , ,

Debian Jessie – sshd i obsługa PAM

21 stycznia, 2017 | Brak Komentarzy | Kategoria: Linux, Porady

Debian PAMW najnowszej wersji Debiana (Jessie), nie wiedzieć skąd pojawił się błąd związany z obsługą sesji SSH. Do tej pory, wykonując typowe prace administracyjne takie jak aktualizacje, w szczególności wymianę jądra systemu na nowszą wersję, nie było żadnego problemu kiedy trzeba było wydać polecenie reboot. Serwer prawidłowo kończył sesję SSH i po krótkiej chwili można było znowu się połączyć. O ile oczywiście dał radę podnieść się po naszych zabiegach. Tym razem jest inaczej. Krótko mówiąć sesja SSH zawiesza się i bez siłowego zamknięcia terminala nie ma mowy o kontynuowaniu pracy. Związane jest to z obsługą biblioteki PAM. Żeby pozbyć się opisanej niedogodności konieczna jest instalacja dodatkowych bibliotek, które nie są dostarczane w standarowej wersji:

apt-get install libpam-systemd dbus

Na tym nie koniec. Musimy upewnić się, że nasz daemon sshd ma włączoną obsługę PAM. Tak inaczej wystarczy wydać polecenie:

 grep -i UsePAM /etc/ssh/sshd_config

i ewentualnie odkomentować w pliku /etc/ssh/sshd_config wspomnianą linię. Na koniec restartujemy sshd:

/etc/init.d/ssh restart

MG

Tagi: , , ,

Time has been changed – co oznacza ten komunikat

17 grudnia, 2016 | Brak Komentarzy | Kategoria: Linux, Porady

Time has been changedJednym z problemów w administracji serwerami (nie tylko inuxowymi) jest synchronizacja czasu. Praktycznie każda usługa systemowa może odmówić posłuszeństwa jeżeli nie zadbamy o prawidłową podstawę czasu. Z pozoru zadanie to jest dość proste. Wystarczy zainstalować pakiet ntp:

 

 

apt-get install ntp

i od razu wszystko powinno działać. Osobiście polecam takie rozwiązanie na każdym sewerze z Linuxem aby właśnie zadbać o zsynchronizowanie naszej skali czasu z serwerami źródłowymi dostępnymi w Internecie. Musimy jednak pamiętać, że oprócz zegara systemowego, każdy komputer wyposażony jest w zegar sprzętowy. Funkcjonowanie tego ostatniego, a raczej jego zła praca, na pewno będzie miała wpływ na stabilność zegara systemowego. Są to bardzo rzadkie przypadki ale zdarzają się. Np. w Debianie Jessie aby zrealizować synchornizację wykorzystywane są kolejno usługi i funkcje systemd, swdate i w konsekwencji Slow Clock Adjuster. Co w moim przypadku, przy korzystaniu z maszyny VirtualBox, i zapewne błędnej obsłudze czasu przez środowisko wirtualne, zaowocowało komunikatami systemowymi (rsyslogd):

host systemd[1]: Time has been changed

Jak wspomniałem, jest to błąd oprogramowania i aby pozbyć się powyższych komunikatów trzeba je po prostu odfiltorwać na poziomie logu systemowego. W tym celu logujemy do konsoli roota i zakładmy plik time_msgs.conf:

touch /etc/rsyslog.d/time_msgs.conf

Następnie edytujemy plik:

vi /etc/rsyslog.d/time_msgs.conf

i dodajemu linijkę:

:msg, contains, "Time has been changed" stop

Po wszystkim musimy ponownie uruchomić usługę:

/etc/init.d/rsyslog stop
/etc/init.d/rsyslog start

Tym samym pozbyliśmy się niepotrzebnych komunikatów z logów systemowych.

MG

Tagi: , , , , ,

Fail2Ban – usuwanie adresu IP z czarnej listy

19 listopada, 2016 | Brak Komentarzy | Kategoria: Linux, Porady

Fail2BanJedną z najbardziej popularnych metod obrony przed atakami typu brute-force, które realizowane są automatycznie za pomocą skryptów sieciowych, jest zastosowanie aplikacji Fail2Ban na serwerze. Być może wspomniane ataki nie są szczególnie niebezpieczne, zwłaszcza jeżeli pamiętamy o stosowaniu odpowiednio skomplikowanych haseł dla kont użytkowników, generują jednak tony niepotrzebnych wpisów w logach systemów. Utrudnia to późniejszą analizę zdarzeń systemowych. Poza tym przy nieodpowiedniej konfiguracji naszych sieciowych usług serwerowych może to doprowadzić do zatrzymania się całego serwera – atak typu denial-of-service. Stąd trudno dziwić się popularności Fail2Ban, który po prostu umożliwia zablokowanie na jakiś czas adresu IP, jeśli jest on źródłem często powtarzających się zapytań, skierowanych do wybranej usługi sieciowej np. SSH, FTP itd.

Problemem jaki jest związany ze stosowaniem Fail2Ban jest blokowanie dobrych adresów IP. Na przykład może do tego dojść jeśli nasz użytkownik zapomni hasła do poczty i będzie usiłlował wielokrotnie zalogować się z błędem. Zgodnie ze zdefiniowanymi regułami zostanie zablokowany. Taka sytaucja zdarza się dosyć często. Wie o tym każdy kto zajmuje się administrowaniem. W dokumentacji Fail2Ban można znaleźć informacje jak odblokować wskazany adres za pomocą narzędzia fail2ban-client. Niestety ze względu na różnicę wersji samego oprogramowania dla różnych dystrybucji systemu Linux, jak również niepoprawnie obsługiwane funkcje, bywa, że Fail2Ban nie radzi sobie z tym zadaniem prawidłowo. Dlatego chciałem zaproponować inną metodę, bazującą na poleceniu iptables. Fail2Ban wykorzystuje iptables do blokowania połączeń, zatem poniższa metoda jest jak najbardziej bezpieczna.

Z poziomu administratora – konto root – wydajemy polecenie w konsoli systemowej:

iptables -L -n --line-numbers

Następnie odnajdujemy poszukiwany adres IP na liście i zapamiętujemy nazwę łańcucha np. Chain dynamic – nazwa dynamic, oraz numer linii. Parametry te posłużą do usnięcia adresu IP z czarnej listy za pomocą polecenia:

iptables -D nazwa_lancucha numer_linii

W tym momencie przywracamy dostęp do serwera naszemu zapominalskiemu użytkownikowi.

MG

Tagi: , , ,