Kategoria: Bez kategorii Strona 11 z 23

Zestawienie VPN’a na serwerze

Założenie miałem bardzo proste.

Jest sobie serwer M który ma mieć tunele z serwerami A i B. Ruch przez tunel ma być skompresowany, a autoryzacja używa certyfikatów SSL.

Pierwszym krokiem było zainstalowanie openvpn’a na wszystkich maszynach, ale ponieważ instalacja szła z pakietów debiana, więc była po prostu nudna, choć samo środowisko w którym rzecz się działa dostarczyło powodów do zastanowienia się. W ramach rozrzucania usług po chrootach, wytworzyłem nowego chroota o dumnej nazwie vpn. Przy okazji grsecurity dał o sobie znać, ponieważ go nie wyłączyłem (jak wyłączyć grsecurity?) to proces zakładanie chroota się nie powiódł.

Po wyłączeniu wszystko poszło jak po maśle i nie było żadnych problemów z dalszą instalacją.

Następnym krokiem jest generacja kluczy. Najprostszym sposobem jest na przygotowanie środowiska jest skopiowanie z katalogu  (podaje cały czas dla ubuntu) :

/usr/share/doc/openvpn/examples/easy-rsa/2.0

w jakąś lokalizację w której łatwo będzie korzystać. Ja przeniosłem ten katalog w takie miejsce:

/etc/openvpn/easy-rsa/

pomijając już „2.0”. W środku znajdziemy narzędzia, które służą do generowania kluczy. Całość zaczynamy od edycji pliku vars, który służy do ustawiania domyślnych wartości dla zmiennych środowiskowych wykorzystywanych w procesie generowania certyfikatów. W moim przypadku uzupełniłem dane związane z wystawiającym oraz zwiększyłem długość klucza do 2048 bajtów, co dokumentacja kwituje krótkim:

Increase this to 2048 if you are paranoid.

Samo generowanie kluczy jest już potem trywialne i sprowadziło się do sekwencji komend:

  • . ./vars – ustawienie zmiennych uwaga na kropkę przed, ja się nadziałem – kilka razy zanim zajarzyłem
  • ./clean-all – przygotowanie katalogu dla kluczy
  • ./build-ca – wygenerowanie klucza CA
  • ./build-key-server <nazwa> – zbudowanie klucza serwera
  • ./build-dh – zbudowanie Diffie Hellman

Kolejną rzeczą potrzebną do zestawienia tunelu zgodnie z założeniami, jest wygenerowanie kluczy dla serwerów, co wykonujemy powtarzając do wyczerpania komendą:

./build-key client1
./build-key client2
...

Do wystartowania nadal konfiguracji serwera, czyli modyfikacja pliku /etc/openvpn/server.conf, który szczęśliwie jest świetnie opisany i na dodatek większości opcji nie dotykam, bo działa na domyślnych. Zmieniam rzeczy związane z konfiguracją:

  • local czyli IP przypisane do tunelu
  • port – żeby na standardowym nie wisiało
  • dev – explicite podaję nazwę device’a żeby się nie losowało, bo ustawianie reguł na firewall’u przy zmieniającej się nazwie interface’u jest możliwe, ale prościej przy zadeklarowanym
  • zmieniam ścieżki do certyfikatów
  • server – wybranie i ustawienie odpowiedniej podsieci dla vpn’a
  • push – zdefiniowanie IP’ków wpychanych klientowi w ramach routingu
  • odkomentowałem comp-lzo w celu zapewnienia kompresji danych w tunelu

Teoretycznie można już wystartować: /etc/init.d/openvpn restart

Start się nie powiódł z powodu błędu z dostępem do /lib/udev/devices/net/tun i nie była to niestety kwestia uprawnień, tylko jak się okazało opcja chroot_deny_mknod nie pozwoliła na dostęp z chroota do tego node’a. Koniec końców chroot został skasowany a openvpn wylądował w głównym systemie.

Kolejna już próba odpalenia servera vpn powiodła się, ale ruch po połączeniu to już nie bardzo. Główną regułą firewall’a jest DROP od której są później wyjątki. I tu przydało się zdefiniowanie nazwy dla interface’u tunelu, bo dzięki temu łatwo dodać regułę: iptables -A INPUT -i tun34 -j ACCEPT dzięki której wszystko co przychodzi z tunelu jest akceptowane.

Kolejne połączenie i wszystko śmiga, czego i Wam życzę.

smarty – fetch

Od lat korzystam ze smarty w małych projektach i pewnie go już z niego nie zrezygnuję, chyba że jakiś inny system szablonowania powali mnie na kolana.

Ale dziś „odkryłem” metodę fetch, a dokładniej to, że daje ona możliwość zassania plików spoza zdefiniowanego $template_dir, co wykorzystuję do pobierania statycznych treści leżących poza katalogiem szablonów.

