Bądź na bieżąco - RSS

Conky – integracja z Fetchmail

16 lipca, 2016 | Brak Komentarzy | Kategoria: Linux, Porady

ConkyDesktop Conky to potężny i popularny pakiet wśród użytkowników desktopowych Linuxów. Wyróżnia się przede wszystkim niesamowitą elastycznością pozwalając zastąpić dowolne applety pulpitu i przygotować spersonalizowany wygląd desktopu. Przyznam, że również jestem jego zagorzałym zwolennikiem jednak ostanio przy zmianie systemu z poczciwego Ubuntu 12.04 na wersję 14.04 czekała mnie niemiła niespodzianka. Jako właściciel kilku kont pocztowych lubię wyświetlać informację o liczbie nowych wiadomości bezpośrednio na pulpicie. Do tej pory radziłem sobie za pomocą dodatku conkyemail. Niestety nie jest on dalej rozwijany a dla Ubuntu 14.04 istnieje wiele niespełnionych zależności podczas instalacji dlatego musiałem z niego zrezygnować. Po kilku godzinach poszukiwań czym można zastąpić wspomniany pakiet zdecydowałem się zainstalować sprawdzony Fetchmail. Integracja z Conky nie jest w tym przypadku prosta i oczywista ale efekt końcowy wygląda całkiem dobrze.

Po pierwsze, jak wspomniałem, musimy zainstalować pakiet Fetchmail. Po drugie należy utworzyć specjalny plik konfiguracyjny .netrc w katalogu domowym. Plik będzie zawierał nazwę użytkownika oraz hasło dla konta pocztowego, dla którego sprawdzamy nowe wiadomośc

machine serwer.pocztowy.pl
    login nazwa_użytkownika
    password hasło_użytkownika

Ze względu na bezpieczeństwo powinniśmy zmienić uprawnienia dla pliku:

chmod 600 ~/.netrc

Warto również wspomnieć, że możemy skonfigurować dowolną liczbę kont, Fetchmail podczas połączenia będzie przeszukiwał listę żeby odnaleźć pasujący wzorzec.

Teraz możemy zająć się plikiem konfiguracyjnym .conkyrc. W przypadku opisywanego rozwiązania powinniśmy w nim umieścić następującą linijkę:

pocztowy.pl: ${execi 300 fetchmail -c -p pop3 -u nazwa_użytkownika →
serwer.pocztowy.pl | sed -e 's/fetchmail: //' | sed -e 's/for.*$//'}

Jej działanie polega na okresowym wywoływaniu Fetchmail w celu sprawdzenia czy są nowe wiadomości – opcja -c. Zaś aby usunąć niepotrzebne informacje z komunikatu zwrotnego zastosowałem filtrowanie w potoku za pomocą sed. Efektem końcowym będzie wyświetlenie na pulpicie liczby nieprzeczytanych wiadomości email.

MG

Tagi: , , , ,

Budowa serwera SFTP na bazie SSH i Debiana

21 maja, 2016 | Brak Komentarzy | Kategoria: Linux, Porady

SFTPJak powszechnie wiadomo nie wynaleziono jeszcze bardziej popularnej usługi do transferu plików niż FTP. Być może większość administratorów wolałaby korzystać z innych rozwiązań ale tak się składa, że znają prawie wszyscy użytkownicy i to oni z reguły wymuszają stosowanie FTP. Podstawowy problem w tym przypadku to brak szyfrowania transmisji co przede wszystkim oznacza przesyłanie haseł jawnym tekstem. Jednak mając gotowy serwer z Linuxem oraz dostępem zdalnym po SSH można pokusić się o przygotowanie serwera SFTP, który zachowując większość funkcji FTP będzie zabezpieczał odpowiednio nasze połączenia. Co więcej jeśli ktoś dotychczas korzystał z bardzo popularnych programów typu WinSCP czy FileZilla to zasadniczo nie powinien mieć żadnych problemów z korzystaniem z SFTP bowiem obsługa tego ostatniego została już zaimplementowana w tych windowsowych klientach. Zatem do dzieła.

Po pierwsze sprawdzamy czy obsługa SFTP została włączona w konfiguracji serwera OpenSSH. Plik /etc/ssh/sshd_config powinien zawierać wpis:

Subsystem sftp internal-sftp

Teraz, na końcu pliku możemy dodać sekcje dla nowego konta z dostępem SFTP:

Match User KontoSFTP
  ChrootDirectory /home
  AllowTCPForwarding no
  X11Forwarding no
  ForceCommand internal-sftp

Oczywiście zakładam, że wcześniej założyliśmy sobie takie konto w systemie. Po ponownym uruchomieniu serwera SSH wszystko powinno zacząć działać… oprócz dwóch drobnostek.

Na pewno warto zadbać aby użytkownik KontoSFTP nie miał dostępu shellowego do systemu. W tym celu musimy zmienić mu domyślny shell. Najpierw sprawdzamy czy możemy użyć shella typu sftp-server:

cat /etc/shells

Jeśli nie zostanie wyświetlona nazwa sftp-server powinniśmy użyć polecenia:

echo '/usr/lib/openssh/sftp-server' >> /etc/shells

Teraz możemy już zmodyfikować konto naszego użytkownika:

usermod -s /usr/lib/openssh/sftp-server KontoSFTP

Druga sprawa to powinniśmy zmienić prawa dostępu do tych podkatalogów w /home, do których chcemy zabezpieczyć dostęp. W ten sposób nasz użytkownik nie będzie mógł zwiedzać innych podkatalogów. Dla każdego z zabezpieczanych katalogów należy wydać polecenie:

chmod 700 /home/NazwaZabezpieczanegoKatalogu

Po wykonaniu powyższych czynności możemy cieszyć się nowym serwerem SFTP. Powyższe uwagi dotyczą rzecz jasna mojego ulubionego Debiana.

MG

Tagi: , , , , ,

Roaming Profile – kopia zapasowa c.d.

19 marca, 2016 | Brak Komentarzy | Kategoria: Porady, Windows

Łatka

 

Dwa miesiące temu pisałem o tym jak zrobić kopie zapasową profilu typu Roaming Profile w sieci Active Directory. W trakcie korzystania przez cały ten czas z opisywanego narzędzia psexec będącego częścią pakietu SysInternals PSTools okazało się, że potrafi ono odmówić posłuszeństwa. Każda próba uruchomienia środowiska za jego pomocą kończy się komunikatem:

 

Error communicating with PsExec service

 

Próba zwyczajnego przeinstalowania pakietu nie pomaga. Okazuje się, że antidotum w tej sytuacji jest wykonanie poniższej procedury i nie pytajcie mnie dlaczego to działa akurat w taki sposób:

  1. Na komputerze z zainstalowaną usługą psexec należy ją po prostu zatrzymać. Można to zrobić za pomocą GUI lub za pomocą polecenia pskill.
  2. Na drugim komputerze trzeba zdalnie usunąć psexec poleceniem sc \\nazwa_naprawianego_komputera delete psexesvc.
  3. Dopiero teraz można ponownie zainstalować pakiet PSTools ponownie.

Hmm…, dziwne.

MG

Tagi: , , ,

Roaming Profile – kopia zapasowa

16 stycznia, 2016 | Brak Komentarzy | Kategoria: Porady, Windows

Roaming ProfileDomena MS Active Directory umozliwia przechowywanie profilu użytkownika w postaci tzw. Roaming Profile. Oznacza to, że przede wszystkim dane użytkowników mogą byc składowane na serwerze i umieszczone w odpowiednim współdzielonym katalogu. Główną zaletą takiego rozwiązania (pominę tym razem wady) jest umożliwienie pracy z każdej końcówki w domenie ponieważ po zalogowaniu profil użytkownika jest przesyłany na stację roboczą. Zaś podczas pracy system dba o synchronizację jego zawartości z serwerem. Brzmi całkiem nieźle i powiedzmy, że generalnie się sprawdza.

