poniedziałek, 14 marca 2011

EKG

/away zmienia stan na ,,zajęty''
/back zmienia stan na ,,dostępny''
/invisible zmienia stan na ,,niewidoczny''
/private ustawia tryb ,,tylko dla znajomych''

/quit

ALT+1, 2 - zmiana okien
/chat Sylwia - rozpoczęcie czatu
/list Sylwia - opis


/set aspell on - włacza sprawdzanie pisowni w interfersie ncureses. przy skąpliowaniu ekg z opcją --enable-aspell

/set contacts_options - zmienia ustawienia listy kontaktów
polecam ustawienie opcji
order=01234 - pokazuje kontakty w wszystkich stanach
frame - odziela ramką listę od głównego okna
wrap - zawija opisy
descr - pokazuje opisy

zmien kodowanie w konsoli na iso8859-2 lu bo prostu wylacz w ekg wyswietlanie polskich znakow komenda:

/set display_pl_chars 0




add [nazwa] - dodaje użytkownika do naszego rostera, jednocześnie prosząc o autoryzację
auth - obsługa autoryzacji
away[opis/-] - zmienia stan na zajęty
back[opis/-] - zmienia stan na dostępny
chat - wysyła wiadomość w ramach rozmowy
connect - łączy się z serwerem
del[nazwa] - usuwa z naszego rostera
disconnect [opis/-] - rozłącza się od serwera
dnd[opis/-] - zmienia stan na nie przeszkadzać
ffc[opis/-] - zmienia stan na chętny do rozmowy
invisible[opis/-] - zmienia stan na zajęty
modify - zmienia wpisy w liście kontaktów
msg - wysyła pojedynczą wiadomość
passwd - zmienia hasło
reconnect - rozłącza i łączy się ponownie
ver - pobiera informację o sytemie operacyjnym i wersji klienta Jabbera danego jid
xa[opis/-] - zmienia stan na bardzo zajęty
xml - wysyła polecenie xml
last [opcje] |* - wyświetla lub czyści ostatnie wiadomości
list [alias|@grupa|opcje|metakontakt|sesja/alias] - zarządzanie listą kontaktów
metacontact [opcje] - zarządzanie metakontaktami
on [opcje] - zarządzanie zdarzeniami
play - odtwarza plik dźwiękowy
plugin [-|+][nazwa] - ładuje lub usuwa rozszerzenie ekg
query [wiadomość] - włącza rozmowę
queue [opcje] - zarządzanie wiadomościami do wysłania po połączeniu
quit [powód/-] - wychodzi z programu
reload [plik] - wczytuje plik konfiguracyjny użytkownika lub podany
save [plik] - zapisuje ustawienia programu
say [tekst] - wymawia tekst
session [opcje] - zarządzanie sesjami
set [-] [[+/-]wartość] - wyświetla lub zmienia ustawienia
status [opcje] - wyświetla aktualny stan
tabclear [opcje] - czyści listę nicków do dopełnienia
timer [opcje] - zarządzanie timerami
unignore |* - usuwa z listy ignorowanych osób
version - wyświetla wersję programu
window [numer_okna] - zarządzanie oknami

niedziela, 13 marca 2011

Wifi + Radius

Zabezpieczanie sieci WLAN z serwerem Radius
Freeradius: indywidualne uwierzytelnianie w sieci Wi-Fi

W firmowej sieci WLAN proste uwierzytelnianie z wykorzystaniem wspólnego hasła i mechanizmu WPA-PSK nie jest wystarczającym zabezpieczeniem. Znane wielu osobom hasło szybko przestaje być tajemnicą i trzeba je zmieniać najpóźniej wtedy, gdy komukolwiek z zewnątrz pozwolono choćby tymczasowo podłączyć się do sieci.

Na szczęście administrator zaoszczędzi sporo czasu i wysiłku, korzystając z mechanizmu przydzielania haseł przez serwer. Do takich właśnie zadań służy mechanizm WPA Enterprise, w którym stacja bazowa WLAN komunikuje się z klientami z wykorzystaniem standardu IEEE 802.1x i serwera Radius. Do dyspozycji mamy jego otwartoźródłową implementację o nazwie Freeradius. W artykule opisujemy uruchamianie oprogramowania w systemie Ubuntu 10.10 oraz konfigurację klientów w różnych środowiskach.

Alternatywną metodą zabezpieczania struktury WLAN jest usługa Internet Authentication Service (IAS), którą oferują systemy Windows Server, począwszy od wersji 2003 (w tym także Windows Home Server) – ale nimi nie będziemy się zajmować. Jeśli natomiast chcielibyśmy uruchomić Radiusa w innych odmianach Windows, w grę wchodzą niemal wyłącznie serwery komercyjne. Na liście okienkowych wariantów Radiusa widnieje wprawdzie Tekradius, lecz wymaga on zastosowania bazy MS SQL Server, a więc nie jest do końca darmowy.

Moduł konfiguracyjny routera
Niedrogie routery WLAN także mogą służyć za serwer Radius Powiększ W tej sytuacji, pomijając windowsową edycję Freeradiusa, nie dysponujemy innym darmowym i nadającym się do użytku serwerem. Niestety, w przypadku wersji dla Windows Freeradius zatrzymał się dawno temu na wydaniu 1.1.7 i w związku z tym nie będziemy go brać pod uwagę. Jeśli mimo to ktoś chciałby koniecznie zainstalować serwer Radius w systemie Windows XP lub Windows 7, najprostszym rozwiązaniem będzie zastosowanie maszyny wirtualnej z Linuksem.

Nawet jeśli w sieci nie działa żaden serwer, zastosowanie Radiusa nie musi stanowić problemu – niektóre routery lub stacje bazowe (punkty dostępowe) same zawierają proste implementacje Radiusa. Nawet niedrogie routery WLAN, wyposażane w alternatywny firmware (np. DD-WRT), mogą funkcjonować jako serwery.

Bezpieczne logowanie