Do tej pory po prostu czytałem te pliki z dysku. Teraz zaszła potrzeba uzupełniania o jedną zmienną, więc całość powinna przechodzić przez smarty.

$content = $smarty->fetch( 'file:../../content/katalog/index.html' );

Jak widać dyrektywa „file:” pozwala wykorzystać względne położenie od katalogu szablonów.

nowy cpan – brak listy

Nowy system, świeża instalacja i po zainstalowaniu cpan’a miałem problem z pobieraniem modułów. Rozwiązaniem jest wybranie z listy geograficznej., którą uzyskujemy po odpaleniu:

perl -MCPAN -e shell

za pomocą polecenie:

o conf init urllist

jak wyłączyć grsecurity

for a in /proc/sys/kernel/grsecurity/chroot_*; do echo 0 > $a; done

Czyli technicznie oznacza to wyłączenie wszystkich opcji (poprzez ustawienie „0”), który status wygląda dziś tak:

audit_chdir:1
audit_ipc:1
audit_mount:1
chroot_caps:1
chroot_deny_chmod:0
chroot_deny_chroot:1
chroot_deny_fchdir:1
chroot_deny_mknod:1
chroot_deny_mount:1
chroot_deny_pivot:1
chroot_deny_shmat:1
chroot_deny_sysctl:1
chroot_deny_unix:1
chroot_enforce_chdir:1
chroot_execlog:1
chroot_findtask:1
chroot_restrict_nice:1
disable_modules:0
dmesg:1
exec_logging:1
fifo_restrictions:1
forkfail_logging:1
grsec_lock:0
linking_restrictions:1
resource_logging:1
signal_logging:1
timechange_logging:1

włączanie

Ponowne włączenie jest bardzo proste, sprowadza się do wykonania polecenia:

sysctl -p

podkusiło mnie … jaunty

Podkusiło mnie zrobić apt-get dist-upgrade. Szlag by to trafił. Właściwie cały dzień w plecy.

KDE 4 całkiem ok, choć jak się okazało najwięcej kłopotów miałem z odpaleniem WIFI, ale w końcu się udało.

Kombinacja potrzebnego softu jest prosta (jak już działa).

  1. kwalletmanager
  2. network-manager
  3. plasma-widget-network-manager
  4. wpasupplicant

Najwięcej problemu sprawił mi program do przechowywania haseł (kwalletmanager) bo jak się okzało, bez jego włączenie nie można skorzystać z sieci bezprzewodowej zabezpieczonej za pomocą WPA-PSK i jest na to nawet ticket, ba jest to nawet błąd poprawiony, który wejdzie w 9.10

brak połączenia wifi na ubuntu

Miałem problem z wifi pod ubuntu. Nie łączyło się. Wykrywało sieć, zaczynało gadać i zdychało. depesz zasugerował, że brakuje pakietu wpasupplicant co było dobrym tropem, bo okazało się, że rzeczony pakiet jest, ale nie ma pakietu kwlan czyli tego samego, tylko dla KDE. Działa, a wpis dla pamięci.

Aktualizacja IP.Board 2.3.5 do 3.0.2

IP.Board jest najlepszym jaki do tej pory spotkałem oprogramowaniem do forum. Jest to oprogramowanie płatne, na dodatek w sposób mieszany. Po pierwsze płacimy za zakup licencji $150, a potem co pół roku (jeżeli chcemy mieć dostęp do aktualizacji) $25. Nie są to duże sumy jeżeli utrzymujemy forum nie jest hobbystyczne.

Nadszedł czas aktualizacji, wymuszony niejako przez exploita, który zainfekował stronę. Było trochę problemów z uzyskaniem plików instalacyjnych, bo nie była opłacona licencja (ta odnawialna). Ale po kilkudniowej przygodzie i wymianie kilkunastu maili ze wschodnim wybrzeżem, co jest zadaniem dość niewdzięcznym ze względu na 6 godzin różnicy (u nich jest wcześniej).

Jestem naprawdę pod wrażeniem tego jak zostało napisane narzędzie do aktualizacji. Sama aktualizacja przebiegła następująco:

  1. wyłączenie forum z informacją o planowanej aktualizacji
  2. wykonanie kopii plików
  3. wykonanie kopii bazy danych
  4. wgranie plików aktualizacyjnych
  5. uruchomienie

Po pobraniu plików wgrywamy całość do naszej instalacji i odpalamy admin/upgrade/index.php prawda że maksymalnie proste?

To taka teoria. Praktyka pokazała, że mysql znowu pokazał swoje złe strony. Procedura aktualizacji zakończyła się porażką, ponieważ polskie znaki diakrytyczne … znikły z bazy, wymienione na znaki zapytania. Niemiło. Okazało się że musiałem przestawić ustawienia mysql’a żeby osiągnąć pożądany efekt. Niestety przestawienie ustawień mysql’a spowodowało, że jeden z blogów przestał wyświetlać polskie znaki. Krótka analiza kosztów ujawniła, że łatwiej mi będzie doprowadzić ów blog do porządku, niż walczyć z forum.