W skład profilu użytkownika wchodzą przede wszystkim jego pliki i poczta ale również ustawienia związane z całym spersonalizowanym środowiskiem pracy – czyli profil użytkownika w całości. Są to dane bardzo wrażliwe na zmiany. Powszechnie wiadomo czym może zakończyć się ręczne modyfikowanie profilu Windows. Stąd Roaming Profile przechowywany na serwerze ma odpowiedni poziom zabezpieczeń. Dostęp do swoich plików ma praktycznie tylko ich użytkownik. Nie ma go nawet administrator. Co jednak można zrobić w sytuacji gdy powinniśmy (jako administrator) wykonywać kopie zapasową profilu użytkownika?

Rozwiązaniem tego problemu jest zmodyfikowanie uprawnień dla poszczególnych katalogów wewnątrz profilu użytkownika. Aby chronić środowisko pracy najlepiej jest ograniczyć się np. tylko do katalogów: Pulpit i Moje dokumenty (większość cennych danych znajduje się właśnie tutaj).

Zaczynamy od pobrania narzędzia PSTools ze strony SysInternals. Po rozpakowaniu pliku PSTools.zip, z katalogu PSTools uruchamiamy okienko systemowe poleceniem:

psexec -i -s cmd.exe

Potem korzystając z otworzonego okna systemowego (wywołanego z najwyższymi uprawnieniamy – SYSTEM, należy korzystać bardzo ostrożnie) wydajemy polecenie zmieniające uprawnienia dla wybranego katalogu:

icacls "D:\Profiles\*" /grant "domain admins":(OI)(CI)F /T

Naturalnie przykładowa ścieżkę D:\Profiles\* zmieniamy na docelową dla swoich zastosowań (np. wspomniany Pulpit lub Moje dokumenty).

MG

Tagi: , , ,

update.rc-d vs rc.local vs @reboot

17 października, 2015 | Brak Komentarzy | Kategoria: Linux, Porady

Auto-startTym razem chciałem przedstawić krótki i treściwy wpis na temat uruchamiana aplikacji w trakcie startu serwerowego systemu operacyjnego. Sprawa dotyczy mojego ulubionego Debiana. Właściwie najabardziej elegancką i zgodną z regułami metodą jest umieszczenie skryptu startowego w katalogu /etc/init.d/, nadanie mu praw wykonywalnych i wywołanie polecenia:

 

 

update-rc.d nasz_skrypt defaults 99

Niemniej z różnych przyczyn nie zawsze się to udaje. Trzeba podejść do tematu inaczej. Od razu zaznaczam, że poniższe metody, jakkolwiek spełniające swój cel, są po prostu bardzo nieeleganckie i nie świadczą najlepiej o umiejętnościach administratora. Czasami jednak trzeba się ugiąć – chociażby pod presją czasu.

Druga metoda polega na dopisaniu skryptu do pliku /etc/rc.local. Generalnie tym sposobem można rozwiązać dużo problemów ale osobiście stosuje go tylko doraźnie. Polecam to jako rozwiązanie tymczasowe.

Trzecia metoda, kiedy zawiodą dwie poprzednie, to umieszczenie skryptu startowego w cronie systemowym dla konta root. Wywołujemy go poleceniem:

crontab -e

a następnie na końcu pliku dopisujemy linijkę:

@reboot /ścieżka_dostępu/nasz_skrypt

Od tego momentu, za każdym razem podczas uruchamiania się systemu, automatycznie będzie wykonywał się skrypt. Mało elegancko ale skutecznie.

MG

Tagi: , , , ,

Administracja usługami za pomocą rcconf i sysv-rc-conf

16 sierpnia, 2014 | Brak Komentarzy | Kategoria: Linux, Porady

Linia poleceńJeśli chcemy precyzyjnie zarządzać demonami systemowymi uruchamianymi w trakcie startu sytemu to pakiety rcconf i sysv-rc-conf mogą okazać niezastąpionym narzędziem. Wyobraźmy sobie, że administrujemy sewerem Debian bez powłoki graficznej. Aby dodać lub usunąć usługę systemową do listy procesów startowych możemy skorzystać z dobrze znanego skryptu update-rc.d. Niestety, zdarza się, że podczas jego użycia napotkamy błędy związane ze skryptami startowymi. Co można zrobić w takiej sytuacji? Jeżeli zależy nam na czasie, proponuje zainstalować z repozytorium odpowiednie narzędzia:

apt-get install rcconf
apt-get install sysv-rc-conf

Następnie wystarczy wydać odpowiednią komende z linii poleceń i rozpocząć konfiguracje systemu. rcconf jest nakładką (front-end) dla skryptów update-rc.d, zaś sysv-rc-conf to rozbudowane narzędzie, które umożliwia np. szczegółowe dodawanie i suwanie usług w zależności od poziomu startowego (runlevel). Tak czy inaczej obydwa są bardzo przejrzyste i intuicyjne. Myśle, że poradzi sobie z nimi każdy, nawet początkujący administrator.

MG

Tagi: , ,

Konfiguracja blacklist za pomocą Shorewalla – ciąg dalszy

21 czerwca, 2014 | Brak Komentarzy | Kategoria: Linux, Porady

Czarna listaDawno, dawno temu opublikowałem wpis na temat blokowania ruchu przychodzącego za pomocą czarnej listy w Shorewallu. Artykuł kończy się adresem pliku blacklist z listą podsieci, z których pochodzi najwięcej ataków. Minęło dużo czasu i adres tej aktualizowanej co tydzień listy stał się nieaktualny. Obecnie plik można pobrać z pod adresu:

https://dl.dropboxusercontent.com/u/545869/Config/blacklist

Jak pisałem jest to gotowy do wykorzystania spis. W zasadzie wystarczy umieścić go /etc/shorewall. Jednak tym razem chciałem pokazać jak tworzyć samemu podobne listy. Generalnie wystarczy w tym celu uważna analiza logów systemowych w poszukiwaniu prób włamania. Przykładowy wpis wygląda tak:

Jun 21 06:22:13 server sshd[9820]: pam_unix(sshd:auth): →
authentication failure; logname= uid=0 euid=0 tty=ssh →
ruser= rhost=32.96.49.39  user=root
Jun 21 06:22:15 server sshd[9820]: Failed password for → root from 32.96.49.39 port 1061 ssh2

Jak łatwo zauważyć adres IP zdalnego hosta (rhost) jest jawny. Można zatem wykorzystać tę informacje do jego zablokowania. Można też posunąć się dalej i zablokować całą podsieć. Jak zamienić pojedynczy adres na adres podsieci? Po pierwsze trzeba zainstalować narzędzie whois. Instalacja w Debianie wygląda następująco:

apt-get install whois

Po drugie warto znaleźć dobry, ogólnodostępny serwer whois. Mogę z czystym sumieniem polecić serwer whois.cymru.com. Zwraca precyzyjne odpowiedzi, więc nie spowoduje, że przypadkiem zablokujemy dostęp dla połowy sieci. Polecenie whois jest dosyć proste w obsłudze:

whois -h whois.cymru.com -v 32.96.49.39

W odpowiedzi, w kolumnie BGP Prefix znajdziemy adres podsieci w notacji CIDR. Tak uzbrojeni możemy rozpocząc prace nad własną czarną listą.

MG

Tagi: , , , ,

Partition 1 does not end on cylinder boundary

15 marca, 2014 | Brak Komentarzy | Kategoria: Linux, Porady

HDD

 

 

 

Tym razem chciałbym opisać błąd, który wprawił mnie w niemałe zdumienie. Na jednym z serwerów z Debianem macierz RAID1 odmówiła posłuszeństwa. Jeden z dysków należało wymienić. Po zainstalowaniu nowego, zabrałem się za przygotowanie partycji z pomocą narzędzia fdisk. Jednak po wyświetleniu listy partycji na pierwszym dysku okazało się, że zawiera ona błędy:

fdisk -l /dev/...
...
Partition ... does not end on cylinder boundary.

Było to o tyle dziwne, że dysk pracował prawidłowo i macierz pracowała prawidłowo. Nigdy nie otrzymałem komunikatów o błędach, na co jestem szczególnie wyczulony! Pobieżne przejrzenie materiałów w sieci również niewiele pomogło. Dopiero po jakimś czasie trafiłem na wyjaśnienie. Wbrew pozorom to nie jest błąd! W niektórych implementacjach fdisk uruchamia się z domyślnie włączoną opcją kompatybilności z DOS. Obecnie zaś praca z DOS chyba zdarza się już bardzo rzadko. Dlatego jeśli widzimy komunikat jak w tytule należy użyć opcji:

OPTIONS
[...]
       -c     Switch off DOS-compatible mode. (Recommended)
[...]

Wówczas wynik wyświetlenia listy partycji będzie już prawidłowy. Zatem powinno być np.:

fdisk -l -c -u /dev/sda

Obecnie rzecz jasna powoli zastępujemy fdisk narzędziem parted (ze względy na obsługę dysków powyżej 2TB). Jednak jeśli ktoś przez lata używał fdiska…

Tagi: , ,

Polecenie ‘forfiles’

1 września, 2012 | Brak Komentarzy | Kategoria: Porady, Windows

Bardzo ciężko jest się przyznać do własnej niewiedzy. Jednak czasami trzeba. Ostatnio musiałem się zmierzyć z problemem usuwania logów aplikacji po 14 dniach na serwerze Windows 2008R2. Zadanie dosyś proste jeśli myślimy o środowisku Linuksa. Czy jest tak samo w przypadku Widnows? Rzecz jasna można skorzystać z bibliotek Cygwin, ale tak czy inaczej będzie to forma protezy. Dlatego zabrałem się za przeglądanie Internetu i po chwili, po raz pierwszy, natknąłem się na program/polecenie forfiles. Uruchamiane klasycznie z linii poleceń pozwala zbudować prosty skrypt, który po dodaniu do harmonogramu zadań systemowych będzie czyścił logi. Poniżej przyklad:

forfiles /S /D -14 /P "Dysk:\Log\" /M *.log /C "cmd /c del @file"

Sprawdziłem i działa całkiem dobrze:) Można powiedzieć, że w pewnym sensie Microsoft dostarczył odpowiednik linuksowego polecenia ‘find’. Na zakończenie, skrócona lista opcji programu ‘forfiles’:

/P nazwa_ścieżki      Wskazuje ścieżkę do rozpoczęcia wyszukiwania.                       
                      Folderem domyślnym jest bieżący katalog                       
                      roboczy (.).

/M maska_wyszukiwania Wyszukuje pliki według maski wyszukiwania.                       
                      Domyślna maska wyszukiwania to '*' .

/S                    Nakazuje poleceniu forfiles przejście do                       
                      podkatalogów. Na przykład: "DIR /S".

/C polecenie          Wskazuje polecenie, które ma być wykonane dla                       
                      każdego pliku. Ciągi polecenia powinny                       
                      być ujęte w cudzysłów.

                      Domyślne polecenie to: "cmd /c echo @file".
                      Następujące zmienne mogą być używane w                        
                      ciągu polecenia:                       
                      @file    - zwraca nazwę pliku.                        
                      @fname   - zwraca nazwę bez                                   
                                 rozszerzenia.                       
                      @ext     - zwraca tylko rozszerzenie                                   
                                 pliku.                       
                      @path    - zwraca pełną ścieżkę pliku.                       
                      @relpath - zwraca ścieżkę względną                                   
                                 pliku.                       
                      @isdir   - zwraca wartość "TRUE" dla katalogu i                                   
                                 "FALSE" dla pliku.                       
                      @fsize   - zwraca rozmiar pliku w bajtach.                       
                      @fdate   - zwraca datę ostatniej modyfikacji                                   
                                 pliku.                       
                      @ftime   - zwraca godzinę ostatniej modyfikacji                                   
                                 pliku.

/D data               Zaznacza pliki z datą ostatniej modyfikacji taką
                      samą lub późniejszą (+) bądź taką samą lub
                      wcześniejszą (-) od określonej daty, korzystając
                      z formatu "yyyy-MM-dd"; zaznacza również pliki 
                      z datą ostatniej modyfikacji taką samą lub
                      późniejszą (+) od bieżącej daty +"dd" dni bądź
                      taką samą lub wcześniejszą (-) od bieżącej daty.
                      Liczba dni "dd" musi być zzakresu 0-32768.
                      Jeżeli nie określono żadnego znaku, domyślnie
                      zostanie użyty znak "+".

MG

Tagi: , , , ,