Freeradius szybko wyrósł z prostych metod uwierzytelniania, w których nazwa użytkownika i hasło są przekazywane otwartym tekstem. Obecnie oprogramowanie posługuje się protokołem EAP (Extensible Authentication Protocol), pozwalającym stosować różne metody kryptograficznego zabezpieczania transmisji (EAP-TLS/TTLS, PEAP, LEAP), a także haseł jednorazowych oraz SIM-ów. Uwierzytelnianie odbywa się przy użyciu kombinacji nazwy użytkownika i hasła lub za pomocą certyfikatu.

Dane dostępowe są przechowywane na serwerze Radius w prostym pliku tekstowym lub w bazie danych (LDAP, SQL). W przypadku małych sieci – z maksymalnie kilkudziesięcioma użytkownikami, tak jak w naszym przykładzie – plik tekstowy w zupełności wystarcza.

Aby dane logowania nie były transmitowane otwartym tekstem między stacją bazową a serwerem Radius, poddawane są szyfrowaniu. Wymaga się przy tym, aby na kliencie zainstalowany był przynajmniej certyfikat główny (Root CA Certificate), na bazie którego utworzono certyfikat serwera Radius. Dzięki certyfikatowi głównemu klient sprawdza, czy uwierzytelnia na właściwym serwerze.

Radius
Autentykator (punkt dostępowy WLAN lub przełącznik sieciowy obsługujący standard 802.1x) przekazuje żądanie zalogowania do serwera uwierzytelniającego. Ten decyduje, czy wnioskodawca (suplikant) otrzyma prawo wejśćia do sieci Powiększ W charakterze pośredników (autentykatorów) między klientem (określanym również mianem suplikanta) a serwerem Radius działa jedna lub wiele stacji bazowych WLAN. Te ostatnie muszą obsługiwać metodę uwierzytelniania WPA2 Enterprise, czasami określaną także jako WPA2-1x lub WPA2/802.1x. Do wypróbowania naszego serwera Radius skorzystaliśmy z routera TP-Link WR1043ND, ale standard 802.1x jest obsługiwany również przez wiele innych urządzeń.

Stacje bazowe muszą zostać skonfigurowane do poziomu zabezpieczeń WPA2 Enterprise – podaje się przy tym adres IP serwera Radius i wprowadza wspólne hasło (shared secret), które zabezpiecza komunikację między serwerem a punktem dostępowym.

Konfiguracja Freeradiusa

W Ubuntu, począwszy od wersji 10.04, serwer Freeradius da się zainstalować za pomocą narzędzia do zarządzania pakietami. Pliki konfiguracyjne znajdują się w katalogu /etc/freeradius, a katalog z certyfikatami (/etc/freeradius/certs) jest na początku pusty. Należy tam skopiować pięć zbiorów z folderu /usr/share/doc/freeradius/examples/certs: ca.cnf, server.cnf, client.cnf, xpextensions i makefile. Dziennik (log) jest przechowywany w folderze /var/log/freeradius.

Na początku trzeba odpowiednio zmodyfikować pliki konfiguracyjne i utworzyć certyfikaty. Zaczynamy od zdefiniowania użytkowników (/etc/freeradius/users):

"rodzice" Cleartext-Password := "dostepstaly"

"dzieci" Cleartext-Password := "dostepsporadyczny",

Login-Time :="Wk0800-2000,Sa0800-2200,Su0800-2000"

"gosc" Cleartext-Password := "dostepokazjonalny", Login-Time := "Al0700-2300"

"Jan Kowalski" Auth-Type := Reject, Reply-Message = "nie zyje!"

Parametr Login-Time ogranicza możliwość logowania do określonych godzin

Nazwy użytkowników powinno się ująć w cudzysłów, tak aby problemów nie sprawiały ewentualne puste znaki. Należy ponadto unikać znaków diakrytycznych i specjalnych w loginach i hasłach, gdyż czasami programy klienckie różnie je interpretują i w rezultacie może nastąpić problem z połączeniem mimo pozornie poprawnego wprowadzenia danych. Freeradius odczytuje kropkę w nazwie użytkownika jako prefiks określający wybrany typ usługi – wartość "radtest.ppp" oznacza, że pożądane jest połączenie PPP – stosowania kropek lepiej więc się wystrzegać.

Parametr Login-Time uniemożliwia zalogowanie się do sieci poza podanymi godzinami. Jednak nie powoduje on automatycznego wylogowania – musi o to zadbać punkt dostępowy poprzez regularne uwierzytelnianie (np. w cyklu piętnastominutowym). Przedziały czasowe są definiowane za pomocą angielskojęzycznych skrótów nazw dni tygodnia (np. Tu dla wtorku; dodatkowo mamy skrót Al – wszystkie dni tygodnia i Wk – dni robocze) oraz terminu z dokładnością do jednej minuty (hhmm-hhmm).
Serwer Radius musi wiedzieć, z jakimi pośrednikami ma się komunikować i znać wspóldzielony klucz (shared secret). Informacje te należy wprowadzić do pliku clients.conf:

client 192.168.111.8/29 {

secret = radiustest123

shortname = AP-w-sieci-testowej

}

W przykładzie wyżej demon radiusd oczekuje na zapytania z podsieci 192.168.111.8 do .15. W sytuacji gdy obsługiwana jest tylko jedna stacja bazowa WLAN ze stałym adresem IP, ten ostatni może być wpisany bezpośrednio z dodatkowym sufiksem /32.

Generowanie certyfikatów

Do tworzenia certyfikatu głównego i wywodzącego się z niego certyfikatu serwera służą przykładowe pliki i skrypt Make. Dysponując prawami administratora, przechodzimy do katalogu /etc/freeradius/certs. Najpierw modyfikujemy plik konfiguracyjny ca.cnf: parametr default_days w sekcji [CA_default] ustawiamy na 1826 (dni), aby odnowienie i dystrybucja certyfikatu przypadła najwcześniej po pięciu latach. W sekcji [req] definiujemy hasła.