Druga próba aktualizacji została zakończona całkowitym sukcesem.

Niestety wieczorne czytanie RSS’a spowodowało, że uśmiałem się setnie. Właśnie została opublikowana wersja 3.0.3, więc jutrzejszy ranek spędzę na kolejnej aktualizacji. Mam nadzieję, że tym razem będzie krótka i bezbolesna.

Dla pamięci ustawienia dodane do mysql’a (/etc/mysql/my.conf)

[mysqld]
character-set-server = utf8
character-set-client = utf8
character-sets-dir = /usr/share/mysql/charsets/
default-character-set = utf8
init_connect='SET collation_connection = utf8_general_ci'
init_connect='SET NAMES utf8'
collation-server = utf8_general_ci
[mysql]
default-character-set = utf8
[client]
default-character-set=utf8

zmiana IP w dnsie

Firma hostująca jeden z moich wordpressów zmieniła IP. Zmieniała zresztą wszystkie swoje IP bo dostali swoją pulę. Pisali o tym w nowościach, ale … nie zauważyłem. Myk polegał na tym, że serwisy które mają swoje DNS’y u nich nie przestały działać, bo sami poprawili wpisy. Ta jedna domena ma wpisy w DNSach zupełnie gdzie indziej.

No wiec po kolei. Zakładam że serwer DNS pracuje i ma się dobrze.

Zmiana numeru IP i pola serial

Wyszukujemy interesujący nas wpis w katalogu /etc/bind i zmieniamy numer IP. Ponieważ DNS musi się rozpropagować, a propagacja zależy od pola serial, to owo pole tez należy zmienić. Samo pole serial jest liczbą dziesiętną i każdy nowy serial musi być większy od poprzedniego. Dla własnej wygody warto stosować notację rok.miesiac.dzien.numer_zmiany gdzie oczywiście nie będzie kropek i tak pierwsza zmiana dzisiaj będzie miała postać: 2009081701.

Przeładowanie konfiguracji

Następnym krokiem jest przeładowanie konfiguracji rndc co wykonujemy poleceniem rndc reload

Sprawdzenie wpisów

Jak już wszystko wykonaliśmy, to należałoby sprawdzić nasze wpisy. W tym celu wpisujemy: host -t soa domena sprawdzenie dnsów podrzędnych wykonujemy tak: host -t soa domena name.server

RTFM – RT FAQ Manager

Jednym z narzędzi którego używam do obsługi klientów jest RT: Request Tracker który umożliwia zarządzanie zgłoszeniami klienta. System jest bardzo wygodny bo umożliwia klientowi wysyłanie zadań po prostu na podany adres email. System sam zadba o to, żeby dodać odpowiedni numer zgłoszenia oraz powiadomić osoby które które obserwują daną kolejkę.

RT FAQ Manager uzupełnia możliwości RT o system zarządzania wiedzą. Charakteryzuje się następującymi cechami zależnymi od RT:

  • artykuły – które odpowiadają zadaniom
  • kategorie – odpowiadają kolejkom
  • pola definiowalne – pola którym można nadać nazwę, zdefiniować rodzaj z kilku dostępnych (np. tekst, wartość numeryczna, wartość wybrana czy też wartość zgodna z podanym wyrażeniem regularnym), pola mogą być wymagane
  • każdy artykuł, tak samo jak zadanie, może być zależny od innych, może zależeć, być potomkiem lub rodzicem
  • artykuły posiadają niemodyfikowalną historię w której zapisywane są wszystkie zmiany

Instalacja

Instalacja jest bardzo prosta i składa się z kilku kroków. (zakładam że posiadamy zainstalowane RT w wersji co najmniej 3.x).

  1. edycja pliku makefile w celu wskazania ścieżki do RT 3
  2. upewnieni się narzędzia linii poleceń wykorzystywanej bazy danych (mysql lub postgresql) znajdują się na przeszukiwanej ścieżce
  3. make install
  4. restart serwera www

Błąd w wordpressie 2.8.3

W poprzedniej (już) wersji wordpress’a pojawiła się luka umożliwiająca na wygenerowanie nowego hasła pierwszemu użytkownikowi. Wystarczyło tylko linka spreparować:

Pisze o tym tylko dlatego, żeby polecić sposób w których zakładam użytkowników na swoich wordpressach. Pierwszy jest admin, bo z instalacji, natomiast pierwsze co robię to zakładam „swojego” admina. W takim układzie moje wordpressy były odporne na ten reset.

Luka nie jest szczególnie groźna, bo jeżeli mieliśmy wprowadzony dobry adres email dla pierwszego użytkownika, to po prostu nowe hasło dostaniemy mailem. Upierdliwe tylko.

Strona 11 z 23

Oparte na WordPress & Theme by Anders Norén