P. 1
Linux+_01_2005

Linux+_01_2005

|Views: 343|Likes:
Wydawca: Damian Ogorow

More info:

Published by: Damian Ogorow on Aug 19, 2010
Prawo autorskie:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

01/28/2013

pdf

text

original

Sections

Spis

treści

Mnie to nie dotyczy!?
Miesięcznik Linux+ (12 numerów w roku) jest wydawany przez Software-Wydawnictwo Sp. z o. o. Redaktor naczelny: Krzysztof Krawczyk, krzysiek@lpmagazine.org Redaktorzy: Piotr Truszkowski, Marek Bettman, Michał Niwicki Kierownik produkcji: Marta Kurpiewska, marta@software.com.pl Opracowanie CD/DVD: Krzysztof Krawczyk, Piotr Truszkowski Dział reklamy: Łukasz Łukaszewicz, reklama@lpmagazine.org, tel.: (22) 860 18 18 Prenumerata: Marzena Dmowska, pren@software.com.pl, tel.: (22) 860 17 67 Projekt graficzny okładki: Agnieszka Marchocka Projekt graficzny pisma: Marcin Ziółkowski, marcin@software.com.pl Skład: Marcin Ziółkowski, marcin@software.com.pl Adres korespondencyjny: Software-Wydawnictwo Sp. z o. o., 00-190 Warszawa, ul. Lewartowskiego 6 e-mail: redakcja@lpmagazine.org, tel. (22) 860 18 18 Redakcja dokłada wszelkich starań, aby publikowane w piśmie i na towarzyszących mu nośnikach informacje i programy były poprawne, jednakże nie bierze odpowiedzialności za efekty ich wykorzystania. Redakcja nie udziela pomocy technicznej dotyczącej zamieszczanego oprogramowania. Płyty uszkodzone podczas wysyłki wymienia dział prenumeraty. Wszystkie znaki firmowe zawarte w piśmie są własnością odpowiednich firm i zostały użyte wyłącznie w celach informacyjnych. Druk: Stella Maris Redakcja używa systemu automatycznego składu Płyty dołączone do magazynu przetestowano programem AntiVirenKit firmy G DATA Software Sp. z o.o. Redakcja zabezpiecza swoje dane korzystając ze sprzętu firmy Tandberg Data udostępnionego przez Veracomp SA. Sprzedaż aktualnych lub archiwalnych numerów pisma po innej cenie niż wydrukowana na okładce – bez zgody wydawcy – jest działaniem na jego szkodę i skutkuje odpowiedzialnością sądową.

ak mógłby stwierdzić przypadkowy internauta, gdybym zapytał go, czy boi się włamania do swojego komputera. Zbyt pewny siebie? Zdecydowanie. Bardzo prosto włamać się do kogoś, kto jest na stałe podłączony do Sieci i nie dba o bezpieczeństwo swojego systemu. To tak, jakby nie zamykał drzwi do własnego mieszkania czy samochodu. Ilość błędów związanych z bezpieczeństwem, które są wykrywane każdego miesiąca, jest zatrważająca. Wystarczy zapoznać się bliżej z jednym z nich, poszukać eksploita lub napisać go samodzielnie, a następnie znaleźć potencjalną ofiarę. Zdziwilibyście się, jak bardzo administratorzy serwerów internetowych zaniedbują swoje obowiązki – nie uaktualniają oprogramowania, nie przeglądają logów systemowych i nie analizują własnych systemów. Wiele z przestępstw internetowych nie jest upubliczniane (czytaj: zgłaszane

T

policji) ze względu na reputację poszkodowanego. W takim świecie żyjemy. Czy możemy coś poradzić na to? Oczywiście, dlatego ten numer Linux+ jest skoncentrowany na zagadnieniach bezpieczeństwa. Piotrek Machej w swoich artykułach stara się udzielić kilku dobrych rad. Zachęcam do zastosowania się do nich. Raz wprowadzone w życie mają szansę stać się zwyczajem. Na płytach DVD zamieściliśmy dwie najpopularniejsze europejskie dystrybucje Linuksa: Auroksa 10.1 (mocno poprawiony względem poprzedniego wydania: gorąco polecam, gdyż sam używam w pracy) oraz Mandrakelinuksa 10.1 (używam w domu). Przy okazji pragnę zawiadomić, że poszukujemy autorów artykułów, więc zainteresowane osoby proszę o zgłoszenie się do mnie pod adresem krzysiek@lpmagazine.org. Zachęcam do lektury tego numeru.

Krzysztof Krawczyk Redaktor Naczelny Linux+

W bieżącym numerze
mandrakelinux

:

8

Opis zawartości płyt CD/DVD
Piotr Truszkowski, Michał Niwicki

Aktualności:
16 18 20 22 Newsy
Witold Kieraś Tomasz Torcz
debian newsy

Jądro Linux Debian
Bartosz Feński, Tomasz Napierała

Mandrakelinux
Daniel Koć Karol Kozimor Witold Kieraś

23 Aurox

24 Gentoo

4

styczeń 2005

Spis treści

Temat miesiąca: Bezpieczeństwo
Bezpieczeństwo Oprogramowanie Dla początkujących

26

Bezpieczne łączenie się z Internetem

40

Dvd::rip – ripper płyt DVD

52

Nessus – skaner bezpieczeństwa
Piotr Machej

Piotr Machej Internet nie jest miejscem bezpiecznym. Aby móc spać spokojnie, należy zastosować się do kilku podstawowych zasad. W artykule przedstawiamy najważniejsze zagadnienia, na które należy zwrócić uwagę przy podłączaniu komputera z Linuksem do Sieci.

Witold Kieraś Często potrzebujemy przekonwertować filmy z płyt DVD do formatów dających się odtworzyć przez osoby nie posiadające odpowiedniego napędu. Pokażemy, jak tego dokonać przy użyciu programu Dvd::rip.

42

32

Odzyskiwanie danych – sposoby i przegląd narzędzi

KGpg – menedżer kluczy szyfrujących
Podłączając nasz komputer do Internetu lub sieci lokalnej, musimy odpowiednio zadbać o zabezpieczenia na wypadek włamania. Nessus jest skanerem, który pozwoli wykryć w naszym systemie te miejsca, które są podatne na atak z sieci.

Michał Niwicki Na pewno każdy z nas stanął lub stanie przed problemem odzyskiwania utraconych danych – przez nieuwagę, awarię bądź atak. W takiej sytuacji nieocenione mogą stać się takie programy, jak: dd_rescue, dd_rhelp, mondorescue, unrm oraz gpart.

Witold Kieraś Projekt Gnu Privacy Guard (GPG) powstał, aby udostępnić silną i nowoczesną kryptografię zwykłemu użytkownikowi komputera domowego. Prawdopodobnie najlepszą nakładką graficzną na tę aplikację jest KGpg, który omówimy w artykule.

44

Gubed – debugger skryptów w PHP

Wywiad

38

Wywiad z Przemysławem Tołpą, Sales Managerem w firmie Adaptec
Krzysztof Krawczyk

Piotr Machej Pracując nad większymi projektami w PHP na pewno przyda się nam dobry debugger tego języka. Gubed pozwala prześledzić działanie skryptu linijka po linijce, dzięki czemu łatwo znajdziemy błąd w kodzie.

58

Sztuczki i kruczki

Grzegorz Niewęgłowski Podczas pracy z Linuksem mogą przydać się różnego rodzaju sztuczki i kruczki. Ich znajomość również świadczy o tym, czy użytkownik jest początkujący, czy zaawansowany.

46

Cssed – edytor arkuszy stylów CSS

Sprzęt

Piotr Machej CSS, czyli kaskadowe arkusze stylów, stały się już niemal standardem przy tworzeniu stron WWW. Cssed pomoże nam stworzyć odpowiednie definicje nawet do bardzo rozbudowanych projektów.

60

Programowy RAID oraz LVM

48

Vuurmuur – konfigurator zapór sieciowych

Piotr Wolny Linux wspiera dwa zaawansowane mechanizmy gromadzenia danych: Software RAID oraz Logical Volume Manager. Przy ich pomocy możemy zwiększyć wydajność pamięci masowej, a także poprawić bezpieczeństwo przechowywanych informacji.

Piotr Machej Konfiguracja zapory sieciowej (firewall) może nastręczyć nie lada problemów. Dużym ułatwieniem w takim przypadku może być Vuurmuur – program wspomagający tworzenie regułek iptables oraz ipchains.

Dla programistów

70

Pyro i OpenSSL – bezpieczny komunikator internetowy

50
Tym razem postanowiliśmy porozmawiać z przedstawicielem firmy Adaptec, dobrze znanej z produkcji kontrolerów pamięci masowych (SCSI, SATA, RAID) oraz kart sieciowych (NAC). W naszej rozmowie skupiliśmy się na wsparciu wymienionych produktów w systemach linuksowych.

Simutrans – gra ekonomiczna

Marek Bettman Jeśli znudził nas już Medal of Honor i Quake, to może spróbujmy pokierować dużą firmą transportową. Simutrans to świetna gra ekonomiczna, wzorowana na nieśmiertelnym Transport Tycoon Deluxe.

Marek Sawerwain Gdy planujemy przesyłać istotne informacje przez Internet, to wprowadzenie szyfrowania danych w naszych aplikacjach rozproszonych jest bardzo ważnym zagadnieniem. W artykule pokazujemy, jak w prosty sposób stworzyć własny komunikator w stylu Gadu-Gadu, obsługujący szyfrowanie.

Testy

78

YOPY YP3700
Michał Niwicki
www.lpmagazine.org

5

opis CD/DVD aktualności

CD A / DVD B

Recovery Is Possible (RIP)
Mozilla Firefox 1.0 Najnowsza wersja popularnej przeglądarki internetowej. Umożliwia blokadę wyskakujących okienek (ang. popups), panelowe przeglądanie stron oraz automatyczną instalację niezbędnych wtyczek (ang. plugins). Posiada interfejs w języku polskim. http://www.firefox.pl/ Simutrans Gra strategiczno-ekonomiczna polegająca na rozbudowie infrastruktury drogowej, kolejowej i morskiej. Zadaniem gracza jest budowanie połączeń między fabrykami i miastami w celu zapewnienia jak najlepszego transportu towarów i ludzi. http://www.simutrans.de/ Nessus 2.2.0 Program jest zaawansowanym skanerem bezpieczeństwa. To kompleksowe narzędzie służy do wykrywania ewentualnych luki w systemie bezpieczeństwa sieci komputerowych. Wykorzystuje kilka tysięcy znanych reguł ataków najczęściej wykorzystywanych do przejęcia kontroli nad obcym systemem. http://www.nessus.org/ Nmap 3.75 Profesjonalny skaner sieciowy. Umożliwia kontrolowanie i badanie wybranych urządzeń sieciowych poprzez protokół IP. Potrafi rozpoznać prawie 1500 systemów operacyjnych i ponad 2000 tysiące portów. http://www.nmap.org/ OpenSSH 3.9 Darmowy program realizujący szyfrowane połączenia między dwoma komputerami. Zapewnia bezpieczeństwo przesyłania danych, autoryzację połączeń oraz autentykację. http://www.openssh.org/ John the Ripper 1.6 Narzędzie służące do wykrywania słabych haseł. Potrafi łamać hasła dostarczone w wielu formatach (DES, MD5, Blowfish, NT LM). Snort 2.2.0 Jest to sieciowy system wykrywania włamań. Dostarcza wszelkich niezbędnych informacji o podejrzanych działaniach w sieci. Umożliwia łatwiejszą analizę danych niż w przypadku programu Tcpdump. http://www.snort.org/ TuxSaver 1.0 Atrakcyjny wygaszacz ekranu 3D. Przedstawia sceny z życia pingwina na bezludnej wyspie. Umożliwia również tworzenie własnych scenariuszy. Morphix pod QEMU

T

radycyjne dystrybucje Linuksa kojarzą się nam z przyjaznym środowiskiem graficznym, szeregiem użytecznych programów do pracy i rozrywki oraz mniej lub bardziej skomplikowaną procedurą instalacyjną. Jakie szanse ma zatem system, który komunikuje się z użytkownikiem jedynie za pomocą zwykłego terminala i w którym nie ma użytecznych aplikacji biurowych? Taki właśnie jest RIP – dystrybucja wyposażona w liczne aplikacje służące do odzyskiwania danych

i w efekcie stanowiąca profesjonalne narzędzie do ratowania systemu. Szanse ma bardzo duże, gdyż za pomocą RIP-a bez problemów naprawimy uszkodzone partycje systemowe, odzyskamy utracone dane, czy naprawimy pliki konfiguracyjne już zainstalowanej, aczkolwiek z różnych powodów niedziałającej dystrybucji Linuksa. Ta dystrybucja posiada wsparcie dla różnych systemów plików, m.in. ext2, ext3, iso9660, ntfs, umsdos, reiserfs oraz vfat.

QEMU

Q

EMU to darmowa wersja prostego i szybkiego emulatora procesora. Potrafi pracować w dwóch trybach: pełnej emulacji systemu (full system emulation) oraz w trybie użytkownika (user mode emulation). Pełna emulacja pozwala na uruchomienie różnych systemów operacyjnych bez konieczności restartowania komputera – wystarczy, że na wejściu programu podamy jako parametr nazwę pliku zawierającego obraz systemu, który chcemy uruchomić, oraz wskażemy, dla jakiego urządzenia był ten obraz przeznaczony (dyskietka, cdrom, dysk twardy). Tryb użytkownika jest przeznaczony do uruchamiania aplikacji przeznaczonych dla różnych procesorów. Obecna

wersja programu pozwala emulować procesory: i386, ARM, SPARC i PowerPC, ale twórcy QEMU zastrzegają, że prace związane z ich emulacją są jeszcze w fazie testów. Godnym uwagi jest fakt, że QEMU potrafi emulować różnoraki sprzęt. Dzięki temu użytkownik nie tylko może uruchomić system operacyjny wewnątrz innego systemu, ale także wskazać urządzenia i ich parametry, które mają być rozpoznawane przez ten system (np. karty sieciowe, karty dźwiękowe itp). Na płycie CD znajdziecie obrazy dwóch systemów, które można uruchomić za pomocą QEMU: FreeDOS oraz Mandrakelinux 10.0. http://www.qemu.org/

8

styczeń 2005

opis CD/DVD aktualności

CD B / DVD B

Mozilla Firefox 1.0 Najpopularniejsza na świecie przeglądarka internetowa oparta o silnik renderujący Gecko. http://www.mozilla.org/products/ firefox/central.html VLC 0.8.1 Konkurencyjny do MPlayer-a i Xine odtwarzacz filmów, wraz ze wszystkimi niezbędnymi kodekami. http://www.videolan.org/vlc Python 2.4c1 Jeden z najpopularniejszych języków skryptowych na świecie. http://www.python.org Linux 2.6.9 Jądro systemowe w najnowszej wersji. Warto dokonać aktualizacji, chociażby z uwagi na mechanizm kexec. http://www.kernel.org Ethereal 0.10.7 Popularny sniffer, czyli program przechwytujący dane krążące w zamkniętych sieciach LAN. http://www.ethereal.com Firewall Builder 2.0.3 Najnowsza wersja programu, którego graficzny interfejs i wygoda użycia pozwolą nam zaprojektować firewalla marzeń. http://www.fwbuilder.org PPRacer 0.2 Pingwin w nietypowym wyścigu z czasem. http://www.planetpenguin.de/ bereich-20.html Nessus 2.2.0 Profesjonalny program do robienia audytów bezpieczeństwa, zarówno w małych, jak i dużych sieciach LAN. http://www.nessus.org Freeciv Darmowa wersja wielkiego hitu lat 90. Budujemy własną cywilizację. http://www.freeciv.org Snort 2.2.0 i 2.3.0RC1 Popularny program przyjazny dla administratorów sieci, mniej przyjazny dla włamywaczy. Innymi słowy – wykrywacz wszelkiej maści intruzów. http://www.snort.org ATI 3.14.6 i NVIDIA 1.0-6629 Sterowniki do popularnych kart graficznych. http://www.ati.com http://www.nvidia.com

Trustix Secure Linux 2.2

T

rustix to bezpieczna dystrybucja Linuksa, zoptymalizowana pod kątem pracy na serwerach. Zawiera starannie dobrane oprogramowanie, umożliwiające uruchomienie serwera WWW, serwera poczty, bazy danych i wielu innych. Na rynku dostępnych jest wiele dystrybucji, o których producenci mówią: bezpieczne. Czym wyróżnia się Trustix? Zasadniczo, dwoma elementami: wielkością i sposobem aktualizacji. W przypadku systemów serwerowych chyba wszyscy są zgodni – rozmiar jest istotny. Im dystrybucja po instalacji jest mniejsza, tym lepiej. Takie dbanie o rozmiar ma swoje uzasadnienie – mniejsza ilość oprogramowania narażonego na błędy, mniej czasochłonna aktualizacja i większy porządek w systemie, a tym samym prostsza administracja. Trustix ma się czym pochwalić. Po domyślnej instalacji, nie zawierającej różnego rodzaju serwerów, zajmuje niewiele ponad 100 MB i zawiera tylko i wyłącznie aplikacje niezbędne do działania systemu. Dzięki starannemu dobraniu wszelkiego rodzaju zależności pomiędzy pakietami, nie będziemy mieli sytuacji, gdy instalując którąś z aplikacji, zostanie zainstalowana również ogromna ilość innych, z których prawdopodobnie nigdy nie będziemy korzystać. Drugim ciekawym elementem jest narzędzie do aktualizacji systemu o nazwie Swup ( The Secure SoftWare Updater). Dzięki temu oprogramowaniu przeprowadzimy bezpieczną aktualizację systemu (obsługa protokołów http, https, ftp i file, również z autoryzacją, integracja z GnuPG), zainstalujemy dodatkowe oprogramowanie bądź usuniemy te, z którego już nie korzystamy. Przejdźmy do tego, co uwielbiają zarówno administratorzy sieci, jak i zwykli użytkownicy Linuksa – omówienia oprogramowania zawartego w dystrybucji. Na Trustiksa składają się m.in: – – – – – – – – jądro 2.4.27 z licznymi dodatkami, zwiększającymi jego bezpieczeństwo, Apache 2.0.52, IPTables 1.2.11, MySQL 4.1.7, OpenSSH 3.9p1, OpenSSL 0.9.7e, PHP 5.0.2, Postfix 2.1.5,

Ekran powitalny instalatora Trustiksa

– –

PostgreSQL 8.0.0beta4, Samba 3.0.7.

Ponieważ Trustix jest dystrybucją typowo serwerową, nie znajdziemy w niej środowiska X Window. Zaskoczeni będą również Ci, którzy są przyzwyczajeni do najpopularniejszego linuksowego menedżera plików, czyli programu Midnight Commander – po prostu brak go. Jednak wszyscy Ci, którzy największy nacisk kładą na bezpieczeństwo i zastanawiają się nad dystrybucją Linuksa przeznaczoną na serwer produkcyjny, będą zadowoleni. W tym miejscu dochodzimy do kolejnej ważnej rzeczy – Trustix nie jest systemem dla początkujących administratorów. Pomimo łatwej do przeprowadzenia instalacji (znana z Red Hata/Fedory i Auroksa Anaconda działająca w trybie tekstowym), sama administracja systemem wymaga pewnej znajomości Linuksa. Mam tutaj na myśli znajomość chociażby podstawowych komend systemowych (ls, ps, grep, vi, kill ) i aplikacji (vi), jak również umiejętność czytania podręczników systemowych (man) i ręcznej edycji plików konfiguracyjnych. Trustix Linux 2.2 to profesjonalna dystrybucja, dzięki której administratorzy nauczą się więcej niż na innych, bardziej przyjaznych początkującym, dystrybucjach, a zaawansowani administratorzy poczują się bardziej bezpieczni. Wydaje mi się, że warto zainstalować Trustiksa z jeszcze jednego powodu. W natłoku najróżniejszych dystrybucji przedstawianych jako serwerowe, które po instalacji witają nas fajerwerkami graficznymi i sprawiają wrażenie powolnych, Trustix niesie ze sobą ducha Linuksa sprzed lat. Takiego, którego pamiętają tylko Ci najstarsi, i tego, którego ostatnim dystrybucjom tak bardzo brakuje. Zapewniam Cię drogi Czytelniku, że warto poczuć ten klimat. Na płycie DVD B dostępny jest obraz ISO systemu.

10

styczeń 2005

opis DVD

DVD A

Aurox 10.1 Quicksilver – europejska dystrybucja Linuksa

N

a początku grudnia zakończono prace związane z wydaniem nowej wersji Auroksa o nazwie kodowej Quicksilver. Jak się okazało, ta dystrybucja, bazująca w dużym stopniu na Fedorze, wyprzedziła ją pod wieloma względami, stając się w coraz większym stopniu niezależnym produktem. Usunięto wiele błędów, wykorzystano nową wersję instalatora (Anaconda 10) oraz zaktualizowano lub dodano wiele nowych pakietów. Część oprogramowania zastąpiono w pełni funkcjonalnymi odpowiednikami, bez ograniczeń patentowych narzucanych w USA. Jednocześnie programiści Auroksa dodali wiele skryptów ułatwiających instalację dodatkowych sterowników, których nie można było włączyć do standardowej procedury instalacyjnej (NVidia, ATI). W nowym Auroksie poprawiono także wszelkie błędy związane z prawidłową detekcją sprzętu. Dzięki zastąpieniu statycznego deva dynamicznym udevem oraz dodaniem szeregu aplikacji, które z nim współpracują (hotplug, hal, gamin oraz gnome-volume-manager), możliwe jest automatyczne dodawanie i konfiguracja urządzeń, takich jak np. aparaty cyfrowe czy zewnętrzne karty pamięci. Dużym atutem Auroksa jest łatwość instalacji, konfiguracji oraz prostota obsługi systemu. W efekcie, osobom przyzwyczajonym do używania innych systemów operacyjnych, migracja na Linuksa nie powinna sprawić trudności. Co więcej, programistom udało się z sukcesem stworzyć platformę nadającą się zarówno dla użytkowników stawiających pierwsze kroki w świecie Linuksa, jak i dla ludzi, którzy tę fazę mają już za sobą – Aurox 10.1 to nie tylko programy biurowe. ale także szereg aplikacji sieciowych i narzędziowych.

Pierwsze wrażenie
Nieczęsto spotykamy się z sytuacją, w której jakiś produkt zachwyca nas od samego początku. Tak właśnie jest z nowym Auroksem! Już na wstępie naszym oczom ukazuje się instalator komunikujący się z nami w dowolnym europejskim języku. Prosta procedura instalacyjna i równie łatwa konfiguracja szybko pozwala nam rozpocząć pracę z nowym systemem. Standardowo, do dyspozycji mamy szereg aplikacji przydatnych do pracy w biurze (OpenOffice.org, Evolution, przeglądarka Firefox), liczne programy edukacyjne (KmPilot, Kalzium) i rozrywkowe (Ziemniaczany facet). Dodatkowo, w Auroksie 10.1 znajdziemy wiele programów multimedialnych, służących do słuchania i komponowania muzyki (GLAME, Audacity), oglądania filmów (MPlayer, Xine) oraz pracy z plikami graficznymi (GIMP). Miłym zaskoczeniem jest łatwa instalacja dodatkowych programów i sterowników.

Wymagania systemowe:
• • procesor zgodny z Pentium, zalecany 200 MHz lub lepszy pamięć 64 MB

Wymagania minimalne Auroksa 10.1dla pracy w trybie tekstowym:

Do pracy w trybie graficznym są potrzebne: • • procesor: zalecany 400 MH Pentium II lub lepszy pamięć: minimum 128 MB, zalecane 256 MB

Niezbędne wolne miejsce na dysku: • • • • • instalacja minimalna: 1 GB serwer: minimum 1.1 GB biuro, szkoła i dom: 3 GB stacja robocza: 3,5 GB wszystkie pakiety: 8 GB

Dodatkowo wymagane jest miejsce na dane użytkownika.

Instalacja dodatkowych pakietów
Twórcy Auroksa postarali się o to, aby użytkownik systemu nie miał najmniejszych kłopotów z instalacją sterowników kart graficznych (Nvidia, ATI), modemów, obsługi partycji NTFS, czy uruchomieniem aplikacji Flash i Java. Specjalnie przygotowane skrypty pozwolą jednym poleceniem dodać najbardziej potrzebne biblioteki i programy, dzięki czemu nawet osoby stawiające pierwsze kroki w Linuksie usłyszą z głośników dźwięk w formacie mp3 i obejrzą filmy avi.

nie instalowanym środowiskiem graficznym jest X.org. Użytkownik ma także do wyboru dwa popularne środowiska graficzne: KDE 3.3.1 oraz GNOME 2.8.1. Dodatkowo, możliwe jest skorzystanie z lekkich menedżerów okien typu FluxBox czy WindowMaker. Do dyspozycji mamy również pakiet biurowy OpenOffice.org 1.1.2 oraz program do poczty elektronicznej i zarządzania kalendarzem/kontaktami – Evolution 2.0.2.

Podsumowanie
Jak cię widzą, tak cię piszą – brzmi popularne powiedzenie. Koledzy z Auroksa przygotowali naprawdę ładną, łatwą, profesjonalną i w pełni funkcjonalną dystrybucję Linuksa. Polecamy ją wszystkim Czytelnikom Linux+. Na płycie DVD znajduje się pełna wersja dystrybucji Linuksa, pakiety dodatkowe oraz źródła.

Co jest w środku?
Dystrybucja Aurox Linux 10.1 pracuje pod kontrolą jądra w wersji 2.6.9-10. W związku ze zmianami licencyjnymi XFree86, wiele dystrybucji nie chce dołączać najnowszych wersji tego serwera, a domyśl-

Aurox do nauki

Aurox do zabawy

Aurox do pracy

12

styczeń 2005

opis DVD aktualności

DVD B

Mandrakelinux 10.1 Official Najpopularniejsza dystrybucja Linuksa na świecie, szczególnym uznaniem ciesząca się wśród początkujących użytkowników Linuksa. Aby zainstalować Mandrakelinux 10.1 Official, uruchom komputer z płytki DVD B, wpisz linux i naciśnij [Enter]. Jeśli podczas instalacji dodatkowego oprogramowania system poprosi Cię o pierwszą, drugą bądź trzecią płytę CD, nie przejmuj się – wystarczy nasza płytka DVD, na której zawarte są dane wszystkich trzech płytek instalacyjnych. Dobrej zabawy! http://www.mandrakelinux.com/ DD_Rescue 1.10 Program służący do odzyskiwania danych. http://www.garloff.de/kurt/linux/ ddrescue/ G4L 0.14 Ghost For Linux, czyli klon znanego posiadaczom Windows programu Norton Ghost. Dzięki niemu zrobisz w łatwy sposób kopię swojej partycji. http://freshmeat.net/projects/g4l/ Freerails 20041011 Klon kultowej gry Railroad. Budujemy własną kolej. http://freerails.sourceforge.net/ Aktualizacje Aktualizacje dla systemu Mandrakelinux 10.1. http://www.mandrakelinux.com/ WINE 20041019 Środowisko API Win32 na Linuksie. http://www.winehq.org/ RIP 11.4 System ratunkowy, uruchamiany z płyty, zbliżony do System Rescue CD. Zawiera oprogramowanie przydatne każdemu posiadaczowi komputera. Ballsmacker 1.0.0 Wirtualny bilard w środowisku 3D. http://ballsmacker.sf.net/ Q DVD-Author 0.0.8 Zamierzasz uwiecznić jakieś wydarzenie w postaci filmu na płycie DVD? Dzięki Q DVD-Author uzyska on eleganckie menu. http://qdvdauthor.sourceforge.net/ GIMP 2.2-pre2 Najnowsza wersja najpopularniejszego programu graficznego w świecie Open Source. http://www.gimp.org/

Linux+ Live

L

inux+ Live to dystrybucja Linuksa znana Czytelnikom Linux+DVD, uruchamiana z płyty DVD i nie wymagająca instalacji na dysku twardym. W tym miesiącu przekazujemy w Wasze ręce garść programów związanych z bezpieczeństwem sieci: Nmap – popularny skaner portów, dzięki któremu wykryjecie słabe punkty serwerów; Ettercap – bardzo rozbudowany sniffer, czyli podsłuchiwacz danych krążących w zamkniętych sieciach LAN (posiada dużą liczbę różnych wtyczek, które czynią z niego prawdziwie szpiegowską maszynę); Ethereal – kolejny sniffer, ale w przeciwieństwie do wymienionego przed chwilą Ettercapa, działa w trybie graficznym i posiada mniejszą liczbę wtyczek (idealny dla początkujących); Airsnort – jeszcze jeden sniffer, ale tym razem zupełnie inny od wymienionych wcześniej, gdyż działa w zamkniętych sieciach WLAN; Ping – program wysyłający pakiet informacji i żądający odesłania go do wysyłającego (pozwala zbadać istnienie połączenia między komputerami, drogę między nimi, czas potrzebny na przejście pakietu oraz sprawdzać, czy dany komputer pracuje w sieci); Traceroute – program posiadający funkcje podobne do tych oferowanych przez program Ping (idea jego działa-

Linux+ Live po uruchomieniu

nia jest następująca: z każdym wysłanym pakietem związany jest pewien licznik zawierający ,,czas życia''; jest on zmniejszany o jeden podczas przejścia przez każdy router; gdy osiągnie zero, pakiet jest zwracany do nadawcy jako ,,przeterminowany''). Patrząc od strony technicznej, Linux+ Live jest oparty o jądro 2.6.7 i KDE 3.2.3. Dzięki temu, wymienione wcześniej oprogramowanie wykorzystają również mniej zaawansowani użytkownicy. Pamiętajcie o jednym – jeśli chcecie wykorzystać Ettercapa, Ethereala czy Airsnorta, spytajcie najpierw o zgodę administratorów Waszej sieci. Podsłuchiwanie jest nielegalne. Redakcja nie odpowiada za jakiekolwiek szkody wyrządzone przez wymienione oprogramowanie. Życzymy dobrej, a przede wszystkim rozważnej zabawy! http://live.lpmagazine.org/

Damn Small Linux 0.8.3
Bootowalna dystrybucja Linuksa, mieszcząca się na płytce o wielkości karty kredytowej, zawierająca środowisko graficzne i wiele przydatnych aplikacji? Czemu nie. Z przyjemnością przedstawiam Damn Small Linux – jedną z najmniejszych dystrybucji Linuksa. Aż dziw bierze, jak wiele można zmieścić na przestrzeni 50 MB. Znajdziecie tutaj odtwarzacz multimedialny XMMS, klienta poczty elektronicznej, klienta FTP, przeglądarkę internetową, arkusz kalkulacyjny, edytor tekstu, komunikator internetowy oraz menedżera plików. Jeśli dodamy do tego możliwość instalacji na dysku twardym i urządzeniu PenDrive, wychodzi nam obraz dystrybucji idealnej dla słabszych komputerów, wyposażonych w procesory 486 i wczesne Pentium. To wspaniały

Kieszonkowy Linux

sposób na to, aby mieć swój ulubiony system zawsze przy sobie. Nagrany na specjalnie przygotowanej płytce, zmieści się do portfela czy kieszeni. Rewelacja. System został umieszczony na płycie w formie obrazu ISO. http://www.damnsmalllinux.org/

14

styczeń 2005

aktualności aktualności

news

News
OpenBSD 3.6 Oczekiwana wersja 3.6 systemu OpenBSD w końcu ujrzała światło dzienne. Główne nowości w stosunku do poprzedniej wersji to wsparcie dla nowej platformy sprzętowej luna88k, obsługa wielu procesorów na platformach i386 i amd64, zwiększona wydajność i funkcjonalność NFS oraz zwiększona funkcjonalność Border Gateway Protocol Daemon. http://www.openbsd.org/36.html Bristol na Open Source? Władze miejskie Bristolu planują wyposażyć 5000 komputerów w oprogramowanie Open Source. Ostateczne decyzje zostaną pojęte dopiero po debacie na posiedzeniu rady miasta. Zmiany miałyby objąć 5000 komputerów, na których pojawiłby się zintegrowany pakiet StarOffice 7 firmy Sun Microsystems, zamiast dotychczas używanych programów Corel Word Perfect, Lotus 1-2-3 oraz Microsoft Office. Zgodnie z wyliczeniami urzędników, przejście na oprogramowanie Open Source pozwoliłoby zaoszczędzić ponad milion funtów w ciągu najbliższych pięciu lat. http://www.computerweekly.com/ articles/article.asp?liArticleID=134508& liArticleTypeID=1&liCategoryID=6&liC hannelID=1&liFlavourID=1&sSearch= &nPage=1 Koders.com Pod adresem Koders.com można znaleźć nowy projekt będący wyszukiwarką źródeł oprogramowania Open Source. Ma ona ułatwić pracę programistom, którzy będą mogli porównać, jak dany problem, który napotkali w swojej pracy, rozwiązali inni. Oprócz słów kluczowych, kryterium wyszukiwania może być język programowania i licencja, na której kod jest dostępny. Serwis Newsforge przeprowadził wywiad z twórcą tego projektu, Darrenem Rushem http://www.newsforge.com/ article.pl?sid=04/11/01/1927212 Novell Linux Desktop Novell ogłosił niedawno, że jego nowy produkt, oparty na SUSE 9 Novell Linux Desktop 9, jest już dostępny. Jest to system przeznaczony dla klienta korporacyjnego i dostępny jest wraz ze wsparciem technicznym, a także szkoleniami dla pracowników. Dostępny ma być w sieci sprzedaży partnerów Novella. Jego sugerowana cena to $50 wraz z rocznymi uaktualnieniami i poprawkami. Za darmo dostępna jest trzydziestodniowa wersja próbna (trzy obrazy ISO). http://www.novell.com/products/desktop/ eval.html

3 x Novell

O

statnio często, w różnych kontekstach, wspomina się o firmie Novell, która w stosunkowo niedługim czasie, dzięki swojej zdecydowanej strategii na rynku IT, stała się linuksowym potentatem. Nic dziwnego, że to właśnie Novell poczuł się w obowiązku odeprzeć zarzuty wystosowane przez Microsoft przeciwko Linuksowi w kampanii Get the Facts (Poznaj fakty – przechrzczonej szybko przez środowisko Open Source na Get the FUD, od Fear, Uncertainty, Doubt, czyli Strach, Niepewność i Zwątpienie). Specjalnie stworzona w tym celu strona już w pierwszych słowach nie pozostawia wątpliwości co do tego, że Novell nie ma zamiaru łatwo oddawać pola: W ostatnim czasie opublikowano opinie podważające przydatność systemu Linux do zastosowań w przedsiębiorstwach. Informacje zebrane w tym miejscu pomogą lepiej zrozumieć motywację, jaka stoi za tymi opiniami, i właściwie ocenić rzeczywistą wartość Linuksa dla sieci korporacyjnej. Zaraz po tym autorzy przechodzą do rzeczy – w pięciu kolejnych rozdziałach, zatytułowanych kolejno: Dlaczego lepiej wybrać Linuksa, a nie Windows, O czym Microsoft nie mówi, Nadeszła pora na Linuksa, Chodzi o swobodę wyboru oraz Dlaczego jeśli Linux, to Novell?, punkt po punkcie podważają argumentację firmy z Redmond, zawartą w jej (nie)sławnej kampanii informacyjnej. Novell przekonuje, że Linux, to nie tylko niskie koszty, ale również bezpieczeństwo i przyszłość. Firma nie omieszkała przy tym wspomnieć o swoim programie zabezpieczenia klientów przed roszczeniami patentowymi. Oczywiście, linuksową alternatywą dla platformy Microsoftu jest w tym dokumencie niemal zawsze komercyjna dystrybucja SUSE, przejęta niedawno przez Novella. Trudno się temu dziwić – zarówno kampania Microsoftu, jak i kontratak Novella, są skierowane przede wszystkim do klienta korporacyjnego, który potrzebuje rozwiązań sprawdzonych w warunkach produkcyjnych oraz wsparcia technicznego ze strony producenta. Pod tym wzglę-

Novell na swojej stronie internetowej prostuje “fakty”

dem SUSE wydaje się być całkiem dobrą alternatywą. Kilka dni po premierze strony internetowej odpierającej zarzuty Microsoftu, w serwisach linuksowych znów pojawiła się nazwa firmy Novell. Niejakim zaskoczeniem dla wielu była informacja o odejściu jednego z jej głównych menedżerów, Chrisa Stone'a, który, jak mówi, postanowił poświęcić się teraz innym wyzwaniom zawodowym. Chris był głównym autorem strategii linuksowej Novella – to głównie dzięki jego staraniom i pracy Novell przejął najpierw firmę Ximian, producenta oprogramowania Open Source, a następnie SUSE, producenta znanej komercyjnej dystrybucji Linuksa. To właśnie za kadencji Stone'a Novell stał się potentatem na rynku oprogramowania Open Source, wykorzystując pewne niezdecydowanie ze strony konkurencji, głównie Sun Microsystems. Dzięki swojej platformie opartej na SUSE i Ximianie, Novell rzucił rękawicę Microsoftowi na rynku korporacyjnym. Nie wydaje się, aby odejście Stone'a miało wpłynąć na zmianę strategii firmy – Novell w każdym razie zdecydowanie zapowiada kontynuację. Trzecia informacja dotyczącą Novella jest chyba najbardziej interesująca dla samej firmy. Na drugiej dorocznej imprezie Tech Innovators czasopismo VARBusiness przyznało Novellowi nagrodę "Największy innowator w dziedzinie sytemu Linux w roku 2004" (2004 Top Innovator Award for Linux) za jej system SUSE LINUX Enterprise Server 9. Pakiet SUSE LINUX Enterprise Server 9 znalazł się wśród 460 produktów zgłoszonych do konkursu przez 50 dostawców produktów informatycznych dla przedsiębiorstw. Oby więc Novell nie zwalniał tempa – dla dobra Linuksa... http://www.novell.com/linux/truth/ http://7thguard.net/news.php?id=4198

Między innymi dzięki przejęciu firmy SUSE, Novell stał się linuksowym potentatem

16

styczeń 2005

news@lpmagazine.org

dział prowadzi: Witold Kieraś

D

Diabełek powraca – FreeBSD 5.3

News
Nawigacja GPS na Linuksie TomTom GO to system nawigacji samochodowej GPS, działający w oparciu o Linuksa. Można dzięki niemu korzystać z dwuwymiarowego oraz trójwymiarowego widoku drogi, a także z systemu informowania kierowcy (zarówno przy pomocy tekstu, jak i głosu) o kierunku jazdy. Urządzenie można zamontować na tablicy rozdzielczej lub przedniej szybie samochodu, a producent twierdzi, że jest to najmniejsze tego typu urządzenie dostępne obecnie na rynku. http://www.linuxdevices.com/articles/ AT6929528271.html Za duży wybór? W serwisie Newsforge ukazał się artykuł Vinoda Vijayarajana pt. Too many cooks in Linux? Autor twierdzi w nim, że głównym problemem dla osób migrujących z monolitycznego systemu Windows na Linuksa jest zbyt duża liczba decyzji, jakie muszą podjąć jeszcze zanim zaczną pracować w nowym środowisku. Najpoważniejszą jest oczywiście wybór dystrybucji. Postuluje stworzenie zbioru standardów dotyczących przede wszystkim instalacji i procesu konfiguracji systemu, aby nowy użytkownik nie czuł się przytłoczony brakiem zgodności dystrybucji Linuksa na płaszczyźnie interfejsu. Artykuł spotkał się ze zdecydowaną krytyką czytelników – główną zaletą Linuksa jest właśnie możliwość wyboru, a rezygnowanie z niej w imię upodabniania się do produktów MS wydaje się być tym, czego obecni użytkownicy Linuksa bardzo by sobie nie życzyli. Przeciwko patentom w Unii Georg Greve, prezydent Free Software Foundation Europe, wystosował list otwarty do desygnowanego niedawno nowego przewodniczącego Komisji Europejskiej José Manuel'a Barroso. Powołuje się on na badania przeprowadzone przez poważne firmy, jak PricewaterhouseCoopers oraz Deutsche Bank, dotyczące szkodliwego wpływu na gospodarkę jakie niesie za sobą przegłosowanie dyrektywy o możliwości patentowania oprogramowania, oraz zachęca do sprzeciwu wobec wprowadzenia patentów na "wynalazki realizowane za pomocą komputera". http://fsfeurope.org/projects/swpat/ letter-20041101.en.html http://7thguard.net/ news.php?id=4194

ługo oczekiwane nowe wydanie najpopularniejszego systemu z rodziny BSD, FreeBSD 5.3, jest już dostępne. Jak podkreślają deweloperzy, jest to pierwsze stabilne wydanie z gałęzi 5.x – stabilne w sensie produkcyjnym, tzn. nie testuje się w nim nowych rozwiązań technologicznych, ale dostarcza system gotowy do wdrażania. Do tej pory twórcy zalecali, jako stabilniejszą, gałąź 4.x systemu. Od dość dawna FreeBSD pozostaje w cieniu Linuksa, jako ten drugi system typu Open Source. Dzieje się tak głównie za sprawą tego, że FreeBSD skupiło wokół siebie mniejszą społeczność – zarówno deweloperów, jak i użytkowników. Wśród systemów z rodziny BSD to właśnie FreeBSD uchodzi za najlepiej rozwinięty i najbardziej wszechstronny – jest niezwykle ceniony na serwerach, ale ma też swoich zwolenników w zastosowaniach biurkowych. Niezwykle liberalna licencja BSD pozwala na wykorzystywanie jego kodu także w projektach typu closed source, przez co FreeBSD ma swój wkład w rozwój komercyjnych systemów, takich jak MacOS X czy Solaris. Co nowego we FreeBSD 5.3? Znajdziemy w nim między innymi serwer X.org w wersji 6.7, a także środowiska graficzne GNOME 2.6.2 i KDE 3.3.0. Środowi-

Demon Beastie to maskotka systemu FreeBSD

sko programistyczne zostało uaktualnione do GCC 3.4.2, Binutils 2.15 i GDB 6.1. Do ciekawych nowości należy też z pewnością możliwość korzystania z niektórych kart sieciowych przy wykorzystaniu sterowników dla MS Windows. Udało się również podnieść wydajność systemu na maszynach wieloprocesorowych. FreeBSD to bardzo ciekawa alternatywa dla Linuksa. Zainteresuje z pewnością również tych, którzy chcieliby się nauczyć czegoś więcej na temat systemów z rodziny Unix. Mimo zdecydowanie mniejszej popularności, FreeBSD ma też niemały wpływ na Linuksa – wystarczy wspomnieć choćby dystrybucję Gentoo, której podstawowy mechanizm Portage wzorowany był właśnie na rozwiązaniach podpatrzonych w tym systemie. http://www.freebsd.org/releases/5.3R/ announce.html

Adobe a sprawa linuksowa

A

dobe Systems, znany producent oprogramowania, nie może pochwalić się bogatą kolekcją programów działających na platformie linuksowej. W zasadzie jedynym rodzynkiem jest Adobe Reader, ale i tutaj nie jest najlepiej – wersja dla Linuksa jest mocno spóźniona w stosunku do wersji dla Windows i Mac OS X. Być może w niedługiej przyszłości to się zmieni. Firma Adobe Systems przystąpiła do konsorcjum przemysłowego Open Source Development Labs, które zatrudnia m.in. Linusa Torvaldsa. Adobe, zgodnie z informacjami, jakie zdobyli dziennikarze serwisu CNET News.com, działa w konsorcjum w grupie roboczej zajmującej się Linuksem w zastosowaniach biurkowych. Firma zaprzecza jakoby chciała stworzyć linuksowe wersje swoich flagowych produktów, takich jak Photoshop czy Illustrator, a jedynie zapowiada uaktualnienie Adobe Readera do wersji 6.0, czyli takiej jak dla Windows i Mac OS X. Pam Deziel,

dyrektor do spraw promocji produktów w Adobe Systems, uważa, że linuksowe wersje produktów jej firmy nie znalazłyby zbyt wielu kupców. Jej zdaniem Linux to bardzo ciekawy rynek, ale na razie jedynie dla branży programistycznej. Klientów zainteresowanych tworzeniem grafiki pod Linuksem jest zbyt mało, aby firmie opłacało się tworzyć wersję dużych aplikacji na tę platformę. Dodatkowo, konkurencja ze strony produktów darmowych, jak choćby GIMP, również, zdaniem Deziel, zniechęca do takich posunięć. Firma Adobe Systems jest bardzo tajemnicza, gdyż oficjalnie potwierdziła jedynie przystąpienie do konsorcjum OSDL. Nie ulega jednak wątpliwości, że zaczęła się interesować Linuksem i chce stworzyć dla siebie strategię postępowania na tym rynku. Z pewnością najbliższe tygodnie przyniosą nam ciekawe informacje na ten temat. http://www.linux.pl/?id=news&show=1715

www.lpmagazine.org

17

aktualności aktualności

jądro linux

News
Emulacja PS/2 dla myszy USB problematyczna Na LKML pojawił się problem z obsługą myszy. Specjaliści od USB i podsystemu wejścia, Greg Kroah-Hartman i Vojtech Pavlik, błyskawicznie zdiagnozowali go jako wynik włączenia w BIOSie emulacji PS/2 dla urządzeń wskazujących podłączanych przez USB. Jest ona konieczna o obsługi klawiatury i myszy w programie uruchomieniowym, przed załadowaniem Linuksa, ale później stanowi problem. Sterownik PS/2 przejmuje tak emulowane urządzenie i nie oddaje go podsystemowi USB, co owocuje problemami z zapanowaniem nad kursorem myszy. Okazało się, że stosowne łatki od pewnego czasu znajdują się w drzewie -mm, ale nie są włączane automatycznie – wymagają specjalnego parametru w linii poleceń jądra. Deweloperzy zgodnie stwierdzili, że muszą jak najszybciej trafić do głównego drzewa i być aktywowane automatycznie. http://lkml.org/lkml/2004/10/1/11 Odchudzenie sysfs Inną ciekawostką, która w końcu trafiła do drzewa Linusa, jest łatka nazwana sysfs backing store. Pozwala ono zaoszczędzić pamięć marnowaną przez system plików sysfs. Znikanie pamięci nie jest błędem tego systemu, a jedynie konsekwencją używania przez niego ogólnych wywołań VFS do stworzenia hierarchii katalogów i plików. Takie podejście powoduje traktowanie przez VFS drzewa /sys jak każdego innego punktu montowania, wraz z wynikającymi z tego zagadnieniami cache'owania. Obowiązująca dla sysfs filozofia ,,jeden plik - jedna wartość'' owocuje olbrzymią ilością plików, katalogów i łączy symbolicznych, co potrafi zmarnować spore ilości pamięci, która znajduje się w fizycznej RAM i nie może zostać przesłana na partycję wymiany. Łatka włączona do jądra tworzy katalogi i pliki w /sys dopiero w momencie dostępu do nich. Usuwa także te, którymi w ostatnim czasie nikt się nie interesował. Autor na swojej maszynie testowej odzyskał 145 megabajtów (sic!) pamięci, ale należy zaznaczyć, że dysponuje naprawdę ogromnym systemem z mnóstwem urządzeń. Z tej zmiany zadowoleni powinni być zarówno właściciele większych, bogato wyposażonych komputerów, jak i ci, którzy używają Linuksa w zastosowaniach wbudowanych, gdzie liczy się każdy bajt pamięci. http://lwn.net/Articles/69523/

Asynchroniczny podsystem kryptograficzny

P

odsystem dostarczający operacji kryptograficznych jest dostępny w Linuksie już od jakiegoś czasu. I chociaż spełnia swoje zadania dobrze, to nie jest idealny. Największym problemem jest jego synchroniczność – po wywołaniu funkcji kryptograficznej, kod musi oczekiwać na jej wykonanie. Mogłoby się to wydawać oczywiste, ale należy brać pod uwagę sytuacje, w których szyfrowanie czy liczenie funkcji skrótu jest wykonywane przez dodatkową kartę, tzw. akcelerator kryptograficzny. Czas, gdy akcelerator dokonuje przekształceń, procesor marnuje na bezproduktywne czekanie. Jest to tym większa strata, im szybszą jednostką CPU dysponujemy. Rozwiązaniem jest wprowadzenie asynchroniczności. Przekazawszy zadanie do wykonanie karcie rozszerzeń, procesor może dalej wykonywać kod. Akcelerator zakończywszy działanie informuje jądro o tym fakcie. Sprzęt i oprogramowanie mogą działać równocześnie, uzyskując pełną prędkość. Rozszerzenia standardowej warstwy kryptograficznej o działalność asynchroniczną podjął się Evgeniy Polyakov, wzorując się na rozwiązaniu obecnym w systemie OpenBSD. Łatka, którą zaprezentował, umożliwia stworzenie kilku kolejek (dla każdego urządzenia kryptograficznego i obliczeń na procesorze), przypisywanie poszczególnych szyfrowanych sesji do konkretnych kolejek, migrację między kolejkami, a nawet przekazywanie sesji między urządzeniami – przydatne np. gdy jedno z nich dokonuje szyfrowania, a inne cyfrowego podpisania. Wszystkie sesje kryptograficzne są zarządzane przez proces szeregujący, dbający o optymalne wykorzystanie dostępnych zasobów. W najprostszej implementacji przydziela on nowe zadania w pierwszej kolejności tym urządzeniom, które mają najkrótszą kolejkę oczekujących sesji. Asynchroniczne API poprzez system wtyczek daje dużą elastyczność dołączania bardziej skomplikowanych algorytmów przydziału zadań. Długość kolejek może być uzależniona od szybkości dokonywania przekształceń przez dane urządzenie, a ta z kolei może być mierzona przez jądro przy załadowaniu modułu. Na wybór urządzenia mogą wpływać również inne czynniki, np. długość pakietu przeznaczonego do zaszyfrowania. Okazuje się bowiem, że

Akcelerator kryptograficzny Sun Crypto Accelerator 1000 PCI Card

zestawienie transferu po szynie (np. PCI) do urządzenia może zająć więcej czasu niż sama operacja szyfrowania. W skrajnych przypadkach, krótkie pakiety szybciej zostaną przetworzone przez CPU niż przesłane do karty. Podobne dylematy rozwiązywano już w przeszłości. Przykładem może być kopiowanie odebranych pakietów z buforów karty sieciowej do pamięci RAM. W przypadku większych porcji, jądro wykorzystuje DMA, a małe pakiety są kopiowane przez procesor – większy narzut czasowy rekompensuje zapamiętanie krótkich pakietów w pamięci podręcznej procesora, co znacznie przyspiesza kolejne operacje na odebranych danych. Wprowadzone rozszerzenie spotkało się z ciepłym przyjęciem, bo jest krokiem w kierunku zwiększenia możliwości kryptograficznych Linuksa. Pojawiły się prośby o stworzenie API dla przestrzeni użytkownika, zgodnego z tym obecnym w rodzinie systemów *BSD. Jest to oczywiście uzasadnione – nie ma sensu utrudniać przenoszenia oprogramowania między platformami. Dodatkowym plusem, przemawiającym za wspólnym interfejsem, jest umiejętność korzystania z niego przez bibliotekę OpenSSL. Gdyby interfejs powstał, wszystkie napisane programy, używające OpenSSL, niemal automatycznie uzyskałyby obsługę sprzętowych akceleratorów. Pełne wykorzystanie asynchronicznego API w jądrze pociąga za sobą konieczność przepisania fragmentów kodu. Pojawiły się obawy, że to ogromna ilość pracy, biorąc pod uwagę stos IPSec. Jamal Hadi Salim stwierdził jednak, że wymagane przeróbki nie są aż tak duże. Spora jest natomiast szansa szybkiego włączenia asynchronicznego, kryptograficznego API do jądra. http://lists.logix.cz/pipermail/cryptoapi/ 2004/000165.html

18

styczeń 2005

kernel@lpmagazine.org

dział prowadzi: Tomasz Torcz

Stos Linuksowych Modułów Bezpieczeństwa (LSM)

News
Pakietowe nagrywanie płyt Po długim okresie utrzymywania poza jądrem, w końcu zostały włączone zmiany umożliwiające pakietowe nagrywanie płyt, tj. nagrywanie na nośnikach optycznych, tak jak na dyskietkach. Po skojarzeniu napędu z pseudourządzeniem, można je podmontować i po prostu skopiować pliki przeznaczone do nagrania. Zalecany jest do tego system plików UDF, ale można użyć dowolnego obsługiwanego przez Linuksa. Niedogodnością może być brak obsługi błędów w bieżącej wersji sterownika, co wymusza używanie w pełni sprawnych płyt CD. Pełna losowość w /dev Pliki reprezentujące urządzenia w katalogu /dev są powiązane ze sterownikami w jądrze przez dwa numerki, tzw. major i minor. Od dawna obowiązuje sztywne przypisanie. Z punktu widzenia deweloperów jądra przypisane na sztywno numery nie mają większego sensu. Jest to zbiór magicznych wartości, na które trzeba uważać i łatwo przy nich popełnić błędy. Niektórzy za błąd uważają przydzielenie dyskom SCSI tylko 4 bitów na numerowanie partycji, co ogranicza maksymalną ich liczbę do 16 (dyski IDE mogą mieć nawet 64 partycje). Pomysł odrzucenia przypisanych na stałe numerków co jakiś czas pojawia się na liście dyskusyjnej twórców Linuksa. Ostatnio przypomniał go Carl-Daniel Hailfinger i obiecał nawet stworzenie łatki, która przeniesie numerki urządzeń w dziedzinę losowości. Pomoże to zlokalizować sterowniki, które stworzono opierając się na błędnych założeniach dotyczących numerów urządzeń. Jest tylko jedno ale: aby działanie systemu nadal było możliwe, wewnętrzne zdanie jądra co do numeracji musi pokrywać się z zawartością katalogu /dev. Istnieją co najmniej dwa mechanizmy, które to umożliwiają, zajmujące się dynamicznym wypełnianiem tego katalogu: pseudo system plików devfs (obecnie na wymarciu) i zdobywający coraz większość popularność udev. Obydwa dbają o stworzenie plikówurządzeń na podstawie informacji o numerach otrzymanej z jądra, więc aktualnej. Wymuszenie ich używania może nie pasować użytkownikom przyzwyczajonym do statycznego /dev, których systemy po wprowadzeniu losowości po prostu przestaną się uruchamiać.

M

echanizm Linux Security Module jest bardzo zaawansowany i daje wiele możliwości zabezpieczania systemu przez odpowiednio napisane moduły. Niektóre z powstałych rozszerzeń pozwalają nawet zwiększyć funkcjonalność Linuksa zaledwie ocierając się o bezpieczeństwo. Przykładem może być wspomniany w zeszłym miesiącu moduł dający dostęp do szeregowania czasu rzeczywistego zwykłym użytkownikom. Wykorzystując LSM, można także w pewnym stopniu profilować działanie systemu. Daje on dostęp do wnętrza systemu i jest w miarę elastyczny, chociaż posiada bolączkę, poważnie ograniczającą jego zastosowania. Jego konstruktorzy dołączyli do wielu struktur danych, używanych w jądrze, pole typu void * , którego zadaniem jest przechowywanie danych związanych z zabezpieczeniem danego obiektu. Dodajmy, że danych specyficznych dla bieżącego modułu LSM. I tu właśnie wpadamy na ograniczenie postawione przez autorów – nie można w prosty sposób załadować dwóch LSM, gdyż ich wspólne, nienadzorowane odwołania do pola informacyjnego w najlepszym razie nie dadzą pożądanych rezultatów. W najgorszym mogą doprowadzić do obniżenia bezpieczeństwa chronionych zasobów, a nawet niestabilności systemu. Celowo uniemożliwiono proste załadowanie dwóch modułów. Chcąc skorzystać z różnych LSM naraz, należy zaimplementować w nich obsługę nakładania. Wiąże się to z kolei z koniecznością napisania kodu obsługującego wszystkie miejsca, w których następuje konsultacja jądra z modułami bezpieczeństwa. Jest ich bardzo dużo, więc zazwyczaj autorzy zajmują się tylko swoim modułem, całkowicie ignorując pozostałe. Nawet jeśli twórca pomyślał o wszystkich potrzebnych zaczepach (hooks) i obsłudze nakładania innych modułów na swój, powraca kwestia pojedynczego pola informacyjnego. Współdzielenie go przez nałożone na siebie moduły wymaga sporego wysiłku. Spróbował temu zaradzić Serge Hallyn. Wykorzystał opcjonalne funkcje pomocnicze nakładania do możliwie największej separacji modułów od siebie. Pojedynczy wskaźnik void * zamienił na tablicę wskaźników, domyślnie czteroele-

mentową. Daje to możliwość współpracy czterech LSM, kosztem zwiększenia zajętości pamięci i spowolnienia niektórych operacji. Standardowo, działanie Linux Security Modules polega na odwołaniu się do konkretnego modułu w ostatniej fazie przyznawania dostępu do zasobu. W przypadku plików najpierw są sprawdzane uprawnienia pliku oraz ewentualna możliwość jego otwarcia w trybie odczyt/zapis (zależy to również od opcji montowania), a jeśli po tych standardowych testach użytkownik ma przyznany dostęp, konsultowany jest LSM. Moduł, kierując się sobie tylko znaną wiedzą, ma jeszcze szansę zabronić dostępu. W przypadku kilku załadowanych modułów, wystarczy brak zgody tylko jednego, aby dostęp nie powiódł się. Czy to dobry rozwiązanie? Inni deweloperzy nie są do niego przekonani. Moduły nie wiedzące o sobie nawzajem mogą zachowywać się w nieprzewidziany sposób. A nieprzewidywalność jest ortogonalna do możliwości zapewnienia bezpieczeństwa. Z właściwym rozwiązaniem wystąpił James Morris. Według niego nie należy dopuszczać do konieczności jednoczesnego stosowania kilku modułów bezpieczeństwa. Jedynym załadowanym powinien być moduł SELinux. Był to pierwszy użytkownik szkieletu bezpieczeństwa LSM. W jego projekcie brano pod uwagę maksymalną elastyczność konfiguracji. SELinux działa na zasadzie narzucenia zasad określonych w polityce bezpieczeństwa załadowanej do jądra z pliku. Ustalanie jej jest dosyć elastyczne, ale nie przewidziano wszystkich możliwości nadzorowania systemu, stąd powstanie innych niż SELinux modułów bezpieczeństwa. Morris starał się skierować deweloperów raczej na dopisywanie brakującej funkcjonalności do SELinux niż tworzenie własnych, ograniczonych do jednej lub kilku funkcji modułów LSM. Rozwiązanie to, chociaż wymusza uznanie SELinux za podstawowy moduł bezpieczeństwa, jest zdecydowanie lepsze niż złożenie razem kilku słabo ze sobą współpracujących fragmentów niezależnego kodu. http://lwn.net/Articles/110432/

www.lpmagazine.org

19

aktualności aktualności

debian

News
Debian Stable zaktualizowany Joey Schulze ogłosił kolejną, trzecią już aktualizację gałęzi stabilnej Debiana. Od wydania ostatniej aktualizacji w listopadzie 2003 roku zebrało się sporo poprawek bezpieczeństwa. Obecna aktualizacja, o nazwie 3.0r3, poprawia 212 błędów bezpieczeństwa w pakietach. Nowe obrazy instalacyjnych płyt Debiana zawierają już wszystkie poprawki. http://lists.debian.org/debianannounce/debian-announce-2004/ msg00000.html http://www.debian.org/News/2004/ 20041026 Problematyczna wersja shareware XChat Giacomo Catenazzi zauważył, że na stronie WWW aplikacji XChat dostępna jest binarna wersja shareware programu dla systemu Windows. Aby odblokować wersję shareware, należy uiścić odpowiednią opłatę, ale kod źródłowy, wydany na licencji GPL, nie zawiera kodu odblokowującego. Istnieje prawdopodobieństwo, że może to być źródłem kłopotów dla Debiana. http://lists.debian.org/debian-legal/ 2004/10/msg00357.html http://lists.debian.org/debian-legal/ 2004/10/msg00373.html Spowolnienie list dyskusyjnych Debiana Pascal Hakim ogłosił, że listy dyskusyjne Debiana cierpią z powodu wielu serwerów poczty, które nie przetwarzają wiadomości wystarczająco szybko. Sytuację pogarszają dodatkowo wiadomości wysyłane na listę ogłoszeniową (debian-announce), która posiada ponad 28 tysięcy subskrybentów. Pascal ogłosił również, że grupa administratorów list wzbogaciła się o osobę Corda Beermanna. http://www.redellipse.net/stuff/ Debian/Lists/debian-announce_and_ thundering_herds.story http://lists.debian.org/debianannounce/debian-announce-2004/ msg00000.html Aktualizacja Sarge Frank Lichtenheld ogłosił rezultaty swojej pierwszej aktualizacji z Woodiego do Sarge na platformie i386, a Andreas Barth podsumował problemy dla wszystkich platform. Niezgodność pomiędzy glibc i jądrem może sprawiać problemy również na architekturach hppa, arm, sparc i mips(el). W przypadku części z nich wystarczy najpierw zaktualizować jądro. http://lists.debian.org/debian-kernel/ 2004/10/msg00430.html

SkoleLinux

W

zamieszaniu związanym z pojawieniem się rewolucyjnego Ubuntu niektórym mogło umknąć, że jest to jedna z wielu dystrybucji bazujących na Debianie. Dokładnie, jedną ze 115 pochodnych Debiana. Wśród nich znajduje się także SkoleLinux. Niedawno ukazała się jego nowa wersja. SkoleLinux jest wyspecjalizowaną dystrybucją, powstającą głównie w Norwegii, przeznaczoną przede wszystkim do użytku w szkołach. W chwili obecnej zespół pracujący nad SkoleLinux ściśle współpracuje z deweloperami Debiana skupionymi wokół projektu debian-edu, więc można praktycznie postawić znak równości między tymi dwiema odmianami. SkoleLinux jest mieszaniną pakietów pochodzących z Debiana Woody, Sarge, wydania niestabilnego, a nawet z serwisu backports.org (m.in. Samba). Zastosowanie wielu źródeł pakietów jest częstym zabiegiem w wielu pochodnych Debiana, gdyż pozwala na korzystanie z funkcji, które są nieobecne w wydaniu stabilnym. Dystrybucja została przystosowana do pracy w środowisku sieciowym oraz zawiera scentralizowane narzędzia autoryzacji użytkowników, składowania plików i administracji. Zarządzanie systemem odbywa się z poziomu interfejsu WWW (wykorzystano w tym celu zmodyfikowany pakiet Webmin). Współpraca końcówek sieciowych odbywa się przy pomocy narzędzia LTSP, zdobywającego coraz większą popularność, co pozwala na wykorzystanie starych komputerów, będących często na wyposażeniu szkół. SkoleLinux posiada cztery profile możliwe do zainstalowania: – główny serwer – działają na nim usługi autentykacji, DHCP, DNS itp. oraz są składowane pliki użytkowników; klient – terminal, korzystający z zasobów innego komputera do uruchamiania swoich procesów; stacja robocza – umożliwia normalną pracę i służy jednocześnie za serwer aplikacji dla kilku klientów; komputer domowy – instaluje system przeznaczony do użytku do-

Administracja SkoleLinuksem poprzez Webmina

mowego, dodając wiele programów przydatnych uczniom. Ciekawym i praktycznym rozwiązaniem jest zastosowanie pośrednich serwerów terminali (stacji roboczych), umożliwiających odciążenie głównego serwera w przypadku większych sieci. Dla średniej wielkości szkół (dysponujących 3 pracowniami po 15 stacji) oznacza to w praktyce konieczność posiadania jedynie czterech wydajnych komputerów. Mocniejsze komputery mogą jednocześnie pełnić rolę stacji dla nauczycieli, przy czym terminale korzystające z ich zasobów nadal do autentykacji i składowania plików wykorzystują serwer centralny. Instalacja, opierająca się na nowym instalatorze z Sarge, sprowadza się do odpowiedzi na kilka nieskomplikowanych pytań oraz wyboru profilu. W każdym przypadku, użytkownik po instalacji dysponuje systemem praktycznie gotowym do użycia. Większość czynności administracyjnych odbywa się z wykorzystaniem specjalnie dostosowanego Webmina. Aktualizacja oprogramowania z zastosowaniem mechanizmów Debiana (apt) jest również dziecinnie łatwa. SkoleLinux ze względu na swoją elastyczność, niskie koszty wdrożenia oraz łatwość administracji, nawet dla początkujących użytkowników, wydaje się być idealną alternatywą dla gotowych rozwiązań opartych o produkty zamknięte i drogie, takich jak intensywnie promowany Small Business Server Microsoftu. http://www.skolelinux.org/

20

styczeń 2005

debian@lpmagazine.org

dział prowadzi: T. Napierała, B. Feński

Echa Ubuntu...

News
ro osób uważa, że testowe wydania Debiana są i tak bardziej stabilne niż finalne innych dystrybucji. Taki projekt już istnieje i nazywa się Debian Desktop Distribution. Jest rozwijany w ramach projektu Debian i właściwie realizuje wizję Clemensa poprzez rozluźnienie wymagań dla pakietów przechodzących z dystrybucji niestabilnej oraz przez plany regularnych wydań. Marco d'Itri dla odmiany zaproponował usunięcie dystrybucji stabilnej i pozostawienie wydawania jej zewnętrznym firmom lub innym ludziom, którym nie brakuje entuzjazmu i motywacji. Ten pomysł jednak szybko upadł, bo stabilna linia to coś z czego Debian jest znany i za co jest ceniony. Ubuntu wspiera trzy architektury, podczas gdy Debian wspiera ich aż 10, a prowadzi prace nad przynajmniej dwoma kolejnymi. Sporo komentarzy dotyczyło aktywności członków projektu. Debian ma co prawda ponad 1300 wolontariuszy, ale część z nich to martwe dusze, a jeszcze większa część jest co prawda aktywna, ale w stopniu, który ma raczej niewielki wpływ na postępy zbliżające wszystkich do kolejnego wydania stabilnego. Do jakich wniosków doprowadziła ta dyskusja? Do takich samych, jak każda tak rozbudowana dysputa od ostatnich kilku miesięcy, a mianowicie, aby skupić się na wydaniu Sarge, a na zmiany przyjdzie czas później. Reasumując, zmiany zapewne nastąpią, ale jak bardzo radykalne będą, tego dzisiaj nie wie nikt, bo i nie czas skupiać się na tym w chwili obecnej. Cieszy natomiast fakt, że Debian mimo tego, że jego ostatnie stabilne wydanie ujrzało światło dzienne ponad 2 lata temu, nadal może być bazą dla tak obiecujących projektów, jak Ubuntu. Jeszcze bardziej pocieszające jest to, że już w tym momencie zaczęto część zmian poczynionych przez Canonical Inc. przenosić do Debiana, a kilku ich pracowników zostało oddelegowanych, aby wspierać rozwój Ubuntu poprzez poprawianie niedociągnięć w samym Debianie. Wygląda na to, że powstanie omawianej dystrybucji przyniesie korzyści zarówno użytkownikom, którzy mogą już teraz spróbować “doszlifowanej” wersji Debiana, jak i macierzystemu projektowi, który prędzej czy później wchłonie te poprawki. http://www.ubuntulinux.org/
Aktualizacje Debiana przez BitTorrent Arnaud Kyheng uruchomił dla Apta serwer proxy do sieci Bittorrent. Ze względów bezpieczeństwa, wykaz pakietów oraz pliki .torrent będą ściągane ze stałego serwera HTTP, tak jak zazwyczaj dzieje się to w przypadku pakietu, ale same pakiety będą pobierane przez protokół Bittorent i przekazywane do Apta. http://lists.debian.org/debian-devel/ 2004/10/msg01715.html Jądro 2.6.9 w Sarge? Andres Solomon ogłosił, że w repozytorium przygotował wymagane standardowe debianowe łatki dla jądra 2.6.9. W odpowiedzi Christoph Hellwig zasugerował, aby najpierw zająć się doprowadzeniem wersji 2.6.8 do lepszego stanu dla Sarge. Gdy ten etap zostanie ukończony, to rozpocznie się etap pracy nad 2.6.9. http://lists.debian.org/debian-kernel/ 2004/10/msg00355.html Nowy Skolelinux Petter Reinholdtsen przedstawił nowy obraz CD Skolelinux. Zawiera on ostatnio wprowadzone aktualizacje bezpieczeństwa, nowsze jądro i trochę nowych tłumaczeń. Baza rozpoznawanego sprzętu również została zaktualizowana. http://www.skolelinux.org/portal/ index_html Duży klaster Opteronów działający na Debianie Thomas Lange poinformował o nowym klastrze o nazwie Sarek, zbudowanym na procesorach AMD Opteron i działającym na uniwersytecie Umel. Składa się ze 192 węzłów (384 procesory), a pracuje na nim 64-bitowa wersja Debiana GNU/Linux na amd64 z jądrem 2.6. Klaster został w czerwcu 2004 roku sklasyfikowany na miejscu 165 w rankingu TOP 500. http://www.hpc2n.umu.se/resources/ sarek.html GNOME 2.8 w Sarge? W imieniu zespołu GNOME, Jordi Mallach zapytał, czy może wgrać GNOME w wersji 2.8 do unstable – wersja ta została wydana już we wrześniu, gdy Sarge miał zostać zamrożony. Ponieważ od tamtej pory omawiany zbiór pakietów był poddawany testom i wielu użytkowników już go używa, wydaje się być gotowy do włączenia do nowej wersji stabilnej Debiana. Grupa zarządzająca wydaniem zgodziła się na włączenie GNOME 2.8.1 do unstable, skąd może zostać przeniesiony (częściowo lub w całości) do Sarge. http://lists.debian.org/debian-release/ 2004/11/msg00067.html

Z

eszłomiesięczne wydanie dystrybucji Ubuntu, czyli młodszego brata Debiana, rozwijanego przez firmę Canonical Inc., doprowadziło do szeregu dyskusji na temat modelu rozwoju samego Debiana. Nikt nie ma wątpliwości, że Ubuntu to spory krok naprzód względem oryginału i naturalnym wydaje się ciekawość deweloperów i zadawanie sobie pytania, jak to możliwe, że kilkudziesięciokrotnie mniej ludzi (aniżeli wolontariuszy Debiana) było w stanie poczynić takie postępy w tak krótkim czasie. Z pewnością fakt, iż Canonical Inc. zatrudnia programistów rozwijających dystrybucję (często również deweloperów Debiana) na pełny etat, nie pozostał bez znaczenia. To oczywiste, że nie każdy poświęca tyle samo czasu na pracę, co na hobby. Ale czy to jedyny powód dla którego Ubuntu tak prężnie się rozwija? Jak zauważył Jérôme Marant, deweloperzy Debiana używają głównie dystrybucji niestabilnej, a z tego powodu często nie wiedzą, jaki jest stan testowej. Deweloperzy Ubuntu natomiast korzystają z dystrybucji, która przygotowywana jest do wydania, a więc sami mają okazję przekonać się o jej błędach, a tym samym szybciej je poprawić. Z tej dyskusji powstało kilka różnych koncepcji. Jedną z nich było porzucenie dystrybucji testing w Debianie i mrożenie dystrybucji niestabilnej. Część deweloperów sądzi, że to bardziej motywowałoby ludzi do pracy, ale takie rozwiązanie było już kiedyś stosowane i niestety, działało nawet gorzej niż obecne. Clemens Schwaighofer zaproponował, aby oprócz linii testing, która w zamierzeniu ma stać się wersją stabilną, stosować migawki (ang. snapshots), które miałyby się pojawiać raz na pół roku. Z pewnością nie oferowałyby one takiego bezpieczeństwa i stabilności, jak choćby w tym momencie Woody, ale byłyby aktualne. Ponadto, spo-

Ubuntu – młodszy brat Debiana

www.lpmagazine.org

21

aktualności aktualności

mandrakelinux

mandrakelinux@lpmagazine.org

dział prowadzi: Daniel Koć

News
Mandrakelinux 10.1 Official 27 października 2004 roku ukazało się wydanie Mandrakelinux 10.1 Official. Jest ono praktycznie takie samo, co opublikowane we wrześniu wydanie Community, ale dodatkowo zawiera zebrane w tym czasie poprawki. Official można polecać przede wszystkim użytkownikom oczekującym stabilności, np. administratorom serwerów oraz boleśnie odczuwającym tzw. “syndrom wersji .0”, a pozostali mogą liczyć, że aktualizacja do wersji Official poprawi błędy dystrybucji czające się dotąd w cieniu. http://www.mandrakesoft.com/ products/101 Nowsze KDE i GNOME Wielu użytkowników Linuksa lubi mieć zainstalowane najnowsze wersje programów, zwłaszcza tych biurkowych, gdyż stają się one wyraźnie wygodniejsze i lepsze dosłownie z wersji na wersję. Kalendarze wydań aplikacji i dystrybucji nie zawsze układają się korzystnie, więc Mandrakelinux 10.1Official wciąż zawiera środowiska KDE 3.2.x oraz GNOME 2.6.x, podczas gdy ukazało się już KDE 3.3.1 oraz GNOME 2.8.1 – twórcy dystrybucji woleli postawić na jakość zamiast w ostatniej chwili dopuścić niedotestowane pakiety. Jak zwykle w takich sytuacjach, społeczność sama zadbała o nowe wersje i obie te nowinki można zainstalować na własne ryzyko z repozytorium pakietów przygotowanych przez Thaca. http://rpm.nyvalls.se/index10.1.html Wycieczka do Zoo Najlepszym sposobem na poznanie Wolnego Oprogramowania jest osobisty, niezobowiązujący kontakt. Obok dystrybucji Linuksa startujących wprost z płyty CD, istnieje jeszcze inny podobny sposób – emulacja. Free OS Zoo to serwis zawierający obrazy takich gotowych do uruchomienia systemów operacyjnych. Do eksperymentów zalecane jest przynajmniej 256 MB pamięci oraz emulator QEMU, który według autorów strony zapewnia wydajność tylko od dwóch do czterech razy gorszą niż podczas pracy systemu na rzeczywistym sprzęcie, a więc całkiem przyzwoitą. Wśród dostępnych obrazów znajduje się Mandrakelinux 10.0 na platformę x86, który wymaga ściągnięcia z sieci 355 MB – niestety, nie da się go użyć pod Windows 9x na partycjach FAT 16/32. http://www.freeoszoo.org/

Q DVD-Author 0.8

Q

DVD-Author to aplikacja do obróbki menu samodzielnie przygotowywanych płyt DVD. Jest to graficzna nakładka na tekstowy program Dvdauthor, który zajmuje się właściwą generacją menu. Za pomocą Q DVD-Authora można projektować menu, tworzyć przyciski oraz skalować i kolorować wszystkie obiekty. Każde menu można zilustrować ścieżką dźwiękową, co na pewno ożywi przeglądy slajdów, które także da się w tym programie złożyć z kolekcji zdjęć. Bardziej zaawansowane funkcje programu obejmują importowanie warstw i kombinowanie ich z obiektami menu za pomocą mechanizmu masek, znanego z programów graficznych. Do tej samej kategorii zalicza się również możliwość ręcznej modyfikacji poleceń oraz plików XML, zawierających opis naszego menu. Obecnie największe wady programu to brak możliwości ustawiania filmów jako przycisków menu oraz jako tła, a także brak obsługi wielu wersji napisów. Na szczęście, te dwie pierwsze funkcje są planowane już w najbliższych wydaniach aplikacji. Najnowsza wersja programu wymaga do działania biblioteki Qt w wersji co naj-

Q DVD-Author pomoże tylko w układaniu menu, a o jego estetykę musimy już zadbać sami...

mniej 3.2.0 oraz bibliotek Xine lub MPlayera. W dziale podręczników na stronie domowej znajdziemy samouczek do programu, opisujący tworzenie złożonego menu DVD dla systemów PAL i NTSC, po angielsku, francusku, niemiecku, polsku oraz hiszpańsku. Instalacja Q DVD-Authora z wiersza poleceń administratora następuje przez wpisanie urpmi qdvdauthor ale trzeba , mieć dopisane do źródeł pakietów sekcję Contrib z repozytorium Cooker. http://qdvdauthor.sourceforge.net/

VLC 0.8.0

W

gronie kilku najpopularniejszych odtwarzaczy multimedialnych dla Linuksa, obok MPlayera i Xine, znajduje się VLC (dawniej: VideoLAN Client). Podobnie jak jego konkurenci, obsługuje dużą ilość zarówno kontenerów multimedialnych (MPEG, AVI, MOV, Ogg, Matroska, Real, DV, WAV, AC3, DTS, FLAC), kodeków obrazu (DivX 1/2/3, Theora, WMV, MJPEG, Indeo), napisów, jak i źródeł odtwarzania (FTP, HTTP, RTP, MMS, kamery, DVB, DVD, VideoCD/SVCD); działa także na kilku systemach operacyjnych. Wyjątkowym czyni go możliwość obróbki i dalszego przekazywania strumieni multimedialnych. Zasadnicze funkcje VideoLAN to przerabianie multimediów do plików w innym formacie oraz nadawanie w sieci jako serwer multimedialny. Taka zresztą była jego pierwotna funkcja: program powstał w École Centrale Paris jako projekt studencki do nadawania strumieni w sieciach lokalnych. W najnowszej wersji VLC został między innymi przepisany od nowa kod odczytywania danych, co ma pozwolić na

Konwersja do innych formatów czy stworzenie w VLC lokalnego serwera multimediów jest bardzo prosta dzięki graficznemu asystentowi

obsługę wielu źródeł oraz znacznie poprawić przeszukiwanie strumieni, został przyspieszony start dzięki buforowaniu wtyczek oraz poprawiony kod biblioteki libvlc i obsługi napisów. Można także uruchamiać VLC w tle, tak jak klasyczny serwer. Program jest dostępny w sekcji Contrib repozytorium Cooker, instaluje się go z wiersza poleceń administratora przez urpmi vlc. http://www.videolan.org/vlc/

22

styczeń 2005

aktualności ktualności

aurox

aurox@lpmagazine.org

dział prowadzi: Karol Kozimor

Aurox Recommended Hardware
z najczęściej pojawiających się J ednymzadawanych przez nowych użytpytań kowników Linuksa jest, czy dystrybucja X zadziała na moim sprzęcie. Choć Linux potrafi już obsłużyć znaczną większość urządzeń dostępnych na rynku, odpowiedź na tak postawione pytanie nie zawsze jest prosta i wymaga czasem długotrwałych testów. Jest to szczególnie ważne w przypadku komputerów przenośnych, z którymi Linux ciągle ma problemy. W celu ułatwienia przyszłym użytkownikom Auroksa wyboru komputera bezproblemowo współpracującego z tym systemem powstał program Aurox Recommended Hardware. Ma on polegać na przeprowadzeniu dokładnych testów na współpracę Auroksa z udostępnionym sprzętem, ewentualne dostosowanie systemu do konfiguracji oraz monitorowanie współdziałania z kolejnymi wydaniami Auroksa. Szczegółowe raporty z testów oraz spis sprzętu objętego programem będzie dostępny na stronie http://www.aurox.org/. Do program Recommended Hardware można zgłaszać nie tylko gotowe zestawy komputerowe, ale również taki sprzęt, jak drukarki, skanery, karty rozszerzeń oraz inne peryferia. Szczegółowe informacje można otrzymać pisząc na aurox@aurox.org.

News
Nowości w Auroksie W ostatnim czasie nastąpiły w Auroksie poważne zmiany. Z Aurox Core Team odszedł Jarek Górny. W imieniu ACT chcielibyśmy podziękować mu za wspaniałą atmosferę i stworzenie warunków do powstania zgranego zespołu. Po zamknięciu Auroksa 10.1 pojawiło się wiele pytań o kształt dystrybucji i jej model rozwoju. Zgodnie z przyjętym planem, cykl rozwoju dystrybucji wydłuży się do 4-5 miesięcy, co pozwoli jeszcze dokładniej przetestować dystrybucję i znacznie zminimalizować liczbę błędów. W dalszym ciągu będą jednak wychodziły 4 wydania Auroksa w roku, co oznacza, że przez pewien okres rozwijane będą dwie wersje Auroksa jednocześnie. Aurox w pudełku Niedługo również pojawi się w sprzedaży Aurox w wersji pudełkowej. Będzie dostępny na DVD razem z 16-stronicową instrukcją. Płyta DVD będzie zawierała dodatki dostępne dotychczas tylko na piątej płycie wersji dołączanej do polskiego wydania pisma Linux+ Extra!. Równolegle pojawi się też Aurox preinstalowany na gotowych zestawach komputerowych. Pytajcie sprzedawców o pudełka lub komputery z Auroksem! Po więcej informacji zapraszamy na http://www.aurox.org/. Aurox Security Team Zapoczątkowana pewien czas temu współpraca z Linux Academy (http://www.linuxacademy.pl/ ) doprowadziła do powstania Aurox Security Team (http:// www.auroxsec.org/ ), czyli zespołu, który będzie na bieżąco śledził wszelkie krytyczne błędy i dbał o wypuszczanie poprawionych wersji pakietów. Wszelkie błędy związane z bezpieczeństwem można już teraz zgłaszać na http://bugs.aurox.org/ w dziale Security. Ćwiczenia z Auroksem Nakładem Wydawnictwa MIKOM ukazał się podręcznik “Ćwiczenia z... Aurox Linux”. Podręcznik bazuje na Auroksie 9.4 i na około 100 stronach ilustrowanych zrzutkami omawia instalację, konfigurację i używanie systemu oraz Internetu. http://www.mikom.pl/

AmaroK w Auroksie

Z

godnie z życzeniami użytkowników w dystrybucji pojawi się pakiet odtwarzaczem dźwięku AmaroK. Łączy on w sobie przyjazny interfejs aplikacji typu WinAMP czy XMMS z łatwością manipulowania listami odtwarzania w takich programach, jak JuK. AmaroK idzie jednak o o krok dalej, prowadząc własną bazę danych odtwarzanej muzyki i rejestrując takie dane, jak ilość czy data ostatniego odsłuchania. Na podstawie tych informacji są generowane automatycznie listy odtwarzania ulubionych utworów, ostatnio słuchanych czy też niesłuchanych w ogóle. Oprócz tego, odtwarzacz potrafi wyszukać i ściągnąć nam okładkę albumu w celu łatwiejszej identyfikacji bogatej ko-

lekcji plików, a także nagrać cały album na CD za pośrednictwem K3b. Duże możliwości odtwarzacza biorą się w dużym stopniu z jego modularnej architektury. W obecnej wersji odtwarzacz posiada wtyczki do obsługi Arts (serwera dźwięku KDE), MAS (Media Application Server) czy GStreamera. Są też wtyczki do obsługi wizualizacji czy protokołów sieciowych. Warta wspomnienia jest zaawansowana obsługa tagów ID3 i możliwość ich zbiorowej edycji. Dzięki tym cechom AmaroK nadaje się doskonale nie tylko do odtwarzania muzyki, ale też do zarządzania kolekcją. http://amarok.kde.org/

AmaroK w Auroksie

www.lpmagazine.org

23

aktualności aktualności

gentoo

gentoo@lpmagazine.org

dział prowadzi: Witold Kieraś

News
Programiści Javy poszukiwani... Jeśli jesteś doświadczonym programistą Javy, znasz dobrze J2EE i jesteś użytkownikiem Gentoo, to wiedz, że twoja ulubiona dystrybucja cię potrzebuje. W związku z rosnącym zainteresowaniem aplikacjami w Javie (mającą prawdopodobnie związek z powstaniem środowiska Eclipse) i liczbą zgłaszanych błędów, Karl Trygve Kalleberg z Gentoo Java team zgłosił ogromne zapotrzebowanie na takich programistów i wezwał wszystkich chętnych do udzielenia pomocy grupie. http://www.gentoo.org/news/en/gwn/ 20041101-newsletter.xml ... i Haskella również W projekcie Gentoo również mile widziani są programiści dobrze znający język Haskell – język funkcyjny oparty na rachunku Lambda. http://www.gentoo.org/news/en/gwn/ 20041025-newsletter.xml KDE kawałek po kawałku Gdy wykonujemy polecenie emerge kde, to po kilku godzinach oczekiwań (w zależności od parametrów naszego komputera), otrzymujemy gotowe środowisko KDE z całym dobrodziejstwem inwentarza, tzn. również z całą masą aplikacji, które należą do projektu, a których nigdy nie zamierzalibyśmy użyć. Dan Armak, znudzony ciągłym dopytywaniem deweloperów Gentoo, czy nie dałoby się czegoś z tym zrobić, postanowił wziąć sprawy w swoje ręce. Przygotował zestaw nieoficjalnych ebuildów, pozwalających na instalację pojedynczych aplikacji będących częścią KDE – dzięki nim można np. wykonać polecenie emerge konqueror lub emerge kmail i cieszyć się najnowszą wersją tylko tych wybranych aplikacji. Gentoo Linux 2004.3 Zgodnie z kalendarzem wydawniczym, ukazała się niedawno nowa wersja dystrybucji Gentoo, sygnowana numerem 2004.3. To ostatnie wydanie z 2004 roku nie przynosi rewolucyjnych zmian. Deweloperzy Gentoo od dłuższego czasu skupiają się przede wszystkim na udoskonalaniu narzędzi systemowych i płyt instalacyjnych. Gentoo 2004.3 wydano dla architektur amd64, hppa, ppc, sparc, x86 oraz, po raz pierwszy, dla ppc64. Obrazy płyt instalacyjnych można znaleźć na oficjalnych serwerach lustrzanych dystrybucji oraz w sieci BitTorrent. http://www.gentoo.org/proj/en/releng/ release/2004.3/2004.3.xml

Gentoo na Linux World Expo

K

onferencja Linux World Expo, która miała miejsce niedawno w niemieckim Frankfurcie, to jedna z największych imprez linuksowych skupiających się na komercyjnych zastosowaniach systemu spod znaku pingwina. Odwiedziła ją niebagatelna liczba piętnastu tysięcy gości. Nie mogło zatem zabraknąć na niej przedstawicieli Gentoo. Nasza ulubiona dystrybucja, za sprawą niemieckiej organizacji non-profit Förderverein Gentoo e.V. (adres jej strony to: http://www.gentooev.org/ ), miała swoje stanowisko w pawilonie organizacji niekomercyjnych i projektów społecznościowych. Zaprezentowano m.in. Gentoo na różnych platformach – od x86 i PPC, aż po Ultra-Sparc czy Xeon. Najbardziej interesującą sprawą dla odwiedzających stoisko Gentoo było ewentualne wydanie czegoś w rodzaju edycji serwerowej czy też Enterprise Gentoo, która wyróżniałaby się stabilniejszą wersją drzewa Portage, wygodniejszą dla zastosowań produkcyjnych. Takie zapotrzebowanie nie może dziwić, biorąc pod uwagę profil imprezy.

Na konferencji nie zabrakło deweloperów Gentoo

Z okazji konferencji, deweloperzy przygotowali specjalne wydanie Gentoo LiveCD dla architektury x86, nazwane Fizzlewizzle, a z myślą o uczestnikach konferencji wzbogacone między innymi o niemiecką lokalizację KDE. Jest ono dostępne również w Internecie, wraz z przygotowaną do wydruku konferencyjną naklejką na płytę. http://download.iansview.com/gentoo/ exhibitions/lwe-frankfurt/2004/livecd/ http://www.gentoo.org/news/en/gwn/ 20041101-newsletter.xml

Portage 2.0.51

N

owa wersja Portage, programu najistotniejszego dla działania Gentoo, przynosi więcej nowości niż należałoby się tego spodziewać, wnioskując jedynie z nieznacznej zmiany numeru wersji. Po pierwsze, wprowadzono możliwość automatycznego przekompilowania wszystkich programów po wprowadzeniu zmian we flagach USE. Służy do tego opcja --newuse – jeśli zmieniliśmy flagi i chcemy, aby program Emerge znalazł i przekompilował wszystkie programy, które tego wymagają, to wystarczy wydać polecenie: emerge --newuse --update --deep world. Portage obsługuje teraz również sprawdzanie podpisów GPG zawartych w plikach Manifest. Dostępne są trzy poziomy bezpieczeństwa. Każdy można uaktywnić przy pomocy flagi zmiennej FEATURES w pliku /etc/make.conf. I tak, jeśli chcemy włączyć tę funkcję w najmniej restrykcyjnej wersji, to wystarczy dodać w pliku make.conf linijkę: FEATURES=”gpg” W tym wariancie Portage . sprawdzi jedynie poprawność podpisu cyfrowego. Dodanie linijki FEATURES=”gpg strict” zaostrzy reguły – program zareaguje również na wszelkie sytuacje po-

tencjalnie niebezpieczne, np. brak pliku Manifest. Najbardziej restrykcyjny wariant to FEATURES=”gpg severe strict” – Portage zaakceptuje tylko te pliki Manifest, które zostały podpisane kluczami uznanymi przez nas za bezpieczne. Wariant drugi wydaje się być rozsądnym wyborem – nie powoduje dodatkowych komplikacji (nie jest uciążliwy dla użytkownika), a jednocześnie chroni przed instalacją pakietów zmodyfikowanych przez włamywaczy na serwerze lustrzanym. W nowych plikach ebuild można teraz definiować testy poprawności kompilacji wykonywane przed zainstalowaniem programu w systemie. Aby uaktywnić tę funkcję, dodajemy w pliku /etc/make.conf w zmiennej FEATURES flagę maketest. Oprócz tego, poprawiła się wyraźnie efektywność wyszukiwania zależności w drzewie Portage. Jak twierdzą deweloperzy, w nowej wersji proces ten zabiera zaledwie jedną trzecią czasu, który potrzebny był dotychczas do wykonania tej czynności. Zachęcamy zatem do aktualizacji! http://www.gentoo.org/news/20041021portage51.xml

24

styczeń 2005

bezpieczeństwo

Bezpieczne łączenie się z Internetem
Piotr Machej

J

eśli ktoś jeszcze wierzy, że w dzisiejszych czasach jego komputer podłączony do Internetu nie jest zagrożony, to powinien natychmiast zdjąć różowe okulary. Korzystając z ogólnoświatowej pajęczyny, nie jesteśmy samotni – wraz z nami jest tam wiele osób o bardzo różnych charakterach i potrzebach. Dlatego warto podjąć środki ostrożności. Pozwoli nam to żeglować po Internecie ze spokojem, że nasze dane nie są łatwe do wykradzenia lub zniszczenia.

Rysunek 1. Na stronach serwisu SANS możemy znaleźć obszerne wskazówki dotyczące wykrywania intruzów

Planowanie zabezpieczeń

Na płycie CD/DVD znajduje się oprogramowanie omawiane w artykule.

Na płycie CD/DVD

Absolutnie nie powinniśmy podłączać do Internetu komputera, który nie został jeszcze zabezpieczony. Może wydawać się nam, że jeśli podłączymy się tylko na chwilkę, to nic się nie stanie. Jest to jednak bardzo złudne wrażenie. Włamywacze bardzo często automatyzują swoją pracę, uruchamiając skrypty okresowo sprawdzające adresy sieciowe komputerów. Poszukują w ten sposób maszyn wrażliwych na znane im metody ataków (np. posiadających bardzo proste hasła). Może zdarzyć się, że nasz system zostanie spenetrowany już w minutę po zalogowaniu do sieci. Z tego powodu jak najwięcej czynności zabezpieczających powinniśmy dokonać jeszcze przed skorzystaniem z Internetu. Zanim zabierzemy się za umacnianie zabezpieczeń, dobrze jest dokładnie zastanowić się, co chcemy osiągnąć. Czy chcemy zrobić z naszego komputera niezdobytą twierdzę? A może tylko chcemy ochronić nasze zdjęcia z igraszek na łonie natury? Istotne jest też, czy będziemy chcieli udostępniać jakieś zasoby innym użytkownikom Internetu. Jeśli komputer będzie przeznaczony dla wielu anonimowych użytkowników (np. jako anonimowy serwer FTP), to zastosujemy inne zabezpieczenia niż wtedy, gdy do komputera będziemy chcieli mieć dostęp tylko my, razem z wybranymi kolegami.

Dobre określenie naszych celów i potrzeb pozwoli nam lepiej wykorzystać zawarte w tym artykule informacje. Mając ciągle na myśli nasz cel, z łatwością wybierzemy zabezpieczenia, które musimy zastosować, i pominiemy te, z których możemy (lub nawet powinniśmy) zrezygnować.

Wykorzystywane usługi

Generalna zasada mówi, aby uruchamiać tylko niezbędne usługi. Tak naprawdę powinniśmy posunąć się nieco dalej i w ogóle nie instalować niepotrzebnego oprogramowania. Praktycznie każda z dystrybucji podczas instalacji pozwala nam na wybór pojedynczych pakietów, z których chcemy korzystać. Warto poświęcić trochę czasu na lekturę opisów poszczególnych pakietów i wybranie tylko tych, które na pewno nam będą potrzebne. Zysk z takiego postępowania jest podwójny. Po pierwsze, oszczędzamy miejsce na dysku. Po drugie, zmniejszamy liczbę zainstalowanego oprogramowania. Dzięki temu łatwiej nam będzie kontrolować zmiany w systemie, a w dodatku możemy uniknąć instalacji programów znanych z problemów z bezpieczeństwem. Warto zastanowić się nad tym, który program wykorzystamy do realizacji konkretnego celu. Przykładowo, jeśli jest nam potrzebny serwer

26

styczeń 2005

bezpieczny internet

bezpieczeństwo

pocztowy, możemy zainstalować Sendmaila (dosyć topornego w konfiguracji i mającego w przeszłości sporo problemów z bezpieczeństwem) lub szybkiego i łatwego w konfiguracji (a przy tym bezpiecznego) Postfiksa. Również w przypadku pozostałego oprogramowania mamy różne alternatywy, nawet jeśli niekoniecznie są one dołączone do dystrybucji. Im bardziej zależy nam na bezpieczeństwie naszego systemu, tym więcej wysiłku powinniśmy włożyć w zainstalowanie bezpiecznych aplikacji.

Hasła użytkowników

Uruchamianie usług
Jak już powiedziałem, powinniśmy uruchamiać tylko niezbędne usługi. Ale skoro zbędnych nawet nie zainstalowaliśmy, to o co chodzi? Otóż może zdarzyć się, że nie ze wszystkich usług będziemy korzystać bez przerwy. Opiszę tu znany mi przykład. Mamy komputer, który kiedyś był podłączony do Internetu za pośrednictwem sieci lokalnej, w której działały również komputery z systemem Windows. Do współdzielenia plików była wykorzystywana na tym komputerze Samba. Po jakimś czasie komputer został odłączony od sieci lokalnej i przyłączony do Internetu bezpośrednio. Samba pozostała zainstalowana, gdyż przydaje się do współdzielenia plików z systemem Windows 98, uruchamianym pod kontrolą VMWare. Ponieważ ta funkcjonalność jest wykorzystywana okazjonalnie (raz na tydzień lub rzadziej), więc nie ma uzasadnienia dla uruchamiania Samby przy starcie systemu. Dlatego też tego typu usługi powinny być wyłączone. Uruchamiamy je tylko wtedy, gdy są nam potrzebne. Sposób wybrania usług, które mają być uruchamiane przy starcie, zależy od dystrybucji. W przypadku dystrybucji pochodzących od Red Hat (na przykład Fedora i Aurox) należy usunąć lub dodać odpowiednie łącza symboliczne w katalogu /etc/rc.d/. W innych dystrybucjach nazwa katalogu może być inna. Można również wykorzystać do tego celu narzędzie ntsysv. Z kolei usługi uruchamiane przez superserwer Xinetd można wyłączyć zmieniając opcję disable w plikach umieszczonych w katalogu /etc/xinetd.d/. Wyniki naszych działań można obserwować wpisując polecenie netstat -nlutp. Wyświetli ono wszystkie porty TCP i UDP, na których nasłuchują jakieś programy. Oprócz tego, poznamy nazwy tych programów.

Oglądaliście film Hakerzy (Hackers)? Pomimo całej jego naiwności, było w nim trochę prawdy. Szczególnie w jednym miejscu, gdy pada pytanie o najpopularniejsze hasła wykorzystywane przez użytkowników komputerów. Odpowiedzią były: love, secret, sex i god. I taka jest prawda – wiele osób lekceważy znaczenie haseł i wybiera pierwsze z brzegu. No bo przecież, kto się domyśli, że wybrałem hasło misiek ? A przynajmniej łatwo mi je będzie zapamiętać. I rzeczywiście. Ale równie łatwo przyjdzie je odgadnąć włamywaczowi. Zakładając proste hasło ułatwiamy mu życie. Nie musi się męczyć z wyszukiwaniem luk w naszym systemie i analizowaniu sposobów włamania do niego. Po prostu uruchamia program sprawdzający po kolei hasła ze słownika i idzie sobie na herbatę. A gdy wróci, nasz komputer nie ma już dla niego tajemnic. Ustawiajmy więc hasła trudne do odgadnięcia, ale nadal łatwe do zapamiętania. Warto też samemu stosować różne programy do łamania haseł – właśnie w celu sprawdzenia, na ile nasze hasła są trudne do złamania. Reguły te dotyczą nie tylko haseł do kont na naszym komputerze. Każdy z użytkowników powinien w ten sposób traktować również inne hasła – do skrzynki pocztowej, do portalu internetowego czy jakiejś gry sieciowej. Pamiętajmy też o tym, aby nigdzie (podkreślam – nigdzie!) nie używać takiego samego hasła, jakie broni dostępu do konta użytkownika root. Co do innych haseł, to często trudno uniknąć ich dublowania – choćby ze względu na ograniczenia naszej pamięci. Należy jednak podchodzić do tego z rozwagą. Jaki bowiem jest sens zakładania mocnego hasła na nasze konto, jeśli używamy go również w kilku serwisach internetowych, gdzie jest ono przechowywane otwartym tekstem? To prawdziwe zaproszenie dla włamywacza. Oczywiście, jeśli nie mamy uruchomionego serwera SSH, FTP czy Telnet (o tym ostatnim lepiej zapomnieć – nie instalujemy go i nie uruchamiamy), to intruz próbujący dostać się do nas z Internetu niewiele skorzysta z naszego hasła. Lepiej być przezornym – może kiedyś uruchomimy serwer, albo zaprosimy do siebie znajomego. Warto mieć wtedy mocne, trudne do złamania hasła.

Rysunek 2. Część z tych nasłuchujących usług z pewnością można wyłączyć

ni użytkownicy, warto zabezpieczyć się dodatkowo. Po pierwsze, powinniśmy odpowiednio skonfigurować zaporę sieciową, aby można było logować się tylko z określonych komputerów. Nie zawsze jest to możliwe (szczególnie, jeśli dużo podróżujemy i logujemy się z różnych miejsc). Po drugie, możemy w ogóle uniemożliwić włamywaczom atak na hasła. Jest to możliwe dzięki temu, że SSH pozwala na autoryzację za pomocą pary kluczy. Jeśli każdy z użytkowników mających dostęp do naszego komputera będzie dobrze pilnował swojego klucza prywatnego, a klucze publiczne będą umieszczone u nas, to spokojnie możemy wyłączyć obsługę zwykłych haseł. Dokonujemy tego wstawiając w pliku /etc/ssh/sshd_config linię o treści:
PasswordAuthentication no

Po zrestartowaniu serwera SSH użytkownik próbujący zalogować się bez odpowiedniego klucza powinien zobaczyć komunikat: Permission denied (publickey,keyboardinteractive). Należy więc uważać, aby przypadkiem nie odciąć sobie dostępu do serwera stojącego na drugim końcu kraju. W ten sam sposób możemy sami łączyć się ze zdalnymi serwerami – zamiast wykorzystywać hasła (choćby przesyłane przez SSH), korzystajmy z pary kluczy. Najpierw musimy je wygenerować. Zaczynamy od wydania polecenia:
ssh-keygen -t rsa

Bez haseł w SSH
Jeśli mamy uruchomiony serwer SSH, do którego powinni mieć dostęp tylko wybra-

Zostaniemy zapytani o nazwę pliku, w którym ma być umieszczony klucz prywatny, a następnie o hasło. Tak, o hasło. Z zaletami i wadami wprowadzenia tu hasła możemy zapoznać się w ramce Klucze z hasłem czy bez? – na tej podstawie zdecydujemy, czy wciśniemy tu klawisz [Enter], czy też jednak wpiszemy hasło. W wyniku powinniśmy uzyskać dwa pliki. Pierwszy z nich (domyślnie ~/.ssh/id_rsa) to klucz pry-

www.lpmagazine.org

27

bezpieczeństwo

cat id_rsa.pub >> .ssh/authorized_keys chmod 600 authorized_keys

Testowanie haseł

Należy upewnić się jeszcze, czy na zdalnym serwerze jest włączona obsługa kluczy i że wykorzystywany jest właśnie ten plik ze spisem kluczy. W pliku /etc/ssh/sshd_config powinny znajdować się następujące linie:
Rysunek 3. John the Ripper to tylko jeden z wielu programów umożliwiających testowanie siły haseł
PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys

watny, którego należy strzec niczym oka w głowie. Nikt poza nami nie powinien mieć prawa do jego odczytu, a najlepiej, jeśli przechowywać go będziemy tylko na zabezpieczonej dyskietce. Drugi plik (domyślnie ~/.ssh/id_rsa.pub) to klucz publiczny, którego nie musimy chronić – każdy może mieć do niego dostęp. Teraz czas skopiować klucz publiczny na nasze konto na zdalnym serwerze. Gdy to zrobimy, logujemy się na to konto. Musimy upewnić się, że mamy tam katalog ~/.ssh/. Jeśli nie, tworzymy go poleceniami:
mkdir .ssh/ chmod 700 .ssh/

Teraz już możemy opuścić to konto (exit) i spróbować zalogować się ponownie. Tym razem powinien powitać nas napis: Enter passphrase for key z podaną ścieżką do klucza prywatnego. Po wpisaniu hasła, jakiego użyliśmy przy tworzeniu klucza, zostaniemy zalogowani na nasze konto. Oczywiście, jeśli zdecydowaliśmy się nie chronić naszego klucza hasłem, to zostaniemy zalogowani bez pytania. Gdy kiedyś zdecydujemy się zmienić hasło do naszego klucza prywatnego, możemy to zrobić poleceniem ssh-keygen -c -f .ssh/id_rsa.

Teraz pozostaje nam dodać klucz publiczny do spisu kluczy, które mogą być wykorzystywane do łączenia się z tym kontem:

Kontrola integralności systemu

Zbędne usługi

Jeśli mamy wątpliwości, które usługi powinny być wyłączone, zapoznajmy się z poniższym spisem: chargen, chargenudp, daytime, daytime-udp, echo, echoudp, finger, imap, imaps, innd, ipop2, ipop3, named, netfs, ntalk, ntpd, pop3s, swat, talk, time, time-udp. Zawiera on te usługi, których nie powinniśmy włączać, jeśli nie są nam absolutnie potrzebne. Nie jest to spis kompletny – oprócz podanych usług, możemy mieć zainstalowane inne programy, których nie powinniśmy włączać bez potrzeby, jak choćby różne serwery FTP (wu-ftpd, vsftpd) czy wszelkie usługi typu rsh, rexec, rcp, rlogin i inne z grupy usług o nazwach zaczynających się literą r (możemy je spokojnie zastąpić programem ssh). Jeśli zaszłaby konieczność włączenia jednej z wymienionych usług, w miarę możliwości powinniśmy wybierać wersję bezpieczniejszą. Przykładowo, zamiast imap powinniśmy wybrać szyfrowaną wersję imaps, a zamiast ipop3 – pop3s.

Pomimo wszelkich zabezpieczeń, jakie mogliśmy stworzyć, szczególnie zdesperowany intruz, prędzej czy później, jest w stanie dostać się do naszej twierdzy. Musimy być świadomi, że jedyną w miarę skuteczną formą ochrony naszego komputera jest odłączenie go od sieci i wstawienie do szafy pancernej. Jeśli jednak chcemy, aby nasz komputer był podłączony do Internetu, to musimy liczyć się z ewentualnym włamaniem. W takim przypadku najważniejsze jest, abyśmy się o tym dowiedzieli. Ponieważ intruz zazwyczaj będzie próbował ukryć swoją obecność w systemie, a następnie uzyskać jak najwięcej informacji, prędzej lub później spróbuje podmienić jakiś kluczowy plik systemowy. Może tego dokonać na przykład w celu wykradzenia hasła. Jednym z najlepszych sposobów na wykrycie podobnych działań jest kontrolowanie integralności systemu. Polega to na tym, że (zaraz po instalacji systemu) tworzymy bazę zawierającą informacje o istotnych plikach w systemie. Bazę tą przechowujemy w miejscu niedostępnym dla włamywacza (np. na płycie CD). Później pozostaje nam okresowo kontrolować zgodność plików ze stanem

W większości nowszych dystrybucji podczas wprowadzania hasła jest przeprowadzana jego wstępna kontrola (np. z wykorzystaniem systemu PAM), ale czasami system ogranicza się tylko do sugestii, że wprowadzane hasło nie spełnia odpowiednich norm (np. jest za krótkie lub zbyt oczywiste). Tak czy inaczej, jest to tylko wstępne rozpoznanie. Aby się przekonać, czy na pewno w naszym systemie hasła są trudne do złamania, musimy skorzystać z innych narzędzi – łamaczy haseł. Jednym z takich programów jest John the Ripper. Możemy go pobrać ze strony http://www.openwall.com/john/. Po jego zainstalowaniu (zgodnie ze wskazówkami umieszczonymi w pliku doc/INSTALL) wykonujemy kopię pliku /etc/shadow i umieszczamy ją w jakimś bezpiecznym katalogu (pamiętajmy, aby przypadkiem nie udostępnić tego pliku niepowołanym osobom). Teraz wystarczy uruchomić polecenie john shadow (zakładając, że kopia pliku /etc/shadow znajduje się w bieżącym katalogu). Jeśli programowi uda się odgadnąć hasło, wyświetli je na ekranie wraz z nazwą użytkownika. Ponieważ obliczenia mogą trwać bardzo długo, warto czasem wcisnąć dowolny klawisz w celu sprawdzenia, czy program nadal działa – zostanie wyświetlony jego status. W dowolnej chwili możemy przerwać jego pracę kombinacją [Ctrl]+[c], a następnie wznowić poleceniem john -restore. Odgadnięte hasła, oprócz wyświetlenia na ekranie, są zapisywane w pliku john.pot, umieszczonym w katalogu, gdzie znajduje się program john. Możemy je wyświetlić poleceniem john -show shadow (gdzie shadow wskazuje na naszą kopię pliku /etc/shadow). Jeśli chcemy zwiększyć szanse na wykrycie słabych haseł, powinniśmy pobrać z sieci pliki ze słownikami. Przykładowy plik z listą słów w różnych językach jest do pobrania ze strony domowej John the Ripper, a jego znacznie rozszerzoną wersję można zamówić za odpowiednią opłatą. Inne zestawy haseł można znaleźć pod adresem ftp://ftp.ox.ac.uk/pub/ wordlists/. Możemy je później wykorzystać wydając polecenie john -w = words.lst shadow, gdzie world.lst jest pobranym plikiem ze słownikiem. Warto też zapoznać się z plikiem doc/ EXAMPLES, gdzie podane są inne ciekawe sposoby wywołania programu John the Ripper.

zapisanym w bazie. Oczywiście, jeśli sami dokonamy zmian w plikach (na przykład ze względu na aktualizację oprogramowa-

28

styczeń 2005

bezpieczny internet

bezpieczeństwo

Klucze z hasłem czy bez?

Podczas tworzenia kluczy musimy zdecydować, czy nasz klucz prywatny będzie chroniony hasłem, czy nie. Można się zastanawiać, co się zyskuje, zamieniając jedno hasło (do systemu) na drugie (do klucza). Już odpowiadam – bardzo dużo. Przede wszystkim, ewentualny włamywacz musiałby zdobyć zarówno nasze hasło, jak i klucz prywatny, co znacznie utrudnia mu zadanie. Tym bardziej, że hasło chroniące klucz nie jest przesyłane przez sieć. W dodatku, możemy wykorzystać ten sam klucz do łączenia się z wieloma serwerami – a więc możemy korzystać w tym przypadku z jednego hasła. A jeśli jednak zdecydujemy się na stworzenie klucza bez hasła? Możemy tak zrobić, ale wtedy musimy jeszcze bardziej chronić nasz klucz prywatny. Jeśli komuś uda się uzyskać do niego dostęp, to będzie mógł połączyć się bez problemów wszędzie tam, gdzie z tego klucza korzystaliśmy. Dlatego jeśli tylko do naszego komputera ma dostęp więcej osób, to lepiej założyć hasło, a w każdym razie zdawać sobie sprawę z niebezpieczeństwa.

ustawienia domyślne powinny wystarczyć, lecz w razie potrzeby można je zmodyfikować. Plik konfiguracyjny posiada dosyć obszerne i czytelne komentarze.

Wykrywanie zmian w plikach
W celu sprawdzenia, czy nie nastąpiły zmiany w plikach systemowych, uruchomiamy polecenie /usr/bin/afick.pl -k (lub /usr/bin/afick.pl --compare). Spowoduje to ponowne przeanalizowanie wszystkich plików i porównanie informacji o nich z zawartymi w bazie. Ewentualne różnice zostaną wyświetlone na ekranie. Oczywiście, możemy tego dokonać również w interfejsie graficznym (wciskając przycisk compare) lub w module Webmina (w sekcji run Afick, zaznaczając w polu action wartość compare i wciskając przycisk Run Afick). W przypadku wykrycia zmian w plikach, nie powinniśmy od razu panikować. Najpierw upewnijmy się, czy sami nie dokonaliśmy zmian (mogliśmy zapomnieć uaktualnić bazę). Może okazać się również, że przechowujemy w bazie informacje o plikach zmieniających się dosyć często, a niezbyt istotnych – w takim przypadku należy poprawić konfigurację i ponownie zainicjalizować bazę poleceniem /usr/bin/afick.pl -i (init w przypadku interfejsu graficznego i modułu Webmina). Jeśli zamierzamy wprowadzić zmiany w systemie plików (np. uaktualnić oprogramowanie), powinniśmy najpierw upewnić się, że pliki są nienaruszone. Następnie możemy dokonać niezbędnych zmian, a później zaktualizować bazę poleceniem /usr/bin/afick.pl -u (update w przypadku interfejsu graficznego i modułu Webmina). Polecenie to wyświetli nam wprowadzone zmiany, a w bazie umieści informację o nowych plikach. Jeśli chcemy dokładnie wiedzieć, jakie zmiany zaszły podczas instalacji oprogramowania, to należy uruchomić polecenie update zarówno przed, jak i po instalacji.

np. specjalnie przygotowanej dystrybucji uruchamianej z płyty CD. Dzięki temu możemy mieć pewność, że włamywacz nie mógł zmodyfikować naszego programu, ani żadnej części systemu, od której on zależy. Musimy zdawać sobie sprawę z tego, że Afick i jemu podobne programy nie uchronią nas przed włamaniem do systemu. Ich zadaniem jest jedynie dać nam znać, że włamanie miało miejsce. Nie należy w tej mierze polegać tylko na integralności systemu – należy również kontrolować dzienniki systemowe (logi), jak i uruchomione usługi. Warto też okresowo wykonywać kopię ważnych dla nas danych. Dzięki temu nie utracimy ich, ani z powodu jakiegoś wandala, ani też ze względu na przypadkową awarię sprzętu.

Zapora sieciowa

nia), to bazę musimy również uaktualnić. Jednym z programów pozwalających na kontrolowanie integralności systemu jest Afick (Another File Integrity Checker). Ponieważ nie jest on zazwyczaj dołączany do dystrybucji Linuksa, musimy go pobrać ze strony domowej (http: //afick.sourceforge.net/ ) lub z płyty dołączonej do pisma. Jego instalacja nie sprawia problemu, a w przypadku instalacji pakietu RPM od razu zostanie zainicjalizowana baza. Na stronie domowej projektu możemy pobrać interfejs graficzny, ułatwiający obsługę programu, a także spełniający to samo zadanie moduł do Webmina. Z tych dwóch możliwości osobiście polecam raczej moduł do Webmina – po instalacji dostępny jest w sekcji System pod nazwą Another File Integrity Checker.

Jednym z najważniejszych zabezpieczeń naszego komputera jest zapora sieciowa, zwana też ścianą ogniową (firewall). Jeśli prawidłowo ją skonfigurujemy, będzie chroniła porty naszego komputera przed intruzami, udostępniając je tylko wybranym osobom. Oczywiście, my będziemy mogli korzystać z Internetu bez ograniczeń. W przypadku aktualnych dystrybucji Linuksa, najczęściej do filtrowania pakietów jest wykorzystywany program IPTales. Z reguły najlepszą metodą tworzenia zapory sieciowej jest przyjęcie zasady, że blokujemy wszystkie pakiety z wyjątkiem tych, które rzeczywiście chcemy przepuścić. Zasada jest słuszna, lecz w niektórych przypadkach może nam sprawić nieco kłopotu. Wyobraźmy sobie przykładowo, że chcemy udostępniać użytkownikom Internetu serwer SSH, WWW, FTP, a w dodatku pragniemy dzielić się plikami z użyciem BitTorrenta. W takiej sytuacji może okazać się, że mniej wysiłku będzie nas kosztować stworzenie zapory, która będzie broniła dostępu tylko do wybranych portów

Konfiguracja Aficka
Główny plik konfiguracyjny programu Afick to plik /etc/afick.conf. Możemy w nim określić ścieżki do bazy danych, historii i archiwum. Oprócz tego, możemy ustawić inne opcje konfiguracyjne, jak również wykluczyć z magazynowania w bazie pliki o określonych końcówkach (lub przedrostkach) nazw. Plik ten zawiera również spis katalogów, o których informacje są zapisywane w bazie. W większości przypadków

Kilka uwag
Sprawdzanie integralności systemu nie ma większego sensu, jeśli włamywacz ma dostęp do konfiguracji i bazy danych. Warto plik konfiguracyjny i bazę przechowywać np. na płycie CD, uaktualniając ją w razie potrzeby. Optymalnym rozwiązaniem jest uruchamianie programu Afick z osobnego, bezpiecznego systemu operacyjnego,

Rysunek 4. Konfigurację Aficka możemy zmienić także z użyciem Webmina

www.lpmagazine.org

29

bezpieczeństwo

(np. poczty czy Samby). Należy pamiętać, że tak zbudowana zapora nie będzie w stanie zablokować możliwości łączenia się z naszym serwerem, jeśli zostanie na nim zainstalowana jakaś tylna furtka (backdoor). Wybór metody tworzenia zapory zależy więc tylko od naszych chęci i umiejętności. Podczas projektowania zapory pamiętajmy o tym, aby zablokować możliwość łączenia się z naszym komputerem z maszyn o adresach sieci lokalnej za pośrednictwem interfejsu łączącego nas z Internetem. Zapobiegnie to przynajmniej części prób ataków przez podszywanie (spoofing). Jeśli nie odpowiada nam ręczne wpisywanie regułek, możemy skorzystać z któregoś z interfejsów graficznych. Jednym z ciekawszych jest Firewall Builder, którego wersja 2.0.2 była niedawno opisywana w Linux+. Program ten można pobrać ze strony domowej projektu (http:// www.fwbuilder.org/ ) lub z płyty dołączonej do gazety.

Testowanie zapory
Po zbudowaniu zapory sieciowej najważniejsze jest jej dokładne przetestowanie. Niestety, IPTables nie obsługuje opcje -C, znanej z IPChains, pozwalającej na łatwe testowanie reguł. Musimy więc radzić sobie łącząc się z zaporą z różnych maszyn umieszczonych w Internecie i sieci lokalnej lub korzystając z innego oprogramowania. Przykładowe programy, które mogą okazać się bardzo pomocne przy testowaniu zapory, to HPing i Firewall Tester. O programie HPing można było niedawno przeczytać w Linux+, więc zapoznajmy się z drugim z programów. Firewall Tester to zestaw skryptów napisanych w Perlu, które można wykorzystywać nie tylko do testowania jakości zapory sieciowej, ale również systemów wykrywania włamań. Do działania Firewall Tester potrzebuje trzech modu-

łów dostępnych z CPAN: Net::RawIP, Net: :PcapUtils i NetPacket. Możemy je zainstalować poleceniem perl -MCPAN -e 'install Net::RawIP' (odpowiednio zmieniając nazwę modułu). Na komputerze, gdzie mamy zainstalowaną zaporę sieciową, należy uruchomić polecenie ./ftestd -i eth0 (gdzie eth0 to nazwa interfejsu łączącego nas z siecią). Spowoduje to uruchomienie sniffera nasłuchującego pakietów wysyłanych przez klienta. Klienta najlepiej uruchomić na komputerze znajdującym się bezpośrednio za zaporą sieciową – służy do tego polecenie ./ftest -f ftest.conf Najpierw jednak należy przy. gotować odpowiedni plik konfiguracyjny, w którym wskażemy, jakie testy mają być wykonywane. Przykładowy plik ftest.conf jest dosyć dobrze opisany, więc nie powinniśmy mieć problemów z dostosowaniem go do własnych potrzeb. Zwróćmy uwagę, że możemy korzystać zarówno z pojedynczych pakietów, np. 192.168.0.5: 1025:192.168.0.1:21:A:TCP:0, jak i z symulowania połączeń: connect=192.168.0.5: 1025:192.168.0.1:22:AP:TCP:0. Każdy test powinniśmy kończyć sygnałem zatrzymania: stop_signal=192.168.0.5:80: 192.168.0.1:1025:S:TCP:0. Ważne, aby ten ostatni pakiet na pewno przeszedł przez zaporę. W innym przypadku, jeśli na czas testów zmienialiśmy ustawienia TTL, to w przypadku przerwania działania skryptu przed otrzymaniem sygnału stop, będziemy musieli przywracać ustawienia ręcznie. Po zakończeniu testu należy skopiować pliki ftest.log z klienta i ftestd.log z serwera w jedno miejsce, a następnie wykonać polecenie ./freport ftest.log ftestd.log. W jego wyniku otrzymamy zestawienie pakietów, które przeszły lub zostały zablokowane przez zaporę sieciową. Podczas testowania zapory powinniśmy pamiętać, aby sprawdzić ją bardzo dokładnie. Jeśli w jakiejś regułce mamy zdefiniowany zakres adresów IP, to sprawdzamy zachowanie zapory zarówno dla adresów granicznych, jak i leżących wewnątrz i na zewnątrz zakresu. Warto przygotować sobie własne skrypty do testowania zapory, dzięki czemu nie będziemy musieli wciąż powtarzać wpisywania tych samych komend. Również wprowadzanie poprawek jest w takim przypadku łatwiejsze.

Rysunek 5. Afick wydaje się być godnym następcą sławnego Tripwire

Systemy wykrywania włamań

lizatory integralności systemu) pewną wielką wadę – dzięki niemu dowiadujemy się o ataku, który już doszedł do skutku. Cała sztuka polega na tym, aby wykryć atak jeszcze w czasie jego przeprowadzania i odpowiednio go zablokować. Jednym z najlepszych programów przeznaczonych do tego celu jest Snort. Program nasłuchuje na wskazanych interfejsach sieciowych, analizując pojawiające się tam pakiety. Analizowane są one pod kątem informacji istotnych dla bezpieczeństwa lub sprawnego funkcjonowania sieci. Dzięki skonfigurowaniu odpowiednich preprocesorów, możemy polecić Snortowi wyszukiwanie informacji o próbach skanowania portów, atakach związanych z błędną fragmentacją pakietów IP, czy próby ukrycia ataków poprzez zakodowanie adresów HTTP URI. Następnie pakiety są przekazywane do modułu, który porównuje je z regułami opisującymi różne znane metody ataków (tzw. sygnaturami ataków). Do nas należy wybranie sygnatur, które będą potrzebne w naszym systemie. Sam Snort nie potrafi określić, czy w naszej sieci połączenie na konkretny port jest legalne, czy też powinien je traktować jako próbę włamania – o tym my decydujemy podczas konfiguracji. Jeśli zostanie wykryty atak, Snort może zareagować na wiele różnych sposobów. Oprócz powiadomienia administratora i zapisania informacji o ataku, może również podjąć środki zaradcze, np. przerywając połączenie z komputerem potencjalnego włamywacza, a nawet odpowiednio zmieniając zaporę sieciową. Z takim zabezpieczaniem należy uważać, gdyż może to doprowadzić do tego, że intruz zdezorganizuje naszą pracę symulując przeprowadzanie ataków z sieci, na których nam zależy. Można to oczywiście obejść odpowiednio modyfikując nasze skrypty. Generalnie Snort nie jest może zbyt łatwy w konfiguracji, ale jeśli sobie z tym poradzimy, to uzyskamy narzędzie porównywalne z produktami komercyjnymi. Dzięki niemu nie tylko będziemy mogli wykrywać ataki, ale również dowiadywać się o innych problemach w naszej sieci, np. związanych z błędami w oprogramowaniu.

Instalacja i obsługa Snorta
Program Snort możemy pobrać ze strony domowej projektu (http://www.snort.org/ ),

Zapoznaliśmy się już z programem Afick, ale posiada on (podobnie jak inne ana-

30

styczeń 2005

bezpieczny internet

bezpieczeństwo

Rysunek 6. Snort jest wciąż rozwijany, a na jego stronie można znaleźć obszerną dokumentację

gdzie dostępne są nie tylko źródła, ale i pakiety binarne (RPM). Można też skorzystać z pakietów dostępnych w różnych repozytoriach (np. DAG – http:// dag.wieers.com/packages/snort/ ). Przed uruchomieniem warto sprawdzić, czy Snort będzie oczekiwał na połączenia na właściwym interfejsie. Informacja ta umieszczona jest w pliku /etc/sysconfig/ snort w linii INTERFACE="eth0" Jeśli do . łączenia z siecią wykorzystujemy inny interfejs, należy poprawić tą wartość. Warto też sprawdzić konfigurację zawartą w pliku /etc/snort/snort.conf. Później już możemy uruchomić Snorta poleceniem /etc/rc.d/init.d/snortd start. Jeśli teraz popatrzymy do pliku /var/ log/messages, od razu zobaczymy znaczny przyrost liczby komunikatów. Oprócz tego, pojawi się katalog /var/log/snort/. Własnoręczna analiza tylu komunikatów nie ma sensu – lepiej skorzystać z gotowych narzędzi. Dostępne są one na stronie http://www.snort.org/dl/contrib/ wraz z innymi narzędziami przydatnymi w zarządzaniu Snortem.

Zasady korzystania z komputera

Jeśli naprawdę zależy nam na bezpiecznym korzystaniu z sieci, nie powinniśmy ograniczać się do jednorazowego zadbania o bezpieczeństwo. Każdego dnia pojawiają się komunikaty o wykryciu kolejnych błędów w oprogramowaniu. Część z tych błędów może mieć mniejsze lub większe znaczenie dla bezpieczeństwa. Jeśli nie zadbamy o uaktualnienia oprogramowania, cała nasza praca może pójść na marne. Czasem przez naszą pomyłkę, zaniedbanie lub nieświadomość możemy otworzyć włamywaczowi drogę do naszego systemu. Z tego powodu podczas codziennego korzystania z komputera powinniśmy stosować się do szeregu zaleceń:

• Z konta superużytkownika (root) korzystamy tylko w bardzo wyjątkowych okolicznościach. Nawet w przypadku instalacji oprogramowania ze źródeł, uprawnienia administratora uzyskujemy tylko na czas potrzebny do uruchomienia polecenia make install . • Regularnie uaktualniamy system, instalując poprawione wersje oprogramowania (w tym również jądra). Łączy się to ze śledzeniem serwisów dotyczących bezpieczeństwa, jak również stron domowych programów zainstalowanych na naszym dysku. Jeśli dla naszej dystrybucji dostępne są serwery z aktualizacjami, to powinniśmy z nich skorzystać. • Nigdy nie instalujemy oprogramowania pochodzącego z nieznanego źródła. Mam tu na myśli przygodnych znajomych spotkanych na IRC, czy serwery z oprogramowaniem, o którym niewiele lub nic nie wiemy. Nie znaczy to, że pobierając pliki z bardzo popularnych serwisów jesteśmy całkiem bezpieczni – zdarzały się już przypadki podrzucenia na takie serwery oprogramowania z koniami trojańskimi. • Przy instalowaniu programów powinniśmy w miarę możliwości sprawdzać podpisy PGP oraz sumy MD5 pobranych plików. Pozwoli to upewnić się, że oprogramowanie otrzymaliśmy w takiej postaci, w jakiej zamierzyli to autorzy. • Zawsze stosujemy hasła trudne do złamania. Staramy się unikać przesyłania haseł kanałami niekodowanymi (np. w przypadku korzystania z poczty należy używać szyfrowania SSL). Jeśli nie mamy możliwości przesyłania hasła w postaci zakodowanej, to należy zadbać, aby było ono unikalne (nie powinniśmy go wykorzystywać nigdzie indziej). Dzięki temu w razie jego przechwycenia przez włamywacza, narażona będzie tylko jedna usługa (np. zdalna poczta), a nie cały system. • Regularnie przeglądamy logi systemowe – samodzielnie lub z pomocą analizatorów logów, wysyłających powiadomienia pocztą elektroniczną. • Wykonujemy kopie zapasowe istotnych danych. Najlepiej wykonywać je na płytach CD, lecz w razie braku

nagrywarki powinniśmy kopie umieścić na innej partycji, dysku lub komputerze. • Nie udostępniamy komputera osobom, których nie znamy lub do których nie mamy zaufania. Dotyczy to nie tylko umożliwiania dostępu przez SSH czy FTP, ale także dostępu fizycznego. Nie wykonujemy też żadnych poleceń podanych nam przez takie osoby, jeśli nie jesteśmy absolutnie pewni, co dane polecenie robi.

Zakończenie

Większość prób włamań do naszych komputerów jest wynikiem działania tzw. script kiddies, czyli osób – z reguły dość młodych – używających gotowych rozwiązań. Korzystają oni zazwyczaj z tych samych źródeł informacji co my, zatem będąc na bieżąco mamy całkiem sporą szansę, że nie uda im się spenetrować naszego systemu. Dbajmy o nasz system, a wówczas będziemy mogli z czystym sumieniem wędrować po naszej globalnej sieci.

W Internecie:
• • • • • • Afick: http://afick.sourceforge.net/ Firewall Builder: http://www.fwbuilder.org/ HPing: http://wiki.hping.org/ Firewall Tester: http://ftester.sourceforge.net/ Snort: http://www.snort.org/ Lista dwudziestu najpoważniejszych zagrożeń dla bezpieczeństwa: http://www.sans.org/top20/ SANS: http://www.sans.org/ Secunia: http://secunia.com/ SecurityFocus: http://www.securityfocus.com/ CERT Coordination Center: http://www.cert.org/ LinuxToday: http://linuxtoday.com/ Artykuł o uwierzytelnianiu z wykorzystaniem kluczy w OpenSSH: http://www.securityfocus.com/ infocus/1810 / Serwis IPSec.pl: http://ipsec.pl/ Serwis Hacking.pl: http://hacking.pl/

• • • • • •

• •

www.lpmagazine.org

31

bezpieczeństwo

Odzyskiwanie danych – sposoby i przegląd narzędzi
Michał Niwicki

N

a pewno każdy z Was stanął lub stanie przed problemem odzyskania danych. Zazwyczaj w momencie, w którym uświadamiamy sobie, że straciliśmy istotne pliki, nie widzimy szansy na ich odratowanie i nie podejmujemy żadnych działań. Spotykamy się z dwiema sytuacjami. Pierwsza wiąże się z fizycznym uszkodzeniem nośnika danych (twardego dysku, dyskietki, płyty CD/DVD), co uniemożliwia nam prawidłowe odczytanie zawartości całego pliku. Druga to taka, w której umyślnie lub nieumyślnie skasowaliśmy z dysku potrzebny nam plik i chcemy go odzyskać. W obu przypadkach istnieją sposoby i narzędzia pozwalające na całkowite lub częściowe odzyskanie utraconych danych. W niniejszym artykule dokonamy przeglądu kilku popularnych aplikacji służących do odzyskiwania danych – uszkodzonych bądź usuniętych z naszego komputera.

Fizyczne uszkodzenie nośnika

Na płycie CD/DVD znajduje się oprogramowanie omawiane w artykule.

Na płycie CD/DVD

Zanim przejdziemy do omówienia sposobu odzyskania utraconych danych z uszkodzonego nośnika, wytłumaczymy najpierw, jak dochodzi do uszkodzenia nośnika i jaki ma to wpływ znajdujące się na nim dane. Tradycyjnie, wszystkie magnetyczne nośniki danych – dyskietki, twarde dyski, taśmy – mogą ulec częściowemu rozmagnesowaniu na skutek kontaktu z różnymi urządzeniami wytwarzającymi duże pole elektromagnetyczne (magnesy, bramki kontrolne na lotnisku, telefony komórkowe). W przypadku płyt CD/DVD najczęściej spo-

tykamy się z fizycznym uszkodzeniem jednej z optycznych warstw na skutek zarysowania. W obu sytuacjach, gdy dochodzi do utraty części (kilku lub kilkudziesięciu bajtów) pliku lub systemu plików, system komunikuje nam, że odczyt z urządzenia jest niemożliwy i zaprzestaje dalszych prób dostępu do danych. Spróbujmy zilustrować przykładem zaistniały problem. Posiadamy płytę, na której znajduje się dwugodzinny film w pliku o łącznej objętości 690 megabajtów. Na skutek fizycznego uszkodzenia (przypadkowe zarysowanie płyty) nie jest możliwy odczyt kilku ostatnich bajtów pliku, w efekcie czego program odtwarzający przerywa działanie przed najciekawszym fragmentem filmu. Wiemy lub domyślamy się, że uszkodzeniu uległo jedynie kilka sekund cennego nagrania, natomiast kilkanaście pozostałych minut nadal znajduje się na płycie. Stajemy przed problemem, jak zmusić program do odtworzenia tego, co znajduje się za uszkodzonym obszarem. Innymi słowy, chcemy, aby program nie przerywał działania w przypadku, w którym nie może odczytać zapisanych danych.

DD_rescue

Gdy próba przekopiowania uszkodzonego pliku standardową metodą nie skutkuje (tak dzieje się, gdy używamy standardowej komendy cp), z pomocą przychodzi nam program DD_rescue. Jego zasada działania jest prosta – próbuje odzyskać uszkodzone bajty pliku, a w przypadku, gdy nie może ich odczytać, nie przerywa swego działania, nie ucina uszkodzonego pliku i kontynuuje proces kopiowania.

32

styczeń 2005

narzędzia data recovery

bezpieczeństwo

W efekcie otrzymujemy lekko uszkodzony, ale już możliwy do odczytania plik, który nie różni się rozmiarem od oryginału, ale zawiera błędy w miejscu, w którym doszło do uszkodzenia nośnika, z którego kopiowaliśmy.

Praca z dd_rescue
Kopiowanie za pomocą dd_rescue jest proste. Wywołanie programu przybiera postać: dd_rescue [opcje] <plik_źródłowy> <plik_docelowy>.

ale od użytkownika nie jest wymagane podawanie żadnych dodatkowych opcji – wystarczy, że w linii poleceń wpiszemy: dd_rhelp <plik_źródłowy> <plik_docelowy> a skrypt domyślnie , odzyska (jeśli tylko mu się uda) wszelkie utracone dane.

Wybrane parametry DD_rescue:
• • • • • • • •
-w – przerywa kopiowanie jeśli

napotka na błędy
-r – kopiowanie wsteczne

(od końca pliku do początku)
-v – wyświetla pełną informację

Skasowane pliki – jak sobie z nimi radzić

o procesie kopiowania
-q – nie wyświetla żadnych

Jeśli w wyniku działania komendy dd_rescue plik_a plik_b program skopiuje pliki bez napotkania na błędy, powinien wyświetlić się komunikat podobny do poniższego:
dd_rescue: (info): plik_a (0.8k): EOF Summary for plik_a -> plik_b: dd_rescue: (info): ipos: 0.8k,S opos: 0.8k, xferd: 0.8k errs:0, errxfer: 0.0k, succxfer: 0.8k +curr.rate: 15kB/s, avg.rate: 15kB/s,S avg.load: 0.0%

Jeśli podczas procesu kopiowania przytrafią się błędy odczytu, pojawi się dodatkowa informacja dotycząca ilości uszkodzonych bajtów i miejsca ich występowania. Dodatkowe przydatne opcje programu to kopiowanie piku od określonej pozycji (w bajtach), kopiowanie zbioru danych od końca do początku, wyświetlanie pełnej informacji o procesie odczytywania i zapisywania przetwarzanych danych oraz określenie górnej granicy ilości błędów, po osiągnięciu której praca programu jest przerywana. Pewnym ułatwieniem w korzystaniu z programu DD_rescue jest skrypt napisany z BASH-u – DD_rhelp. Jego działanie opiera się na programie DD_rescue,

Zdarza się, że na skutek pomyłki lub celowego działania osób trzecich w wyniku operacji kasowania (plików lub partycji) straciliśmy część lub wszystkie nasze dane. Mogłoby się wydawać, że wszystko stracone, ale i na takie przypadki jest rada. W najlepszym razie może okazać się, że dane są w 100% odzyskiwalne, ale najczęściej spotkamy się z sytuacją, w której odzyskamy jedynie mniejszy lub większy procent skasowanych zbiorów. Paradoksalnie, to co wygląda bardzo groźnie, może okazać się łatwe w naprawie. Najczęstszym omawianym wyżej przypadkiem jest zamazanie tablicy partycji dysku twardego (tracimy wszystko) lub skasowanie pliku/plików komendą rm. Narzędzia, jakich można użyć w obu przypadkach, przedstawię poniżej.

komunikatów
-e x – przerywa działanie po

osiągnięciu x błędów
-s s – rozpoczyna kopiowanie pliku

od s bajta
-m m – kopiuje jedynie m bajtów -d – wykorzystuje bezpośredni

dostęp do urządzenia blokowego (z pominięciem pamięci cache)

wały się na nim przed zamazaniem tablicy partycji. Problem w tym, że takimi informacjami większość użytkowników nie dysponuje. Tu z pomocą przychodzi Gpart – narzędzie, którego działanie wydaje się być proste: program analizuje dane zapisane na dysku (jeszcze nie skasowane) i na ich podstawie próbuje odbudować tablicę partycji dysku.

Praca z narzędziem Gpart
Ponieważ po skasowaniu partycji nie mamy dostępu do żadnych danych, które się na dysku znajdują, nie możemy również uruchomić Gparta. W takiej sytuacji powinniśmy skorzystać z ratunkowej dystrybucji Linuksa – RIP. Po włożeniu do napędu CD/DVD bootowalnej płyty i ponownym uruchomieniu komputera, naszym oczom ukaże się ascetycznie wyglądające okno terminala. Po zalogowaniu się na konto administratora systemu (root) mamy do dyspozycji kilkadziesiąt programów służących do odzyskiwa-

Namierzanie partycji programem Gpart
Jeśli z pewnych powodów zamazaliśmy tablicę partycji dysku twardego (dzieje się tak przykładowo podczas nieuważnego dzielenia dysku na partycje), mimo że dysk wygląda tak, jakby nic na nim się nie znajdowało, nasze dane wciąż na nim są. Proces przywracania struktury dysku do pierwotnej postaci wymaga od użytkownika wiedzy na temat tego, jakiej wielkości i jakiego typu partycje znajdo-

R

E

K

L

A

M

A

www.lpmagazine.org

33

bezpieczeństwo

Listing 1: Wynik działania programu Gpart:
Primary partition(1) type: 131(0x83)(Linux ext2 filesystem) size: 101mb #s(208776) s(63-208838) chs: (0/1/1)-(207/2/57)d (0/1/1)-(207/2/57)r Primary partition(2) type: 130(0x82)(Linux swap or Solaris/x86) size: 1019mb #s(2088448) s(208845-2297292) chs: (207/3/1)-(1023/15/63)d (207/3/1)-(2279/0/61)r

w miejsce, z którego zostały usunięte (nie mylmy go zatem z katalogiem Śmietnik w niektórych popularnych menedżerach okien), lecz tworzy plik o nazwie unrm.recovered/unrm.inode#, w którym przy odrobinie szczęścia znajdziemy nasze skasowane dane.

Profilaktyka

nia i ratowania różnych systemów operacyjnych. Nas interesuje Gpart. Wydajemy polecenie gpart [opcje] urządzenie i czekamy na to, aż program przeanalizuje nasz nośnik danych pod względem struktury zapisanych na nim danych. Przykładowo:
# gpart /dev/hda

spowoduje, że narzędzie będzie analizowało dysk /dev/hda. Po pewnym czasie (może trwać to nawet kilkanaście minut – w zależności od tego jakiej wielkości posiadamy dysk) naszym oczom powinna ukazać się informacja podobna do tej z Listingu 1. Wynika z niej, że pierwsza partycja jest typu ext2 i ma rozmiary 101 MB, podczas gdy druga partycja jest najprawdopodobniej partycją wymiany (swap) o rozmiarach sięgających ponad 1 GB. Jeśli przedstawione informacje uważamy za prawdziwe, możemy zapisać na dysku nową tablicę partycji wydając polecenie:
# gpart -W /dev/hda /dev/hda

mogło, tragiczna w skutkach próba zmiany typu partycji z ext3 na swap zostanie prawidłowo zdiagnozowana przez Gparta i naprawiona. Mimo swojej niepozorności, Gpart jest potężnym narzędziem, które potrafi o wiele więcej niż opisaliśmy powyżej. Obsługuje większość znanych typów partycji – począwszy od ext2, ext3, xfs, fat, poprzez stosowane w systemie Windows ntf s i vfat, a skończywszy na partycjach LVM czy hpfs. Gpart jest wyposażony również w szereg dodatkowych użytecznych opcji, służących przykładowo do sporządzania kopii zapasowych sektora rozruchowego, a także do odzyskiwania danych z formatowanych partycji (tylko w niektórych okolicznościach)

Większości problemów opisanych w artykule można uniknąć. Dobrym nawykiem jest sporządzenie kopii zapasowej MBR (512 bajtów – mieści się na każdej dyskietce). Wystarczy w linii poleceń z uprawnieniami administratora systemu wydać komendę:
# dd if=/dev/hda of=mbr bs=512 count=1

Praca z programem unrm
Radziliśmy, jak uporać sobie z uszkodzonymi fizycznie nośnikami danych, z zamazanymi systemami plików, a teraz przyszła kolej na odzyskiwanie skasowanych plików. Pomocną aplikacją w takich sytuacjach jest unrm, przypominający nieco swoim działaniem program undelete, pracujący w systemie DOS. Jest to skrypt powłoki BASH, który na podstawie analizy i-węzłów potrafi przywrócić skasowane pliki. Jego działanie jest proste – wystarczy w wierszu poleceń wpisać z uprawnieniami administratora systemu komendę unrm /dev/hda, aby na ekranie pojawiła się lista plików możliwych do odzyskania. Aplikacją posiada wiele dodatkowych parametrów ułatwiających wyszukiwanie utraconych zbiorów. Możliwe jest odzyskiwanie danych należących do jakiegoś użytkownika (opcja -u), a także plików zawierających określony tekst (opcja -s). Podstawowym problemem, który pojawia się w przypadku skutecznego odzyskania pliku, jest jego zapis. Program unrm nie przywraca plików

W efekcie otrzymamy plik o nazwie mbr zawierający kopię naszego sektora rozruchowego. Powinniśmy także przyzwyczaić się do systematycznego okresowego sporządzania kopii zapasowej najważniejszych plików systemowych (tar -cjvf archiwum.tar.bz2 /etc) i katalogu użytkowników systemu (tar -cjvf archiwum.tar.bz2 /home). Wskazane jest również używanie systemu plików z księgowaniem (zastąpmy tradycyjny ext2 nowocześniejszym rozwiązaniem – ext3), aby w przypadku nagłego spadku napięcia nie trzeba było odzyskiwać bajta po bajcie.

Podsumowanie

Parametr /dev/hda podajemy dwa razy, gdyż pierwszy mówi nam, jaka jest struktura badanego dysku, a drugi zapisuje na wskazanym dysku tablicę partycji. Po ponownym uruchomieniu komputera możemy od nowa cieszyć się zawartością naszego dysku.

Więcej o Gpart
Jak zobaczyliśmy, w niektórych sytuacjach potrafi naprawić strukturę dysku, na którym po zamazaniu tablicy partycji utworzono nowe partycje (jeszcze nieformatowane). Dzieje się tak dlatego, że narzędzie to nie próbuje odzyskać zamazanej tablicy partycji, lecz na podstawie rozkładu danych na dysku (analizuje sektor po sektorze) stara się stworzyć tablicę partycji na nowo. W efekcie, wydawać by się

Utrata danych jest sytuacją, która może przytrafić się każdemu. Istnieje szereg narzędzi, za pomocą których możliwe jest odzyskanie skasowanych zbiorów. Należy również pamiętać, że i te narzędzia mogą zawieść i wtedy niezbędna stanie się kosztowna wizyta w specjalistycznym laboratorium. Najlepszym rozwiązaniem wydaje się zachowanie szczególnej ostrożności podczas kasowania plików i pracami związanymi ze zmianami w tablicy partycji.

W Internecie:
● Strona domowa DD_rescue: http://freshmeat.net/projects/ dd_rescue/ Strona projektu programu Gpart: http://www.stud.uni-hannover.de/ user/76201/gpart/

34

styczeń 2005

ZAMÓWIENIE PRENUMERATY
Prosimy wypełnić czytelnie i przesłać faksem na numer: (22) 860 17 71 lub listownie na adres: Software-Wydawnictwo Sp. z o.o., Lewartowskiego 6, 00-190 Warszawa, e-mail: pren@software.com.pl Przyjmujemy też zamówienia telefoniczne: (22) 860 17 67

Dane osoby / firmy zamawiającej Imię i nazwisko ID kontrahenta* Stanowisko

* jeżeli jesteś już klientem firmy Software-Wydawnictwo Sp. z o.o. – wystarczy, że podasz swój numer ID kontrahenta; jeżeli nie posiadasz takiego numeru, podaj swe dane teleadresowe

Upoważniam firmę Software-Wydawnictwo Sp. z o.o. do wystawienia faktury VAT bez podpisu odbiorcy

Pieczęć firmy i podpis Nazwa firmy Dokładny adres Telefon (wraz z numerem kierunkowym) Adres e-mail Faks (wraz z numerem kierunkowym) Numer NIP firmy

Tytuł Software 2.0 (1 płyta CD)
Miesięcznik profesjonalnych programistów

Ilość numerów w roku 12 6 12 12 4 8 6 6 6 6 6 4

Ilość zamawianych prenumerat

Od numeru pisma lub miesiąca

Opłata w zł z VAT 250/ 180* 150 / 135** 250/180* 270/198* 99 232/198** 150 445 135 135 140 119

Software 2.0 Extra! (od 1 do 4 płyt CD lub DVD)
Numery tematyczne dla programistów

Linux+ (2 płyty CD)

Miesięcznik o systemie Linux

Linux+DVD (2 płyty DVD)
Miesięcznik o systemie Linux

Linux w szkole (1 płyta CD)
Zastosowanie Linuksa w edukacji

Linux+Extra! (od 1 do 7 płyt CD lub DVD) PHP Solutions (1 płyta CD)

Numery specjalne z najpopularniejszymi dystrybucjami Linuksa Dwumiesięcznik o zastosowaniach języka PHP

PHP Solutions (1 płyta CD) - Prenumerata .PRO***
Dwumiesięcznik o zastosowaniach języka PHP

Hakin9 (1 płyta CD)

Dwumiesięcznik o bezpieczeństwie i hakingu

Programy dla Twojej firmy (1 płyta CD)

Oprogramowanie dla małych i średnich przedsiębiorstw

.psd (1 płyta CD + film instruktażowy na DVD)
Dwumiesięcznik użytkowników programu Adobe Photoshop

Aurox Linux (7 płyt CD)

Magazyn z najpopularniejszym polskim Linuksem

(liczba prenumerat x cena) * Cena prenumeraty rocznej dla osób prywatnych ** Cena prenumeraty rocznej dla osób prenumerujących już Software 2.0 lub Linux+ *** Wykupienie prenumeraty PHP Solutions w wersji .PRO za 445 złotych, upoważnia do zamieszczania na ostatnich stronach PHP Solutions ogłoszenia o wymiarach 5,4 na 2,7 cm (300 znaków) we wszystkich kolejnych numerach obejmujących prenumeratę (standardowo: 6 numerów).

W sumie

Jeżeli chcesz zapłacić katrą kredytową, wejdź na stronę naszego sklepu internetowego:

www.stock.com.pl
UWAGA: Nadesłanie zamówienia jest jednocześnie zobowiązaniem do zapłaty.

Linux+ 05/2004 (DVD, CD, bez CD)

Linux+ 06/2004 (DVD, CD, bez CD)

Linux+ 07/2004 (DVD, CD, bez CD)

Linux+ 10/2004 (DVD, CD, bez CD)

Linux+ 09/2004 (DVD, CD, bez CD)

Linux+ 08/2004 (DVD, CD, bez CD)

Prosimy o przesłanie kuponu pocztą lub faksem. Prosimy w odpowiednim polu zakreślić numery, które Państwo chcą zamówić.
żółte pola – 24 zł za Linux+
białe pola – 15 zł za Linux+

Numery archiwalne

niebieskie pola – 27.90 zł za Linux+ DVD

zielone pola – 16.50 zł za Linux+ DVD
czerwone pola – 9,90 zł za Linux+ bez CD

Linux+ 11/2004 (DVD, CD, bez CD)

1 2000 2001 2002 2003 2004 2004 2004

2

3

4

5

6

7

8

9

10

11

12

– rocznik 2001 (12 numerów) – 120 zł – rocznik 2002 (12 numerów) – 150 zł – rocznik 2003 (12 numerów) – 150 zł – rocznik 2004 (12 numerów) – 150 zł

Imię i nazwisko, nazwa firmy .............................................................................. Dokładny adres: .................................................................................................... .................................................................................................................................
L+ 1/2005

Wypełnia płatnik VAT. Oświadczam(y), że jestem(śmy) płatnikiem VAT
i upoważniam(y) Software-Wydawnictwo Sp. z o.o. do wystawienia faktury VAT bez podpisu odbiorcy.
pieczątka i podpis Software-Wydawnictwo Sp. z o.o. ul. Lewartowskiego 6, 00-190 Warszawa, Tel.: (22) 860 17 67

Linux+ 12/2004 (DVD, CD, bez CD)

wywiad

Wywiad z Przemysławem Tołpą, menedżerem sprzedaży firmy Adaptec
Krzysztof Krawczyk: Na początku prosiłbym, abyś krótko przedstawił się naszym Czytelnikom. Przemysław Tołpa: Jestem menedżerem sprzedaży w firmie Adaptec i jestem odpowiedzialny za rejon Europy Wschodniej i Bliskiego Wschodu, czyli także Polski i Czech. KK: Jaki jest wasz stosunek do systemu Linux oraz w ogólności do oprogramowania Open Source? PT: Dla firmy Adaptec system Linux jest bardzo ważny – większość produktów sieciowych i rozwiązań pamięci masowej firmy Adaptec jest wspierana na Linuksie. W wielu przypadkach sterowniki dla naszych produktów są już zawarte w jądrze systemu Linux. Zdajemy sobie sprawę z potrzeby funkcjonowania i dalszego rozwoju oprogramowania Linux jako systemu operacyjnego dla przedsiębiorstw. KK: Jakie wsparcie dla systemów linuksowych posiadają wasze produkty? PT: Praktycznie wszystkie produkty firmy Adaptec, zarówno sieciowe, jak i przeznaczone do pamięci masowych, włączając produkty ATA, Serial ATA, RAID, SCSI, iSCSI oraz TOE/NAC, posiadają wsparcie dla systemu Linux i w wielu przypadkach sterowniki do nich są zawarte w jądrze systemu Linux. Jedynie część produktów firmy Adaptec, tych przeznaczonych na podstawowy rynek konsumencki, oferujemy jedynie ze wsparciem dla systemu Windows oraz Mac. KK: Chciałbym jeszcze trochę skupić się na tym zagadnieniu. Jakiś czas temu kupiłem kontroler FireWire do swojego notebooka. Otrzymałem wraz z nim płytę CD z oprogramowaniem, ale nie znalazłem tam pakietów na Linuksa. PT: Użytkownicy Linuksa mają dostęp do sterownika OHCI. Jak można zobaczyć na stronach projektu Linux1394 pod adresem http://www.linux1394.org/ hcl.php?class_id=2, jest wiele produktów serii Adaptec FireWire, które współpracują z tym sterownikiem. KK: Zgadza się, ale użytkownik Linuksa mimo wszystko musi sam poszukać rozwiązania. A kto zajmuje się tworzeniem nowych wersji sterowników? Czy macie jakąś wydzieloną komórkę linuksową w ramach firmy? PT: Nasze wsparcie jest wymagane zarówno przez naszych klientów OEMowych, jak również nasze kanały dystrybucyjne. Mamy różne zespoły inżynierskie w różnych miejscach na świecie, skoncentrowanych wyłącznie lub częściowo na tworzeniu linuksowych sterowników dla kontrolerów Adapteca. Wiemy, że istnieje duże zapotrzebowanie na nie dla systemów SUSE i Red Hat. KK: Wróćmy do rozwiązań serwerowych. Jak wygląda wsparcie dla kontrolerów Serial ATA dla Linuksa? PT: Wszystkie kontrolery naszej firmy posiadają wsparcie dla systemu Linux. Pełna lista sterowników jest zamieszczona na naszej stronie internetowej: http:// www.adaptec.com/support/ lub http:// www.adaptec.pl/. Przykładowo, kontrolery Adaptec SATA dwu- i cztero-portowe, modele 1210SA oraz 2410SA, wspierają odpowiednio SUSE oraz Red Hat Linux. Również najnowsze kontrolery 8- i 16portowe współpracują z tymi systemami. Nowe sterowniki oraz najnowsze wersje jądra będą nadal zamieszczane na stronach internetowych w momencie, gdy będą ogólnie dostępne. KK: Czy jakieś wasze produkty wykorzystują Linuksa, tak jak przykładowo serwer NAS firmy Raidtec? PT: Używamy dostosowanej wersji systemu Linux w wielu urządzeniach

Przemysław Tołpa

pamięci masowej. Dla przykładu podam urządzenie pamięci masowej iSA 1500 iSCSI-to-SATA, w której została ona wykorzystana. KK: Z jakimi producentami systemów linuksowych współpracujecie? PT: Współpracujemy ze wszystkimi najważniejszymi dystrybutorami rozwijającymi system Linux na świecie, włączając Red Hat, SUSE, TurboLinux i wielu innych. KK: Jak oceniacie rynek klastrów linuksowych na świecie? Czy mogą one konkurować z dużymi superkomputerami i w jaki sposób? PT: Jesteśmy przekonani, że klastry oparte na oprogramowaniu Linux mają przed sobą znakomitą przyszłość, a rynek klastrów linuksowych ma zdecydowanie duży potencjał. Nawet obecnie klastry linuksowe konkurują z superkomputerami – więcej na ten

38

styczeń 2005

wywiad z Przemysławem Tołpą

wywiad

temat można znaleźć na stronach CERN pod adresem http://ajt.iki.fi/writings/ cern/index_eng.html oraz http://www. interex.org/pubcontent/enterprise/mar00/ 11ntrad.html. KK: Pod koniec zeszłego roku opracowaliście technologię NAC, która wydała mi się dość interesująca. Jak jest zasada jej działania? PT: Ethernet Networking ewoluował od 10 Mb/na sekundę (Ethernet), przez 100 Mb/na sekundę (Fast Ethernet), do 1,000 Mb/na sekundę (Gigabit Ethernet) oraz TCP/IP Offload Engines (rozwiązanie TOE) – są to kolejne generacje technologii sieciowej Ethernet. Firma Adaptec wprowadziła na rynek produkty technologii TOE pod nazwą NAC (Network Accelerator Card – sieciowa karta przyspieszająca), np. GigE NAC 7711C (oparty na rozwiązaniu miedzianym) oraz GigE NAC 7711F (oparty na światłowodzie). Oba produkty zostały zaprojektowane, aby maksymalizować wydajność sieci oraz obniżyć zużycie samego procesora. Poprzez obsłu-

gę stosu TCP/IP na poziomie sprzętu, na karcie, rozwiązanie TOE NAC firmy Adaptec umożliwia eliminację wąskiego gardła podczas przetwarzania TCP oraz pozwala procesorowi komputera poświęcić więcej cykli na przetwarzanie procesów aplikacji oraz umożliwia zwiększenie szybkości obsługi sieci i wydajności systemu. Aplikacje, do których jest przeznaczone rozwiązanie NAC, to m.in. aplikacje serwera danych, wysokowydajne komputery przeznaczone do zadań technicznych, intensywnie wykorzystywane bazy danych, kopie zapasowe oparte o LAN, pamięć masowa NAS oraz rozwiązania wideo. KK: Jak może zostać zastosowana technologia NAC? PT: Technologia NAC jest idealna dla wysokowydajnego środowiska informatycznego, włączając klastry oraz udostępnianie plików na rynkach wertykalnych, takich jak np. bio-informatyka, informatyka działająca na potrzeby nauki, wydobycie ropy i gazu oraz sektor obronności. Produkt firmy Ada-

ptec TOE NAC 7711 jest rozwiązaniem przyspieszającym działanie sieci, obniżającym poziom zaistniałych opóźnień oraz redukującym stopień zużywania procesora. Technologia NAC zawiera specjalizowany układ scalony ASIC kierujący TCP/IP oraz rozładowujący przetwarzanie TCP/IP z hosta i jest najszybciej pracującym i najbardziej wytrzymałym rozwiązaniem dostępnym na rynku. Technologia NAC redukuje w znaczącym stopniu obciążenie w sieci LAN, przedłużając czas działania serwerów oraz maksymalizując ich wydajność. KK: Dziękuję za rozmowę.

W Internecie:
– – Strona domowa firmy Adaptec: http://www.adaptec.com/ Strona firmy Adaptec poświęcona zagadnieniom Linuksa: http://linux.adaptec.com/ Polski oddział firmy Adaptec: http://www.adaptec.pl/

R

E

K

L

A

M

A

www.lpmagazine.org

39

oprogramowanie aktualności

gnome

Dvd::rip
Witold Kieraś

– ripper płyt DVD

D

vd::rip to napisana w Perlu, z użyciem biblioteki GTK, nakładka graficzna na program Transcode, pozwalająca zgrać filmy z płyt DVD do pliku .avi lub .mpeg. Instalacja i konfiguracja Na stronie projektu są dostępne pakiety dla wielu dystrybucji Linuksa, a nawet dla FreeBSD i OpenBSD. Warto z nich skorzystać, pamiętając jednak o zależnościach. Do uruchomienia Dvd::rip potrzebny będzie pakiet transcode, bez którego aplikjacja jest bezużyteczna. Należy również zainstalować ImageMagick. Potrzebny będzie także interpreter Perla, w wersji co najmniej 5.6.0, oraz moduł Perl GTK. Warto również zainstalować takie pakiety, jak xvid4conf, ogmtools, subtitleripper, dzięki którym będziemy dysponować większą liczbą funkcji przy rippowaniu. Ponadto, w systemie powinien być zainstalowany jeden z dwóch najpopularniejszych odtwarzaczy multimediów (a najlepiej obydwa), czyli MPlayer lub Xine. Jeśli chcemy instalować program ze źródeł, to, po zainstalowaniu wyżej wymienionych aplikacji, musimy rozpakować skompresowane źródła poleceniem: tar xfz Video-DVDRip-<wersja>.tar.gz, przejść do utworzonego katalogu (cd Video-DVDRip-<wersja> i wykonać w nim ) kolejno polecenia: perl Makefile.PL, make i make test. Jeśli test przebiegnie pomyśl-

Rysunek 1. Konfiguracja programu jest bardzo prosta

nie, możemy wówczas zainstalować program w systemie, wydając, jako root, polecenie make install. Program uruchamiamy poleceniem dvdrip. Przy pierwszym uruchomieniu programu ukaże się nam okno konfiguracji. Nie trzeba wszystkich pól uzupełniać od razu, gdyż można do konfiguracji wrócić później, wybierając z menu programu pozycję Edit–>Edit Preferences... Program przechowuje wszystkie ustawienia w ukrytym pliku .dvdriprc, znajdującym się w katalogu domowym użytkownika, więc najłatwiejszym sposobem na przywrócenie ustawień domyślnych jest wykasowanie tego właśnie pliku. Okno konfiguracji jest podzielone na kilka zakładek. W każdej zakładce na dole znajduje się okno, w którym na zielono są wypisane opcje skonfigurowane poprawnie, a na czerwono te, których jeszcze nie ustawiono. Niektórych z nich nie trzeba ustawiać w ogóle, jeśli zdecydujemy, że nie chcemy korzystać z dostarczanych przez nich funkcji. W każdej zakładce mamy dostęp do przycisków Check all settings oraz Check settings on this page, po których wciśnięciu zostanie sprawdzona poprawność ustawień odpowiednio całego programu i opcji konfigurowanych tylko w danej zakładce. W pierwszej zakładce (Filesystem) wskazujemy kolejno ścieżkę do napędu DVD (zwykle /dev/dvd lub /dev/cdrom), punkt montowania napędu DVD (prawdopodobnie /mnt/dvd/ lub /mnt/cdrom/ ), domyślny katalog dla danych programu (ustawiony wedle uznania – należy pamiętać, aby użytkownik miał prawa zapisu i odczytu do tego katalogu), domyślny katalog dla plików rip, w których są zapisywane projekty, oraz rozszerzenie dla plików w formacie OGG. W drugiej zakładce (Commands), jeśli tylko mamy zainstalowane odtwarzacze Xine i MPlayer, prawdopodobnie nie musimy nic poprawiać. Wyjątkiem może być ostatnia rubryka dotycząca ścieżki do programu rar – program domyślnie szu-

ka pliku wykonywalnego rar w katalogu /usr/local/bin/. W trzeciej zakładce (CD Burning) możemy zdefiniować opcje wypalania płyt. W większości przypadków będą one już ustawione poprawnie – wskazujemy ścieżkę do urządzenia nagrywającego, numer urządzenia nagrywającego w formacie wymaganym przez program cdrecord (X,X,X, gdzie każdy X jest jest jakąś liczbą całkowitą – wartości te można uzyskać wydając jako root polecenie cdrecord -scanbus), oraz ścieżki do programów cdrecord, cdrdao, mkisofs i vcdimager (jeśli te programy są zainstalowane w systemie, a ich pliki wykonywalne są w standardowych ścieżkach dostępu, to wystarczy wpisać ich nazwę). W omawianej zakładce możemy jeszcze zdefiniować szybkość zapisu ( Writing speed) oraz metodę kasowania zawartości nośników CD-RW (fast lub all). W kolejnej zakładce możemy jeszcze zdefiniować opcje programu nagrywającego cdrdao – wybrać sterownik (można sprawdzić, jaki sterownik obsługuje naszą nagrywarkę na stronie programu, pod adresem: http:// cdrdao.sourceforge.net/drives.html#dt), zezwolić lub nie na tzw. overburning, czyli nagrywanie na obszarze nośnika wykraczającym poza jego nominalną pojemność, oraz zadecydować, czy po zakończeniu nagrywania tacka nagrywarki ma się wysuwać automatycznie. Należy jednak pamiętać, że program Dvd::rip oferuje tylko podstawowe funkcje nagrywania, zatem użytkownik nie powinien zrażać się ewentualnym niepowodzeniem w konfiguracji tych opcji, ponieważ do nagrywania można wykorzystać zewnętrzne, bardziej przyjazne, programy, np. K3b. Przedostatnią zakładkę, Cluster options, pomijamy – dotyczy ona wykorzystywania klastrów do rippowania płyt DVD. W ostatniej zakładce, Miscellaneous options, możemy zdefiniować domyślny kodek, wykorzystywany przy konwersji filmów DVD, oraz domyślny format plików wynikowych konwersji. Ustawienie opcji Preferred language spowoduje, że

40

grudzień 2004

GNOME

News

program domyślnie będzie wybierał przy rippowaniu ścieżkę dźwiękową w zdefiniowanym przez nas języku, o ile oczywiście na płycie DVD zapisane jest więcej niż jedna ścieżka dźwiękowa i dostępna jest preferowana przez nas wersja językowa. Całość ustawień zatwierdzamy przyciskiem OK. Rippowanie Po pomyślnym skonfigurowaniu programu możemy zabrać się od razu do przetestowania jego działania. Z menu programu wybieramy File –>New Project. Konfiguracja projektu przebiega w podobny sposób, jak konfiguracja programu – przechodzimy kolejno od jednej zakładki do drugiej. W pierwszej z nich (Storage) wybieramy nazwę dla projektu. Po wpisaniu nazwy, kolejne pola, w których musimy podać miejsce przechowywania plików VOB (film DVD) i plików AVI (przekonwertowany film), zostaną odpowiednio wypełnione (możemy je oczywiście zmienić). Musimy jeszcze wybrać sposób rippowania – przegranie na dysk i potem konwersja (Rip data from DVD to harddisk before encoding), konwersja w locie wprost z płyty DVD (Encode DVD on the fly) lub konwersja z wykorzystaniem obrazu płyty DVD przechowywanym na dysku we wskazanym katalogu (Use existing DVD image located in this directory:). W drugiej zakładce (RIP Title) możemy już przeglądać zawartość płyt DVD – jeśli włożyliśmy płytę do napędu, to należy wcisnąć przycisk Read DVD table of contents, a w ramce poniżej ukażą się wszystkie ścieżki zapisane na płycie. Interesuje nas ta najdłuższa (pierwsza pozycji w każdym wierszu to czas trwania ścieżki), ewentualne pozostałe (jeśli w ogóle są), które stanowią dodatki i filmy reklamowe. W rozwijanym menu po prawej stronie, możemy też wybrać domyślną dla rippowania, ścieżkę dźwiękową dla filmu. Należy pamiętać, że w kolejnych zakładkach przetwarzane będą ścieżki, które zostały wskazane w tym oknie. Wciśnięcie przycisku RIP selected title(s)/chapter(s) spowoduje przegranie wskazanych ścieżek z płyty DVD na twardy dysk. W trzeciej zakładce, Clip & Zoom, decydujemy o parametrach przycięcia i zmiany wielkości obrazu. Standardowo proces ten przebiega w trzech krokach: pierwsze cięcie ( clipping), powiększe1st nie (Zoom) i drugie cięcie (2nd clipping). Parametry każdego z tych kroków mo-

żemy dobrać samodzielnie w dolnej części okna. Każdemu z kroków odpowiada podgląd dostępny w trzech oddzielnych okienkach. Czwarta zakładka, Subtitles, dotyczy napisów w filmie – możemy w niej wybrać jedną z wersji napisów, jeśli jest dostępnych kilka na płycie. Możemy też zmodyfikować sposób ich wyświetlania (ramka Render subtitle on movie). Kolejna zakładka, Transcode, to konfiguracja opcji programu kodującego. Większość z nich zdefiniowaliśmy już wcześniej, ale możemy je tutaj zmienić. Przeciętnego użytkownika zainteresuje najbardziej ramka Video bitrate calculation, w której definiujemy, na ilu nośnikach i jakiej wielkości ma zmieścić się przekonwertowany film. Domyślne wartości to dwie płyty po 700 MB każda. Możemy je dobrać według własnych preferencji. Na dole okna dostępnych jest kilka przycisków: Transcode + Split przekonwertuje wybrane ścieżki i stworzy tyle plików wyjściowych, ile wybraliśmy nośników dla filmu. Przycisk View AVI służy do podglądu pliku wyjściowego. Proces konwersji trwa kilkanaście do kilkudziesięciu minut – w zależności od wielkości filmu i parametrów komputera. Przedostatnia zakładka, Burning, dotyczy wypalania efektów rippowania na płycie – definiujemy m.in. rodzaj płyty (zwykły obraz ISO 9660, (X)SVCD/CVD lub (X)VCD). Zależy on od wybranego przez nas wcześniej kodeka – w przypadku standardowego formatu DivX będzie to opcja pierwsza. Możemy też nadać płycie etykietę i zdefiniować szybkość zapisu. Podsumowanie To tylko pobieżny przegląd podstawowych i najczęściej wykorzystywanych możliwości programu Dvd::rip. Zaawansowanych użytkowników zainteresuje z pewnością tryb klastrowy – możliwość rozłożenia zasobożernego procesu rippowania płyt na kilka maszyn połączonych w sieć. Pewnym mankamentem programu jest z pewnością język interfejsu – Dvd:: rip przemówi do nas wyłącznie po angielsku. Zrekompensować to może, przynajmniej częściowo, intuicyjny układ sterowania programem. Dużą zaletą programu jest również bardzo dobra dokumentacja, dostępna na stronie internetowej projektu – niestety również tylko po angielsku. http://www.exit1.org/dvdrip/

GIMP 2.2 coraz bliżej Twórcy GIMP-a, najpopularniejszego linuksowego programu do obróbki grafiki, nie zwalniają tempa. Po udanej wersji 2.0 przygotowują już wersję 2.2 – jej kolejne wersje testowe są dostępne w Internecie. Wśród wielu zapowiadanych zmian uwagę zwracają liczne udogodnienia w pracy, takie jak poprawienie interfejsu, znaczne ulepszenie obsługi techniki drag-anddrop pomiędzy GIMP-em a innymi programami, oraz usprawnienie kopiowania i wklejania obiektów pomiędzy GIMP-em a programami zewnętrznymi, w tym OpenOffice.org i Abiwordem. http://gnomedesktop.org/node/2051 http://www.gimp.org/ GNOME-owy Firefox Na fali popularności przeglądarki Firefox powstały tematy graficzne dla niej, upodabniające ją do natywnych programów GNOME. http://gnomefx.mozdev.org/ GNOME 2.9.1 Od niedawna możemy cieszyć się wersją 2.8 środowiska GNOME, ale jego programiści nie marnują czasu i ostro zabierają się za tworzenie wersji 2.10. Na razie ukazała się pierwsza wersji środowiska w gałęzi rozwojowej, oznaczona numerem 2.9.1. Zakończenie prac nad wersją 2.10 planowane jest na marzec 2005 roku. Deweloperzy zachęcają do testowania! http://gnomedesktop.org/node/2021 GNOME Personal Web Publishing Powstał niedawno projekt GNOME Personal Web Publishing. mający na celu stworzenie narzędzia podobnego do znanego z MacOS X programu Personal Web Sharing. Ma on ułatwiać użytkownikowi publikowanie stron internetowych oraz wymianę plików zarówno w Internecie, jak i w sieciach lokalnych. Na razie program jest w wersji 0.0.2. Napisany jest w C# i, co za tym idzie, wymaga Mono. http://gpws.sourceforge.net/ Grisbi 0.5.2 Grisbi to ciekawy program do zarządzania osobistymi finansami, napisany przy użyciu GTK i przeznaczony oczywiście dla GNOME. Dzięki programowi możemy zaplanować nasz domowy budżet na najbliższy miesiąc. Grisbi posiada też wersję dla platformy Win32. Program został napisany przez deweloperów z Francji i pierwotnie był przystosowany dla francuskiego użytkownika. Jego popularność wzrosła jednak z chwilą stworzenia angielskiej wersji programu. Deweloperzy wciąż jednak poszukują chętnych do przetłumaczenia Grisbi na inne języki. Program rozpowszechniany jest na licencji GPL.

www.lpmagazine.org

41

oprogramowanie aktualności

kde

KGpg
Witold Kieraś

– menedżer kluczy szyfrujących

T

ym, którzy nie spotkali się z szyfrowaniem asymetrycznym i podpisem cyfrowym, należy się kilka słów wyjaśnienia. Nie wnikając w szczegóły techniczne, potrzebujemy zawsze dwóch połączonych w parę kluczy – prywatnego (tajnego) i publicznego. Klucza tajnego strzeżemy jak oka w głowie, natomiast klucz publiczny rozdajemy wszystkim chętnym – możemy go umieścić na swojej stronie internetowej lub na specjalnym serwerze. Wszystko, co zostało zaszyfrowane naszym kluczem publicznym, może zostać odszyfrowane wyłącznie przy pomocy naszego klucza tajnego (takiej wiadomości nie można odszyfrować nawet kluczem publicznym, którego użyto do jej zaszyfrowania – na tym zresztą polega siła kryptografii asymetrycznej). Zatem, jeśli ktoś będzie chciał przesłać nam poufną wiadomość, zaszyfruje ją naszym kluczem publicznym i prześle e-mailem, nie martwiąc się, że list może zostać przechwycony. W gruncie rzeczy może on taką wiadomość umieścić nawet na publicznie dostępnym serwerze lub (jeśli będzie miał taki kaprys) jako ogłoszenie w gazecie codziennej. Nie ma to znaczenia, ponieważ i tak odszyfrować ją będzie mógł tylko adresat, czyli posiadacz klucza tajnego. Wraz z szyfrowaniem asymetrycznym dostępny jest również podpis cyfrowy. Podpisać możemy nim zarówno dokument tekstowy, jak i plik binarny. Podpisu dokonujemy przy pomocy klucza prywatnego. Zweryfikować go możemy przy pomocy klucza publicznego – zatem autentyczność podpisu może potwierdzić niemal każdy. Nie można jednak zmienić zawartości dokumentu lub pliku bez złamania poprawności podpisu. Jeśli podmienimy chociaż jeden bit, wówczas weryfikacja da wynik negatywny. Ponadto, podpisanie kluczem publicznym da inny efekt niż podpisanie kluczem tajnym – zatem

klucz publiczny nie może posłużyć do sfałszowania podpisu. Generujemy klucze Jeśli posiadamy zainstalowane środowisko KDE przynajmniej w wersji 3.2, to prawdopodobnie KGpg jest już zainstalowane w systemie. Jeśli posiadaliśmy już wcześniej klucze GnuPG w standardowej ścieżce (katalog .gnupg/ w katalogu domowym), to KGpg wykryje je i będziemy mogli z nich normalnie korzystać. Jeśli jednak nie posiadamy kluczy, to będziemy je musieli teraz wygenerować. Aby wygenerować nową parę kluczy, wybieramy z menu Klucze–>Wygeneruj parę kluczy... lub wciskamy kombinację klawiszy [Ctrl]+[N ]. Musimy teraz wypełnić kilka pól w nowootwartym oknie. Nazwa to miejsce na nasze imię i nazwisko lub pseudonim. W polu E-mail wpisujemy adres poczty elektronicznej, z którego będziemy korzystać np. przy wysyłaniu zaszyfrowanych listów. W polu Komentarz możemy (choć nie musimy) zamieścić własne uwagi na temat klucza. Następnie określamy datę ważności klucza, czyli czas, po którym klucz zostanie unieważniony (uznany za nieważny). W przypadku gdy generujemy klucze jakiegoś projektu programistycznego, warto określić rozsądny termin ich wygaśnięcia, bo może mieć to krytyczne znaczenie dla bezpieczeństwa nie tylko naszego, ale i innych użytkowników projektu. Jeśli natomiast ma to być klucz wykorzystywany wyłącznie do korespondencji prywatnej, to zwykle wybierzemy tutaj opcję Nigdy – wówczas wygenerujemy klucze bezterminowe. Rozmiar klucza to kolejny parametr decydujący o bezpieczeństwie – im większy klucz, tym lepszy. Autorzy GnuPG twierdzą, że klucz 1024bitowy w zupełności wystarcza. Zwykle to prawda, ale z drugiej strony jedyną niedogodnością większych kluczy jest wydłużony czas szyfrowania – jeśli nie pra-

cujemy na archaicznych maszynach, to raczej nie zauważymy różnicy. Proponuję wybrać co najmniej klucz 2048-bitowy. W polu Algorytm najlepiej pozostawić opcję domyślną, czyli DSA & ElGamal. Niektórych użytkowników być może skusi przycisk Tryb eksperta. Jest to opcja otwierająca wirtualny terminal i rozpoczynająca w nim proces generowania kluczy bezpośrednio w GnuPG. Mamy wówczas do dyspozycji wszystkie opcje tego programu, ale w większości przypadków nie są nam one potrzebne. Po wciśnięciu przycisku OK zostaniemy poproszeni o dwukrotne podanie hasła dla pary kluczy. Ważne jest, aby hasło było ono odpowiednio długie (najlepiej kilkunastoznakowe) i z pozoru bezsensowne (zawierające znaki niealfanumeryczne), aby w przypadku wykradnięcia przez kogoś klucza tajnego, uniemożliwić tzn. atak słownikowy. Po zatwierdzeniu hasła rozpoczyna się właściwy proces generowania kluczy. Im większe klucze generujemy, tym dłużej będzie on trwał - w przypadku kluczy 4096-bitowych na średniej klasy maszynie nawet kilkadziesiąt sekund. Dzieje się tak dlatego, że generator liczb pseudolosowych potrzebuje zapełnić swój bufor losowymi danymi, a im większy klucz generujemy, tym więcej czasu to zajmuje. Można mu w tym pomóc poruszając w trakcie generowania kluczy myszką i/lub wciskając

Rysunek 1. W KGpg możemy wygodnie zarządzać kluczami szyfrującymi

42

styczeń 2005

KDE

News

Rysunek 2. KGpg ma również wbudowany edytor

losowo na klawiaturze klawisze, które nie powodują drukowana znaków, tzn. [Tab], [Caps Lock], [Shift], [Ctrl] i [Alt]. Po wygenerowaniu kluczy dobrze jeszcze zapisać do pliku tzw. certyfikat unieważnienia. W przypadku zapomnienia hasła, zagubienia lub złamania klucza publicznego certyfikat ten może zostać rozpowszechniony w celu poinformowania innych, że ten klucz nie powinien być już więcej używany. Unieważniony klucz publiczny nadaje się nadal do potwierdzania podpisów wykonanych w przeszłości, ale nie będzie nim można podpisać dokumentów w imieniu jego właściciela. Nadal będzie można odszyfrowywać stare wiadomości przy pomocy odpowiadającego mu klucza prywatnego. I co dalej? Klucz możemy modyfikować po jego wygenerowaniu. Wystarczy w głównym oknie KGpg kliknąć na wybrany klucz prawym przyciskiem myszy i odnaleźć opcję Modyfikuj klucz. Możemy modyfikować datę ważności klucza, hasło oraz stopień zaufania. Możemy również dodać do klucza nasze zdjęcie –wybieramy opcję Dodaj fotografię, a następnie wskazujemy plik ze zdjęciem. W menu kontekstowym dostępne są również takie opcje, jak eksport klucza tajnego do pliku (tak, abyśmy mogli zrobić jego kopię zapasową) czy podpisanie cudzego klucza publicznego (świadczy to o naszym przekonaniu, że klucz jest poprawny i należy do zaufanej osoby). Teraz możemy w łatwy sposób zarządzać kluczami, a także szyfrować i podpisywać wiadomości oraz pliki. Najwygodniej użyć do tego schowka systemowego. Wystarczy zaznaczyć zaszyfrowany tekst (wraz z nagłówkami), wcisnąć kombinację klawiszy [Ctrl]+[C ] (kopiowanie do schowka), a następnie prawym przy-

ciskiem myszy kliknąć na ikonce KGpg (kłódka) w tacce systemowej i z menu wybrać Odszyfruj zawartość schowka. Otworzy się edytor KGpg i poprosi nas o podanie hasła. Jeśli hasło będzie prawidłowe, to wyświetli rozszyfrowaną wiadomość. Podobnie w przypadku szyfrowania – zaznaczamy niezaszyfrowany tekst, kopiujemy go do schowka i w menu ikonki wybieramy Zaszyfruj zawartość schowka. Wówczas program zapyta nas, którego klucza ma użyć do zaszyfrowania wiadomości, a następnie wykona zadanie w wewnętrznym edytorze. Zamiast kopiowania do schowka, możemy użyć samego zaznaczania tekstu (bez konieczności wciskania klawiszy [Ctrl]+[C ]). W tym celu w menu głównego okna programu wybieramy: Ustawienia–>Konfiguracja: KGpg..., a następnie w zakładce Różne zaznaczamy opcję Używanie zaznaczenia myszy zamiast schowka. Po zrestartowaniu programu będziemy mogli już korzystać z tej funkcji. KGpg, jako część KDE, jest w pełni zintegrowany z tym środowiskiem. Klikając na dowolny plik prawym przyciskiem myszy, otrzymamy w menu kontekstowym opcję: Działania–>Zaszyfruj plik, wywołującą ten program. Opcje dostępne w menu konfiguracji są raczej intuicyjne i nie powinny sprawić użytkownikowi problemów. Jedną z ciekawszych funkcji dostępnych w KGpg jest Niszczarka. W menu programu wybieramy: Ustawienia–>Konfiguracja: KGpg...–>Różne, a następnie klikamy przycisk Zainstaluj Niszczarkę. Na naszym pulpicie pojawi się ikona Niszczarka. Służy ona do skutecznego zamazywania dokumentów, których chcemy się pozbyć tak, aby nie można ich było odtworzyć na podstawie zapisów na dysku. O przydatności takiej funkcji boleśnie przekonał się w ostatnich miesiącach niejeden polityk w naszym kraju. Podsumowanie KGpg to program, który za pomocą kilku kliknięć myszą udostępnia użytkownikowi silne narzędzie kryptograficzne. Z pewnością przyda się ono nawet tym, którzy twierdzą, że nie mają nic do ukrycia, tym bardziej, że w świecie Wolnego Oprogramowania podpisywanie pakietów kluczami PGP to podstawa bezpieczeństwa. http://developer.kde.org/~kgpg/

Książka dostępna w sieci Książka pod tytułem C++ GUI Programming with Qt 3, autorstwa Jasmina Blanchette'a, jednego z inżynierów firmy Trolltech, oraz menedżera dokumentacji, Marka Summerfielda, jest obecnie dostępna do ściągnięcia w postaci pliku PDF na stronie wydawcy. http://phptr.com/title/0131240722# KOffice 1.3.4 Wydano kolejną wersję poprawkową pakietu biurowego KOffice z gałęzi 1.3.x. Poprawiono w niej między innymi błąd filtra importu dokumentów PDF w KWordzie oraz przywrócono możliwość kompilacji w KDE 3.1.5 i Qt 3.1.2. http://www.koffice.org/ announcements/changelog-1.3.4.php Wprowadzenie do Hydrogen Linux Jurnal opublikował artykuł pod tytułem An Introduction to Hydrogen. Hydrogen jest zaawansowanym programem perkusyjnym napisanym przy użyciu biblioteki Qt, bardzo wysoko ocenianym przez użytkowników. http://www.linuxjournal.com/ article.php?sid=7846 http://hydrogen.sourceforge.net/ Nuvola 1.0 Znany artysta grafik, David Vignoni, udostępnił niedawno wersję 1.0 popularnego zestawu ikon dla KDE swojego autorstwa o nazwie Nouva. Przyznać trzeba, że ikony robią wrażenie i ucieszą z pewnością każdego fana biurkowych “upiększaczy”. W skład zestawu wchodzi ponad sześciuset (!) ikon Davida. http://www.kde-look.org/content/ show.php?content=5358 QGO 0.2.2 Powstały niedawno projekt QGO, klient starożytnej dalekowschodniej gry Go, napisany w Qt, rozwija się całkiem prężnie. Ostatnio udostępniono wersję 0.2.2 tego programu. QGO pozwala na grę z żywym przeciwnikiem w Sieci lub z programem, np. popularnym silnikiem do gry w Go o nazwie Gnugo. http://qgo.sourceforge.net/ Tropical TuxSaver 1.0 Jesteście spragnieni trójwymiarowych wygaszaczy ekranu? Oto ukazała się właśnie wersja 1.0 wygaszacza o nazwie Tropical TuxSaver. Możemy teraz obserwować na naszych ekranach życie pingwina na tropikalnej wyspie lub na górze lodowej... http://kde-apps.org/content/ show.php?content=4773

www.lpmagazine.org

43

oprogramowanie aktualności

linuxfresh

Gubed
Piotr Machej

– debugger skryptów w PHP

M

ówi się, że język PHP jest bardzo prosty. Owszem, łatwo nauczyć się podstaw, a wiele rzeczy można w nim zrobić na wiele sposobów. Podczas programowania może przytrafić się nam błąd. Szczególnie, gdy pracujemy nad jakimś większym projektem. W takim przypadku z pomocą przychodzą debuggery. Jednym z nich, przeznaczonym do analizowania programów napisanych w PHP, jest Gubed. Do czego może przydać się debugger? Na pewno nie do szukania brakującego nawiasu – do tego w zupełności powinien wystarczyć dobry edytor z kolorowaniem składni. Jeśli nasz program działa nie do końca tak, jak powinien, zapętlając się w nieskończoność lub, przeciwnie, nie wykonując jakiejś pętli ani razu, to wtedy właśnie pora na debuggera. Z jego pomocą możemy prześledzić program krok po kroku, obserwując zmieniające się wartości zmiennych, i może w końcu dostrzeżemy, że znów zamiast = = w warunku wstawiliśmy =. Oczywiście, błąd może być zupełnie inny, i niekoniecznie tak trywialny. Zawsze jednak mamy większe szanse na znalezienie go obserwując kod podczas działania. W przypadku debuggera Gubed z pewnością ucieszy nas wiadomość, że nie są wymagane żadne przeróbki w oprogramowaniu serwera, ani tym bardziej w sprawdzanym kodzie. Co więcej, możemy uruchamiać Gubed na innym komputerze niż testowany skrypt. Przykładowo, skrypt może być uruchamiany na serwerze linuksowym, a sam Gubed może działać na naszym domowym komputerze z Windows (Gubed działa zarówno w środowisku Linuksa, jak i Windows).

Instalacja może sprawić nieco problemu. Tym bardziej, że ze względów bezpieczeństwa lepiej nie dawać dostępu do Gubed nieupoważnionym osobom. Jeśli do naszego komputera mają dostęp inni użytkownicy (zarówno zdalny, jak i lokalny), koniecznie powinniśmy przeczytać sekcję Security zawartą w pliku serversetup.txt. Jeśli jednak nie boimy się zagrożeń lub potrafimy sobie z nimi poradzić, to możemy zabrać się za instalację. Ze strony domowej pobieramy plik Gubed0.1.2.tar.gz, a następnie rozpakowujemy go. W utworzonym katalogu najpierw zainteresuje nas podkatalog Clients/wxGubed/. Wchodzimy do niego i wydajemy polecenia: ./autogen.sh, ./configure, make. Jeśli wszystko przebiegnie bez problemów (w przypadku Auroksa wymagany jest pakiet wxGTK-devel ), to w podkatalogu src/ powinniśmy znaleźć plik o nazwie gbdwxGubed. Jest

to nasz klient, z którego będziemy korzystać. Teraz pora na umieszczenie kilku plików w głównym katalogu naszego serwera WWW. W tym celu potrzebujemy uprawnień administratora. Znajdując się w katalogu Gubed0.1.2/, wydajemy polecenie cp -r Gubed/ /var/www/html/ (zależnie od konfiguracji naszego serwera WWW, katalog docelowy może być inny). Możemy już uruchomić naszego klienta poleceniem ./gbdwxGubed. Oprócz tego, należy uruchomić przeglądarkę internetową i wejść do katalogu, w którym umieściliśmy skrypty Gubed (np. http://localhost/Gubed/ ). W ten właśnie sposób będziemy pracować – z pomocą przeglądarki będziemy podawać, jakie skrypty mają być testowane (i będziemy obserwować wyniki działania), a z pomocą klienta będziemy śledzić działanie programu.

Rysunek 1. Gubed pozwala zapoznać się dokładnie z działaniem skryptu

44

styczeń 2005

FRESH

News

PostgreSQL AutoDoc 1.24 Program ten pozwala na zapisywanie do pliku XML informacji o bazie PostgreSQL, które później mogą być wykorzystane do stworzenia diagramu UML. Diagram taki (wraz z relacjami pomiędzy tabelami i informacjami opisowymi) można utworzyć wczytując plik XML do programu Dia. Oprócz plików XML, możemy zapisywać informacje o bazie w formatach HTML, GraphViz .dot, a także SGML (Docbook 4.1). Program współpracuje z każdą bazą opartą na PostgreSQL 7.x. W najnowszej wersji wprowadzono poprawki kilku błędów. http://freshmeat.net/projects/ postgresql_autodoc/ MPFC 1.3.3 MPFC to działający w trybie tekstowym (w oparciu o bibliotekę Curses) odtwarzacz muzyki. Dzięki wykorzystaniu listy odtwarzania jest wygodniejszy w użyciu od programów typu mpg321. Program obsługuje wiele różnych formatów plików (wykorzystuje w tym celu wtyczki). W nowej wersji znacznie poprawiono system konfiguracji i wprowadzono dowiązania klawiszy. http://freshmeat.net/projects/mpfc/ Exobius 0 0.3 Grając w rozbudowane gry z trójwymiarową grafiką, czasem zapominamy o prostych strzelaninach, od których wszystko się zaczęło. Próbą stworzenia takiej dwuwymiarowej gry jest właśnie Exobius 0. Gra zawiera obecnie 13 poziomów, wypełnionych broniami i przeciwnikami. Pomimo wczesnej fazy rozwoju, gra jest już w pełni funkcjonalna – można przechodzić ją od początku do końca. Największym mankamentem jest niedokończona grafika, która jednak ma zostać poprawiona w następnych wydaniach. Warto zainteresować się tym tytułem, a może nawet wesprzeć autora w jego wysiłkach. http://freshmeat.net/projects/ exobius0/ Thunder&Lightning 041013 Thunder&Lightning to futurystyczny symulator lotu. Pozwala nam zasiąść za sterami myśliwca i toczyć walki zarówno z innymi samolotami, jak i z czołgami. Ładna, trójwymiarowa grafika z pewnością ułatwi wczucie się w grę. Program jest wciąż w fazie rozbudowy – dopiero niedawno został udostępniony publiczności. Najnowsza wersja działa również pod Windows. Obecnie można latać jednym z dwóch dostępnych samolotów (tytułowe Thunder i Lightning), lecz w przyszłości autor zamierza udostępnić więcej typów maszyn. http://freshmeat.net/projects/tnl/

Rysunek 2. Gubed może zostać zintegrowany z programem Quanta

Przy pierwszym korzystaniu z Gubed warto uruchomić testy. Pozwoli to na zapoznanie się z możliwościami programu. W tym celu na wyświetlonej stronie należy wybrać odnośnik znajdujący się w sekcji Gubed tests. Jeśli później zdecydujemy się testować własne skrypty, to skorzystamy z odnośnika specify script to debug (albo od razu wejdziemy na stronę http://localhost/Gubed/StartSession.php). Mamy do dyspozycji cztery grupy testów. O każdym z nich możemy najpierw poczytać. Drugi odnośnik pozwala na uruchomienie skryptu bez udziału debuggera – dzięki temu możemy zaobserwować jego działanie i wynik. Trzeci odnośnik to wykonanie skryptu pod kontrolą Gubed. Po jego wywołaniu należy przełączyć się na klienta. Musimy bowiem zdecydować, czy chcemy obserwować wykonanie krok po kroku (przyciski Step), czy też wolimy pozwolić skryptowi się wykonywać – przycisk Run. W tym drugim przypadku zawsze możemy wcisnąć przycisk Pause. Warto przeczytać wszystkie wprowadzenia do testów. Pouczają one między innymi o ustawieniach dotyczących reagowania na pojawiające się błędy. Wykonując po kolei testy, nauczymy się korzystać z punktów kontrolnych (breakpoint), obserwować wywołania funkcji (tu przydadzą się przyciski Step Over, Step Into i Step Out), konfigurować Gubed tak, aby zwracał uwagę na konkretne błędy oraz będziemy mieli okazję śledzić wartości zmiennych i ustawiać warunkowe punkty kontrolne.

Analizowanie własnego skryptu przebiega bardzo podobnie do tego, co robiliśmy w czasie testów. Skrypt należy umieścić gdzieś pod głównym drzewem katalogu serwera WWW (a więc w naszym przykładzie w podkatalogu katalogu /var/www/html/ ). Następnie ścieżkę do niego podajemy na stronie http://localhost/Gubed/ StartSession.php, po czym wciskamy przycisk Debug i przechodzimy do okna klienta Gubed. Tutaj możemy do woli analizować go krok po kroku, lub też ustawić punkty kontrolne w wątpliwych miejscach i pozwolić mu się wykonywać. W najnowszej wersji wprowadzono funkcje Step over (wykonuje funkcję, lecz nie śledzi jej wykonania), Step out (śledzi wykonanie funkcji krok po kroku) oraz Backtrace. Oprócz tego, poprawiono otwieranie skryptów z klienta oraz dodano listę historii do StartSession. http://freshmeat.net/projects/gubed

Rysunek 3. Gubed analizujący skrypt PHP

www.lpmagazine.org

45

oprogramowanie aktualności

linuxfresh

Cssed
Piotr Machej

– edytor arkuszy stylów CSS

C

oraz więcej twórców stron WWW wykorzystuje w swej pracy kaskadowe arkusze stylów (CSS – Cascading Style Sheets). Jest to godne pochwały, gdyż dzięki temu nie tylko oszczędzają sobie mnóstwo pracy, ale równocześnie idą z duchem czasu. A jeśli tylko wykażą trochę wysiłku, to mogą stworzyć stronę, którą nie tylko da się wygodnie oglądać w dowolnej przeglądarce, ale również będzie dostępna dla niepełnosprawnych (czy to korzystających z linijek brajlowskich czy z syntezatorów mowy). Cssed to program ułatwiający tworzenie arkuszy stylów. Co prawda, obecnie potrafi podświetlać również składnie innych plików, ale nadal pozostaje edytorem plików CSS. Wśród jego zalet warto wymienić podświetlanie i autouzupełnianie. Program wyposażony jest również w wiele kreatorów pomagających przy tworzeniu najczęściej wykorzystywanych stylów (np. układu marginesów czy rodzaju fontów). Oczywiście, Cssed jest w stanie sprawdzić poprawność wpisanego kodu. Nie można mu również odmówić wygody użytkowania – interfejs jest przejrzysty i łatwy w obsłudze. Program możemy zainstalować zarówno z pakietów (dostępne są pakiety RPM i DEB), jak również ze źródeł. Najwygodniejsza oczywiście jest ta pierwsza możliwość. Po zainstalowaniu możemy uruchomić program poleceniem cssed. Po uruchomieniu, gdy zaczynamy pracę z nowym dokumentem, warto od razu ustawić odpowiednią czcionkę. Dokonujemy tego wybierając z menu Document pozycję Change font. Warto też wybrać typ pliku, z jakim będziemy pracować. W tym celu wskazujemy Document–>Highlighting –>CSS. Oczywiście, jeśli mamy zamiar tworzyć inny dokument (np. stronę WWW ), to zamiast CSS wybieramy HTML/PHP lub inną odpowiednią wartość. Jeśli chce-

Rysunek 1. Nic dziwnego, że arkusz stylów użyty na stronie domowej Cssed nie zawiera błędów

my korzystać z autouzupełniania, musimy zaznaczyć opcję Document–>Enable autocompletion (ma to tylko sens w przypadku CSS). Przydatna może się też okazać opcja Document–>Enable folding – szczególnie, gdy pracujemy z dłuższym plikiem. Pozwala ona bowiem zwijać zawartość poszczególnych klas tak, że widoczny jest tylko nagłówek. Warto przy tym zauważyć, że opcje ustawiane w menu Document są charakterystyczne dla każdego dokumentu z osobna – możemy w każdym z nich korzystać z innej czcionki i edytować inny typ pliku. Wartości do naszego pliku stylów możemy wprowadzać na kilka sposobów. Najbardziej podstawowy to wpisywanie wszystkich wartości ręcznie. Do tego jednak nie potrzebowalibyśmy Cssed. Jak już wiemy, możemy sobie pomóc autouzupełnianiem. Co ważne, pomaga ono

nie tylko we wprowadzaniu nazw atrybutów, ale również ich wartości. Sugeruje bowiem zarówno możliwe wartości, jak i pozwala skorzystać z kreatora (np. z palety barw w przypadku kolorów czcionek lub obramowań). Kreator możemy również uruchomić ręcznie, wybierając odpowiednią ikonę z paska znajdującego się tuż nad dokumentem lub z menu CSS. Ostatnia możliwość wstawienia do dokumentu atrybutu wraz z wartością to skorzystanie z drzewka atrybutów znajdującego się po prawej stronie dokumentu, w zakładce CSS. Podczas edycji może przydać się nam pewna wygodna funkcja. Wystarczy zaznaczyć grupę atrybutów, które chcemy modyfikować, a następnie wybrać opcję Tools–>Scan selector. Wybrane atrybuty znajdą się w prawym górnym oknie, gdzie w wygodny sposób będziemy mogli zmodyfikować ich wartości.

46

styczeń 2005

FRESH

News

Inną przydatną funkcją są znaczniki. Podczas edycji dużych plików są one po prostu nieocenione. Jeśli podczas edycji często skaczemy pomiędzy konkretnymi liniami poprawiając wartości, to wystarczy kliknąć na marginesie po lewej stronie każdej z tych linii. Powinny pojawić się tam białe znaczniki. Teraz możemy poruszać się pomiędzy nimi korzystając ze strzałek Previous Bookmark i Next Bookmark, widocznych na pasku narzędzi. W dolnej części ekranu mamy dwie zakładki – Program output i Scratch Pad / Static Pad. Pierwsza z nich zawiera wyniki zwracane przez program, np. komunikaty o błędach. Szczególnie przydatna jest podczas testowania poprawności kodu, czego dokonujemy wybierając z menu pozycję Tools–> Validate only. Warto przy tym mieć włączone numerowanie linii (Document–>View line numbers), gdyż dzięki temu łatwiej zlokalizować błąd w większym pliku. Druga zakładka zawiera dwa okna, które możemy wykorzystać na notatki. Mogą się one również przydać jako schowek – zaznaczony tekst można tu przeciągnąć z dokumentu, a następnie wkleić go do innego dokumentu (przeciągając go ponownie). Jeśli Cssed spodoba się nam, warto zmienić jego domyślne ustawienia. Każdorazowe ustawianie opcji w menu Document może być męczące. Zamiast tego wybieramy Edit–>Preferences. Tutaj, w zakładce Document settings, możemy

ustawić domyślne wartości dla każdego dokumentu. Warto zaznaczyć opcje View line numbers i Enable autocompletion. W zakładce Font ustawiamy odpowiadającą nam czcionkę i zatwierdzamy ją przyciskiem Apply. Pozostaje jeszcze zakładka Highlighting. Tutaj możemy dokładnie określić, jakie kolory powinny być użyte do podświetlania w konkretnych przypadkach. Trzeba przyznać, że Cssed zapowiada się interesująco. Już w tej chwili jest przyjemnym edytorem CSS, a autor stara się jeszcze bardziej rozbudować jego możliwości. Wśród najbardziej interesujących planów można wymienić możliwość przeglądania strony WWW z nałożonym stylem w zewnętrznej przeglądarce oraz (uwaga!) możliwość tworzenia arkusza stylu na podstawie dokumentu HTML. Chodzi tu o przetworzenie starych znaczników HTML (np. <font>) na ich odpowiedniki w kaskadowych arkuszach stylów. W najnowszej wersji programu znacznie ulepszono wsparcie dla różnych kodowań znaków. Dodano też schematy podświetleń dla innych języków, takich jak HTML, PHP, skrypty powłoki, Python i inne. Stworzono interfejs rozbudowywany wtyczkami i od razu udostępniono kilka wtyczek: panel przeglądania plików, okno terminala VTE, a także panel wyszukiwania tekstu w plikach. http://freshmeat.net/projects/cssed/

CbrPager 0.9.4 CbrPager to jeden z programów pozwalających przeglądać archiwa CBR, w których coraz częściej rozprowadzane są w sieci komiksy i mangi. Co prawda nie jest to program na miarę CDisplay, znanego z Windows, ale autor wciąż dodaje nowe funkcje. Program pozwala przeglądać pliki JPG, GIF i PNG. Oprócz podstawowych funkcji powiększania i zmniejszania widoku, posiada kilka ciekawych opcji konfiguracyjnych (np. możemy określić, czy przy przejściu do kolejnej strony ma być wyświetlona jej górna lub dolna część, czy też raczej ta, którą właśnie wyświetlaliśmy). Najnowsza wersja programu pozwala także określić, czy panel nawigacyjny ma być wyświetlany poziomo czy pionowo. http://freshmeat.net/projects/cbrpager/ Player vs. Player Gaming Network 1.6.6 PvPGN to darmowe oprogramowanie emulujące serwer Battle.net. Dzięki niemu można w sieci lokalnej uruchomić serwer i pograć w takie gry, jak Diablo II czy Starcraft. Dostępne są statystyki gier, możliwość organizowania turniejów, jak również drabinki punktowe. W najnowszej wersji poprawiono szereg wykrytych błędów oraz dodano kilka nowych opcji, np. opcję pozwalającą ograniczyć dostęp do wybranych klientów. http://freshmeat.net/projects/pvpgn/ HTML Forms generation and validation 2004.10.13 Twórcy stron WWW piszący w PHP wcześniej lub później stają przed problemem stworzenia formularzy wraz z ich obsługą. Opisywana klasa PHP pozwala na generowanie takich formularzy wraz z odpowiednią obsługą z klawiatury oraz sprawdzaniem poprawności danych (zarówno po stronie serwera, jak i klienta). Jej funkcjonalność może być rozszerzana poprzez dodawanie klas-wtyczek. Wygląd wynikowych formularzy może być definiowany szablonami z użyciem PHP, zagnieżdżonego w HTML-u lub też silnika Smarty. Najnowsza wersja niesie ze sobą kilka poprawek, m.in. poprawiono działanie klasy przy wyłączonej opcji register_globals. http://freshmeat.net/projects/htmlformsg enerationandvalidation/ Getmail 4.2.2 Pojawiła się nowa wersja programu Getmail, który w zamierzeniu autora ma być prostą i bezpieczną alternatywą dla popularnego programu Fetchmail. Zmiany dotyczą poprawionej obsługi uszkodzonych plików oldmail, jak również zmiany prawdziwego i efektywnego identyfikatora użytkownika i grupy potomnego procesu odpowiedzialnego za dostarczanie poczty. http://freshmeat.net/projects/getmail/

Rysunek 2. Oprócz Cssed, autor oferuje również kilka innych narzędzi pomocnych przy edycji arkuszy stylów

www.lpmagazine.org

47

oprogramowanie aktualności

linuxfresh

Vuurmuur
Piotr Machej

– konfigurator zapór sieciowych

K

ażdy, kto kiedyś tworzył zaporę ogniową z wykorzystaniem iptables lub ipchains, z pewnością zdaje sobie sprawę, że w pewnym momencie liczba regułek zaczyna przytłaczać. Z tego powodu wielu użytkowników wciąż szuka metod łatwiejszego tworzenia reguł i zarządzania zaporą sieciową. Jednym z ciekawszych pomysłów jest program Vuurmuur. W założeniu program ten ma przetwarzać regułki zrozumiałe dla człowieka (np. Zablokuj połączenia FTP z komputera Janka do serwera w Internecie) na reguły zrozumiałe dla komputera. I trzeba przyznać, że radzi sobie z tym całkiem dobrze. Co więcej, pozwala również na przeglądanie logów w bardziej zrozumiałej formie. Początkowa konfiguracja wymaga trochę wysiłku, ale i tak jest znacznie prostsza niż przekopywanie się przez dokumentację IPtables. Z pewnością warto się z nim bliżej zapoznać.

Po pobraniu archiwum ze strony domowej programu powinniśmy je rozpakować. Należy uważać, gdyż nie jest tworzony dodatkowy katalog – pliki znajdą się w bieżącym katalogu. Następnie uzyskujemy uprawnienia administratora (poleceniem su - lub logując się na konto użytkownika root) i przechodzimy do katalogu, w którym rozpakowaliśmy archiwum. Nie wystarczy tu polecenie su (bez myślnika), gdyż w takim przypadku najczęściej nie mamy dostępu do polecenia iptables bez podawania pełnej ścieżki – a taki dostęp jest nam potrzebny podczas instalacji. W najnowszej wersji mamy do dyspozycji skrypt instalacyjny, który wykona za nas większość czynności. Uruchamiamy go poleceniem ./install.sh, a następnie odpowiadamy na kilka pytań o nazwy katalogów. W większości przypadków możemy zatwierdzić domyślne ustawienia (wystarczy wcisnąć

Rysunek 1. Z pomocą Vuurmuur możemy również przeglądać aktywne połączenia

klawisz [Enter ]). Teraz musimy chwilę poczekać, aż program skompiluje się i zainstaluje. W celu dokończenia konfiguracji należy uruchomić program vuurmuur _conf Najlepiej zacząć od ustawień . ogólnych: Vuurmuur Config –>General. Możemy tu się upewnić, że ścieżki do programów ifconfig i iptables są prawidłowe, a także sprawdzić pozostałe ścieżki. Do wcześniejszego menu wychodzimy wciskając klawisz [F10 ]. Podobnie warto sprawdzić i ewentualnie poprawić wartości w pozostałych sekcjach konfiguracyjnych (z naciskiem na Logging). Teraz pora dodać interfejsy. Wychodzimy do głównego menu i wybieramy Interfaces. Klawiszem [Insert ] możemy dodać nową pozycję. Wpisujemy nazwę naszego interfejsu. Jest to nazwa, jaka będzie wykorzystywana tylko w programie Vuurmuur – najlepiej, jeśli będzie czytelna i krótka (np. inet dla interfejsu łączącego nas z Internetem lub dom dla sieci domowej). W kolejnym oknie możemy wpisać jego adres IP (jeśli zaznaczymy pole Dynamic, to program spróbuje odczytać adres z systemu) oraz nazwę urządzenia (Device). Możemy też dopisać komentarz. W analogiczny sposób możemy dodać strefy (Zones). Domyślnie mamy zdefiniowane cztery – dmz (strefa zdemilitaryzowana), ext (zewnętrzna – Internet), lan (sieci lokalne) i vpn (wirtualne sieci lokalne). Wejdźmy na początek do strefy ext. Zobaczymy spis sieci (Networks), składających się na tą strefę. Domyślnie jest tu tylko sieć internet, ale możemy dodawać inne. Wskażmy sieć internet i wciśnijmy klawisz [E ]. Okazuje się, że nie ma przypisanego interfejsu. Jeśli dodaliśmy już wcześniej interfejs łączący nas z Internetem, to teraz możemy go

48

styczeń 2005

FRESH

News

FreeRails 0.2.5 Miłośnicy klasycznej już gry Railroad Tycoon z pewnością ucieszą się, że pojawiła się kolejna wersja gry FreeRails. Ta darmowa gra została zainspirowana dziełem niezrównanego Sida Meiera. Chociaż gra jest w fazie Alpha, z każdą wersją pojawia się w niej więcej funkcji. Tym razem m.in. dodano opcję automatycznego rozkładu jazdy, który może wybrać odpowiednie wagony zależnie od rodzaju ładunku oczekującego na stacji początkowej i zapotrzebowania na stacji docelowej. http://freshmeat.net/projects/freerails/ GTorrentViewer 0.2a Ten program pozwala na sprawdzenie i zmodyfikowanie plików .torrent bez konieczności rozpoczynania pobierania. Możliwe jest sprawdzenie plików (ile zostało do pobrania, na ile części są podzielone), jak również pobranie informacji z trackera. Można też sprawdzić liczbę osób udostępniających pliki i je pobierających. W ostatnich wersjach wprowadzono obsługę drag&drop, jak również usunięto zależności od bibliotek libglade i libssl. Poprawiono także szereg błędów. http://freshmeat.net/projects/ gtorrentviewer/ Childsplay 0.72 Childsplay to zestaw gier dla dzieci, zgodny z dewizą: bawiąc – uczy, ucząc – bawi. Program posiada wbudowane dwie gry (Memory i wprowadzanie liter) – pozostałe gry dostępne są w osobnym pakiecie. Dostępne gry są przeznaczone dla młodszych dzieci, które mogą tu poćwiczyć rozpoznawanie liter, podstawowe działania arytmetyczne, a także rozpoznawanie obrazków i dźwięków. W najnowszej wersji poprawiono szereg błędów i dodano nową grę do zestawu. Niektóre gry wykorzystują obecnie zlokalizowane pliki dźwiękowe. http://freshmeat.net/projects/childsplay/ Aviascene 2 Czy przed wybraniem się w dalszą wyprawę nie chcielibyśmy mieć możliwości zapoznania się z rzeźbą terenu? Program Aviascene nam to umożliwia, ale na razie tylko dla niektórych rejonów Stanów Zjednoczonych. Dane o topografii terenu są wykorzystywane do zrenderowania obrazu. Następnie możemy udać się w wycieczkę pojazdem kołowym lub nawet samolotem. Możemy nawet wykorzystać współrzędne GPS do ustalania punktów kontrolnych. Jeśli nie zamierzamy wybierać się na wyprawę, zawsze możemy polatać sobie samolotem nad rzeczywistymi terenami. http://freshmeat.net/projects/aviascene/

Rysunek 2. Na domowej stronie projektu można przeczytać dokładny opis systemu stref, sieci, grup i usług

tu przypisać. W tym celu wciskamy klawisz [F6 ], następnie [Insert ] i wskazujemy nasz interfejs. W miarę potrzeb możemy też ustawić inne opcje dotyczące sieci, po czym ustawiamy wartość opcji Active na Yes. Gdy dodamy inne sieci do pozostałych stref (np. naszą sieć osiedlową), należy do nich dodać konkretne adresy komputerów (Hosts). Komputery możemy także łączyć w grupy (Groups), np. w celu określenia wspólnych reguł dla wszystkich serwerów pocztowych lub dla nielubianych kolegów. Wszystkie te czynności mają na celu dokładne opisanie naszej sieci, dzięki czemu później będziemy mogli łatwo tworzyć odpowiednie regułki. Ta wstępna konfiguracja jest dokładniej opisana na stronie domowej programu, w sekcji User Manual. Następnie możemy przejść do dodawania regułek (Rules w głównym menu). I tutaj właśnie mamy najprzyjemniejszą część zadania. Po wciśnięciu [Insert ], w większości pól możemy użyć klawisza spacji w celu wyświetlenia możliwych wartości. Tak więc, jeśli chcemy zablokować koledze połączenie HTTP z naszym serwerem, to ustawiamy kolejno: (w polu Action) Reject (Service) http (From) komputerkolegi (To) firewall. W nawiasach są umieszczone nazwy pól, w których należy umieszczać następujące po nich wartości. Jeszcze w polu Reject type ustawiamy odpowiedni typ odmowy (np.

icmp-port-unreachable) i już możemy wyjść do spisu reguł klawiszem [F10 ]. Przy okazji warto zauważyć, że użyliśmy tu oznaczenia komputera firewall. Jest to specyficzne oznaczenie, gdyż określa komputer, na którym zainstalowana jest zapora. Wszystkie regułki z jego udziałem dotyczą połączeń przychodzących i wychodzących, podczas gdy pozostałe dotyczą połączeń przesyłanych (forwarded ). Gdy już wszystko mamy skonfigurowane, możemy uruchomić właściwy program na kilka różnych sposobów. Do wyboru mamy uczynienie z niego demona (jest to zalecana opcja), jednorazowe uruchomienie w celu załadowania reguł oraz wygenerowanie skryptu powłoki tworzącego regułki. Odpowiednie opcje można znaleźć po uruchomieniu polecenia /usr/bin/ vuurmuur -h. W katalogu /usr/share/ vuurmuur/scripts/ można znaleźć przykładowe skrypty startowe oraz odpowiadające za rotację logów. W najnowszej wersji dodano wygodny skrypt instalacyjny, funkcję pomocy w interfejsie graficznym, wsparcie dla wirtualnych interfejsów, komentarze dla regułek oraz różne ulepszenia interfejsu GUI. Oprócz tego, regułki z włączonym logowaniem mogą mieć ustawione ograniczenia, co powinno utrudnić część ataków typu odmowa usługi (DoS – Denial of Service). http://freshmeat.net/projects/vuurmuur/

www.lpmagazine.org

49

oprogramowanie aktualności

gry

Simutrans
Marek Bettman

– gra ekonomiczna

W

1994 roku wydano Transport Tycoon Deluxe – świetną strategię ekonomiczną, o niebywałej grywalności. Pomimo dziesięciu lat istnienia wciąż ma liczne grono zwolenników i są przygotowywane kolejne wersje poprawek (Drexler Patch). TTD ma swoje minusy – tylko jedna wielkość mapy oraz ograniczenia co do liczby pojazdów w grze. Niektórzy narzekają również na zbyt małą liczbę przedsiębiorstw dostępnych w grze. Grą, która niewątpliwie zaspokoi nawet dość wygórowane wymagania najzagorzalszych fanów TTD, jest z pewnością Simutrans. W porównaniu do pierwowzoru, posiada wiele rozszerzeń, które w znaczący sposób uatrakcyjniają rozgrywkę. Dostępne są wersje dla Linuksa, Windows oraz BeOS. W tym miejscu muszę zaznaczyć, że najnowszą wersją gry jest 0.84.16.2. Jak sam autor przyznaje, jest to jeszcze wersja beta, więc nie należy dziwić się potencjalnym błędom oraz niezgodnością działania aplikacji z dokumentacją. Simutrans to gra ekonomiczna, a jej celem jest zbudowanie jak najwydajniejszej infrastruktury transportowej dla towarów i ludzi. Do dyspozycji mamy środki transportu lądowego (pociągi i samochody) oraz wodnego (promy, tankowce, barki), ale niestety nie została jeszcze dodana możliwość korzystania z transportu powietrznego (autorzy przewidują ją w przyszłych wersjach). Instalacja i uruchamianie Aby zainstalować Simutrans, musimy ściągnąć ze strony www.simutrans.de dwa pakiety: simubase-0_84_16_2.zip ( ok 1,6 MB) oraz simulinux-0_84_16_2.tar.gz (ok 460 KB). Następnie rozpakowujemy pierwszy pakiet poleceniem unzip simubase-0_84_16_2.zip. W następnej kolejności rozpakowujemy drugie archiwum: tar -zxvf simulinux-0_84_16_2.tar.gz. Jeżeli obie czynności wykonaliśmy w tym samym katalogu, to otrzymaliśmy katalog simutrans, zawierający wszystkie pliki

potrzebne do uruchomienia gry. Gdy rozpakowywaliśmy pakiety w różnych katalogach, musimy przenieść plik simutrans, który znajduje się w katalogu o tej samej nazwie, powstałym po rozpakowaniu drugiego pakietu, do katalogu simutrans z plikami gry. Po takich przygotowaniach możemy uruchomić grę poleceniem ~/simutrans/simutrans, ale warto wiedzieć o paru przełącznikach: • – podajemy rozdzielczość, w której zostanie uruchomiona gra; • -freeplay – bez tego parametru, jeśli stan naszej gotówki zejdzie poniżej zera, otrzymamy trzy miesiące (czasu gry) na zlikwidowanie debetu, a po tym czasie, jeżeli nam się nie uda, nastąpi koniec gry; • -refresh x – zmniejsza ilość pokazywanych klatek animacji, przez co gra lepiej działa (np. -refresh 2 będzie pokazywał co drugą klatkę, co powinno przyspieszyć grę o ok. 20%); • -log – wszystkie komunikaty z działania gry będą zapisywane w logu – opcja przydatna, jeśli chcemy pomóc deweloperom i w razie błędu móc przesłać pełny raport.
-screensize 1024x768

W menu nowej gry możemy ustalić wielkość mapy, ilość miast, gęstość obiektów przemysłowych (im większa, tym więcej znajdzie się ich na mapie), natężenie ruchu drogowego, topografię terenu oraz podstawowe opcje graficzne, takie jak widoczność pieszych i używanie/ nieużywanie trybu dzień-noc. Należy pamiętać, że ustawienie wysokich wartości zmiennych może zwolnić działanie gry na słabych maszynach. Jeżeli jesteśmy zadowoleni z ustawień, możemy kliknąć przycisk Nowa gra i rozpocząć budowę naszego własnego imperium transportowego. Okno gry jest podzielone na trzy części: • pasek narzędzi – znajduje się na górze ekranu i zawiera ikony grup działań dostępnych w grze, np. kliknięcie ikony Buduj kolej daje nam dostęp do menu budowania różnych rodzajów torów, stacji, lokomotywowni oraz sygnalizacji; • główne okno gry – tutaj faktycznie toczy się gra; • pasek statusu – zawiera aktualną datę i czas (w grze), pokazuje aktualne współrzędne kursora na mapie, ilość posiadanych przez nas pieniędzy oraz szybkość gry ( T=1.0 oznacza, że toczy się ona standardowym rytmem, ale możemy zwiększać i zmniejszać szybkość gry klawiszami [,] i [.]); czasami nad tym paskiem pojawiają się komunikaty z gry, np. o tym, że pociąg, który skierowaliśmy do zajezdni, już tam czeka.

Kompletną listę przełączników oraz kilka dodatkowych informacji możemy znaleźć w pliku readme.txt, w katalogu z grą. Interfejs Po uruchomieniu gry pojawią się dwa okna: wybór języka oraz menu nowej gry. Trzeba zaznaczyć, że gra ma możliwość wyświetlania (prawie wszystkich) elementów tekstowych po polsku, oprócz mini-mapy, na której, zamiast polskich literek, w większości przypadków widzimy krzaczki. Ponadto, nawet po ustawieniu języka na Polski, niektóre napisy są po angielsku, ale nie przeszkadza to w większym stopniu w grze.

Simutrans w pełnej okazałości

50

styczeń 2005

GAMES

News

Przydatne skróty klawiaturowe:
• • • • [Shift]+[“] – włącza/wyłącza przezroczystość obiektów; [Shift]+[3 ] – włącza/wyłącza siatkę na mapie; [,] i [.] – zmiana szybkości gry; [Shift]+[g] – okno z wartościami premii za szybki przewóz danego towaru; [PgUp], [PgDown] – przybliżanie i oddalanie widoku; aby wyświetlić okno ze wszystkim skrótami klawiaturowymi, należy nacisnąć [Control] lub [Shift] + dowolna – jeszcze nie przypisana – litera, np. [Control]+[q].

• •

Gra Naszym celem jest zarabianie na transporcie towarów i ludzi. Obowiązuje tu prosta zasada: im szybciej towar zostanie przewieziony, tym więcej na tym zarobimy, ale premie za szybką dostawę bywają różne i czasami spokojnie można zakupić tańszą i wolniejszą lokomotywę do obsługi danej linii, nie martwiąc się o straty (wysokości premii za szybkość dostawy są dostępne po naciśnięciu [Shift]+[g]). Dobrze jest pamiętać o tym, że towar ma swoje miejsce przeznaczenia i jeśli będziemy próbowali go przewieźć do fabryki, która go nie przyjmuje, nic nie zarobimy, a będziemy stratni o koszty działania danego środka transportu. Tego, gdzie należy dowieźć dany towar, możemy dowiedzieć się klikając na obiekcie produkcyjnym (kopalnia, fabryka ...) narzędziem informacji [a]. W otrzymanym oknie znajdziemy opis, dokąd można transportować towary, oraz jakich towarów – i skąd – dany obiekt wymaga (informacje te są również dostępne na mini-mapie: po najechaniu na dany obiekt pokażą się linie pokazujące, gdzie towary mogą być transportowane). Musimy pamiętać, że aby fabryka zaczęła wytwarzać półprodukty, należy dostarczyć wszystkich wymaganych surowców (np. aby móc transportować stal, najpierw należy dostarczyć do huty rudę żelaza i węgiel). Jak zacząć? Aby uruchomić nasze pierwsze połączenie, wybieramy np. kopalnię węgla i elektrownię. Ponieważ będziemy transportować duże ilości surowca, stworzymy po-

łączenie kolejowe. Otwieramy okno budowy kolei i wybieramy rodzaj torów, jaki chcemy położyć, oraz zaznaczamy punkt początkowy i końcowy trasy. Gra automatycznie zbuduje tory łączące oba punkty. Tworzymy też małą odnogę, gdzie stanie zajezdnia (depot). Gdy tory zostaną zbudowane, z naszego konta zostanie odjęty koszt tej inwestycji. Teraz należy postawić stację – tu ważna uwaga: stację i zajezdnię dla pociągów można wybudować , tylko na istniejących torach. Gdy już mamy stację i zajezdnię, wciskamy [a] i klikamy na zajezdni. Aby kupić nową lokomotywę, klikamy na obrazek wybranej maszyny, przechodzimy do zakładki wagony i dobieramy odpowiednie wagony do transportu węgla (jeżeli wybierzemy lokomotywę na węgiel, pierwszym wagonem, jaki dobierzemy, musi być węglarka). Teraz klikamy na przycisk Rozkład jazdy i ustalamy stacje, na których ma się zatrzymywać pociąg. Mamy tu możliwość określenia procentowego załadowania składu, na jaki będzie pociąg oczekiwał, nim ruszy w dalszą drogę. Gdy jesteśmy zadowoleni z ustawień, klikamy Start i nasz pierwszy pociąg wyjedzie na trasę. Analogicznie postępujemy z samochodami: budujemy drogę, przystanki, zajezdnię, kupujemy maszyny, wyznaczamy trasę i uruchamiamy linię. Z komunikacją wodną jest jeszcze łatwiej – musimy tylko zadbać, aby stacja początkowa i końcowa znajdowały się w tym samym akwenie razem ze stocznią, czyli depotem dla statków. Podsumowanie Simutrans to świetna gra, nawet pomimo błędów i wczesnej wersji. Jest to jedna z najciekawszych gier, z jakimi miałem do czynienia – biorąc pod uwagę zarówno gry dla Windows, jak i Linuksa – i wprost nie mogę się już doczekać jej finalnej wersji. Na zakończenie małe ostrzeżenie: w obecnej wersji gry większość użytkowników nie może korzystać z funkcji stawiania znaków z opisem (etykieta), ponieważ powoduje to zamknięcie gry. Drugą rzeczą, o której należy wspomnieć, jest to, że czasami, po zakończeniu gry, X Window nie wraca do poprzedniej rozdzielczości. Możemy sobie z tym poradzić restartując serwer X, bądź uruchomić grę, na moment, w domyślnej rozdzielczości naszego systemu. http://simutrans.de/

Freeciv 2.0.0 beta 4 Freeciv to jedna z najbardziej znanych gier linuksowych, klon popularnej Civilization Sida Meiera. Obecne wydanie – 2.0.0 beta 4 – jest jednym z ostatnich, przed opublikowaniem finalnej wersji 2.0. Lista zmian i ulepszeń jest bardzo długa (http://www. freeciv.org/index.php/NEWS-beta). Najważniejsze to usprawnienie gry sieciowej, lepsza AI przeciwników, nowe jednostki, nowy poziom trudności oraz wiele innych. http://www.freeciv.org/ ZengaiaSpace 0.1.2 Wystartował nowy projekt: ZengaiaSpace – w zamierzeniu ma być rozbudowaną strategią, rozgrywaną on-line, na centralnym serwerze internetowym. W grze naszym zadaniem jest budowanie statków kosmicznych, zdobywanie planet, budowa nowych portów, walka z wrogami, podbój nowych planet i systemów słonecznych. Gra jest napisana w Javie, więc wymaga zainstalowanego w systemie środowiska dla aplikacji napisanych w tym języku. http://www.mpc-donkey.de/index.php? doc=zengaia.htm The Black Legacy Darkness 0.7.4 The Black Legacy Darkness to nowy projekt z gatunku MMORPG (Massive Multiplayer Online Role Playing Game). Jest to gra w realiach średniowiecznych, o świetnej grafice 3D. Używa bibliotek OpenGL oraz SDL. Obecnie jest jeszcze w fazie testów, ale udostępniono już duże miasto (w świecie gry) do zwiedzania. Co ciekawsze, można stworzyć swoje własne mapy w Blenderze, a następnie eksportować je do gry za pomocą skryptu eksportującego, napisanego w Pythonie. http://www.black-legacy.com/ Unreal Tournament 2004 3339 Firma Epic Games wypuściła ostatnio kolejną – piątą już – łatę do gry Unreal Tournament 2004. Obecny pakiet jest kompatybilny z poprzednimi łatami i zawiera wszystkie poprawki z poprzednich wydań. Powinien być instalowany po Editors Choice Bonus Pack, ponieważ aktualizuje część kodu dodanego do gry po jego instalacji. Lista zmian jest dość długa, a poprawiono m.in. błędne efekty dźwiękowe i graficzne towarzyszące niektórym zdarzeniom w grze, a także błąd w przeglądarce serwerów, powodujący niepoprawne wyświetlanie typu gry. http://www.unrealtournament.com/ news/view.php?id=2318

www.lpmagazine.org

51

dla początkujących

Nessus – skaner bezpieczeństwa
Piotr Machej

G

Na płycie CD/DVD zamieściliśmy oprogramowanie omawiane w artykule.

Na płycie CD/DVD

dy podłączamy nasz komputer do Internetu, uzyskujemy dostęp do nieprzebranych zasobów. Równocześnie nasz komputer staje się dostępny dla innych użytkowników. Nie wszyscy z nich są nastawieni pokojowo. Trudno zresztą na to liczyć, biorąc pod uwagę wciąż rosnącą liczbę mieszkańców globalnej wioski. Z tego powodu bardzo ważne jest, aby zdawać sobie sprawę z zagrożeń, które mogą na nas czekać. Jeszcze ważniejsze jest, aby potrafić się przed nimi ochronić. W łataniu powszechnie znanych luk bezpieczeństwa znacznie mogą nam pomóc wszelkiego typu skanery bezpieczeństwa. Programy takie mają za zadanie przetestowanie, czy system jest podatny na określoną metodę ataku. Powinniśmy skorzystać ze skanera (lub kilku skanerów) bezpieczeństwa zaraz po zainstalowaniu systemu. Później powinniśmy powtarzać tę czynność co jakiś czas (np. co miesiąc). Pozwoli to wykryć znane już luki, więc będziemy mieli możliwość załatać je zanim wykorzysta je włamywacz. Pamiętajmy bowiem, że również "czarne charaktery" mogą korzystać z takiego oprogramowania. Jednym z bardziej uniwersalnych (a przy tym otwartym i bezpłatnym) skanerem jest Nessus. Jego wielką zaletą jest aktualność oraz łatwość rozbudowy. Opiera się na wtyczkach, dzięki czemu możemy dodać do niego własne testy. Oprócz tego, możemy automatycznie uaktualniać listę wtyczek, dzięki czemu zostaną one dołączone od razu po udostępnieniu. Niniejszy artykuł ma na celu poprowadzenie Czytelników przez instalację i konfigurację Nessusa, a także zwrócenie uwagi na różne aspekty bezpieczeństwa systemu.

puter jednego z nich padł ofiarą ataku. Jak się okazało, zainstalował on Linuksa i będąc święcie przekonany, że to bezpieczny system, nie podjął żadnych dodatkowych kroków w celu jego zabezpieczenia. Oczywiście, gdy w wyniku ataku script-kiddies stracił dane na dysku, był pełen pretensji do naszego ulubionego systemu. Wytłumaczyliśmy mu, że system dopiero wtedy jest bezpieczny, gdy się o to samemu zadba. I że nie ma tu większego znaczenia, czy jest to Linux, czy Windows. Przy okazji postanowiliśmy sprawdzić, który z naszych komputerów jest lepiej zabezpieczony. Do testów wykorzystaliśmy Nessusa i okazało się, że mój system zajął dopiero trzecie miejsce (na pięć możliwych). Jak to mówią, lenistwo nie popłaca. Oczywiście, od razu załatałem najgroźniejsze ze znalezionych luk bezpieczeństwa i obiecałem sobie, że będę częściej kontrolował system.

Analiza zabezpieczeń

Przede wszystkim musimy odpowiedzieć sobie na pytanie, czy nasz system jest dobrze zabezpieczony. Odpowiedź nie jest taka prosta. Włamywacz ma do dyspozycji szereg różnych technik, z których warto wymienić wykorzystanie słabych haseł, dziur w oprogramowaniu lub błędów w konfiguracji. Nie należy również zapominać o tym, że zwykle najsłabszym ogniwem jest człowiek – to my sami

Przykład użycia

Około rok temu, rozmawiając ze znajomymi na IRC, dowiedziałem się, że kom-

Rysunek 1. Nowe wersje Nessusa pozwalają przeprowadzać również testy lokalne i przyrostowe

52

styczeń 2005

nessus

dla początkujących

możemy nieumyślnie podać intruzowi hasło lub wykonać przysłany przez niego kod, otwierając mu drogę do systemu. Hasła powinny być łatwe do zapamiętania i trudne do odgadnięcia. Nie zawsze trudność odgadnięcia hasła będzie warunkiem wystarczającym, gdyż jeśli jest ono przesyłane przez sieć (np. w celu zalogowania się na zdalną maszynę lub autoryzowania się w serwisie WWW), to może zostać podsłuchane. Z tego powodu lepiej jest używać oprogramowania korzystającego z szyfrowanej transmisji, a w dodatku nigdy nie używać hasła systemowego do autoryzacji w innych serwisach. Z błędami w oprogramowaniu trzeba zawsze się liczyć. Praktycznie każdy program, bardziej skomplikowany niż popularny Hello World, może zawierać błąd – jest to sprawa naturalna. Odpowiednie wykorzystanie niektórych błędów może prowadzić do uzyskania przez intruza większych uprawnień w systemie niż miałby normalnie. Może też pozwolić na uzyskanie dostępu do systemu, do którego intruz w zwykłych okolicznościach nie powinien mieć wcale dostępu. Takie błędy są wcześniej lub później ujawniane, a jeśli autorzy programu opiekują się swoim projektem, to publikują odpowiednie poprawki. W przypadku programów Open Source mogą to zrobić również inni programiści, a nawet my sami (o ile posiadamy odpowiednie umiejętności). Warto więc dbać o to, aby w systemie były zainstalowane jak najnowsze wersje oprogramowania – szczególnie chodzi tu o programy najbardziej narażone na atak, takie jak serwery WWW czy programy pocztowe. Bardzo często zdarza się, że użytkownik przez własną nieuwagę lub niewiedzę staje się ofiarą włamania lub zwykłej utraty danych. Swego czasu wiele osób korzystających z IRC miało zwyczaj doradzać nowym użytkownikom Linuksa zalogowanie się na konto root i wydanie polecenia rm -rf / Jeśli . delikwent był łatwowierny, a na dodatek nie znał jeszcze podstawowych poleceń linuksowych, mogło skończyć się to dla niego niezbyt przyjemnie (wspomniane polecenie bez pytania kasuje wszystkie pliki na dysku). Jak widać, należy mieć mocno ograniczone zaufanie do tego, co mówią inni – czy to na IRC, w listach elektronicznych, czy za pośrednictwem komunikatora. Nie należy też bez namysłu uruchamiać zasłyszanych poleceń czy programów nadesłanych przez nie do końca zaufane osoby. To samo zresztą dotyczy podawania haseł czy udostępniania naszego komputera innym – jeśli to robimy,

to musimy być święcie przekonani, że tej konkretnej osobie możemy zaufać. Wspomniałem o błędach konfiguracji. Tu w zasadzie również wchodzi w grę czynnik ludzki, gdyż błąd w konfiguracji jest zwykle wynikiem naszego przeoczenia, pomyłki w planowaniu lub po prostu nieznajomości niektórych dostępnych opcji. Wyobraźmy sobie sytuację, gdy wydaje nam się, że zabezpieczyliśmy dobrze nasz komputer. Założyliśmy dobre hasła, uruchomiliśmy zaporę sieciową i udostępniliśmy na zewnątrz tylko wybrane usługi. I wszystko byłoby w porządku, ale... w zaporze sieciowej pomyliliśmy kolejność dwóch regułek. I to wystarczy, aby działała nie do końca zgodnie z naszymi oczekiwaniami – może przykładowo dawać dostęp do portu, który miał być zablokowany. A włamywacz tylko czeka na takie okazje.

Rysunek 2. Nessus potrafi przeprowadzać równoczesne testy na różnych komputerach

Instalacja Nessusa

Przed zainstalowaniem Nessusa warto zadbać o to, aby w systemie były zainstalowane biblioteki i pliki nagłówkowe OpenSSL. W przypadku Auroksa jest to pakiet openssl-devel. Zaczynamy od wejścia na stronę domową programu (http://www.nessus.org/ ). Wybieramy sekcję Download, a następnie odnośnik Nessus 2.2 (w chwili pisania artykułu była to wersja najnowsza). Z wyświetlonej strony możemy dowiedzieć się o trzech metodach instalacji Nessusa. My zdecydujemy się na drugą – prostą, a równocześnie bezpieczniejszą od najłatwiejszej metody. W sekcji The easy and less dangerous way znajdziemy spis adresów, pod którymi możemy znaleźć instalator. Wybieramy jeden z nich (np. http:// ftp.gwdg.de /pub /linux /misc/nessus / nessus-2.2.0/nessus-installer/ ) i pobieramy z niego plik nessus-installer.sh. Teraz już wystarczy wejść do katalogu, w którym zapisaliśmy plik i uruchomić go poleceniem sh nessus-installer.sh. Tę operację wykonujemy z poziomu zwykłego użytkownika (nie wchodzimy na konto root). Po przeczytaniu informacji powitalnej możemy wcisnąć klawisz [Enter]. Program zostaje rozpakowany, a następnie jesteśmy powiadomieni, że zostanie utworzona tymczasowa powłoka z ustawionym bitem SUID. Pozwoli to instalatorowi w razie potrzeby na automatyczne korzystanie z uprawnień użytkownika uprzywilejowanego. Przyjmujemy to do wiadomości wciskając klawisz [Enter], a następnie poda-

jemy hasło użytkownika root (przy pytaniu o Root Password). Instalator pyta nas o katalog, w którym chcemy zainstalować Nessusa. Klawiszem [Enter] zatwierdzamy domyślny wybór (chyba, że z jakiegoś powodu chcemy go zmienić – wówczas wpisujemy naszą ścieżkę). Po kolejnym wciśnięciu klawisza [Enter] następuje kompilacja i instalacja programu (w razie konieczności poprzedzona usunięciem starszej wersji). Na koniec zostają wyświetlone ostatnie wskazówki i możemy opuścić instalator ponownym wciśnięciem klawisza [Enter]. Jak widać, dzięki instalatorowi mogliśmy ograniczyć się do wciskania tylko jednego klawisza, chociaż pozostało przed nami jeszcze kilka czynności. Najpierw musimy wygenerować certyfikat, który będzie wykorzystywany do szyfrowania komunikacji pomiędzy serwerem i klientem Nessusa. W tym celu wydajemy polecenie /usr/local/ sbin/nessus-mkcert (do tego już potrzebujemy uprawnień superużytkownika, więc najpierw korzystamy z polecenia su - i podajemy hasło użytkownika root). Oczywiście, jeśli zainstalowaliśmy Nessusa w innym katalogu niż domyślny, to ścieżka do programu nessus-mkcert będzie odpowiednio inna. Kolejno będziemy musieli podać następujące informacje: • termin ważności certyfikatu CA (w dniach), • termin ważności certyfikatu serwera (w dniach), • kod naszego państwa (np. dla Polski – PL), • nazwa naszego województwa lub powiatu, • nazwa miasta, • nazwa naszej organizacji. Jeśli mamy wątpliwości, co powinniśmy wpisać, możemy skorzystać z wartości

www.lpmagazine.org

53

dla początkujących

adresu komputera. W jego miejsce podstawiany jest adres komputera, z którego łączy się użytkownik korzystający z Nessusa. Dzięki temu łatwo można pozwolić użytkownikowi tylko na testowanie jego własnego komputera. Odpowiednie regułki wyglądają następująco:
accept client_ip

Rysunek 3. Te systemy wymagają wprowadzenia jeszcze kilku zabezpieczeń

default deny

domyślnych. Po przeczytaniu informacji o nazwach plików, w których zostały zapisane poszczególne certyfikaty, możemy wcisnąć [Enter]. Teraz musimy dodać użytkownika, który będzie mógł korzystać z Nessusa. Nie opuszczając konta użytkownika root, wydajemy polecenie /usr/local/sbin/ nessus-adduser Podajemy nazwę użyt. kownika, a następnie wybieramy sposób uwierzytelniania. Prostsze jest korzystanie z hasła niż z certyfikatu, więc wybieramy tę pierwszą metodę (pass). Oczywiście, należy też podać nasze hasło. Pamiętajmy jednak, aby nie było to takie samo hasło, jak do któregoś z naszych kont. Jeśli wybraliśmy metodę uwierzytelniania za pomocą certyfikatu, to będziemy musieli odpowiedzieć na te same pytania, co przy tworzeniu certyfikatu Nessusa (a oprócz tego, na dwa dodatkowe – o nazwisko i imię oraz o adres e-mail). Tworząc użytkownika możemy od razu nałożyć na niego ograniczenia. Dotyczą one adresów komputerów, które może testować dany użytkownik. Jeśli nie chcemy ustalać żadnych ograniczeń, to po prostu możemy wcisnąć kombinację klawiszy [Ctrl]+[d]. W innym przypadku możemy wpisać szereg reguł (po jednej w każdej linii), np.:
accept 192.168.100.0/24 accept 192.168.5.1 default deny

Wpisywanie regułek kończymy znaną już kombinacją [Ctrl]+[d]. Wprowadzone dane potwierdzamy wpisując y. Przed uruchomieniem serwera warto sprawdzić, czy nie pojawiły się nowe wtyczki. Wydajemy polecenie /usr/local/ sbin/nessus-update-plugins – jeśli zostaną znalezione nowe wtyczki, program je zainstaluje. Oczywiście, do wykonania tego polecenia potrzebujemy połączenia z Internetem. Teraz możemy już uruchomić serwer Nessusa poleceniem /usr/local/sbin/ nessusd -D. Pojawi się informacja o ładowaniu wtyczek (ang. plugins). Jeśli nie zadbaliśmy o skompilowanie Nessusa z obsługą OpenSSL, to może pojawić się kilka ostrzeżeń. Jeśli zainstalowaliśmy wcześniej wspomniany pakiet openssldevel, to powinniśmy zobaczyć napis All plugins loaded. Klienta Nessusa uruchamiamy już z konta zwykłego użytkownika poleceniem /usr/local/bin/nessus.

Konfiguracja Nessusa

Powyższe linie pozwalają użytkownikowi na testowanie komputerów w sieci 192.168.100.0/24 oraz komputera 192.168.5.1. Żadnego innego komputera nie będzie mógł przetestować, gdyż domyślna reguła odmawia mu dostępu (default deny). Oczywiście, reguły można zbudować inaczej – zabronić dostępu do określonych komputerów i pozwolić do wszystkich pozostałych. Ciekawostką jest możliwość użycia słowa client_ip zamiast

Po uruchomieniu pokazuje się nam okno programu z kilkoma zakładkami. Na razie interesuje nas tylko pierwsza, gdyż musimy połączyć się z serwerem Nessusa. W polu Nessusd Host wpisujemy nazwę komputera, na którym jest uruchomiony serwer. Jeśli jest uruchomiony na komputerze, z którego korzystamy, możemy po prostu wpisać localhost. Pole Port pozostawiamy bez zmian – Nessus standardowo nasłuchuje na porcie 1241. W polach Login i Password wpisujemy nazwę i hasło użytkownika Nessusa (te, które wpisywaliśmy po wydaniu polecenia nessus-adduser Teraz wystarczy wcisnąć przycisk Log ). in. Przy pierwszym uruchomieniu pojawi się informacja o certyfikacie. Sprawdzamy, czy jest on poprawny, tzn. wyświetlone wartości zgadzają się z tym, co podawaliśmy podczas jego tworzenia, a następnie zatwierdzamy go wciskając Yes. Po zalogowaniu się zostaniemy przeniesieni do drugiej zakładki (Plugins),

gdzie możemy zapoznać się ze wszystkimi dostępnymi wtyczkami. Biorąc pod uwagę, że jest ich obecnie sporo ponad 5 tysięcy, mamy lekturę na dłuższy czas. Na szczęście, jeśli chcemy przeprowadzić kompletny test, nie musimy czytać opisu wszystkich wtyczek (opisy są dostępne po wskazaniu konkretnej wtyczki). W górnej części znajduje się spis grup, natomiast w dolnej spis wtyczek należących do danej grupy. Możemy zaznaczyć wszystkie wtyczki wciskając przycisk Enable all. Należy zwrócić uwagę, że niektóre testy mają na celu destabilizację testowanego systemu (tzw. ataki odmowy usługi). Jeśli wolimy nie przeprowadzać aż tak niebezpiecznych testów, możemy je wyłączyć przyciskiem Enable all but dangerous plugins. Dodatkowo możemy wyłączyć całą grupę testów związanych z odmową usługi (Denial of Service). Oczywiście, nic nie stoi na przeszkodzie, aby przeprowadzić tylko pojedyncze, wybrane testy. W tym celu wystarczy najpierw wcisnąć przycisk Disable all, a następnie ze spisu wybrać potrzebne nam wtyczki. Warto przy tym zaznaczyć opcję Enable dependencies at runtime, dzięki czemu w razie potrzeby zostaną zaznaczone inne potrzebne wtyczki (jeśli są potrzebne do działania wybranych przez nas testów). Dostępny przycisk Filter pozwala nam na wyświetlenie tylko wtyczek spełniających określone kryteria (np. w nazwie lub opisie zawierających słowo ssh). Następne dwie zakładki (Prefs. i Scan options) służą do ustawienia dokładniejszych opcji. Możemy tu zdecydować, jaka technika skanowania portów ma być zastosowana, jakie

Ostrzeżenie

Skaner systemowy możemy stosować tylko względem systemów komputerowych i sieci, które należą do nas lub co do których uzyskaliśmy stosowną zgodę. Niezastosowanie się do tej zasady może grozić niezbyt przyjemnymi konsekwencjami, z odpowiedzialnością karną włącznie. O ile bowiem trudno podstawowe skanowanie jednoznacznie uznać za próbę ataku, o tyle niektórzy administratorzy są na tym punkcie mocno przewrażliwieni. Ponadto, niektóre testy mogą doprowadzić do zawieszenia niektórych usług, a to w przypadku systemów produkcyjnych nie może już być traktowane w kategorii żartu.

54

styczeń 2005

nessus

dla początkujących

nazwy użytkowników i hasła mają być użyte przy logowaniu się do poszczególnych usług oraz możemy określić liczbę testów wykonywanych w tym samym czasie. Jest tu też dostępna opcja Safe checks (domyślnie włączona). Powoduje ona, że potencjalnie groźne wtyczki wykonują "łagodniejsze" testy, np. opierając się na rozpoznaniu wersji oprogramowania, zamiast na własnych testach. Należy pamiętać, że nie wszystkie wtyczki uwzględniają tę opcję. Jej użycie może też prowadzić do pojawienia się większej liczby fałszywych alarmów (więcej informacji w ramce Fałszywe alarmy). Jeśli nie wiemy, do czego służy dana opcja, lepiej pozostawić ją w domyślnym ustawieniu. W zakładce Target selection możemy wreszcie określić, który komputer chcemy skanować. Jego adres wpisujemy w polu Target(s). Oczywiście, zamiast pojedynczego adresu (np. 127.0.0.1) możemy od razu wpisać cały zakres (np. 192.168.0.1-192.168.2.50 lub 192.168.10.1/24). Możemy też wymienić kilka pojedynczych kompu-

terów i kilka zakresów oddzielając je przecinkami. Te opcje powinny nam wystarczyć. Teraz już możemy wcisnąć widoczny na dole okna przycisk Start the scan. Otworzy się kolejne okno, w którym będziemy mogli obserwować przebieg skanowania poszczególnych komputerów. Gdy skanowanie zakończy się, otwarte zostanie okno z raportem.

Analiza wyników

Pora sprawdzić, co znalazł Nessus na naszym systemie. Okno raportu podzielone jest na pięć części. Po lewej stronie widzimy adresy testowanych podsieci (Subnet). Przy ich adresach można zauważyć znaczek określający, czy Nessus wykrył jakieś problemy. Ikona żarówki oznacza informację, znak ostrzeżenia z wykrzyknikiem oznacza ostrzeżenie dotyczące bezpieczeństwa, a znak zakazu wjazdu oznacza potencjalną lukę w bezpieczeństwie. Po wybraniu konkretnej podsieci w okienku poniżej (Host) pojawi się spis przetestowanych komputerów należących do tej podsieci. Również tutaj możemy na

Rysunek 4. Z pomocą obszernego podręcznika możemy napisać własne wtyczki do Nessusa

pierwszy rzut oka ocenić, który komputer jest najbardziej zagrożony. Po zaznaczeniu adresu komputera w umieszczonym na górze oknie Port, pojawi się spis znalezionych portów (ponownie z informacją o zagrożeniach). Wybranie jednego z nich sprawia, że w umieszczonym obok okienku Severity zobaczymy listę zagrożeń uporządkowaną względem powagi. Dopiero, gdy wskażemy jedno z nich, w głównej części okna zobaczymy szczegółowy opis luki. Metody sortowania w poszczególnych oknach możemy

R

E

K

L

A

M

A

www.lpmagazine.org

55

dla początkujących

dowolnie zmieniać, dzięki czemu znajdywać luki w inny sposób. Przykładowo, warto zamienić miejscami pola Port i Severity, ale również inne kombinacje mogą dać ciekawe efekty – wszystko zależy od tego, jakie informacje bardziej nas interesują. Istotne jest, abyśmy zapoznali się ze wszystkimi informacjami zawartymi w głównym oknie. W przypadku ostrzeżeń i powiadomień o lukach w bezpieczeństwie otrzymujemy opis zagrożenia. Przykładowo, w sytuacji wykrycia przez Nessusa serwera WWW Apache w wersji starszej niż 2.0.51, jesteśmy powiadamiani o jego wrażliwości na zdalny atak odmowy usługi (DoS – Denial of Service). Wersje te są również podatne na atak z wykorzystaniem przepełnienia bufora. Oprócz takiego opisu, możemy też zobaczyć kilka dodatkowych rubryk. Adres podany w See also pozwala nam zapoznać się z szerszym opisem błędu. Najważniejsza dla nas jest zawartość rubryki Solution, gdyż opisuje ona możliwe rozwiązanie problemu. W przypadku wspomnianego błędu rozwiązaniem jest uaktualnienie serwera Apache do wersji 2.0.51 lub

Fałszywe alarmy

Należy pamiętać, że Nessus przeprowadza analizę na podstawie dostępnych informacji. Może się okazać, że będą one niewystarczające lub doprowadzą do błędnych wniosków. Z tego powodu część ostrzeżeń, a nawet powiadomień o lukach w zabezpieczeniach, może okazać się fałszywa. Może się tak przykładowo zdarzyć w sytuacji, gdy Nessus jest w stanie rozpoznać oprogramowanie nasłuchujące na określonym porcie, ale nie umie ustalić jego wersji. W tym przypadku może ostrzec o błędach, które dotyczą wcześniejszych wersji tego programu niż zainstalowana w naszym systemie. Inna sytuacja, gdy ostrzeżenie może być fałszywe, to przypadek, gdy błąd sam w sobie jest groźny, ale ze względu na podjęte przez nas inne czynności (np. odpowiedni podział dysku na partycje), w naszym systemie okazuje się być nieszkodliwy. Nie da się wyliczyć wszystkich sytuacji, gdy Nessus może zwrócić fałszywe alarmy. Dobrze jest uważnie czytać opisy zgłoszeń i starannie je analizować. Nessus zwraca stosunkowo mało fałszywych alarmów, ale nie należy mu ufać bezgranicznie.

nowszej. Dalej możemy dowiedzieć się, jak duże ryzyko (Risk factor) jest związane z danym błędem. W tym przypadku ryzyko jest wysokie (High). Najlepiej jak najszybciej uaktualnić oprogramowanie. W przypadku innych ostrzeżeń, ryzyko może być średnie (Medium) lub niskie (Low), a w przypadku informacji o bezpieczeństwie – nawet zerowe (None). Niemniej, powinniśmy zapoznać się ze wszystkimi informacjami, gdyż każda z nich może być istotna. Przykładowo, może okazać się, że jedna z usług, pomimo naszych starań, nadal jest dostępna z Internetu, a nie tylko z sieci lokalnej. Nie należy od razu podejmować czynności opisanych w Solution bez zapoznania się z całym opisem problemu. Może bowiem okazać się, że w ten sposób zablokujemy sobie usługę, na której nam zależało, a co do której tylko dostaliśmy pewne pouczenie (jak ma to miejsce w przypadku zainstalowanego oidentd, potrzebnego do łączenia z niektórymi serwerami IRC). Jeśli chcemy uzyskać jeszcze więcej informacji na temat błędu, możemy skorzystać z wartości podanych w rubrykach CVE i BID. Pierwsza z nich podaje symbole, według których możemy wyszukiwać informacje na stronie Common Vulnerabilities and Exposures (pod adresem http://www.cve.mitre.org/cve/index .html wpisujemy symbol w polu CVE Name). Druga podaje identyfikator błędu na liście BugTraq (możemy go wpisać w polu Bugtraq ID na stronie http:// www.securityfocus.com/bid/bugtraqid/ ). Raport ze skanu możemy zapisać na dysku korzystając z przycisku Save report. Do wyboru mamy kilka różnych formatów zapisu danych. Jeśli zdecydujemy się zapisać raport w formacie NBE, to później będziemy mogli go ponownie otworzyć w kliencie Nessusa. Jeśli natomiast chcemy później obejrzeć raport wraz z różnymi wykresami i zestawieniami w przeglądarce internetowej, to powinniśmy wybrać format HTML with Pies and Graphs. Wyniki skanowania zależą od tego, jakie opcje dobierzemy. Warto zapoznać się z obszerną dokumentacją dostępną na stronie domowej Nessusa, aby lepiej poznać jego możliwości i zastosowanie poszczególnych opcji konfiguracyjnych. Z pewnością sprawi to, że będziemy mogli lepiej dobierać ustawienia do naszych potrzeb, co w rezultacie pozwoli skuteczniej zwiększyć bezpieczeństwo systemu i sieci.

Rysunek 5. W serwisie SecurityFocus możemy wyszukiwać informacje o lukach na podstawie różnych kryteriów

Dodatkowe oprogramowanie

Nessus, oprócz własnych wewnętrznych testów, może wykorzystywać kilka innych programów. Przykładowo, program Nmap może być użyty do skanowania portów i wielu bardziej zaawansowanych operacji, takich jak rozpoznawanie systemu operacyjnego. Jeśli zależy nam na przeprowadzeniu testów odporności haseł na złamanie, możemy zainstalować program Hydra. Pozwoli on na wykonanie prób brutalnego złamania haseł (bruteforce attack) w takich usługach, jak Telnet, WWW, POP3, IMAP i inne. Oprócz tego, można wykorzystać program Nikto – zapewnia on obsługę specyficznych ataków i testów dotyczących serwerów WWW i usług skryptów CGI. O ile program Nmap możemy znaleźć w większości dystrybucji Linuksa, o tyle pozostałe programy raczej musimy zainstalować osobno. Nie są one niezbędne do działania Nessusa, ale zwiększają jego funkcjonalność. Adresy ich stron domowych znajdują się w ramce W Internecie.

Przykładowe testy

W rozdziale Analiza wyników mogliśmy zapoznać się ze sposobem odczytywania wyników testów. Spróbujmy teraz zobaczyć kilka wyników z prawdziwego skanowania i zastanowić się, jak je traktować. Analizie został poddany komputer z dosyć dawno instalowanym systemem, tylko w razie potrzeby uzupełnianym nowymi pakietami, więc zgłoszeń błędów było dosyć dużo (7 luk, 18 ostrzeżeń i 39 informacji). Raport został zapisany w formacie HTML with Pies and Graphs. Na pierwszej stronie raportu został przedstawiony w formie graficznej pro-

56

styczeń 2005

nessus

dla początkujących

centowy udział poszczególnych poziomów ryzyka. Ponieważ poziomy High i Medium uzyskały odpowiednio po 11% i 28%, to odpowiednie kroki powinno podjąć się jak najszybciej. Najbardziej zagrożonymi usługami okazały się CVSpserver i usługa działająca na porcie 5432 (zidentyfikowana później jako PostgreSQL). co przedstawił kolejny wykres. W celu uzyskania dokładniejszych informacji powinniśmy przejść do części drugiej raportu, wskazując nazwę testowanego komputera. Tu możemy zobaczyć listę otwartych portów. Okazuje się, że jest ich aż 34, z czego na pięciu Nessus znalazł luki bezpieczeństwa (CVSpserver, MySQL, HTTPS, Microsoft-ds i port 5432, wykorzystywany przez PostgreSQL), a dla sześciu wyświetlił ostrzeżenia. Poza tym jedenaście portów zostało opatrzonych informacjami, a pozostałe zostały tylko zakomunikowane jako nasłuchujące. Zapoznajmy się najpierw z dwoma lukami dotyczącymi serwera CVS. Pierwsza z nich została wykryta przez wtyczkę opisaną na stronie http://cgi.nessus.org/plugins/dump.php3?id =11970. Do opisów wtyczek prowadzą odnośniki umieszczone w polu Nessus ID. Jest to ostrzeżenie przed błędem istniejącym w CVS do wersji 1.11.10, mogącym pozwolić intruzowi na wykonywanie w systemie poleceń z uprawnieniami użytkownika root. Ponieważ Nessus nie był w stanie określić numeru wykorzystywanej wersji CVS, pojawiło się ostrzeżenie, że może to być fałszywy alarm. Niestety, sprawdzenie w testowanym systemie (rpm -q cvs) wykazało, że jednak jest on narażony na atak – zainstalowana wersja CVS to 1.11.2-10. Zalecanym przez Nessusa (i w zasadzie najlepszym) rozwiązaniem jest aktualizacja oprogramowania do wersji co najmniej 1.11.11. Zanim to zrobimy, zapoznajmy się z opisem drugiej luki. Ta została wykryta przez wtyczkę opisaną na stronie http://cgi.nessus.org/plugins/dump. php3?id=12265. Również ta luka nie jest mała – ze względu na brak terminatora NULL w źle sformatowanych ciągach tekstowych, intruz może wykonywać pewne polecenia w naszym systemie. Zalecana jest aktualizacja aż do wersji 1.11.17, a więc wyższej niż przy poprzedniej luce.

Obie te luki umożliwiają atak z zewnątrz, więc należą do najbardziej niebezpiecznej grupy. O ile w przypadku pierwszej z nich nie potwierdzono istnienia działających eksploitów, o tyle w przypadku drugiej taki kod istnieje. Oprócz nich, Nessus zgłosił dwa ostrzeżenia dotyczące serwera CVS. Pierwszy z nich (http://cgi.nessus.org/ plugins/dump.php3?id=11947) dotyczy błędu sprawdzania wprowadzanych danych, mogącego pozwolić intruzowi na tworzenie katalogów i plików w głównym katalogu systemu plików przechowującego drzewo CVS. Drugi z kolei (http://cgi.nessus.org/plugins/ dump.php3?id=12212) może pozwalać na pobieranie plików RCS nawet spoza głównego katalogu CVS. Do poprawienia tych błędów powinno wystarczyć uaktualnienie CVS do wersji 1.11.15 lub wyższej. Korzystając z informacji zawartych we wszystkich czterech zgłoszeniach, ostatecznie powinniśmy się zdecydować na wersję 1.11.17 lub wyższą. Warto zwracać uwagę na komunikaty informacyjne. Właśnie odnośnie serwera CVS został wyświetlony jeden taki komunikat (http://cgi.nessus.org/ plugins/dump.php3?id=10051). Sugeruje on, aby zablokować dostęp z zewnątrz dla portu CVS. Jest to mądre, i o ile tylko nie musimy udostępniać serwera CVS osobom z sieci, powinniśmy dopisać odpowiednią regułkę w zaporze sieciowej. Jeśli koniecznie musimy udostępnić serwer, to powinniśmy przynajmniej ograniczyć liczbę komputerów, które mogą się z nim łączyć. Warto też zauważyć, że powinno to automatycznie zniwelować możliwość wykorzystania przez włamywacza wymienionych wcześniej luk. Innym przykładem portu, który powinien być odfiltrowany na zaporze sieciowej, jest port 901, należący do programu SWAT. O ile bowiem błąd przedstawiony w ostrzeżeniu (http://cgi.nessus.org /plugins /dump. php3?id=10273) dotyczy dosyć starej wersji 2.0.7 (więcej informacji na stronie http://www.securityfocus.com/bid/ 1872). o tyle rzeczywiście możliwe jest wykonanie brutalnego ataku na tę usługę. Może to być szczególnie niebezpieczne, jeśli hasła Samby są zsynchronizowane z hasłami systemowymi. Oczywiście, zamiast filtrować port na

zaporze sieciowej możemy po prostu wyłączyć SWAT (o ile go nie potrzebujemy). Jak widać, w celu wyrobienia sobie obrazu tego, co musimy zrobić, powinniśmy zapoznać się ze wszystkimi opisami błędów, ostrzeżeniami, a nawet zwykłymi informacjami. W przypadku, gdy chodzi o bezpieczeństwo, nie powinniśmy pozwalać sobie na niedbałość. Poza tym, szkoda naszej pracy – gdybyśmy działali od razu po przeczytaniu każdej informacji, to serwer CVS uaktualnialibyśmy w najgorszym przypadku cztery razy.

Zakończenie

Zabezpieczanie komputerów i sieci to wyścig bez końca. Należy pamiętać, że istnieje pewna granica, której podczas zabezpieczania nie możemy lub nie powinniśmy przekroczyć. Jest to granica wygody naszej lub naszych klientów w korzystaniu z systemu lub sieci. Nie ulega bowiem wątpliwości, że nie ma sensu zabezpieczać komputera do tego stopnia, że nikt nie będzie chciał z niego korzystać. Jakie dane będziemy wtedy chronić? Znalezienie kompromisu pomiędzy wygodą i bezpieczeństwem to właśnie nasze zadanie. Należy do niego nie tylko zabezpieczenie sprzętu i oprogramowania, ale również odpowiednie wychowanie użytkowników. Pamiętajmy zawsze o tym, że łańcuch zabezpieczeń jest tak silny, jak jego najsłabsze ogniwo. A najsłabszym ogniwem bardzo często okazuje się człowiek.

W Internecie:
• • Strona domowa programu Nessus: http://www.nessus.org/ Strona domowa programu Nmap: http://www.insecure.org/nmap/ index.html Strona domowa programu Hydra: http://www.thc.org/releases.php Strona domowa programu Nikto: http://www.cirt.net/code/nikto.shtml Wprowadzenie do Nessusa (artykuł autorstwa Harry'ego Andersona): http://www.securityfocus.com/ infocus/1741 Lista BugTraq: http://www.securityfocus.com/ archive/1

• • •

www.lpmagazine.org

57

dla początkujących

Sztuczki i kruczki
Grzegorz Niewęgłowski Synchronizowanie czasu i daty z serwerami w Internecie
Wygodnym sposobem ustawiania daty systemowej jest synchronizowanie jej ze specjalnymi serwerami czasu. Dzięki temu mamy poprawnie działający, co do sekundy, zegar systemowy i na dodatek nie musimy przeprowadzać tej operacji ręcznie – wystarczy tylko znaleźć adres odpowiedniego serwera. Najpopularniejsze są polecenia rdate i ntpdate (odpowiednio z pakietów rdate i ntp). Do normalnych zastosowań wystarcza rdate, ale dla osób potrzebujących precyzji idącej w milisekundy, ntpdate będzie lepszym wyborem. Dobrym źródłem aktualnego czasu jest ntp.task.gda.pl. Najpierw warto sprawdzić, czy możemy połączyć się z serwerem i czy jego czas jest poprawny. Zdalny czas odczytujemy tymi poleceniami:
# rdate ntp.task.gda.pl # ntpdate -q ntp.task.gda.pl

gar. Synchronizacja zmienia tylko zegar Linuksa, ale nadal działa nieskorygowany zegar płyty głównej. Dlatego, aby zmiana była stała, należy po synchronizacji zegara zapisać jego ustawienia w zegarze płyty głównej. Wykonamy to programem /sbin/ hwclock, który wchodzi w skład Utillinux :
# /sbin/hwclock –systohc

Listing 1. Przykładowa sekcja “Files”
Section "Files" FontPath "/usr/lib/X11/fonts/misc" FontPath "/usr/lib/X11/fonts/S 100dpi” FontPath "/usr/lib/X11/fonts/75dpi" FontPath "/usr/lib/X11/fonts/Type1" FontPath "/usr/share/fonts/S FantasyTTF" EndSection

Wiele dystrybucji Linuksa (choć nie wszystkie) wykonują taką czynność automatycznie przy wyłączaniu komputera, ale jeśli nie mamy co do tego pewności, to lepiej samodzielnie zapisać ustawienia zegara po synchronizacji. ■

X-Server i dostęp do fontów
Wiele razy spotykam się z pytaniem: „A po co jest ten cały xfs ?”, w odniesieniu do tajemniczego programu potrzebnego X-om do pracy. Xfs jest serwerem fontów. To oznacza, że w oparciu o swój plik konfiguracyjny, definiujący, gdzie położone są fonty, udostępnia je X-om. Ma naturę sieciową i może obsługiwać wielu klientów, więc możliwe jest uruchomienie pojedynczego serwera Xfs w sieci lokalnej i takie skonfigurowanie X-ów na innych maszynach, aby wszystkie pobierały od niego fonty. Pozwala to zaoszczędzić miejsce na dysku (wielu klientów ma wspólne repozytorium fontów) i często ominąć pewne restrykcje licencyjne samych fontów (korzysta się z pojedynczej kopii fontów). Ale czy ma to sens w przypadku typowej stacji roboczej, gdy fonty leżą na lokalnym dysku? Kiedyś owszem, gdyż miało to swoje uzasadnienie – tylko zewnętrzne serwery fontów umiały udostępniać fonty TrueType. Obecnie sam X-Server (nieważne, czy wersja XFree86, czy X.org) dos-

Jeśli podawany czas jest poprawny, możemy zsynchronizować według niego własny komputer. Ten krok wymaga już uprawnień superużytkownika, bo przestawieniu ulegnie zegar systemowy Linuksa:
# rdate -s ntp.task.gda.pl # ntpdate ntp.task.gda.pl

Taka korekta zniknie jednak zapewne po restarcie komputera. Jest to spowodowane istnieniem dwóch osobnych zegarów – jeden z nich to zegar utrzymywany przez Linuksa w trakcie jego pracy, a drugi jest wbudowany w płytę główną i podtrzymywany bateryjką po wyłączeniu maszyny. Przy uruchamianiu, Linux odczytuje jego ustawienia i bazując na nich zaczyna prowadzić swój własny ze-

konale radzi sobie z obsługą fontów bitmapowych i skalowalnych (w tym TrueType). Można więc zrezygnować z osobnego serwera fontów, wyłączając jego proces i zdając się na mechanizmy wbudowane w same X-y. Oszczędzi to trochę zasobów, a uruchamianie X-ów stanie się prostsze (nie trzeba będzie najpierw uruchamiać xfs). Zmian dokonujemy w pliku konfiguracyjnym X-ów, czyli /etc/X11/ XF86Config (lub xorg.conf ). Najpierw musimy poprawić sekcję Files, usuwając z niej wiersz FontPath "unix/: 7100" (lub podobny). Zamiast niego wpisujemy bezpośrednio ścieżki dostępu do katalogów z fontami – można posiłkować się zawartością konfiguracji Xfs, zwykle w /etc/X11/fs/config. Powinniśmy wpisać te katalogi do sekcji Files tak, aby wyglądała podobnie do tej z Listingu 1 (oczywiście, katalogi z fontami mogą być inne). Oprócz tego, konieczne może być skorygowanie sekcji Module. W zależności od używanych fontów, musimy włączyć odpowiednie moduły:
Load "freetype" Load "type1" Load "bitmap"

58

styczeń 2005

sztuczki i kruczki

dla początkujących

Moduł freetype odpowiada za fonty TrueType (*.ttf ). Moduł type1 obsługuje fonty Adobe Type1 (*.afm, *.pfm, *.pfb), a niezbędny moduł bitmap fonty bitmapowe (zwykle w plikach *.bdf ). Jeśli nie mamy zamiaru używać np. fontów Type1, to możemy pominąć ładowanie odpowiedniego modułu. ■

Dlaczego mój Aterm/Eterm nie jest przezroczysty?
Nowi użytkownicy terminali obsługujących przezroczystość (np. Aterm lub Eterm) często ze zdziwieniem zauważają, że tło, zamiast oczekiwanej przezroczystości, jest całkiem czarne. Wyjaśnienie jest proste – aby przezroczystość mogła zadziałać, potrzebna jest jakaś tapeta na pulpicie. Nie jest to jedyny warunek, gdyż oprócz tego, tapeta musi być ustawiana specjalnym programem, przystosowanym do wykonywania w pamięci operacyjnej specjalnej kopii tapety na użytek przezroczystości. Takimi programami są przykładowo Esetroot (zwykle rozprowadzany razem z Etermem) oraz Habak (używany w silnie zorientowanym na efekty przezroczystości projekcie Fvwm Crystal ). Używając odpowiedniego narzędzia do ładowania tapety, bez problemu osiągniemy np. takiego Aterma jak na Rysunku 1. ■

w jądrze zabrakło obsługi jakiegoś specyficznego urządzenia. W tym przypadku chodzi o urządzenie typu char (urządzenie znakowe), o głównym (major) numerze równym 10 oraz pobocznym (minor) równym 135. Na szczęście, ten kod da się przełożyć na język zrozumiały dla zwykłego użytkownika – odpowiedzi można znaleźć w pliku /usr/src/linux/ Documentation/devices.txt (jest on częścią dokumentacji jądra). Znajdują się w nim szczegółowe tabele opisujące kombinacje numerków i typów. Najpierw musimy znaleźć rozpiskę dla głównego numeru 10 urządzeń znakowych. Szukanie ciągu 10 char od razu zaprowadzi nas tam, gdzie trzeba. Teraz wystarczy odszukać pozycję z numerem pobocznym 135. Oto jak wygląda ten fragment dokumentacji:
(...) 134 = /dev/apm_bios 135 = /dev/rtc Advanced PowerS Management BIOS Real Time Clock SPARC OpenBootS PROM 139 = /dev/openprom

wywać się jak typowa linuksowa aplikacja. Oczywiście, możemy użyć dowolnej innej ścieżki, ale ~/.Choices wydaje się być naturalnym wyborem. ■

Położenie katalogu ze źródłami jądra
Umieszczasz swoje źródła jądra w /usr/ src/linux ? A ktoś mówi, że to zły nawyk? Pora to wyjaśnić, bo dookoła miejsca, w którym trzyma się źródła jądra, narosło już dość nieporozumień. Tak naprawdę chodzi nie o jądro, lecz bibliotekę glibc. Zawsze integruje się ona z nagłówkami jądra, na którym jest kompilowane, również z częścią nagłówków Linuksa. I to o te nagłówki chodzi. Po instalacji glibc powinny się one znajdować w /usr/include/ linux i /usr/include/asm (oraz /usr/ include/asm-generic na nowszych systemach). Do tych katalogów odwołują się nagłówki glibc i w katalogach tych powinny zawsze znajdować się kawałki tego jądra, na którym glibc skompilowano. Aby zaoszczędzić miejsce na dysku, wiele dystrybucji, zamiast kopiować pliki do /usr/include/linux, po prostu robiło tam dowiązania symboliczne od źródeł jądra w /usr/src/linux. Dzięki temu nie dublowało się plików, ale dochodziło do potencjalnie niebezpiecznej sytuacji – w momencie aktualizacji źródeł jądra, poprzez dowiązania symboliczne dochodziło też do aktualizacji części nagłówków glibc – tyle, że samo glibc nic o tym nie wiedziało. W efekcie mogło dojść przez to do konfliktów nagłówków i trudnych do przewidzenia awarii w nowo kompilowanych programach. Jeśli jesteśmy ciekawi, to sprawdźmy, jak wyglądają nasze pliki /usr/ include/linux itp. – jeśli to prawdziwe katalogi, to spokojnie możemy trzymać źródła najnowszego jądra w /usr/src/linux, bo nie powoduje to podmieniania nagłówków. Jeśli jednak /usr/include/linux to nie katalog, a dowiązanie symboliczne prowadzi gdzieś do /usr/src/linux, to lepiej nie zmieniajmy tam nic i źródła najnowszego jądra ściągniętego z http:// www.kernel.org rozpakowujmy w jakimś innym miejscu. ■

Co znaczą symbole typu char-major-10-135 w logach?
Czasem w logach jądra, zwłaszcza po pierwszych w życiu próbach samodzielnej kompilacji, pojawiają się komunikaty dotyczące niemożności załadowania modułu np. dla char-major-10-135. Co oznacza ten zapis? Jest to sposób oznaczenia pliku urządzenia w /dev, czyli zapewne

Jak widać, numer 135 przypisany jest urządzeniu /dev/rtc, czyli Real Time Clock. Z tymi informacjami już wiadomo, której funkcjonalności jądra brakuje i co musimy dokompilować. ■

ROX-Filer i katalog ~/Choices
Nietypowe położenie katalogu ~/Choices może być irytujące. Tradycyjnie, aplikacje linuksowe przechowują swoje prywatne dane (zapisaną konfigurację) w katalogach ukrytych, o nazwach zaczynających się od kropki. ROX-Filer wyłamuje się z tej konwencji, a obecność tego katalogu bezpośrednio w $HOME może przeszkadzać. Z tego względu autorzy ROX-Filera wprowadzili możliwość przesunięcia tego katalogu. Opcja ta nie jest dostępna w konfiguratorze, gdyż jest sterowana przez zmienną środowiskową CHOICESPATH. Jeśli dodamy do swojego ~/.bashrc wiersz:
export CHOICESPATH=$HOME/.Choices

Rysunek 1. Aterm – uruchomiony przez wywołanie polecenia:
# aterm -tr -rv -fn 9x15bold -sh 70

i zmienimy nazwę katalogu Choices na .Choices, to ROX-Filer zacznie zacho-

www.lpmagazine.org

59

sprzęt

Programowy RAID oraz LVM
Piotr Wolny

C

oraz więcej spośród naszych komputerów jest wyposażonych w więcej niż jeden dysk twardy. Tradycyjnie, zakładamy na tych dyskach kilka partycji, gdyż Linux umożliwia nam montowanie różnych części systemu plików (np. /usr czy /home) z niezależnych urządzeń. Na tym nie kończą się możliwości wykorzystania dysków twardych w Linuksie. Od dawna nasz system wspiera dwa bardziej zaawansowane mechanizmy gromadzenia danych: Software RAID oraz Logical Volume Manager. Przy ich pomocy możemy zwiększyć wydajność pamięci masowej, a także poprawić bezpieczeństwo przechowywanych danych. Choć zarówno Software RAID, jak i Logical Volume Manager (LVM), kojarzą się często z wielkimi serwerami, wyposażonymi w dziesiątki dysków, to z powodzeniem możemy je wykorzystywać również na domowych komputerach, wyposażonych w dwa, trzy dyski twarde. Ponadto, LVM jest również użyteczny z jednym dyskiem.

larnych rodzajów RAID można przeczytać w ramce Poziomy RAID. Generalnie, RAID umożliwia: • zwiększenie bezpieczeństwa danych, jeśli stosujemy nadmiarowe dyski (bez nadmiarowych dysków nasz RAID jest bardziej podatny na awarię niż pojedyncze dyski); • szybkość odczytu i zapisu danych zwiększa się, jeśli tylko zastosujemy rozdzielanie (ang. striping) danych na dwa lub więcej niezależnych urządzeń fizycznych; • połączenie kilku niezależnych urządzeń w jeden system plików może zwiększyć wygodę administracji systemem w pewnych konfiguracjach. Pamiętajmy jednak, że RAID ma pewne ograniczenia: • jedno utworzone urządzenie RAID nie może być dzielone na partycje, co czasami powoduje konieczność konfigurowania kilku RAID równocześnie;

RAID a LVM
Po uruchomieniu Linux+ Live DVD można przetestować omawiane zagadnienia.

DVD

Na płycie CD/DVD znajduje się oprogramowanie omawiane w artykule.

Na płycie CD/DVD

Autor hobbistycznie i zawodowo zajmuje się Linuksem mniej więcej od czasów jądra 2.0.20. Obecnie pracuje w organizacji społecznej. Poza Linuksem fascynuje go rock progresywny. Kontakt z autorem: autorzy@lpmagazine.org

O autorze

Historycznie, starszym rozwiązaniem jest programowy RAID. Idea Redundant Arrays of Inexpensive Disks nie jest taka stara, gdyż pochodzi z 1987 roku. Opracowano wtedy koncepcję łączenia wielu tanich dysków w jedno duże i szybkie urządzenie. Aby awaria jednego z połączonych dysków nie powodowała utraty danych na całej macierzy, w koncepcji ujęto dyski nadmiarowe (ang. redundant), niezbędne do odtworzenia danych, w przypadku awarii. Tradycyjne RAID wykonuje się sprzętowo, najczęściej łącząc dyski SCSI, które, po podłączeniu do komputera, są widoczne jako jedno urządzenie. Linux umożliwia nam budowę RAID poprzez programowe połączenie dysków w macierze i mogą to być zarówno urządzenia SCSI, IDE, jak również SATA. Na temat popu-

Rysunek 1. W Linuksie dyski różnego typu możemy łączyć w jedno urządzenie RAID lub LVM

60

styczeń 2005

software raid oraz logical volume manager

sprzęt

Tworzymy programowy RAID

Rysunek 2. Sterowniki do RAID i LVM znajdziemy w jądrze Linuksa

• raz utworzony RAID nie może zostać rozszerzony na więcej dysków. Dzięki RAID, to co komputer widzi jako jedno urządzenie blokowe, może być w istocie kombinacją kilku partycji na różnych dyskach twardych. Logical Volume Manager idzie znacznie dalej. Udostępniane przez niego urządzenia blokowe nie tylko mogą fizycznie znajdować się na dowolnej ilości dysków czy partycji, ale również możliwe jest ich łatwe powiększanie, zmniejszanie oraz przenoszenie. To tak, jakby jedna tablica partycji obejmowała nie tylko kilka dysków, ale również umożliwiała dodawanie/usuwanie, zwiększanie/zmniejszanie partycji bez żadnej przerwy w pracy systemu – czasem nawet bez odmontowania partycji. Możliwe jest przy tym równie łatwe dokładanie kolejnych dysków. Reasumując, dzięki LVM otrzymujemy: • całkowitą dowolność w przydzielaniu poszczególnych fizycznych dysków czy partycji jako urządzeń blokowych w systemie (np. urządzenie zamontowane jako /home może składać się z jednego dysku IDE i połowy dysku SCSI); • możliwość łatwego zwiększania i zmniejszania (jeśli system plików umożliwia to drugie) poszczególnych urządzeń widzianych przez system operacyjny oraz przenoszenia ich między dyskami (obejmuje to również łatwe dodawanie i odejmowanie dysków z systemu); • rozdzielanie (ang. striping) danych na dwa lub więcej niezależnych urządzeń fizycznych, aby zwiększyć wydajność; • funkcję ułatwiającą wykonywanie kopii bezpieczeństwa (snapshot). Wadą linuksowego LVM-a jest brak możliwości stosowania nadmiarowych dysków, ale możemy połączyć go z programowym RAID-1, aby zapewnić sobie dodatkowe zabezpieczenie.

Programowy RAID możemy założyć na co najmniej dwóch dowolnych partycjach. Aby miał on jakikolwiek sens, partycje te powinny znajdować się na osobnych dyskach. Zakładanie RAID na dwóch partycjach jednego dysku nie zwiększy bezpieczeństwa danych, ani nie przyspieszy operacji dyskowych. Możemy łączyć w jeden RAID partycje z całkiem różnych dysków, np. IDE, SCSI czy SATA, ale z reguły taka hybryda będzie pracowała z prędkością najwolniejszego spośród nich. Jeśli chcemy łączyć dwa dyski IDE, powinny one znajdować się na osobnych kanałach IDE – gdy będą połączone jedną taśmą, zauważymy wyraźny spadek wydajności. Programowy RAID jest realizowany na poziomie jądra systemu. Musimy posiadać w jądrze wsparcie dla RAID. Przy konfiguracji jądra, w dziale Multi-device support (RAID and LVM), powinniśmy zaznaczyć RAID support oraz potrzebne tryby RAID (możemy wszystkie). Najwygodniej jest wkompilować obsługę RAID na stałe do jądra. Możemy również nie kompilować jądra samodzielnie i polegać na dystrybucyjnym – we wszystkich nowych dystrybucjach znajdziemy moduły linear, raid0, raid5 itd., potrzebne do działania naszej macierzy. Wystarczy polecenie cat /proc/mdstat, aby dowiedzieć się, czy nasze jądro posiada wsparcie dla Software RAID. Jeśli zobaczymy komunikat o braku pliku, musimy skonfigurować i skompilować nowe jądro własnoręcznie. Programowy RAID jest dostępny w jądrze Linuksa od bardzo dawna – jest stan dardowo obecny w jądrach z serii 2.4.x i 2.6.x, ale istnieją łatki pozwalające używać go z jądrami 2.2.x, a nawet 2.0.x. Wszystkie opisane tutaj czynności wykonywałem na jądrze 2.6.9 – powinny one wyglądać identycznie w starszych wersjach jądra, włącznie z serią 2.4.x. Poza wsparciem w jądrze systemu, będziemy potrzebować jeszcze dwóch pakietów z oprogramowaniem: mdadm oraz raidtools (w Debianie – raidtools2). Ten pierwszy zawiera narzędzie do aktywowania i zatrzymywania urządzeń RAID, a drugi dostarcza podstawowych narzędzi do tworzenia macierzy. Znajdziemy te pakiety we wszystkich popularnych dystrybucjach Linuksa. Załóżmy, że nasz system operacyjny jest zainstalowany na dysku sda, a na RAID chcemy przeznaczyć dyski IDE: hda

RAID i LVM podczas instalacji dystrybucji

Instalatory większości nowoczesnych dystrybucji umożliwiają utworzenie urządzeń RAID i LVM już podczas instalacji Linuksa. Przykładowo, w Aurox Linuksie wystarczy, że wybierzemy Partycjonowanie ręczne Disk Druidem i będziemy mogli utworzyć RAID-a, LVM-a, a nawet LVM-a na RAIDie. W nowych wersjach Mandrakelinuksa również musimy wybrać ręczny podział na partycje, a później dodatkowo przełączyć się na tryb zaawansowany. Instalator tej dystrybucji ma podobne możliwości, ale zdaje się, że nie pozwala na tworzenie LVM-a na RAID-ie. Jeśli wiemy, jak działają urządzenia RAID oraz LVM, utworzenie ich przy pomocy któregoś z tych instalatorów nie powinno stwarzać żadnych problemów. Przykładowo, aby stworzyć RAID w Aurox Linuksie, klikamy na RAID, wybieramy pierwszy z dysków i zaznaczamy utworzyć partycję programowego RAID. Następnie to samo powtarzamy dla kolejnych dysków. Na zakończenie, jeszcze raz klikamy na RAID i wybieramy utworzyć urządzenie programowego RAID. Wtedy będziemy mogli podać jego typ, punkt zamontowania oraz system plików, który zostanie na nim utworzony. LVM tworzymy podobnie – najpierw tworzymy jedną lub kilka partycji typu physical volume LVM, a później klikamy na LVM i tworzymy poszczególne woluminy logiczne. Moje doświadczenia z tworzeniem RAID-a oraz LVM-a przez instalatory dystrybucji nie są zachęcające. Polecam instalację na tradycyjnych urządzeniach, a dopiero później stworzenie RAID-a czy LVM-a i przeniesienie na nie odpowiednich katalogów.

i hdd. Na obydwu tych dyskach utworzyliśmy partycje, przy czym na RAID mają być przeznaczone hda2 oraz hdd2. Zanim rozpoczniemy właściwą pracę, możemy przetestować szybkość działania tych dysków, przed zbudowaniem z nich macierzy. Jak na poważnie podejść do testowania wydajności dysków, korzystając z programu Bonnie++, opisuję w ramce Jak testować dyski?. Przy projektowaniu systemu, w którym ważną rolę odgrywa wydajność pamięci masowej, należy zawsze kierować się wskazaniami programu Bonnie++ lub podobnego. W tym artykule, aby szybko i obrazowo pokazać różnice pomiędzy konfiguracjami RAID, posłużę się programem dd. Przykładowo, po utworzeniu na partycji

www.lpmagazine.org

61

sprzęt

hda2 systemu plików ext2, zamontowaniu jej w /mnt/test/, wykonałem komendy:
cd /mnt/test; dd if=/dev/zero of=skasuj_mnie count=2000000.

W efekcie otrzymałem następującą prędkość zapisu liniowego jednego dużego pliku:
1024000000 bytes transferred in 28,490542 seconds (35941752 bytes/sec)

Przy zastosowaniu systemu plików ext3 czas potrzebny dla wykonania tej operacji urósł do 32,8 sekundy.

RAID-0
Najpierw wypróbujemy RAID-0. Aby go utworzyć, musimy napisać plik /etc/ raidtab. Na początek umieściłem tam następujące wpisy:
raiddev /dev/md0 raid-level nr-raid-disks chunk-size device raid-disk device raid-disk 0 2 4 /dev/hda2 0 /dev/hdd2 1

cia tej macierzy podczas uruchamiania się jądra systemu; chunk-size określa w kilobajtach, na jakie najmniejsze jednostki będą dzielone dane podczas zapisu na macierz (nie można jednoznacznie powiedzieć, jaka wartość spowoduje najlepszą wydajność, ale wstępnie możemy przyjąć, że będzie ona równa block size naszego systemu plików). Dalej wyliczamy i numerujemy wszystkie użyte partycje. Kolejnym krokiem jest zmiana przy pomocy programu fdisk identyfikatorów partycji, na których będzie działała macierz. Powinny one otrzymać typ fd, czyli Linux raid auto. Bez tej czynności macierz będzie działać, ale nie zostanie automatycznie wykryta przez jądro systemu. Gdy wszystko jest gotowe, wykonujemy polecenie mkraid /dev/md0. Oczywiście, w jego wyniku utracimy wszystkie dane, które mieliśmy na partycjach wymienionych w /etc/raidtab. W rezultacie powinniśmy otrzymać coś takiego:
handling MD device /dev/md0 analyzing super-block disk 0: /dev/hda2, 14659312kB, raid superblock at 14659200kB disk 1: /dev/hdd2, 18922680kB, raid superblock at 18922560kB

persistent-superblock 1

Jak widzimy, ten plik nie jest skomplikowany. Pierwsza linia określa, którego urządzenia dotyczy ta konfiguracja. Poza md0 możemy mieć dowolnie dużą ilość innych urządzeń (oczywiście, powinny się one znajdować na innych partycjach). Opcją raid-level ustalamy rodzaj macierzy – w tym przypadku RAID-0, czyli stripe. Jako nrraid-diskpodajemy,ilepartycjimapracować w tym urządzeniu; persistent-superblock spowoduje, że w superbloku podanych dalej partycji zostaną zapisane informacje potrzebne do automatycznego wykry-

Jak widzimy, mimo, że partycje te różnią się wielkością, macierz została utworzona. Teraz możemy sprawdzić ją komendą cat /proc/mdstat. Powinniśmy zobaczyć np. coś takiego:
Personalities : [linear] [raid0] [raid1] [raid5] [raid6] [raid10] md0 : active raid0 hdd2[1] hda2[0] 33581760 blocks 4k chunks unused devices: <none>

Widzimy prawie dwukrotny wzrost prędkości zapisu tego pliku (z 32,8 do 18,4 sekundy). Podobna macierz, utworzona w moim komputerze na dyskach SATA, poradziła sobie z tym zapisem w 14 sekund. W ten sposób otrzymaliśmy urządzenie, które powinno działać znacznie szybciej od pojedynczego dysku, zarówno przy operacjach odczytu, jak i zapisu. Możemy zamontować je w dowolnym miejscu systemu plików, w którym występuje intensywne użycie dysku, np. w /var/www. Wystarczy tylko odpowiedni wpis w /etc/fstab i przeniesienie starych danych na nowe urządzenie. Jeśli chcemy używać macierzy w kilku różnych miejscach systemu plików, musimy dołożyć więcej dysków lub posiadane dyski podzielić na więcej partycji, następnie zdefiniować w /etc/ raidtab kolejne urządzenia /dev/md1, md2 itd., wszystkie je zainicjować (mkraid), sformatować oraz zamontować. Jeśli prawidłowo zainstalowaliśmy pakiety mdadmin oraz raidtools, skrypty odpowiedzialne za zamykanie systemu powinny zatrzymać macierz (wykonać komendę raidstop z odpowiednim parametrem), zanim nasze dyski zostaną odłączone od zasilania. W wielu dystrybucjach będzie również działało powiadamianie pocztą administratora systemu o awarii któregoś z dysków. Wspomniane pakiety mają jeszcze sporo więcej możliwości – warto przejrzeć ich pliki konfiguracyjne w katalogach /etc/default/ oraz /etc/mdadm/.

RAID-1
Załóżmy, że postanowiliśmy zmienić swoją konfigurację, tworząc RAID-1 w miejsce RAID-0 – tak naprawdę dopiero RAID-1 jest prawdziwym RAID, gdyż w RAID-0 nie ma nadmiarowych dysków. Zanim rozpoczniemy tworzenie nowego urządzenia, musimy koniecznie dezaktywować poprzednie. Pierwszym krokiem jest odmontowanie systemu plików zamontowanego na macierzy (np. umount /var/www). Następnie wykonujemy komendę raidstop /dev/md0. Dopiero wtedy możemy zmieniać układ partycji na dyskach i tworzyć nowe macierze. Jeśli pominiemy te kroki, ani konfiguracja nowej macierzy, ani zmiany w układzie partycji nie będą skuteczne – co najwyżej mogą doprowadzić do bezpowrotnej utraty danych.

Od teraz urządzenie /dev/md0 traktujemy jak partycję dysku twardego. Możemy np. wykonać polecenia:
# mkfs.ext3 /dev/md0 # mount /dev/md0 /mnt/test/ # cd /mnt/test/ # dd if=/dev/zero of= skasuj_mnie count=2000000

Rysunek 3. Wszystkie potrzebne informacje do zbudowania RAID i LVM możemy znaleźć po angielsku w odpowiednich HOWTO

Na moim systemie ten szybki test pokazał:
1024000000 bytes transferred in 18,410448 seconds (55620591 bytes/sec)

62

styczeń 2005

software raid oraz logical volume manager

sprzęt

Plik konfiguracyjny /etc/raidtab dla RAID-1 jest prawie identyczny, jak dla RAID-0:
raiddev /dev/md0 raid-level nr-raid-disks chunk-size device raid-disk device raid-disk 4 /dev/hda2 0 /dev/hdd2 1 1 2

DESTROYING the contents of /dev/md0 in 5 seconds, Ctrl-C if unsure! handling MD device /dev/md0 analyzing super-block disk 0: /dev/hda2, 14659312kB, raid superblock at 14659200kB disk 1: /dev/hdd2, 18922680kB, raid superblock at 18922560kB

Integracja RAID/LVM w systemie

persistent-superblock 1

Następnie wydajemy polecenie mkraid /dev/md0 i dostajemy w efekcie komunikat:
handling MD device /dev/md0 analyzing super-block disk 0: /dev/hda2, 14659312kB, raid superblock at 14659200kB /dev/hda2 appears to be already part of a raid array -- use -f to force the destruction of the old superblock mkraid: aborted.

Od teraz urządzenie /dev/md0 jest gotowe do użycia. Ma ono pojemność 14 GB, czyli tyle samo, ile mniejsza z użytych partycji. Tworzymy na nim system plików i sprawdzamy, jak działa. Komenda dd, użyta identycznie jak w poprzednich przykładach, tym razem potrzebowała aż ponad 35 sekund na wykonanie swojego zadania. Widzimy, że RAID-1 przy operacji zapisu działa nieznacznie wolniej niż pojedynczy dysk twardy. Kosztem zmniejszenia wydajności otrzymujemy większe bezpieczeństwo danych. Gdy jeden z dysków ulegnie awarii, macierz będzie pracowała dalej, a w logach systemowych pojawi się informacja o konieczności jego wymiany.

RAID-5
Stworzenie RAID-5 nie jest wcale trudniejsze niż RAID-0 i RAID-1. Przykładowy /etc/raidtab, który stworzyłem na swoim komputerze, może wyglądać tak:
raiddev /dev/md0 raid-level 5

Jak widać, system odmówił stworzenia nowej macierzy na urządzeniach, na których poprzednio utworzyliśmy RAID-0. Jesteśmy jednak pewni, że chcemy całkowicie zniszczyć poprzednią macierz, więc wydajemy polecenie: mkraid -R /dev/md0 i otrzymujemy np.:

To, gdzie zamontujemy nowo powstałe urządzenia, zależy od celu, jaki przyświecał nam przy konfiguracji LVM-a czy RAID-a, jak również od specyfiki naszego systemu. Mogą one zarówno przyspieszyć dostęp do danych (jeśli korzystamy z rozdzielania dostępu na wiele fizycznych urządzeń), jak i usprawnić administrowanie miejscem na dysku i zwiększyć bezpieczeństwo danych. Stosujmy więc go w tych miejscach, gdzie wymagana jest któraś z tych właściwości. Pierwszymi lokalizacjami, które przychodzą na myśl są /home oraz /var – z reguły tam najczęściej przewidzieliśmy za dużo lub za mało miejsca na dysku, a także tam na ogół mamy najważniejsze dane. W przypadku, gdy nasze nowe urządzenie działa szybciej niż zwykłe dyski (dzięki wykorzystaniu strip), możemy zdecydować się na przeniesienie na niego katalogu /tmp – istnieją aplikacje, które intensywnie go wykorzystują, czy nawet /usr, co może minimalnie przyśpieszyć uruchamianie się programów na komputerze biurkowym. Aby przenieść dane z podstawowego urządzenia na nowe, możemy najprościej zamontować go w tymczasowej lokalizacji (np. /mnt/tmp) i użyć komendy, np. cp -ax /var/* /mnt/tmp/ następnie , opróżnić przykładowy katalog /var i uaktualnić /etc/fstab, aby właściwe urządzenie było montowane w tym miejscu.
nr-raid-disks chunk-size device raid-disk device raid-disk device raid-disk device raid-disk 4 /dev/hda2 0 /dev/hdd2 1 /dev/sda3 2 /dev/sdb9 3 mkraid -R /dev/md0 4

persistent-superblock 1

Wydane polecenie pokazało:

DESTROYING the contents of /dev/md0 in 5 seconds, Ctrl-C if unsure! handling MD device /dev/md0 analyzing super-block disk 0: /dev/hda2, 14659312kB, raid superblock at 14659200kB disk 1: /dev/hdd2, 18922680kB, raid superblock at 18922560kB disk 2: /dev/sda3, 39070080kB, raid superblock at 39070016kB

Rysunek 4. Przykładowa konstrukcja LVM

www.lpmagazine.org

63

sprzęt

Rysunek 5. Konfiguracja naszych urządzeń wymaga użycia poleceń, działających z linii komend
disk 3: /dev/sdb9, 9775521kB, raid superblock at 9775424kB

przystąpimy do pracy, musimy koniecznie przyswoić sobie kilka podstawowych terminów, stosowanych w LVM-ie – bez tego dosyć szybko się pogubimy. LVM tworzy dodatkową warstwę abstrakcji pomiędzy urządzeniami pamięci masowej a systemem plików w systemie. W efekcie, pomiędzy partycją na dysku a systemem plików w komputerze pojawiają się dodatkowe terminy: • physical volume (PV) – wolumin fizyczny to po prostu dysk twardy lub częściej partycja na dysku twardym, ale może to być również urządzenie programowego RAID-a; • volume group (VG) – grupa woluminów to jeden lub kilka woluminów fizycznych (mamy z nią do czynienia zawsze, nawet gdy posiadamy tylko jeden PV); • logical volume (LV) – wolumin logiczny (system widzi LV jako urządzenie blokowe, więc jeśli stosujemy LVM-a, system plików (np. ext3) zakładamy nie na partycji, ale na LV; podobnie, w systemie montujemy LV, a nie partycję; na jednej grupie woluminów tworzymy jeden lub więcej LV); • physical extent (PE) i logical extent (LE) – ekstenty fizyczny i logiczny (dane na woluminach fizycznych i logicznych dzielone są na mniejsze jednostki, np. po 4 MB; wielkość PE i LE są takie same). Do działania LVM-a potrzebujemy w jądrze wsparcia dla Device mapper. Przy konfiguracji jądra znajdziemy go w dziale

Tak utworzone urządzenie ma rozmiar ok. 27 GB. Dlaczego? Musimy pomnożyć rozmiar najmniejszej z użytych partycji (9775521kB ~= 9GB) razy ilość dysków i odjąć rozmiar jednej partycji, potrzebnej na dane o parzystości, więc 9*49=27. Szybki test, przy pomocy komendy dd i urządzenia /dev/zero, zajął na moim systemie 20 sekund, więc RAID-5 działa szybciej niż pojedynczy dysk, ale oczywiście wolniej niż RAID-0.

Zapasowe dyski
Dla zwiększenia bezpieczeństwa macierzy typu RAID-1 i RAID-5 (a także nieopisywanych tutaj RAID-6 i RAID-10) możemy wykorzystać dyski zapasowe (spare disk). Taki dysk nie jest normalnie używany – żadne dane nie są zapisywane ani odczytywane z niego. W momencie, gdy jeden z dysków zostanie uszkodzony, macierz automatycznie odtworzy jego zawartość na pierwszym, dostępnym spare disk. Dzięki temu wyłączenie systemu w celu wymiany uszkodzonych dysków może zostać zaplanowane na znacznie późniejszy termin – możemy czekać nawet do kolejnej awarii któregoś dysku i nie stracimy żadnych danych. Aby dodać do macierzy dysk zapasowy, wystarczy do /etc/raidtab dopisać np. takie linie:
device spare-disk /dev/sdd1 0

Multiple devices driver support. Z dostępnych tam dodatkowych opcji powinniśmy zaznaczyć przynajmniej Snapshot target oraz Mirror target – mimo, że są one oznaczone jako eksperymentalne, to są już w powszechnym użyciu (najpierw musimy wybrać Prompt for development and/or incomplete code/drivers w dziale Code maturity level options). Najwygodniej jest wkompilować LVM-a na stałe do jądra, ale w niektórych dystrybucjach znajdziemy go w postaci modułu o nazwie dm-mod. Jeśli polegamy na jądrze dystrybucyjnym, musimy tylko załadować ten moduł. Powinniśmy używać jąder z serii 2.6.x, gdyż w starszych, z serii 2.4.x, znajduje się poprzednia generacja LVM-a, która posiada nieco mniejsze możliwości. Poza wsparciem w jądrze, potrzebujemy również zestawu programów do tworzenia i administracji LVM. Są one z reguły w pakiecie o nazwie lvm2, a nie w pakiecie lvm lub lvm01, który jest przeznaczony do współpracy ze starszymi wersjami jądra. Używanie złej wersji programów narzędziowych może ściągnąć na nas nieoczekiwane problemy, więc zwróćmy uwagę, czy mamy zainstalowany właściwy i tylko właściwy pakiet. Ponadto, musimy zainstalować wszystkie biblioteki, od których jest on zależny (zwłaszcza libdevmapper).

Wybór urządzeń
Przy projektowaniu macierzy dyskowej musieliśmy wybrać, na których partycjach jakich dysków zostanie ona utworzona. LVM może korzystać z poszczególnych

Listing 1. Przykładowy raport, generowany przez vgdisplay
--- Volume group --VG Name System ID Format Metadata Areas Metadata Sequence No VG Access VG Status MAX LV Cur LV Open LV Max PV Cur PV Act PV VG Size PE Size Total PE Alloc PE / Size Free PE / Size VG UUID dyski_IDE lvm2 1 1 read/write resizable 0 0 0 0 1 1 37,27 GB 4,00 MB 9540 0 / 0 9540 / 37,27 GB OEEclx-9gIP-Oqyl-R1cH-9tkK-Mlm7-rWW4xi

Tworzymy LVM-a

Logical Volume Manager sam w sobie nie jest trudny do skonfigurowania. To co odstrasza od niego wielu użytkowników, to stosowana w nim terminologia. Zanim

64

styczeń 2005

software raid oraz logical volume manager

sprzęt

partycji, identycznie jak RAID, ale możemy go również instalować bezpośrednio na niepodzielonym na partycje dysku (jeśli chcemy go w całości przeznaczyć do tego celu). Ponadto, możemy również skonfigurować LVM-a na urządzeniu /dev/md0, czyli na dowolnym typie programowego RAID-a. Jak wcześniej wspomniałem, LVM, mimo swoich sporych możliwości, nie obsługuje nadmiarowych dysków, więc jeśli skonfigurujemy LVM-a na RAID-1, to otrzymamy urządzenie, które łączy w sobie zalety jednego i drugiego – podwyższone bezpieczeństwo danych i lepszą elastyczność w konfiguracji systemu. W dalszej części artykułu podam, jak łatwo stworzyć LVM-a na macierzy RAID-1. Jeśli chcemy utworzyć LVM-a na pojedynczym dysku czy partycji, wszystkie czynności wykonujemy identycznie, podając tylko inne nazwy urządzeń. Zakładam, że utworzyliśmy już macierz RAID-1, tak jak opisywałem wcześniej.

Poziomy RAID:
• Liniowy (linear mode). W tym trybie dwie lub więcej partycji dodawanych jest do siebie liniowo, aby utworzyć jedno duże urządzenie RAID. Podczas zapisu na to urządzenie, dane najpierw zapełnią całą pierwszą partycję (pierwszy dysk), później drugą itd. Pojemność uzyskanego urządzenia równa jest sumie pojemności wszystkich użytych partycji. Partycje nie muszą mieć tego samego rozmiaru. Nie uzyskujemy zwiększenia prędkości, a awaria jednego dysku powoduje utratę danych z całej macierzy. RAID-0 (stripe). Pojemność dwóch lub więcej urządzeń dodawana jest do siebie, ale dane są zapisywane równocześnie na wielu urządzeniach i podobnie odczytywane. Jeśli mamy w ten sposób połączone trzy dyski i ustaliliśmy rozmiar paska danych (ang. stripe size) na 16 kB, to przy nagrywaniu pliku o wielkości 48 kB uruchomione zostaną wszystkie dyski równocześnie i na każdym z nich nagrane zostanie tylko 16 kB. Jak łatwo się domyśleć, taka konfiguracja zwiększa nawet wielokrotnie prędkość transferu danych. Suma pojemności dysków jest dodawana, ale powinny one być takiej samej wielkości. Jeśli są różne, na wszystkich dyskach używana jest tylko pojemność najmniejszego z nich. Awaria jednego dysku powoduje utratę danych z całej macierzy. RAID-1 (mirror). Identyczne dane zapisywane są równocześnie na dwóch lub więcej dyskach. Odczyt następuje z któregokolwiek z nich. Pojemność takiej macierzy jest równa pojemności najmniejszej z użytych partycji. Prędkość zapisu jest nieco mniejsza niż na pojedynczym dysku. W przypadku awarii jednego dysku, system może pracować dalej, nie następuje żadna utrata danych. • RAID-5. Wymaga trzech lub więcej partycji. Wielkość powstałego urządzenia równa się sumie rozmiarów wszystkich użytych partycji minus rozmiar jednej. Jeśli mamy cztery partycje po 15 GB, uzyskujemy 45 GB miejsca. Gdy rozmiary partycji nie są równe, w obliczeniach stosujemy wielkość najmniejszej z nich. To odejmowane miejsce wykorzystywane jest do przechowywania kontroli parzystości z urządzeń, dzięki czemu w przypadku awarii jednego z dysków możliwe jest odtworzenie wszystkich danych. W przypadku równoczesnej awarii dwóch dysków, dane zostaną bezpowrotnie utracone. Prędkość działania jest zbliżona do RAID-0, ale przy zapisie jest minimalnie mniejsza, gdyż obliczana jest „parzystość” danych (a dokładniej wykonywana jest operacja logiczna Exclusive OR na poszczególnych bitach ze wszystkich dysków).

Kolejne kroki

Ponadto rzadko stosowane są: • RAID-4 – podobny do RAID-5, ale informacja o parzystości jest zapisywana wyłącznie na jednym urządzeniu, przez co staje się ono wąskim gardłem. Powinno być dużo szybsze niż pozostałe. RAID-6 – podobny do RAID-5, z jeszcze jednym dyskiem na dane o parzystości, dzięki czemu może przetrwać równoczesną awarię dwóch dysków. RAID-2, RAID-3 są podobne do RAID4, ale nie przyjęły się i nie było sensu zapewniać dla nich wsparcia w Linuksie. RAID-10 – Jest to RAID-0, ale poszczególnymi jego elementami nie są partycje fizycznych dysków, a macierze RAID-1. Wymaga więc czterech lub większej liczby dysków.

Pierwszą czynnością jest oznaczenie wszystkich urządzeń, które mają stać się częścią jakiejś grupy woluminów (VG). W naszym przypadku wydajemy polecenie: pvcreate /dev/md0. Jeśli chcemy zainstalować LVM-a na pojedynczej partycji, np. /dev/hdb3, napiszemy pvcreate /dev/hdb3, a gdy przeznaczamy na LVM-a cały dysk hdb – pvcreate /dev/hdb. W tym ostatnim przypadku powinniśmy najpierw wymazać z tego dysku tablicę partycji, np. poleceniem dd if=/dev/zero of=/dev/hdb bs=1k count=1. Po wydaniu polecenia pvcreate powinniśmy zobaczyć np. Physical volume "/dev/md0" successfully created. Polecenie to powtarzamy dla wszystkich urządzeń, które mają być użyte w którejś z VG. Spowoduje ono zapisanie na początkowych sektorach urządzenia specyficznych danych, identyfikujących dane urządzenie, dzięki czemu, jeśli np. zamienimy dyski sda i sdb, LVM będzie działało nadal bez prze-

szkód (nie dotyczy to mojego systemu, w którym LVM powstaje na RAID-1). Drugą czynnością jest utworzenie grupy woluminów. Każda grupa ma swoją

Rysunek 6. LVM pomaga nam lepiej zorganizować miejsce na dyskach

nazwę, którą możemy dobrać według własnego uznania. W moim przykładzie utworzyłem VG poleceniem vgcreate dyski_IDE /dev/md0, które odpowiedziało komunikatem Volume group "dyski_IDE" successfully created. Nadałem swojej grupie nazwę „dyski_IDE”. Jeśli nasz wolumin ma się rozciągać na więcej urządzeń, w tym poleceniu wymieniamy je wszystkie, np. vgcreate dyski_IDE /dev/hda3 /dev/hdc4 /dev/sda5. Możemy utworzyć więcej VG w jednym systemie (maksymalnie 99), ale oczywiście żadne urządzenie fizyczne nie może być w dwóch grupach. Przy okazji tworzenia VG możemy ustawić

www.lpmagazine.org

65

sprzęt

Rysunek 7. Wynik działania programu Bonnie++ po konwersji do html

rozmiar PE – według HOWTO domyślną wartością jest 32 MB, ale na moim systemie vgcreate użył wartości 4 MB. Własną wartość możemy podać przy pomocy opcji -s, np. vgcreate -s 32 /dev/md0. Podana liczba (domyślnie w megabajtach) musi być potęgą dwójki. Następny krok to aktywacja woluminu. Przeprowadzamy ją poleceniem vgchange --available y dyski_IDE. Powinno ono odpowiedzieć: 0 logical volume(s) in

volume group "dyski_IDE" now active. Co ważne, od tego momentu skrypty, odpowiadające za start i zamykanie systemu, które zainstalowaliśmy razem z pakietem lvm2, będą opiekowały się naszym woluminem, czyli aktywowały go przy starcie i dezaktywowały przy zamykaniu systemu. Po aktywacji VG możemy uzyskać ciekawe informacje na jego temat, wydając komendę vgdisplay dyski_IDE. Wynik jej działania na moim systemie zamieściłem na Listingu 1. Widzimy, że nasz rozmiar PE wynosi 4 MB (PE Size), a do dyspozycji mamy 9540 PE. Zwróćmy uwagę, że w tym przykładzie LVM widzi tylko jedno urządzenie fizyczne (jest nim /dev/md0), mimo że faktycznie mamy dwa dyski. Zbliżamy się do końca. Teraz utworzymy woluminy logiczne. Jak wspomniałem wcześniej, na jednym VG możemy utworzyć wiele woluminów logicznych (w systemie może ich być maksymal-

Jak testować dyski?

Zapewne wielu użytkowników Linuksa zna narzędzie hdparm. Przy jego pomocy możemy m.in. sprawdzić szybkość liniowego transferu danych z dysku. To bardzo prosty test, umożliwiający porównywanie różnych dysków – w istocie bardzo niewiele mówi nam o tym, jak wydajna będzie nasza pamięć masowa, a już zupełnie nie nadaje się do testowania RAID-a czy LVM-a. Nie ma jednego, uniwersalnego miernika prędkości dysku, ponieważ każdy system komputerowy jest inny – jedne ciągle odczytują pliki wielkości kilku gigabajtów, a inne dziesiątki tysięcy plików o wielkości kilku kilobajtów. Na jednych równie ważna jak prędkość odczytu jest prędkość zapisu, a na innych nie ma ona znaczenia. Niektóre programy czytają dane liniowo, a inne wciąż przeszukują dysk. Z tego powodu mierząc wydajność pamięci masowej, zawsze musimy brać pod uwagę konkretny system. Najpopularniejszym programem, który da nam więcej informacji na temat działania dysku jest Bonnie++ (http://www. coker.com.au/bonnie++/). Jeśli nie znajdujemy go w swojej dystrybucji, możemy ściągnąć źródła z jego strony domowej, aby skompilować i zainstalować je tradycyjnymi komendami: ./configure; make; make install Pro. gram ten testuje szybkość działania nie tyle samego twardego dysku, a systemu plików. Na testowanym dysku musimy założyć jakąś partycję, utworzyć na niej system plików i zamontować w systemie. Następnie przechodzimy do katalogu, gdzie zamontowany jest testowany dysk (np. cd /mnt/test) i uru-

chamiamy program: bonnie++ -s 1000k -n 128 -b. Przy pomocy opcji -s 1000k ustaliliśmy wielkość pliku, który utworzy Bonnie++, aby sprawdzić prędkości zapisu i odczytu liniowego. Opcja -n 128 określa, jak wiele tysięcy małych plików (o rozmiarze zerowym) ma zostać utworzonych, aby zmierzyć czas ich tworzenia, odczytu oraz kasowania. Ostatnia opcja -b wyłącza buforowanie zapisów, synchronizując dysk po każdym z nich (fsync()), przez co program zachowuje się jak popularne bazy SQL czy serwery SMTP, które czynią podobnie. Po kilku lub kilkunastu minutach testów, program wydrukuje kilka linii – na początku będą dwie mało czytelne tabele z wynikami, natomiast ostatnia linia zawiera wszystkie wyniki, rozdzielone przecinkami. Aby uzyskać ładną i czytelną tabelę z wynikami w formacie html, możemy użyć programu bon_csv2html Wczytuje on przez stan. dardowe wejście ostatnią linię z wydruku Bonnie++ i drukuje plik html na standardowym wejściu. Możemy użyć go więc tak: echo <ostatnia lini z bonie++> | bon_csv2html >/tmp/dysk1.html Oczywi. ście, interesującą nas długą linię z wynikami działania Bonnie++ najwygodniej będzie zaznaczyć i wkleić do tej komendy przy pomocy myszki. Wartości, podawane przez Bonnie++, będą uzależnione nie tylko od dysku twardego, ale również od zastosowanego systemu plików (ext2/ext3), prędkości procesora, obciążenia systemu itd.

nie 256). Woluminy logiczne (LV), podobnie jak grupy woluminów (VG), mogą mieć dowolne nazwy, wymyślone przez nas. Przeanalizujmy przykładowe polecenie, tworzące LV: lvcreate -l3000 -nkatalogi_domowe dyski_IDE. Ta komenda utworzyła LV o nazwie „katalogi_domowe” i rozmiarze 3000 PE, czyli na moim systemie 12000 MB. Nowy wolumin logiczny powstał na bazie grupy woluminów o nazwie „dyski_IDE”. Domyślnie, dane zapisywane na tym woluminie będą zajmowały po kolei dostępne miejsce na poszczególnych urządzeniach fizycznych. Dostęp do tego woluminu otrzymujemy przez plik urządzenia /dev/dyski_IDE/ katalogi_domowe. Jeśli budujemy LVM-a na bazie dwóch lub więcej niezależnych urządzeń, możemy użyć opcji -i, aby skorzystać z możliwości rozdzielania operacji dyskowych (stripe) na kilka urządzeń. Polecenie lvcreate -i2 -l3000 -nnazwa_LV nazwa_VG spowoduje, że dane będą rozdzielane na dwa urządzenia. Jeśli mamy więcej urządzeń, z powodzeniem możemy zwiększyć ten parametr. Na ogół, gdy korzystamy z LVM-a, nie interesuje nas, na które fizyczne urządzenie trafią dane z konkretnego woluminu logicznego – mamy bowiem kilka urządzeń, połączonych w jednym VG. Mimo to, do polecenia lvcreate możemy dodać jeszcze jedną opcję, która określi, z którego urządzenia fizycznego system skorzysta, gdy zacznie zapełniać nasz wolumen. Przykładowo, lvcreate -l3000 -nnazwa_LV nazwa_VG /dev/sdh1 określi pierwsze użyte urządzenie jako /dev/sdh1. Oczywiście, gdy skończy się tam miejsce, LVM zacznie korzystać z innych urządzeń. Aby usunąć wolumin logiczny, wydajemy polecenie lvremove /dev/dyski_IDE/ katalogi_domowe Najpierw musimy odmon. tować systemy plików, jeśli jakieś zdążyliśmy już utworzyć i zamontować, korzystając z /dev/dyski_IDE/katalogi_domowe. Do zmiany nazwy LV możemy użyć komendy lvrename. Przydatny jest również program lvscan, który pokaże nam informacje o wszystkich działających woluminach logicznych. Ja na swoim systemie utworzyłem od razu jeszcze jeden wolumin: lvcreate -l3000 -nlogi_systemowe dyski_IDE, a następnie wydałem polecenie vgdisplay, które pokazało mi m.in. ilość wolnych PE:
Free PE / Size 3540 / 13,83 GB

66

styczeń 2005

software raid oraz logical volume manager

sprzęt

Aby zapełnić całkowicie swój VG, tworząc ostatni wolumin logiczny, powinienem podać parametr -l3540, gdyż tyle zostało mi jednostek alokacji. Wiedziałem jednak, że dobrze jest zostawić sobie trochę miejsca na snapshot'y, o których napiszę w dalszej części, więc wykonałem polecenie lvcreate -l3490 -nbazy_danych dyski_IDE. W tym momencie jesteśmy gotowi, aby sformatować wszystkie utworzone urządzenia. W moim systemie przykładowe komendy mogą wyglądać tak:
mkfs.ext3 /dev/dyski_IDE/bazy_danych mkfs.ext3 /dev/dyski_IDE/katalogi_domowe mkfs.ext3 /dev/dyski_IDE/logi_systemowe

Dodajemy dysk
Załóżmy, że zabrakło miejsca na urządzeniu /dev/dyski_IDE/bazy_danych. Do systemu dołożyliśmy nowy dysk i możemy z niego wykorzystać jedną partycję – /dev/sda3. Oczywiście, nie jest to najlepszy pomysł, bowiem nasze wcześniejsze urządzenia znajdują się na RAID-1, więc są zabezpieczone przed awarią jednego z dysków. Jeśli do całej grupy woluminów dodamy jedno urządzenie fizyczne bez takiej ochrony, w przypadku jego awarii stracimy wszystkie dane. W realnym świecie powinniśmy dodać przynajmniej dwie partycje na różnych urządzeniach, tworząc na nich najpierw RAID-1. Na potrzeby demonstracji w tym artykule posłużymy się jednak prostym przykładem z jedną partycją. Zaczynamy do zainicjowania partycji:
# pvcreate /dev/sda3 Physical volume "/dev/sda3" successfullyS created

VG Size PE Size Total PE Alloc PE / Size Free PE / Size

74,52 GB 4,00 MB 19078 9540 / 37,27 GB 9538 / 37,26 GB

Możemy w tym momencie utworzyć całkiem nowy wolumin logiczny na 9538 wolnych PE, ale nie o to nam przecież chodzi, bo aktualnie zabrakło nam miejsca na woluminie zamontowanym w /bazy. Po wykonaniu komendy df -h aktualnie mamy:
/dev/mapper/dyski_IDE-bazy_danych 14G 13G 397M 98% /bazy

S

LVM w akcji

Aby dodać wszystkie 9538 wolne PE do tego woluminu, wydajemy komendę:
lvextend -l +9538 /dev/dyski_IDE/S bazy_danych

W tym momencie zapewne wielu Czytelników zadaje sobie pytanie, po co wymyślono LVM? Jak na razie dosyć długi opis doprowadził nas do sytuacji, w której mamy zwyczajny system. Co prawda jest on zabezpieczony przed awarią jednego dysku twardego, ale to zasługa wyłącznie RAID-1, a nie LVM. Dodatkowo, mamy spowolniony dostęp do dysku (prosty test z komendą dd na LVM-ie działa u mnie o trzy sekundy dłużej niż na samym tylko RAID-1). Oczywiście, LVM nie został stworzony po to, aby mieć fantazyjne nazwy urządzeń. Zobaczmy, jak przy jego pomocy administrować miejscem na dysku i jak wygodnie wykonywać kopie bezpieczeństwa danych.

Następnie rozszerzamy grupę woluminów o nowe urządzenie:
# vgextend dyski_IDE /dev/sda3 Volume group "dyski_IDE" successfullyS extended

Przy pomocy komendy vgdisplay sprawdzamy efekt naszych działań. Fragment jej raportu u mnie wyglądał tak:

W ten sposób powiększyliśmy sam wolumin logiczny, co możemy sprawdzić poleceniem lvscan. Teraz musimy powiększyć system plików, aby obejmował miejsce na całym LV. Istnieją specjalne łatki na jądro, które pozwalają na wykonanie tej operacji bez odmontowania systemu plików, ale my na chwilkę zróbmy umount /bazy/ i wydajmy polecenie resize2fs -p /dev/dyski_IDE/bazy danych. Program może nas poprosić, abyśmy sprawdzili system plików przed zmianą jego rozmiaru, więc

R

E

K

L

A

M

A

www.lpmagazine.org

67

sprzęt

w takim przypadku napiszemy:
-f /dev/dyski_IDE/bazy_danych

e2fsck

# lvreduce -L-1G # mount /home

/dev/dyski_IDE/S katalogi_domowe

# xfs_freeze -f /home; lvcreate -L200MS -s -n tylko_backup /dev/dyski_IDE/S katalogi_domowe

i wydamy komendę resize2fs ponownie. Pozostaje nam teraz tylko zamontować LV ponownie i sprawdzić, co pokaże df -h. U mnie otrzymałem:
/dev/mapper/dyski_IDE-bazy_S danych 51G 13G 36G 27% /bazy

Operacja trwała bardzo krótko i zakończyła się sukcesem. Bez LVM konieczna byłaby zapewne modyfikacja tablicy partycji na przynajmniej jednym dysku, a następnie mozolne przenoszenie danych. Wszystko to spowodowałoby znacznie dłuższą przerwę w pracy systemu. Powiększanie systemu plików jest możliwe nie tylko na ext2/ext3. Jeśli korzystamy z reiserfs, w analogiczny sposób używamy komendy resize_reiserfs -f . W przypadku xfs mamy program xfs_ growfs, ale istotna różnica polega w tym przypadku na tym, że powinniśmy pozostawić system plików zamontowany, a jako parametr tego programu podać punkt zamontowania (np. xfs_growfs /bazy).

W tym przypadku, jako parametr programu resize2fs, musieliśmy podać nową wielkość systemu plików. LVM zawiera również narzędzia do przenoszenia grupy woluminów (VG) na inne komputery, gdyż nie wystarczy zwykłe przełożenie dysków. Powinniśmy, po odmontowaniu systemu plików i dezaktywacji VG (vgchange -activate n nazwa_VG), wykonać polecenie vgexport nazwa_VG, a następnie po przełożeniu dysku do nowego komputera – vgimport nazwa_VG.

W tym momencie możemy zamontować (tylko do odczytu) wolumin logiczny o nazwie „tylko_backup”, który zawiera kopię woluminu „katalogi_domowe”:
# mount /dev/dyski_IDE/tylko_backupS /mnt/backup/

Snapshot

Inne manipulacje dyskami
W przypadku, gdy chcemy usunąć z systemu jeden dysk (np. hdb) i mamy na tyle dużo wolnego miejsca na pozostałych, aby zmieścić tam wszystkie dane, wydajemy polecenie: pvmove /dev/hdb. Teraz wszystkie dane z hdb zostały przeniesione na pozostałe dyski, w ramach tej samej grupy woluminów (VG). Następnie vgreduce nazwa_VG /dev/hdb powoduje, że dysk nie jest już członkiem VG o nazwie nazwa_VG. Gdy do systemu dodaliśmy nowy dysk dodany (np. sdf ), na który chcemy przenieść dane ze starego (np. hdb), wydajemy polecenia:
# pvcreate /dev/sdf; vgextend dev /dev/sdf # pvmove /dev/hdb /dev/sdf; vgreduce dev /dev/hdb

Wcześniej powiększaliśmy wolumin logiczny. Oczywiście, jest możliwe równie łatwe zmniejszenie go. Problem pojawia się ze zmniejszeniem systemu plików, bowiem tylko ext2/ext3 oraz reiserfs pozwalają na taką operację. Przykładowo:
# umount /home # resize2fs /dev/dyski_IDE/katalogi_S domowe 524288

Wykonywanie kopii bezpieczeństwa trwa dosyć długo, a nie każdy może pozwolić sobie na zupełne zatrzymanie systemu na ten czas. Wtedy utrapieniem stają się pliki, które zostały zmodyfikowane w czasie wykonywania kopii. LVM udostępnia nam specjalny mechanizm, który pozwala na obejście tego problemu. Możemy utworzyć snapshot aktualnego stanu któregoś z naszych woluminów logicznych. Snapshot jest dla administratora systemu kolejnym woluminem logicznym, zawierającym kopię któregoś z LV. Kopia ta nie zmienia się, nawet jeśli na oryginale wykonywane są operacje zapisu. Oczywiście, przy tworzeniu snapshota dane na nim zawarte nie są fizycznie kopiowane na nowy wolumin logiczny. Potrzebujemy trochę miejsca na danym VG, aby było gdzie zapisywać informacje o plikach, które zmieniły się od czasu utrwalenia stanu woluminu logicznego. Jeśli mamy katalog /home, w którym znajduje się 20 GB danych, to wiemy, że zrobienie jego kopii bezpieczeństwa zajmie 10 minut. Zakładamy, że w ciągu tych 10 minut na partycji z /home użytkownicy utworzą lub zmodyfikują co najwyżej 200 MB danych. Tyle właśnie miejsca musimy mieć na danej grupie woluminów. Snapshot tworzymy poleceniem:
# lvcreate -L200M -s -n tylko_backupS /dev/dyski_IDE/katalogi_domowe

Po zakończeniu wykonywania kopii bezpieczeństwa, wydajemy polecenie: lvremove -f /dev/dyski_IDE/tylko_backup. Musimy uważać, aby do tego czasu zmiany na woluminie nie przekroczyły rozmiaru snapshotu – w tym przykładzie 200 MB. Po przepełnieniu staje się on bowiem bezużyteczny i podobnie trzeba traktować dane z niego skopiowane.

Zakończenie

Stosowanie RAID-a i LVM-a może bardzo ułatwić pracę administratora i zwiększyć bezpieczeństwo oraz wydajność systemu. Rozwiązania te często powodują jednak, że czynności niegdyś proste (np. przeniesienie dysku do innego komputera) stają się znacznie bardziej skomplikowane, a w przypadku, gdy dochodzi już do awarii któregoś z nich, odzyskanie danych jest znacznie trudniejsze. Konieczne staje się zaopatrzenie w odpowiednie narzędzia do ratowania systemu, które będą potrafiły sobie poradzić z systemami plików na takich urządzeniach, np. mini-dystrybucja (R)ecovery (I)s (P)ossible Linux. Innymi słowy, rozwiązując pewne problemy, dokładamy sobie często cały szereg nowych.

W Internecie:
• LVM HOWTO: http://www.tldp.org/HOWTO/ LVM-HOWTO/ Software RAID HOWTO: http://www.tldp.org/HOWTO/ Software-RAID-HOWTO.html Dystrybucja ratunkowa, m.in. dla RAID i LVM: http://www.tux.org/pub/people/ kent-robotti/looplinux/rip/ Strona domowa dystrybucji (R)ecovery (I)s (P)ossible Linux: http://www.tux.org/pub/people/ kent-robotti/looplinux/rip/

Jeśli używamy systemu plików xfs, polecenie musi być nieco dłuższe:

68

styczeń 2005

dla programistów

Pyro i OpenSSL – bezpieczny komunikator internetowy
Marek Sawerwain

G

dy planujemy przesyłać istotne informacje poprzez Internet, to wprowadzenie szyfrowania danych w naszym aplikacjach rozproszonych jest bardzo ważnym zagadnieniem. Istnieje wiele bibliotek wspomagających nas w tym temacie. Jedną z najbardziej znanych jest OpenSSL. Jest ona dostępna we wszystkich większych dystrybucjach Linuksa. Odpowiada za realizację bezpiecznych kanałów komunikacyjnych w oparciu o protokół SSL i jest wykorzystywana przez wiele programów, w tym przeglądarki WWW. Zastosowanie biblioteki OpenSSL najlepiej pokazać na przykładzie. W numerze Linux+ 10/2003 prezentowałem prosty komunikator na wzór bardzo popularnego Gadu-Gadu. Jedną z niedoskonałości tamtego programu była komunikacja bez jakiegokolwiek szyfrowania danych. W tym artykule postaram się pokazać, jak małym kosztem zmienić ten stan rzeczy.

opisu interfejsu pochodzących z programu Glade. Do poprawnego działania będzie wymagał, tak jak poprzednio, dwóch uruchomionych usług Pyro: serwera nazw (usługę uruchamiamy poprzez wydanie polecenia ns) oraz serwera zdarzeń (usługę należy uruchomić wydając polecenie es). Warto przedstawić sposób działania naszej aplikacji w postaci schematu, który znajduje się na Rysunku 1. Jak widać, mamy trzy specjalne serwery. Serwery zdarzeń i nazw należą do systemu Pyro, ale główny serwer, nazwany serwerem rozmów, musimy napisać samodzielnie, a raczej poprawić kod, dodając obsługę SSL, bo przecież serwer już wcześniej napisaliśmy.

Typowy serwer Pyro

Kilka postanowień na początek Na płycie CD/DVD

Na płycie CD/DVD znajdują się wykorzystywane biblioteki, kod źródłowy programu oraz wszystkie listingi z artykułu. Autor zajmuje się tworzeniem oprogramowania dla WIN32 i Linuksa. Zainteresowania: teoria języków programowania oraz dobra literatura. Kontakt z autorem: autorzy@lpmagazine.org

O autorze

Najważniejszym zadaniem będzie dodanie do komunikatora obsługi szyfrowanego kanału. Uprzedzając dalszą część artykułu, już teraz mogę zdradzić, iż jest to zadanie łatwe do wykonania. Głównie dlatego, iż Pyro znakomicie współpracuje z biblioteką OpenSSL. Aby w naszym komunikatorze znalazła się obsługa SSL, wymagana jest jeszcze instalacja jednego pakietu o nazwie M2Crypt. Kilka uwag na ten temat zawiera ramka Kompilacja i instalacja pakietów. Pozostałe założenia naszego programu pozostają niezmienione. Nadal jest to program napisany w Pythonie. Będzie korzystał z biblioteki GTK+ oraz z plików

Program komunikatora to wbrew pozorom niewielka aplikacja. Łączny kod źródłowy serwera i klienta to tylko 7 kB tekstu źródłowego w Pythonie. Zanim wprowadzimy obsługę SSL do komunikatora, chciałbym przedstawić typową aplikację Pyro. Listing 1 zawiera kod klasy o nazwie test_obj. Poprzez Pyro chcemy udostępnić tę klasę w sieci tak, aby inny użytkownicy Pythona mogli ją wykorzystać we własnych programach. Pierwszą czynnością jest definicja klasy (Listing 1), którą zapisujemy w oddzielnym pliku o nazwie test_obj.py. Istnieje kilka sposobów na napisanie serwera. Poniżej zaprezentuję sposób, który został użyty w komunikatorze. Pierwszym elementem w implementacji serwera jest dołączenie odpowiednich pakietów:
import Pyro.core import Pyro.naming import test_obj

70

styczeń 2005

python/pyro/ssl

dla programistów

Kompilacja oraz instalacja pakietów
Nasza aplikacja to dość mały program. Wielkość jest wynikiem zastosowania kilku bibliotek, które pozwalają zaimplementować całkiem zgrabną aplikację minimalną ilością kodu. Z tego powodu, aby nasz komunikator zadziałał, potrzebny jest język programowania Python oraz pakiet OpenSSL. Sam język, jak również bibliotekę, znajdziemy bez problemów w każdej dystrybucji Linuksa. Autorzy biblioteki Pyro zalecają najnowszą wersję Pythona, najlepiej 2.3.3, oraz wersję OpenSSL nie starszą niż 0.9.7 (jeśli w dystrybucji jest starsza wersja, to koniecznie trzeba dokonać aktualizacji tego pakietu). Biblioteki Pyro raczej nie znajdziemy, ale zanim przystąpimy do jej instalacji, należy zainstalować inną bibliotekę o nazwie M2Crypt. Będzie ona obsługiwać połączenia szyfrowane SSL. Biblioteka M2Crypto ma również swoje wymagania i do poprawnej kompilacji wymaga pakietu SWIG w wersji przynajmniej 1.3.21. Pakiet SWIG jest oferowany przez niektóre dystrybucje, ale gdy pojawi się konieczność jego kompilacji, to dzięki skryptowi configure sprawdza się ona do trzech poleceń:
# ./configure –prefix=/katalog # make # make install Pyro.core.initServer()

Rysunek 1. Schemat działania komunikatora

Dwa pierwsze dotyczą Pyro, ale ostatni pakiet to nasza klasa, którą mamy zamiar udostępnić. W tym celu w serwerze definiujemy specjalną klasę pośrednią w następujący sposób:
class test_obj_classS (Pyro.core.ObjBase, test_obj.test_obj): def __init__(self): Pyro.core.ObjBase.__init__(self)

ma zainstalowanej sieci i jest dostępny tylko adres lokalny 127.0.0.1. Następnym krokiem w implementacji serwera jest uzyskanie obiektu serwera nazw:
ns=Pyro.naming.NameServerLocator().getNS()

Ostatnim obiektem do utworzenia jest daemon:
daemon=Pyro.core.Daemon()

Następnie uruchomiamy serwer metodą initServer:

Proces kompilacji oraz instalacji pakietu M2Crypto (jak również Pyro) sprowadza się do dwóch poleceń:
# python setup.py build # python setup.py install

Konieczną operacją jest podanie mu obiektu serwera nazw i to wykonujemy w następujący sposób:
daemon.useNameServer(ns)

Pamiętajmy, aby wcześniej zainstalować wszystkie pakiety bezpośrednio związane z interpreterem Pythona oraz pakiety związane z biblioteką OpenSSL. Nasz komunikator wymaga jeszcze jednej biblioteki do poprawnego działania, a mianowicie PyGTK+, gdyż wykorzystujemy GTK+ oraz pakiet libglade. Wiele dystrybucji, np. Aurox, Mandrakelinux czy Fedora Core, zawierają odpowiednie pakiety – wystarczy je tylko doinstalować.

W przeciwieństwie do wcześniejszego kodu serwera komunikatora, określamy jeszcze kilka dodatkowych informacji. Na początku określamy ilość informacji, które będą zapisywane do pliku zdefiniowanego za pomocą następnej linii:
Pyro.config.PYRO_TRACELEVEL=3 Pyro.config.PYRO_LOGFILE='server_log'

Później określamy komputer, na którym został uruchamiany serwer nazw:
Pyro.config.PYRO_NS_HOSTNAME='localhost'

Ostatnie czynności w serwerze polegają na podłączeniu naszego obiektu. W pierwszym parametrze wykorzystujemy klasę pomocniczą test_obj_class, a w drugim ciąg znaków reprezentujący nasz obiekt, czyli test_obj. Na koniec możemy wywołać metodę requestLoop, co spowoduje uruchomienie serwera. Kod tych dwóch czynności przedstawia się następująco:
uri=daemon.connect(test_obj_class(), "test_obj") daemon.requestLoop()

Ustalenie adresu serwera nazw oraz serwera zdarzeń (Pyro.config.PYRO_ES_HOSTNAME) jest szczególnie istotne, gdy będziemy testować program na komputerze, na którym nie

Klient Pyro

W programie klienta, podobnie jak w serwerze, na początek dołączamy potrzebne pakiety:

www.lpmagazine.org

71

dla programistów

Listing 1. Postać klasy test_obj
class test_obj: def m1(s, string): print "Metoda m1 parametr:", string def m2(s, number): return "Kwadrat liczby:"+str(number*number) print "Metoda m2 parametr:", number

import Pyro.util import Pyro.core

Następnie inicjujemy klienta:
Pyro.core.initClient()

return "Długość ciągu znaków: "+str(len(string))

Później ustalamy parametry pomocnicze, takie jak adres komputera, na którym znajduje się serwer nazw. Gdy to zrobimy, możemy uzyskać referencję do zdalnego obiektu. Wykorzystujemy metodę getProxyForURI:
test = Pyro.core.getProxyForURIS

Listing 2. Pełny kod serwera oparty o protokół SSL
#! /usr/bin/env python import sys ("PYRONAME://test_obj")

import Pyro.core import Pyro.util

import Pyro.naming import Pyro.protocol from Pyro.errors import PyroError,NamingError from Pyro.protocol import getHostname import test_obj class test_obj_class(Pyro.core.ObjBase, test_obj.test_obj): def __init__(self): Pyro.core.ObjBase.__init__(self) class printCertValidator(Pyro.protocol.BasicSSLValidator): def checkCertificate(self,cert): if cert is None: print "Cert Subject: %s" % cert.get_subject() return (1,0) return (0,3)

Po tych czynnościach metody ze zdalnego obiektu wywołujemy tak samo, jak przy lokalnych obiektach:
print test.m1("Abcdef") print test.m2(5)

Dodajemy obsługę SSL do serwera

##### main program ##### Pyro.core.initServer() Pyro.config.PYRO_TRACELEVEL=3 Pyro.config.PYRO_NS_HOSTNAME='localhost' Pyro.config.PYRO_LOGFILE='server_log' ns=Pyro.naming.NameServerLocator().getNS() daemon=Pyro.core.Daemon(prtcol='PYROSSL') daemon.setNewConnectionValidator(printCertValidator()) daemon.useNameServer(ns) uri=daemon.connect( test_obj_class(), "test_obj") print "Server is ready. Let's go!!!" daemon.requestLoop()

Jak widać, napisanie nieskomplikowanego serwera i klienta przy zastosowaniu Pyro to dość łatwe zadanie. Kod źródłowy biblioteki zawiera wiele przykładów, które polecam przejrzeć czytelnikom, którzy w tym momencie zainteresowali się tą biblioteką. Naszym głównym zadaniem jest jednak komunikacja za pomocą protokołu SSL. Listing 2 zawiera pełny kod serwera udostępniającego obiekt test_obj przy zastosowaniu protokołu SSL. Postać serwera jest bardzo podobna do poprzedniego przykładu, w którym komunikacja jest jawna. Pierwszą różnicą są pakiety, które dołączamy. Istotny jest Pyro.protocol, używany w klasie printCertValidator . Kolejna różnica kryje się w tworzeniu obiektu daemon. W argumencie konstruktora podajemy wartość PYROSSL:
daemon=Pyro.core.Daemon(prtcol='PYROSSL')

W ten sposób nakazujemy stosowanie protokołu SSL. Następnie podłączamy klasę printCertValidator , której zadaniem jest sprawdzenie poprawności certyfikatu:
daemon.setNewConnectionValidatorS (printCertValidator())

72

styczeń 2005

python/pyro/ssl

dla programistów

Kolejne czynności pozostają niezmienione w porównaniu do zwykłego serwera. Zajmijmy się teraz klasą printCertValidator Zawiera ona jedną metodę . – checkCertificate. Musi ona zwrócić pewne określone wartości. Jeśli chcemy zaakceptować certyfikat, to jako wartość powrotną zwracamy parę (1,0). W przypadku odrzucenia certyfikatu, za pomocą słowa return musimy przekazać parę (0, kod_błędu). Przez kod_błędu rozumiemy jedną z poniższych wartości: • • • •
Pyro.constants.DENIED_UNSPECIFIED

Listing 3. Postać plików z certyfikatami dla protokołu SSL
Plik z głównym certyfikatem: -----BEGIN CERTIFICATE----MIIDkjCCAvugAwIBAgIBA i tak dalej .... -----END CERTIFICATE----Plik client.pem: -----BEGIN CERTIFICATE----MIIDvzCCAyigAwIBAgIBATANBgkqh i tak dalej .... -----END CERTIFICATE---------BEGIN RSA PRIVATE KEY----MIICXQIBAAKBgQC7ixGOs2Sq i tak dalej ... -----END RSA PRIVATE KEY----Plik server.pem: -----BEGIN CERTIFICATE----MIIDvzCCAyigAwIBAgIBATANBgkqh i tak dalej .... -----END CERTIFICATE---------BEGIN RSA PRIVATE KEY----MIICXQIBAAKBgQC7ixGOs2Sq i tak dalej ... -----END RSA PRIVATE KEY-----

– dowolny powód błędu;
Pyro.constants.DENIED_SERVERTOOBUSY

– serwer jest zbyt zajęty;
Pyro.constants.DENIED_HOSTBLOCKED

– blokada komputera;
Pyro.co nst ant s.DENIED _ SECURIT Y

– błąd związany z bezpieczeństwem. Na Listingu 2, gdy nie ma certyfikatu, zwracamy parę (0,3), co oznacza błąd związany z bezpieczeństwem. Jak widzimy, dodanie obsługi SSL wymaga dołączenia jednej klasy oraz kosmetycznych zmian w kodzie. Oprócz serwera, musimy wygenerować certyfikaty dla serwera i klienta. Informacje o tym, jak tego dokonać, podam w dalszej części artykułu. Teraz zajmiemy się klientem.

Program klienta

test1 = Pyro.core.getProxyForURIS ("PYRONAME://test_obj")

W programie serwera najważniejszą zmianą było dodanie w konstruktorze obiektu daemon informacji o tym, że będziemy korzystać z protokołu SSL. W kliencie nie musimy wykonywać żadnych zmian! Biblioteka Pyro samodzielnie wykryje fakt, że serwer korzysta z protokołu SSL i klient samoczynnie przełączy się na komunikację poprzez SSL. Z tego powodu uzyskanie referencji do obiektu nadal możemy wykonywać w ten sposób:

Jeśli jednak chcemy jawnie określić komputer oraz fakt użycia przez nas protokołu SSL, to możemy w wywołaniu metody getProxyForURI podać pełne dane w następujący sposób:
test2 = Pyro.core.getProxyForURI ("PYROLOCSSL://localhost/test_obj")

Ostatni składnik w adresie to nazwa obiektu, którą podaliśmy w drugim argumencie metody connect podczas rejestrowania naszej klasy w serwerze. Jak widać, siłą Pyro jest automatyzacja wielu operacji. Istotne zmiany, które należy wprowadzić, aby zwiększyć bezpieczeństwo aplikacji Pyro, wykonujemy tylko po stronie serwera. Uzbrojeni w tę wiedzę w bardzo łatwy sposób możemy dokonać zmian w naszym komunikatorze.

Generowanie certyfikatów

Rysunek 2. Nasza aplikacja podczas rozmowy

Bezpieczeństwo komunikacji ściśle zależy od utworzonych certyfikatów. Z tego powodu, zanim zaczniemy modyfikować nasz program, wygenerujemy stosowne certyfikaty. Nie jest to trudne, ale musimy znać obsługę programu openssl. Możemy ułatwić sobie zadanie, jeśli będziemy korzystać ze skryptu pomocniczego, dostępnego w kodzie źródłowym pakietu OpenSSL. Potrzebny skrypt można odnaleźć wtedy

www.lpmagazine.org

73

dla programistów

Rysunek 3. Strona domowa PYRO w katalogu Apps. Pojawia się on w dwóch wersjach: dla języka Perl, jako plik o nazwie CA.pl, oraz jako zwykły skrypt BASH-a – CA.sh. My będziemy korzystać z tego drugiego (jego kopia znajduje się również na płycie CD/DVD). Pierwszym krokiem jest utworzenie certyfikatu autoryzacji, czyli pliku CA. Gdy korzystamy z pomocy skryptu CA.sh, wystarczy wydać krótkie polecenie:
# ./CA.sh -newca

Otrzymaliśmy wszystkie niezbędne dane, aby utworzyć certyfikat dla klienta. Niestety, musimy samodzielnie przenieść pewne dane z plików wygenerowanych przez skrypt CA.sh i program openssl. Kopiujemy cześć opisującą certyfikat (Listing 3 przedstawia ogólną postać tych plików)

z pliku newcert.pem do pliku o nazwie client.pem, a następnie dołączamy do niego opis klucza prywatnego z pliku newkey.pem. Z certyfikatem przeznaczonym dla serwera postępujemy w podobny sposób, ale nie generujemy już certyfikatu autoryzacji (jest wspólny dla klienta i serwera), lecz następny certyfikat żądania. Podczas wypełniania pól informacyjnych warto zwrócić uwagę na to, aby pole Common Name posiadało inną wartość dla klienta i dla serwera. Po zakończeniu operacji tworzenia plików client.pem oraz server.pem brakuje nam jeszcze jednego pliku, a mianowicie głównego certyfikatu. Znajduje się on w katalogu demoCA pod nazwą cacert. Wystarczy ten plik przekopiować do katalogu, w którym znajdują się pozostałe pliki naszej aplikacji. Zmieniamy nazwę pliku z certyfikatem na ca.pem oraz kasujemy początkowe informacje o certyfikacie aż do linii rozpoczynającej certyfikat:
-----BEGIN CERTIFICATE-----

W ten sposób dysponujemy trzema plikami, które są niezbędne do bezpiecznej komunikacji pomiędzy serwerem a klientem.

Listing 4. Najważniejsze fragmenty programu serwera
#! /usr/bin/python import sys import Pyro.core import Pyro.naming from Pyro.EventService.Clients import Publisher # identyczna postać jak na Listingu 2 class printCertValidator(Pyro.protocol.BasicSSLValidator): class TalkSrv(Pyro.core.ObjBase, Publisher): Pyro.core.initServer() Pyro.config.PYRO_TRACELEVEL=3 Pyro.config.PYRO_NS_HOSTNAME='localhost' Pyro.config.PYRO_LOGFILE='server_log'

Skrypt utworzy kilka katalogów oraz plik z certyfikatem (znajdzie się on w katalogu demoCA). Zostaniemy również poproszeni o wypełnienie kilku pól. Następnie generujemy certyfikat żądania:
# ./CA.sh -newreq

Tutaj ponownie zostaniemy poproszeni o podanie kilku informacji. Po zakończeniu procesu powstanie plik o nazwie newreq.pem. Następnym krokiem jest podpis certyfikatu żądania:
# ./CA.sh -sign

ns=Pyro.naming.NameServerLocator().getNS() daemon=Pyro.core.Daemon(prtcol='PYROSSL') daemon.setNewConnectionValidator(printCertValidator()) daemon.useNameServer(ns) uri=daemon.connect(TalkSrv(), "TalkSrv") print "TalkServer is ready." daemon.requestLoop()

Powstanie plik o nazwie newcert.pem. Teraz możemy odczytać frazę klucza i w tym celu wydajemy polecenie:
# openssl rsa < newreq.pem > newkey.pem

74

styczeń 2005

python/pyro/ssl

dla programistów

Dla tych z czytelników, którzy nie mieli styczności z takimi plikami, Listing 3 przedstawia schematycznie postać poszczególnych plików. Przenosimy wyrażenia znajdujące się pomiędzy liniami:
-----BEGIN CERTIFICATE---------END CERTIFICATE-----

czyli nasze certyfikaty będą ważne przez 365 dni od momentu utworzenia. Jeśli chcemy to zmienić, wystarczy podać inną liczbę dni.

Poprawiamy komunikator

bądź
-----BEGIN RSA PRIVATE KEY---------END RSA PRIVATE KEY-----

w przypadku klucza prywatnego. Mam nadzieje, że podane informacje pomogą we własnym tworzeniu certyfikatów. Certyfikaty z płyty CD/DVD są ważne do listopada 2005 roku. Okres ważności certyfikatów może być inny. W pliku CA.sh po początkowych komentarzach natrafiamy na zmienną DAYS:
DAYS="-days 365"

Wiemy, jak wygenerować certyfikat oraz w jaki sposób należy napisać programy serwera i klienta. Oznacza to, że bez żadnych kłopotów możemy zmodyfikować naszego komunikatora. Zobaczmy, jak wygląda serwer. Istotne dla nas fragmenty zawiera Listing 4. Klasa printCertValidator pozostała nie zmieniona w stosunku do poprzednich przykładów, podobnie jak klasa TalkSrv. Poszczególne metody klasy serwera również nie podlegają żadnym zmianom. Jak widać z Listingu 4, program serwera nie różni się niczym specjalnym od programu z Listingu 2. Włączenie obsługi SSL następuje w momencie utworzenia obiektu daemon. Wszystkie detale związane

z SSL zostały już omówione przy okazji poprzedniego przykładu, więc musimy tylko zadbać, aby pliki z certyfikatami znalazły się w podkatalogu certs, widocznym z poziomu programu serwera oraz klienta. Podobna sytuacja pojawia się w programie klienta – nie zmieniamy elementów związanych z interfejsem graficznym, a sposób implementacji klienta jest zgodny z przykładami, które podałem na początku tego artykułu.

OpenSSL w C/C++

Gdy chcemy pisać program bezpośrednio w języku C/C++, to sposób korzystania z OpenSSL nie jest znacznie bardziej skomplikowany. Ogólny schemat tworzenia programu klienta wygląda wtedy następująco:
/* utworzenie uchwytu SSL */ con=(SSL *)SSL_new();

R

E

K

L

A

M

A

www.lpmagazine.org

75

dla programistów

Listing 5. Najważniejsze fragmenty programu klienta
#! /usr/bin/python import sys import Pyro.util import Pyro.core from Pyro.EventService.Clients import Subscriber from threading import Thread import gobject import gtk import gtk.glade your_nick='' talks={} # identycznie, jak w poprzedniej wersji def UpdateActiveList(): def OnEndBTN(*args): def OnTalkBTN(*args): def OnCreateTalker(*args): def OnEndNickBTN(*args): class TalkSrvEvent(Subscriber): class EventListener(Thread): class Talker: main_win_xml=gtk.glade.XML('MainWin.glade') nick_win_xml=gtk.glade.XML('NickWin.glade') mainwin=main_win_xml.get_widget("MainWin") # pozostałe polecenie odczytujące referencje do widgetów mySigID=gobject.signal_new("create_talker", gtk.Window, gobject.SIGNAL_RUN_LAST,S gobject.TYPE_BOOLEAN, (gtk.Window, gobject.TYPE_STRING, gobject.TYPE_STRING)) # signal connect # # podłączanie obsługi sygnałów EndNickBTN.connect('clicked', OnEndNickBTN) person_list_data=gtk.ListStore(gobject.TYPE_STRING) person_list.set_model(person_list_data) nick_column=gtk.TreeViewColumn('Nick\'s', gtk.CellRendererText(), text=0) person_list.append_column(nick_column) mainwin.hide() Pyro.core.initClient() Pyro.config.PYRO_TRACELEVEL=3 Pyro.config.PYRO_NS_HOSTNAME='localhost' Pyro.config.PYRO_LOGFILE='client_log' TalkSrv = Pyro.core.getProxyForURI("PYRONAME://TalkSrv") UpdateActiveList() nickwin.show() while gtk.main_iteration_do(False): pass /* otwieramy zwykłe gniazdko do komunikacji sieciowej */ /* kojarzymy uchwyt gniazda z połączeniem SSL */ SSL_set_fd(con,s); /* nawiązujemy połączenie */ SSL_connect(con); /* stosując SSL_read() oraz SSL_write() wymieniamy informacje pomiędzy klientem a serwerem */

OpenSSL zostało wyposażone w odpowiednie funkcje, które znacząco uproszczają ten problem, np. określenie certyfikatu to zadanie dla jednej funkcji:
SSL_use_certificate(con,”server.cert”)

W rezultacie wygląda to tak:
/* utworzenie uchwytu SSL */ con=(SSL *)SSL_new(); /* otwieramy zwykłe gniazdko do komunikacji sieciowej */ /* kojarzymy uchwyt gniazda z połączeniem SSL */ SSL_set_fd(con,s); /* stosujemy klucz prywatny */ SSL_use_RSAPrivateKey(con,”server.rsa”); /* określamy certyfikat */ SSL_use_certificate(con,”server.cert”); /* nawiązujemy połączenie */ SSL_accept(con); /* stosując SSL_read() oraz SSL_write() wymieniamy informacje pomiędzy serwerem a klientem */

Podsumowanie

Dołączenie obsługi SSL w naszej aplikacji do sieciowych rozmów okazało się zadaniem łatwym. Mam nadzieję, że każdy na podstawie zaprezentowanych przykładów będzie w stanie samodzielnie dołączyć obsługę SSL do własnej aplikacji napisanej z zastosowaniem Pyro. Jak widać, sprowadza się to tylko do wygenerowania certyfikatów oraz kilku zmian, głównie w kodzie serwera. Bezpieczeństwo komunikacji zależy również od certyfikatów. Jeśli stosujemy SSL, pamiętajmy o tym, aby zmieniać certyfikaty, gdyż w ten sposób polepszamy poziom bezpieczeństwa naszego programu.

W Internecie:
• • Strona domowa pakietu Pyro: http://pyro.sourceforge.net/ Strona domowa pakietu M2Crypto: http://sandbox.rulemaker.net/ ngps/m2/ Strona domowa pakietu OpenSSL: http://www.openssl.org/ Strona domowa języka Python: http://www.python.org/

W przypadku serwera schemat korzystania z protokołu SSL jest równie prosty. Problemem może wydawać się dołączenie certyfikatów, ale API biblioteki

• •

76

styczeń 2005

księgozbiór aktualności

piotrt@lpmagazine.org

dział prowadzi: Piotr Truszkowski

Kryptografia dla praktyków. Protokoły, algorytmy i programy źródłowe z języku C
za tym idzie, każe sobie wierzyć na słowo, ale z punktu widzenia większości użytkowników jest to zdecydowana zaleta. Specjaliści będą oczywiście rozczarowani, ale to nie dla nich powstała ta książka. Kryptografia dla praktyków to przede wszystkim podręcznik dla osób, które z kryptografią nie miały do tej pory wiele do czynienia, a które chciałyby się czegoś na jej temat dowiedzieć z kompetentnego źródła. Schneierowi udało się uniknąć, częstego w takich przypadkach, zbytniego uproszczenia problemów. Jak na praktyka przystało, nie stroni od problemów politycznych i społecznych związanych z kryptografią – poświęca tym zagadnieniom cały rozdział pt. Rzeczywistość. Nic w tym dziwnego, bo podręcznik Schneiera stał się swego czasu przedmiotem batalii zwolenników pełnego dostępu do silnej kryptografii przeciwko restrykcyjnemu amerykańskiemu prawu dotyczącemu jej eksportu. Kuriozalne przepisy pozwalają bowiem na legalny eksport Kryptografii dla praktyków w formie drukowanej, ale już nie na eksport zawartych w niej kodów źródłowych algorytmów w formie elektronicznej (np. na dyskietce). Zainteresowani mogą o całej sprawie przeczytać na stronie internetowej http:// people.qualcomm.com/karn/export/. Książka podzielona jest na pięć części: Protokoły kryptograficzne, Techniki kryptograficzne, Algorytmy kryptograficzne, wspomniany już rozdział Rzeczywistość oraz wydzielone Programy źródłowe – pięćdziesiąt stron kodu w C, który przyda się każdemu praktykowi. Pierwsze trzy to oczywiście prowadzony niemal od podstaw, bardzo przystępny wykład kryptografii. Pozostałe dwie, choć tak od siebie różne, ucieszą przede wszystkim tych, dla którym kryptografia nie jest tylko zabawką i czystym hobby. Co zatem nowego w drugim wydaniu tej klasycznej już książki? Siedem nowych rozdziałów, ponad 1600 nowych odnośników bibliograficznych oraz wiele dodatkowych algorytmów, w tym GOST, Blowfish, RC4 i A5. Tym samym podręcznik zyskał około 50% objętości... Zachęcam do lektury. Moja ocena: 5/5 Recenzent: Witold Kieraś (witekk@lpmagazine.org)

To już drugie wydanie klasycznego podręcznika do kryptografii autorstwa Bruce’a Schneiera, znanego specjalisty od zabezpieczeń informatycznych. Schneier to nie tylko twórca szyfrów (jest on autorem m.in. popularnego szyfru Bowfish, który dodatkowo udostępnił do wykorzystania bez żadnych opłat i licencji), ale i biznesmen – założyciel Counterpane Internet Security. To co jest najbardziej cenne w tym podręczniku to przystępność wykładu. Autor nie wdaje się w rozważania czysto matematyczne, nie przytacza skomplikowanych dowodów i, co

Fedora Core 2 dla każdego
dla każdego, która ukazała się nakładem wydawnictwa Helion w 2004 roku. Pozycja ta, jak sam autor tłumaczy, jest przeznaczona dla osób, które nie miały wcześniej styczności z systemami spod znaku pingwina. Została napisana jako zbiór godzinnych lekcji, z których dowiemy się, jak zainstalować Fedorę i odpowiednio ją skonfigurować. Poznamy też najpopularniejsze programy, z których możemy skorzystać w Linuksie. Publikacja jest świetnym, kompletnym, a przede wszystkim przystępnym i ciekawym wprowadzeniem w świat Linuksa, ze szczególnym uwzględnieniem dystrybucji Fedora Core. Dużym atutem książki są strony oznaczone jako Warsztat, występujące na końcu każdego rozdziału. Znajdziemy tam Quiz z odpowiedziami, oraz ćwiczenia do samodzielnego wykonania. Duża pochwała należy się także redakcji polskiego wydania za szybkie tłumaczenie książki (w Polsce została wydana w kilka miesięcy po premierze oryginału) oraz za fragmenty umilające czytanie, jak choćby treść niektórych zrzutów ekranu w rozdziale 12 i 13. Fedor Core 2 dla każdego to naprawdę książka godna polecenia – aktualna, przystępna i ciekawa – gorąco polecam. Moja ocena: 4+/5 Recenzent: Marek Bettman (marekb@lpmagazine.org)

Jeśli zastanawiamy się, jak zacząć przygodę z Linuksem i jaką dystrybucję wybrać, to pomocna może okazać się książka Fedora Core 2

Bestsellery Merlina
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.

Lista najlepiej sprzedających się książek informatycznych w sklepie internetowym www.merlin.pl, w miesiącu listopadzie:

Optymalizacja systemu Windows – J. Ballew, J. Duntemann, Wyd. Helion, 2004 Thinking in Java. Wydanie 3. Edycja polska – B. Eckel, Wyd. Helion, 2004 ABC fotografii cyfrowej – Ł. Oberlan, Wyd. Helion, 2004 Photoshop CS. Ćwiczenia z ... , Wyd. Mikom, 2004 Krótki kurs architektury i organizacji komputerów – W. Komorowski, Wyd. Mikom, 2004 Programowanie Asembler IBM PC – P. Abel , Wyd. Read Me, 2004 Microsoft Exchange Server 2003 - Vademecum Administratora - W. R. Stanek, Wyd. APN Promise, 2004 Grafika 3D. Modelowanie i rendering od podstaw, Wyd. Axel Springer, 2004 Systemy operacyjne. Szkoła programowania – W. Stallings, Wyd. Robomatic, 2004 Mój pierwszy komputer, Wyd. Help, 2004

www.lpmagazine.org

77

testy

YOPY YP3700
Michał Niwicki

G

dy do redakcji przyniesiono nowego palmtopa YOPY, a naczelny wskazał palcem na mnie i powiedział “ten sprzęt testujesz ty”, mojej radości nie było końca. Rzuciłem szybko okiem na specyfikację techniczną i wiedziałem, że mam do czynienia ze sprzętem z górnej półki. Imponowały nie tylko wysokie parametry urządzenia, ale przede wszystkim to, że palmtop pracował pod kontrolą systemu operacyjnego Linux. Radość nie trwała jednak długo; mój entuzjazm malał na każdym kroku – począwszy od wyjęcia urządzenia z pudełka, a skończywszy na podłączeniu go do komputera.

Co w środku?

Pod obudową urządzenia znajduje się 32bitowy procesor Strong ARM RISC, pracujący z częstotliwością 206 MHz. Palmtop posiada 128 MB pamięci RAM oraz 32 MB ROM. Ponad 40 MB jest używane

Dane palmtopa:
– – – – – – – Procesor: 206 MHz Strong ARM 32-bit RISC Procesor Pamięć: RAM 128MB, ROM 32MB System: ARM LinupyTM Linux Distribution, X Window System Wyświetlacz: 3.5" 240x320 True Color (65K) TFT LCD Wymiary:10,3 x 6,9 x 2,5 (centymetry) Waga: 200 g Bateria: 2300mAh Li-ion Polimerowe, ładowalne

YOPY – palmtop ogromnych możliwości

przez system, natomiast reszta pamięci jest przeznaczona na dane użytkownika. Do komunikacji ze światem jest wykorzystywany port podczerwieni albo stacja dokująca, podłączana do komputera stacjonarnego za pomocą portu USB. YOPY posiada również złącze Multimedia Card oraz gniazdo Compact Flash II. Wszystko to kryje się w mieszczącej się w dłoni obudowie ważącej około 200g.

Interfejs: – – – – – – – – klawiatura (qwerty), przyciski nawigacyjne złącze RS-232C / USB port IrDA (115Kbps) gniazdo Compact Flash II złącze Multimedia Card przycisk przewijania mikrofon złącze słuchawkowe (3.5 mm, stereo)

Pierwsze wrażenie

do komputera stacjonarnego. Niewygodna była natomiast sama praca na YOPYm umieszczonym w stacji – każdorazowe dotknięcie rysikiem ekranu powodowało znaczne odchylanie się do tyłu klapki z wyświetlaczem. Szkoda także, że urządzenia nie można było podłączyć do komputera z pominięciem stacji dokującej. Niewątpliwie, radość sprawiał system operacyjny Linux, pod kontrolą którego pracował YOPY, oraz widok uruchamiających się X-ów.

Pierwszą rzeczą po wyjęciu YOPY-ego z pudełka, która rzuciła mi się w oczy, były jego gabaryty. Palmtop, mimo że mieścił się w dłoni, był gruby i posiadał topornie otwieraną klapkę, na której znajdował się kolorowy 3,5'' dotykowy wyświetlacz oraz tajemnicze diody mrugające za każdym razem, gdy zamykałem urządzenie. Zaletą testowanego sprzętu była niewielkich rozmiarów stacja dokująca, umożliwiająca podłączenie palmtopa

Ale o co chodzi?

Bezpośrednio po włączeniu, YOPY przemówił do mnie w języku angielskim. Szkoda, bo na rynku polskim od jakiegoś czasu standardem są palmtopy posiadające polską lokalizację. Intuicyjnie sięgnąłem po instrukcję obsługi, aby sprawdzić, jak zmusić urządzenie do prawidłowego wyświetlania polskich znaków. Tu spotkała mnie kolejna przykra niespodzian-

78

styczeń 2005

yopy

testy

Alternatywne spojrzenie Piotra Truszkowskiego
Główną zaletą tego przyjemnego urządzenia mobilnego jest jego serce, czyli system Linux. Nie ukrywam, że już na samym początku Yopy zrobił na mnie dobre wrażenie. Może dlatego, że uwielbiam Linuksa, a wszystko, co z nim związane, witam z otwartymi rękami, a może dlatego, że Yopy to po prostu bardzo dobry palmtop. Bardzo dobry, ale nie doskonały. Może najpierw o wadach, ponieważ nic tak nie motywuje producentów sprzętu do stworzenia lepszego produktu, niż wyliczenie wad na łamach poczytnego czasopisma. Yopy jest słabo wykonany. Klapka lata na wszystkie strony, jakby zaraz miała odlecieć, materiały są niskiej jakości, a podczas wybierania opcji za pomocą rysika, cały ekran odchyla sie tak mocno do tyłu, jakby miał się za chwilę złamać. Do tego dochodzi instrukcja w języku angielskim, brak polskiego interfejsu, braki w obsłudze urządzenia pod Linuksem (co jest istnym paradoksem – Yopiego wyposażonego w system Linux łatwiej zmusić do pracy w środowisku Windows!), a jeśli już czepiać się wszystkiego, to brakuje również głośników stereo. Skoro Yopy posiada obsługę plików MP3, dlaczego musimy słuchać mono? Dobrze. Koniec narzekań. Yopy to bardzo fajny palmtop. Jeśli jesteście użytkownikami Linuksa, poczujecie się jak ryba w wodzie. Pod maską szybki (206 MHz) procesor, dużo pamięci (128 RAM/32 ROM), dobrej jakości wyświetlacz LCD, potrafiący cieszyć nasze oczy paletą 65 tysięcy kolorów, bardzo dobra bateria, która potrafi wytrzymać do 8 godzin ciągłej pracy, oraz klawiatura w standardzie QWERTY. Dzięki goszczącej w środku dystrybucji Lupy, możemy skorzystać z ogromnego repozytorium pakietów dla Linuksa. Na płytce zawarto oprogramowanie, dzięki któremu na naszym domowym pececie skompilujemy sobie program i zainstalujemy go w Yopim. Prawda, że miłe? Z naszym palmtopem możemy komunikować się poprzez podczerwień, gniazdo MMC i USB. Reasumując, polecam Yopiego wszystkim użytkownikom Linuksa i tym, którzy chcą mieć dobrego palmtopa, z solidnym systemem, który na wszelkiego rodzaju wirusy reaguje wyciągnięciem ostrzegawczego znaku “Stop – tutaj nie macie czego szukać”. Ładny, stabilny, o dobrym stosunku jakości do ceny. Warto go chociaż zobaczyć. Ocena: 4/5

ego z użytkownikiem nie jest ani trochę intuicyjna, osoby, które po raz pierwszy mają do czynienia z palmtopem, mogą czuć się lekko zagubione.

Zwykła praca

słowem nie wspomniano o możliwości podłączenia palmtopa do naszego ulubionego Linuxa. W efekcie, skorzystanie z rozszerzeni znajdujących się na płycie CD może sprawiać problemy początkującym użytkownikom urządzenia.

YOPY posiada wszystkie programy, które powinny znaleźć się na każdym przyzwoitym palmtopie. Mamy typowe aplikacje PIM – kalendarz, zadania, listy dnia, kontakty oraz całą gamę dodatkowych aplikacji multimedialnych oraz biurowych. Potęgę urządzenia podkreśla kompilator, znajdujący się na płycie CD, umożliwiający pisanie na komputerze stacjonarnym własnych programów działających na YOPY-m. Mimo, że na palmtopie zainstalowany jest system operacyjny Linux, standardowo, urządzenie współpracuje jedynie z Windowsami. W instrukcji obsługi ani

Podsumowanie

YOPY 3700 jest niewątpliwie palmtopem o ogromnych możliwościach. Niestety, zlekceważenie przez producenta polskiego klienta (chociażby brak instrukcji obsługi w języku polskim), dyskwalifikuje urządzenie na rodzimym rynku. Zaskakuje również brak wsparcia dla systemu operacyjnego Linux. Ostatecznie, biorąc pod uwagę wysoką cenę YOPY-ego (ponad 2500 zł), nie zdziwiłbym się, gdyby konsument wybrał urządzenia firm konkurencyjnych. Ocena: 3/5

R

E

K

L

A

M

A

ka – dostarczona instrukcja obsługi była napisana również po angielsku. Biorąc pod uwagę fakt, że współpraca YOPY-

www.lpmagazine.org

79

You're Reading a Free Preview

Pobierz
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->