Aby łatwiej odnaleźć własny certyfikat główny w systemie operacyjnym klienta, zmieniamy także wpisy w sekcji [certificate_authority]. Te same poprawki wprowadzamy w pliku konfiguracyjnym server.cnf:

[CA_default]

default_days = 1826

[req]

input_password = radiustest123

output_password = radiustest123

[certificate_authority]

countryName = PL

stateOrProvinceName = Testowy-serwer-Radius

localityName = Wroclaw

organizationName = heise online Polska

emailAddress = redakcja@heise-online.pl

commonName = "Testowy serwer Radius"

Sekcje i parametry w pliku /etc/freeradius/certs służące do automatycznego tworzenia certyfikatów. Sześciowierszowy blok poniżej linii [certificate_authority] skopiujemy do pliku server.cnf pod znacznikiem [server]

Teraz tworzymy certyfikat główny i serwerowy oraz klucze serwerowe. Służy do tego komenda make all.

Aby serwer Radius w czasie startu odczytał klucz serwerowy, wpisujemy hasło zdefiniowane w zbiorze ca.cnf także do pliku /etc/freeradius/eap.conf jako wartość parametru private_key_password. Następnie kopiujemy certyfikat główny ca.der z katalogu /etc/freeradius/certs na pendrive'a USB, aby zainstalować go na klientach serwera Radius.

Podczas instalacji Freeradius jest aktywowany jako usługa, dzięki czemu po kolejnym starcie systemu uruchamia się automatycznie. Gdy chcemy wystartować od razu, należy wydać polecenie sudo /etc/init.d/freeradius start.

Starsze wersje i inne systemy

W należących do repozytoriów Ubuntu wydaniach Freeradiusa wcześniejszych niż 2.1.8 brakuje istotnego komponentu: nie da się zrealizować bezpiecznego uwierzytelniania za pomocą metod kryptograficznych, ponieważ pakiet został skompilowany bez obsługi OpenSSL. Pełny Freeradius może być jednak zbudowany i zainstalowany samodzielnie.

Na początku zakładamy podkatalog do budowania serwera (mkdir build; cd build). Następnie pobieramy pakiet z kodem źródłowym Freeradiusa; przyjmijmy, że jest nim stara wersja 2.1.8. Później wydajemy kilka poleceń i czekamy około kwadransa na końcowy rezultat:

sudo apt-get install fakeroot dpkg-dev libssl-dev quilt autotools-dev libtool \

libltdl3-dev libpam0g-dev libmysqlclient-dev libgdbm-dev libldap2-dev \

libsasl2-dev libiodbc2-dev libkrb5-dev libperl-dev libpcap-dev python-dev \

libsnmp-dev libpq-dev debhelper

tar zxf freeradius-server-2.1.8.tar.gz

cd freeradius-server-2.1.8

fakeroot dpkg-buildpackage -b -uc

cd ..

sudo dpkg -i libfreeradius2_2.1.8+git_i386.deb freeradius-common_2.1.8+git_all.deb \

freeradius_2.1.8+git_i386.deb freeradius-utils_2.1.8+git_i386.deb

Pierwsze polecenie instaluje pakiety konieczne do zbudowania aplikacji. Podczas kompilacji (z wykorzystaniem komendy fakeroot) wszystkie pliki binarne .deb trafiają do katalogu nadrzędnego. Ostatnia komenda sudo instaluje serwer Freeradius oraz narzędzia administracyjne (utils).

Po instalacji katalog z certyfikatami (/etc/freeradius/certs) jest pusty. Kopiujemy tam zawartość folderu ~/build/freeradius-server-2.1.8/raddb/certs. Następnie edytujemy pliki ca.cnf oraz server.cnf w katalogu /etc/freeradius/certs i tworzymy certyfikaty w sposób opisany wyżej.

Strony wiki projektu Freeradius wyjaśniają, jak zbudować pakiety w innych systemach operacyjnych (Red Hat, openSUSE, Mac OS X, Solaris). Zazwyczaj potrzebne są wówczas pliki freeradius-server oraz make, ułatwiające generowanie certyfikatów. Trzeba pamiętać, że Freeradius ma wtedy inny układ folderów: pliki konfiguracyjne są umieszczone w katalogu /etc/raddb, a dziennik – w /var/log/radius. Certyfikaty znajdziemy w folderze /etc/raddb/certs.

Konfiguracja klientów WLAN

Certyfikat w Windows XP
Importowanie certyfikatu w Windows XP Powiększ Logowanie w sieci WLAN zabezpieczonej przez serwer Radius przebiega w sposób nieco odmienny od tego, do jakiego większość użytkowników jest przyzwyczajona. Zamiast wspólnego hasła WPA stosuje się przechowywaną na serwerze kombinację nazwy użytkownika i hasła.

