Bądź na bieżąco - RSS

Dovecot, Postfix, IMAP – Operation not permitted

19 lipca, 2014 | Brak Komentarzy | Kategoria: Linux, Porady

ThuderbirdDzisiaj krótki, wakacyjny wpis dotyczący błędu związanegoz konfiguracją obsługi IMAP za pomocą Dovecot. W tandemie ze standardowo skonfigurowanym Postfixem, gdy zdecydowaliśmy się przechowywać pocztę w formacie mbox w katalogu /var/mail/ przy próbie pobrania poczty za pomocą dowolnego programu pocztowego (np. Thunderbird) w pliku /var/log/mail.log mogą pojawić się następujace błędy:

 

dovecot: imap(...):
Error: chown(...) failed: Operation not permitted
Error: mkdir(...) failed: Operation not permitted
Error: fchown(...) failed: Operation not permitted
Error: file_dotlock_create(...) failed: Permission denied

Jest to związane z niewystarczającymi uprawnieniami w katalogu użytkownika. Zgodnie z dokumentacją powinniśmy zajrzeć na stronę z opisem roziwązania http://wiki2.dovecot.org/Errors/ChgrpNoPerm. Ponieważ dla mnie obydwa omawiane tam rozwiązania wyglądają niedobrze, proponuję zastosować w pliku /etc/dovecot/conf.d/10-mail.conf zastosować następującą łatkę, w miejsce linijki:

mail_location = mbox:~/mail:INBOX=/var/mail/%u

podstawić:

mail_location = mbox:~/mail/mailboxes:INBOX=/var/mail/%u:→
DIRNAME=mBoX-MeSsAgEs:INDEX=~/mail/index:CONTROL=~/mail/control

Sprawdziłem… pomaga. Tak jak obiecałem – krótko i na temat136.

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

Heartbleed, Shorewall i czarne listy

19 kwietnia, 2014 | Brak Komentarzy | Kategoria: Linux, Porady

SystemDzisiaj, krótki świąteczny wpis dla adminstratorów codzienie zmagających się ze skryptami skanującymi porty naszych serwerów. Rozgłos jaki zyskał Heartbleed, w rzeczy samej jedna z najpoważniejszych luk w bibliotece OpenSSL, zaowocował zwiększoną aktywnością tzw. script-kiddies, którzy natychmiast ruszyli do 'ataku’. W logach systemowych zaczęły pojawiać się w dużej ilości ostrzeżenia dotyczące błedów sesji TLS. Niezależnie o typu usługi tj. SMTPS, POP3S, HTTPS, każda może zostać zaatakowana. Jak zauważyłem większość tego typu starań ma swoje źródła w państwach powszechnie znanych z sieciowych parktyk siłowych, mam na myśli metodę brute-force. Znudzony nieustannym zalewaniem informacją o nieudanych połączeniach postanowiłem pójść na całość i dosłownie wyciąć ruch pochodzący z najbardziej aktywnych sieci IP. W jaki sposób? Z pomocą przychodzi jak zwykle niezawodny Shorewall, który znacznie upraszcza zarządzanie iptables. W tym przypadku w pliku blacklist podajemy adres sieci w notacji CIDR bez żadnych opcji, np. po prostu:

10.10.10.0/24

W ten sposób blokujemy cały ruch. Trzeba jednak pamiętać, żeby przypadkiem nie odciąć swoich użytkowników. Zatem ostrożnie!

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

Konfiguracja pakietu vacation dla konta z aliasami pocztowymi

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

WakacjeWłączanie autoodpowiedzi w czasie urlopu stało się obecnie praktyką powszechną. Większość największych systemów pocztowych oferuje taką funkcję. Co mają jednak zrobić administratorzy dedykowanych serwerów pocztowych, przygotowanych na potrzeby własne lub firmy? Jeśli korzystają z Linuksa, który jest bardzo wygodnym i elastycznym systemem operacyjnym dla serwera poczty, na pewno prędzej czy później trafią na pakiet vacation. Nie chcę się w tym momencie skupiać na jego konfiguracji, gdyż jest ona dosyć prosta, dobrze opisana oraz podparta szczegółowymi przykładami dostępnymi w sieci. Chciałbym natomiast omówić jeden z przypadków konfiguracji, z którym ostatnio się zetknąłem.

Zawyczaj użytkownicy serwera pocztowego korzystają z jednej nazwy konta pocztowego. Jednak czasami trzeba administrować w środowisku, nazwijmy to hmm… mocno eksperymentalnym, gdzie użytkownicy potrafią zażądać 2, 3 i więcej aliasów. Pakiet vacation standardowy obsłuży tylko jeden. Co zrobić aby można było ustawić automatyczną odpowiedź dla kilku aliasów przypisanych do jednego użykownika? W przypadku konfiguracji w wykorzystaniem pliku .forward trzeba skorzystać z opcji – a, która oznacza nie mniej, nie więcej jak odpowiadaj także na wiadomości dla aliasów konta pocztowego. Przykładowy wpis dla dwóch dodatkowych aliasów w pliku .forward będzie miał postać:

\nazwa_konta, "|/usr/bin/vacation -a alias1 alias2 nazwa_konta"

Rzecz jasna nie odkryłem tutaj Ameryki, wszystko jest opisane na stronach man, ale z drugiej strony kto czyta manuale…

MG

 

Tagi: , , , ,

Jak prawidłowo zainstalować RAID1 w Debianie z dyskami 2TB

2 listopada, 2013 | Brak Komentarzy | Kategoria: Linux, Porady

RAIDObecnie dyski twarde osiągają pojemności, o których jeszcze nie dawno można było pomarzyć. Obsługa dużych dysków w systemie Debian nie stanowi żadnego problemu. Jednak sytuacja może się nieco skomplikować jeżeli chcemy złożyć RAID1. Zdarza się, że podczas instalacji, napotykamy błąd instalacji GRUB. Dodatkowo, jeżeli uda się zainstalować system to okazuje się, że po awarii pierwszego dysku system nie chce wystartować automatycznie z drugiego.

Powyższy problem wynika z nieprawidłowej obsługi tablicy partycji typu GUID. Jednak nie tylko. Rzecz jasna, gdy instalujemy system od początku i musimy przygotować tablice partycji na nowym dysku, wówczas w programie instalacyjnym należy wybrać partycję typu GPT. Nie rozwiązuje to jednak problemu z instalacją GRUB.

Począwszy od Debiana Wheezy należy, na początku każdego dysku w RAID1, założyć partycję typu biosgrub. Jej rozmiar to 1MB. Potem możemy zdefiniować kolejne partycje wg uznania.  Po złożeniu macierzy RAID1, na zakończenie instalacji, zostaniemy poproszeni o wskazanie miejsca instalacji GRUB. Wybieramy opcje 'master boot record’.

Ostatnim, bardzo ważnym, krokiem jest wydanie polecenia:

grub-install /dev/sdb

po instalacji i uruchomieniu czystego systemu operacyjnego.

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

Jak ograniczyć liczbe równoczesnych połączeń z serwerem SSH

3 maja, 2013 | Brak Komentarzy | Kategoria: Linux, Porady, Windows

SSHObecnie sieci VPN są zagadnieniem powszechnie znanym, szeroko komentowanym i zalecanym we wdrożeniach biznesowych. Istnieje cała masa gotowych rozwiązań sprzętowych, na poziomie aplikacji itp. Praktycznie każdy administrator może sam, według uznania, wybrać wygodne narzędzie. Różnią się one algorytmami, wymaganiami oraz niestety ceną. Czy można zbudować skalowalny dostęp VPN do firmy, który nie będzie wymagał dużych środków finansowych? Jednym z szeroko ostatnio polecanych rozwiązań jest VPN z wykorzystaniem serwera SSH. Elementami tej techniki są m. in.: (a) serwer dostępowy, zrealizowany np. jako sewer Linux z demonem SSHD oraz (b) aplikacja kliencka, która potrafi zestawić szyfrowany tunel np. Bitwise Tunellier.

Jeden z problemów, związanych z opisywanym tunelem SSL polega na tym, że klient może kreować równocześnie wiele połączeń, korzystających w tym samym czasie, z tego samego konta dostępowego. Być może nie jest to rzecz dyskwalifikująca całość, jednak w codziennej praktyce administratorskiej może utrudniać życie. W końcu chcemy aby logi systemowe były jasne i przejrzyste – słowem czytelne. Najlepiej aby jedno połączenie, czyli wspomniany tunel SSL, było przypisane tylko i wyłączenie do jednego konta.

Przykładowe rozwiązanie dla systemu Linux, z serwerem dostępowym bazującym na dystrybucji Debian Squeeze, polega na odpowiedniej modyfikacji pliku ’/etc/security/limits.conf’. Zawiera on m. in. defincje dotycząca liczby równoczesnych sesji SSH dla jednego konta dostępowego. W opisywanym rozwiązaniu należy dodać następującą linie przed znacznikiem ’# End of file’:

@sshlimited     -       maxlogins       1

I to wszystko, jak zwykle w przypadku Linuxa, krótko i na temat 🙂

MG

Tagi: , , , , ,

Obsługa UPS Smart-UPS SC1000 w Debian Squeeze

3 listopada, 2012 | Brak Komentarzy | Kategoria: Linux, Porady

