Bądź na bieżąco - RSS

sudppipe – tunel UDP dla Windows

17 lutego, 2018 | Brak Komentarzy | Kategoria: Porady, Windows

UDP sudppipeSystemy serwerowe rodziny Windows stają się praktycznie niezastąpione w środowisku, gdzie jesteśmy zmuszeni korzystać z firmowych systemów bazodanowych. Oferta tych ostatnich zakłada w zasadzie wykorzystanie tylko jedynego słusznego środowiska pracy. Czasami nastręcza to nietypowych trudności, w szczególności gdy chodzi o sterowanie przepływem komunikacji. Oprogramowanie zapory sieciowej wbudowane w serwer w zasadzie nie pozwala na łatwe przekierowywanie komunikacji TCP nie wspominając już o UDP. Jeśli trafimy na środowisko homogeniczne, to skonfigurowanie wyżej wymienionych przekierowań może być trudne. Podstawowym narzędziem jest tutaj komenda linii poleceń netsh opisana w innym artykule.

Jeśli posiadamy urządzenia takie jak np. drukarki sieciowe, to przydatne staje się zarządzanie nimi za pomocą protokołu SNMP. W tym momencie może się okazać, że powinniśmy przygotować przekierowanie portów UDP na serwerze Windows. Zakładam tutaj, że drukarki sieciowe są skonfigurowane w oddzielnym VLANie, ale również w oddzielnej podsieci IP. Jeśli zatem chcielibyśmy dostać się do urządzenia SNMP z puli klienckiej (posiadającej własny VLAN) musimy włączyć tzw. port forwarding, z tym że dla UDP.

Zmagając się z opisanym problemem trafiłem na bardzo przydatne narzędzie dostępne na stronie Luigiego Auriemmy. Wśród dostępnych aplikacji znajduje się mały program o nazwie sudppipe. Wywołany z linii poleceń pozwala skonfigurować tunel UDP na serwerze Windows. Całość wygląda w działaniu zachęcająco:

Usage: sudppipe.exe [options] <server*> <server_port> <local_port>

Sprawdziłem i działa bez zarzutu. Zachęcam do szczegółowego zapoznania się z jego możliwościami.

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: , ,

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: , , ,

Postfix – jak usunąć wybrany email z kolejki pocztowej

20 sierpnia, 2016 | Brak Komentarzy | Kategoria: Linux, Porady

Ruch pocztowy a obsługa kolejkiKażdy kto zajmował się administrowaniem serwerem poczty na pewno zetknął się z sytuacją, w której kolejka wiadomości na serwerze zaczyna powoli się wydłużać i po pewnym czasie może dojść do małej awarii usługi. Sytuacje takie zdarzają się najczęściej w przypadku zapętlonych emaili ale również gdy jesteśmy celem ataku DoS lub po prostu ktoś z naszych klientów padł ofiarą wirusa wykorzystującego czytnik poczty do rozsyłania spamu. Ponieważ w każdym przypadku są to sytuacje niepożądane a bywa, że niebezpieczne, zazwyczaj należy się tym szybko zająć. Jeżeli korzystamy z serwera Postfix to po wydaniu polecenia:

postqueue -p

powinniśmy zobaczyć co dzieje się z naszą kolejką. Jeśli rzeczywiście zobaczymy, że jest ona przepełniona bo np. na naszym serwerze czeka kilka tysięcy emaili do wysłania (tak, miewałem takie sytuacje) to zasadniczo mamy dwie możliwości. Pierwsza, nazwałbym ją drastyczną, to usunięcie całej kolejki emaili:

postsuper -d ALL

Trzeba pamiętać jednak, że wraz z niepotrzebnymi wiadomościami możemy usunąć te, na których może nam bardzo zależeć (lub klientowi rzecz jasna). Dlatego czasami warto się przyjrzeć kolejce po to aby upewnić się czy przypadkiem ruch emailowy nie wychodzi z jednego z naszych kont pocztowych a wtedy warto rozważyć usunięcie jedynie wybranych emaili. Można to zrobić za pomocą komendy:

postqueue -p | tail -n +2 | awk 'BEGIN { RS = "" } / →
konto@domena\.net/ { print $1 }' | tr -d '*!' | postsuper -d -

która spowoduje usnięcie wiadomości od (lub do) użytkownika konto@domena.net. Ta prosta linijka pozwala czasami ustrzec się bardzo poważnych konsekwencji.

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: , , ,

Jak zmienić UID i GID w Linuxie

19 września, 2015 | Brak Komentarzy | Kategoria: Linux, Porady

TerminalPrzenoszenie kont użytkowników między serwerami Debian jest czynnością prostą i bezpieczną. W zasadzie wystarczy wykonać 3 podstawowe czynności:

  1. Skopiować odpowiednie grupy z pliku /etc/group.
  2. Skopiować odpowiednich użytkowników z pliku /etc/passwd.
  3. Skopiować hasła powyższych użytkowników z pliku /etc/shadow.

Wymienione pliku są tekstowe zatem sprawdzi się metoda copy-paste. Oczywiście na koniec trzeba skopiować katalogi domowe użytkowników (np. używając tar z opcjami cvzf) a potem rozpakować na serwerze docelowym (tar xvzf). Jeśli ktoś woli można skorzystać z synchronizacji między serwerami za pomocą rsync.

Problem może pojawić się wtedy kiedy na docelowym serwerze istnieją już konta posiadające identyfikatory systemowe UID (user ID) i GID (group ID) i nie możemy wprost kopiować linii plików konfiguracyjnych aby uniknąć sytuacji, w której np. dwa konta posiadają ten sam UID. Wówczas przed kopiowaniem trzeba zmienić UID i GID na serwerze źródłowym. Czy jest to proste? Jak wszystko w Linuxie… Poniżej zamieszczam polecenia pozwalające przygotować się do całego procesu:

usermod -u <NowyUID> <Login> 
groupmod -g <NowyGID> <Grupa>
find / -user <StaryUID> -exec chown -h <NowyUID> {} \;
find / -group <StaryGID> -exec chgrp -h <NowyGID> {} \;
usermod -g <NowyGID> <Login>

MG

Tagi: , ,

Ninite Pro w trybie offline

18 lipca, 2015 | Brak Komentarzy | Kategoria: Porady, Windows

InstalacjaAdministratorzy średnich i dużych domen Windows często muszą radzić sobie z problemem hurtowej instalacji oprogramowania na wielu końcówkach w sieci. Rozwiązania wbudowane w serwer Windows, wykorzystujące mechanizmy GPO oraz instalatory MSI nie są szczególnie wygodne. Zewnętrzne narzędzia, z których mogę polecić PDQ Deploy, są bardzo rozbudowane i nieprzejrzyste dla początkującego. Jednak od kilku lat na popularności zyskuje bardzo prosty program do instalacji o nazwie Ninite. W wersji płatnej (20 USD miesięcznie za sieć do 100 końcówek) oferuje rozbudowaną linię poleceń i dykretną instalacje silent installation, która przebiega w tle. Można zatem, uruchamiając instalator w trybie zdalnym remote install bardzo szybko aktualizować komputery bez niepokojenia użytkowników.

Ważną funkcją, która nie jest widoczna na pierwszy rzut oka jest możliwość przygotowania pliku instalacji offline korzystając z opcji freeze. Możemy przygotować w ten sposób paczkę wykonywalną EXE, którą kopiujemy np. na pendrive. Tak uzbrojony serwisant, technik czy administrator jest w stanie zaktualizować każdy komputer bez dostępu do sieci Internet! Poniżej zamieszczam postać polecenia:

NinitePro.exe /freeze /select "7-Zip" Instalator7zipOffline.exe

W przykładzie użyłem opcji select, która pozwala wybrać programy dla paczki offline. Pełną listę dostępnych aplikacji można znaleźć tutaj.

MG

Tagi: , ,

rsync czyli kopie szybko i bezproblemowo