W Windows XP jeszcze przed pierwszym logowaniem importujemy certyfikat główny (np. z pendrive'a USB). Po podwójnym kliknięciu pliku ca.der naciskamy przycisk Zainstaluj certyfikat. Następnie do skutku klikamy przycisk Dalej. Pojawi się okienko z pytaniem, czy na pewno chcemy zainstalować certyfikat – odpowiadamy twierdząco, a Windows XP wybiera prawidłową lokalizację (Zaufane główne urzędy certyfikacji).

Teraz konfigurujemy parametry łącza. W menu Start wywołujemy opcję Połącz z | Połączenie z siecią bezprzewodową, wybieramy ustawienia zaawansowane, a po kliknięciu zakładki Sieci bezprzewodowe podajemy nazwę sieci radiowej i wybieramy odpowiednią metodę szyfrowania, najlepiej WPA2/AES.

W sekcji Uwierzytelnianie wybieramy Chroniony protokół EAP (PEAP), w jego ustawieniach wskazujemy certyfikat główny i wyłączamy opcję pytania użytkownika o autoryzowanie nowych serwerów. Następnie określamy metodę uwierzytelniania EAP-MSCHAPv2: wyłączamy automatyczne korzystanie z danych logowania do systemu Windows.

Kreator sieci w Windows XP
Kreator sieci w Windows XP Powiększ

Import certyfikatu w Windows 7
Aby Windows 7 zapisał certyfikat główny w sekcji Zaufanych głównych urzędów certyfikacji, trzeba mu trochę pomóc Powiększ Nieco inaczej sprawa wygląda w przypadku Windows 7. Tutaj musimy ręcznie wskazać Zaufane główne urzędy certyfikacji jako lokalizację dla naszego certyfikatu. Robimy to po rozwinięciu menu Start, wpisaniu w polu Wyszukaj programy i pliki komendy certmgr.msc i naciśnięciu klawisza [Enter].

Następnie konfigurujemy połączenie WLAN – należy wybrać typ zabezpieczeń WPA2-Enterprise. Później zmieniamy ustawienia zabezpieczeń: domyślnie ustawiona metoda Microsoft: Chroniony protokół EAP (PEAP) jest odpowiednia, ale musimy kliknąć przycisk Ustawienia. Teraz zaznaczamy zaimportowany certyfikat na liście zaufanych urzędów certyfikacji i wyłączamy monitowanie użytkownika o autoryzację nowych serwerów.

Urząd certyfikacji w Windows 7
Samodzielnie podana nazwa wspólna (commonName) ułatwia odnalezienie certyfikatu głównego w programie administracyjnym Windows 7 (certmgr.msc) Powiększ W przypadku metody uwierzytelniania poprzez zabezpieczone hasło (EAP-MSCHAPv2) wyłączamy automatyczne przekazywanie danych logowania do Windows. Po naciśnięciu przycisku OK wybieramy ustawienia zaawansowane i tryb Uwierzytelnianie użytkownika.

W Ubuntu konfigurowanie sieci WLAN zabezpieczonej serwerem Radius jest bardzo łatwe. Kopiujemy certyfikat główny ca.der z pendrive'a USB do katalogu domowego. Następnie wybieramy sieć bezprzewodową, klikając ikonę sieci w zasobniku systemowym, wskazujemy certyfikat CA, wprowadzamy nazwę użytkownika oraz hasło – i gotowe

Smartfony i poszukiwanie błędów

Konfigurator WLAN w Nokii N97
Konfigurowanie parametrów łącza dla aparatów Nokii (tutaj model N97) jest dość męczące Powiększ Niewielkim nakładem sił udało się nam także skonfigurować trzy smartfony do nawiązywania połączeń z siecią WLAN chronioną przez serwer Radius. Apple'owski iPhone bez problemu włączył się w strukturę Wi-Fi po włączeniu opcji automatycznego wyboru metody uwierzytelniania – trzeba było jedynie potwierdzić certyfikat pobrany z serwera. Także działający pod kontrolą systemu Android 2.1 telefon HTC Sense skomunikował się przy domyślnym ustawieniem PEAP/MSCHAPv2.

W przypadku Nokii E51 przy próbie nawiązania połączenia z siecią chronioną serwerem Radius moduł obsługujący komunikację bezprzewodową bez przerwy pytał o hasło WPA. Konieczne było przedzieranie się przez prawdziwy gąszcz opcji menu: Narzędzia | Ustawienia | Połączenie| Punkty dostępu | Opcje | Nowy punkt dostępu. Później podawaliśmy parametry Nazwa połączenia (Radius-test), Nośnik danych (WLAN), Nazwa sieci WLAN (Radius-test), Tryb zabezpieczeń WLAN (802.1x). W sekcji Ustawienia zabezpieczeń WLAN wybraliśmy Ustawienia EAP plug-in (EAP-LEAP) i wreszcie po wejściu w opcję EAP-LEAP wpisaliśmy nazwę użytkownika oraz hasło. Po dokonaniu takich operacji udało się nawiązać połączenie z siecią zabezpieczoną serwerem Radius.

Logi Freeradiusa
Plik logów serwera Freeradius daje wskazówki na temat nieudanych prób nawiązania połączenia Powiększ Wraz z Freeradiusem otrzymujemy narzędzie radsniff. Prezentuje ono pakiety wymieniane w eterze, jeśli podamy współdzielone hasło (shared secret): radsniff -s radiustest123. Program pozwala określić, czy komunikacja między suplikantem a serwerem Radius w ogóle się odbywa, a także która strona odrzuciła połączenie.

Aby sprawdzić, czy nieudana próba logowania jest wynikiem literówki w nazwie użytkownika, można zapisywać dane z prób nawiązywania połączeń do pliku dziennika. Wystarczy zastąpić linię auth = no (w sekcji log{} pliku konfiguracyjnego radiusd.conf) wierszem auth = yes. Następnie trzeba zrestartować serwer Radius.

Dodatkowa Lektura - IEEE-802-1X

http://www.heise-online.pl/networks/features/Zabezpieczanie-sieci-WLAN-i-LAN-wedlug-specyfikacji-IEEE-802-1X-1021011.html

Router TP, Dialog, Netia

Telekomunikacja Polska: Neostrada

TP-LINK Neostrada
Parametry konfiguracyjne łącza ADSL (Neostrada) Powiększ W przypadku Neostrady korzystamy z routera wyposażonego w modem ADSL zgodny ze specyfikacją Annex A, czyli transmitujący dane po łączach analogowych. Cztery wymienione wcześniej parametry powinny mieć następujące wartości:

* VPI: 0
* VCI: 35
* Protokół: PPPoA
* Enkapsulacja: VC-Mux (w niektórych regionach kraju: LLC)

Wystarczy pobieżnie przyjrzeć się zrzutowi ekranu po lewej stronie, aby zauważyć, że w panelu konfiguracyjnym routera (w tym przypadku modelu TP-LINK TD-W8901G) parametry łącza są zgrupowane. Przykładowo, protokół został wskazany wraz z metodą enkapsulacji (PPPoA VC-Mux) w sekcji PPPoE/PPPoA. O wyborze mechanizmu PPPoA zdecydowaliśmy "piętro wyżej" – w sekcji Encapsulation.
Dialog: DialNet

FritzBOX-DialNet
Parametry konfiguracyjne łącza DSL (DialNet Mega) Powiększ Dialog proponuje klientom dwa rodzaje usług: DialNet Mega bazuje na własnych łączach operatora, a DialNet Global jest przeznaczona dla klientów podłączonych do sieci Telekomunikacji Polskiej. Pierwszy wariant wymaga modemu xDSL Annex B, a drugi – Annex A. Odmienne są też parametry konfiguracyjne.
DialNet Mega

* VPI: 1
* VCI: 32
* Protokół: PPPoA
* Enkapsulacja: LLC

DialNet Global

* VPI: 0
* VCI: 35
* Protokół: PPPoA
* Enkapsulacja: VC-Mux (w niektórych regionach kraju: LLC)

Netia: Szybki Internet (Net24)

Netia, podobnie jak Dialog, świadczy usługi dostępowe Szybki Internet (dawniej: Net24) albo na liniach własnych, albo dzierżawionych od Telekomunikacji Polskiej. Także i tutaj stosuje się różne modemy (odpowiednio: Annex B i Annex A), a parametry konfiguracyjne są inne:
Szybki Internet (sieć Netii)

* VPI: 8
* VCI: 35
* Protokół: PPPoE
* Enkapsulacja: LLC

Szybki Internet (sieć TP SA)

* VPI: 0
* VCI: 35
* Protokół: PPPoA
* Enkapsulacja: VC-Mux (w niektórych regionach kraju: LLC)

TOR Debian

Tor pod Debianem
funus.net


Tor umożliwia osiągnięcie w pewnym stopniu anonimowości podczas korzystania z Internetu. Niniejszy artykuł zawiera instrukcje instalacji klienta Tora w systemie Debian etch 4.0 w celu anonimowego przeglądania stron WWW.
Spis treści
[ukryj]

* 1 Lektura
* 2 Przygotowanie
* 3 Kompilacja
* 4 Privoxy
o 4.1 Fałszowanie pola User-agent
* 5 Konto użytkownika
* 6 Konfiguracja przeglądarek
o 6.1 Firefox
o 6.2 Opera
o 6.3 Sprawdzenie

[edytuj] Lektura

Na początek warto co nieco przeczytać na temat sieci Tor. Podstawowe informacje dostępne są na stronach projektu. Jest tam też instrukcja instalacji w systemach Unix i Linux. Warto też zapoznać się z artykułem na anglojęzycznej Wikipedii, który przedstawia także pewne wady i zagrożenia niekonieczne poruszone na stronach Tora.
[edytuj] Przygotowanie

Z odpowiedniej strony należy pobrać kod źródłowy z oprogramowaniem Tor oraz plik z sygnaturą, który posłuży do weryfikacji paczki źródłowej. Alternatywnie można skorzystać z paczek binarnych, przygotowanych dla kilku platform, tu jednak zakładam, że użyto wersji źródłowej.

Żeby zweryfikować autentyczność pobranej paczki, należy postąpić zgodnie z instrukcjami. W skrócie, trzeba pobrać z keyservera klucz publiczny o identyfikatorze 0x28988BF5:

gpg --keyserver subkeys.pgp.net --recv-keys 0x28988BF5

i sprawdzić jego fingerprints:

gpg --fingerprint 0x28988BF5

które powinny być następujące:

B117 2656 DFF9 83C3 042B C699 EB5A 896A 2898 8BF5

Jeśli klucz się zgadza, można przystąpić do weryfikacji źródeł. W momencie pisania tego tekstu, najnowszą stabilną wersją była 0.1.12.17, więc sprawdzenie wyglądało tak (przy założeniu, że paczka ze źródłami Tora ─ tor-0.1.12.17.tar.gz ─ oraz plik z sygnaturą znajdowały się w bieżącym katalogu):

gpg --verify tor-0.1.2.17.tar.gz.asc

co powinno dać w wyniku mniej więcej następujący komunikat:

gpg: Signature made czw 30 sie 2007 23:03:58 CEST using DSA key ID 28988BF5
gpg: Good signature from "Roger Dingledine "
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: B117 2656 DFF9 83C3 042B C699 EB5A 896A 2898 8BF5

Identyfikator klucza (28988BF5) i potwierdzenie: Good signature from... pozwalają mniemać, że paczka jest poprawna.
[edytuj] Kompilacja

Po pomyślnej weryfikacji można rozpakować źródła:

tar xzvf tor-0.1.2.17.tar.gz
cd tor-0.1.2.17

skonfigurować, opcjonalnie podając katalog docelowy, np.:

./configure --prefix=/usr/local/tor

skompilować:

make

i zainstalować:

make install

[edytuj] Privoxy

Tor działa jako serwer proxy SOCKS. Można skonfigurować np. przeglądarki tak, by z niego korzystały. Nie należy jednak tego robić bezpośrednio ze względu na DNS leaks, czyli zapytania do serwerów DNS wykonywane z pominięciem Tora. Zalecanym rozwiązaniem jest użycie serwera pośredniczącego Privoxy. Jeśli jeszcze nie jest zainstalowany, można to zrobić wpisując:

aptitude install privoxy

Następnie należy przystosować Privoxy do współpracy z Torem. Można to zrobić globalnie, w pliku konfiguracyjnym /etc/privoxy/config. Jeśli jednak Privoxy będzie wykorzystywane w innych celach, to lepiej skopiować sobie gdzie indziej całą zawartość katalogu /etc/privoxy i zmian dokonywać na kopiach.

Oto zmiany, które należy wprowadzić w pliku /etc/privoxy/config, w stosunku do domyślnej konfiguracji, obowiązującej po instalacji pakietu privoxy.

* Opcja confdir. W przypadku, gdy pracujemy na kopii katalogu konfiguracyjnego, należy podać tu ścieżkę do tej kopii. Na przykład, gdy zawartość /etc/privoxy została skopiowana do /etc/privoxy-tor, należy wpisać:

confdir /etc/privoxy-tor

* Opcja listen-address domyślnie przyjmuje wartość 127.0.0.1:8118. Można zmienić port, żeby nie kolidował z "normalnym" privoxy, np. na 8888:

listen-address 127.0.0.1:8888

* Za pomocą opcji forward-socks4a konfigurujemy Privoxy tak, że będzie żądania przekazywać do nadrzędnego proxy działającego w oparciu o protokół SOCKS4a. W tym przypadku tym nadrzędnym serwerem proxy będzie Tor.

forward-socks4a / 127.0.0.1:9050 .

* Wyłączamy logowanie do plików przez wykomentowanie wierszy:

# logfile logfile
# jarfile jarfile

* Po wyłączeniu logowania, ewentualne informacje będą wypisywane na standardowe wyjście (stderr?). Włączona opcja debug 1 powoduje, że będą raportowane wszystkie żądania. Może to być przydatne podczas testowania, ale później należy też to wyłączyć:

# debug 1

Jeśli zdecydowaliśmy się na modyfikacje systemowych plików konfiguracyjnych Privoxy, należy je dla pewności zrestartować:

/etc/init.d/privoxy restart

gdyż najprawdopodobniej jest już uruchomione przez systemowe skrypty startowe. Natomiast w przypadku, gdy będziemy używać osobnej konfiguracji, należy uruchomić nowy proces privoxy, podając jako argument ścieżkę do pliku konfiguracyjnego:

/usr/sbin/privoxy --no-daemon /etc/privoxy-tor/config

Opcja --no-daemon spowoduje, że program będzie pracować w pierwszym planie, nie odłączając się od terminala. W ten sposób wygodniej będzie obserwować ewentualne błędy jak też łatwiej go zabić w razie potrzeby. Jeśli jednak chcemy, by privoxy pracowało w tle, należy tę opcję pominąć.

Żeby było wygodniej, można sobie zrobić skrypt uruchamiający specjalną wersję privoxy, i nazwać go np. privoxy-tor:

#! /bin/sh
/usr/sbin/privoxy --no-daemon /etc/privoxy-tor/config

[edytuj] Fałszowanie pola User-agent

Jednym z pól wysyłanych przez przeglądarki w nagłówku HTTP jest User-agent, opisujący przeglądarkę, system operacyjny, ich wersje, architekturę, preferowany język użytkownika. W większości przypadków zawartość tego pola nie ma większego znaczenia. Niektóre serwisy mogą się dostosowywać do preferowanego języka czy konkretnych przeglądarek, ale architektura i system operacyjny to już naprawdę nadmiar wypływających informacji, w szczególności gdy używamy czegoś mniej popularnego (np. Linux/x86-64). Za pomocą Privoxy można podmienić zawartość pola User-agent, dopisując w pliku user.action na przykład:

{+hide-user-agent{Opera/9.10 (Windows NT 5.1; U) [en]}}
/

co oznacza, że rzekomo używamy Opery 9.10 pod Windows XP i posługujemy się językiem angielskim.
[edytuj] Konto użytkownika

Do bezpieczenego korzystania z Tora oprogramowanie, w szczególności przeglądarki, wymagają odpowiedniej konfiguracji. W szczególności, przeglądarkom należy wskazać serwer proxy oraz wyłączyć możliwość pobierania tzw. aktywnej zawartości (javascript, aplety Javy itp.); więcej o konfiguracji w dalszej części tekstu.

Z tego powodu nie zawsze i nie wszystkie strony będą działać pod Torem, więc używanie go na stałe raczej nie wchodzi w grę. Z kolei zmienianie konfiguracji przeglądarek, gdy okaże się, że z jakiegoś serwisu trzeba korzystać bez pośrednictwa Tora, jest uciążliwe i podatne na błędy.

Dlatego wydaje się, że sensownym rozwiązaniem jest utworzenie nowego konta, przeznaczonego wyłącznie do uruchamiania przeglądarek skonfigurowanych do współpracy z Torem. Przykładowo, niech konto to nazywa się johndoe. Żeby je utworzyć, jako root należy wpisać:

adduser johndoe

Dla pewności można przyciąć uprawnienia na katalogu domowym:

chown go-rwx ~johndoe

Można tam umieścić pliki konfiguracyjne przystosowujące Privoxy do współpracy z Torem a także stamtąd uruchamiać Tora i Privoxy, a później przeglądarki. W ten sposób wszystkie elementy związane z użytkowaniem Tora będą pod ręką, w jednym miejscu.

Mankamentem tego rozwiązania jest konieczność logowania się na osobne konto w celu skorzystania z Tora. Pracując w środowisku graficznym X można sprawę uprościć: zamiast rozpoczynać nową sesję po prostu uruchomić terminal i w nim zalogować się na specjalne konto:

exec su - johndoe

Zakładając, że będziemy używać przeglądarek graficznych, pozostaje w tym przypadku do rozwiązania kwestia możliwości korzystania z X-serwera przez użytkownika johndoe. Po pierwsze, należy wskazać namiary na X-serwer poprzez ustawienie zmiennej środowiska DISPLAY. Na ogół będzie ona mieć wartość :0:

DISPLAY=:0
export DISPLAY

Po drugie, pojawia się kwestia autoryzacji dostępu do X-serwera. W przypadku systemów z jednym użytkownikiem najłatwiej ją rozwiązać pozwalając na nieautoryzowany dostęp lokalny (tylko procesy działające na lokalnej maszynie będą miały dostęp do serwera X):

xhost +local:

Polecenie to należy wydać we własnej sesji, nie jako użytkownik johndoe.

Na koniec warto spróbować uruchamić jakąś aplikację X-ową z konta nowego użytkownika, chociażby archaiczny xcalc. Jeśli okno się pokaże, znaczy że jest OK.
[edytuj] Konfiguracja przeglądarek

Po zalogowaniu się na nowe konto można przystąpić do konfiguracji przeglądarek internetowych. Należy przede wszystkim wskazać im serwery proxy ─ uprzednio skonfigurowane Privoxy oraz Tor jako serwer SOCKS5. Ponadto trzba wyłączyć: rozmaite pluginy (aplety Javy, flash) i javascript, zakazać przyjmowania bądź okresowo usuwać ciasteczka. Do kompletu warto też wyłączyć referrer logging, przechowywanie historii odwiedzanych stron oraz cache'owanie ich zawartości.
[edytuj] Firefox

Twórcy Tora zalecają używanie przeglądarki Firefox. Można w niej zainstalować rozszerzenie Torbutton, załatwiające kwestię wskazania serwerów proxy.
[edytuj] Opera

W Operze warto zastosować następujące zmiany w stosunku do domyślnej konfiguracji.

* Preferences/General/Startup: ustawić "Start with blank page", żeby przeglądarka nie startowała z poprzednio otwartymi stronami, a jako preferowany język wybrać angielski ─ bo najpopularniejszy.
* Preferences/Advanced/Content: wyłączyć javascript, Javę i pluginy.
* Preferences/Advanced/History: liczbę pamiętanych adresów ustawić na zero, wyłączyć cache dyskowy i zaznaczyć opcję "Empty on exit".
* Preferences/Advanced/Cookies: można spróbować wyłączyć ciasteczka ("Never accept cookies"), niektóre strony jednak nie będą bez nich działać. Sensownym rozwiązaniem jest więc wybranie opcji "Accept cookies" i zaznaczenie "Delete new cookies when exiting Opera". Potem należy jeszcze wcisnąć "Manage cookies..." i usunąć wszystkie już zgromadzone ciasteczka.
* Preferences/Advanced/Network/Proxy servers: skonfigurować serwery proxy zgodnie z instrukcją; Opera niestety nie obsługuje serwerów SOCKS, więc należy ograniczyć się do wpisania we wszystkich polach namiarów na nasze Privoxy (localhost i port, 8888 we wcześniejszych przykładach).
* Preferences/Advanced/Network: wyłączyć opcję "Enable referrer logging".

Podczas użytkowania Opery, zwłaszcza przed zakończeniem, warto też wywołać opcję "Tools/Delete private data", żeby pousuwać różne informacje normalnie zapamiętywane przez przeglądarkę.

---------------------------------------------------------------------------------------------

With the advent of the new illegal monitoring going on in the USA, and ISPs being actively forced to log and snoop on their own customer’s behaviors, I’ve been advocating the use of Privoxy + Tor to help anonymize some of your browsing behavior and characteristics.

Privoxy is a web proxy with advanced filtering capabilities for protecting privacy, modifying web page data, managing cookies, controlling access, and removing ads, banners, pop-ups and other obnoxious Internet junk.

Tor is a toolset for a wide range of organizations and people that want to improve their safety and security on the Internet. Using Tor can help you anonymize web browsing and publishing, instant messaging, IRC, SSH, and other applications that use the TCP protocol.

To configure them to work in concert, just install privoxy and tor using your standard package management tools. Open up Privoxy’s configuration file (normally /etc/privoxy/config) and add the following line:

forward-socks4a / localhost:9050 .

The ending dot is significant, don’t forget to include it. You can put this anywhere in the file you want, but the most-likely place is around line 1064 or so in the standard configuration. Restart privoxy using whatever scripts or service management tools your host operating system provides.

Now there’s an additional tweak you can do to use Squid to pool and cache the sites you visit locally. To do that, you’ll need to change a few things in Squid’s configuration (normally /etc/squid/squid.conf):

http_port 8888
cache_peer localhost parent 8118 7 no-query default
# Some basic ACLs to allow local traffic, forbid outside traffic
http_access allow purge localhost
http_access allow localhost
http_access deny all
# Make sure we're ALWAYS using Privoxy and Tor, and not bypassing the cache
never_direct allow all
# And let's remove some headers which can be used to divulge some of our personal info
header_access From deny all
header_access Server deny all
header_access User-Agent deny all
header_access WWW-Authenticate deny all
header_access Link deny all

Restart Squid and you should be all set. In your application (for example, Firefox), you can set up your proxy server to be:

localhost:8888

Browsing will be slightly slower, but very clean and anonymized. If you want, you can also run pre-fetch pages with Squid to speed up access to lateral pages and links on sites you visit.

Using Firefox, I have an extension called SwitchProxy installed which lets me change my proxy configuration with a simple click, from “None” to “Squid (localhost)” to “Squid + Privoxy + Tor”, and so on. I highly recommend it.

In my personal configuration, I have a router which is configured to send every outbound request on port 80, and every incoming reply, to a Squid server running on FreeBSD. No client configuration is necessary at all.

With Squid on the BSD machine, I can set up Privoxy and Tor there, and transparently cache, secure, and anonymize that traffic without burdening the clients at all, no matter how many there are, or what OS they happen to run.

My router’s iptables configuration for that looks like this:

iptables -t nat -A PREROUTING -i br0 -s ! 10.0.1.3 -p tcp --dport 80 -j DNAT --to 10.0.1.3:8888
iptables -t nat -A POSTROUTING -o br0 -s 10.0.1.0/24 -d 10.0.1.3 -j SNAT --to 10.0.1.1
iptables -A FORWARD -s 10.0.1.0/24 -d 10.0.1.3 -i br0 -o br0 -p tcp --dport 8888 -j ACCEPT

10.0.1.1 is my router, and 10.0.1.3 happens to be the FreeBSD machine running a very large Squid cache.

It works great, and clients behind my LAN never know the difference.


------------------------------------------------------------------------------------------------


Add this to your ~/.bashrc or similar config-file:
http_proxy=http://127.0.0.1:8118/
HTTP_PROXY=$http_proxy
export http_proxy HTTP_PROXY

Secure login: ssh:
In order to torify all your ssh communications (ssh, slogin, sftp, etc.), edit your /etc/ssh/ssh_config and/or ~/.ssh/config and add:
Host *
ProxyCommand socat STDIO SOCKS4A:127.0.0.1:%h:%p,socksport=9050

niedziela, 16 stycznia 2011

MD5SUM

Weryfikacja MD5 w linuxie:

* md5sum -c linux.iso.md5

Tworzenie MD5 w linuxie:

md5sum linux.iso > linux.iso.md5

wtorek, 14 grudnia 2010

Expect - automatyczne sekwencje

Expect

Ten artykuł należy dopracować zgodnie z zaleceniami edycyjnymi:
poprawić styl – powinien mieć encyklopedyczną formę, sformatować tekst (pomoc: podział na sekcje, tabele).
Po wyeliminowaniu niedoskonałości prosimy usunąć szablon {{Dopracować}} z kodu tego artykułu.
Expect jest to pakiet języka Tcl, który pozwala na interakcję z aplikacjami terminalowymi. Tworzy on własny terminal, który "udaje" użytkownika obsługującego program konsolowy. Choć teoretycznie jest możliwe sterowanie przez Expecta aplikacją w "curses", to najczęściej wykorzystuje się go do sterowania aplikacjami za pomocą prostego odczytywania i wypisywania ciągu znaków - jak np. aplikacje typu powłoka, telnet, czy FTP.
Spis treści [ukryj]
1 Funkcje pakietu
2 Podstawowe komendy
3 Praca z pakietem
4 Autor pakietu
Funkcje pakietu [edytuj]

Kwestia tego, czy Expect może być po prostu pakietem, zależy od tego, jak aktualnie zainstalowano i skonfigurowano Tcl-a na danej maszynie, dlatego też często istnieje on w najprostszej postaci - jako samodzielny interpreter Tcl-a razem z wbudowanym pakietem Expect, dostępny na Uniksie pod poleceniem "expect". Oczywiście istnieje również wersja Expect działająca pod kontrolą systemu Microsoft Windows (oferuje go - odpłatnie - ActiveState, ewentualnie można skorzystać z pakietu Cygwin), ale najpowszechniej Expect jest używany na systemach typu POSIX.
Podstawowe komendy [edytuj]

Podstawowymi komendami Expecta są spawn, send oraz expect. Żeby podać mały przykład, zaprezentuję w jaki sposób możemy zrobić skrypt, który sam zaloguje się na zdalny host (zdalny.host.pl) i odczyta zawartość katalogu domowego, po czym wypisze go na ekranie.
Praca z pakietem [edytuj]

Najpierw uruchamiamy podległą aplikację, czyli telnet:
spawn telnet zdalny.host.pl
Komenda ta zapisze w zmiennej spawn_id identyfikator utworzonego połączenia z podległą aplikacją; będą z niej potem korzystać komendy "send" i "expect". Teraz nasz skrypt musi zaczekać, aż zdalny host napisze "login:".

expect "login:"

Komenda ta powoduje cykliczne odczytywanie z kanału, do którego aplikacja usiłuje zapisywać, myśląc, że pisze na terminal. Komenda kończy się, gdy w odczytanym tekście znajdzie się szukany napis. No więc

send "sektor\r"

Tekst musi się kończyć znakiem \r. W przeciwnym razie mielibyśmy taki efekt, jakby ktoś wpisał nazwę użytkownika i zapomniał nacisnąć enter.
Teraz zaczekamy na zachętę do hasła. Ponieważ zdarza się, że owo "password" będzie się zaczynało wielką literą, a czasem małą, możemy ją pominąć i użyć po prostu:

expect "password:"

I oczywiście podamy mu hasło

send "wr353fg466s\r"

Powinniśmy zaczekać na prompt, ale odczytamy wszystko, co się da. Załóżmy też drobne opóźnienie, żeby nie odczytał za mało. Następnie spróbujemy odczytać sam prompt przez po prostu naciśnięcie enter:

sleep 2
expect *
send \r
expect ">"
Czas zatem na naszą akcję:
send "ls\r"
expect "ls"
expect ">" { set directory $expect_out(buffer) }

Po co to expect "ls"? Cóż, terminal sam wypisze komendę, którą wpisaliśmy (gdyby tego nie zrobił, byłby efekt podobny do prośby o hasło - wpisujemy a nic nie widać). Teraz trzeba jeszcze usunąć ostatnią linijkę, którą był prompt i wypisać to na ekranie:
set directory [join [lrange [split $directory \n] 1 end-1] \n]
puts $directory

Czemu od 1, nie od 0? Ponieważ było expect "ls", więc znak końca linii pozostał w buforze. Następna po tym komenda expect odczytała z $expect_out(buffer) wszystko co było w buforze, aż do ciągu, który podano w instrukcji expect.
Expect posiada jeszcze wiele ciekawych komend pozwalających na bardziej inteligentne interakcje, ale te pokazane tutaj są używane w przeważającej większości. Z expectem trzeba zawsze trochę poeksperymentować (niestety terminale potrafią sprawiać różne niespodzianki), w czym pomaga opcja -d w poleceniu expect - wtedy na standardowe wyjście diagnostyczne wypisywane są kolejne akcje podejmowane przez expecta.
Nie ma też uniwersalnych rad, jak pisać pod expectem - należy po prostu zaprogramować skrypt, żeby tak rozmawiał z aplikacją, jak robiłby to człowiek. Expect posiada nawet specjalne komendy nadające takie ustawienia, że komenda "send" wpisuje tekst z odpowiednimi nieregularnymi opóźnieniami, udając człowieka.

---------------------------------------------------------------------------

 #!/usr/bin/expect

#set timeout 1
set cmd {/ip firewall filter add action=accept src-address=10.0.0.1 chain=forward}


#Komentarz
spawn ssh admin@IP serwera
expect_after eof { exit 0 }


## interact with SSH
#expect "yes/no" { send "yes\r" }
expect "password:" { send "podaj haslo\r" }
sleep 2
expect "admin"
sleep 1
send "$cmd\r"
sleep 1
send "\x1d"
send "\r"

piątek, 5 listopada 2010

Rejestr Windows XP itp.

http://www.agavk.p9.pl/strony/xp_skorowidz_rejestrowy.php


zmiana fat32 na ntfs

convert d: /fs:ntfs