Dawno już minęły czasy, kiedy praktycznie każdy UPS firmy APC, obecnie APC Schneider, można było obsłużyć za pomocą linuksowego daemona apcupsd. Na stronie jego autorów można znaleźć ostrzeżenie przed kupowaniem modeli SmartUPS SMX/SMT 750, 1000, 1500, czy SmartUPS RT 3000XL, 5000XL. Niestety padłem ofiarą takiego zakupu i duże było moje zdziwienie, że nic nie działa jak powinno. Ponieważ miałem możliwość wymiany urządzenia, to zamówiłem nowy, inny model. Tym razem zażyczyłem sobie żeby był obsługiwany przez apcupsd. Po paru dniach dotarł UPS Smart-UPS SC1000. Zabrałem się szybko za instalacje i okazało się, że znowu jest problem. Serwer nie miał portu szeregowego, zaś UPS zamiast kabla USB został wyposażony w adapter Profilic USB-to-serial. Mając na pokładzie Debiana Squeeze zacząłem zmagać się z adapterem. Moduł obsługi został dołączony do standardowego jądra, jednak UPS nadal pozostawał ślepy i głuchy. Po kilku godzinach szukania rozwiązania, trafiłem na strony Ubuntu Forum, gdzie udało mi się znaleźć pozyteczne informacje i przygotować działające, choć może niezbyt eleganckie rozwiązanie.

Po pierwsze – modyfikujemy skrypt startowy ’/etc/init.d/apcupsd’, dodając między wierszem:

case "$1" in
  start)
    echo -n "Starting $DESC: "

a wierszem:

rm -f /etc/apcupsd/powerfail

następujący kod:

if [ ! -d /dev/usb-tty ]
then
mkdir -p /dev/usb-tty
fi

mknod /dev/usb-tty/ttyUSB0 c 188 0
mknod /dev/usb-tty/ttyUSB1 c 188 1
mknod /dev/usb-tty/ttyUSB2 c 188 2
mknod /dev/usb-tty/ttyUSB3 c 188 3
mknod /dev/usb-tty/ttyUSB4 c 188 4
mknod /dev/usb-tty/ttyUSB5 c 188 5
mknod /dev/usb-tty/ttyUSB6 c 188 6
mknod /dev/usb-tty/ttyUSB7 c 188 7
mknod /dev/usb-tty/ttyUSB8 c 188 8
mknod /dev/usb-tty/ttyUSB9 c 188 9
mknod /dev/usb-tty/ttyUSB10 c 188 10
mknod /dev/usb-tty/ttyUSB11 c 188 11
mknod /dev/usb-tty/ttyUSB12 c 188 12
mknod /dev/usb-tty/ttyUSB13 c 188 13
mknod /dev/usb-tty/ttyUSB14 c 188 14
mknod /dev/usb-tty/ttyUSB15 c 188 15

Po drugie – edytujemy plik ’/etc/apcupsd/apcupsd.conf’ i definiujemu następujące parametry:

UPSCABLE smart
UPSTYPE apcsmart
DEVICE /dev/usb-tty/ttyUSB0

Ostania linijkę powinniśmy zmodyfikować w zależności od portu, do którego podłączyliśmy UPS. Po restarcie daemona apcupsd:

/etc/init.d/apcupsd stop
/etc/init.d/apcupsd start

nasz UPS, po wpisaniu polecenia:

/etc/init.d/apcupsd status

powinien odezwać się dobrze znanym komunikatem.

MG

Tagi: , , ,

Jednorazowe korzystanie z Proxy podczas aktualizacji

2 czerwca, 2012 | Brak Komentarzy | Kategoria: Bez kategorii, Linux, Porady

Jednym z wielu zadań należących do administratora systemu Linux Debian jest wykonywanie aktualizacji. Funkcjonuje nawet anegdota, że użytkownika Debiana można rozpoznać po tym, iż każdy dzień rozpoczyna od komendy:

apt-get update

Tak czy inaczej czasami zdarza się, że aktualizacje ciągną się w nieskończoność a szybkość połączenia pozostawia wiele do życzenia. Nie są to niestety sporadyczne przypadki. Dodatkowo jeżeli mamy do czynienia z kilkoma serwerami w sieci, które powinniśmy zaktualizować sytuacja może być irytująca. Rozwiązaniem w tym przypadku jest serwer proxy. Co zrobić jednak, gdy chcemy z niego skorzystać tylko jednorazowo na czas aktualizacji? Rozwiązanie jest bardzo proste i wymaga jedynie dostępu do konsoli. Wydajemy polecenie:

http_proxy='http://adres_serwera_proxy:port'

co pozwoli nam na wykorzystanie proxy ad-hoc bez rekonfiguracji ustawień systemowych.

MG

 

Tagi: , ,