20 grudnia, 2014 | Brak Komentarzy | Kategoria: Linux, Porady

Kopia dyskursync to narzędzie dobrze znane i szeroko stosowane. Ten niezwykle wygodny w użyciu program pozwala na synchronizowanie zawartości między zasobami w niezawodny sposób. Dzięki kopiowaniu bloków informacji w miejsce całych jednostek np. plików, algorytm kopiowania jest bardzo szybki. Dodatkowo rsync sprawdza się na zawodnych łaczach, gdzie dostępne pasmo potrafi spaść nagle do kilku kb/s. Nie ukrywam, że jest to moja ulubiona metoda tworzenia kopii dlatego chciałem pokazać jak szybko przygotować rsync dla dwóch serwerów w środowisku Debian Linux. Jeden niech będzie serwerem produkcyjnym, drugi zaś serwerem kopii.

Zaczynamy od instalacji aplikacji na obu komputerach:

apt-get install rsync

Następnie tworzymy specjalne konto na serwerze kopii:

adduser zapasowe

Kolejnym krokiem jest wygenerowanie certyfikatu na serwerze produkcyjnym i skopiowanie go na serwer kopii:

ssh-keygen -t dsa
ssh-copy-id -i .ssh/id_dsa.pub zapasowe@serwer_kopii

Możecie wierzyc lub nie ale to już prawie wszystko! Teraz wystarczy wywołanie polecenia na serwerze produkcyjnym:

rsync -aogrvzP --delete -e ssh /wazne zapasowe@serwer_kopii:kopie

Spowoduje ono utworzenie dokładnej kopii zawartości katalogu wazne na serwerze kopii w katalogu kopie. Prosto i skutecznie. Aha, powyższe polecenie możemy umieścić w pliku crontab, automatyzując tym samym cały proces.

MG

Tagi: , , ,

Debian Wheezy – Vsftpd: Refusing to Run With Writable Root Inside Chroot ()

7 września, 2013 | Brak Komentarzy | Kategoria: Linux, Porady

ftp-iconWheezy, który jest najmłodszą wersją w dystrybucji Debian, zyskał już całkiem spore gorono użytkowników. Przyznam, że również korzystam z tej wersji i myśle, że jest całkiem udanym produktem. Niemniej spotkałem się ostatno z pewnym problemem, który dotyczył serwera FTP. Ponieważ od kilku lat korzystam z pakietu vsftpd, który wydaje się być dość stabilną i bezpieczną alternatywą dla pozostałych serwerów, postanowiłem zainstalować to oprogramowanie na jednym z moich nowych hostów.   Tym razem czekała mnie przykra niespodzianka. Po zainstalowaniu paczki i skopiowaniu gotowych i sprawdzonych plików konfiguracyjnych, przy próbie pierwszego połączenia vsftpd powitał mnie komunikatem:

vsftpd: refusing to run with writable root inside chroot() Login failed.

Bardzo zależało mi na rozwiązaniu problemu. Szybka lektura z pomocą Google zaowocowała gradem linków, setkami odpowiedzi na różnych forach. Niestety żadna nie dawała gotowej recepty. Jednak w międzyczasie zidentyfikowałem bład opisany w serwisach Debiana: 656900. Pozwoliło to na wyszukanie całkiem ciekawej łatki. Okazało się, że ekipa Cyconet na swoim blogu zdążyła opublikować poprawioną wersję vsftpd. Wystarczyło ją zainstalować (kod/sniplet zamieszczam poniżej) i po problemie… do następnego razu.

echo "deb http://ftp.cyconet.org/debian wheezy-updates \ 
main non-free contrib" >> \
/etc/apt/sources.list.d/wheezy-updates.cyconet.list; \
aptitude update; aptitude install -t wheezy-updates \ 
debian-cyconet-archive-keyring vsftpd && \
echo "allow_writeable_chroot=YES" >> /etc/vsftpd.conf \
&& /etc/init.d/vsftpd restart

MG

Tagi: , , ,