Linux+_2004 01_PL

76

description

Magazyn otwartych umysłów.

Transcript of Linux+_2004 01_PL

Page 1: Linux+_2004 01_PL
Page 2: Linux+_2004 01_PL
Page 3: Linux+_2004 01_PL
Page 4: Linux+_2004 01_PL

Styczeń 2004

styczeń 20042

Opis zawartości płyt CDPiotr Truszkowski

AktualnościNewsyKrzysztof Krawczyk

Jądro LinuxMaja Królikowska

DebianGrzegorz Prokopski

AuroxRobert Główczyński

RPMDaniel Koć

GNOMEZbigniew Chyla

KDEPaweł Biliński

LinuxFreshPiotr Machej

4

Miesięcznik Linux+ (12 numerów w roku) jest wydawany przez Software-Wydawnictwo Sp. z o. o. Redaktor naczelny: Krzysztof Krawczyk, [email protected] redaktora: Piotr Truszkowski, [email protected]: Marta Kurpiewska, [email protected] CD: Krzysztof Krawczyk, Piotr TruszkowskiDział reklamy: Dagmara Witkowska, [email protected], tel.: (22) 860 18 79Prenumerata: Marzena Dmowska, [email protected], tel.: (22) 860 17 67Projekt graficzny okładki: Marzena Turek-Gaś, [email protected] graficzny pisma: Marzena Turek-Gaś, [email protected]ład: Sławomir Zadrożny, [email protected]

Adres korespondencyjny: Software-Wydawnictwo Sp. z o. o., 00-190 Warszawa, ul. Lewartowskiego 6e-mail: [email protected], 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 wykorzystania ich; nie gwarantuje także poprawnego działania programów shareware, freeware i public domain. Uszkodzone podczas wysyłki płyty 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.Redakcja używa systemu automatycznego składu

Druk: Stella Maris

Płyty CD dołączone do magazynu przetestowano programem AntiVirenKit firmy G DATA Software Sp. z o.o.

12

14

16

18

20

10Długie kolejki po numery Linux+

Extra! z dystrybucjami Linuksa nie są fikcją. Taki obraz można było zobaczyć, przykładowo, w Empikuw Zielonej Górze pod koniec listopa-da. Ludzie dowiedzieli się, że istnieje niebezpieczeństwo odwiedzenia ich domów przez policję w celu spraw-dzenia legalności wykorzystywanego

przez nich oprogramowania. Chociaż przeszukiwanie prywatnych mieszkań było tylko plotką, a akcja lubuskiej policji dotyczyła hurtowników komputerowych, którzy na masową skalę produkują i sprzedają nielegalne oprogramo-wanie, to warto zastanowić się, dlaczego w Polsce Linux nie jest tak popularny, jak w innych krajach Europy. Wynika to zapewne z tego, że żyjemy w państwie, w którym piractwo komputerowe jest powszechne – nielegalne kopie prawnie chronionych programów komputerowych można bardzo ła-two zdobyć. A gdyby nie było to możliwe? W efekcie więk-szość użytkowników komputerów spróbowałaby Linuksa, który chociażby w dziedzinie bezpieczeństwa prezentuje się lepiej od konkurencyjnych rozwiązań komercyjnych. Tematem przewodnim tego numeru Linux+ jest właśnie wzmacnianie zabezpieczeń Linuksa. Można to zrobić na wiele sposobów, wśród których wybraliśmy dwa naszym zdaniem bardzo ciekawe: szyfrowanie systemów plików oraz wprowadzanie rozszerzeń do jądra. Godny uwagi jest także wywiad z Solar Designerem, cenionym specjalistą od bezpieczeństwa komputerowego.Zapraszam do lektury i czekam na opinie na temat pisma, nie tylko pozytywne.

Krzysztof KrawczykRedaktor Naczelny Linux+

Linux a piractwo komputerowe

22

24

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ą.

Page 5: Linux+_2004 01_PL

Temat miesiąca

3www.linux.com.pl

BezpieczeństwoLoop-AES – szyfrowane systemy plikówSkarbimir Kwiatkowski

Gdy posiadamy poufne informacje, które chcemy

zabezpieczyć przed niepowołanym dostępem, warto je

zaszyfrować. Można to zrobić chociażby przy pomocy

GnuPG, ale ciekawszym, wygodniejszym i pewniejszym

rozwiązaniem jest przygotowanie specjalnej zaszyfrowa-

nej partycji, na której będą przechowywane kluczowe

dane. Z pomocą przychodzi nam wtedy moduł jądra

o nazwie Loop-AES.

Wzmacniamy jądro:Openwall i GrSecurityMichał Miszewski

Jądra przygotowywane przez twórców dystrybucji

Linuksa zazwyczaj mają już nałożone różne łatki rozsze-

rzające ich możliwości lub poprawiające pewne funkcje.

Wprowadzane zmiany rzadko dotyczą bezpośrednio

bezpieczeństwa, dlatego warto rozważyć skorzystanie

z zestawu łatek Openwall lub GrSecurity. W artykule

został przedstawiony proces nakładania takich łatek oraz

nowe opcje konfiguracyjne jądra.

TestySuSE Linux 9.0 ProfessionalPiotr Truszkowski

Dystrybucja Linuksa firmy SuSE, chociaż jest bardzo cie-

kawym produktem, raczej nie jest popularna w Polsce,

chociażby dlatego, że nie są dostępne jej obrazy ISO.

Ponieważ niedawno firma Novell wykupiła producenta

tego systemu, sytuacja może się znacznie zmienić. Zanim

to jednak nastąpi, postanowiliśmy przyjrzeć się nowej

wersji tej dystrybucji Linuksa.

WywiadWywiad z Alexandrem Peslyakiem (Solar Designerem), twórcą projektu OpenwallKrzysztof Krawczyk

Osoby zainteresowane bezpieczeństwem Linuksa na

pewno słyszały o Solar Designerze, który od kilku

lat przygotowuje liczne narzędzia dla tego systemu

w ramach projektu Openwall. Z najbardziej znanych jego

produkcji można wymienić John The Rippera (wykrywa

hasła łatwe do złamania), łatki na jądro Linuksa oraz

dystrybucję Owl. Postanowiliśmy porozmawiać z nim na

temat projektu Openwall oraz najbliższych planów.

Dla początkującychPraca z OpenSSHPiotr Machej

Gdy chcemy popracować na odległym komputerze,

a mamy dostęp do niego poprzez sieć, możemy skorzy-

stać z protokołu SSH. Jego podstawową zaletą jest szyfro-

wany kanał komunikacji. Pakiet OpenSSH, który można

znaleźć w większości dystrybucji Linuksa, zawiera serwer

i klienta tego oprogramowania. Warto poznać jego liczne

możliwości, w tym mniej znane, takie jak tunelowanie

połączeń.

SprzętLm_sensors i Smartmontools – czujniki naszego komputeraPiotr Wolny

Gdy system zaczyna działać niestabilnie, niekoniecz-

nie musi to być wina oprogramowania. Przyczyną

równie dobrze mogą być problemy sprzętowe. W takim

przypadku warto posiadać oprogramowanie, które

korzystając z czujników wbudowanych w urządzenia,

pomogłoby nam zdiagnozować niepoprawnie pracujący

element komputera. Taką rolę pełnią LM_Sensors (płyty

główne) oraz SmartMonTools (dyski twarde).

Dla programistówPisanie bezpiecznych programówMarek Sawerwain

Ataki przepełnienia bufora są bardzo niebezpieczne,

gdyż z ich pomocą można szybko przejąć kontrolę nad

systemem. Z tego powodu, pisząc własne programy,

trzeba pilnować, aby nie powstawały niepoprawne

konstrukcje. Wygodniejszym rozwiązaniem jest skorzy-

stanie z gotowych bibliotek, które robią to za programi-

stę. W artykule zostały opisane dwa takie rozwiązania:

SCSL oraz Vstr. Ponadto, zwrócono w nim uwagę na

poprawne zarządzanie pamięcią, w czym mogą być

pomocne pakiety Memwatch oraz Libcwd.

Dla graczyVega StrikeKrzysztof Wolski

Jeżeli chcesz zostać pilotem statku kosmicznego, han-

dlować towarem i walczyć z wrogimi statkami, zagraj

w grę Vega Strike. Wyróżnia się ona bardzo dobrą grafi-

ką i muzyką, a także wysoką grywalnością.

30 44

52

4258

38

66

26

Page 6: Linux+_2004 01_PL

styczeń 20044

opis CD płyta A

Linux+ Live SecurityPak

Linux+ Live SecurityPak to specjalna wersja systemu Linux, uruchamiana bezpośrednio z napędu CD i nie

wymagająca instalacji na dysku twardym.Linux od samego początku swojego istnienia jest sys-

temem bardzo blisko związanym z siecią Internet. Dlatego też, m.in. obsługa sieci jest tym, w czym Linux sprawuje się naprawdę bardzo dobrze, co daje swoje odzwierciedle-nie chociażby w ilości serwerów, na których z powodze-niem funkcjonuje. Bardzo istotną kwestią – choć często lekceważoną przez początkujących administratorów – jest bezpieczeństwo sieci. Wyposażyliśmy system Linux+ Live SecurityPak w zestaw narzędzi, które z pewnością przy-dadzą się każdemu administratorowi sieci, oraz osobom, które taką funkcję zamierzają w niedalekiej przyszłości pełnić. W omawianej edycji systemu – obok programów przedstawionych w obecnym wydaniu magazynu Linux+ – znajdziecie m.in.:

• Ettercap – popularny sniffer, pozwalający przechwy-tywać pakiety krążące po sieci lokalnej, kontrolować ruch i robić wiele innych rzeczy;

• Ethereal – popularny sniffer;• GKrellM – ciekawy program, pokazujący nam wiele

istotnych informacji na temat naszego systemu opera-cyjnego;

• Hping2 – rozszerzona wersja popularnego programu Ping;

• Iptraf – program ilustrujący ruch w sieci lokalnej;• Nessus – bardzo popularny skaner, który pozwoli Ci

przeprowadzić audyt bezpieczeństwa systemu;• Nmap – bardzo popularny skaner sieci, pozwalający

m.in. na zdalną identyfikację systemu operacyjnego i działających na nim usług;

• PortSentry – narzędzie umożliwiające zablokowanie dostępu użytkownikowi skanującemu bądź próbują-cemu włamać się do naszego systemu;

• Vega Strike – kosmiczna gra handlowa.

Linux+ Live SecurityPak może okazać się niezbędnym narzędziem do przeprowadzenia testów bezpieczeństwa sieci, analizy powłamaniowej bądź po prostu nowym doświadczeniem dla osób marzących o karierze spe-cjalisty do spraw zabezpieczeń. Uruchomienie tego systemu to wspaniała okazja ku temu, aby poznać me-chanizmy, którymi posługują się internetowi włamywa-cze, jak i metody obrony przed nimi.

Menedżerem okien w tej edycji Linux+ Live jest Fluxbox, z uwagi na jego małe wymagania sprzętowe, szybkość i popularność w kręgach administratorów sie-ci i programistów. System został zoptymalizowany pod względem szybkiego uruchamiania i pracy. Większość usług jest domyślnie wyłączona, a ich uruchomienie jest możliwe poprzez wybranie odpowiedniej opcji z menu menedżera okien.

Obok Linux+ Live SecurityPak, na płytce znajdzie-cie m.in. ponad 50 narzędzi związanych z bezpieczeń-stwem sieci, najnowszą wersję jądra systemowego, wszystkie opisywane w numerze programy, łatki Open-wall i GrSecurity i wiele innych, bardzo przydatnych narzędzi.

Minimalne wymagania sprzętowe:

• procesor Pentium;• napęd CD-ROM o prędkości minimum 32x;• minimum 128 MB pamięci RAM;• mile widziane połączenie z siecią Internet.

Uwaga!Redakcja nie ponosi odpowiedzialności za ewentualne szkody powstałe w wyniku użytkowania opisywanego systemu i dołączonego do niego oprogramowania. Za-bronione jest używanie dołączonego oprogramowania na szkodę innych użytkowników.

Linux+ Live po uruchomieniu

Linux+ Live w czasie pracy

Page 7: Linux+_2004 01_PL

dział prowadzi: Zbigniew Chyla

5www.linux.com.pl

[email protected]

Amap 4.5Skaner pozwalający na identyfikację programów/usług działających na portach innych niż standardowych.http://www.thc.org/

Ethereal 0.9.16Program do podsłuchiwania ruchu w sieci.http://www.ethereal.com/

Bastille 2.1.1Program ułatwiający zabezpieczenie systemu. Wyłącza zbędne usługi, nakłada odpowiednie prawa dostępu do plików/katalogów i robi wiele innych rzeczy mających na celu ułatwienie życia administratorowi.http://www.bastille-linux.org/

Cheops 0.60pre5Narzędzie do zarządzania siecią.http://www.marko.net/cheops/

Firewall BuilderProgram do konfiguracji iptables, działający w środowisku graficznym. Pozwala tworzyć bardzo dokładne i zaawansowane konfiguracje.http://www.fwbuilder.org/

FreeS/WAN 2.04Program do tworzenia własnych sieci prywatnych.http://www.freeswan.org/

Fwlogwatch 0.9.3Program analizujący logi firewalla i powiadamiający administratora o podejrzanej sytuacji.http://cert.uni-stuttgart.de/projects/fwlogwatch/

GnuPG 1.2.3Szyfrowanie plików i listów.http://www.gnupg.org/

GrSecurity 2.4.23Łatka na jądro, mającą na celu lepsze zabezpieczenie tego kluczowego elementu systemu operacyjnego.http://www.grsecurity.net/

HPing2Rozszerzona o nowe możliwości wersja popularnego programu Ping.http://www.hping.org/

John The Ripper 1.6Najnowsza wersja bardzo popularnego „łamacza” haseł.http://www.openwall.com/john/

Kerberos5 1.3.1System autoryzacji szeroko wykorzystywany na świecie.http://web.mit.edu/kerberos/www/

Ettercap 0.6b

Podsłuchiwanie ruchu w sieci kojarzy się nam często z dzia-

łaniem hakerów, które ma na celu przechwycenie naszych haseł, da-nych bądź innych informacji, przy-datnych do włamania na serwer. Nie każdy administrator zdaje sobie jednak sprawę z tego, iż programy do podsłuchiwania ruchu w sieci mogą być także złotym środkiem na przeciążone przez oprogramowanie P2P sieci osiedlowe, firmowe i inne. Mogą również zapobiec wydostaniu się na zewnątrz ważnych dla firmy informacji. Pozwolą także docie-kliwemu szefowi sprawdzić, czym aktualnie zajmuje się nowo przyjęty pracownik.

Jednym z programów, który umożliwia takie działania, jest właś-nie Ettercap. Za jego pomocą mo-żemy podsłuchiwać ruch w sieciach osiedlowych, zamykać otwarte na innych komputerach połączenia sie-ciowe oraz robić wiele innych rze-czy, które w słabo zabezpieczonej sieci utrudniają życie każdemu admi-nistratorowi. W tym miejscu ważna uwaga – Ettercap jest programem, z którym należy obchodzić się bar-dzo rozsądnie i nie działać na szko-dę innych użytkowników. Nie jest on przeznaczony dla początkujących użytkowników komputera. W słabo zabezpieczonej sieci przy nieodpo-wiednim użyciu może spowodować załamanie ruchu internetowego.

Ettercap oferuje nam pracę zarów-no w trybie tekstowym (środowisko NCurses), jak i graficznym (GTK). Dzięki modularnej budowie, możemy nasz program powiększać o nowe mo-duły, których w sieci jest dostępnych naprawdę bardzo wiele, bądź napisać własne. Wśród podstawowych funkcji Ettercapa możemy znaleźć:

• wparcie dla SSH1 – podsłuchi-wanie i przechwytywanie nazw użytkowników, haseł oraz danych przesyłanych za pomocą tego pro-tokołu;

• wsparcie dla HTTPS – podsłuchi-wanie danych przesyłanych po-przez „bezpieczny” protokół SSL, nawet poprzez PROXY;

• podsłuchiwanie nazw użytkow-ników, haseł oraz danych wysy-łanych poprzez Telnet, FTP, POP, Rlogin, SSH1, ICQ, SMB, MySQL, HTTP, NNTP, X11, Napster, IRC, RIP, BGP, SOCKS 5, IMAP 4, VNC, LDAP, NFS, SNMP, Half Life, Qu-ake 3, MSN oraz YMSG;

• filtrowanie pakietów i usuwanie wybranych z nich – ustawianie filtrów, dzięki którym można podsłuchiwać ruch na podanych przez siebie portach z możliwo-ścią usuwania wybranych przez siebie pakietów;

• zgadywanie systemu operacyjnego – sprawdzanie, jakiego systemu operacyjnego używają inni użyt-kownicy twojej sieci;

• zabijanie połączeń – sprawdzanie, czym zajmują się obecni w sieci ludzie oraz możliwość uruchomie-nia masowego zabijania połączeń dla danego użytkownika/ów;

• pasywne skanowanie sieci LAN – zdobywanie informacji o kompu-terach obecnych w sieci lokalnej oraz wszystkich czynnościach, które wykonują ich właściciele;

• wykrywanie obecności innych snifferów – sprawdzanie, czy je-steś bezpieczny w czasie podglą-dania ruchu w sieci.

http://ettercap.sourceforge.net/

Ettercap po uruchomieniu

płyta A

Page 8: Linux+_2004 01_PL

styczeń 20046

opis CD płyta A

Mozilla 1.6 Alfa PLPolska wersja językowa najpopularniejszej na świecie przeglądarki Open Source.http://www.mozillapl.org/

Mozilla Firebird 0.7 PLNajnowsza wersja przeglądarki opartej o Mozillę, nastawiona na szybkość działania i małą objętość.http://www.mozillapl.org/

Linux 2.4.23Najnowsza stabilna edycja jądra systemowego z gałęzi 2.4.x.http://www.kernel.org/

OpenSSH 3.7.1p2Oprogramowanie umożliwiające prowadzenie szyfrowanych połączeń. Zastępca popularnego telnetu.http://www.openssh.org/

Openwall 2.4.23Łatka na jądro systemowe, mająca na celu zwiększenie jego bezpieczeństwa.http://www.openwall.com/linux/

OPIE 2.4Implementacja obsługi haseł jednorazowych.http://inner.net/opie/

Rnmap 0.10Odmiana programu Nmap, pozwalająca połączyć się stacjom klienckim z centralnym serwerem Nmap.http://rnmap.sourceforge.net/

Snort 2.0.5Zaawansowany system detekcji intruzów (IDS).http://www.snort.org/

SnortSnar f 021111.1Program przedstawiający wyniki pracy programu Snort w czytelnej formie plików HTMLhttp://www.silicondefense.com/software/snortsnarf/

TripWire 2.3-47Aplikacja IDS, informująca o plikach, które uległy zmianie.http://www.tripwire.org/

Aurox RPMSPakiety RPM dla dystrybucji Aurox Linux 9.1, przygotowane przez redakcję. Wśród nich: ethereal, ettercap, FireWalk, gkrellm, hping2, hydra, iplog, iptraf, libdnet, libnasl, libnet, libnids, multi-gnome-terminal, nessus, ngerp, nmap, paketto, pmacct, portsentry, xprobe. Pakiety instalujemy za pomocą polecenia: rpm -ihv nazwa_pakietu. Jak zwykle czekamy na Wasze uwagi pod adresem e-mail: [email protected].

Nessus 2.0.9

Odpowiednio zabezpieczony ser-wer jest swoistą wizytówką do-

brego administratora sieci. Wiadomo jednak, że każdy z nas popełnia błę-dy i nie ma ludzi doskonałych. Długie godziny spędzone przy mozolnym zabezpieczaniu serwera mogą pójść na marne w wyniku przeoczenia ja-kiegoś błędu przy konfiguracji usługi, błędnym ustawieniu praw dostępu do plików/katalogów bądź tysiącu innych drobnych spraw. Z pomocą w takim przypadku przychodzi Nessus. Jest to popularny skaner zabezpieczeń serwera, który pomoże w odkryciu błędów konfiguracji i poinformuje nas o ewentualnych niezałatanych błę-dach w oprogramowaniu, oszczędza-jąc nam tym samym godzin czytania Security Focus i poszukiwania słabych ogniw systemu. Nie bez znaczenia jest fakt, że Nessus należy do grona pro-gramów Open Source i dostępny jest dla każdego bez jakichkolwiek opłat licencyjnych.

Nessus składa się zarówno z klien-ta, jak i serwera. Aby sprawdzić nasz

system, musimy założyć na nim użyt-kownika uprawnionego do połączeń z naszym serwerem Nessusa. Dokonu-jemy tego poleceniem: nessus-adduser. Pozostaje nam jeszcze konfiguracja, którą przeprowadzamy w pliku /usr/local/etc/nessus/nessusd.conf, a następ-nie wystartowanie samego serwera poleceniem nessusd -D. Po wykonaniu tych czynności, możemy uruchomić naszego klienta Nessusa i przeska-nować system logując się za pomocą utworzonego wcześniej użytkownika i hasła. Jako wynik skanowania otrzy-mamy bardzo czytelny i szczegółowy raport. Znajdziemy w nim opis tego, co nie podoba się naszemu skanerowi i jak niebezpieczna jest wykryta luka. Przedstawiona zostanie nam również propozycja jej załatania.

Nessus jest bardzo przydatnym na-rzędziem dla każdego, kto troszczy się o bezpieczeństwo swojej sieci i użyt-kowników, którzy z niej korzystają. Z pewnością warto go wypróbować – możemy na tym tylko zyskać.http://www.nessus.org/

BitDefender 1.5.5

Wirusy komputerowe to temat zupełnie obcy użytkownikom

Linuksa. Pomimo bardzo wielu prób napisania dla tego systemu wirusa„z prawdziwego zdarzenia”, do tej pory nie znalazł się śmiałek, który by tego dokonał. Co się jednak stanie, gdy nasz komputer pełni rolę linuk-sowego serwera poczty bądź plików, a na stacjach roboczych do niego podpiętych znajdują się systemy Mi-crosoft Windows, które nie posiadają domyślnie żadnych zabezpieczeń przeciwko wirusom? Firma SoftWin SRL proponuje nam w takim przy-padku wyposażenie swoich serwe-rów w system antywirusowy, który pozwoli zachować porządek wśród mnogości plików pracowników i ich poczty internetowej. BitDefender – bo o nim tutaj mowa – jest nowo-

czesnym oprogramowaniem antywi-rusowym przeznaczonym dla każdej grupy klientów, którym pojęcie wi-rusów w sieci lokalnej nie jest obce. Specjalnie dla czytelników Linux+ na płytce CD umieszczamy, nigdzie indziej niedostępną, 90-dniową wer-sję ewaluacyjną najnowszej wersji BitDefendera. Program dostępny jest w dwóch wersjach: chroniącej pocztę (integracja z serwerami Postfix, Qma-il bądź Sendmail) oraz pliki (integra-cja z Sambą). Przygotowane pakiety (DEB, RPM, TGZ) pasują do najpo-pularniejszych dystrybucji Linuksa obecnych na rynku. Z tłumu innych produktów tego typu dostępnych na rynku, BitDefender wyróżnia się za-skakująco niską ceną.

http://www.bitdefender.com/

Page 9: Linux+_2004 01_PL
Page 10: Linux+_2004 01_PL
Page 11: Linux+_2004 01_PL

płyta B

9www.linux.com.pl

Knoppix 3.3

Dystrybucje Linuksa uruchamiane bezpośrednio z płyty CD i nie instalujące się na dysku twardym

komputera już na dobre zadomowiły się w świadomości użytkowników Linuksa. Zdecydowanie najbardziej uni-wersalną z nich wszystkich jest Knoppix. Dzieło Klausa Knoppera, przygotowane na początku jako system prze-znaczony dla odwiedzających konferencję LinuxTag, jest w tej chwili dystrybucją, którą zachwycają się setki tysięcy użytkowników. Sam autor nie raz przyznawał, że nie spo-dziewał się takiej popularności swojego rozwiązania. Co wyróżnia Knoppiksa z tłumu innych, podobnych jemu dystrybucji? Bez wątpienia innowacyjność, bardzo sta-rannie dobrane oprogramowanie, możliwość instalacji na dysku twardym, szybkość działania oraz łatwość, z jaką można uzyskać ewentualną pomoc.

Knoppix oparty jest na dystrybucji Debian GNU/Linux, która – ze względu na podział poszczególnych elementów systemu na jak najdrobniejsze elementy – ide-alnie nadaje się do tworzenia tego typu oprogramowania. W skład opisywanej wersji Knoppiksa wchodzą:

• środowisko graficzne KDE 3.1.4;• pakiet biurowy OpenOffice.org 1.0.3;• zestaw kompilatorów do wielu języków programowa-

nia;• oprogramowanie multimedialne (XMMS, Xine);• przeglądarki graficzne – Acrobat Reader, GV;• programy graficzne: GIMP, Paint, Scribus;• oprogramowanie do konfiguracji sieci;• narzędzia do odzyskiwania danych i naprawy syste-

mów operacyjnych (nie tylko uniksowych);• programy do analizy działania sieci i jej bezpieczeń-

stwa;• środowiska deweloperskie (Anjuta, KDevelop);• zestaw gier;• zestaw aplikacji edukacyjnych;• jądro systemowe w wersji 2.4.22;• łącznie ponad 800 pakietów oprogramowania.

Wszystkie te składniki powodują, że także osoba, która nie miała wcześniej kontaktu z Linuksem, będzie w stanie bliżej zapoznać się z tym systemem.

Knoppix ma bardzo liczne zastosowania. Może być używany w charakterze systemu pokazującego możli-wości Linuksa, systemu ratunkowego służącego np. do odzyskiwania danych, platformy do gier, platformy pro-gramistycznej i wielu innych.

Knoppix bez wątpienia wytyczył szlak, którym podą-ża coraz większa ilość dystrybucji Linuksa. Wspomnieć w tym miejscu należy chociażby o PKD (Polish Knoppix Distribution), SuSE Live, Aurox Live czy właśnie zapocząt-kowanym Mandrake Move. Wersje Live poszczególnych dystrybucji są bardzo dobrym materiałem promocyj-

nym i informacyjnym. Z pewnością warto zapoznać się z Knoppiksem.

Instalacja na dysku twardymMimo tego, że Knoppix jest dystrybucją która uruchamia, się z płytki CD, być może tak bardzo przypadnie nam do gustu, że będziemy chcieli zainstalować go na naszym dysku twardym. W tym celu należy:

• uruchomić system Knoppix z parametrem: knoppix

lang=pl;

• uruchomić konsolę roota (K-> KNOPPIX-> Root Shell);

• rozpocząć instalację wpisując knx-hdinstall;• utworzyć partycje na swap i główny system plików

(ważne, aby partycja / miała co najmniej 2.2 GB);• ustawić chociaż jedną z utworzonych partycji jako

uruchomieniową (Bootable);• zapisać tablicę partycji (Write) i wyjść z programu

(Quit);• wyrazić zgodę na formatowanie i wybrać odpowiada-

jący nam system plików (np. Ext3).

Po wykonaniu tych operacji, system poinformuje nas o kopiowaniu plików. Może to zająć od 10 do 40 minut. Po instalacji, zostanie nam zadanych kilka pytań – czy chcemy uruchomić serwer pocztowy, serwer sshd, serwer Samby, serwer CUPS oraz graficzne logowanie.Prawidłowa odpowiedź na powyższe pytania pozwoli nam skonfigurować system tak, aby spełnił nasze wyma-gania. Następnie wpisujemy nazwę naszego komputera i konfigurujemy sieć. Ostatnim krokiem będzie instalacja programu LILO, dzięki któremu przy starcie komputera będziemy mogli uruchomić nasz system.

http://www.knoppix.net/

Knoppix po uruchomieniu

Page 12: Linux+_2004 01_PL

styczeń 200410

aktualności aktualności

Linux+ na Komputer Expo 2004Dnia 24 stycznia, podczas targów Komputer Expo 2004, redakcja Linux+ organizuje WIL 2004, czyli kolejne spotkanie z czytelnikami magazynu.W godzinach 11.00-15.00 będzie można posłuchać o Linuksie oraz praktycznych możliwościach jego wykorzystania. Tym razem, poza obecnością twórców dystrybucji Aurox, planujemy obecność deweloperów innych dystrybucji Linuksa, takich jak PLD, PKD czy Mandrake i Debian. Wśród uczestników rozlosujemy atrakcyjne nagrody. Podczas samych targów można będzie spotkać redakcję Linux+ na stoisku Software-Wydawnictwo.http://www.linux.com.pl/wil2004/

GnomeMeetingEugenia Loli-Queru, podpora serwisu OSNews, wzięła na warsztat świetne narzędzie do telekonferencji przez komputer, GnomeMeeting, i napisała o swoich doświadczeniach z tym programem.Najnowsza wersja ma numer 0.98.5 i pozwala między innymi na połączenia głosowe (czyli de facto sieciową telefonię) oraz kontakt z użytkownikami NetMeeting. Artykuł zapowiada, że wersja 1.0 będzie wyposażona w mechanizm wtyczek, obsługę ALSA, lepszą książkę adresową oraz asystenta konfiguracji.http://www.osnews.com/story.php?news_id=5280http://hedera.linuxnews.pl/_news/2003/12/03/_long/2351.html

Captive i NTFSNa stronie projektu Captive znajduje się pakiet umożliwiający pełen dostęp do partycji NTFS pod Linuksem, w odróżnieniu na przykład od Linux-NTFS, który jak dotąd zapewnia właściwie tylko odczyt.Jest to pierwszy projekt wprowadzający do świata linuksowego przeźroczysty dostęp z możliwością zapisu do partycji NTFS. Captive radzi sobie z tym trochę na zasadzie Wine, korzystając z oryginalnego sterownika z MS Windows ntfs.sys. Emuluje wymagany podsystem jądra Windows, używając pliku z projektu ReactOS, ntoskrnl.exe, albo swojej własnej implementacji, decydując o wyborze przy każdym wywołaniu.http://www.jankratochvil.net/project/captive/http://linux-ntfs.sourceforge.net/status.html#ntfsdriverhttp://www.reactos.com/http://www.ntfs-linux.com/http://hedera.linuxnews.pl/_news/2003/12/02/_long/2350.html

Konferencja „Linux i jego praktyczne zastosowania biznesowe”

Firma LX Polska, filia firmy LOGIX France, zorganizowała 20 listo-

pada 2003 roku konferencję „Linux i jego praktyczne zastosowania biz-nesowe”. Partnerami tego wydarzenia były firmy: Red Hat, IBM, Altkom oraz Tech Data Polska.

Na początku Jean Jacques Apka-rian (szef LX Polska) opowiedział krótko o firmie oraz jej najnowszej inicjatywie: sprzedaży produktów firmy Red Hat w Polsce.

Pierwszym prelegentem był Fran-cois Lucatelli (Red Hat France). Opo-wiedział o strategii Red Hata i wyjaśnił, dlaczego zmienili politykę wydawania dystrybucji – zbyt częste publikowanie nowych wersji dystrybucji Linuksa powodowało, że partnerzy nie na-dążali z umieszczaniem Red Hata na swoich komputerach czy tworzeniem dla niego nowych wersji oprogramo-wania. Nowa seria Red Hat Enterprise (właśnie została ogłoszona wersja 3) ma być wydawana co 12-18 miesięcy, z 6-miesięcznymi cyklami Beta. Zosta-ła ona podzielona na trzy elementy: AS (Advanced Server ; najbardziej rozbudowane rozwiązanie dla dużych firm), ES (wersja dla małych serwerów) oraz WS (najprostsza wersja dla ma-

łych serwerów lub stacji roboczych). Ponadto, aby całkowicie nie wycofać się z rynku stacji roboczych, w ofer-cie pojawił się Red Hat Professional Workstation (za 88.45 Euro). Na końcu Francois wspomniał także o Fedorze, ale raczej chciał do niej zniechęcić niż się pochwalić – wskazywał, iż jest to projekt, który będzie wykorzystywany jako poligon doświadczalny.

W dalszej części konferencji firma Altkom opowiedziała o swoich autory-zowanych szkoleniach z Linuksa oraz przedstawiła przykład praktycznego wykorzystania produktów Red Hata we własnej infrastrukturze.

Konferencję zakończyły wystą-pienia Toma Boonena (IBM Belgium), który opowiedział o zaangażowaniu swojej firmy w sprawy linuksowe, oraz Mirosława Świniarskiego (Tech Data Polska), który opowiedział o praktycz-nych aspektach wykorzystania Linuksa na sprzęcie IBM-a.

Konferencja była na pewno cieka-wa i wyjaśniła zebranym (około 100 osób), jak przedstawia się przyszłość Red Hata w Polsce.

http://www.lx.pl/http://www.redhat.com/

ISS Proventia

Polska premiera nowej serii roz-wiązań bezpieczeństwa sieciowe-

go o nazwie Proventia miała miejsce5 listopada w Warszawie. Firma Inter-net Security Systems (ISS), producent tych zintegrowanych urządzeń zabez-pieczających firmę, oraz firma Vera-comp S.A., ich dystrybutor w Polsce, zaprezentowały zasadę ich działania oraz dostępne możliwości.

Proventia to rozwiązanie typu IPS / IDS (Intrusion Prevention System / Intrusion Detection System), będące następcą systemu RealSecure. Można je zainstalować w miejscach, przez które przechodzi cały ruch sieciowy.

Dzięki temu ataki będą skutecznie blokowane w czasie rzeczywistym bez ryzyka utraty pakietów. Dotyczy to znanych, jak i nieznanych zagrożeń, łącznie z atakami typu odmowa dostę-pu (ang. denial of service), backdoor, złośliwymi kodami i zagrożeniami hy-brydowymi, takimi jak MS Blaster, SQL Slammer, Nimda czy Code Red.

W środku urządzenia została wy-korzystana odpowiednio zmodyfiko-wana dystrybucja Linuksa, co jest w tej chwili dostrzegalnym trendem w ser-werach typu network appliance.http://www.iss.net/http://www.veracomp.pl/

Page 13: Linux+_2004 01_PL

11www.linux.com.pl

dział prowadzi: Krzysztof Krawczyk

[email protected]

Scribus 1.1.3Franz Schmid i jego zespół przyłożyli się do pracy nad nową wersją Scribusa, dzięki czemu z wydania na wydanie staje się to naprawdę coraz bardziej profesjonalne narzędzie do składu publikacji. Scribus 1.1.3 to wersja niestabilna, ale wystarczy tylko wspomnieć, że pojawił się w niej zaawansowany edytor tekstu, konwersja hiperłączy w eksporcie do PDF, zgodność mechanizmu wtyczek z Pythonem 2.3 czy ustalanie wielkości czcionek z dokładnością do 1/10 punkta, aby narobić sobie apetytu na wypróbowanie go.http://web2.altmuehlnet.de/fschmid/http://www.linuxnews.pl/_news/2003/12/01/_long/2342.html

StraceKażdy programista, nieważne, czy profesjonalny projektant, czy domorosły magik, może spotkać się z sytuacją, gdy napisany program kompiluje się, ale nie działa tak jak powinien. W tym momencie na scenę wchodzą narzędzia debugujące (debuggery). Serwis DevChannel przygotował artykuł wprowadzający w arkana użytkowania strace. Artykuł przedstawia podstawy uruchamiania debuggera oraz uczy, jak odczytywać komunikaty wyświetlane przez program.http://tools.devchannel.org/article.pl?sid=03/10/24/2057246&mode=thread&tid=46&tid=57http://www.linuxnews.pl/_news/2003/11/27/_long/2335.html

TvtimeUkazała się kolejna wersja świetnego programu do oglądania telewizji pod Linuksem. Tvtime 0.9.12 przynosi głównie poprawki błędów związanych z XMLTV. Aplikacja zawiera wiele interesujących rozwiązań polepszających obraz pochodzący z kart telewizyjnych. Wysoką jakość uzyskano dzięki wykorzystaniu najlepszych algorytmów oferowanych przez DScaler, które służą do przekładania telewizyjnego sygnału z przeplotem na sygnał bez przeplotu (deinterlaced). Użytkownik ma możliwość (przy pomocy podręcznego menu) wyboru odpowiedniej metody przetwarzania sygnału, co ma wpływ na zużycie procesora i jakość obrazu. http://tvtime.sourceforge.net/http://dscaler.org/http://www.linuxnews.pl/_news/2003/11/24/_long/2325.html

Mono i Novell Nterprise Linux Services

Firma Novell przedstawiła plan realizacji projektu Mono, zainicjo-

wanego przez społeczność dewelope-rów w celu opracowania wersji Open Source platformy programistycznej Microsoft .NET. Umożliwiłaby ona pro-gramistom korzystającym z systemów operacyjnych Linux i UNIX tworzenie i wdrażanie wieloplatformowych apli-kacji zgodnych z architekturą .NET. Według przedstawionego planu, w pierwszej połowie 2004 r. pojawi się oprogramowanie Mono 1.0, a póź-niej jego kolejne wersje – to ważna informacja dla programistów kor-poracyjnych oraz niezależnych pro-ducentów oprogramowania, którzy zamierzają tworzyć aplikacje zgodne z architekturą .NET, działające na wie-lu platformach i pod kontrolą różnych systemów operacyjnych.

Platforma Mono, opracowywana i testowana już od przeszło dwóch lat, znacznie ułatwia tworzenie i wdra-żanie aplikacji w systemach Linux

i UNIX. Projekt ten jest stale rozwija-ny w celu odzwierciedlenia ewolucji architektury Microsoft .NET, systemu Linux i środowiska GNOME. Został on uznany na targach LinuxWorld Conference & Expo 2003 za „Najlepszy projekt oprogramowania o otwartym dostępie do kodu źródłowego” (Best Open Source Project).

Ponadto, firma Novell zaprezen-towała pierwszą komercyjną wersję rozwiązania Novell Nterprise Linux Services (zintegrowane usługi w dzie-dzinie dostępu i przesyłania plików, drukowania, technologii katalogowej oraz zarządzania, działające w środo-wiskach RedHat Linux, SuSE Enterprise Server oraz Aurox 9.1). Jest to rozwią-zanie stanowiące pomost do wielo-platformowego środowiska NetWare 7, w którym można będzie uruchamiać zaawansowane usługi sieciowe dla serwerów w środowisku Linux.http://www.go-mono.com/http://www.novell.pl/

Szkolenia z Linuksa od MENiS

Wczesną jesienią Ministerstwo Edukacji Narodowej i Sportu

ogłosiło przetarg na przeszkolenie 750 nauczycieli różnych przedmiotów w posługiwaniu się Linuksem w dy-daktyce swojego przedmiotu. Najtań-szą ofertę przedstawiło konsorcjum polskich firm edukacyjnych, w skład którego wchodzą firmy DC Eduka-cja, OFEK, OSI CompuTrain SA oraz Vulcan i jego oferta przyjęta została dla 11 województw (pozostałe przy-znano firmie Altkom).

Kursy, obejmujące dwie sesje po trzy dni każda i trzy tygodnie pracy zdalnej (e-learning) między sesjami, spotkały się z olbrzymim zaintere-sowaniem: wszystkie miejsca zostały zajęte już pierwszego dnia rekrutacji, a liczba zgłoszeń była ponad pięcio-krotnie wyższa od liczby miejsc. Na szkolenie nauczyciel musi poświęcić dwa weekendy i zapłacić znaczącą

cześć kosztów zakwaterowania, jeśli więc zgłasza się na taki kurs, to musi czuć rzeczywistą potrzebę nauczenia się korzystania z Linuksa.

Program został nastawiony na obsługę wybranej dystrybucji (tutaj Aurox – najlepiej znana edukatorom) w środowisku KDE oraz na wykorzy-stanie oprogramowania przydatnego w szkole: biurowego, multimedial-nego, statystycznego, edukacyjnego i publikacji materiałów w sieci. Sto-sunkowo mniej uwagi poświęcono tradycyjnym operacjom uniksowym: pracy zdalnej, narzędziom używanym w konsoli tekstowej, językom skryp-towym. Program przewiduje również demonstrację Knoppiksa oraz Polskiej Dystrybucji Edukacyjnej wraz ze wskazaniem podstawowych różnic między środowiskami wywodzącymi się z Debiana i Fedory (dawniej Red Hat).

Page 14: Linux+_2004 01_PL

styczeń 200412

aktualności jądro linuksa

Tylnym wejściemOficjalne źródła jądra Linux trzymane są w BitKeeperze, a repozytoriami zawiaduje firma BitMover, między innymi Larry McVoy; udostępniane są też bramki do innych systemów zarządzania wersjami, między innymi do CVS. Repozytoria te są bardzo ściśle chronione, dlatego Larry McVoy prawie od razu zauważył próbę wprowadzenia backdoora do źródeł jądra przez bramkę CVS-ową. Zmiana w źródłach wyglądała jak łatka wprowadzająca dodatkowe sprawdzanie błędu, jednakże przy porównaniu uid z 0 zamiast '==' pojawiło się '='.http://lwn.net/Articles/57153http://kerneltrap.org/node/view/1584

Złap mnie, jeśli potraf iszDeweloperzy Linuksa znacznie częściej niż inni użytkownicy doświadczają błędów jądra i głównie dla nich przeznaczone jest narzędzie Kmsgdump. Jest ono łatką na jądro, która uaktywnia się jedynie w przypadku paniki jądra (ang. kernel panic). Dzięki tej łatce wszystkie produkowane w takiej sytuacji informacje, które zwykle przetaczają się po ekranie, a potem znikają, zostają zapamiętane na dyskietce lub skierowane na port równoległy.http://lwn.net/Articles/59927

Poziomy bezpieczeństwaLSM jest łatką pozwalającą na używanie różnych polityk bezpieczeństwa w systemie. Do tej pory była ona wykorzystywana w zasadzie jedynie przez SE Linux, łatę firmowaną przez NSA. Niedawno dzięki LSM została stworzona implementacja poziomów bezpieczeństwa przypominająca rozwiązanie z BSD. Dzięki niej, domyślny poziom 0, oznaczający brak jakiejkolwiek dodatkowej polityki bezpieczeństwa, może zostać podniesiony przez interfejs /proc.http://lwn.net/Articles/59507/

Wykrywacz problemówPod skrzydłami OSDL powstał nowy projekt, którego założeniem jest pomoc deweloperom przy wykrywaniu błędów, które mogą znaleźć się w jądrze i uniemożliwić jego zbudowanie w niektórych konfiguracjach. Projekt ten nazywa się Linux Kernel Tinderbox i bazuje mniej więcej na architekturze klient-serwer. Klient Tinderbox ściąga nowe zmiany i próbuje je kompilować, a wyniki swoich poczynań kieruje do serwera, który wyświetla je w postaci strony WWW. http://kt.zork.net/kernel-traffic/kt20031201_143.html#15

Linux 2.6

Od czasu wydania pierwszej testowej wersji jądra Linux

serii 2.6 minęło już kilka miesięcy, jednak cały czas powstają kolejne, poprawione. Jakiś czas temu Linus Torvalds ogłosił, że nie będzie więcej przyjmował łatek innych niż te, które naprawiają ewidentne błędy. Konse-kwentne stosowanie takiej polityki dało zamierzony efekt. Osoby śle-dzące drzewo jądra utrzymywane przez Linusa w BitKeeperze miały szansę zauważyć znaczny spadek rozmiaru zmian.

Twórca Linuksa wydaje się jednak wciąż nie do końca zadowo-lony – chciałby, aby jego aktywność obejmowała tylko jednolinijkowe drobne poprawki. Spośród kon-kretnych zastrzeżeń pojawiło się zdanie, że coś niedobrego dzieje się, gdy jądro jest skonfigurowane jako wywłaszczalne. Problem nie dotyczy samego wywłaszczania, ale raczej nie radzą sobie z nim inne elementy systemu. Linus powrócił też do daw-nego zwyczaju nazywania kolejnych wersji jąder. Wersja -test10 została nazwana stoned beaver (w wolnym tłumaczeniu „nawalony bóbr’’), a ko-lejna to beaver in detox (bóbr na odwyku).

Takie ograniczanie zmian powo-duje jednak, że wszelkie bardziej istotne ulepszenia odkładane są na potem, czyli do kolejnych stabilnych wersji jądra. To może powodować pewne zachwiania stabilności w serii, która przez wszystkich będzie uzna-wana już za stabilną.

Serwis LWN.net zwrócił uwagę, że prawie trzy lata temu, przy okazji wydania 2.4.0, sam Torvalds zauwa-żył występowanie zjawiska polegają-cego na tym, że wersje z zerem na końcu były stabilne, a późniejsze, mniej więcej do numeru pięć, już mniej. Dopiero potem udawało się wrócić do stanu z początku serii stabilnej. Tego zjawiska bynajmniej nie uznał za pozytywne. Wydaje

się jednak, że i tym razem będzie podobnie – coraz więcej zbiera się zmian, które mają szansę na to, by trafić dopiero do wczesnych jąder 2.6.

Wiadomo już, że opiekunem nowej stabilnej serii zostanie Andrew Morton i to najprawdopodobniej on zdecyduje, w którym momencie obecne wersje jądra stracą przy-rostek ‘-test’. Zanim jednak to się stanie, przygotowuje swoje własne zestawy łatek oznaczane literami -mm.

Wraz z łatkami pojawiły się dwie listy – pierwsza zawierająca pozycje, które muszą jeszcze trafić do stabilnej serii, a druga – rzeczy, które powinny tam trafić. Tworzenie i utrzymywanie podobnych list stało się powszechne od czasu zeszłorocz-nego zamrożenia funkcjonalności, jednakże im bliżej wydania 2.6.0, tym mniej sił i uwagi wkładano w ich utrzymywanie. Zestawienia dołączone do -mm jednak istnieją i są zaskakująco długie.

Ważniejsza z list, must-fix, zawie-ra między innymi zmiany likwidują-ce problemy z blokowaniem w wielu podsystemach, przeniesienie popra-wek z 2.4, dotyczących na przykład bezpieczeństwa, oraz wiele proble-mów, które powinny być rozwiąza-ne, choć ich istnienie nie zakłóca w istotny sposób pracy systemu.

Po raz kolejny można się prze-konać, że jądro Linux jest projektem wiecznie w fazie rozwoju. Kolejne wersje jądra nie są idealne i chyba nigdy nie będą. Dzięki temu można używać kolejnych, coraz lepszych, choć niedoskonałych wersji nie cze-kając latami na wersję ostateczną. Do tej ułomności Linuksa użytkow-nicy chyba muszą się przyzwyczaić.

http://lwn.net/Articles/58199http://kerneltrap.org/node/view/1684http://kerneltrap.org/node/view/1667

Page 15: Linux+_2004 01_PL

dział prowadzi: Maja Królikowska

13www.linux.com.pl

[email protected]

Z braku lakuPontus Fuchs podesłał na listę linux-kernel informację o stworzonym przez siebie module jądra o nazwie Nidswrapper, pozwalającym ładować sterowniki nids, zgodne z API Windows. Stworzył ten moduł, ponieważ niektórzy producenci wciąż nie dostarczają nawet binarnych, przeznaczonych dla Linuksa, sterowników do swojego sprzętu. W jego przypadku były to karty WLAN. Stworzenie takiego modułu nie rozwiązuje bynajmniej problemu obsługi tych kart w Linuksie, jest jedynie doraźnym umożliwieniem skorzystania z nich.http://kt.zork.net/kernel-traffic/kt20031201_143.html#2

Serial ATA w LinuksieSerial ATA jest nowym interfejsem, który ma zastąpić dotychczas używany równoległy interfejs ATA, eliminując jego wady i niedoskonałości. Grono hakerów Linuksa z Jeffem Garzikiem na czele pracuje nad implementacją tego interfejsu dla jąder 2.6.x. Jeff uznał, że prace zaszły już na tyle daleko, że warto zacząć poszukiwać większej liczby testerów i podesłał na lkml dokument z dokładnym opisem tego, co zostało już zrobione, a co – jeszcze nie.http://hedera.linuxnews.pl/_news/2003/12/04/_long/2354.htmlhttp://www.ussg.iu.edu/hypermail/linux/kernel/0312.0/0597.html

Winna jest do_brk()Pod koniec listopada i na początku grudnia głośno było o włamaniach na serwery projektów związanych z Linuksem i Wolnym Oprogramowaniem (debian.org, savannah.gnu.org, ...). Za część tych problemów jest odpowiedzialny niepozorny błąd w funkcji do_brk(). Zabrakło sprawdzenia poprawności zakresu argumentów tej funkcji. Błąd wynikł z przeoczenia: w jądrach 2.2.x sprawdzanie argumentów odbywało się wcześniej, w funkcjach wywołujących. Nikt nie sądził, że może mieć on poważne konsekwencje. Linus Torvalds wprowadził poprawkę w jądrze 2.6.0-test6, a Marcelo Tosatti kilka dni później w 2.4.23-pre7. Większość dystrybutorów nie zdecydowało się umieścić tej poprawki, wyjątkiem był tu Red Hat/Fedora.http://kerneltrap.org/node/view/1717http://lists.debian.org/debian-devel-announce/2003/debian-devel-announ-ce-200311/msg00012.html

Udev

Już całkiem dawno temu Linux doczekał się systemu plików urzą-

dzeń w systemie. Był to devfs, którego pierwsza implementacja miała głów-nie przeciwników. Jej twórca, Richard Gooch, był krytykowany przez prawie wszystkich. Jakiś czas temu prze-stał się udzielać, a devfs w zasadzie poszedł w zapomnienie. Jednakże sam pomysł systemu plików dla urządzeń nie umarł, a jedną z imple-mentacji jest udev, czyli system plików urządzeń oparty o sysfs, działający w przestrzeni użytkownika, przezna-czony dla jąder nowej serii 2.6. Greg Kroah-Hartman, twórca i pomysło-dawca udev, wciąż podsyła coraz nowsze wersje tego rozwiązania i wydaje się, że znajduje ono zwo-lenników, choć nie jest propozycją z gatunku jedynych słusznych.

Adrian Bunk w pewnym momen-cie podesłał na listę linux-kernel łatkę, która dokumentowała to, że udev nie jest jeszcze w pełni gotowy i nie może w pełni zastępować devfs. Przyczyny, dla których tak jest, to między innymi brak obsługi ze strony sterowników urządzeń oraz brak obsługi devfs w initramfs. Greg argumentował, że nie są to cechy, których brakuje samemu udev – jego rozwiązanie można już stosować, a wymienione problemy nie leżą po stronie twórców udev. Przyznał jednak, że jego „dziec-ku” brakuje dojrzałości i podkreślił, że większość pracy, którą należy wyko-nać przed zastąpieniem devfs przez udev, musi zostać wykonana poza projektem.http://kt.zork.net/kernel-traffic/kt20031201_143.html#5

2.4.23 i co dalej?

Dnia 28 listopada 2003 roku Mar-celo Tosatti wydał kolejną wersję

jądra serii 2.4.23. Pojawiło się w niej kilka dość istotnych zmian, między innymi usunięto OOM killer, zastę-pując go innym rozwiązaniem, oraz dodano „tryb laptopowy”, pozwala-jący oszczędzić trochę baterię. Do tej wersji jądra 2.4 trafiło też większość innych zmian w podsystemie pamięci wirtualnej firmowanych przez Andreę Arcangeli. Dzięki nim waniliowe jądra 2.4 powinny dać sobie radę z dużą ilością pamięci RAM, choć autor zmian wciąż zaleca używanie jego własnego drzewa, -aa.

Kilka dni po publikacji 2.4.23 Macelo ogłosił swoje plany dotyczą-ce dalszych prac nad rozwojem 2.4. Ze względu na zbliżające się wyda-nie 2.6.0, postanowił, że 2.4.24 będzie ostatnią wersją, do której włączy poważniejsze, inwazyjne zmiany oraz nowe sterowniki. Później będzie się już tylko zajmował utrzymaniem powie-rzonej mu serii jąder Linux. Zamierza rozwiązać wszystkie bieżące problemy

przed wydaniem kolejnego jądra, tak aby później wprowadzać do niego jedynie poprawki błędów krytycznych i związanych z bezpieczeństwem.

Ktoś zapytał, czy kod XFS ma jeszcze szansę trafić do oficjalnego drzewa 2.4. Marcelo odparł, że nie miał takich zamiarów, ponieważ 2.6 osiąga już stabilność i będzie można go wkrótce używać, a XFS został włączony w trakcie rozwoju 2.5. Przy-znał też, że nie bardzo ma ochotę na zajmowanie się tym kodem, bo go po prostu nie lubi i nie do końca w niego wierzy. Ponieważ jednak osób, które chętnie widziałyby XFS jeszcze w 2.4 było więcej, to rozpoczęły się poszu-kiwania osoby chętnej do przygo-towania takiego włączenia. Al Viro wykręcił się od tego, ale zgłosił się Christoph Hellwig. Od wyników jego prac zależy, czy XFS pojawi się w któ-rejś kolejnej wersji serii 2.4.http://kerneltrap.org/node/view/1690http://kerneltrap.org/node/view/1700http://kerneltrap.org/node/view/1723http://kerneltrap.org/node/view/1727

Page 16: Linux+_2004 01_PL

styczeń 200414

aktualności debian

Pomóż bezpieczeństwu – AIDEAdvanced Intrusion Detection Environment jest dostępnym na licencji GPL narzędziem do testowania integralności plików, wzorowanym na słynnym, aczkolwiek niestety niewolnym Tripwire. Głównym zadaniem AIDE jest stworzenie bazy informacji o plikach na dysku (wielkość, suma kontrolna, czas utworzenia, dostępu, modyfikacji) i późniejsza regularna kontrola niezmienności. W Debianie dostępny jest gotowy pakiet aide, a w razie potrzeby można zajrzeć do podręcznika lub zapisać się na listę dyskusyjną. Pewnego dnia dane zebrane przez AIDE mogą pozwolić zaoszczędzić wiele czasu i nerwów.[AIDE] http://www.cs.tut.fi/~rammer/aide.html[DebAIDE] http://packages.debian.org/unstable/admin/aide.html

PaX w DebianieCelem projektu PaX jest rozwój zabezpieczeń przeciw atakom polegającym m.in. na wykonaniu kodu dostarczonego przez atakującego. Obecna implementacja obejmuje: randomizację stosu użytkownika i jądra, a także adresów zwracanych przez mmap, wyłączenie możliwości wykonywania dynamicznie stworzonego kodu (w segmentach danych) i inne techniki. PaX jest obecny w wielu większych łatach na jądro, m.in. w GrSecurity (dostępna w Debianie), ale można też pobrać samodzielną łatkę ze strony projektu.[PaX] http://pageexec.virtualave.net/[GRSec] http://www.grsecurity.net/[DebGRSec] http://packages.debian.org/testing/devel/kernel-patch-2.4-grsecuri-ty.html

Sprawdź swój system z ChkrootkitSłysząc o włamaniach naturalnym jest, że zadajemy sobie pytanie, czy mój system nie padł przypadkiem ofiarą włamania? Istnieje wiele symptomów, które mogą (choć nie muszą) o tym świadczyć i trudno jest je wszystkie sprawdzić ręcznie. Przydatnym narzędziem może być Chkrootkit, który potrafi wykryć kilkanaście najbardziej rozpropagowanych rootkitów. Wystarczy zainstalować go i uruchomić. Uwaga: Chkrootkit nie daje 100% pewnej odpowiedzi. Ponadto w pewnych przypadkach może zgłaszać fałszywe alarmy (np. Possible LKM Trojan na systemach z jądrem 2.6).[ChkRootkit] http://www.chkrootkit.org/[DebChkR] http://packages.debian.org/unstable/misc/chkrootkit.html

Włamanie na serwery Debiana

W listopadzie 2003 roku miało miejsce włamanie na serwery

Debiana. Ustalono, że:

• 19. listopada włamywacze użyli podsłuchanego hasła użytkowni-ka (nie roota), aby dostać się do serwera klecker.debian.org;

• udało im się uzyskać tam prawa roota i zainstalować rootkit SuckIT (zestaw programów i moduł jądra, pozwalające na ukrywanie plików, podsłuchiwanie terminali i sieci, a także zdalny dostęp – instalu-jący się przez bezpośredni dostęp do /dev/kmem);

• podobnie postąpili z serwerami master, murphy oraz gluck ;

• 20. listopada zauważono, iż wszystkie z w/w serwerów zaczy-nają działać niestabilnie – ichjądrom zaczęły zdarzać się oopsy. Ponadto, zainstalowany pakiet AIDE (Advanced Intrusion Detec-tion Environment) zaczął raporto-wać, iż /sbin/init został zmieniony (SuckIT podmienia /sbin/init pod-czas instalowania się, aby być pewnym, że każde kolejne urucho-mienie maszyny ponownie uru-chomi rootkit np. zapewniając zdalny dostęp włamywaczom);

• wstępne oględziny pozwoliły usta-lić, iż nastąpiło włamanie;

• rozesłano ogłoszenie o włamaniu;• wyłączono wszystkie cztery ser-

wery (przestały działać listy dys-kusyjne, adresy emailowe w do-menie debian.org, archiwum secu-rity.debian.org, alioth oraz kilka innych serwisów), stworzono ko-pie ich dysków do dalszej, póź-niejszej analizy oraz zreinstalowa-no systemy z CD-ROM-ów;

• z katalogów domowych użytkow-ników usunięto wszystkie klucze publiczne GPG i inne materiały, które przechwycone przez wła-mywaczy raz, mogłyby im ułatwić kolejne włamanie;

• wszystkie hasła użytkowników (deweloperów Debiana) w bazie LDAP zostały unieważnione;

• zweryfikowano, iż archiwa pakie-tów nie zostały naruszone (zmo-dyfikowane) przez włamywaczy;

• po kolei przywrócono funkcjono-wanie serwerów sprzed włamania.

1. grudnia, dzięki współpracy z inży-nierami SUSE i Red Hata, udało się ustalić, że exploit wykorzystywał przepełnienie licznika używające-go liczby całkowitej przy jednym z wywołań systemowych jądra. Poprawka była banalna i znana od dawna. Została włączona dopiero od jądra 2.4.23, ale wcześniej nikt nie zdawał sobie sprawy, że ten drob-ny problem można w taki sposób wykorzystać.

Profilaktycznie dostęp dewelo-perów do powłoki na wszystkich maszynach Debiana (serwerach, auto-builderach, maszynach do portów na różne architektury) został tymczasowo zablokowany. Jest też niemal pewne, iż wszystkie maszyny Debiana zostaną wyposażone w dodatkowe zabezpie-czenia w rodzaju SE Linuksa czy PaX.

[SuckIT] http://hysteria.sk/sd/f/suckit/readme[Announce] http://lists.debian.org/debian-security-announce/debian-security-announce-2003/msg00211.html[ExploitDSA] http://lists.debian.org/debian-security-announce/debian-security-announce-2003/msg00212.html[SELinux] http://www.coker.com.au/selinux/

To tylko fikcja literacka, gdyż strona główna Debiana nie została podmieniona

Page 17: Linux+_2004 01_PL

15www.linux.com.pl

dział prowadzi: Grzegorz Prokopski

[email protected]

Świeże pakiety dla WoodiegoUżywanie stabilnej dystrybucji Debiana ma wiele zalet, ale jedną poważną wadę – ze względu na długi cykl między kolejnymi wydaniami, oprogramowanie, choć stabilne, staje się po prostu zbyt przestarzałe do niektórych zastosowań. Kompilacja z czystych źródeł czy własnoręczna kompilacja pakietów z dystrybucji testing czy unstable też może nastręczać wielu problemów, nie mówiąc już o całkowitej przesiadce na te gałęzie Debiana. Z tego powodu właśnie powstała strona www.backports.org, oferująca nowsze wersje pakietów, które mogą być użyte w stabilnej wersji systemu. Czasami przydatny jest również zbiór adresów nieoficjalnych źródeł – www.apt-get.org.http://www.backports.org/http://www.apt-get.org/

Ilustrowany przykład instalacji Sarge z nowym instalatoremWielu ludzi jest ciekawych, jak właściwie będzie wyglądała instalacja z użyciem nowego instalatora? W jaki sposób będzie ona łatwiejsza? Dla tych, którzy przed samodzielnym sprawdzeniem powyższego, chcieliby rzucić okiem na dokładny opis instalacji – najlepiej wraz z ilustracjami – dostępny jest właśnie taki artykuł. Co prawda autor użył tekstowej wersji (wersja graficzna w GTK+ jest jeszcze dopracowywana), ale już można zauważyć, że np. najtrudniejszy dla wielu użytkowników etap konfiguracji modułów jądra został całkowicie zautomatyzowany za pomocą autodetekcji sprzętu.[Walkthrough] http://www.debianplanet.org/node.php?id=1009

Debian Jr. dołącza do OSEFZarówno Open Source Education Foundation, jak i Debian Jr., mają wspólny cel: wprowadzić dzieci w świat Wolnego Oprogramowania. W przeciągu ostatnich dwóch lat OSEF m.in. perfekcyjnie zrealizował projekt wprowadzenia Wolnego Oprogramowania do jednej ze szkół znajdujących się w pobliżu siedziby, a także rozdystrybuował wiele CD-ROM-ów z Knoppixem, uzupełnionym o pakiety Debian Jr. i Tux4Kids. [Together] http://lists.debian.org/debian-devel-announce/2003/debian-devel-announce-200311/msg00000.html[OSEF] http://www.osef.org/[Tux4Kids] http://www.tux4kids.org/[DebianJr] http://www.debian.org/devel/debian-jr/

Debian podstawą dystrybucji UserLinux

B ruce Perens, podczas niedaw-nej konferencji Desktop Linux

Conference, przekonywał, iż GNU/Linux powinien być częściej używany przez przedsiębiorstwa jako system na biurko. Dystrybucja taka powin-na być oparta na całkowicie wolnej podstawie, jaką jest Debian, a różnić się dodatkami, które z konieczności nie mogą znaleźć się w Debianie, np. binarne sterowniki urządzeń.

W interesujący sposób korespon-duje to z informacją, którą niedawno zakomunikował Ian Murdock (zało-życiel Debiana i fundator Progeny). Otóż Progeny przystosowało instala-tor Red Hata (Anaconda) do współ-pracy z systemem pakietów Debiana. Oznacza to, że np. dotychczasowi użytkownicy Red Hata będą mogli zastanowić się nad wykorzystaniem Debiana, gdyż instalacja przestanie być dla wielu przeszkodą w zmianie dystrybucji.

Nadmienić należy, że u niektórych informacja ta wywołała mieszane uczucia. Anaconda nie jest przenie-siona na większość z platform, na które jest dostępny Debian, a także jest instalatorem stosunkowo dużym, przez co nie może być uznana za podstawowy instalator Debiana. Po-nadto nowy instalator Debiana jest właśnie intensywnie rozwijany, więc zachodzi obawa, czy pojawienie się portu Anakondy w tej właśnie chwili nie zdekoncentruje ludzi pracującym nad jego rozwojem. Niestety, istnieje możliwość, że wciąż jeszcze niegoto-

wy instalator może stać się hamulcem w wydaniu Sarge.

Mimo wszystko wydaje się, że przeniesienie Anakondy na Debiana połączone z niezadowoleniem wielu ludzi z porzucenia przez Red Hata systemów biurkowych wraz z niską jakością dystrybucji oferowanej przez Fedora Project może postawić dystry-bucję biurkową opartą na Debianie w bardzo dobrej pozycji startowej! Czy rzeczywiście zobaczymy Debiana na wielu nowych biurkach? To cał-kiem możliwe.[DLC] http://www.butrain.com/itp/desklinux.asp?source=15632[DebDesktop] http://www.infoworld.com/article/03/11/10/HNdesktopwalk_1.html[DebAnacoda] http://www.debianplanet.org/node.php?id=1006[BadFeelings] http://lists.debian.org/debian-devel/2003/debian-devel-200310/msg01913.html[DebInstaller] http://www.debian.org/devel/debian-installer/

UserLinux ma być oparty na Debianie

Debian Woody 3.0r2 wydany

Niemal dokładnie w tym sa-mym czasie, gdy miało miej-

sce włamanie na serwery Debiana,ukazało się nowe podwydanie Debia-na Woodiego – 3.0r2. Kilkadziesiątpoprawek dotyczących bezpieczeń-stwa, które się w nim znalazły, zostało przeniesionych z security.debian.org, gdzie były dostępne od dnia wydania poprawionego pakietu. Poprawiono

kilkanaście pakietów z poważnymi błędami wpływającymi na użytecz-ność systemu. Obrazy tradycyjnie można pobrać z za pomocą jigdo.

[3.0r2] http://lists.debian.org/debian-announce/debian-announce-2003/msg00002.html[DebianCD] http://www.debian.org/CD/

Page 18: Linux+_2004 01_PL

styczeń 200416

aktualności aurox

Prapremiera Auroksa 9.24 grudnia 2003 roku na konferencji "Systemy dla przedsiębiorstw 2003" podczas wykładu Jarosława Górnego "Aurox Linux – otwarty system operacyjny dla małych i średnich przedsiębiorstw" odbył się przedpremierowy pokaz wersji 9.2 dystrybucji Aurox. Każdy uczestnik wykładu otrzymał po jego zakończeniu przedpremierową wersję Auroksa 9.2 na 4 płytach CD.http://www.sdp2003.pl/

Aurox dla uczestników LinuxPro 2003W dniach 10-11 grudnia 2003 roku w Jabłonnie pod Warszawą odbyła się konferencja LinuxPro 2003, poświęcona profesjonalnym zastosowaniom Linuksa. Uczestnicy konferencji otrzymali płyty CD z instalacyjną wersją Aurox Linux 9.2.http://www.software.com.pl/konferencje/LinuxPro2003/

Ponad 5000 zarejestrowanych użytkownikówZ końcem listopada liczba zarejestrowanych użytkowników Auroksa przekroczyła 5000. Rejestracja jest całkowicie dobrowolna, jednak jest niezbędna, gdy chcecie dołączyć do Aurox Club i wspomóc Auroksa, a jednocześnie zyskać szansę wygrania wspaniałych nagród.

Aurox 10 AlfaChociaż w serii Aurox 9.x ukaże się jeszcze wydanie 9.3, to rozpoczęły się już prace nad nowym, znacznie zmienionym wydaniem 10.W połowie grudnia w Internecie powinna pojawić się pierwsza wersja alfa Auroksa 10 – opublikowana w postaci uruchamianej z CD (bez instalacji) płyty Live.Testowa wersja Auroksa 10 wykorzystuje jądro 2.6.0 (testowe), XFree86 4.4 prerelease i kompilator GCC 3.3.2. Standardowym środowiskiem graficznym jest KDE 3.2 beta 2. Oficjalne wydanie 10.0 zapowiadane jest na czerwiec 2004 r.

Strefa Aurox ClubNa stronie domowej Auroksa http://www.aurox.org/ powstała strefa specjalna dla członków klubu Auroksa. Zarejestrowani użytkownicy po podaniu adresu e-mail i hasła zyskują dostęp do materiałów klubowych i możliwość głosowania na projekty realizowane przez innych klubowiczów.http://www.aurox.org/

Aurox 9.2 już jest!

Gdy czytacie te słowa, Linux+ Extra! nr 34 z najnowszą wer-

sją Auroksa jest już w sprzedaży. Co nowego znajdziecie w Auroksie 9.2?

Największy hit to OpenOffice.orgw wersji 1.1.0. Wśród wielu udo-godnień, zwracają uwagę: szybsze uruchamianie pakietu, bardziej do-pracowane filtry importu i eksportu plików z/do pakietu Microsoft Office oraz możliwość nagrywania makr, której bardzo brakowało użytkowni-kom wcześniejszych wersji.

Zaktualizowane zostały środowi-ska graficzne: KDE do wersji 3.1.4, zaś GNOME – do wersji 2.4.1.

Nowością jest grupa Light Desk-top – „lekki desktop”. Jest to zestaw aplikacji o mniejszych wymaganiach sprzętowych niż ich odpowiedniki z KDE i GNOME. W skład „lekkiego środowiska” wchodzą:

• fluxbox – menedżer okien;• sylpheed – klient poczty (bardzo

funkcjonalny i szybki program);• mozilla-firebird – lżejsza wersja

najbardziej znanej przeglądarki;• rox-filer – menedżer plików.

Aplikacje te pozwalają wygodnie używać Auroksa na wolniejszych maszynach.

Do dystrybucji trafiły nowe wer-sje programów do odtwarzania fil-mów i muzyki, np. biblioteki Xine w wersji 1.0.0 RC2 oraz MPlay-er 1.0 pre2. Nowa wersja Xine za-wiera już rozszerzoną wtyczkę dla VideoCD (VCDX, obecnie zastępują-

ca starszą VCD; w razie problemów z odtwarzaniem można skorzystać z wtyczki VCDO). MPlayer – alterna-tywny odtwarzacz filmów Auroksa – to wersja rozwojowa, z ulepszonąobsługą kodeków .DLL QuickTime (do wersji 6.3), lepszą zgodnością kodeków ze standardem MPEG1/MPEG2; tłumaczenie dokumentacji zostało uaktualnione. XMMS został wreszcie zaktualizowany – teraz jest to wersja 1.2.8, zawierająca wtyczkę wyjściową ALSA.

Dodano nowe programy, o które prosili użytkownicy: rysunki wek-torowe możemy teraz tworzyć w programie Sodipodi (wersja 0.32), a grafikę 3D i animacje – w Blenderze (2.28c). Do tworzenia własnych publi-kacji w środowisku graficznym służy Scribus – stabilna wersja 1.0.1 wraz z wtyczką pozwalającą na automaty-zację składu przy pomocy skryptów w Pythonie.

Miłośnicy pogaduszek on-line mo-gą skorzystać z Kadu, GG2, Tleenx2 lub (w środowisku tekstowym) Ekg. Mozilla to już wersja 1.5 (z polskim interfejsem); Epiphany (standardo-wa przeglądarka WWW środowiska GNOME) jest zaktualizowana do wer-sji 1.0.5. Nowością są narzędzia do ko-munikacji z telefonami komórkowymi firm Nokia i Siemens.

Użytkownicy zakładający na Au-roksie aktywne strony WWW otrzy-mują zaktualizowane wersje: MySQL (4.0.16), Apache (2.0.48) oraz PHP (4.3.4). Osoby programujące w języku Pascal ucieszą się z FPC (Free Pascal Compiler).

Aurox standardowo zawiera odtwarzacze filmów

Najnowsza wersja Auroksa

Page 19: Linux+_2004 01_PL

dział prowadzi: Robert Główczyński

17www.linux.com.pl

[email protected]

Aurox na ibiblio.orgZespół Auroksa nawiązał współpracę z jednym z największych serwisów ze zbiorami wolnodostępnej informacji i oprogramowania ibiblio.org. Inicjatywa ta powstała we wrześniu 2000 roku w wyniku współpracy pomiędzy Chapel Hill's MetaLab (Uniwersytet Karoliny Północnej w USA), znanym wcześniej jako SunSITE, a Center for the Public Domain. Jego zadaniem jest wspomaganie tworzenia i rozpowszechniania Wolnego Oprogramowania i dokumentacji.http://www.ibiblio.org/

Nowości w Auroksie: BlenderDo Auroksa 9.2 włączona została najnowsza wersja ze stabilnej serii Blendera: 2.28c. Blender to profesjonalny pakiet do tworzenia grafiki 3D, animacji, a nawet gier.Główną polską stroną poświęconą Blenderowi jest http://www.blender.pl/. Można na niej znaleźć m.in. polskie wersje podręczników i poradników, pobrać najnowsze wersje programu i dodatki oraz ściągnąć ciekawe przykłady (m.in. przykład gry stworzonej w Blenderze).http://www.blender.org/

Lepsze wsparcie dla laptopówFirma Aurox Sp. z o.o. nawiązała współpracę z kilkoma producentami komputerów, m.in. Optimus S.A. W rezultacie otrzymamy lepsze wsparcie dla nowego sprzętu, m.in. obsługę cech specyficznych dla notebooków tych producentów.http://www.optimus.com.pl/

Wine w AuroksieAurox zawiera Wine – implementację API Windows dostępną na licencji LGPL.W wydaniu 9.2 naszej dystrybucji znajdziecie wersję 20031016.Wine pozwala na uruchamianie niektórych aplikacji Windows na Linuksie. Zawiera m.in. wstępną implementację bibliotek zgodnych z DirectX. Domyślna konfiguracja podczas pierwszego uruchomienia (polecenie wine <nazwa programu>) tworzy w katalogu domowym użytkownika podkatalog .wine, a w nim plik konfiguracyjny config, odpowiedniki Rejestru Windows (pliki *.reg) oraz podkatalog c, którego zawartość aplikacje uruchamiane przez Wine widzą jako dysk C: systemu Windows. Jeśli plik *.exe z Windows jest oznaczony jako wykonywalny, to można go uruchomić klikając na niego.http://www.winehq.com/

Aurox 9.2 w Linux+ Extra!

Ukazał się 34. numer specjalny Li-nux+ Extra!, zawierający Aurox

Linux 9.2 na 7 płytach CD wraz z ko-dem źródłowym oraz dodatkowymi sterownikami i programami.

Do dystrybucji zostały dołączone wtyczki Java i Flash, sterowniki kart graficznych ATI i NVidia, sterowniki do winmodemów Conexant, Smar-tLink i Lucent, biblioteka do odczytu szyfrowanych płyt DVD libdvdcss, efektowne wygaszacze ekranu dla kart graficznych z akceleracją 3D oraz dwie popularne gry: Frozen Bubble (najlepsza darmowa gra zręcznościo-wa według użytkowników serwisu Linux Game Tome) oraz Scorched3D (gra na motywach Scorched Earth, ale z ładną grafiką 3D).

Wśród dodatków na uwagę zasługuje coś, czego w Internecie nie znajdziecie: pełna komercyjna wersja LeftHand Mała Księgowość. Ze względu na ograniczenia redy-strybucji niektórych programów (np.

nie wolno kopiować LeftHand MK), w tym numerze dodatki są umiesz-czone na CD 5 (tak więc pierwsze4 CD, wystarczające do zainstalowa-nia Auroksa, mogą być kopiowane bez zmian i rozdawane np. uczniom lub pracownikom firmy).

Numer ma objętość 40 kolorowych stron, 7 płyt CD i kosztuje 35 zł.

Wkrótce po polskim wydaniem pisma ukażą się wydania niemieckie, francuskie i hiszpańskie.

WinModemy w Aurox Linux

Co robić, jeśli nie możemy uru-chomić modemu w Auroksie?

Wiele z obecnie sprzedawanych mo-deli modemów to tzw. winmodemy – tanie, ale wymagające specjalnych sterowników. Winmodem tym różni się od prawdziwego modemu, że większość zadań wykonuje za niego procesor. Na płytce CD dołączonej do takiego urządzenia najczęściej zamieszczone są tylko sterowniki dla różnych odmian Windows. Na szczę-ście do niektórych winmodemów dostępne są również sterowniki dla naszego systemu operacyjnego.

Aby z nich skorzystać, musimy sprawdzić, jaki układ (chipset) stano-wi serce naszego nabytku. Możemy tego dokonać uruchamiając skrypt ScanModem lub za pomocą jednego z następujących poleceń: /sbin/lspci, /sbin/lspci -nv, cat /proc/pci.

Nowe wersje pakietów ze sterow-nikami do popularnych modemów pojawiają się m.in. pod adresem http://dag.wieers.com/apt/redhat/9/en/i386/RPMS.dag/ – dla użytkowników Aurox 9.x odpowiednie są pakie-ty dla Red Hat Linux 9. Większość z tych pakietów tworzy odpowied-nie urządzenie w katalogu /dev/ (np. dla SmartLinka jest to /dev/ttySL0, a dla Lucenta – /dev/ttyLT0). Trzeba jeszcze ręcznie dopisać w pliku /etc/modules.conf opcje ładowania odpo-wiedniego modułu, przykładowo dla modemu SmartLink PCI jest to:

alias char-major-212 slmodem

alias slmodem slamrmo

options slmdm country=POLAND

http://linmodems.technion.ac.il/

Nowy Linux+ Extra!

Page 20: Linux+_2004 01_PL

styczeń 200418

aktualności rpm

DrakianZ problemem brakujących pakietów można sobie radzić w różny sposób: wyszukiwać dodatkowe repozytoria, zgłaszać zapotrzebowanie w ramach Mandrake Club, a nawet przygotowywać je samodzielnie. Niezłym sposobem jest także przenoszenie ich z innych dystrybucji. Tak właśnie postąpili twórcy archiwum Drakian, który jest zbiorem pakietów Debiana, przekształconych do formatu RPM za pomocą programu Alien. Nie należy w związku z tym spodziewać się 100% zgodności, ale jego autorom zależało przede wszystkim na kolekcji pakietów dla Zope i Pythona 2.1, a w tym zakresie inicjatywa sprawdziła się znakomicie. Repozytorium dodaje się do swoich zasobów jako root poleceniem: urpmi.addmedia drakian http://www.nexedi.org/static/RPMS/ with synthesis.hdlist.cz.http://www.drakian.org/

Serwer f tp.leo.orgBardzo dobre repozytorium pakietów dla Mandrake Linux znajduje się na serwerze ftp.leo.org. Jest to jedno z pierwszych miejsc, z których można było pobrać spakowaną przeglądarkę Mozilla Firebird 0.7 i zestaw Mozilla 1.5, czy nawet nieco wyższą wersję OpenOffice.org, które są nieosiągalne z Cookera. Odpowiednie pakiety znajdują się wprawdzie w sekcji eksperymentalnej (unsupported), jednak pracują stabilnie.ftp://ftp.leo.org/pub/comp/os/unix/linux/Mandrake/Mandrake-devel/unsupported/MandrakeClub/9.2/i586/

Mandrake 10 na horyzoncieUżytkownicy zabrali się za instalowanie i wykorzystywanie w codziennej pracy Mandrake 9.2, tymczasem twórcy dystrybucji przygotowują już warsztat do planowanego na marzec wydania Mandrake Linux 10. Podstawowym narzędziem ich pracy będą strony Wiki (Wiki Wiki Web), które od zwykłych stron WWW różnią się możliwością bezpośredniej edycji. Wiki Mandrake 10 zawiera już listę rzeczy do zrobienia, listę życzeń, podstronę o portach na różne procesory oraz stworzoną zawczasu stronę o najczęściej zgłaszanych błędach. Jest też agenda wydań testowych – gdy to czytacie, powinno być już dostępne pierwsze z nich (jedno lub dwupłytowe), zbudowane na równie testowym jądrze Linuksa z nowej serii 2.6.http://qa.mandrakesoft.com/twiki/bin/view/Main/Mandrake10

Beep Music Player

B eep Music Player (BMP) to nowy odtwarzacz muzyczny dla

Linuksa i jego pobratymców. Nie tyle zresztą nowy, co odnowiony: bazuje na kodzie popularnego odtwarzacza XMMS w wersji 1.2.8, ale do działania wymaga bibliotek GNOME 2. Począt-kowo nieoficjalne odgałęzienie XMMS (nazwę XMMS-GTK2 zmieniono na BMP na żądanie 4Front Technologies), szybko stało się samodzielnym pro-gramem wchłaniającym wiele popra-wek i rozszerzeń. Dzięki wykorzysta-niu mechanizmów nowego GNOME, możliwe jest wyświetlanie fantazyjnych czcionek (widać je na zrzucie ekranu), a zgodność z XMMS oznacza między innymi możliwość zakładania na BMP tych samych skórek – także z bo-gatej kolekcji WinAmpa, choć tylko z serii 2.x (wielbiciele WinAmpa 3powinni poczekać na XMMS2, spo-dziewany w 2004 r.). Artur Frysiak z PLD stworzył niedawno projekt prze-noszenia rozmaitych wtyczek z XMMS

do BMP, co, ze względu na zasadni-cze podobieństwo obu odtwarzaczy, nie stanowi zbyt wielkiej trudności. W kolejce na przeniesienie czekają między innymi wtyczki do obsługi plików OGG, LIRC, XMMS-KDE oraz wtyczka do normalizacji dźwięku, a już w tej chwili działa XMMS-owa wtyczka do odsłuchiwania plików muzycznych typu MP4.

http://beepmp.sourceforge.net/http://svn.pld-linux.org/svn/bmp-plugins/trunk/

Nowe wcielenie XMMS!

Biblioteczka Mandrake

Na stronach Mandrake Linux poja-wiły się cztery nowe poradniki

obsługi aplikacji dla zwykłych użyt-kowników systemu. Z braku polskich wersji, musimy na razie zadowolić się ich anglojęzycznymi wersjami. Można oczywiście z pożytkiem dla wszyst-kich przetłumaczyć je lub przygoto-wać samodzielnie. Poradniki zawierają ilustrowane minikursy komunikacjiprzez LinNeighborhood (przydatnego zwłaszcza w sieciach lokalnych z Win-dows, których użytkownicy korzystają z komunikatora WinPopup), rysowania wykresów przy pomocy programu Dia (specjalnie do tego przeznaczonego), w pełni graficznej instalacji i konfi-guracji własnego serwera WWW na dystrybucyjnym Advanced Extranet Server (powstającym na bazie Apache), oraz konfiguracji biurka działającego w bardzo popularnym środowisku gra-ficznym KDE. Jest szansa, że wkrótce do biblioteczki dołączy także bardzo

dobry podręcznik instalacji i konfigu-racji programów pod Mandrake.http://www.mandrakelinux.com/en/demos/tutorials/linneighborhood/http://www.mandrakelinux.com/en/demos/tutorials/dia/http://www.mandrakelinux.com/en/demos/tutorials/webwizard/http://www.mandrakelinux.com/en/demos/tutorials/desktopconfig/http://www.zebulon.org.uk/ICML0.HTML

KDE skonfigurowane przy pomocy instrukcji z poradnika

Page 21: Linux+_2004 01_PL

dział prowadzi: Daniel Koć

19www.linux.com.pl

[email protected]

Lista mirrorówNa bardzo praktyczny pomysł wpadł jeden z użytkowników Mandrake: na swojej stronie domowej założył prosty monitor śledzący stan dostępności rozmaitych serwerów lustrzanych (tzw. mirrorów) tej dystrybucji. Robot śledzi, czy dany serwer jest w ogóle dostępny, oraz czy pliki w jego repozytorium są aktualne i w komplecie. Wpisy na liście są oznaczane datą i godziną wykonania testu.http://extasia.u-strasbg.fr/~blindaue/mirrors.php

MakeCDW Linuksie nie jesteśmy skazani na pomysły dystrybutorów, a odrobina samodzielnego wysiłku może się nieraz bardzo opłacić. Dzięki skryptowi MakeCD można z przygotowanego zbioru pakietów stworzyć i wypalić własne płytki z Mandrake! Domyślnie skrypt produkuje obrazy o wielkości 650 MB (niektóre starsze napędy CD-ROM nie radzą sobie z ładowaniem systemu z płyt o większej pojemności), ale można to zmienić. Bardzo przydatną opcją jest ograniczanie ilości płyt, a zmieniając pliki z reklamówkami w prosty sposób staniemy się niezależnym dystrybutorem Linuksa.http://qa.mandrakesoft.com/twiki/bin/view/Main/MakeCD

Mandrake4ChemistryZa pomocą popularnych dystrybucji można łatwo tworzyć własne zestawy aplikacji linuksowych, dostosowanych do konkretnych potrzeb. Kanadyjczyk Austin Acton jest autorem zestawu programów przydatnych chemikom, zebranego pod nazwą Mandrake4Chemistry. Celem projektu jest wyszukiwanie wolnych i darmowych aplikacji chemicznych oraz zachęcanie do łagodzenia restrykcyjnych licencji autorów pozostałych aplikacji. Austin jest także domorosłym muzykiem – na jego stronie znajdziemy między innymi piosenkę poświęcona nadchodzącej premierze jądra 2.6.http://groundstate.ca/mdk4chem/index.htmlhttp://hedera.linuxnews.pl/_news/2003/11/05/_long/2273.html

Bluehawk ISO

MandrakeSoft tym razem długo kazał czekać na nowe wyda-

nie swojej dystrybucji. To olbrzy-mie opóźnienie spowodowało, że przez ten czas narosła cała góra poprawek bezpieczeństwa do teo-retycznie nowej dystrybucji: jest ich już w sumie ponad kilkadziesiąt megabajtów! Z tego powodu warto zainteresować się obrazami ISO przygotowanymi samodzielnie przez jednego z użytkowników Mandrake, Zdenka Mazanca, znanego jako Blu-ehawk. W skład jego zestawu, poza poprawkami (także tymi dla napę-dów LG, nieobecnymi w oficjalnej wersji), wchodzą również dodatkowe sterowniki i oprogramowanie, więc zamiast 3 płyt mamy do wypale-nia aż 4. Piąta wersja tych obrazów zawiera między innymi kolejne jądro

Linuksa ze zbliżającej się nieuchron-nie stabilnej serii 2.6 (2.6.0-test9), środowisko programistyczne Eclipse, zdobywające ostatnio coraz większą popularność, oraz pakiet Jakarta.

http://mandrake.contactel.cz/people/bluehawk/iso/

Eclipse – nowoczesne IDE, napisane w Javie, obsługujące różne języki programowania

Fedora Core 1 „Yarrow”

F edora Project, dystrybucja oficjal-nie wspierana przez Red Hata,

która kontynuuje zakończoną niedaw-no słynną dystrybucję tej firmy, wydała pierwszą stabilną wersję Fedora Core o nazwie kodowej Yarrow. Fedora Core 1 nie odbiega od dotychczaso-wej linii Red Hata, zarówno w zale-tach (jeszcze bardziej „wygładzony” interfejs użytkownika), jak i wadach (zamierzony brak w standardowej wersji pakietów obsługi formatu MP3), przynosi przy tym wiele ciekawych nowości, takich jak obsługa Blueto-otha i ACPI, odtwarzacz multimediów Rythmbox, wtyczki Javy dla Mozilli skompilowane przez GCC 3.2, roz-szerzona obsługa niektórych kart gra-ficznych ATI, wczesne uruchamianie w trybie graficznym, możliwość zdal-nej instalacji przez VNC, oraz obsługa nieoficjalnych repozytoriów pakietów przez instalator aplikacji Up2date.

Nowa dystrybucja nie dla wszyst-kich jednak oznacza radość. Naukowcy pracujący od 1998 roku nad projektem Flexible Digital Object and Repository Architecture (w skrócie Fedora) pro-

testują przeciw użyciu nazwy Fedora przez Red Hata, a dokładniej przeciw zakusom na formalne zastrzeżenie tej nazwy przez Red Hata w amerykań-skim Urzędzie Patentowym, zwłaszcza w świetle planów prowadzenia ścisłej kontroli wykorzystywania tego znaku towarowego. Firma odmówiła uznania roszczeń ze strony uniwersytetów, więc sprawa pozostaje na razie nieroz-strzygnięta.

http://hedera.linuxnews.pl/_news/2003/11/05/_long/2275.htmlhttp://hedera.linuxnews.pl/_news/2003/11/26/_long/2330.html

Fedora Core 1

Page 22: Linux+_2004 01_PL

styczeń 200420

aktualności gnome

Wyprawa ku GNOME 2.6 rozpoczętaNa dzień przed końcem listopada została wydana pierwsza wersja testowa GNOME 2.5. Wydanie to stanowi początek serii, która powinna doprowadzić do oficjalnej wersji 2.6 dokładnie w najbliższe Święto Kobiet (8 marca). Choć wszystkich chętnych do testowania i zgłaszania błędów zachęcamy do skompilowania i przetestowania wydania (można to zrobić w sposób całkowicie automatyczny dzięki GARNOME), to przestrzec należy, iż nie tylko zawiera ono prawdopodobnie sporą liczbę błędów, ale różnić się może od GNOME 2.6 nawet zestawem oferowanych aplikacji – lista oficjalnie zaproponowanych modułów zawiera szereg pozycji, które po zaakceptowaniu mogą zaowocować dołączeniem w kolejnym wydaniu dodatkowych aplikacji. http://www.gnome.org/start/2.5/http://www.gnome.org/%7Ejdub/garnome/

Sodipodi++Niejednokrotnie pisaliśmy już o Sodipodi, programie do tworzenia grafiki, napisanego przez zdolnego Estończyka, Laurisa Kaplińskiego. Wydawałoby się, że dotychczas jego projekt rozwijał się bardzo dobrze, a jednak okazuje się, że nie wszyscy w pełni podzielają tę opinię. Na przełomie października i listopada grupa programistów postanowiła wykorzystać istniejący kod Sodipodi i utworzyć nowy projekt o nazwie Inkscape. Jako główny powód rozdwojenia projektu autorzy Inkscape podają chęć wypróbowania zupełnie nowych rozwiązań, które trudno byłoby zastosować w obecnym kodzie Sodipodi, ale bardziej widoczne są główne założenia przyjęte dla obu projektów: Inkscape, w odróżnieniu od Sodipodi, rozwijane ma być w języku C++, co pozwoli na zmniejszenie ilości kodu oraz łatwiejsze wprowadzanie zmian; nowy projekt zakłada również ściślejszą integrację ze środowiskiem GNOME, m.in. jego interfejs ma być zgodny z wytycznymi opisanymi w dokumencie GNOME HIG (Human Interface Guidelines). Pierwszy miesiąc prac nad Inkscape można ocenić bardzo pozytywnie. Kody źródłowe zostały zmienione tak, aby możliwa była ich kompilacja kompilatorem C++, a także wprowadzono spore zmiany w interfejsie, które m.in. eliminują dodatkowe okno z ikonami, a zastępują je standardowym paskiem menu i paskami narzędziowymi w oknie obrazu.http://www.inkscape.org/

Co zobaczymy w Evolution 2.0?

E volution – pakiet do komunikacji grupowej rozwijany przez Ximia-

na – stał się już standardowym skład-nikiem instalacji środowiska GNOME, podobnie jak przeglądarka WWW czy menedżer plików. Nic więc dziwnego, że Evolution został w końcu oficjalnie zaproponowany jako jeden z modu-łów zaplanowanego na marzec 2004 wydania GNOME 2.6. Aby możliwe było włączenie pakietu do kolejnej wersji GNOME, nastąpiło odpowied-nie dopasowanie jego harmonogra-mu wydań, zgodnie z którym już3 marca 2004 będziemy mogli cieszyć się wersją 2.0.

Z punktu widzenia użytkownika programu największą zmianą jest zupełnie nowy układ interfejsu pro-gramu: zamiast jednego drzewa zawie-rającego foldery pocztowe, informacje o kontaktach i kalendarze, zastosowa-no odrębne drzewa ze składnikami każdego z komponentów, pomiędzy którymi można się przełączać.

Kalendarz pozwala w nowej wersji na jednoczesne wyświetlanie terminów pochodzących z różnych źródeł, np. od wielu osób, przy czym terminy każdej z nich oznaczone są innym kolorem.

Cały interfejs programu został dostosowany do wymagań zdefinio-wanych w GNOME HIG, a w ramach procesu dostosowawczego zrezygno-wano z wykorzystania części wła-snych elementów sterujących na rzecz standardowych udostępnianych przez GTK+, co daje wrażenie większej spójności z innymi aplikacjami (np. w przypadku drzewa folderów).

Kolejną z bardzo widocznych zmian jest obsługa przez program protokołu S/MIME (wersji protokołu pocztowego MIME, obsługującego szyfrowanie i podpisywanie listów). Do przesyłania zaszyfrowanych infor-macji nie jest więc już potrzebne uruchamianie GPG, a takie operacje, jak sprawdzanie podpisu są w pełni zintegrowane z programem. Możliwe jest też zarządzanie listą certyfikatów, ich importowanie itp.

Najważniejsza zmiana w Evolu-tion 2.0 ukryta jest jednak zupełnie przed okiem użytkownika, choć może premiować w przyszłości powstaniem wielu rozszerzeń programu. Evolution zostało podzielone na dwie odrębne części. Pierwszą stanowi program zapewniający dostęp do danych, ta-kich jak informacje o kontaktach czy kalendarze (nosi on nazwę evolution-data-server). Druga część programu to interfejs graficzny, z którym ma do czynienia użytkownik. Część serwero-wa udostępnia elegancki interfejs pro-gramistyczny w językach C oraz C#, który pozwala dowolnym programom np. na pobieranie informacji z książki adresowej. Rozwiązanie to sprawia, że możliwe będzie zintegrowanie Evolu-tion z innymi aplikacjami poprzez współdzielenie rozmaitych obiektów udostępnianych przez serwer danych. Dzięki zmianie architektury programu możliwe będzie (wcześniej opisywa-ne tylko teoretycznie) np. wyłączne wykorzystywanie części Evolution służącej do obsługi poczty elektro-nicznej bez konieczności uruchamia-nia wszystkich składników programu (w tym odpowiedzialnych za kontak-ty i kalendarze), o co postuluje od dawna wielu obecnych lub niedo-szłych użytkowników programu. Tak więc, choć produkt nie jest jeszcze gotowy, już dziś możemy ocenić, że ustalenie jego wersji na 2.0 nie jest ani odrobinę przesadzone i odpowiada randze dokonanych zmian.

http://www.gnome.org/projects/evolution/

Obsługa S/MIME w nowym Evolution obejmuje również możliwość zarządzania certyfikatami

Page 23: Linux+_2004 01_PL

dział prowadzi: Zbigniew Chyla

21www.linux.com.pl

[email protected]

Nowy strumień muzykiAutorzy projektu GStreamer postawili kolejny krok na drodze poprawiania obsługi multimediów w przyszłym GNOME 2.6. W wydanej właśnie wersji 0.7.2 platformy nie tylko wyeliminowano mnóstwo błędów i wprowadzono zmiany w architekturze (m.in. nowy system ładowania wtyczek), ale zawarto również wtyczki pozwalające na odtwarzanie plików dźwiękowych powszechnie występujących w świecie systemów MacOS czy Windows: WMA (Windows Media Audio), AAC (Advanced Audio Coding) oraz Quicktime (tylko Sorensen 1). Dodatkowo częściowo zaimplementowano wtyczkę do obsługi plików wideo w windowsowym formacie WMV (Windows Media Video), choć na razie możliwe jest odtworzenie przy jej użyciu tylko niektórych plików. Obecnie z platformy GStreamer korzysta nie tylko standardowy odtwarzacz multimedialny GNOME oraz program Rhythmbox, ale nawet program do regulacji głośności.http://www.gstreamer.net/releases/0.7.2/notice.php

OpenOffice.org wybiera GNOMETwórcy projektu OpenOffice.org przedstawili niedawno dokument, który szczegółowo przedstawia założenia i plany związane z kolejną znaczącą wersją znanego pakietu biurowego. Użytkowników GNOME zainteresuje z pewnością fakt, iż jednym z kilku najważniejszych opisanych w dokumencie założeń jest integracja OpenOffice.org w wersji dla systemów Linux/UNIX ze środowiskiem GNOME. Integracja ma obejmować wygląd i zachowanie się aplikacji, jak również wykorzystanie istniejącej infrastruktury GNOME zamiast samodzielnego tworzenia analogicznych rozwiązań w ramach OO w sposób niezależny od platformy (oznacza to m.in. użycie biblioteki GNOME-VFS oraz pobieranie informacji o domyślnej przeglądarce WWW czy adresie pośrednika sieciowego bezpośrednio z konfiguracji GNOME). Wybór środowiska GNOME jako podstawowego w systemach uniksowych nie powinien dziwić, gdyż jest ono wykorzystywane komercyjnie już nie tylko przez firmę Sun, rozwijającą OOo, ale i takie firmy, jak IBM czy Novell http://tools.openoffice.org/releases/q-concept.html

Wzbogacanie Nautilusa

Nautilus, gnomowy menedżer plików i jedna z ważniejszych

części środowiska graficznego, od początku swego istnienia opierał się na niezależnych komponentach, odpo-wiedzialnych za wyświetlanie zawar-tości folderów lub plików. Z punktu widzenia potencjalnych autorów, roz-szerzanie Nautilusa było jednak zada-niem niewdzięcznym – wymagało tworzenia komponentów Bonobo lub umieszczania wielu plików w rozma-itych katalogach Nautilusa.

Sytuację tę postanowił zmienić Dave Camp. W wersji rozwojowej programu zaimplementował on bar-dzo ogólny mechanizm wtyczek, opartych na bibliotekach dzielonych i wykorzystujących wyłącznie system typów biblioteki GLib. Za podstawę testów służy obecnie wtyczka umoż-liwiająca Nautilusowi na współpracę z repozytorium CVS. Powoduje ona,

że przy ikonach plików pojawia się symbol oznaczający stan pliku (np. zmodyfikowany lokalnie), w widoku listy widnieje kolumna informująca o wersji lokalnego pliku, zaś z menu kontekstowego można wybrać polece-nie aktualizacji pliku lub zatwierdze-nia dokonanych w nim zmian.

http://primates.ximian.com/~dave/log/

Obsługę CVS-a dostępną obecnie w Nautilusie przez specjalny widok (Apotheke) zastąpi wkrótce nowoczesna wtyczka

Łowcy nagród

nanie każdego z nich. Osoby chcą-ce zarobić na tworzeniu Wolnego Oprogramowania muszą się jednak pośpieszyć – poprawki muszą być zatwierdzone do dnia zamrożenia interfejsu graficznego w przyszłym GNOME 2.6. Zgodnie z obecnym harmonogramem, dzień ten przypa-da na 12 stycznia 2004.

http://www.gnome.org/bounties/

Od czasu wydania GNOME 2.0,obfitującego w poważne zmia-

ny na poziomie platformy, prace programistów skupiły się na rozwi-janiu samych aplikacji. Okazuje się jednak, że użytkownicy środowiska graficznego domagają się nie tylko zestawu sprawnie działających apli-kacji, lecz również opracowania ich w taki sposób, aby wzajemnie ze sobą współpracowały i integrowały się w większą całość. Na potrzebę tę odpowiedziała Fundacja GNOME, której zadaniem jest czuwanie nad kierunkami rozwoju środowiska. Po-parta finansowo przez firmę Novell (aktualnego właściciela Ximiana), ogłosiła ona „polowanie” na nagrody za integrowanie środowiska (ang. Desktop Integration Bounty Hunt). Przedsięwzięcie ma formę konkursu dla programistów, w którym przed-stawiono szereg zadań integracyjnych do wykonania oraz wyznaczono kwoty nagród pieniężnych za wyko-

Komunikacja dowolnymi kanałami – integracja programów Evolution, Gaim i GnomeMeeting

Page 24: Linux+_2004 01_PL

styczeń 200422

aktualności kde

Quanta-3.2BE1Zespół deweloperów edytora HTML dla KDE – QuantaPlus – przedstawił użytkownikom kolejną wersję ich dzieła. Tym razem jest to wersja „Bleeding Edge” numer jeden, czyli bardzo wczesna wersja testowa, przedstawiająca zarys możliwości kolejnego stabilnego wydania – 3.2. Co nowego? Przede wszystkim nowy edytor arkuszy styli oraz automatyczne zapisywanie plików. Trzeba zaznaczyć, że nowe wydanie wymaga Kdelibs w wersji z CVSlub nadchodzącego 3.2 beta2.http://quanta.sourceforge.net/main2.php?newsfile=qberelease01

KDevelop najlepszyPowody do dumy mają autorzy środowiska IDE dla KDE – KDevelopa. Z jakiego powodu? Projekt ten zdobył 29.4% głosów w swojej kategorii, wyprzedzając tym samym takie oprogramowanie, jak Eclipse czy Anjuta, na stronach magazynu Linux-Magazin. Niemiecki miesięcznik podejmując decyzję opierał się na opinii jury, które składało się z autorów aplikacji dla KDE oraz największych osobistości Linuksa, m.in. Alana Coksa. http://www.kdevelop.net/http://www.linux-magazin.de/Artikel/ausgabe/2003/12/award/award.html

KDE na targach COMDEXProjekt KDE zaszczycał swoją obecnością niejedne już targi oprogramowania. Tym razem wybór padł na targi COMDEX, które odbyły się w tym roku w Las Vegas. Nie zabrakło na nim „sław” technologii informatycznej, choćby Billa Gatesa, który dał wykład na temat pozycji Microsoft na rynku (wspomniał oczywiście o zagrożeniu ze strony projektów Open Source). W ramach KDE poruszono takie tematy, jak klient pracy grupowej Kontact, Kiosk, czyli najłatwiejsze w obsłudze środowisko graficzne we wszechświecie oraz ogólna tematyka dotycząca stacji roboczych. http://dot.kde.org/1069632528/

Nowe standardyCi, którzy interesują się rozwojem KDE „od podszewki”, wiedzą już zapewne, jakie rewolucyjne zmiany „dotkną” okna konfiguracji poszczególnych komponentów. Nowa struktura o nazwie KConfig XT, która niedawno powstała, wyznacza nowy standard i jest bardzo nowatorska. Szczegóły dotyczące tych rewelacji dostępne są przede wszystkim w przewodniku, stworzonym na potrzeby serwisu developer.kde.org. http://developer.kde.org/documentation/tutorials/kconfigxt/kconfigxt.html

Rekall na GPL!

Firma theKompany.com zaprezen-towała nową wersję programu

Rekall. Nową, bo tym razem opartą na licencji GNU GPL. Czym jest Rekall? Jest to program do zarządzania bazami danych, stworzony z myślą o użytkownikach KDE.

Rekall będzie teraz wspierany przez deweloperów związanych z por-talem www.rekallrevealed.org. Pomoc ze strony użytkowników w postaci zgłaszania błędów czy nawet podsy-łania łatek autorom jest mile widziane. „Konkurencją” dla Rekalla jest stosun-kowo niedawno narodzony projekt o nazwie Kexi, który jest składnikiem pakietu biurowego KOffice. Pomimo tego, że Rekall jest projektem bardziej dojrzałym, to deweloperzy Kexi będą mobilizacją dla autorów konkurencji. Istnieje zatem duże prawdopodo-bieństwo, że za jakiś czas otrzymamy aplikacje zdolne do pełnej obsługi wszelakich baz danych pod Linuksem.

Co potrafi Rekall w tej chwili? Oto lista niektórych funkcji:

• wsparcie dla baz danych: MySQL, PostgreSQL, IBM DB2 oraz ODBC;

• dodawanie baz danych, zarządza-nie wpisami, tabelami, użytkow-nikami itd.;

• importowanie/eksportowanie baz danych;

• wsparcie dla skryptowania (Pyt-hon);

• obsługa wtyczek.

http://www.rekallrevealed.org/

Rekall

Gollum a KDE

Ku zdziwieniu wielu fanów KDE,a zarazem dobrego kina, w roz-

szerzonej wersji DVD drugiej części filmu „The Lord of The Rings”, „The Two Towers”, możemy zauważyć obecność naszego ulubionego śro-wiska na komputerach twórców gra-fiki! Film relacjonujący proces two-rzenia animacji przedstawia m.in.scenę z Gollumem i Samem, do której efekty specjalne (a głównie postać samego Golluma) zostały stworzone przy użyciu aplikacji Maya, działającej pod kontrolą KDE.

Zastosowanie takiego zestawu wyszło z inicjatywy firmy Weta Digi-tal. Jako ciekawostkę pragnę przed-stawić fakt, iż do tworzenia tekstur – oprócz programu GIMP – został użyty Adobe Photoshop, działający pod kontrolą emulatora CrossOver Office. Twórcy CrossOver zgodzili się

podobno zmienić swój projekt na tyle, aby działał w nim Photoshop, za (sic!) 100 tysięcy dolarów! Taką sumę prze-kazała firma US Film Industry, tylko po to, aby całość oprogramowania na komputerach twórców grafiki do „Władcy Pierścieni” działała pod kon-trolą Linuksa. Warto podkreślić, że nie jest to debiut KDE w filmowych przedsięwzięciach.

Prace na Władcą Pierścieni pod KDE

Page 25: Linux+_2004 01_PL

dział prowadzi: Paweł Biliński

23www.linux.com.pl

[email protected]

George Straikos ponownie...Nie po raz pierwszy – i zapewne nie ostatni – George Straikos udzielił wywiadu, w którym przedstawia sytuację rozwoju KDE. Stowarzyszenie USA Linux User Group przeprowadziło wywiad z George'm, który w bardzo pozytywnym świetle przedstawił postępy przy pracach nad nowym KDE – 3.2.http://www.usalug.org/index.php?view=14

Precz z robakami ...... osiadłymi w rozwijającym się cały czas kliencie pracy grupowej Kontact. 16 listopada odbył się dzień oczyszczania Kontactu od wszelakich błędów. Rozpoczęto prace z 431 błędami (łącznie dla KMail, KAddressBook, KOrganizer, KNotes i samego Kontacta), a zakończono, gdy liczba ta wynosiła 419. Jest to zupełnie niezły wynik, szczególnie, gdy spojrzeć na czas, w jakim wykonano tak czasochłonną pracę. http://www.kdedevelopers.org/node/view/241

Dla fanów ApplePrzeglądając serwis KDE-look.org, można zauważyć sporo tematów nawiązujących do stylistyki MacOS X. Jednym z nich jest – niedawno powstały – styl o nazwie Baghira, który bazuje na silniku Mosfet-Liquid w wersji 0.9.6pre4. Jak do tej pory, autorowi tematu udało się zdobyć uznanie ok. 87% odwiedzających centrum tematów dla KDE – jest to wynik świadczący o uznaniu dla styli tego typu wśród użytkowników KDE. Pomimo, że sam nie jestem fanem tego typu wystroju biurka, to zapraszam osoby o odmiennych gustach do testowania nowego stylu.http://kdelook.org/content/show.php?content=8692

Nowe KDE.pl!Od pewnego czasu można przeglądać serwis KDE.pl ubrany w nowe szaty. Poza zmianami dotyczącymi wyglądu, zmieniono przede wszystkim układ strony oraz uproszczono nawigację. Warto dodać, iż samo KDE.pl stało się centrum informacji o tym środowisku, natomiast wszelkie nowości ze świata K Desktop Environment dostępne są pod adresem http://dot.kde.pl/. Zmiany te mają na celu zlikwidowanie ryzyka włamania się do systemu newsowego, a także poprawienie czytelności i zmianę wizerunku serwisu, w którym wszystko jest teraz bardziej uporządkowane i ma swoje miejsce.http://www.kde.pl

Krusader 1.30

K rusader, znany menedżer plików, doczekał się kolejnej wersji, a co

za tym idzie – wielu zmian, oczywiście na lepsze. Kilka miesięcy temu, na łamach działu, który właśnie czytacie, pisałem o problemach ze znalezieniem deweloperów zainteresowanych kon-tynuacją rozwoju Krusadera. Jakiś czas później zostało opublikowane nowe wydanie Beta, w którym można było zauważyć nieliczne poprawki, ale wielu jego użytkowników miało nadzieję na szybszy rozwój tego obiecującego pro-gramu. I tak się stało. Nowa siła roz-wojowa w postaci osób chętnych do pomocy przy współtworzeniu aplikacji pozwoliła na szybki start ku nowym wydaniom. Nadszedł czas na stabilne wydanie oznaczone numerkiem 1.30. Co nowego? Oto pełna lista zmian widocznych dla użytkownika:

• tworzenie nowych plików za po-mocą skrótu [Shift ]+[F4 ];

• obsługa zakładek w każdym z pa-neli (listy plików, połączenia ssh);

• nowy sposób podglądu plików za pomocą skrótu [Shift ]+[F3 ];

• przechodzenie pomiędzy panela-mi za pomocą skrótu [Shift ]+[U ];

• możliwość otwierania wiele pli-ków na raz (posiadających to sa-mo rozszerzenie);

• nowy system zakładek;• poprawki w tłumaczeniach;• zmiany w systemie wyszukiwania

plików.

Poza wyżej wymienionymi innowa-cjami, poprawiono oczywiście błędy dotyczące stabilności programu.

Instalacja Krusadera krok po krokuPobieramy źródła programu z adresu http : //prdownloads.sourceforge.net /krusader/krusader-1.30.tar.gz?download (po wpisaniu tego adresu zostaniemy poproszeni o wybór ser-wera lustrzanego). Otrzymane archi-wum rozpakowujemy (polecenie tar), najlepiej za pomocą konsolowego Midnight Commandera. W katalogu,

w którym rozpakowaliśmy Krusadera, wykonujemy polecenia ./configure

–prefix=̀ kde-config –prefix̀ ; make. Jeśli całość procesu kompilacji przebie-gła bez problemów, przechodzimy do umieszczenia wszystkich potrzebnych plików w podanym prefiksie KDE. Robimy to jako użytkownik root, wykonując polecenie make install. Po zakończeniu procesu instalacji, możemy usunąć źródła programu (roz-pakowany uprzednio katalog) i uru-chomić program, np. wybierając go z menu KDE, podmenu „Aplikacje”.

Dla osób, które nie chcą instalo-wać Krusadera kompilując jego źródła, dostępne są gotowe pakiety binarne dla niektórych dystrybucji, np. Man-drake 9.1, Fedora 1 czy SuSE 8.2.

Co nowego w kolejnych wydaniach?Obserwując plik TODO, dowiemy się, czego spodziewać się po kolejnych wydaniach Krusadera. Z ciekawszych rzeczy oznaczonych najwyższym pri-orytetem możemy znaleźć między innymi:

• rewolucje w oknie preferencji;• pasek postępu przy odświeżaniu;• dodanie okna z wynikami wyszu-

kiwania, podobnego do tego, które znamy z Midnight Commandera;

• napisana od zera obsługa wspar-cia dla protokołu SMB;

• wsparcie dla FTP proxy z nowym oknem konfiguracji;

• menu użytkownika.

http://krusader.sourceforge.net/

Nowy Krusader w akcji

Page 26: Linux+_2004 01_PL

styczeń 200424

linuxfresh

Lyrc

Podczas słuchania piosenek (szczególnie obcojęzycz-nych) nie zawsze udaje się dokładnie wychwycić

treść. Czasem chcielibyśmy ponucić razem z wykonawcą, lecz nie pamiętamy dokładnie słów. Pomocne w takich sytuacjach są liczne witryny zawierające słowa piosenek (lyrics). Wyszukiwanie ich nie jest jednak zawsze wygod-ne, a także wymaga otwierania przeglądarki podczas słuchania muzyki. Z tego powodu powstał Lyrc, wtyczka do programu XMMS, pobierająca z sieci słowa aktualnie odtwarzanej piosenki i wyświetlająca je w osobnym okienku.

Starsza wersja Lyrc (0.1) udostępniona była tylko w wersji binarnej. Aktualna (0.2) została już udostępnio-na razem z kodem źródłowym. Jak więc widać, program dopiero się rozwija. Warto bliżej się nim zainteresować, gdyż to właśnie dzięki pomocy użytkowników może stać się bardziej przydatny. Wtyczka korzysta z bazy tekstów piosenek, umieszczonej na serwerze lyrc.com.ar. Jeśli napotkamy na piosenkę, dla której słów jeszcze nie ma w bazie, możemy dodać je samodzielnie. Jeśli zaś w bazie znajduje się kilka tekstów pasujących do naszej piosen-ki, to będziemy mogli wybrać ten właściwy. Nie należy obawiać się, że podczas słuchania ulubionych piosenek wtyczka będzie ciągle pobierała dane z Internetu – raz pobrane teksty przechowywane są w katalogu ~/.lyrics. Obecnie Lyrc radzi sobie z pobieraniem danych o piosen-ce z plików mp3 (dzięki znacznikom ID3), ogg i ścieżek płyt audio (wykorzystuje plik ~/.xmms/cdinfo).

Kod źródłowy wtyczki możemy pobrać ze strony projektu (http://sourceforge.net/projects/lyrc/ ). W chwili pisania artykułu był to plik o nazwie lyrc-0.2.tar.gz. Jego instalacja nie sprawia problemów. Po rozpakowaniu źró-deł (tar xzvf lyrc-0.2.tar.gz), wystarczy w utworzonym katalogu wydać polecenia make i make install (to drugie z poziomu użytkownika root). Jeśli jednak polecenie make

nie powiedzie się, należy upewnić się, czy w systemie mamy następujące programy: xmms-config, gtk-config oraz xml2-config. W Auroksie znajdują się one odpowied-nio w pakietach: xmms-devel, gtk+-devel oraz libxml2-devel.

Po poprawnej instalacji możemy już uruchomić XMMS (Dźwięk i wideo –> Odtwarzacz dźwięku). Wtyczkę Lyrc znajdziemy w Preferencjach ([Ctrl ]+[P ]), w zakładce Visu-alisation Plugins. Jeśli chcemy go uruchomić, to po wybra-niu go z listy, zaznaczamy pole Enable plugin.

Wydaje mi się, że warto wspierać rozwój tego progra-mu, nawet gdyby miało to polegać tylko na dodawaniu tekstów piosenek, których jeszcze nie ma na serwerze. Już teraz, dzięki zaangażowaniu użytkowników, dostępnych jest wiele tekstów piosenek polskich wykonawców.

http://sourceforge.net/projects/lyrc/http://www.lyrc.com.ar/

Nawet znając słowa, próba zaśpiewania tej piosenki może doprowadzić do skręcenia języka

LARP’O’Machine

Widzieliście może kiedyś dużą grupę ludzi prze-branych w średniowieczne stroje, biegających po

ruinach zamków i okolicznych lasach? A może zamiast strojów z epoki mieli na sobie współczesne mundury i wykonaną z drewna broń? Jeśli tak, to najpewniej mie-liście do czynienia z uczestnikami LARP-a (Live Action RolePlaying), czyli gry fabularnej na żywo.

Jeden z Mistrzów Gry, Matias Maki, postanowił uła-twić sobie i innym organizowanie LARP-ów. W tym celu zaczął pisać własny system w PHP, który nazwał LARP’O-’Machine. Projekt po osiągnięciu wersji 0.2 został udo-stępniony publiczności do testowania. Chociaż przed nim

jeszcze długa droga, zapowiada się ciekawie. W założeniu ma pozwolić graczom na rejestrowanie się, zapoznawanie z ogólną fabułą i tworzenie swoich postaci. Gracze będą również mogli przesyłać swoje zdjęcia, co pozwoli im zapamiętać wygląd swoich towarzyszy, których spotkają w czasie gry.

LARP’O’Machine budowany jest w oparciu o My-SQL 4.0.16, PHP 4.3.3 oraz najnowsze repozytoriumPEAR, lecz powinien działać również i ze starszymi wer-sjami MySQL i PHP.

http://freshmeat.net/projects/lom/

Page 27: Linux+_2004 01_PL

25www.linux.com.pl

dział prowadzi: Piotr Machej

[email protected]

Brag

Czytelnicy korzystający z serwerów grup dyskusyjnych z pewnością zdają sobie sprawę z istnienia tzw. grup

binarnych. Nie jest to może najlepszy sposób na rozpo-wszechnianie plików, lecz wciąż popularny. O ile jednak małe pliki wysłane na grupę newsową mieszczą się zwy-kle w jednej wiadomości (przykładowo fotografie koni na alt.binaries.pictures.horses), o tyle z większymi jest już pro-blem. Pliki takie dzielone są na wiele mniejszych i hurtem wysyłane na grupę. Często prowadzi to do tego, że w celu zapoznania się z jednym plikiem, musimy ściągnąć kilkaset wiadomości, następnie zapisać dołączone do nich pliki, połączyć je, dopiero rozpakować...

No właśnie, jest z tym trochę roboty. A w dodatku po-wyższe odbywa się przy założeniu, że na naszym serwerze pojawiły się wszystkie części pliku, co często jest tylko pobożnym życzeniem. Z tej przyczyny istnieje szereg pro-gramów mniej lub bardziej pomagających przy pobieraniu wiadomości z binarnych grup dyskusyjnych. Jednym z nich jest Brag.

Brag działa w linii poleceń, lecz nie powinno to Czytel-ników zrażać. Umożliwia on pobieranie wieloczęściowych załączników z wiadomości na grupach newsowych. Jedną z jego ciekawszych funkcji jest możliwość pobierania części jednego pliku z wielu różnych serwerów i z różnych grup. Potrafi on dekodować załączniki zakodowane w uuencode, MIME bas64 oraz yenc. Świetnie nadaje się także do uru-chamiania z Crona, dzięki czemu może pobierać pliki bez naszej ingerencji. Oprócz wskazania grupy i serwera, może-my również określić (dzięki wyrażeniom regularnym), które załączniki mają być pobierane, a które absolutnie nie.

Ze strony domowej projektu (http://brag.sourceforge.net/) możemy pobrać zarówno pakiet rpm, jak i paczkę tgz. W przypadku pobrania tej drugiej (brag-1.4.1.tar.gz), po rozpakowaniu archiwum wystarczy wydać polecenie make install (z poziomu użytkownika root). Pakiet rpm instalu-jemy standardowo (rpm -Uvh brag-1.4.1-1.noarch.rpm).

Program wywołany bez parametrów (poleceniem brag) spróbuje połączyć się z serwerem określonym zmienną środowiskową NNTPSERVER oraz z grupą, której nazwa znajduje się w zmiennej środowiskowej NNTPGROUP. Jeśli grupy takiej nie ma, to domyślnie zostanie użyta nazwa alt.binaries.pictures.cemetaries. Ponieważ raczej nie intere-suje nas tematyka cmentarna, więc lepiej używać parame-trów. Podstawowe wywołanie to:

brag -s nazwa_serwera -g nazwa_grupy

Brag postara się połączyć ze wskazanym serwerem, a na-stępnie pobrać z wyznaczonej grupy wszystkie załączniki binarne. Jeśli plik binarny zostanie pobrany w całości, to umieszczony będzie w katalogu ~/.brag/nazwa_serwera/nazwa_grupy/finished/. Z kolei niekompletne fragmenty

plików znajdą się w katalogu ~/.brag/nazwa_serwera_naz-wa_grupy/unfinished/, rozdzielone na poszczególne pod-katalogi.

Wiele serwerów wymaga autoryzacji użytkownika. Dla programu Brag to nie problem. Możemy w linii poleceń po-dać nazwę użytkownika i hasło, korzystając z wywołania:

brag -l nazwa_użytkownika -p hasło

Lepiej jednak (ze względów bezpieczeństwa) ograniczyć się do podawania w linii komend tylko nazwy użytkownika. Hasło natomiast należy umieścić w pliku ~/.brag/nazwa_serwera/passwd, w postaci nazwa_użytkownika:hasło.

Wspomniałem wcześniej, że Brag umożliwia łączenie fragmentów pliku wysłanych na różne grupy, a nawet na różne serwery. Służą do tego opcje -c i -C. Pierwsza z nich pozwala na łączenie fragmentów wysłanych na różne grupy. Fragmenty takie umieszczane są w katalogu ~/.brag/nazwa_serwera/unfinished/ (po skompletowaniu, pełny plik znajduje się w katalogu ~/.brag/nazwa_serwera/finished/ ). Ważne jest, że po użyciu tej opcji, wiadomości wysłane na kilka grup (crosspost) będą pobierane tylko raz. Druga opcja łączy fragmenty wysłane na tę samą grupę, ale na różne serwery. Pliki umieszczane są w odpowiednich podkatalogach katalogu ~/.brag/nazwa_grupy/.

Istnieje także możliwość użycia obydwu opcji równo-cześnie. W takim przypadku łączone będą fragmenty po-bierane z różnych grup i z różnych serwerów, a następnie umieszczane w odpowiednich podkatalogach katalogu ~/.brag/all-servers/.

Jak widać, Brag jest programem bardzo użytecznym i wygodnym. Z pewnością przyda się tym Czytelnikom, którzy czasem pobierają większe pliki z grup binarnych.

http://brag.sourceforge.net/

Możemy wesprzeć rozwój Braga kupując różne gadżety

Page 28: Linux+_2004 01_PL

styczeń 200426

wywiad

Wywiad z Alexandrem Peslyakiem (Solar Designerem), twórcą projektu Openwall

Krzysztof Krawczyk (Linux+): Czy mógłbyś przed-stawić się Czytelnikom naszego pisma? Gdzie mieszkaszi czym zajmujesz się na co dzień?

Alexander Peslyak (Openwall): Podczas wywiadów wolę mówić o rzeczach, które robię dla społeczności, niż o sobie. Skoro jednak pytasz, mieszkam w Moskwie, gdzie od 1997 roku pracuję jako administrator bezpieczeństwa w firmie DataForce ISP. Ponadto, pracuję jako niezależny konsultant ds. bezpieczeństwa. W wolnym czasie zajmuje się rozwijaniem różnych projektów, a ponieważ mam wię-cej pomysłów do realizacji niż jestem w stanie wykonać, na nic więcej nie mam czasu. Jeżeli jednak znajdę jakiś czas wolny od komputerów, poświęcam go żonie.

KK: Dlaczego wszędzie korzystasz z pseudonimu Solar Designer? Z czego to wynika?

AP: Nie ma żadnego konkretnego powodu. Pseudonim pochodzi ze świata RPG i nie znaczył wiele, do czasu, gdy ludzie zaczęli rozpoznawać mnie właśnie pod nim.

KK: Od dłuższego czasu prowadzisz projekt Openwall. Kiedy to się zaczęło i z kim współpracujesz przy jego rozwi-janiu?

AP: Od 6 lat większość czasu spędzam zajmując się komputerami i bezpieczeństwem sieci. W szczególności rozwijam różne darmowe uniksowe narzędzia związane z bezpieczeństwem i staram się znajdować błędy w już istniejącym oprogramowaniu. Projekt Openwall, który rozpocząłem w 1999 roku, jest rozwinięciem tych zain-teresowań.

Chociaż jestem autorem większości oprogramowania opublikowanego w ramach Openwalla, to nasz największy podprojekt, Openwall GNU/*/Linux (Owl), jest rozwijany w zespole, któremu przewodzę. Owl jest systemem opera-cyjnym o zwiększonym bezpieczeństwie, którego bazą jest Linux i oprogramowanie GNU, przeznaczonym głównie dla serwerów internetowych.

Aktualnie najbardziej aktywnymi deweloperami Owl są, oprócz mnie, Michail Litvak, Rafał Wojtczuk (Nergal), Dmitry V. Levin oraz Jarno Huuskonen.

KK: W ramach projektu Openwall przygotowujesz łaty na jądro Linuksa, w tym na serię 2.4, zwiększające jego bez-pieczeństwo. Czemu nie wprowadzić tych zmian na stałe do jądra? Czy są takie plany? Czym różnią się twoje poprawki od również popularnego GrSecurity?

AP: Niektóre fragmenty tych łatek są w rzeczywistości włączane do stabilnych jąder, w przeciwnym razie rozmiar

moich łatek wciąż by rósł, ale są to poprawki błędów bez-pieczeństwa wykrytych w samym jądrze. Rzeczywiście, rozszerzenia zwiększające bezpieczeństwo nie zostają włączane, ale ja nie spodziewam się zmiany tej sytuacji. Jedną z przyczyn jest to, że te rozszerzenia mogą spowo-dować fałszywe poczucie bezpieczeństwa. Ktoś mógłby potem podjąć decyzję o nienaprawianiu dziury w systemie, którym administrują, lub w oprogramowaniu, którym się zajmuje, tylko z powodu tych rozszerzeń. Jeśli tak się stanie, bezpieczeństwo będzie w rzeczywistości zmniejszone, a nie zwiększone.

GrSecurity rozpoczęto jako nieoficjalne przeniesienie moich łatek na jądro serii 2.4, o wiele wcześniej zanim uznałem te jądra za przeznaczone do zastosowań produk-cyjnych. W momencie, gdy zadecydowałem o oficjalnym wsparciu jąder 2.4, GrSecurity stał się już dużą ogólną łatką, która zawierała wiele innych tego typu rozszerzeń z różnych miejsc. Z całym szacunkiem dla Brada, który rozpoczął GrSecurity, wciąż uważam, że niektóre jego rozszerzenia lub ich implementacje są zbyt wątpliwe, aby je polecać. Oczywiście są tam także rozszerzenia, których nie ma w moich łatkach, a są bardzo ciekawe. Mógłbym je nawet włączyć do własnych łatek, gdybym je wciąż aktyw-nie rozwijał, zamiast tylko utrzymywać.

Niektórzy czytelnicy mogą zastanawiać się, czy i dlacze-go moje poprawki straciły dla mnie swoją wagę. Tak jest w istocie, gdyż mam teraz Owla. Z poprawnie przygotowa-nym środowiskiem użytkownika, nie są one już tak bardzo potrzebne.

Rysunek 1. Alexander Peslyak

Page 29: Linux+_2004 01_PL

27www.linux.com.pl

wywiad z solar designerem

KK: Właśnie. Porozmawiajmy o Owlu, którego opubli-kowałeś ponad rok temu. Co się od tego czasu zmieniło, gdyż jak na razie niewiele słychać o tej inicjatywie. Dla kogo jest ta dystrybucja i do czego można ją wykorzystać?

AP: Pracuję nad Owl-current, a Owl 1.1 powinien się już ukazać, gdy ten wywiad zostanie opublikowany. Posta-nowiłem nie wysyłać na BugTraqa ogłoszeń o niewielkich poprawkach bezpieczeństwa, które wprowadziliśmy w mię-dzyczasie, chociaż są one oczywiście zamieszczone w pliku zmian (ang. changelog) Owl-current, oznaczone jako SECU-RITY-FIX, wraz z innymi dużymi zmianami w systemie.

Owl jest przeznaczony przede wszystkim dla doświad-czonych administratorów systemów, którzy cenią sobie bezpieczeństwo swoich systemów. Inne przydatne zasto-sowania Owla mogą wynikać z dostępności w systemie narzędzi sieciowych, deweloperskich oraz związanych z bezpieczeństwem, a także możliwością łatwego jego przebudowania ze źródeł (make buildworld).

KK: A jak wygląda komercyjny aspekt tego zagadnienia. Czy udaje Ci się sprzedawać tę dystrybucję Linuksa. Czy jest duże zainteresowanie usługą zdalnej instalacji? Czy ofe-rujesz coś jeszcze, np. audyt bezpieczeństwa wewnętrznej sieci?

AP: Przyjmujemy zamówienia na płyty CD z Owlem. Większość ludzi woli jednak skorzystać z darmowego pobierania obrazów ISO. Usługa zdalnej instalacji, którą udostępniamy (ktoś uruchamia Owla, konfiguruje sieć i pozwala nam zdalnie dokończyć instalację, zaczynając od podziału dysku na partycję), nie jest zbytnio popularna.

Prawdopodobnie wynika to z tego, że ludzie, którzy wybie-rają Owla, nie są aktualnie tymi, którzy szukaliby takiego rodzaju wsparcia.

Myślimy nad przygotowaniem i utrzymywaniem wersji OEM Owla dla firm, które potrzebują bezpiecznego syste-mu operacyjnego dla swoich serwerów sieciowych (ang. network appliance serwers).

Tak, oferujemy inne usługi z zakresu wolnego oprogra-mowania i bezpieczeństwa. Mam tu przykładowo na myśli odpłatne tworzenie programów lub rozszerzeń oprogramo-wania uwzględniających specyficzne wymagania klientów (później zostają udostępnione społeczności), audyty kodu źródłowego ukierunkowane na bezpieczeństwo, różnego rodzaju konsultacje oraz zdalną administrację systemem.

KK: Jakie oprogramowanie jest jeszcze tworzone w ramach projektu Openwall? Czy planujesz coś nowego?

AP: W ramach projektu Openwall jest tworzonych wiele programów. W większości są to elementy Owla, które są dostępne także oddzielnie do wykorzystania w innych systemach uniksowych. Wiele z nich jest w rzeczywistości włączanych do innych dystrybucji, także *BSD.

Najbardziej popularny jest mój zestaw narzędzi do haseł, w skład którego wchodzi: John the Ripper (narzędzie łamią-ce hasła), listy słów, Pam_passwdqc (moduł sprawdzający jakość hasła) oraz implementacja Bcrypta (mój nowy system szyfrowania haseł, kompatybilny z tym z OpenBSD). Do tego dochodzi Tcb, implementujący alternatywny mecha-nizm zarządzania hasłami, dostępny w Owl, a zaprojekto-wany i wykonany głównie przez Rafała Wojtczuka.

Inne oprogramowanie to Scanlogd (demon wykrywa-jący skanowanie portów), Popa3d (demon POP3 zapro-jektowany z myślą o bezpieczeństwie), Msulogin (lepszy program do logowania się w trybie pojedynczego użytkow-nika) oraz kilka modułów PAM.

Utrzymywanie i rozszerzanie istniejącego oprogramo-wania zabiera wiele czasu, zatem nie odważę się w tej chwili obiecać przygotowania całkiem nowych rozwiązań. Znaczące uaktualnienia istniejących programów są wciąż jednak opracowywane.

KK: Czy do projektu można się jakoś zapisać i pomagać Ci w jego rozwoju? Czy można jeszcze jakoś inaczej wspie-rać projekt?

AP: Oczywiście, z chęcią zobaczę więcej utalentowa-nych ludzi przyłączających się do mojego zespołu. Niektóre rzeczy, które muszą być zrobione, są zawarte w dokumen-cie TODO z Owl-current. Poza zgłaszaniem własnego kodu, przyjmujemy także datki w postaci pieniędzy, sprzętu lub usług istotnych dla projektu. Zakup płyt CD z Owlem i zamawianie płatnych usług także jest dużą pomocą.

KK: Czy możesz powiedzieć nam, co myślisz o projekcie SE Linux? Jak bardzo koncepcyjnie różnią się wasze rozwią-zania?

AP: SE Linux nie jest nawet podobny do Owla. Cytując opis ze stron WWW NSA, SE Linux „jest po prostu przykła-dem, jak obowiązkowe prawa dostępu, które ograniczają akcje dowolnego procesu, włączając w to procesy super-

Rysunek 2. Pracować można w różnych warunkach

Page 30: Linux+_2004 01_PL

styczeń 200428

wywiad

użytkownika, mogą być dodane do Linuksa”. To bardzo dobry pomysł, ale nie z dziedziny, którą się aktualnie zajmuję. SE Linux jest przede wszystkim modyfikacją jądra, a narzędzia do niego i poprawki już istniejących, mają rolę drugorzędną.

Gdybym miał rozważać jego wykorzystanie w Owlu, prawdopodobnie raczej wybrałbym RSBAC.

KK: Z tego, co pamiętam, bardzo aktywnie działałeś kiedyś na liście BugTraq. Czy coś zmieniło się od czasu, gdy firmę SecurityFocus przejęła firma Symantec jesienią 2002 roku?

AP: Nie. Samo przejęcie nie wpłynęło na moje postrze-ganie BugTraqa w żaden sposób. Powodem, dla którego jestem tam mniej aktywny, jest moje priorytetowanie rzeczy z powodu braku czasu oraz moje zrozumienie, że grupa subskrybentów tej listy wzrosła do takiego stopnia, iż dys-kusje, w przeciwieństwie do ogłoszeń, byłyby ze zrozumia-łych względów uważane za „spamowanie”, chyba że temat byłby bardzo nowy lub wart zainteresowania większości subskrybentów. W większości przypadków powstrzymu-ję się od komentarzy. Musiałby to być naprawdę dobry powód, abym wysłał coś do dziesiątków tysięcy ludzi jednocześnie (a może jest ich już ponad 100k?). To nie ma nic wspólnego z działalnością moderatorów Bugtraqa, lecz moim samouświadomieniem.

KK: Czy udzielasz się jeszcze w jakichś innych projek-tach związanych z bezpieczeństwem?

AP: Tak, i zgłaszam poprawki związane z bezpieczeń-stwem w projektach z nim nie związanych.

KK: Jak oceniasz bezpieczeństwo popularnych dystry-bucji Linuksa? Dla zwrócenia uwagi, niech będą to Debian, Aurox i Mandrake.

AP: Nie znam Auroksa (zakładam, że jest to polska wersja Red Hata).

Wiem, że zespoły tych trzech głównych dystrybucji, które wymieniłeś (Debian, Red Hat i Mandrake), wyko-nują dobrą robotę w usuwaniu zagrożeń, które zostały im zgłoszone. Gdy to robią, grają też fair w stosunku do

innych firm (i co ważniejsze, ich użytkowników), włącza-jąc takie małe jak nasza, wspólnie ustalając daty ujawnie-nia zagrożenia.

Nie widzę żadnych znaczących różnic w podejściu do spraw bezpieczeństwa w tych dystrybucjach. Z kolei dystry-bucje, które są zlokalizowanymi klonami innej dystrybucji, takie jak Aurox, są troszeczkę z tyłu i muszą „gonić czołów-kę”. Ale to także nie stanowi dużej różnicy.

W przeciwieństwie do Owla, żadna z trzech wymie-nionych dystrybucji nie jest zbytnio chętna do prze-myślenia i przeprojektowania oprogramowania, które wykorzystują, w celu zwiększania jego bezpieczeństwa. W rzeczy samej, okazjonalnie akceptują usprawnienia dotyczące bezpieczeństwa w postaci łatek, ale, z kilkoma wyjątkami, nie mają odwagi wprowadzić bezpośrednich środków zwiększających bezpieczeństwo, czego dobrym przykładem jest wspomniany wcześniej Tcb – propo-nowaliśmy go wszystkim trzem. Z tego powodu, ich użytkownicy są w większej potrzebie bycia na bieżąco z uaktualnieniami niż nasi.

KK: Jakie są obecnie, Twoim zdaniem, największe zagrożenia dla bezpieczeństwa systemów operacyjnych? Wirusy, trojany, błędy w oprogramowaniu czy może spam? Czy jesteś w stanie wytypować największą lukę w bezpieczeństwie 2003 roku?

AP: To, co uważa się za największe zagrożenie, zależy od systemu operacyjnego, jego zakładanego wykorzysta-nia, jego faktycznego wykorzystania, miejsca użytkowania i osoby, która to robi. Każda z wymienionych przez ciebie rzeczy może nim być. Dla Owla i jego użytkowników, np. administratorów, są to tylko błędy w oprogramowaniu,a i to głównie w tym zewnętrznym, instalowanym dodat-kowo w Owlu.

Nie wydaje mi się, aby była jedna największa luka bez-pieczeństwa 2003 roku, chociaż ilość przesyłanej poczty elektronicznej wciąż rośnie, w tym niechcianej, a to jest coraz bardziej drażniące.

KK: Czy jest sens porównywać bezpieczeństwo Linuksa z Windows, a jeśli tak, jak to wygląda?

AP: Jest, szczególnie w przypadku systemów biurko-wych, gdzie mogą istnieć słuszne powody wybrania Win-dowsa. Na systemach serwerowych zbyt rzadko jest powód, aby wybrać Windowsa.

Standardowa konfiguracja wielu dystrybucji Linuksa może wyglądać podobnie do konfiguracji Windowsa nasta-wionej na bezpieczeństwo, z trzema wyjątkami: na Linuk-sie jest lepsza separacja pomiędzy kontem użytkownika a administratora; pomiędzy poszczególnymi systemami linuksowymi istnieje większa różnorodność, co utrudnia rozprzestrzenianie się robaków i wirusów; liczba takich robaków i wirusów jest mniejsza, a ich „jakość” słabsza.

KK: To byłoby zatem wszystko. Bardzo dziękuję za poświęcony czas.

AP: Dziękuję za możliwość przedstawienia naszej pracy.

Rysunek 3. Solar Designer (Alexander Peslyak) i Nergal (Rafał

Wojtczuk) podczas prezentacji Owla

Page 31: Linux+_2004 01_PL

1 2 3 4 5 6 7 8 9 10 11 12

1999

2000

2001

2002

2003

Numery archiwalne

Prosimy o przesłanie kuponu pocztą lub faksem.Prosimy w odpowiednim polu zakreślić numery, które Państwo chcą zamówić.

białe pola – 15 zł za egzemplarz żółte pola – 24 zł za egzemplarz

– rocznik 1999 ( 8 numerów) – 80 zł

– rocznik 2000 (12 numerów) – 120 zł

– rocznik 2001 (12 numerów) – 120 zł

– rocznik 2002 (12 numerów) – 150 zł

– rocznik 2003 (12 numerów) – 150 zł

Imię i nazwisko, nazwa firmy ......................................................................

Dokładny adres: ........................................................................................

..................................................................................................................

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

L+ 0

1/2

00

4

Linux+ 01/2003 Linux+ 02/2003 Linux+ 03/2003 Linux+ 04/2003

Linux+ 05/2003 Linux+ 06/2003

Linux+ 09/2003

Linux+ 07/2003 Linux+ 08/2003

Linux+ 10/2003

Linux+ 11/2003 Linux+ 12/2003

Page 32: Linux+_2004 01_PL

styczeń 200430

bezpieczeństwo

Loop-AES – szyfrowane systemy plikówSkarbimir Kwiatkowski

Każdy, kto uzyska nieautoryzowany dostęp do komputera, zwłaszcza fizyczny, jest w stanie poznać wszystkie tajemnice powierzone jego dyskom twardym. Jak wobec tego zabezpie-

czyć się przed ujawnieniem poufnych danych firmy lub prywatnych sekretów, np. w przypadku kradzieży notebo-oka albo gdy dostęp do komputera mają osoby trzecie? Jest na to rada.

Linux oferuje wiele mechanizmów ochrony danych opartych na silnej kryptografii. Otwartość źródeł stanowi gwarancję, że nikt nie zostawił w nich otwartej tylnej furtki. To ważna zaleta. Nie bez znaczenia jest też możliwość dostosowania konfiguracji do potrzeb użytkownika w stop-niu znacznie większym niż w przypadku – często niezbyt elastycznych – produktów komercyjnych.

W dalszej części artykułu przedstawię kilka modelo-wych rozwiązań opartych na jednym z najwygodniejszych narzędzi kryptograficznych w Linuksie – module jądra Loop-AES z wbudowaną obsługą szyfrowania. W odróżnieniu od takich programów, jak gpg, mcrypt lub ccat, nadających się do szyfrowania pojedynczych plików lub archiwów, Loop-AES pozwala na wygodne szyfrowanie dużych porcji danych, np. całych partycji (zarówno podstawowych, jak i logicznych) lub systemów plików utworzonych w zwy-kłych plikach o niemal dowolnej wielkości. Dostęp do nich uzyskujemy po wymagającym autoryzacji montowaniu za pośrednictwem urządzenia loop. Do innych użytecznych zastosowań modułu Loop-AES należą szyfrowanie partycji wymiany (swap) oraz korzystanie z zabezpieczonych kryp-tograficznie płyt CD.

Niewątpliwym atutem tego modułu jest stosunkowo duża elastyczność i przenośność. Możemy go użyć w sys-temach z jądrem z serii 2.0, 2.2, 2.4 oraz – choć czasami nie bez kłopotów – 2.6. Nie ma przy tym znaczenia, czy korzystamy z jądra dystybucyjnego czy samodzielnie zbu-dowanego. Loop-AES nie wymaga także nakładania łat na źródła jądra. Gdy obsługa urządzenia blokowego loopback nie została wkompilowana w jądro lub sterownik tego urzą-

dzenia został umieszczony w module, obejdzie się nawet bez jego rekonfiguracji i rekompilacji.

Praca z szyfrowanym systemem plikówZ punktu widzenia użytkownika, praca z zaszyfrowanym systemem plików – jeśli pominąć czynności związane z jego przygotowaniem i montowaniem – nie różni się niczym od pracy na zwykłej, niezabezpieczonej partycji. Proces szyfro-wania danych jest "przezroczysty", odbywa się na poziomie jądra i nie wymaga wykonywania dodatkowych czynno-ści czy stosowania specjalnych narzędzi. Możemy więc tworzyć lub usuwać katalogi i pliki przy użyciu zwykłych poleceń systemowych (touch, mkdir, rm itp.), zapisywać w nich dowolne dane, przenosić je z innych, niezaszyfrowa-nych partycji za pomocą standarowego polecenia cp albo między panelami ulubionego menedżera plików. Dopiero próba "podejrzenia" zawartości zabezpieczonej partycji po odmontowaniu uświadomi nam, że wszystko to, co na niej zapisaliśmy, prezentuje się jako zupełnie nieczytelny gąszcz przypadkowych znaków.

O autorze:Autor pracuje w Zakładzie Logiki i Semiotyki Uniwersytetu Mikołaja Kopernika w Toruniu. Od kilku lat wykorzystuje Linuksa, FreeBSD i Solaris w działalności zawodowej i poza-zawodowej. Kontakt z autorem: [email protected].

Rysunek 1. Strona NIST poświęcona AES

Page 33: Linux+_2004 01_PL

31www.linux.com.pl

loop-aes

Co i jak szyfrować?Zanim wybierzemy konkretny model zastosowania Loop-AES, warto zastanowić się – biorąc pod uwagę różne istotne okoliczności – nad szczegółami rozwiązania. Jakie dane naprawdę potrzebują ochrony? Czy posiadamy wolną część dysku, którą możemy przeznaczyć na party-cję szyfrowaną, czy raczej zależy nam na zabezpieczeniu partycji już istniejących i wykorzystywanych? Czy chcemy mieć możliwość łatwego usuwania lub przenoszenia całości zaszyfrowanych danych, np. na płytach CD? Czy korzystamy z tej maszyny sami, czy wspólnie z innymi? Ile spośród tych osób ma mieć dostęp do wrażliwych danych? Czy wygodniej i bezpieczniej będzie podzielić je na części dostępne z osobna dla każdego uprawnione-go, czy może użyć wspólnej partycji chronionej hasłem dostępu albo kluczami GnuPG ? Czy potrzebujemy szyfro-wanej partycji wymiany?

Ochrona prywatności lub tajemnic firmy jest ważna, ale starajmy się nie popadać w paranoję. Uczestnicy grup dyskusyjnych czasem pytają: “czy mogę zaszyfrować całe drzewo katalogów?”. Oczywiście można to zrobić, pyta-

nie tylko, czy rzeczywiście warto. Poufne dane zajmują na ogół tylko pewną część dysku, reszta to m.in. powszech-nie używane programy, których źródła są publicznie dostępne. Szyfrując wszystko bez wyboru, najprawdopo-dobniej zużyjemy niepotrzebnie część mocy obliczenio-wej maszyny i przysporzymy sobie kłopotów związanych z rekompilacją jądra, modyfikacją trybu uruchamiania systemu itp. Z tego powodu odradzam ten pomysł. Uparci eksperymentatorzy znajdą precyzyjną instrukcję w doku-mentacji modułu Loop-AES.

Przygotowanie narzędziPrzed rozpoczęciem pracy z szyfrowanymi systemami plików, musimy zaopatrzyć się w pliki źródłowe, które posłużą do zbudowania niezbędnych binariów:

• źródła modułu Loop-AES (loop-AES-latest.tar.bz2); Warto również zaopatrzyć się w Ciphers (ciphers-

latest.tar.bz2), zawierające źródła dodatkowych modu-łów kryptograficznych, współpracujących z Loop-AES (loop_serpent.o, loop_twofish.o i loop_blowfish.o), oraz źródła pomocniczego narzędzia Aespipe (aespi-pe-latest.tar.bz2), służącego do szyfrowania danych w potoku (pipe). Ten ostatni program przyda się nam, gdy będziemy chcieli zaszyfrować już istniejącą i wykorzystywaną partycję, na której przechowujemy pliki wymagające ochrony. Aespipe i Ciphers stanowią część tego samego projektu Loop-AES.

• źródła zestawu narzędzi Util-linux (util-linux-2.12pre.tar.bz2);

Programy mount, umount, losetup, swapon, swapoff muszą mieć zaimplementowaną obsługę kryptograficz-ną, więc użyjemy odpowiednio połatanej wersji.

• źródła jądra lub co najmniej jego pliki nagłówkowe (w wielu dystrybucjach dostępne w osobnych pakietach), pliki nagłówkowe biblioteki glibc oraz kompilator języka C (gcc).

AES

Moduł Loop-AES, autorstwa Fina Jariego Ruusu, implementuje symetryczny szyfr blokowy Rijndael, który w 2000 r. został wyłoniony w konkursie ogłoszonym przez National Institute of Standards and Technology (NIST) jako nowy standard zaawan-sowanej kryptografii. Z tego powodu Rijndael zwany jest najczę-ściej po prostu AES (Advanced Encryption Standard).

Zwycięzca konkursu zastąpił wysłużony, zbyt powolny i nie dość bezpieczny algorytm DES. Oprócz kryteriów tech-nicznych, AES musiał spełnić warunki publicznej dostępności specyfikacji, braku ograniczeń natury patentowo-licencyjnej oraz zapewnić wysoką wydajność. W finałowej piątce, prócz opracowanego przez Belgów Joana Daemena i Vincenta Rijme-na algorytmu Rijndael, znalazły się również algorytmy Serpent i Twofish, stosowane w dodatkowych modułach z projektu Loop-AES.

Algorytm AES użyty w module loop przetwarza niezaszyfro-wany tekst na tekst zaszyfrowany o tej samej długości. Dane szyfrowane są 128-, 192- lub 256-bitowym kluczem w 128-bitowych blokach, co zapewnia bardzo silne rozproszenie, a tym samym skuteczną ochronę przed rozszyfrowaniem (Ry-sunek 2). Szyfrowanie bloków odbywa się w trybie CBC (Cipher Block Chaining ), a jako klucz służy skrót hasła podanego przez użytkownika, obliczany funkcją skrótu SHA-256, SHA-384 lub SHA-512.

Jak dotąd, nie są znane przypadki złamania AES. Atak „siłowy”, polegający na sprawdzaniu wszystkich kluczy, jest przy obecnych mocach obliczeniowych komputerów nieefek-tywny, a możliwość ataku algebraicznego – dającego szansę otrzymania rezultatów w rozsądnym czasie – stanowi w tej chwili zaledwie przedmiot kontrowersji wśród specjalistów.

Zainteresowanym szczegółami polecam stronę domową projektu Rijndael, a także stronę NIST, poświęconą tematyce AES.

Rysunek 2. Schemat działania algorytmu AES

Page 34: Linux+_2004 01_PL

styczeń 200432

bezpieczeństwo

Przede wszystkim powinniśmy sprawdzić, czy używane jądro systemu spełnia wspomniany wcześniej warunek, t.j. nie posiada statycznie wkompilowanego urządzenia loop. Jeśli konfigurowaliśmy je i kompilowaliśmy wcześniej, wystarczy zajrzeć do pliku .config w katalogu ze źródłami. Standardowe wersje jądra domyślnie nie włączają obsługi loopback.

Jeżeli używamy jądra z dystrybucyjnego pakietu, możemy poszukać jego konfiguracji (np. Debian umieszcza stosowny plik z numerem jądra w katalogu /boot) albo po prostu spróbować załadować moduł loop i/lub zamontować obraz dowolnej płyty CD z danymi.

Gdy wykonamy polecenie grep CONFIG_BLK_DEV_LOOP

/usr/src/linux/.config, odpowiedź "CONFIG_BLK_DEV_LOOP is not set " oznacza, że możemy od razu zająć się utworzeniem nowego modułu.

Gdy w konfiguracji znajdziemy "CONFIG_BLK_DEV_LOOP=y", to niestety będzie potrzebne nowe jądro syste-mu. Po wydaniu polecenia make menuconfig, w katalogu zawierającym źródła, w sekcji "Block devices" wyłączamy opcję "Loopback device support ". W sekcji "Loadable module support " zaznaczamy "Enable loadable module support ", a dla wygody, choć nie jest to konieczne, "Kernel module loader " ("CONFIG_KMOD=y").

W przypadku, gdy jądro zostało wyposażone w ładowal-ny moduł loop ("CONFIG_BLK_DEV_LOOP=m"), a z jakichś powodów nie chcemy budować nowego jądra, możemy spróbować obejść kłopot w mało elegancki, lecz skuteczny sposób. Usuwamy lub kopiujemy w bezpieczne miejsce istniejący moduł /lib/modules/`uname -r̀ /kernel/drivers/

block/loop.o, a następnie wydajemy polecenie depmod -a. Powinno to umożliwić instalację Loop-AES.

Czas zbudować moduł. O ile pliki nagłówkowe jądra są zlokalizowane w typowym miejscu (/lib/modules/`uname -r̀ /build, /usr/src/linux, /usr/src/linux-`uname -r̀ lub /usr/src/kernel-source `uname -r̀ ), to po rozpa-kowaniu archiwum wystarczy ograniczyć się do wyko-nania polecenia make i zaktualizowania listy dostępnych modułów:

tar jxvf loop-AES-latest.tar.bz2

cd loop-AES-v1.7e

su

make && depmod -a

Jeśli lokalizacja źródeł jest inna, to komenda make wymaga podania ścieżki do odpowiedniego katalogu: make

LINUX_SOURCE=/sciezka/do/katalogu/ze/zrodlami/jadra. W katalogu /lib/modules/`uname -r̀ znajdziemy teraz nowy podkatalog block, a w nim nowy plik loop.o.

Aby dodać moduły loop_serpent.o, loop_blowfish.o i loop_twofish.o, w analogiczny sposób postępujemy z archiwum ciphers-latest.tar.bz2. Zyskamy w ten sposób dodatkowe silne algorytmy Serpent, Blowfish i Twofish. Każdy z nich może być używany z kluczem 128-, 192- i 256-bitowym, a ponadto ostatni występuje również w postaci Twofish160.

Teraz przystępujemy do przygotowania narzędzi, które pozwolą nam w pełni korzystać z nowego modułu (lub modułów). Będziemy potrzebowali zmodyfikowanych pro-gramów mount, umount i losetup, a także – jeśli planujemy używać szyfrowanej partycji wymiany – swapon i swapoff. Odpowiednia łata dołączona jest do archiwum loop-AES-latest.tar.bz2. W naszym przypadku jest to plik util-linux2.12pre.diff. Przed instalacją warto zadbać o kopie zapasowe. Możemy również, jeżeli np. zamierzamy ograni-czyć się jedynie do testów, umieścić zbudowane programy w innym katalogu. Pamiętajmy jednak, że skrypty startowe systemu, o ile ich nie zmodyfikujemy, będą korzystały ze starych wersji. Typową procedurę kompilacji i instalacji potrzebnych narzędzi przedstawia Listing 1.

Szyfrowanie partycjiWreszcie nadeszła pora, aby wypróbować przygotowa-ne oprogramowanie! Na początek przedstawię przykład najbardziej oczywisty, a przy tym prosty. Wolną partycję chcemy przeznaczyć na szyfrowane dane. Przyjmuję, że partycja została już wcześniej założona, np. fdiskiem.

W pierwszym kroku przyłączamy partycję do urzą-dzenia loop. Za pomocą flagi -e określamy szyfr (zamiast AES256 może to być np. AES128 czy AES192, a jeśli zbu-dowaliśmy moduły z Ciphers, także np. serpent128 czy twofish256 ). Nie musimy własnoręcznie ładować modułu loop, gdyż zadba o to jądro systemu, o ile podczas kon-figuracji zaznaczyliśmy "CONFIG_KMOD=y ". Natomiast

Rysunek 3. Strona domowa projektu Loop-AES na serwerze

SourceForge

Page 35: Linux+_2004 01_PL

33www.linux.com.pl

loop-aes

moduły loop_serpent czy loop_twofish powinniśmy w razie potrzeby załadować poleceniem modprobe lub insmod. Flaga -T informuje program, że ma dwukrotnie pytać o hasło. Polecenie wygląda więc tak:

losetup -e AES256 -T /dev/loopX /dev/hdaN

Tu i w dalszej części artykułu X oznacza numer urządzenia loop, a N – numer partycji. Osoby używające devfs powinny

odpowiednio dostosować polecenia, wpisując /dev/loop/0, /dev/loop/7 itp. Dodajmy, że domyślna liczba urządzeń loop w systemie wynosi osiem. W razie potrzeby możemy zwiększyć ją za pomocą mknod nawet do 256.

Program losetup nie pozwoli na użycie hasła krótszego niż dwadzieścia znaków. To dużo, ale wybierzmy je sta-rannie, tak aby maksymalnie utrudnić ewentualny atak słownikowy.

Zakładamy na partycji system plików ext2 (z pewnymi ograniczeniami może to być również system plików z księ-gowaniem, np. ext3; w sprawie szczegółów odsyłam do dokumentacji). Zwróćmy uwagę, że w tej operacji pośred-niczy loop, dlatego jako argument polecenia podajemy /dev/loopX. Jeśli wszystko przebiegło poprawnie, odłącza-my urządzenie i zakładamy katalog, który posłuży nam do montowania partycji. Opisane polecenia wyglądają tak:

mkfs -t ext2 /dev/loopX

losetup -d /dev/loopX

mkdir /mnt/crypto

Możemy teraz zamontować partycję:

mount -t ext2 /dev/hdaN /mnt/crypto S

-o loop=/dev/loopX,encryption=AES256

Zamiast loop=/dev/loopX wystarczy podać po prostu loop. System sam wybierze wolne urządzenie. Polecenie mount bez opcji powinno nam teraz pokazać m.in. coś takiego:

/dev/hda7 on /mnt/crypto type ext2 S

(rw,loop=/dev/loop0,encryption=AES256)

Jeśli wolimy oszczędzić sobie wpisywania za każdym razem długiej komendy, powinniśmy dopisać do /etc/fstab :

/dev/hdaN /mnt/crypto ext2 defaults,noauto, S

loop=/dev/loopX,encryption=AES256 0 0

Listing 1. Kompilacja i instalacja narzędzi z Util-linux

$ tar jxvf util-linux-2.12pre.tar.bz2

$ cd util-linux-2.12pre

$ patch -p1 <../loop-AES-v1.7e/util-linux-2.12pre.diff

$ CFLAGS=-O2 ./configure

$ make SUBDIRS="lib mount"

$ cd mount

$ strip -s mount umount losetup swapon

$ su

# for prog in `which mount umount losetup swapon S

swapoff`

> do echo "Tworzę kopię zapasową $prog.sav"

> cp -p $prog $prog.sav

> done

# install -m 4755 -o root mount umount /bin

# install -m 755 losetup swapon /sbin

# rm -f /sbin/swapoff && ( cd /sbin && ln -s S

swapon swapoff )

# for item in /usr/share/man/man8/{mount,umount,S

losetup,swapon,swapoff}.8.gz \

> /usr/share/man/man5/fstab.5.gz

> do echo "Tworzę kopię zapasową $item"

> mv $item $item.sav

# install -m 644 mount.8 umount.8 losetup.8 swapon.8 \

> swapoff.8 /usr/share/man/man8

# install -m 644 fstab.5 /usr/share/man/man5

# mandb

Rysunek 4. Zabezpieczenie dostępu do klucza AES szyfrem niesymetrycznym przy pomocy GnuPG

Page 36: Linux+_2004 01_PL

styczeń 200434

bezpieczeństwo

Nie potrzeba niczego więcej. To już działa! Choć tego w ogóle nie dostrzegamy, pliki zapisane w katalogu /mnt/crypto są szyfrowane i po odmontowaniu partycji będą nie-dostępne dla niepowołanych oczu.

Gdyby zależało nam na wzmocnieniu ochrony party-cji przed atakiem słownikowym, moglibyśmy dodatkowo użyć losowo wygenerowanego zarodka hasła oraz podać liczbę powtórzeń klucza (flagi -S i -C programu losetup). Zarodek jest dodawany do wpisanego przez administra-tora hasła, zanim zostanie ono potraktowane nieodwra-calną funkcją haszującą (f. skrótu), natomiast na skutek podania po fladze -C liczby N, utworzony skrót hasła szy-frowany jest N tysięcy razy przy użyciu algorytmu AES-256. Zabiegi te są dość skutecznym sposobem znacznego spowolnienia ataku.

Losowy zarodek hasła możemy wybrać używając przy-kładowo takiej kombinacji poleceń:

head -c 15 /dev/urandom | uuencode -m - | S

awk 'NR == 2 {print}

Powinniśmy otrzymać coś w rodzaju: 8bqMfh75PZnMu+wwjy-Vq. Oczywiście za każdym razem ten ciąg będzie inny. Wyj-ściowe polecenie losetup, od którego zaczęliśmy procedurę szyfrowania partycji, wyglądałoby zatem tak:

losetup -e AES256 -T -S 8bqMfh75PZnMu+wwjyVq S

-C 100 /dev/loopX /dev/hdaN

a do fstab wpisalibyśmy w takim przypadku:

/dev/hdaN /mnt/crypto ext2 defaults,noauto, S

loop=/dev/loopX,encryption=AES256,itercountk=100, S

pseed=8bqMfh75PZnMu+wwjyVq 0 0

Plik jak partycjaZdarza się, że cały dysk jest już podzielony na sforma-towane partycje, z których korzystamy, a wygospodaro-wanie wolnej części wymagałoby dużo starań. W takim przypadku nic nie stoi na przeszkodzie, abyśmy utworzy-li zaszyfrowaną strukturę katalogów w zwykłym pliku, który jak wiadomo, w Linuksie może „udawać” urządze-nie blokowe, takie jak partycja na dysku twardym. Roz-wiązanie to ma i tę dobrą stronę, że plik można w razie potrzeby przenieść w inne miejsce na dysku albo nagrać na płytę CD.

Tworzymy zatem plik o wielkości np. 700 MB, a następnie poleceniem losetup podłączamy go do urzą-dzenia loop - dzięki czemu będzie on traktowany jak partycja – i wybieramy hasło. W dalszej kolejności forma-tujemy go, tworząc strukturę systemu plików ext2. Jako źródło, z którego czyta program dd, moglibyśmy wykorzy-stać /dev/zero, ale lepiej użyć /dev/urandom – dd zapisze wtedy cały plik losowo wybranymi znakami, co spowo-duje, że podglądając plik, nie będzie można zorientować się, w którym miejscu zaczynają się i kończą zaszyfrowane dane. Ostatecznie wygląda to tak:

dd if=/dev/urandom of=/jakis_katalog/crypto_file bs=4k S

count=179200

losetup -e AES256 -T /dev/loopX /jakis_katalog/crypto_file

mkfs -t ext2 /dev/loopX

Oczywiście i tu znalazłyby zastosowanie flagi -S i -C pro-gramu losetup (zarodek hasła i liczba iteracji). Pominąłem je, aby nie komplikować przykładów.

Na koniec zakładamy katalog, którego będziemy używać podczas montowania i ewentualnie dodajemy do /etc/fstab odpowiedni wpis:

/jakis_katalog/crypto_file /mnt/crypto ext2 defaults, S

noauto,loop,encryption=AES256 0 0

Jeśli chcemy umożliwić zwykłym użytkownikom (znającym hasło) montowanie szyfrowanego systemu plików, dopisu-jemy ponadto do opcji montowania user. To samo dotyczy poprzedniego przypadku szyfrowanej partycji.

Z kluczem GnuPG na dyskietceDostęp do szyfrowanego systemu plików możemy zabez-pieczyć dodatkowo kluczem GnuPG. Ideę tę przedstawia poglądowo Rysunek 4. Nie ma większego znaczenia, czy

Listing 2. Przykładowy plik /etc/fstab z wpisami

dotyczącymi montowania szyfrowanych systemów plików

# /etc/fstab: statyczna informacja o systemach plików.

# <system plikow><punkt montowania><typ><opcje> <dump>

<pass>

/dev/hda2 / ext3 errors=remount-ro 0 1

# szyfrowany swap

/dev/hda5 none swap sw, S

loop=/dev/loop0,encryption=AES256 0 0

proc /proc proc defaults 0 0

tmpfs /dev/shm tmpfs defaults 0 0

/dev/hda6 /usr ext3 defaults 0 0

/dev/hda7 /home reiserfs defaults 0 0

/dev/hda8 /scratch reiserfs defaults 0 0

/dev/fd0 /floppy auto user,noauto 0 0

/dev/cdrom /cdrom iso9660 ro,user,exec,noauto, S

iocharset=iso8859-2 0 0

/dev/scd1/mnt/cdrw iso9660 ro,user,noauto, S

iocharset=iso8859-2 0 0

# szyfrowane urządzenia

/dev/hda4 /mnt/crypto1 ext2 defaults,noauto, S

loop=/dev/loop1,encryption=AES256, S

gpgkey=/floppy/moj_klucz.gpg,gpghome=/floppy 0 0

/dev/hda9 /mnt/crypto2 ext2 defaults,user, S

noauto,encryption=AES256,loop=/dev/loop2, S

gpgkey=/etc/kluczepub-crypto.gpg 0 0

/home/self/crypto_fs /mnt/crypto3 ext2 defaults, S

noauto,user,loop,encryption=AES256 0 0

Page 37: Linux+_2004 01_PL

35www.linux.com.pl

loop-aes

system plików zostanie utworzony według przedstawio-nej przed chwilą recepty w dużym pliku, czy na fizycznej partycji.

Powinniśmy posłużyć się dyskietką z systemem plików pozwalającym ustalać prawa dostępu, np. ext2. Jeżeli użyje-my dyskietki „dosowej”, gpg będzie zgłaszał błąd.

Zaczynamy od zamontowania dyskietki i generujemy parę kluczy GnuPG, chyba że skorzystamy z już posiada-nych:

mount /dev/fd0 /floppy

gpg --gen-key --homedir /floppy

Połączenie komend head, uuencode i awk pozwoli utworzyć odpowiednio długi, losowy ciąg znaków, który posłuży do szyfrowania systemu plików. Otrzymane w ten sposób hasło zabezpieczamy szyfrem niesymetrycznym przy pomocy gpg i zapisujemy na dyskietce:

head -c 45 /dev/random | uuencode -m - | awk 'NR == 2 S

{print}' | \

gpg --homedir /floppy -e -a -r "Imię Nazwisko" > S

/floppy/moj_klucz.gpg

Do /etc/fstab dopisujemy poniższy wiersz:

/dev/hdaN /mnt/crypto1 ext2 defaults,noauto, S

loop=/dev/loopX,encryption=AES256, S

gpgkey=/floppy/moj_klucz.gpg,gpghome=/floppy 0 0

W przypadku szyfrowania pliku, a nie partycji, pierwszy człon należy zastąpić jego nazwą. Kolejne polecenia są następujące:

losetup -F /dev/loopX

mkfs -t ext2 /dev/loopX

losetup -d /dev/loopX

Flaga -F powoduje, że losetup pobiera opcje z /etc/fstab. Drugą komendą formatujemy urządzenie i po poprawnym zakończeniu tej operacji, resetujemy je.

O ile tylko istnieje docelowy katalog, możemy już zamontować system plików poleceniem mount /mnt/crypto. Oczywiście, każda kolejna próba musi być poprzedzona umieszczeniem dyskietki w napędzie i jej poprawnym zamontowaniem. Należy jej strzec, gdyż zgubienie albo zniszczenie kluczy uniemożliwi raz na zawsze dostęp do zaszyfrowanych plików. Z tego względu rozsądniejsze jest skopiowanie niezbędnych plików na trwalszy niż dyskietka nośnik i odpowiednia modyfikacja ścieżek dostępu w /etc/fstab.

Wielu użytkowników, wiele kluczy GnuPGTeraz zajmiemy się bardziej skomplikowanym rozwiąza-niem. Przygotujemy szyfrowaną partycję (lub plik pełniący

funkcję urządzenia blokowego), do której użytkownicy wskazani przez administratora otrzymają dostęp na pod-stawie pary kluczy GnuPG. Każdy z nich będzie korzystał z własnych kluczy i, co za tym idzie, własnego hasła.

Administrator (root) musi mieć wygenerowaną parę kluczy GnuPG i dysponować kluczami publicznymi użyt-kowników, którym chce przekazać prawo montowania. Sprawdzamy to komendą gpg –list-public-keys. Jeśli na liście brak jest którejś z tych osób, pomocne będzie pole-cenie gpg --import plik_z_kluczem. Prawa odczytu two-rzonych plików najlepiej ograniczyć zmieniając domyślne ustawienia powłoki poleceniem umask 077. Kolejne polece-nia wyglądają następująco:

head -c 45 /dev/random | uuencode -m - | awk 'NR == 2 S {print}' | gpg -e -a -r "Charlie Root" > S

/root/masterkey-crypto.gpg

losetup -e AES256 -K /root/masterkey-crypto.gpg S

/dev/loopX /dev/hdaN

mkfs -t ext2 /dev/loopX

losetup -d /dev/loopX

Co zrobiliśmy? Czytelnik zapewne domyśla się, że pierwsza linia ma na celu otrzymanie losowego ciągu znaków oraz zaszyfrowanie go przy pomocy klucza GnuPG należącego do administratora. Wynik zapisywany jest w pliku /root/masterkey-crypto.gpg. Następnie przyłączamy partycję do urządzenia /dev/loopX. Wybieramy przy tym algorytm szy-frowania AES256, a flaga -K powoduje, że hasło pobierane z pliku masterkey-crypto.gpg jest przekazywane do progra-mu gpg w celu odszyfrowania przed użyciem. Formatujemy partycję i odłączamy ją od urządzenia loopX.

Przechodzimy do /etc/fstab, dopisując:

/dev/hdaN /mnt/crypto2 ext2 defaults,user,noauto, S

encryption=AES256,loop=/dev/loopX, S

gpgkey=/etc/userkey-crypto.gpg 0 0

Na koniec deszyfrujemy hasło i szyfrujemy ponownie, tym razem używając kluczy publicznych wybranych użytkow-ników, a rezultat kierujemy do wymienionego w /etc/fstab pliku userkey-crypto.gpg. Każde z nazwisk podajemy w cudzysłowach następujących po fladze -r.

Dane te muszą zgadzać się z opisem kluczy. Wygląda to tak:

gpg --decrypt < /root/masterkey-crypto.gpg | S

gpg -e -a –always-trust -r "Charlie Root" S

-r "Jas Kowalski" -r "Joanna Malinowska" > S

/etc/userkey-crypto.gpg

Od tej chwili każdy z użytkowników wskazanych przez administratora może montować partycję hdaN korzystając z własnego klucza prywatnego i hasła GnuPG.

Aby zwiększyć bezpieczeństwo, należałoby jeszcze skłonić użytkowników, aby nie przechowywali klucza pry-

Page 38: Linux+_2004 01_PL

styczeń 200436

bezpieczeństwo

watnego GnuPG na dysku tego komputera. W przeciwnym przypadku ochrona będzie na tyle skuteczna, na ile hasła okażą się odporne na atak. Niestety, w znacznym stopniu zmniejsza to funkcjonalność tego rozwiązania.

Co z partycją wymiany?Zagrożenie dla poufności danych i prywatności może także pochodzić ze strony partycji wymiany, na której system tymczasowo zapisuje dane. Jest bowiem prawdo-podobne, że podczas pracy uprawnionego użytkownika, gdy muszą być one dostępne w formie niezaszyfrowanej, system odłoży je na partycji swap. Cały wysiłek włożony w instalację i skrupulatne używanie zabezpieczeń krypto-graficznych może wtedy łatwo pójść na marne, chyba że... zaszyfrujemy także swap.

Moduł Loop-AES pozwala na to, o ile nasz system jest wyposażony w jądro z serii 2.4 lub nowsze. Decydując się na szyfrowanie partycji wymiany powinniśmy pamiętać, że obarczenie systemu, zwłaszcza mocno obciążonego, opera-cjami kryptograficznymi może zmniejszyć jego wydajność.

Najpierw wyłączamy aktywne partycje wymiany pole-ceniem swapoff -a. Następnie modyfikujemy wpisy odno-szące się do partycji wymiany w /etc/fstab :

/dev/hdaN none swap sw,loop=/dev/loopX,encryption=AES128 0 0

Ten prosty zabieg pozwala nam ponownie uaktywnić swap. Robimy to poleceniem swapon -a, które przywracając jego działanie użyje losowego klucza i wykona komendę mkswap na wskazanym urządzeniu loop.

Jeżeli podczas ponownego uruchomienia systemu poja-wią się komunikaty o błędzie podobne do poniższego:

insmod: modprobe: cannot create /var/log/ksymoops/

20031012.log Read-only file system

insmod: /lib/modules/2.4.22-grsec/block/loop.o: cannot

create /var/log/ksymoops/20031012.log Read-only file system

to dzieje się tak dlatego, że system aktywujący partycję wymiany jednocześnie ładuje moduł loop, a modprobe próbuje zapisać informację o tym w logach, choć partycja, na której się znajdują, nie została jeszcze zamontowana do zapisu.

Autor dokumentacji modułu Loop-AES proponuje w celu pozbycia się tego błędu usunąć katalog /var/log/ksymoops. Bez tego katalogu modprobe nie podejmie próby logowania komunikatu o ładowaniu modułu. Bardziej elegancki, choć zapewne trudniejszy w realizacji, wydaje się pomysł mody-fikacji skryptów startowych w taki sposób, aby partycja wymiany była aktywowana nieco później, gdy możliwe już będzie zapisywanie logów.

Istniejąca partycja z danymiNiewykluczone, że w praktyce natkniemy się na dość prozaiczny kłopot: planujemy zaszyfrować partycję,

z której już korzystamy i którą zdążyliśmy zapełnić ważnymi danymi. Jak to zrobić nie tracąc danych? Jeżeli reorganizacja dysku nie wchodzi w grę, a z jakichś powodów nie chcemy jej zastępować dużym plikiem, z pomocą przyjdzie nam program Aespipe, stanowiący niewielki, lecz użyteczny dodatek do Loop-AES (do jego kompilacji wystarczy triada poleceń ./configure ; make ;make install). Jak podpowiada nazwa, Aespipe potrafi szyfrować dane pobierane na wejściu. Pomysł jego wyko-rzystania w tym przypadku polega na odczytaniu zawar-tości partycji za pomocą dd, zaszyfrowaniu "w locie" (to właśnie rola Aespipe) i zapisaniu w tym samym miejscu dysku.

Operacja jest nieco ryzykowna, więc lepiej zawczasu przygotować kopię zapasową całej partycji.

Zaczynamy od jej odmontowania. W kolejnym kroku wpisujemy poniższe polecenie:

dd if=/dev/hdaN bs=64k | aespipe -e AES256 -T | S

dd of=/dev/hdaN bs=64k conv=notrunc

Jak widać, dd odczytuje partycję i przekazuje wyjście do aespipe, którego zadaniem jest zaszyfrowanie tego, co otrzyma przy użyciu wybranego algorytmu. Wynik z kolei wędruje do ponownie uruchomionego dd w celu zapisania na urządzeniu, tym razem już w postaci zaszy-frowanej. Podobnie jak we wcześniejszych przykładach dotyczących losetup, flaga -e pozwala nam wybrać algo-rytm szyfrujący, a -T powoduje, że Aespipe rozpoczynając działanie zapyta dwukrotnie o hasło, którego chcemy użyć.

Rysunek 5. Szyfrowanie istniejącej partycji, na której

przechowujemy już dane

Page 39: Linux+_2004 01_PL

37www.linux.com.pl

loop-aes

Wariant dla ambitnych polega na wzmocnieniu zabez-pieczeń przez użycie zarodka hasła i iterowanym szyfro-waniu skrótu hasła. Wymaga on zastosowania znanych już z programu losetup opcji -S (dodanie wygenerowanego zawczasu zarodka do hasła) oraz -C (liczba wskazująca, ile tysięcy razy szyfrowany jest skrót hasła). Ciąg otrzymany z polecenia (tu: qwSIxpGIi6pZNAvj0e7w):

head -c 15 /dev/urandom | uuencode -m - | awk 'NR == 2 S

{print}'

zostanie użyty w kolejnym kroku jako zarodek hasła:

dd if=/dev/hdaN bs=64k | aespipe -e AES256 -T S

-S qwSIxpGIi6pZNAvj0e7w -C 100 | dd of=/dev/hda2 S

bs=64k conv=notrunc

Po zakończeniu operacji edytujemy opcje montowa-nia w /etc/fstab, dodając do linii dotyczącej tej partycji: noauto,loop=/dev/loopX,encryption=AES256 i ewentualnie itercountk=100,pseed=qwSIxpGIi6pZNAvj0e7w, o ile użyli-śmy drugiego wariantu.

Można również wspomnieć o innym ciekawym zastoso-waniu Aespipe, mianowicie szyfrowaniu płyt CD, a ściślej, obrazów przygotowanych za pomocą Mkisofs. Tworzymy je poleceniem:

mkisofs -V TAJNE -J -r nazwa_katalogu | aespipe S

-e AES256 -T > image.raw

Po nagraniu można zamontować krążek w taki sposób:

mount -t iso9660 /dev/cdrom /cdrom S

-o loop=/dev/loopX,encryption=AES256

Rzecz jasna, dostęp do niego będziemy mieli tylko po podaniu hasła i wyłącznie w systemach wyposażonych w moduł loop-AES.

WydajnośćNa koniec załączę kilka słów na temat wydajności. Nie-wątpliwie, dodatkowe obciążenie komputera operacjami szyfrowania danych „w locie” w mniejszym lub większym stopniu musi wpłynąć na działanie systemu. Trzeba jednak przyznać, że zarówno trafnie wybrany przez autora projektu algorytm szyfrowania, jak i wykorzysta-nie urządzenia loop, dość skutecznie minimalizują narzut czasowy.

Ponadto, jeśli zachowamy umiar, wpływ ten może pozostać niemal niezauważalny. Potwierdzają to doświad-czenia autora. Próby przeprowadzane na maszynach z jednym procesorem Pentium 1 GHz lub Athlon 1700 MHz oraz 512 MB RAM, czyli dość typowych, przy jed-noczesnym wykorzystaniu dwóch szyfrowanych partycji i jednego szyfrowanego pliku o wielkości 1 GB, prowadzą do wniosku, że komfort pracy nie zmniejsza się w istotny

sposób (oczywiście, to tylko subiektywna ocena). Jak się wydaje, najbardziej optymalne z punktu widzenia wydaj-ności jest szyfrowanie fizycznej partycji dysku.

W przypadku komputerów starych i powolnych albo bardzo przeciążonych pozostaje rozważyć użycie opcji lo_nice i lo_prealloc.

Pierwsza z nich, o domyślnej wartości -20, pozwa-la modyfikować priorytet zadań. Można ją zmniejszyćw /etc/modules.conf (np. options loop lo_nice=-5).

Druga opcja odpowiada za liczbę 4-kilobajtowych stron pamięci operacyjnej przeznaczanych dla urządzeń /dev/loopX w chwili montowania. Domyślna wartość wynosi 125. Możemy ją zwiększyć lub zmniejszyć glo-balnie, dopisując do /etc/modules.conf np. options loop lo_prealloc=200. Możemy również zróżnicować wielkość RAM-u prealokowaną przez poszczególne urządzenia:

options loop lo_prealloc=100,3,200,4,250.

Pierwsza liczba oznacza zmniejszoną wartość domyśl-ną, następne pary liczb nadpisują ją, przeznaczając dla loop3 200 stron pamięci, a dla loop4 250 (składnia dopusz-cza co najwyżej cztery takie pary).

Uwagi końcoweStarałem się przedstawić zalety omawianych narzędzi możliwie wszechstronnie. Nie zamykam przy tym oczu na wady loop-AES. Zalicza się do nich zwłaszcza uciążliwość dodatkowych zabiegów związanych z kompilacją i instala-cją niezbędnych binariów, co gorsza, pociągająca za sobą ingerencję w integralność systemu pakietowego. Sądzę jednak, że korzyści warte są podejmowania tego wysiłku. Jeśli Czytelnik nie czuje się w pełni przekonany o pożyt-kach płynących ze stosowania zaawansowanej krypto-grafii, być może samodzielne próby, do których gorąco zachęcam, staną się czynnikiem przesądzającym.

W Sieci:

• Strona projektu loop-AES: http://loop-aes.sourceforge.net/projects/loop-aes/• Strona domowa projektu Rijndael: http://www.esat.kuleuven.ac.be/~rijmen/rijndael/• Strona NIST poświęcona AES: http://csrc.nist.gov/CryptoToolkit/aes/rijndael/• Strona entuzjastów algorytmu Rijndael: http://rijndael.com/• Źródła modułu Loop-AES: http://loop-aes.sourceforge.net/loop-AES-latest.tar.bz2• Źródła dodatkowych modułów: http://loop-aes.sourceforge.net/ciphers-latest.tar.bz2• Źródła Aespipe: http://loop-aes.sourceforge.net/aespipe-latest.tar.bz2• Źródła Util-linux: ftp://ftp.kernel.org/pub/linux/utils/util-linux/util-linux-

2.12pre.tar.bz2

Page 40: Linux+_2004 01_PL

styczeń 200438

bezpieczeństwo

Wzmacniamy jądro:Openwall i GrSecurityMichał Miszewski

Jak wiadomo, za większość mechanizmów bezpie-czeństwa odpowiedzialne jest jądro systemu. Zapew-nia ono prawidłowe działanie procesów, podział uprawnień, przydzielanie pamięci oraz wiele innych

funkcji, istotnych dla bezpiecznego funkcjonowa-nia systemu. Te standardowe mechanizmy bezpieczeń-stwa można ulepszyć przy użyciu wielofunkcyjnych poprawek nakładanych na jądro systemowe. Przedstawię dwie z nich: Openwall oraz bardziej od niego rozbudowa-ny GrSecurity.

Warto zainstalować jedno z opisywanych tu roz-wiązań, ponieważ pozwalają one m.in. na utrudnienie włamywaczowi wykorzystania nowoodkrytego błędu, gdy łatka go poprawiająca nie jest jeszcze dostępna. Przy-kładem może być luka typu przepełnienie bufora (ang. buffer overflow) w ProFTPd 1.2.7. Serwery z zainstalowa-nym GrSecurity lub Openwall nie były wrażliwe na atak wykorzystujący ten błąd.

OpenwallAutorem tej łatki zwiększającej bezpieczeństwo jądra jest Solar Designer, twórca wielu rozwiązań dotyczących bezpieczeństwa, takich jak Owl (dystrybucja Linuksa) czy John the Ripper (znany program do łamania haseł). Początkowo Openwall powstał jako poprawka dla jąder z serii 2.0.x oraz 2.2.x. Od niedawna rozwijana jest także wersja dla jąder z gałęzi 2.4.x. Poprawka wprowadza m.in. zabezpieczenia przed atakami typu przepełnienie bufora, ograniczenia w dostępie do systemu plików /proc oraz katalogów z flagą +t.

InstalacjaInstalację łatki przedstawię na przykładzie jądra 2.4.22. Proces instalacyjny dla każdej innej wersji przebiega ana-logicznie. Najpierw ściągamy „czyste” źródła jądra. Pakie-ty z jądrami dostarczane wraz z dystrybucjami często zawierają dodatkowe zmiany wprowadzone przez progra-mistów zajmujących się daną dystrybucją i mogą wystąpić

(choć nie muszą) problemy integracji z łatką Openwall. Następnie pobieramy pakiet Openwall z oficjalnej strony projektu. W naszym przypadku będzie to plik linux-2.4.22-ow1.tar.gz. Rozpakowujemy archiwa w katalogu /usr/src, wchodzimy do katalogu ze źródłami jądra sys-temowego i instalujemy poprawkę wpisując: patch -p1 < /usr/src/linux-2.4.22-ow1/linux-2.4.22-ow1.diff.

Gdy włączymy konfigurator jądra (make config, make menu config badź make xconfig w środowisku X Window), wśród standardowych sekcji powinno pojawić się dodatko-we menu „Security options”. Znajdują się w nim rozszerze-nia oferowane przez Openwall.

W przypadku, gdy stosujemy poprawkę na serwerze, z którego korzysta wielu użytkowników, zaleca się zazna-czenie wszystkich dodanych opcji. Jeśli chcemy zabezpie-czyć stację roboczą, używaną tylko przez zaufane osoby, wystarczy, że włączymy jedynie Non-executable user stack area. Opcja ta zabezpieczy nas przed ewentualnymi próba-mi wykonania kodu exploita dla programu przyjmującego połączenia z zewnątrz. Pozostałe zabezpieczenia chronią przed atakami lokalnymi, które na stacji roboczej raczej nie będą mieć miejsca. W ten sposób na pewno nie stracimy kompatybilności z używanymi programami i nie nastąpią odczuwalne zmiany w działaniu systemu.

GrSecurityGrSecurity powstało jako przeniesienie poprawki Openwall dla jąder z gałęzi 2.4. Łatka rozwijana jest przez Bradleya Spenglera. Tak jak w przypadku wcześniej omawianego Openwalla, celem GrSecurity jest wprowadzenie dodat-kowych zabezpieczeń jądra systemowego. Do najważniej-szych z nich należą listy kontroli dostępu (Access Control Lists, w skrócie ACL). Pozwalają one m.in. na przydzielanie

O autorze:Autor jest komputerowym hobbystą. Linuksem zajmuje się od 3 lat. Interesuje się programowaniem (C, Perl, PHP) oraz różnymi aspektami bezpieczeństwa systemów komputero-wych. Kontakt z autorem: [email protected].

Rysunek 1. Konfiguracja jądra z Openwall

Page 41: Linux+_2004 01_PL

39www.linux.com.pl

openwall i grsecurity

i blokowanie konkretnym procesom dostępu do różnych zasobów, takich jak pliki czy komputery w sieci. Ponadto, GrSecurity wprowadza dodatkowe restrykcje dla procesów pracujących w środowisku chroot, zabezpieczenia przed modyfikacją pamięci i atakami typu przepełnienie bufora, trudniejsze do odgadnięcia numery sekwencyjne pakietów IP oraz logowanie istotnych operacji.

InstalacjaPodobnie jak w przypadku łatki Openwall, potrzebujemy „czystych” źródeł jądra systemowego i samego pakietu GrSecurity. Po rozpakowaniu źródeł jądra i łatki GrSecuri-ty do katalogu /usr/src, nakładamy poprawkę poleceniem patch -p1 < grsecurity-1.9.12-2.4.22.patch. W menu kon-figuracyjnym jądra powinna pojawić się sekcja GrSecurity, z której możemy wybrać stopień zabezpieczeń (Security level). Wybierając niski (low) poziom bezpieczeństwa, włą-czamy tylko te opcje, które na pewno nie będą powodowa-ły niekompatybilności z nietypowym oprogramowaniem. Stopień średni (medium) znacznie zwiększa bezpieczeń-stwo, zachowując zgodność z większością programów. Wymagane jest, aby inetd pracował z GID 10 (zazwyczaj

grupa wheel). Wybierając wysoki poziom zabezpieczeń (high), włączamy większość opcji, jednak kosztem utraty zgodności z niektórymi programami. Można także wybrać opcję customized i samemu zaznaczyć te funkcje, które uznamy za przydatne.

Jeśli administrujemy serwerem, w którym wielu użyt-kowników ma dostęp do powłoki systemowej, koniecznie zaznaczmy w Filesystem Protections opcję Proc restrictions, Linking restrictions oraz FIFO restrictions. Utrudni to próby przeprowadzania części ataków lokalnych. Z tego samego powodu warto także włączyć opcje Enforce RLIMIT_NPROC on execs, Dmesg restriction oraz Randomized PIDs (sekcja Executable Protections). Jeśli nie chcemy, aby użytkowni-cy włączali własne programy i skrypty, możemy im tego zabronić zaznaczając Trusted path execution. Jeśli posiada-my demony pracujące w chroot jail, powinniśmy rozważyć założenie części lub wszystkich dodatkowych zabezpieczeń chroot-a (Chroot jail restrictions).

Instalując GrSecurity na stacji roboczej, wystarczy, że zaznaczymy Enforce non-executable pages. Tak jak w przypadku Openwall, utrudni to próby wyko-nania exploita dla aplikacji przyjmujących połączenia

Opcje Openwall:

• Non-executable user stack area – niewykonywalny obszar stosu. Jest to zabezpieczenie przed atakami polegającymi na przepełnieniu bufora (ang. buffer overflow). Polegają one na wprowadzeniu do programu nadmiernej ilości danych i nadpisaniu adresu zwrotnego aktualnie działającej funkcji. Prowadzi to do wykonania wprowadzonego kodu z upraw-nieniami posiadanymi przez program, a w konsekwencji do naruszenia bezpieczeństwa systemu. Niewykonywalny stos dodawany przez Openwall uniemożliwia przeprowadzenie większości tego typu ataków. Rozwiązanie to nie zapewnia jednak ochrony przed wykorzystaniem niezabezpieczonych buforów do przerywania pracy aplikacji, więc zaznaczenie tej opcji nie zwalnia administratora z konieczności aktuali-zowania niezabezpieczonych programów – jest to jedynie dodatkowa warstwa zabezpieczeń.

• Restricted links in /tmp – opcja wprowadza dodatkowe zabezpieczenia katalogów z atrybutem +t (sticky bit). Pliki w takich katalogach mogą tworzyć wszyscy użytkownicy, lecz każdy może modyfikować i kasować tylko te pliki, któ-rych jest właścicielem. Typowym katalogiem tego typu jest /tmp. Opisywana opcja nie pozwala na tworzenie w takich katalogach twardych dowiązań do plików, do których nie ma się uprawnień. Użytkownik i tak nie mógłby później skasować takich dowiązań. Istnieją ataki polegające na stworzeniu w katalogu /tmp dowiązania do pliku istotne-go z punktu widzenia bezpieczeństwa (np. /etc/passwd) i nadaniu mu odpowiedniej nazwy. Przewidując nazwę pliku tymczasowego tworzonego przez proces z SUID-em, włamy-wacz jest w stanie spowodować nadpisanie pliku, na który wskazuje takie dowiązanie.

• Restricted FIFOs in /tmp – opcja wprowadza dodatkowe restrykcje dotyczące kolejek FIFO w katalogach z atrybutem

+t. Po jej zaznaczeniu użytkownik będzie mógł zapisywać dane tylko do tych kolejek, których jest właścicielem.

• Restricted /proc – ograniczenie dostępu do systemu plików /proc. Po zaznaczeniu tej opcji, użytkownicy inni niż root będą mogli zobaczyć jedynie listę własnych procesów. Nie będą mieć także dostępu do listy połączeń sieciowych (netstat). Dodatkowo opcja ta uniemożliwia korzystanie z polecenia dmesg.

• Enforce RLIMIT_NPROC on execve(2) – jądro umożliwia ustalenie limitu ilości procesów dla użytkownika poprzez wywołanie funkcji setrlimit(). Niestety limit ten jest spraw-dzany tylko podczas wywoływania przez procesy funkcji fork(). Jeśli proces zmieni swój UID, możliwe jest przekro-czenie ustalonego wcześniej limitu. Nie stanowi to dużego zagrożenia, ponieważ UID mogą zmieniać tylko procesy uprzywilejowane, ale ma to znaczenie w przypadku progra-mów SUID/SGID, które po wykonaniu uprzywilejowanych operacji zmieniają swój UID na UID użytkownika. Funkcja fork() jest w nich zazwyczaj wywoływana przed zmianą UID, co pozwala na ominięcie ograniczenia. Zaznaczenie tej opcji zapobiega takim sytuacjom.

• Destroy shared memory segments not in use – usuwanie nie używanych fragmentów pamięci dzielonej. Jądro pozwa-la na ustalenie limitu pamięci wykorzystywanej przez jeden proces, ale segmenty pamięci dzielonej mogą istnieć bez przypisanego procesu, co nie zalicza ich do tego limitu. Po wkompilowaniu tej opcji, jądro będzie usuwało segmenty pamięci dzielonej, gdy korzystające z nich procesy zakoń-czą działanie. Zabezpieczy to system przed możliwością zapełnienia całej wolnej pamięci.

Page 42: Linux+_2004 01_PL

styczeń 200440

bezpieczeństwo

z zewnątrz. Nie zaszkodzi wkompilować także części zabezpieczeń z sekcji Network protections, takich jak w pełni losowe początkowe numery sekwencyjne pakie-tów oraz Larger entropy pools, co polepszy jakość liczb losowych używanych m.in. w kryptografii. Nie warto natomiast instalować zabezpieczeń, przez które część popularnych programów przestanie działać. Przykładem jest opcja Disable privileged I/O – uniemożliwia ona uru-chomienie serwera X Window.

KompilacjaPo nałożeniu na jądro jednej z łatek, należy skompilować jądro. Proces ten przeprowadzamy w standardowy sposób, wspólny dla każdej z dystrybucji Linuksa. Udajemy się więc do katalogu /usr/src/katalog_ze_źródłami_jądra/ i wyko-nujemy polecenia: make dep, make clean, make bzImage, make modules, make modules_install. Pozostaje jeszcze wydać polecenie depmod -a, które utworzy plik modules.dep dla skompilowanych modułów. Jeśli wszystko poszło po naszej myśli, w katalogu /usr/src/katalog_ze_źródłami_jądra/arch/i386/boot/ otrzymamy plik bzImage, który jest naszym właśnie skompilowanym jądrem systemowym. Jeśli

nie chcemy ryzykować unieruchomienia systemu, nowy plik z jądrem nagrywamy do katalogu /boot zmieniając jego nazwę np. na bezpieczne. W tym celu wpisujemy: cp /usr/src/katalog_ze_źródłami_jądra/arch/i386/boot/

bzImge /boot/bezpieczne. Musimy jeszcze tylko dodać opcję wyboru naszego bezpiecznego jądra w ustawieniach menedżera uruchamiania. Edytujemy w tym celu plik /etc/grub.conf dodając linijki:

• title Bezpieczny – nazwa naszego nowego jądra;• root (hd0,1) – miejsce na dysku, gdzie znajduje się

instalacja naszego Linuksa;• kernel /boot/bezpieczny ro root=LABEL=/ hdc=ide-scsi

– ścieżka do naszego jądra;• initrd /boot/initrd-bezpieczny.img – ścieżka do pliku

initrd.

Po ponownym uruchomieniu komputera, przy opcjach wyboru systemu powinna pojawić się nowa opcja. Po jej wybraniu będziemy mogli cieszyć się nowym jądrem.

PodsumowanieOsobom chcącym dodatkowo zabezpieczyć swoją stację roboczą z powodzeniem powinna wystarczyć łatka Open-wall. Jest łatwa w konfiguracji i z jej instalacją powinien poradzić sobie każdy, kto potrafi skompilować jądro syste-mowe. Bardziej zaawansowani użytkownicy oraz admini-stratorzy większych serwerów powinni wybrać GrSecurity.

Łatki GrSecurity i Openwall pozwalają znaczenie ulepszyć mechanizmy zabezpieczeń w jądrze systemo-wym. Ich możliwości powinien poznać każdy admini-strator, który poważnie traktuje sprawy bezpieczeństwa swojego systemu.

Wybrane opcje GrSecurity:

• Address Space Protection – sekcja ta zawiera opcje utrud-niające przeprowadzanie ataków typu przepełnienie bufora oraz modyfikowanie pracującego jądra systemowego (za-bezpieczenia te polegają między innymi na wprowadzeniu niewykonywalnych stron pamięci oraz losowym położeniu stosu);

• ACL options – opcje konfiguracyjne list kontroli dostępu;• Filesystem Protections – opcje dotyczące ograniczeń

dostępu do /proc, tworzenia dowiązań i kolejek FIFO w katalogach z flagą +t oraz dodatkowych zabezpieczeń chroot;

• Kernel Auditing – opcje dotyczące logowania różnych zda-rzeń w systemie, takich jak próby przekroczenia limitów, zmiany katalogów, nazwy uruchamianych procesów itp.;

• Executable Protections – opcje związane z procesami, takie jak losowe numery PID, blokada dostępu do dmesg oraz restrykcje w uruchamianiu plików wykonywalnych;

• Network Protections – dodatkowe zabezpieczenia TCP/IP, takie jak losowe porty źródłowe przy połączeniach, lepszy algorytm wybierania początkowego numeru sekwencyj-nego pakietów IP czy ograniczenie praw do tworzenia gniazdek dla niektórych użytkowników;

• Sysctl support – po zaznaczeniu tej opcji administrator może konfigurować GrSecurity umieszczając wartości „1” lub „0” w specjalnych plikach w /proc/sys/kernel/grsecurity/. Po wprowadzeniu zmian, trzeba je zablokować umieszczając wartość „1” w pliku grsec_lock. Linie kon-figurujące GrSecurity muszą znajdować się w skryptach startowych systemu. Skrypty te powinny być dostępne tylko do odczytu, a root nie może mieć możliwości doda-wania modułów jądra oraz przeprowadzania bezpośred-nich operacji I/O.

W Sieci:

• Strona domowa projektu GrSecurity: http://www.grsecurity.org/• Strona projektu Openwall: http://www.openwall.com/linux/• Strona systemu Linux: http://www.kernel.org/

Rysunek 2. Konfiguracja jądra z GrSecurity

Page 43: Linux+_2004 01_PL
Page 44: Linux+_2004 01_PL

styczeń 200442

testy

SuSE Linux 9.0 ProfessionalPiotr Truszkowski

SuSE Linux jest jedną z najpopularniejszych komercyjnych wersji systemu Linux na świecie. Przemawia za nią ogromna ilość dołączonego oprogramowania, dobrej jakości pomoc tech-

niczna oraz uznanie, jakim cieszy się wśród użytkow-ników.

Do testów otrzymaliśmy najnowszą, oznaczoną numer-kiem 9.0, wersję tego systemu, wyposażoną w ponad 4000 pakietów dostępnych na pięciu dystrybucyjnych płytach CD bądź zebranych na jednym, dwustronnym krążku DVD. W pudełku znajdziemy również 2 grube podręczniki w języku angielskim. Obok wersji Professional, dostępne są także Personal i Update, które różnią się ilością dołączone-go oprogramowania i podręczników.

InstalacjaWspółczesne dystrybucje Linuksa w znacznej większości przyzwyczaiły nas do prostej instalacji. Nie inaczej jest w SuSE. Instalacja ogranicza się do kilku kliknięć myszką, co pozwoli początkującemu użytkownikowi na proste i szybkie zainstalowanie systemu. Dla bardziej zaawan-sowanych użytkowników, firma SuSE przygotowała wiele opcji, które pozwolą w najdrobniejszych detalach dopaso-wać system do swoich potrzeb. Całość instalacji przebiega w estetycznym środowisku graficznym. Dla posiadaczy słabszych komputerów przygotowano również tryb tek-stowy. Niestety, w trybie graficznym brak jest obsługi języka polskiego. Miejmy nadzieję, że w przyszłej wersji SuSE ulegnie to zmianie.

Pierwsze uruchomienieTest systemu przeprowadzono na komputerze AMD Athlon 1200 z 384 MB RAM, kartą graficzną opartą na chipie Nvidia GeForce2 i kartą dźwiękową Sound Blaster Live! 5.1 Digital. System bez problemu wykrył wszystkie urządzenia i poprawnie je skonfigurował. Właścicieli kart graficznych opartych o chipsety Nvidia z pewnością ucieszy fakt, iż firma SuSE przygotowała dla nich pakiet RPM ze sterownikami. Można go w bardzo prosty sposób pobrać dzięki programowi YOU (YaST Online Update). Po zalogowaniu do systemu, powita nas środowisko graficz-ne KDE 3.1.4, które od lat jest w SuSE standardowym śro-dowiskiem pracy, najlepiej zintegrowanym z narzędziami administracyjnymi producenta dystrybucji. Bez cienia wątpliwości mogę powiedzieć, że pod względem este-tycznym, domyślny pulpit SuSE prezentuje się najlepiej ze wszystkich znanych mi dystrybucji Linuksa.

YaSTNarzędziem administracyjnym w systemie SuSE Linux jest program YaST. Pomoże on nam w konfiguracji wszystkich, nawet najdrobniejszych ustawień dotyczących naszego systemu. Dzięki modularnej budowie, możemy wyposa-żyć YaST-a tylko w te moduły, które są nam naprawdę potrzebne. Narzędzie administracyjne SuSE wyposażone zostało m.in. w moduły do konfiguracji sprzętu, instalacji/usuwania/aktualizacji oprogramowania, konfiguracji środo-wiska X Window oraz zarządzania popularnymi serwerami (m.in. Apache i Samba). YaST może pracować zarówno w trybie graficznym, jak i tekstowym. Ten drugi z pewnością

Rysunek 1. SuSE Linux 9.0 Professional

Podstawowe składniki SuSE Linux 9.0:

• Jądro 2.4.21;• KDE 3.1.4 i GNOME 2.2.2;• Samba 2.2.8a;• nowe moduły programu YaST: DNS, DHCP, TFTP, Apache,

Samba;• wsparcie dla Ipv6;• GCC 3.3.1;• Sun Java 1.4.1;• Glibc 2.3.2;• Apache 2.0.47;• RPM 4.1.1;

Page 45: Linux+_2004 01_PL

43www.linux.com.pl

suse linux 9.0 professional

przyda się przy zdalnej administracji systemem. Całość spra-wia wrażenie bardzo spójnej i przemyślanej konstrukcji.

Szybkość, stabilność, innowacjeSuSE zawsze należało do czołówki pod względem szybkości, stabilności i innowacji. Wszystkie pakiety dostępne w sys-temie zostały zoptymalizowane dla procesorów Pentium. Nie uruchomimy więc tej wersji na komputerach klasy 386 i 486. SuSE przygotowało dwie wersje jądra 2.4.21, instalu-jące się w zależności od posiadanego przez nas procesora – mamy wersję zoptymalizowaną zarówno dla procesorów firmy AMD, jak i Intel. Zaaplikowano w nich także wiele

innowacji dostępnych w zbliżającym się jądrze 2.6. Cechą wyróżniającą SuSE 9.0 Professional od innych dystrybucji jest fakt, iż jądra dystrybucyjne przystosowane są zarówno do pracy z procesorami 32 bitowymi, jak i 64 bitowymi, produkowanymi przez firmę AMD.

Ciekawą rzeczą jest dostępny w systemie SuSE System Doctor. Jego funkcja polega na naprawie uszkodzonego na różne sposoby systemu. Postanowiłem na własnej skórze przekonać się o skuteczności jego działania. W tym celu skasowałem plik fstab, zawierający definicje dostępnych systemów plików, pozbyłem się wpisów GRUB-a obecnych w sektorze MBR, wykasowałem połowę plików systemo-wych oraz zepsułem ustawienia środowiska X Window, kasując po drodze kilkanaście pakietów nie zwracając uwagi na obecne miedzy nimi zależności. Zrestartowa-łem system. SuSE System Doctor obecny jest na pierwszej płytce CD. Aby go uruchomić, należy wystartować kom-puter z owej płytki i z opcji instalacyjnych wybrać „Repair system”. Do wyboru będziemy mieli kilkanaście opcji, m.in. sprawdzenie wpisów w pliku fstab, punkty montowania partycji, sprawdzenie ustawień menedżera uruchamiania, analizę bazy pakietów oraz wiele innych. Wybrałem wszyst-kie testy. W trakcie naprawy program zadał mi kilka pytań, na które odpowiedziałem klikając „Accept” bądź „Repair”. Po zakończeniu naprawy mój system działał tak samo, jak przed jego zepsuciem, a ja nie straciłem żadnych danych. Za to narzędzie firmie SuSE należy się ogromny plus. Jest ono niesamowitym ułatwieniem dla początkujących i zaawanso-wanych użytkowników, którzy nie mają czasu zastanawiać się nad tym, co się zepsuło, a chcą to po prostu naprawić. W trakcie przeprowadzania testów system – mimo napraw-dę dużych obciążeń – ani razu się nie zawiesił.

SuSE Linux 9.0 Professional można polecić każdemu, kto ceni sobie stabilne i łatwe w obsłudze środowisko pracy. Polecamy.

Rysunek 2. Domyślny pulpit SuSE Linux 9.0 Professional Rysunek 3. YaST2

Dziękujemy firmie SuPLIX, dystrybutorowi systemu operacyjne-go SuSE Linux, za udostępnienie egzemplarza do testów.http://www.suplix.pl/

Producent: SuSE Gmbh, NiemcyDystrybutor (PL): SuPLIX Systemy komputeroweul. Kossutha 7 40-844 KatowiceCeny (brutto):• SuSE 9 Professional: 489 PLN• SuSE 9 Personal: 296 PLN• SuSE 9 Update: 296 PLN

Plusy:

• zmniejszanie/zwiększanie wielkości partycji NTFS;• bardzo dobra detekcja sprzętu;• obsługa wielu systemów plików (w tym NTFS);• obsługa architektury 64 bitowej (AMD);• zaawansowane zarządzanie pakietami;• szybkość działania;• innowacje;• łatwość obsługi i administracji;• Java i wtyczki do obsługi multimediów na stronach WWW

(Flash player, Real Media);• ogromna ilość oprogramowania dostępnego wraz z dystry-

bucją;• SuSE System Doctor.

Minusy:

• brak instalacji i podręczników w języku polskim;• GNOME w wersji 2.2.

Page 46: Linux+_2004 01_PL

styczeń 200444

dla początkujących

Praca z OpenSSHPiotr Machej

W dobie powszechnej dostępności Interne-tu coraz więcej osób zdaje sobie sprawę z czyhających w nim niebezpieczeństw. Minęły już czasy, gdy można było swo-

bodnie korzystać z Telnetu nie martwiąc się, że ktoś pod-słucha nasze hasło i włamie się nam na konto. Standardem w łączeniu się ze zdalnymi komputerami jest obecnie SSH w wersji 2 (Secure SHell, czyli bezpieczna powłoka).

W niniejszym artykule omówimy instalację, konfigura-cję i wykorzystanie programu OpenSSH, bezpłatnej i wolnej wersji oprogramowania obsługującego protokół SSH. Dzięki niemu możemy logować się na zdalne maszyny i kopiować między nimi pliki bez obawy o to, że ktoś podsłucha nasze hasło czy przesyłane dane.

Przykład użyciaGrałem właśnie w Tux Racer, gdy na komórkę przyszedł SMS od jednego ze znajomych. Prosił ze łzami (wirtu-alnymi) w oczach o udostępnienie mu jakiegoś konta, z którego mógłby wchodzić na IRC bez ograniczeń (bez flagi restricted ).

Ponieważ bardzo go lubię, od razu (no, prawie – naj-pierw dojechałem do mety) przełączyłem się na mój Multi GNOME Terminal, aby zalogować się na serwer stojący na drugim końcu Polski. Oczywiście do połączenia wykorzystałem OpenSSH, a nie Telnet – przecież nie pozwolę, aby ktoś mógł podsłuchać moją transmisję. Po podaniu hasła przeprowadziłem rutynowe sprawdzenie, czy z serwerem wszystko w porządku (a jakże, stoi bez problemów już drugi miesiąc od ostatniego wyłączenia prądu). Zalogowałem się na konto root, a następnie utwo-rzyłem znajomemu konto. Wysłałem do niego wiadomość z nazwą użytkownika i hasłem, które zmienił zaraz po zalogowaniu. Po chwili otrzymałem od niego kolejnego SMS-a. Powiadamiał mnie w nim, że już utworzył sobie zgrabny tunel (korzystając z OpenSSH), biegnący przez mój serwer do serwera IRC. W ten sposób mógł nadal rozmawiać z użyciem swojego ulubionego mIRC-a, a rów-nocześnie wszystkim rozmówcom wydawało się, że jest

zalogowany na moim serwerze. Oczywiście flagi restric-ted też już nie miał.

Korzystając z okazji sprawdziłem jeszcze, co ciekawego jest udostępnione w sieci lokalnej podłączonej do zdalnego serwera. Gdy znalazłem (sądząc po nazwie) zestaw mango-wych tapet, nie mogłem się powstrzymać, aby nie pobrać ich do siebie. Oczywiście znów korzystając z szyfrowanego kanału. A później wróciłem do przerwanego turnieju w Tux Racer.

Instalacja serwera i klientaTakie oprogramowanie, jak OpenSSH, znajduje się w zasadzie w każdej współczesnej dystrybucji Linuksa. Jeśli specjalnie nie wykluczyliśmy pakietów z instalacji, to powinniśmy mieć je już na dysku – wtedy można przejść od razu do rozdziału o konfiguracji. Chciałbym jednak zwrócić uwagę na pewną sprawę. Ze względów bezpieczeństwa należy dbać o to, aby w systemie była zainstalowana naj-bardziej aktualna wersja OpenSSH, jak również i innych kluczowych, narażonych na ataki programów. Spróbujmy więc pobrać i zainstalować najnowszą wersję OpenSSH.

Numeracja wersjiZaczynamy od uruchomienia przeglądarki interne-towej (przykładowo Mozilla) oraz otwarcia witry-ny http://predict.chem.uw.edu.pl/openssh/, która jest zlokalizowanym w Polsce odpowiednikiem strony http://www.openssh.com/. Sprawdzamy na niej, jaki jest numer najnowszej wersji programu (w chwili pisania artykułu jest to numer 3.7.1). Następnie wybieramy odnośnik "Linux,

O autorze:Autor zakończył studia zaoczne na V roku Informatyki na Politechnice Opolskiej. Z Linuksem (i ogólnie systemami uniksowymi) ma styczność od wielu lat. Obecnie admi-nistruje siecią blokową złożoną z dziesięciu komputerów. Kontakt z autorem: [email protected].

Rysunek 1. Na głównej stronie projektu OpenSSH możemy

sprawdzić najnowszy numer wersji

Page 47: Linux+_2004 01_PL

45www.linux.com.pl

openssh

Solaris, FreeBSD, NetBSD, AIX, IRIX, HP-UX and many more " znajdujący się po lewej stronie pod napisem "For other OS's" (Dla innych systemów operacyjnych). Możemy również po prostu otworzyć witrynę wpisując adres http://predict.chem.uw.edu.pl/openssh/portable.html. Znajduje się na niej spis serwerów FTP, z których można pobrać aktualne wersje oprogramowania.

Wybieramy serwer, który nam odpowiada (ja pole-cam ftp://sunsite.icm.edu.pl/pub/OpenBSD/OpenSSH/portable/ ), a następnie sprawdzamy, czy znajduje się na nim aktualna wersja OpenSSH. W chwili pisania artyku-łu najnowszym plikiem był openssh-3.7.1p2.tar.gz. Jak widać, numer wersji zgadza się z tym, który odczytaliśmy na głównej stronie (3.7.1). Znajdująca się po nim literka p oznacza, że jest to wersja przenośna, przeznaczona na systemy inne niż OpenBSD (w tym również dla Linuksa). Aktualny plik pobieramy na dysk.

Użytkownicy dystrybucji Aurox zamiast pobierać wyżej wymieniony plik mogą wejść do podkatalogu rpm/RH90/ i pobrać odpowiednie pakiety rpm (dla wersji 3.7.1 są to pliki openssh-3.7.1p2-1.i386.rpm, openssh-askpass-3.7.1p2-1.i386.rpm, openssh-askpass-gnome-3.7.1p2-1.i386.rpm, openssh-clients-3.7.1p2-1.i386.rpm, openssh-server-3.7.1p2-1.i386.rpm). Ewentualnie możemy pobrać pakiet openssh-3.7.1p2-1.src.rpm z podkatalogu rpm/SRPMS/ i samodziel-nie go przebudować.

Instalacja pakietówJeśli pobraliśmy pakiety rpm, możemy zainstalować je w systemie. Potrzebujemy do tego uprawnień super-użytkownika, więc zaczynamy od wydania polecenia su - i podania hasła użytkownika root. Następnie przecho-

dzimy do katalogu, w którym znajdują się pobrane pakie-ty i wydajemy polecenie:

rpm -Uvh openssh-3.7.1p2-1.i386.rpm S

openssh-askpass-3.7.1p2-1.i386.rpm S

openssh-askpass-gnome-3.7.1p2-1.i386.rpm S

openssh-clients-3.7.1p2-1.i386.rpm S

openssh-server-3.7.1p2-1.i386.rpm

Jeśli wolimy zbudować pakiety samodzielnie, w katalogu z pakietem źródłowym (w naszym przykładzie z plikiem openssh-3.7.1p2-1.src.rpm) wydajemy polecenie rpmbuild--rebuild openssh-3.7.1p2-1.src.rpm. Jeśli nie mamy w sys-temie programu rpmbuild, to powinniśmy zainstalować pakiet rpm-build z drugiej płyty CD dystrybucji Aurox. Po zakończeniu budowania pakiety zostaną umieszczone w katalogu /usr/src/redhat/RPMS/i386/.

Użytkownicy dystrybucji opartych o inne systemy pakietów mogą samodzielnie skompilować program (w sposób opisany w Ramce Kompilacja) lub pobrać go z wykorzystaniem odpowiednich dla dystrybucji systemów zarządzania pakietami (przykładowo apt-get w Debianie).

Uruchomienie serweraPo zainstalowaniu OpenSSH, plik serwera (sshd) powinien znajdować się w katalogu /usr/sbin/ lub /usr/local/sbin/ – zależnie od instalacji. Jeśli mamy wątpliwości, możemy jego lokalizację sprawdzić poleceniem which sshd, wywoła-nym z konta użytkownika root.

W dystrybucji Aurox możemy go uruchomić polece-niem /etc/rc.d/init.d/sshd start, a zatrzymać za pomocą /etc/rc.d/init.d/sshd stop. Jeśli zmieniamy konfigurację programu, powinniśmy go zrestartować. Służy do tego polecenie /etc/rc.d/init.d/sshd restart.

Zwykle chcemy, aby serwer OpenSSH uruchamiał się przy starcie systemu. W tym celu uruchamiamy polecenie ntsysv i upewniamy się, że przy pozycji sshd znajduje się gwiazdka. Jeśli nie, to zaznaczamy ją i wciskamy OK.

Kompilacja ze źródeł

W katalogu, w którym mamy plik ze źródłami programu (w naszym przykładzie jest to plik openssh-3.7.1p2.tar.gz), wyda-jemy polecenie tar xvzf openssh-3.7.1p2.tar.gz. Utworzy ono podkatalog o nazwie openssh-3.7.1p2/ i umieści w nim rozpakowane źródła. Wchodzimy do katalogu poleceniem cd openssh-3.7.1p2/.

Teraz możemy wydać polecenie ./configure. Domyślnie OpenSSH instaluje się w podkatalogach katalogu /usr/local/ (dokładne ścieżki zostaną wypisane na ekranie). Jeśli chcemy to zmienić, możemy użyć przykładowo polecenia ./configure --prefix=/usr.

Następnie wydajemy polecenie make, co spowoduje prze-prowadzenie właściwej kompilacji. Po jej zakończeniu musimy skorzystać z uprawnień użytkownika uprzywilejowanego. Wydajemy polecenie su i podajemy hasło użytkownika root, a następnie przeprowadzamy instalację OpenSSH poleceniem make install.

Jeśli chcemy skorzystać z innych opcji konfiguracyjnych, możemy się z nimi zapoznać wydając polecenie ./configure --help. Warto też zapoznać się z plikami README i INSTALL umieszczonymi w katalogu ze źródłami.

Rysunek 2. Po wykonaniu ./configure należy sprawdzić,

czy ustawienia nam odpowiadają

Page 48: Linux+_2004 01_PL

styczeń 200446

dla początkujących

W innych dystrybucjach skrypty te mogą być w innych katalogach lub może ich w ogóle nie być. Jeśli nie wiemy, jak poradzić sobie inaczej, to możemy uruchamiać serwer poleceniem /usr/sbin/sshd, restartować go poleceniem killall -HUP sshd, a wyłączać poprzez killall sshd.

Konfiguracja serweraPliki konfiguracyjne OpenSSH znajdują się w katalogu /etc/ssh/. Podstawowym plikiem jest /etc/ssh/sshd_config. Możemy edytować go naszym ulubionym edytorem tek-stowym (jak zwykle preferuję edytor Vim, ale każdy może wybrać taki, jaki lubi najbardziej).

Większość opcji w tym pliku ujęta jest w komentarze (na początku linii znajduje się znak #). Są to opcje posiadające wartości domyślne. Jeśli chcemy je zmienić, należy usunąć znak # z początku wybranej linii i zmienić wartość opcji.

Powstaje pytanie, które opcje zmieniać. Pomimo tego, że serwer działa dobrze nawet na domyślnych opcjach, warto dostosować je do własnych potrzeb. W ramce wymieniłem wybrane opcje konfiguracyjne. Bardziej dociekliwym Czytelnikom polecam lekturę podręcznika systemowego (man sshd_config), w którym znajdą opis pozostałych opcji.

Konfiguracja klientaDomyślne opcje konfiguracyjne klienta są zwykle zado-walające dla większości użytkowników. Wielu z nich nie zdaje sobie jednak sprawy z ilości dostępnych opcji. Głównym plikiem konfiguracyjnym jest plik /etc/ssh/ssh_config. Zawiera on ustawienia wspólne dla wszyst-kich użytkowników. Oprócz tego, każdy z użytkowników może utworzyć własny plik konfiguracyjny o nazwie~/.ssh/config oraz dodać opcje podczas wpisywania pole-cenia w linii komend.

Kolejność pobierania danych przez OpenSSH jest nastę-pująca:

• parametry podane w linii komend;• opcje zawarte w pliku konfiguracyjnym użytkownika

(~/.ssh/config);• opcje zawarte w systemowym pliku konfiguracyjnym

(/etc/ssh/ssh_config).

Dla każdej opcji pobierana jest tylko pierwsza napotka-na wartość (pozostałe są ignorowane). Jeśli więc jakaś opcja znajdzie się w kilku miejscach pliku ~/.ssh/config, to zostanie jej przypisana pierwsza napotkana wartość. A jeśli dodatkowo użytkownik ustawi opcję w linii komend, to wszystkie jej wystąpienia w plikach konfigu-racyjnych zostaną zignorowane.

Opcje w pliku konfiguracyjnym mogą być pogru-powane w zależności od komputera, którego dotyczą – różne opcje dla każdego komputera, z którym się łączy-my. Każda taka sekcja zaczyna się od linii o treści:

Wybrane opcje konfiguracyjne serwera:

• Port – określa, na jakim porcie serwer nasłuchuje przycho-dzących połączeń (domyślnie ustawiona na wartość 22);

• Protocol – określa, które wersje protokołu SSH są obsłu-giwane przez serwer (domyślnie obsługiwane są obie, więc opcja przyjmuje wartość 2,1);

• ListenAddress – wskazuje adresy, na których serwer nasłuchuje przychodzących połączeń (domyślnie nasłuch prowadzony jest na wszystkich dostępnych adresach);

• LoginGraceTime – wyznacza czas, po jakim serwer zrywa połączenie, jeśli użytkownik nie zdążył się zalogować poprawnie (domyślnie wynosi 2 minuty, a ustawienie tej opcji na 0 wyłącza limit czasu);

• PermitRootLogin – określa, czy można logować się bezpośrednio na konto użytkownika root. Zalecane jest ustawienie tej opcji na no, gdyż utrudnia to zadanie ewentualnemu włamywaczowi (najpierw musi zdobyć konto zwykłego użytkownika). Oprócz wartości yes i no są dostępne jeszcze without-password oraz forced-commands-only. Wartość without-password sprawia, że użytkownik root nie może zalogować się korzystając z hasła systemowego (nadal jednak może użyć klucza publicznego). Z kolei forced-commands-only pozwala mu na zautoryzowanie się z pomocą klucza publicznego, jednak dopuszcza tylko wykonanie komendy podanej w wywołaniu OpenSSH.

• PubkeyAuthentication – pozwala na autoryzację z użyciem klucza publicznego (domyślnie ustawiona na yes (tak));

• AuthorizedKeysFile – wskazuje plik w katalogu domowym użytkownika, który zawiera klucze publiczne osób mogą-cych logować się na konto;

• PasswordAuthentication – pozwala na autoryzację z uży-ciem hasła systemowego (domyślnie ustawiona na yes (tak));

• PermitEmptyPasswords – tę opcję lepiej pozostawić usta-wioną na no, dzięki czemu nie będzie możliwe logowanie się na konta z pustymi hasłami;

• Subsystem sftp – konfiguruje dodatkową usługę bezpiecz-nego transferu plików (SFTP).

Rysunek 3. PuTTY jest bardzo wygodnym klientem SSH pod

Windows – pozwala nawet korzystać z klucza prywatnego

Page 49: Linux+_2004 01_PL

47www.linux.com.pl

openssh

Host nazwa.serwera

Należy wiedzieć, że nazwa_serwera powinna być dokład-nie tą nazwą, którą wpisujemy w linii poleceń podczas uru-chamiania OpenSSH. Wynika to z tego, że nazwa ta nie jest konwertowana do postaci kanonicznej przed porównaniem z wartością opcji Host. Jeśli zależy nam, aby jakieś opcje dotyczyły wszystkich serwerów, to umieszczamy je w sekcji Host *. Sekcja ta powinna znajdować się na samym końcu pliku (ze względu na to, że pobierane są tylko pierwsze wystąpienia opcji).

Praca z OpenSSHOpenSSH najczęściej wykorzystujemy do bezpiecznego logowania się na konta na zdalnych serwerach. W takim przypadku wywołanie programu jest proste:

ssh uż[email protected]

Ewentualnie możemy skorzystać z postaci:

ssh -l użytkownik adres.serwera

Jeśli na zdalnym serwerze mamy taką samą nazwę użyt-kownika, jak na lokalnym, możemy używać skróconej pos-taci:

ssh adres.serwera

Jeśli ze zdalnym komputerem łączymy się po raz pierwszy, pojawi się napis podobny do poniższego:

The authenticity of host '192.168.0.24 (192.168.0.24)'

can't be established.

RSA key fingerprint is 78:49:c7:a5:de:6b:6c:41:e6:

45:22:bd:87:b0:a4:c1.

Are you sure you want to continue connecting (yes/no)?

Dla każdego komputera, z którym się łączymy, OpenSSH przechowuje w pliku ~/.ssh/known_hosts tzw. odcisk palca (fingerprint). Podczas każdego połączenia wartość ta jest sprawdzana, co pozwala wykryć potencjalne ataki DNS spoofing. Jeśli jesteśmy pewni, że łączymy się do wła-ściwego komputera, to wpisujemy yes i wciskamy [Enter ]. Warto zaznaczyć, że przy tym pytaniu nie wystarczy wpisać y – musi to być całe słowo yes.

Po połączeniu zostaniemy zapytani o hasło. Jeśli podamy je prawidłowo, zostaniemy zalogowani na zdalnym serwerze. Od tej chwili możemy pracować tak, jakbyśmy siedzieli przed ekranem zdalnego komputera (oczywiście pomijając ewentualne opóźnienia).

Wykonywanie poleceńCzasem na zdalnym komputerze chcemy wykonać tylko jedno polecenie, przykładowo wyświetlić spis nawiąza-nych połączeń. Nie musimy wtedy uzyskiwać dostępu do linii poleceń – wystarczy, jeśli zapoznamy się z wynikiem działania polecenia. W tym celu do opisanych wcześniej sposobów wywołania OpenSSH powinniśmy dopisać polecenie, które chcemy wykonać na zdalnym kompu-terze, np.:

Klienci pod WindowsWielu użytkowników nadal pracuje w systemach z rodziny Win-dows. Nawet użytkownicy Linuksa nieraz sięgają po „okienka”. Nie są oni pozbawieni możliwości korzystania z SSH. Jeśli chcą połączyć się z jakimś zdalnym serwerem lub skopiować z niego plik, mogą skorzystać z jednego z klientów SSH pod Windows. Wybór jest dosyć szeroki, ale większość programów jest płatna (zwykle udostępnione są jako shareware lub trial). Chlubnymi wyjątkami są programy PuTTY oraz WinSCP.

PuTTYJest to bardzo wygodny i funkcjonalny program. Istotne jest również to, że program ten jest w pełni darmowy, a jego kod jest publicznie dostępny. Jak od razu zauważymy, jest to właści-wie zestaw kilku programów. Z punktu widzenia przeciętnego użytkownika, najbardziej przydatne będą programy putty.exe, pscp.exe i psftp.exe. Pierwszy z nich służy do logowania się na zdalne maszyny z użyciem między innymi protokołu SSH (sta-nowi niejako odpowiednik programu OpenSSH opisywanego w artykule). Drugi i trzeci to kolejno odpowiedniki opisywanych programów SCP i SFTP. Najlepiej po prostu pobrać instalator całości (plik putty-0.53b-installer.exe – może być inny numer wersji), dzięki czemu będziemy mieli zainstalowane wszystkie pliki z wyjątkiem puttytel.exe (klient pozwalający tylko na połą-czenia z telnetem).

WinSCPTekstowe interfejsy programów SCP i PSCP mogą zrazić użyt-kowników przyzwyczajonych do posługiwania się myszką. Dla nich wybawieniem będzie WinSCP. Program ten, z wyglądu podobny do Total Commandera, pozwala na sprawne kopiowa-nie plików pomiędzy lokalnym i zdalnym komputerem. Obsługu-je zarówno SCP, jak i SFTP.

Rysunek 4. WinSCP na pierwszy rzut oka bardzo przypomina

program Total Commander

Page 50: Linux+_2004 01_PL

styczeń 200448

dla początkujących

ssh [email protected] netstat -nat

Wynik polecenia możemy zapisać w lokalnym pliku:

ssh 192.168.0.5 who > spis.txt

Oczywiście przy każdym z tych poleceń musimy podać hasło. Jeśli wykonywanie polecenia trwa dłużej, a nie chcemy mieć zajętej dodatkowej konsoli, możemy spowo-dować, że OpenSSH natychmiast po pobraniu hasła zosta-nie przeniesione w tło. Służy do tego parametr -f, który można wykorzystać w następujący sposób:

ssh -f -L gerard 192.168.4.75 sleep 20

Klucze czy hasła? Oto jest pytanieLogując się na zdalny serwer z pomocą OpenSSH mamy pewien komfort psychiczny. Oto bowiem nasza transmisja jest szyfrowana. Jesteśmy bezpieczni. Zaraz, czy na pewno? A jeśli ktoś zobaczy, jak wpisujemy hasło? Tak, wtedy on

również może zalogować się na zdalnym serwerze (o ile zna jego adres) wykorzystując naszą nazwę użytkownika i poznane hasło. Czy można się przed tym jakoś zabezpie-czyć? W pewnym stopniu tak.

OpenSSH pozwala na wykorzystanie do logowania się pary kluczy RSA lub DSA. Jeden z kluczy (zwany publicz-nym) przechowywany jest na serwerze, na który chcemy się logować. Natomiast drugi, zabezpieczony hasłem (zwany kluczem prywatnym) powinniśmy przechowywać na swoim koncie i absolutnie nie udostępniać go innym użytkownikom.

Jakie są zalety takiego rozwiązania? Jak już wiemy, w przypadku stosowania hasła systemowego, wystarczy, gdy ktoś je odgadnie, podsłucha lub w inny sposób się z nim zapozna. To daje mu pełny dostęp do naszego konta na zdalnym serwerze. A co, jeśli pozna hasło chroniące klucz prywatny? Nic. Bez samego klucza prywatnego hasło nic mu nie da. Podobnie, gdy uda mu się zdobyć klucz prywatny, musiałby jeszcze dodatkowo poznać chroniące go hasło. Jak więc widać, jest to dodatkowa bariera dla ewentualnego włamywacza.

Klucze RSA dają jeszcze jedną możliwość. Nie musimy ustawiać hasła chroniącego klucz prywatny. W takim przy-padku na zdalny komputer logujemy się wydając jedno polecenie (ssh uż[email protected]) i nie musimy nawet podawać żadnego hasła. Jest to wygodne, lecz możliwości tej należy używać ostrożnie – jeśli ktoś uzyska dostęp do naszego klucza prywatnego, to wszystkie zdalne systemy, na których umieściliśmy nasz klucz publiczny, będą stały dla niego otworem.

Stwórzmy teraz nasze klucze RSA. Wydajemy pole-cenie:

ssh-keygen -t rsa

Jako typ klucza możemy podać rsa1 (klucz RSA dla starszej wersji SSH), rsa (klucz RSA dla SSH w wersji 2.) oraz dsa (klucz DSA dla SSH w wersji 2.).

Zostajemy zapytani o nazwę pliku, w którym ma zostać zapisany klucz prywatny (domyślnie jest to plik ~/.ssh/id_rsa), a następnie o chroniące go hasło. Hasło to powinno być trudne do odgadnięcia. Najlepiej, jeśli będzie miało co najmniej 10 znaków (w tym litery duże i małe oraz cyfry). Musi jednak równocześnie być łatwe do zapamiętania, gdyż zapomnianego hasła nie da się odzyskać – w takim przypadku musimy generować klucze od nowa. Możemy nie ustawiać hasła, jednak nie jest to zalecane. Po powtórnym wpisaniu hasła klucze są generowane i zapisywane na dysku. Klucz prywatny domyślnie znajduje się w pliku ~/.ssh/id_rsa, natomiast klucz publiczny w pliku ~/.ssh/id_rsa.pub.

Jeśli kiedyś stwierdzimy, że chcemy zmienić hasło chroniące nasz klucz prywatny, możemy to zrobić wyda-jąc polecenie ssh-keygen -p -f ~/.ssh/id_rsa. Bedziemy musieli podać dotychczasowe hasło oraz (dwukrotnie) nowe hasło.

Wybrane opcje OpenSSH:

• -1 – wymusza pracę w wersji 1. protokołu SSH;• -2 – wymusza pracę w wersji 2. protokołu SSH;• -C – włącza kompresję danych (opłacalne jedynie na

modemach i innych wolnych łączach);• -f – przenosi OpenSSH w tło tuż przed wykonaniem pole-

cenia;• -F plik_konfiguracyjny – wskazuje alternatywny plik kon-

figuracyjny użytkownika (zamiast domyślnego ~/.ssh/config );

• -i nazwa_pliku – wskazuje, który plik z kluczem prywatnym ma być wykorzystany do autoryzacji;

• -l nazwa_użytkownika – podaje nazwę użytkownika, na którego konto chcemy się zalogować;

• -L port:host:port_hosta – pozwala na przekierowanie połączeń z lokalnego komputera poprzez szyfrowany tunel do zdalnego komputera, a następnie do komputera host (więcej na ten temat w rozdziale Tworzenie tuneli);

• -N – powoduje, że zdalna komenda nie jest wykonywana (opcja ta użyteczna jest właściwie tylko przy tworzeniu tuneli i działa jedynie w wersji 2. protokołu SSH );

• -R port:host:port_hosta – pozwala na przekierowanie połączeń ze zdalnego komputera poprzez szyfrowany tunel do lokalnego komputera, a następnie do komputera host;

• -o opcje – pozwala podać dodatkowe opcje (w postaci używanej w pliku konfiguracyjnym), dla których nie ma osobnych przełączników;

• -p port – numer portu na zdalnym komputerze, z którym chcemy się połączyć;

• -q – blokuje drukowanie wszelkich ostrzeżeń i komunika-tów diagnostycznych;

• -v – drukuje dodatkowe komunikaty (przydatne podczas rozwiązywania problemów);

• -V – wyświetla numer wersji programu.

Page 51: Linux+_2004 01_PL

49www.linux.com.pl

openssh

No dobrze, mamy nasze klucze, ale co teraz z nimi zrobić? Otóż klucz prywatny (~/.ssh/id_rsa) pozostawiamy w spokoju. Pod żadnym pozorem nie udostępniamy go nikomu. Natomiast klucz publiczny (~/.ssh/id_rsa.pub) prze-syłamy na zdalny komputer. Możemy tego dokonać dowol-ną metodą – poprzez SCP, pocztą czy przez wystawienie na stronie WWW. Załóżmy, że użyliśmy SCP:

scp ~/.ssh/id_rsa.pub [email protected]:~/

Teraz logujemy się na zdalny komputer (ssh [email protected]). Musimy umieścić klucz publiczny w pliku .ssh/authorized_keys (lub innym, jeśli zmienialiśmy wartość opcji AuthorizedKeysFile w pliku /etc/ssh/sshd_config). Plik ten przechowuje klucze publiczne wszystkich użytkowników, którzy mogą się logować na nasze konto bez podawania hasła systemowego. Dokonujemy tego poleceniem cat ~/id_rsa.pub >> ~/.ssh/authorized_keys. Jeśli plik wcześniej nie istniał, to zostanie utworzony. Powinniśmy wtedy zmienić prawa dostępu do niego pole-ceniem chmod 600 ~/.ssh/authorized_keys. Plik id_rsa.pub możemy już usunąć ze zdalnego serwera – rm ~/id_rsa.pub. Pozostawiamy go jednak w naszym katalogu ~/.ssh/ wraz z kluczem prywatnym.

Teraz podczas logowania się na zdalny komputer zamiast hasła systemowego będziemy podawać hasło chro-niące klucz prywatny. Nie jest ono przesyłane siecią, więc jest bezpieczniejsze od hasła systemowego.

Kluczy prywatnych możemy mieć więcej i wykorzy-stywać je zależnie od potrzeb. Podczas wywoływania programu OpenSSH (jak również SCP) możemy wskazać potrzebny nam plik z kluczem prywatnym korzystając z opcji -i. Przykładowe wywołanie programu mogłoby

mieć postać:

ssh -l gerard -i ~/.ssh/id_rsa 192.168.0.5

Przypomnę tylko, że aby logowanie się z użyciem kluczy było możliwe, to w konfiguracji serwera (plik /etc/ssh/sshd_config) musi być ustawiona opcja PubkeyAuthentication yes (domyślnie ma właśnie taką wartość).

Bezpieczne przesyłanie plików,czyli SCPOpenSSH nie tylko pozwala nam na bezpieczną pracę w linii poleceń na zdalnym komputerze. Oprócz tego, mamy do dyspozycji program SCP, dzięki któremu możemy kopiować pliki z i na zdalny komputer (a nawet pomię-dzy dwoma zdalnymi komputerami) z wykorzystaniem tej samej autoryzacji, którą oferuje OpenSSH. Oczywiście SCP zapewnia również takie samo bezpieczeństwo komunikacji, jak OpenSSH.

Podstawowe wywołanie programu SCP jest bardzo proste: scp plik_źródłowy plik_docelowy. Zarówno plik_źródłowy, jak i plik_docelowy, mogą być podawane w jednej z postaci:

• nazwa_pliku (np. plik.txt);• host:nazwa_pliku (np. 192.168.0.1:/home/gerard/plik

.txt);• użytkownik@host:nazwa_pliku (np. [email protected]:/home/gerard/plik.txt).

W drugim przypadku jako nazwa użytkownika na zdalnej maszynie domyślnie jest przyjmowana nazwa użytkowni-ka, który wydał polecenie scp. Jeśli więc chcemy skopio-wać jakiś plik ze zdalnego serwera, możemy skorzystać z polecenia scp [email protected]:/etc/passwd .. Zosta-niemy wtedy zapytani o hasło użytkownika gerard, a po jego poprawnym podaniu do bieżącego katalogu na naszym lokalnym komputerze zostanie skopiowany plik /etc/passwd z komputera o adresie 192.168.0.5.

W wywołaniu programu SCP możemy podać kilka dodatkowych opcji, np. może przydać się opcja -r, odpowiadająca za rekursywne pobieranie podkatalogów. Polecenie scp -r ~/drzewo/ [email protected]:las/ spo-woduje, że podkatalog drzewo/ znajdujący się w naszym katalogu domowym zostanie skopiowany wraz z całą zawartością do podkatalogu las/ znajdującego się w kata-logu domowym użytkownika gerard na komputerze o adresie 192.168.0.5.

Niektóre pozostałe opcje są wymienione w ramce Wybrane opcje SCP.

FTP też może być bezpieczneKopiowanie plików z użyciem SCP jest bezpieczne, ale często niezbyt wygodne. Wielu użytkowników jest przy-zwyczajonych do korzystania z FTP, które jednak przesyła hasła i dane niezabezpieczonym kanałem. W pakiecie

Wybrane opcje SCP:

• -a – włącza wyświetlanie statystyk dla każdego pliku;• -A – wyłącza wyświetlanie statystyk dla każdego pliku;• -B – włącza tryb wsadowy (nie pyta o hasła i frazy kodują-

ce);• -C – włącza kompresję;• -i nazwa_pliku – wskazuje, który plik z kluczem prywatnym

ma być wykorzystany do autoryzacji;• -l liczba – ogranicza szybkość przesyłania danych do

liczba kilobitów na sekundę;• -o opcje – pozwala przekazać dodatkowe opcje do progra-

mu OpenSSH;• -p – chroni czasy modyfikacji, dostępu i prawa oryginalne-

go pliku;• -q – wyłącza wyświetlanie statystyk;• -Q – włącza wyświetlanie statystyk;• -r – kopiuje rekursywnie całe katalogi;• -S ścieżka_dostępu – wskazuje umiejscowienie programu

OpenSSH;• -v – drukuje dodatkowe komunikaty (przydatne podczas

rozwiązywania problemów).

Page 52: Linux+_2004 01_PL

styczeń 200450

dla początkujących

OpenSSH mamy do dyspozycji bezpieczny odpowiednik FTP. Jest to program SFTP. W najprostszej postaci urucha-miamy go poleceniem:

sftp uż[email protected]

Po podaniu hasła mamy do dyspozycji interfejs zbliżony do tego znanego z FTP. Po wpisaniu help uzyskujemy spis dostępnych komend. Nie różnią się one w zasadzie od komend znanych z powłoki.

SFTP możemy również wykorzystać w sposób podobny jak SCP do pobrania jednego lub kilku plików (bez wcho-dzenia w tryb interaktywny):

sftp [email protected]:nazwa_pliku

Istotne dla działania SFTP jest, aby w konfiguracji zdalnego serwera OpenSSH (w pliku /etc/sshd_config) znajdowała się linia o treści:

Subsystem sftp /usr/libexec/openssh/sftp-server

W domyślnej konfiguracji linia ta jest obecna.

Tworzenie tuneliNa początku artykułu (w rozdziale Sposób użycia) wspo-mniałem, że znajomy zrobił sobie tunel ze swojego kom-putera do mojego serwera, dzięki czemu mógł swobodnie korzystać z IRC-a. Teraz nadszedł czas, aby wyjaśnić dokładniej, na czym to polega, i jak można zrobić to samemu.

Program OpenSSH pozwala na wykorzystanie opcji -L port_lokalny:host:port_hosta. Powoduje ona, że pomię-dzy portem port_lokalny na naszym komputerze a zdal-nym komputerem zostanie utworzony szyfrowany tunel. W przypadku połączenia się z portem port_lokalny pakie-ty będą wędrować przez ten tunel, a następnie z kompu-

tera zdalnego będą przesyłane (już nie szyfrowane) do komputera host na port port_hosta.

Zabezpieczenie pocztyNo dobrze, ale co nam to daje? Wiele usług nadal nie jest szyfrowanych. Wyobraźmy sobie sytuację, gdy pracujemy w dużej firmie. Firma ta posiada własny serwer SSH oraz serwer poczty znajdujące się w jednej sieci lokalnej (oba są dostępne z Internetu). Jeśli chcemy sprawdzić pocztę firmową z komputera domowego, przy standardowej kon-figuracji łączylibyśmy się programem pocztowym prosto na port 110 (POP3) serwera pocztowego. W takim przy-padku narażamy się na to, że ktoś podsłucha naszą trans-misję i zdobędzie nasze hasło lub jakieś tajemnice firmy. Lepiej będzie, gdy korzystając z OpenSSH utworzymy zabezpieczony tunel od naszego komputera do serwera SSH firmy i wykorzystamy go do komunikacji z serwerem poczty. Dzięki temu transmisja będzie niezabezpieczona tylko na odcinku od serwera SSH do serwera poczty, a przecież oba znajdują się w sieci firmowej, co znacznie zmniejsza ryzyko podsłuchu.

Spróbujmy zbudować taki tunel. Odpowiednim do tego poleceniem będzie:

ssh -N -f -L 11234:adres.serwera.poczty:110 S

[email protected]

Teraz zostaniemy zapytani o hasło na konto użytkownik na serwerze adres.serwera.ssh. Po jego podaniu program OpenSSH zostanie przeniesiony w tło (dzięki opcji -f ). Gdybyśmy nie dodali opcji -N, to oprócz stworzenia tunelu zalogowalibyśmy się na zdalnym serwerze SSH. Tunel istniałby wtedy tylko do czasu naszego wylogowania się. Ponieważ zależy nam przede wszystkim na tunelu, więc używamy opcji -N.

Pozostaje nam skonfigurować program pocztowy tak, aby nie łączył się z komputerem adres.serwera.poczty na porcie 110, lecz z komputerem localhost (a więc naszym własnym) na porcie 11234.

Powyższa metoda sprawdza się jeszcze lepiej, gdy serwer SSH i serwer poczty są uruchomione na jednym komputerze. Wówczas wywołanie programu przyjmuje postać:

ssh -N -f -L 11234:localhost:110 S

[email protected]

Nie powinien nas zmylić napis localhost w opcji -L. Odnosi się on do zdalnego serwera SSH, a nie do naszego komputera lokalnego. W powyższym przypadku tunel zapewnia nam szyfrowanie transmisji przez całą drogę, gdyż na ostatnim etapie transmisja odbywa się w obrębie jednego komputera.

Gdy nie wolno IRCowaćDo czego mogą się nam jeszcze przydać tunele? Przypuść-my, że nasz komputer znajduje się w sieci lokalnej oddzie-

Rysunek 5. Przez tunel możemy przesłać praktycznie wszystko,

wliczając w to strony WWW czy muzykę z radia internetowego

Page 53: Linux+_2004 01_PL

51www.linux.com.pl

openssh

lonej od Internetu zaporą ogniową (firewall). Administrator tej zapory z pewnych względów (przykładowo z polecenia szefa) zablokował część portów i pozostawił tylko wybrane. Na szczęście połączenia przez SSH są dozwolone (no bo przecież jakoś trzeba pracować).

Jeśli w czasie przerwy w pracy zamiast jeść drugie śnia-danie wolimy porozmawiać na IRC-u ze znajomą, musimy sobie jakoś poradzić. Pomogą nam oczywiście tunele. Warunkiem jest, że mamy konto na zdalnym komputerze (umieszczonym poza naszą siecią lokalną), udostępniają-cym serwer SSH.

Polecenie tworzące tunel już znamy:

ssh -N -f -L 6669:poznan.irc.pl:6667S

[email protected]

Po podaniu hasła możemy uruchomić sobie IRC-a i połą-czyć się z portem 6669 serwera localhost. Nasze połączenie zostanie przekazane zabezpieczonym tunelem do zdalnego serwera SSH, a stamtąd przekierowane na port 6667 serwe-ra poznan.irc.pl. Z punktu widzenia serwera poznan.irc.pl (a więc i innych uczestników rozmowy na IRC-u) będzie się wydawało, że nasz program Irc jest uruchomiony na komputerze zdalny.serwer.ssh.

ZakończenieBezpieczeństwo w Sieci jest obecnie sprawą kluczową. Nawet w takim oprogramowaniu jak OpenSSH zdarzają się dziury, więc należy pamiętać o częstej aktualizacji najważniejszych pakietów oraz obserwowaniu ogłoszeń o krytycznych błędach. Należy też zdawać sobie sprawę, że nawet najlepsze oprogramowanie może nas nie uchro-nić przed atakami, gdyż zwykle najsłabszym ogniwem jest człowiek. Jeśli ustawimy łatwe do odgadnięcia hasło, to nikt go nie będzie musiał podsłuchiwać – po prostu je wpisze.

W Sieci:

• Strona domowa OpenSSH: http://www.openssh.org/• Polski serwer lustrzany powyższej strony: http://predict.chem.uw.edu.pl/openssh/• Pliki rpm na polskim serwerze FTP: ftp://sunsite.icm.edu.pl/pub/OpenBSD/OpenSSH/

portable/rpm/RH90• Źródłowe pakiety rpm na polskim serwerze FTP: ftp://sunsite.icm.edu.pl/pub/OpenBSD/OpenSSH/

portable/rpm/SRPMS• Strona domowa PuTTY: http://www.chiark.greenend.org.uk/~sgtatham/putty/• Strona domowa WinSCP: http://winscp.sourceforge.net/eng/• Trochę teorii kryptografii: http://www.bezpieczenstwoit.pl/Kryptografia.html

Page 54: Linux+_2004 01_PL

styczeń 200452

sprzęt

Lm_sensors i Smartmontools – czujniki naszego komputeraPiotr Wolny

Współczesne płyty główne wyposażone są w czujniki monitorujące pracę zasilacza i wentylatorów oraz temperaturę: proce-sora, płyty głównej i innych elementów.

Te dodatki kojarzą się często z amatorami overclocking'u, dla których ważne jest stałe monitorowanie temperatury, zwłaszcza procesora, zmuszonego do pracy ponad nomi-nalne możliwości. Moda na overclocking powoli przeminę-ła, jednak czujniki w sprzęcie pozostały. Głównie dlatego, że sens ich istnienia wykracza daleko poza wspomniane wcześniej zastosowania, a okazują się być bardzo potrzeb-ne, zarówno w profesjonalnych systemach, jak i w zwy-kłych, domowych komputerach.

Oczywiście przeciętnemu użytkownikowi komputera czy nawet administratorowi serwera nie jest potrzebna wiedza na temat aktualnych napięć, temperatur i obro-tów wentylatorów w systemie. Ważne jest, aby te wartości utrzymywały się w normie. Czujniki pozwalają właśnie na szybkie odnotowanie, gdy coś w systemie zaczyna odbiegać od normy, a to umożliwia szybką reakcję zanim dojdzie do całkowitego zniszczenia sprzętu. Najlepszym przykładem jest oczywiście zacierający się wentylator procesora, co powinno zostać odnotowane przez dwa czujniki (obrotów wentylatora i temperatury procesora). Równie niebezpieczne są jednak awarie zasilacza, które bardzo często objawiają się najpierw poprzez zmiany wytwarzanych przez niego napięć.

Od samego sprzętu cenniejsze bywają dane. I tutaj pro-ducenci dysków twardych również wychodzą naprzeciw użytkownikom. Od dłuższego czasu nowe dyski twarde wyposażane są w SMART – Self-Monitoring, Analysis and Reporting Technology, co można przetłumaczyć jako Technologia samokontroli, analizy i raportowania. Opro-gramowanie dysków twardych wyposażonych w SMART potrafi przetestować dysk, przewidując awarie, które z dużym prawdopodobieństwem nastąpią w przyszłości. Niejako ,,przy okazji'' dyski twarde również wyposażono w czujniki temperatury i wielu innych parametrów pracy. Dostęp do danych niektórych czujników możemy uzyskać z poziomu BIOS-u komputera bądź przy pomocy narzędzi

dla MS Windows, dostarczanych na ogół przez producen-tów płyt głównych, chipsetów bądź dysków twardych.

W Linuksie czujniki na płycie głównej możemy odczy-tywać przy pomocy oprogramowania Lm_sensors (http://www.lm-sensors.nu/ ), a informacje SMART dostępne są dzięki programom z projektu Smartmontools (http://smart-montools.sourceforge.net/ ).

Czujniki płyty głównejProducenci płyt głównych najlepiej znają swoje produkty, więc są w stanie dostarczyć użytkownikom MS Windows aplikacje, które działają dobrze z konkretnym sprzętem. Inaczej jest w przypadku Linuksa – twórcy Lm_sensors musieli sami napisać sterowniki do kilkudziesięciu różnych układów, które odpowiedzialne są za odczyt i raportowa-nie wartości z czujników, z płyt głównych dziesiątek pro-ducentów. Niestety, stworzenie bazy wiedzy o wszystkich, czy przynajmniej większości płyt głównych, która umożli-wiałaby uruchomienie lm_sensors bez konieczności wcze-śniejszej, pracochłonnej konfiguracji, przerasta możliwości twórców tego projektu. Problem polega na tym, iż niemal każda płyta główna różni się od innych nie tylko zastoso-wanymi układami scalonymi, ale również sposobem inter-pretacji odczytywanych danych. Użytkownik Linuksa musi więc samodzielnie poradzić sobie z konfiguracją. Pomocą w tym zakresie służy program sensors-detect, o którym będzie mowa później.

O autorze:Autor jest politologiem i pracuje dla www.wzz.org.pl. Linuksem zajmuje się mniej więcej od czasów jądra 2.0.20.Kontakt z autorem: [email protected].

Rysunek 1. Program Lmcgi wyświetla dane o sprzęcie na stronie

WWW

Page 55: Linux+_2004 01_PL

53www.linux.com.pl

lm_sensors

Za bezpośredni odczyt danych z czujników płyty głów-nej odpowiada pojedynczy układ scalony. Pobrane dane trafiają do systemu operacyjnego poprzez magistralę I2C (lub SMBus). Potrzebujemy zatem:

• moduł jądra, sterujący magistralą I2C;

• moduł jądra, sterujący samym układem, do którego podpięte są czujniki;

• plik konfiguracyjny /etc/sensors.conf, zawierający infor-macje, jak tłumaczyć dane z czujnika na rzeczywiste wartości.

Instalacja Lm_sensorsWiększość dystrybucji Linuksa dostarcza pakiet Lm_sen-sors, jednakże jego konfiguracja pozostaje w rękach użyt-kownika.

W Mandrake 9.2 pakiet lm_sensors-2.8.0-4mdk możemy zainstalować np. przy pomocy graficznego narzędzia do instalacji pakietów. W Aurox 9.1 pakiet lm_sensors-2.6.5-5.i386.rpm (niestety trochę starsza wersja) powinien zostać zainstalowany razem z systemem, a jeśli tak się nie stało, możemy znaleźć go na pierwszej płycie CD. Jeśli korzysta-my z którejś z powyżej wymienionych dystrybucji, możemy od razu przejść do części „Konfiguracja Lm_sensors”.

Debian Woody również dostarcza pakiety lm-sensors (zawiera podstawowe programy narzędziowe) oraz lm-sensors-source (z modułami jądra w postaci źródłowej). W przypadku tej dystrybucji instalacja pakietów jest nieco trudniejsza – chcemy postępować zgodnie z zasadami dys-trybucji Debian. Po zainstalowaniu pakietów lm-sensors oraz lm-sensors-source musimy rozpakować plik /usr/src/lm-sensors.tar.gz i przy pomocy polecenia make-kpkg (z pakietu kernelutils) skompilować nowy pakiet z modułami jądra: cd /usr/src/linux; make-kpkg --revision wersja1 modules_image. Oczywiście w /usr/src/linux muszą znajdo-wać się źródła aktualnie używanego jądra i musimy użyć tej samej wersji kompilatora gcc, która została użyta do zbu-dowania jądra. Jeśli wszystko pójdzie dobrze, w katalogu/usr/src/ znajdziemy pakiet Debiana z modułami jądra, który instalujemy poleceniem dpkg -i <nazwa pliku.deb>.

Konfiguracja Lm_sensorsNastępnym krokiem jest uruchomienie w konsoli – jako root – programu sensors-detect. Spróbuje on załadować różne moduły magistrali I2C oraz różne moduły obsługu-

Instalacja ze źródełCzeka nas obowiązkowa rekompilacja całego jądra Linuksa. Najpierw będziemy musieli nałożyć na jądro specjalną łatkę z najnowszą wersją I2C oraz poprawkami dla wszystkich ste-rowników korzystających z magistrali I2C. Instalację przepro-wadzamy więc w następujących krokach:

• ściągamy i rozpakowujemy źródła „oficjalnego” jądra z www.kernel.org (najnowsza stabilna wersja w momencie pisania tego artykułu to 2.4.22);

• ze strony http://delvare.nerim.net/i2c/ ściągamy „uni-fied patch for Linux 2.4.22 (i2c-2.8.1)”, czyli łatkę na jądro, zawierającą I2C w wersji 2.8.1, oraz poprawki we wszystkich sterownikach, wykorzystujących I2C. Plik linux-2.4.22-i2c-2.8.1.patch umieszczamy w katalogu /usr/src. Jeśli będzie dostępna nowsza wersja jądra, musimy oczy-wiście zastosować również odpowiednio nowszą wersję łatki;

• nakładamy łatkę np. poleceniem cd /usr/src/linux-2.4.22; patch -p1 < ../linux-2.4.22-i2c-

2.8.1.patch;• konfigurujemy i kompilujemy nowe jądro. Przy konfiguracji

jądra, w dziale Character devices wybieramy I2C support, zaznaczamy koniecznie – jako moduły – I2C support, I2C device interface oraz I2C proc interface. Jeśli mamy kartę telewizyjną, zaznaczamy również I2C bit-banging interfaces. Nie zaszkodzi również, jeśli zaznaczymy – jako moduły – również inne sterowniki z tego działu;

• uruchamiamy system na nowym jądrze, a następnie ściągamy i rozpakowujemy plik lm_sensors-2.8.1.tar.gz: tar zxfvp lm_sensors-2.8.1.tar.gz; cd lm_sensors-

2.8.1;• w archiwum Lm_sensors nie ma skryptu configure, więc

możemy od razu wydać polecenie make. Jeśli jednak chcemy zmodyfikować jakieś opcje kompilacji, możemy ręcznie poprawić plik Makefile. Wszystkie opcje są w nim dobrze udokumentowane. Niestety – z aktualną wersją – nie można włączyć opcji nakazującej skompilowanie programu sensord;

• instalację kończą polecenie make install oraz urucho-mienie programu mkdev.sh, który znajdziemy w katalogu prog/mkdev dystrybucji źródłowej lm_sensors. Oczywi-ście polecenia te wydajemy jako root.

Po tej operacji w systemie mamy cały szereg nowych modułów jądra – zarówno dodatkowe moduły magistral I2C w katalogu /lib/modules/2.4.22/kernel/drivers/i2c/busses, jak i moduły dla poszczególnych układów scalonych sterujących czujnikami, w katalogu /lib/modules/2.4.22/kernel/drivers/i2c/chips. Dodatkowo, w systemie pojawia się m.in. program sensors – prosta komenda umożliwiająca odczyt stanu czujników, oraz sensors-detect – program ułatwiający konfigurację pakietu.

Rysunek 2. Program Ksysguard, skonfigurowany do pokazania

zależności pomiędzy obciążeniem procesora a jego temperaturą

Page 56: Linux+_2004 01_PL

styczeń 200454

sprzęt

jące same czujniki, aż znajdzie kombinację, która działa na danym systemie. W czasie tego testowania zadaje on użyt-kownikowi kilka pytań, proponując zawsze jakieś domyślne zachowanie. Przy pierwszej próbie możemy swobodnie mu zaufać, odpowiadając na wszystkie pytania naciśnięciem klawisza [Enter ].

Jeśli wszystko pójdzie dobrze, program na końcu swo-jego działania wydrukuje, które moduły jądra są wymagane do działania Lm_sensors. Wydruk ten ma postać gotowe-go fragmentu skryptu, który należy dołączyć do któregoś z plików uruchamianych przy starcie systemu. Na moim systemie wyglądał on tak, jak przedstawiono na Listingu 1. Program zapyta również o zgodę na zmodyfikowanie pliku /etc/sysconfig/lm_sensors. Jest to dobry pomysł – w pliku tym również znajdzie się lista modułów, które mają zostać załadowane. Jeśli posiadamy dystrybucję Mandrake, to sam plik /etc/sysconfig/lm_sensors wystarczy do automatycznego ładowania modułów przy starcie, gdyż zawarty w tej dystry-bucji skrypt /etc/init.d/lm_sensors po prostu przeczyta /etc/sysconfig/lm_sensors i załaduje niezbędne elementy. W przy-padku innych dystrybucji możemy po prostu dołączyć frag-ment, podobny do tego z Listingu 1, do któregoś z plików startowych, lub zastosować taki mechanizm, jak w Man-drake. W tym drugim przypadku musimy z dystrybucji źró-dłowej Lm_sensors skopiować plik prog/init/lm_sensors.init do /etc/init.d/lm_sensors oraz oczywiście nadać mu prawa wykonywalności i spowodować (np. jakimś edytorem SysV), aby był wykonywany przy starcie komputera.

Analiza otrzymanej konfiguracjiFakt, że program sensors-detect zakończył pracę z suk-cesem, nie oznacza, że na pewno wszystko jest gotowe i działa. Czekają nas pewne testy. Musimy sprawdzić, jakie dane otrzymamy z każdego z układów, który został wykry-ty przez sensors-detect. W moim przypadku – co widać na Listingu 1 – były to tylko dwa układy: eeprom oraz it87. Program sensors-detect jest jednak daleki od doskonałości i u niektórych użytkowników potrafi „wykrywać” znacznie więcej układów niż rzeczywiście znajduje się w systemie. Jeśli spróbujemy odczytać dane z układu, którego nie ma, program sensors zwróci kompletnie niedorzeczne wyniki.

Ładujemy więc wymienione wcześniej moduły i odczytuje-my najpierw czujniki eeprom poleceniem: sensors eeprom-*. W efekcie dostajemy jedynie mało użyteczne informacje na temat zainstalowanych kości pamięci w systemie. Moduł ten nie będzie nam potrzebny, więc możemy usunąć go z listy ładowanych przy starcie. Następnie badamy kolejny układ: sensors it87-*. Wynik działania tej komendy na moim systemie zamieściłem na Listingu 2. Co prawda, na pierw-szy rzut oka wydaje się, że wynik jest mało rozsądny (przy ponad połowie wszystkich wartości pojawia się ALARM), ale okazało się, iż jest to prawidłowy moduł jądra.

Modyfikacje w /etc/sensors.confProgram sensors na moim systemie zwrócił nieco dziwne wyniki, więc warto przyjrzeć się konfiguracji w /etc/sensors.conf. Jest to bardzo obszernie skomentowany plik, który określa konfigurację kolejno dla wszystkich obsłu-giwanych układów. Mnie w tym przypadku interesował wyłącznie it87.

Zauważyłem, iż BIOS mojego komputera w ogóle nie pokazuje napięć ujemnych -5 i -12. Program sensors poka-zywał w tym zakresie niedorzeczne wyniki, więc dosze-dłem do wniosku, iż mój sprzęt nie potrafi ich prawidłowo odczytywać. Podobnie zresztą z napięciem Stdby. Postano-wiłem zignorować te napięcia, dopisując w /etc/sensors.conf przy moim chip'ie linie:

ignore in5;

ignore in6;

ignore in7;

Następnie zauważyłem, że napięcie 3.3V jest dwukrotnie zawyżone. Tutaj pomocne okazały się komentarze w pliku /etc/sensors.conf, które nakazują w takim przypadku „zako-mentowanie” jednej linii, co też uczyniłem.

Kolejną rzeczą do poprawienia były odczyty obrotów drugiego i trzeciego wiatraczka, których nie posiadam. Należało więc dopisać linie:

ignore fan2;

ignore fan3;

Ostatnim niepokojącym zjawiskiem były za wysokie napię-cia Vcore oraz +12. W tym przypadku użyłem woltomierza,

Listing 1. Końcowy wynik działania programu sensors-

detect

#----cut here----

# I2C adapter drivers

modprobe i2c-viapro

modprobe i2c-isa

# I2C chip drivers

modprobe eeprom

modprobe it87

# sleep 2 # optional

/usr/local/bin/sensors -s # recommended

#----cut here----

Rysunek 3. Program GKreelM potrafi m.in. pokazywać

temperaturę z czujników

Page 57: Linux+_2004 01_PL

55www.linux.com.pl

lm_sensors

aby je porównać. Okazało się, że sensors ma racje. Sąone za wysokie, więc czas kupić nowy zasilacz... Oczywi-ście w takim przypadku można również odpowiednio „do-stroić” /etc/sensors.conf, aby dana wartość była uznawana za normalną i nie wywoływała alarmu.

Po każdej modyfikacji /etc/sensors.conf, aby zmiany odniosły skutek, należy wydać polecenie sensors -s. Ostatecznie więc, po zmodyfikowaniu /etc/sensors.conf, wydaniu polecenia sensors -s oraz sensors, efekt jest taki, jak na Listingu 3.

Samodzielne ustalanie posiadanego sprzętuA co zrobić, gdy wyniki z układów „wykrytych” przez sensors-detect nie są użyteczne. Zapewne oznacza to, że nasz układ lub magistrala I2C nie zostały rozpoznane przez sensors-detect bądź nie są przez niego obsługiwane, przynajmniej w wersji, którą posiadamy. W każdym razie, musimy się dowiedzieć, jaki układ, odczytujący dane z czuj-ników, posiada nasza płyta główna. Informację tę możemy zdobyć z następujących źródeł:

• instrukcja płyty głównej może wymieniać nazwę układu w swojej specyfikacji bądź w innym miejscu, np. na diagramie opisującym konstrukcję płyty;

• możemy samodzielnie odszukać układ na płycie głów-nej – jest to z reguły niewielki, kwadratowy scalak o boku ok. 1-2 cm, a jego oznaczenie można porównać z listą obsługiwanego sprzętu, zamieszczoną na stro-nach projektu Lm_sensors;

• na stronie http://mbm.livewiredev.com/mobolist.html znajdziemy listę płyt głównych i ich czujników dla

programu MS Windows, który wykonuje podobną funkcję.

Gdy wiemy już, jaki układ posiadamy, na stronie http://www2.lm-sensors.nu/~lm78/supported.html możemy spraw-dzić, czy nasz sprzęt jest obsługiwany, a jeśli tak, to od której wersji Lm_sensors. Warto odwiedzić również stronę http://www2.lm-sensors.nu/~lm78/newdrivers.html, która zawiera listę sprzętu, który dopiero będzie obsługiwany przez przyszłe wersje oraz tego, do którego z różnych powodów nie planuje się napisać sterowników.

Praktyczne użycie Lm_sensorsOczywiście stan czujników można sprawdzać okazyj-nie wydając polecenie sensors. Inną możliwością jest użycie bardzo prostego programu Alarmwatch (http://www.dakotacom.net/~donut/ ). Potrafi on – działając w tle – stale monitorować czujniki, aby w przypadku problemów sygnalizować je dźwiękiem z głośnika systemowego lub/i komunikatem w syslog'u. Instaluje się go bardzo prosto – wystarczą polecenia ./configure; make; make install. Do jego działania oczywiście najpierw musimy skonfiguro-wać Lm_sensors. Gdy już to zrobimy i sensors nie pokazuje żadnego alarmu, sprawdzamy wartość pliku /proc/sys/dev/sensors/<nazwa chip-a>/alarms. Tę liczbę używamy jako ignorespec w wywołaniu alarmwatch, które może wyglądać następująco: alarmwatch -B 5 it87-isa-0290 61702. Opcja -B5 oznacza sygnał dżwiękowy co 5 sekund, it87-isa-0290 to pełna nazwa chip-a, która pojawia się po wydaniu komendy sensors, a cyfra 61702 to w moim przypadku ignorespec, który uzyskałem w sposób podany wcześniej.

Dla niektórych użytkowników ciekawym programem może być LMCgi. Jest to skrypt Perla, który wyświetla infor-macje z Lm_sensors na stronie WWW. Jego konfiguracja jest bardzo prosta i sprowadza się jedynie do zmiany nazwy chip-a w źródłach skryptu.

Większość użytkowników będzie zainteresowana graficznymi nakładkami na Lm_sensors. Wśród nich zapewne najpopularniejsze i najbardziej dostępne będą Ksysguard – Strażnik systemu KDE oraz GKrellM – przy-stosowany bardziej do środowiska GNOME. Obydwie te

Listing 2. Wynik działania programu sensors przed

modyfikacją /etc/sensors.conf

# sensors it87-*

it87-isa-0290

Adapter: ISA adapter

Algorithm: ISA algorithm

VCore 1: +1.72 V (min = +1.42 V, max = +1.56 V) ALARM

VCore 2: +2.52 V (min = +2.40 V, max = +2.60 V)

+3.3V: +6.42 V (min = +3.12 V, max = +3.44 V) ALARM

+5V: +4.75 V (min = +4.72 V, max = +5.24 V)

+12V: +13.44 V (min = +11.36 V, max = +12.60 V) ALARM

-12V: -20.61 V (min = -12.63 V, max = -11.41 V) ALARM

-5V: -9.01 V (min = -5.28 V, max = -4.81 V) ALARM

Stdby: +1.88 V (min = +4.72 V, max = +5.24 V) ALARM

VBat: +2.03 V

fan1: 3199 RPM (min = 0 RPM, div = 2)

fan2: 0 RPM (min = 3000 RPM, div = 2) ALARM

fan3: 0 RPM (min = 3000 RPM, div = 2) ALARM

M/B Temp: +40°C (low = +20°C, high = +40°C)

CPU Temp: +38°C (low = +25°C, high = +45°C)

Temp3: +15°C (low = +25°C, high = +45°C)

Rysunek 4. Strona domowa projektu Lm_sensors

Page 58: Linux+_2004 01_PL

styczeń 200456

sprzęt

aplikacje można znaleźć w wielu dystrybucjach Linuksa, a konfiguruje się je bardzo łatwo, przy pomocy myszki. Dzięki nim możemy zawsze mieć na pulpicie podgląd naszych czujników.

Technologia SMARTJeśli nasz dysk twardy wspiera SMART, możemy z niego „wyciągnąć” wiele ciekawych informacji. W tym celu

możemy posłużyć się programami smartctl oraz smartd. Można je znaleźć w większości dystrybucji Linuksa lub ściągnąć z http://smartmontools.sourceforge.net/.

Załóżmy, że dysk, o którym chcemy się dowiedzieć więcej, to /dev/hda. Komenda smartctl -i /dev/hda poin-formuje nas, czy nasz dysk wspiera SMART, oraz czy jego obsługa jest włączona. Jeśli jest wyłączona, możemy ją akty-wować komendą smartctl -s on /dev/hda. Na początek możemy zapytać dysk o jego stan:

smartctl -H /dev/hda

Ostatnia linia wyniku działania tej komendy powinna wyglądać tak:

SMART overall-health self-assessment test result: PASSED

Jeśli zobaczymy tam FAILED zamiast PASSED, oznacza to, że dysk już uległ poważnej awarii bądź najprawdopo-dobniej ulegnie jej w ciągu 24 godzin. Nawet jednak, gdy dysk twierdzi, iż jest sprawny, dobrze jest przeprowadzić pewne testy. Przy pomocy polecenia smartctl -t long

/dev/hda możemy uruchomić, trwający około godziny, test dysku. Krótszy test – trwa poniżej 10 minut – uruchamiamy poleceniem smartctl -t short /dev/hda. Testy te możemy uruchamiać w czasie normalnej pracy dysku, gdy są na nim zamontowane partycje. Ich wynik możemy sprawdzić po zakończeniu poleceniem smartctl -l selftest /dev/hda.

Wszystkie informacje o dysku możemy uzyskać wywo-łując polecenie smartctl -a /dev/hda | less. Nie należy jednak wpadać w panikę, gdy zobaczymy jakieś błędy. Ważne jest zwrócenie uwagi na wartość Reallocated_Sector_Ct, która określa, ile sektorów zostało przeniesionych przez dysk z powodu błędów. Jeśli mamy wartość większą niż zero, oznacza to poważne problemy z dyskiem. Dodatko-wo komenda ta pokazuje wiele ciekawych informacji, np. aktualną temperaturę dysku (Temperature_Celsius) czy ilość godzin „przepracowanych” przez dysk.

GKrellM

Najbardziej rozbudowaną aplikacją graficzną, służącą do moni-torowania systemu, jest GKrellM. Wyróżnia się on dużymi moż-liwościami (potrafi monitorować kilkadziesiąt różnych wartości i jest łatwo rozszerzalny poprzez wtyczki), a jego wygląd można dostosować do własnych preferencji poprzez „skórki” (skins).

Użytkownicy Aurox Linux mogą znaleźć najnowszą wersję wraz z dodatkami na freshrpms.net. Na tej stronie, po wybra-niu „Red Hat 9”, należy ściągnąć pakiet fftw oraz pakiety gkrellm, gkrellm-plugins, gkrellm-themes.

Po uruchomieniu aplikacji i naciśnięciu klawisza [F1], możemy wybrać, które parametry systemu chcemy mieć na bieżąco pod kontrolą. Wśród kilkudziesięciu z nich, najpopu-larniejsze to oczywiście obciążenie procesora i sieci, zajętość i praca dysków oraz oczywiście czujniki komputera. Aby oglą-dać wyniki ich odczytów w GKrellM, musimy najpierw skonfi-gurować Lm_sensors, w przeciwnym razie w dziale „Czujniki” („Sensors” ) nie znajdziemy żadnych pozycji do zaznaczenia.

GkrellM można także używać do innych zadań, np. podgląd kamery internetowej, sprawdzanie, czy dany komputer odpo-wiada na pingi, informowanie o nowej poczcie, a nawet jako mikser dźwięku, tuner radiowy i wielu innych.

Pośród wielu zalet tego programu trzeba wymienić pełną konfigurowalność, bardzo dobrą pomoc (również spolszczoną), którą można znaleźć w zakładce „Info” przy każdej pozycji w konfiguracji, oraz możliwość ustawienia wielu zaawansowa-nych parametrów, wyłącznie przy użyciu myszki.

W Sieci:

• Strona domowa projektu Lm_sensors: http://www.lm-sensors.nu/• Strona domowa projektu Smartmontools: http://smartmontools.sourceforge.net/• Program Alarmwatch: http://www.dakotacom.net/~donut/• Strona domowa programu GKrellM: http://web.wt.net/~billw/gkrellm/gkrellm.html• Strona domowa programu wyspecjalizowanego do odczy-

tu temperatury z twardych dysków: http://coredump.free.fr/linux/hddtemp.php• Baza danych na temat czujników na poszczególnych

płytach głównych:http://mbm.livewiredev.com/mobolist.html

Listing 3. Wynik działania programu sensors po modyfikacji

/etc/sensors.conf

che:~# sensors it87-*

it87-isa-0290

Adapter: ISA adapter

Algorithm: ISA algorithm

VCore 1: +1.72 V (min = +1.42 V, max = +1.56 V) ALARM

VCore 2: +2.52 V (min = +2.40 V, max = +2.60 V)

+3.3V: +3.21 V (min = +3.13 V, max = +3.45 V)

+5V: +4.75 V (min = +4.72 V, max = +5.24 V)

+12V: +13.44 V (min = +11.36 V, max = +12.60 V) ALARM

VBat: +2.03 V

fan1: 3199 RPM (min = 0 RPM, div = 2)

M/B Temp: +40°C (low = +20°C, high = +40°C)

CPU Temp: +38°C (low = +25°C, high = +45°C)

Temp3: +16°C (low = +25°C, high = +45°C)

Page 59: Linux+_2004 01_PL

57www.linux.com.pl

Dr. Dobb’s Journal jest wiodącym magazynem dla deweloperów opro-gramowania. Od ponad 25 lat jest on najlepszym źródłem informacji dla profesjonalnych programistów, pisanym i redagowanym przez pro-gramistów dla programistów. W DDJ znajdziesz liczne algorytmy, wskazówki przydatne podczas pisania progra-mów, opracowania dotyczące podsta-

wowych zagadnień z projektowania oprogramowania oraz wszystkie listingi omawianych programów, co zagwaran-tuje Ci, że staniesz się jeszcze lepszym programistą.

Dr. Dobb’s Journal is the leading magazine for softwa-re developers. For more than 25 years it has been the foremost source of software tools for the professional programmer. It is written and edited by programmers for programmers. With DDJ you’ll get algorithms, coding tips, discussions of fundamental design issues, and program listings guaranteed to make you a better programmer.

C/C ++ Users Journal jest magazy-nem poświęconym praktycznym roz-wiązaniom dla programistów C/C++, który omawia zaawansowane techniki programowania w C, C++ oraz Javie. Każde wydanie dostarcza szczegó-łowych informacji o wymienionych językach, stosowanych standardach oraz programowaniu zorientowanym obiektowo. Zajrzyj do CUJ, aby znaleźć najlepsze oraz najnowsze techniczne informacje o językach C i C++, które wciąż są najlepszym wyborem podczas rozwijania współczesnego oprogramowania.

C/C ++ Users Journal is the magazine devoted to practicalsolutions for C/C ++ programmers, providing advancedtechniques in C, C ++ and Java. Each issue provides how-to articles with full source code, and in-depth infor-mation about languages, standards and object-orien-ted programming. Look to CUJ for the best and latest in technical information on C and CC++, the language of choice for contemporary software development.

Wybierz swoją prenumeratę:

Drodzy Prenumeratorzy!

Wspólnie z firmą INTERNEWS, dystrybutorem i importerem czasopism obcojęzycznych, przygotowaliśmy dla Was atrak-cyjną ofertę zakupu prenumeraty ze zniżką wyszczególnionychw tabeli czasopism informatycznych.

Zamówienia i szczegółowe informacje:tel. (22) 853 60 23, 853 87 77. www.linux.com.pl.W tym numerze polecamy:

ACCESS OFFICE & VB ADVISOR 237,70 180,70

C-C++ USERS JOURNAL 199,50 152,10

COMP.SHOPPER CD 222,50 171,20

COMPUTER ARTS CD* 366,20 277,70

COMPUTER ARTS SPECIAL CD 391,80 320,00

COMPUTER GAMING WORLD CD 354,30 268,70

COMPUTER SHOPPER USA 203,20 155,60

CRE@TE ONLINE CD 351,70 266,30

DR.DOBB`S JOURNAL 199,50 152,10

DVD REVIEW 280,10 214,30

DYNAMIC GRAPHICS 118,90 90,40

HOME ENTERTAIMENT 216,90 165,80

INTELLIGENT ENTERPRISE 355,70 270,40

INTERNET MAGAZINE CD 223,70 170,90

LAPTOP 240,30 212,80

LINUX FORMAT CD* 354,30 268,70

LINUX JOURNAL 203,80 155,90

LINUX MAGAZINE 232,30 177,30

MAC FORMAT CD* 354,30 268,70

MAC USER 440,20 339,30

MACWORLD UK CD 287,60 218,70

MACWORLD USA CD 203,20 155,60

MSDN MAGAZINE 239,70 182,80

OFFICIAL PS2 MAGAZINE* 329,20 250,00

OFFICIAL UK PLAY`STATION CD* 297,30 226,00

PC ADVISOR CD 208,50 173,50

PC FORMAT CD* 388,70 318,80

PC FORMAT DVD* 432,50 354,10

PC GAMER CD* 301,80 230,50

PC MAGAZINE UK CD 183,30 140,60

PC MAGAZINE USA 520,60 397,20

PC PLUS CD 401,60 329,30

PC PRO CD 293,80 224,50

PC UTILITIES CD 287,60 218,70

PC WORLD USA 163,30 125,60

PC ZONE CD* 252,20 192,30

PERS.COMP.WOR.CD 205,40 158,30

PLAY MAG UK DVD* 234,60 179,00

PLAYSTATION WORLD DVD* 244,80 187,80

PRACTICAL INTERNET CD* 320,60 243,50

PSM2 DVD* 240,30 183,30

SOFTWARE DEWELOPMENT 199,50 152,10

SYS ADMIN 237,10 180,30

WEB PAGES CD 167,80 145,80

WHAT PC ? CD 239,10 182,50

WIRELESS BUSINESS & TECHNOLOGY 237,70 170,70

Tytuł czasopisma obecna cena cena prenumeraty promocyjna półrocznej prenumeraty (brutto) półrocznej

* wraz z kosztami wysyłki zwykłej (pln)

Page 60: Linux+_2004 01_PL

styczeń 200458

dla programistów

Pisanie bezpiecznych programówMarek Sawerwain

Tworzone obecnie programy to duże i skompliko-wane projekty. Błędy, które pojawiają się w tak złożonym kodzie, są niestety jego naturalną czę-ścią. Zazwyczaj mija sporo czasu, zanim zostaną

wyeliminowane. Obecność czy nawet podejrzenie jakiego-kolwiek błędu w programie jest niepokojące, jednak – co gorsza – błędy w programach są często wykorzystywane do przejęcia kontroli nad systemem operacyjnym. Najczęściej stosuje się tzw. przepełnienie bufora oraz błędy w obsłu-dze pamięci. Jednym ze sposobów eliminacji tego rodzaju błędów jest zastosowanie odpowiedniego języka progra-mowania, np. Javy. W większości przypadków programy tworzone są jednak w językach C i C++, które co prawda nie oferują tak dużego bezpieczeństwa wykonania jak Java, ale są wydajniejsze.

Powstało wiele dodatkowych rozwiązań dla języków C/C++, oferujących lepsze zabezpieczenie przed błędami związanymi z obsługą pamięci, jak również z bezpiecznym obsługiwaniem ciągów znaków. Większość tych bibliotek jest przeznaczona dla systemów uniksowych, w tym rów-nież dla Linuksa. W tym artykule chciałbym przedstawić kilka bardzo cennych rozwiązań, które pozwalają tworzyć oprogramowanie wydajne oraz – co ważne – znacznie bez-pieczniejsze i odporne na wyjątkowe sytuacje.

Wszystkie omawiane w tym artykule biblioteki działają znakomicie pod Linuksem, który nadaje się znacznie lepiej na platformę do tworzenia bezpiecznych programów niż choćby Windows, bowiem liczne grono użytkowników konkretnych bibliotek powoduje, że znacznie szybciej usuwane są błędy i poszerzane ich możliwości. Co więcej, niektóre biblioteki – jak dość szeroko znana Electric Fence - są przeznaczone wyłącznie dla systemów uniksowych.

Czy nasze programy są bezpieczne?Na to pytanie można odpowiedzieć bardzo szybko: nieste-ty nie. Im bardziej złożone oprogramowanie, tym większe prawdopodobieństwo, że znajdują się w nim błędy. Błędy wynikające z przepełnienia bufora dotyczą nawet tak zna-

nych oraz dopracowanych programów, jak Apache, Send-mail, Wu-ftpd czy nawet OpenSSH. Ten rodzaj błędu nie dotyczy tylko i wyłącznie aplikacji związanych z obsługą sieci. Pierwszy z brzegu przykład programu, który można przytoczyć, to standardowy program Man, w którym już dość dawno, bo w 1999 roku, wykryto taki błąd.

Ogólny zarys techniki przepełnia bufora jest wręcz try-wialny. Spójrzmy na taką funkcję:

void funkcja(char *t) {

int i,j;

char b[32];

strcpy(&b, “ciag znaków“);

strcpy(&b, t);

// operacje na zmiennej b

}

Wewnętrzny bufor b może okazać się zbyt mały, jeśli parametr t będzie zawierał zbyt dużo znaków. Zapisanie większej ilości danych spowoduje zmodyfikowanie stosu (umieszczane są na nim również zmienne lokalne), na którym znajduje się adres powrotu z funkcji. Odpowiednio preparując dane można ten adres zmodyfikować – Rysu-nek 1.

Błąd przepełnienia bufora w powyższej postaci dość często pojawia się w programach. Przykładem może być świetny program do odtwarzania plików multimedialnych

O autorze:Autor zajmuje się tworzeniem oprogramowania dla WIN32 i Linuksa. Zainteresowania: teoria języków programowania oraz dobra literatura.Kontakt z autorem: [email protected].

Rysunek 1. Zawartość stosu przed i po zmianie zawartości

zmiennej b

Page 61: Linux+_2004 01_PL

59www.linux.com.pl

bezpieczne programy

MPlayer. Całkiem niedawno odkryto w tym programie możliwość przepełnienia bufora poprzez funkcję sprintf. Błąd znajdował się w funkcji asf_http_request, w pliku asf_streaming.c – jej najistotniejsze fragmenty prezentuje Listing 1.

Odpowiednio preparując plik w formacie asf można umieścić kod w adresach URL, a funkcja sprintf może doprowadzić do nadpisania zmiennej str i w efekcie adresu powrotnego funkcji, ponieważ reaguje tylko na ogranicze-nie w postaci znaku zero. Jej stosowanie jest więc tak samo niebezpieczne jak pozostałe funkcje działające na ciągach znaków.

Rozwiązaniem tego rodzaju błędów jest odpowiednia alokacja pamięci. Innym rozwiązaniem jest zastosowanie bibliotek do zarządzania ciągami znaków, w których długo-ści ciągów znaków są dynamiczne. Jest to dość skuteczne rozwiązanie. Czasem, jak w przypadku sprintf, można ograniczyć liczbę znaków. Z tego powodu poprawka MPlayera w niefortunnym kodzie z Listingu 1 jest bardzo prosta: sprintf( str, "Host: %.220s:%d", url->hostname, url->port );.

Istnieją także mechanizmy, które można wbudować w kompilator, np. do kompilatora GCC w wersji 2.96 dołączano łatkę o nazwie StackGuard, która chroniła stos. Nie rozwiązuje to jednak wszystkich problemów (głównie

związanych z alokacją pamięci), a łatka ta nie jest jeszcze dostępna dla nowych wersji kompilatora GCC 3.x. Ponadto StackGuard obniża wydajność – wywołanie funkcji i powrót z nich pociąga za sobą testy spójności stosu.

SCSL – bezpieczna obsługa ciągów znakówInteresującą biblioteką do obsługi ciągów znaków jest Safe C String Library (SCSL). Oferuje ona ponad dwadzieścia funkcji związanych z obsługą ciągów znaków ze szcze-gólnym uwzględnieniem ochrony przed przepełnieniem bufora. Wprowadzono także pojęcie zaufanego ciągu znaków, czyli techniki podobnej do trybu taint w Perlu.

Podczas operacji na ciągach znaków, samoczynnie zmie-niają one swoją wielkość. Z tego powodu nie trzeba obawiać się, iż przekroczymy jakiś założony wcześniej limit.

Biblioteka oferuje nam nowy typ danych o nazwie safestr_t. Jej autorzy umożliwili konwersję do typu char *,dzięki czemu możliwa jest bezproblemowa współpraca ze standardowymi funkcjami. Autorzy zalecają rozważne sto-sowanie tego mechanizmu.

Jeśli tworzymy nowy ciąg znaków, to z poziomu SCSL wykonujemy to następująco:

safestr_t str;

str = safestr_create("jakiś ciąg znaków", 0);

Dzięki konwersji do char * dopuszczalna jest następująca konstrukcja:

safestr_t str;

str = safestr_alloc(10, 0);

strcpy((char *)str, "ciąg znaków dłuższy niz 10 znaków");

W takim przypadku jest to jawne „proszenie się o kłopoty”, ponieważ nad przypisaniem nowej wartości biblioteka SCSL nie ma już kontroli. Z tego powodu powinniśmy unikać mieszania ze sobą standardowych funkcji oraz pochodzą-cych z SCSL.

Wśród typowych funkcji, takich jak przydzielanie pamięci i wyznaczanie długości ciągów znaków, do naszej dyspozycji oddano także odpowiedniki printf w typowych odmianach: fprintf, sprintf oraz vsprintf. Niestety, brakuje odpowiednika scanf – istnieje tylko

Listing 1. Fragmenty funkcji asf_http_request

HTTP_header_t * asf_http_request(streaming_ctrl_t

*streaming_ctrl) {

char str[250];

sprintf( str, "Host: %s:%d", server_url->hostname,

server_url->port );

sprintf( str, "Host: %s:%d", url->hostname, url->port );

}

Instalacja pakietów

Instalacja poszczególnych bibliotek nie jest kłopotliwa, pomimo, że wymaga kompilacji. Większość dystrybucji niestety nie ofe-ruje tych bibliotek, ale dzięki obecności skryptu ./configure ich instalacja sprowadza się do typowych trzech komend.

Jako pierwsze podajemy polecenie: ./configure --prefix=/usr, aby dokonać konfiguracji. Takie pakiety, jak SCSL czy Vstr, nie wymagają dodatkowych opcji, natomiast dla Libcwd warto dodać opcję --enable-magic. Pozostałe możliwości w zakresie zarządzania pamięcią powinny być domyślnie włą-czone, choć zawsze można wydać serię następujących opcji, takich jak --enable-alloc, --enable-marker, --enable-location. Po konfiguracji wystarczy wydać polecenie make, aby rozpocząć kompilację, a po zakończeniu tego procesu make install, aby zainstalować biblioteki. Warto wydać również polecenie ldcon-fig, aby odświeżyć plik zawierający spis dostępnych bibliotek dynamicznych.

Z tego schematu wyłamuje się pakiet Memwatch, gdyż są to zaledwie dwa pliki: memwatch.c oraz memwatch.h, które należy dołączyć do własnego projektu w sposób, który opisałem w artykule. W przypadku pozostałych bibliotek, ich dołączenie polega na dodaniu nazw bibliotek dynamicznych, ewentualnie definicji odpowiednich flag, np. dla Libcwd polece-nie kompilacji przedstawia się następująco:

g++ -o app app.cc -lcwd

pod warunkiem, że biblioteki dynamiczne oraz pliki nagłówkowe zostały zainstalowane w typowych katalogach: /usr/lib oraz /usr/include, czyli dla prefiksu /usr.

Page 62: Linux+_2004 01_PL

styczeń 200460

dla programistów

funkcja safestr_read-line, po której można spodziewać się, że potrafi wczytać linię tekstu zakończoną znakiem nowej linii bądź EOF.

Jedną z ciekawszych możliwość SCSL jest utworzenie ciągu znaków tylko do odczytu. Wykonuje to funkcja safestr_makereadonly. Autorzy oddali do naszej dyspozycji także funkcję, która sprawdza, czy dany ciąg istotnie jest przeznaczony tylko do odczytu:

safestr_t str;

str = safestr_create("jakiś ciąg znaków", 0);

safestr_makereadonly(str);

if(safestr_isreadonly(str)) {

// ciąg znaków jest przeznaczony wyłącznie do odczytu }

Funkcją odwrotną jest safestr_makewritable. Powoduje ona, że dany ciąg można modyfikować. Jeśli będziemy stosować tylko i wyłącznie funkcje SCSL, możemy mieć pewność, że dany ciąg znaków nie będzie zmodyfikowa-ny bez naszej wiedzy.

Drugą przydatną techniką są wspomniane wcześniej zaufane ciągi. Można nadać flagę zaufania (ang. trusted ) na określony ciąg. Na zaufanym ciągu można oczywiście wykonywać wszystkie operacje, jednak własność zaufa-nia będzie aktywna, gdy pozostałe ciągi znaków także będą miały tę własność. Wykonajmy operację wstawiania do ciągu zaufanego jakiegoś innego ciągu:

safestr_t cel, tmp_str;

safestr_insert(cel, 10, tmp_str);

Jeśli ciąg tmp_str nie posiada flagi zaufania, SCSL samo-czynnie zdejmie flagę zaufania z ciągu cel. Wykonując ważne operacje możemy sprawdzać, czy nie doszło do operacji na ciągach znaków pozbawionych flagi zaufa-nia:

if (safestr_istrusted(cel)){

// ciąg posiada flagę zaufania

}

else {

// ciąg nie posiada flagi zaufania

}

Interesującą funkcją jest safestr_memzero. Jej zadanie jest identyczne z biblioteczną funkcją memset, przy czym wypełnia ona obszar pamięci zerami. Wprowadzenie takiej funkcji autorzy umotywowali następująco: stosując silną optymalizację, kompilator może usunąć wywołanie memset czyszczące pamięć. Funkcja ta została tak skonstruowana, aby kompilator nie przeprowadził na niej tego rodzaju opty-malizacji.

Vstr – inne spojrzenie na ciągi znakówO ile poprzednia biblioteka była przeznaczona dla każdego, kto chce poprawić bezpieczeństwo obsługi ciągów znaków, to biblioteka Vstr jest przeznaczona do obsługi ciągów znaków w aplikacjach o charakterze sieciowym, gdzie istot-nym aspektem jest odbiór danych. Nie ma oczywiście prze-ciwwskazań, aby stosować Vstr w programach ogólnego przeznaczenia. Wszystkie funkcje API zostały napisane tak, aby możliwa była praca w trybie nieblokującym. Oznacza to, że podczas wysyłania ciągu znaków – choćby na ekran – może odbywać się to fragmentami. Co ważniejsze, funk-cje odczytujące ciąg znaków z dowolnego urządzenia także posiadają taką własność. Takich możliwości nie oferowała poprzednia biblioteka – SCSL jest ukierunkowana na zwięk-szenie bezpieczeństwa typowych operacji.

Vstr oferuje również ciekawe rozwiązania w zarządza-niu pamięcią przechowującą poszczególne ciągi znaków. Co więcej, Vstr nie posiada wyróżnionej reprezentacji łańcucha znaków – nie są one reprezentowane jako typ

Listing 2. Wyświetlenie komunikatu na ekranie

#define VSTR_COMPILE_INCLUDE 1

#include <vstr.h>

#include <unistd.h>

int main(int argc, char **argv)

{

Vstr_base *s=NULL;

if(!vstr_init())

return -1;

s=vstr_dup_cstr_buf(NULL, "Hello World!!!\n");

while (s->len) vstr_sc_write_fd(s, 1, s->len,

STDOUT_FILENO, NULL);

vstr_free_base(s);

vstr_exit();

return 0;

}

Listing 3. Fragment kodu biblioteki Libmcrypt, zawierający

błąd

static int internal_init_mcrypt(MCRYPT td, void *key,

int lenofkey, void *IV) {

const int *sizes = NULL;

sizes = mcrypt_enc_get_supported_key_sizes(td,

&num_of_sizes);

}

if (sizes != NULL){

// free(sizes); !!! źle

} else {

}

if (ok == 0){

}

else {

}

free(sizes); // OK

Page 63: Linux+_2004 01_PL

61www.linux.com.pl

bezpieczne programy

char *, ale raczej jako pojedyncze bloki bądź węzły. Idea jest bardzo podobna do dynamicznej listy. Ciąg znaków jest przechowywany we fragmentach, które oczywiście nie stanowią ciągłego obszaru, tak jak w typowej orga-nizacji ciągu dla języka C. W większości ataków wyko-rzystuje się ogólnie uznaną organizację łańcucha znaków. Zmiana organizacji powoduje, że trudniej będzie wyko-rzystać sposób działania funkcji działających na ciągach znaków. Dodatkowym walorem innej organizacji jest fakt, że dzięki temu autorzy biblioteki Vstr mogli dość mocno zoptymalizować obsługę ciągów znaków. Biblioteka ofe-ruje także typowe API, jak choćby odpowiedniki funkcji printf, zgodne z nowym standardem języka C, czyli C99. Co więcej, można wprowadzić także własne symbole formatujące.

„Hello World” po raz wtóryChoć wyświetlenie komunikatu na ekranie można zre-alizować za pomocą Vstr w bardziej „cywilizowany” sposób, to kod z Listingu 2 oddaje bardzo dobrze sens tej biblioteki. Wyświetlamy komunikat za pomocą pętli typu while małymi fragmentami. Przygotowaniem komunikatu zajmuje się funkcja vstr_dup_cstr_buf, która w jednym z argumentów przyjmuje typowy ciąg dla języka C, czyli char *. Wysyłanie zawartości zmiennej s to zadanie funkcji vstr_sc_write_fd. Jej zaletą jest oczywiście tryb pracy. Poje-dynczym wywołaniem wysyłamy do urządzenia (w tym przypadku do strumienia stdout) fragment ciągu znaków, po czym aplikacja może wykonywać inne czynności. O ile wysyłanie pojedynczego ciągu znaków nie stanowi dużego obciążenia, to wysyłanie do kilku różnych źródeł już może. Wykonywanie tej czynności małymi fragmentami oznacza mniejsze obciążenie procesora. Wbrew pozorom ma to duże znaczenie dla bezpieczeństwa, gdy w jednym miejscu

odbieramy dane, a w innym musimy je przesłać do wielu odbiorców. Niemożliwe staje się w takim przypadku prze-ciążenie programu operacjami wejścia/wyjścia.

Vstr i odbieranie danychGdy odczytujemy dowolny ciąg znaków, zazwyczaj posłu-gujemy się funkcją scanf. Wadą tej funkcji jest oczywiście zupełny brak kontroli, ile danych zostanie odczytanych. Rozwiązaniem jest czytanie bezpośrednio funkcją read, przy czym i tak samodzielnie trzeba napisać kod spraw-dzający, ile znaków zostało odczytanych. Biblioteka Vstr oferuje funkcję, która odczytuje dokładnie tyle bajtów ile trzeba i podobnie jak w przykładzie z poprzedniego akapitu, może odczytywać dane fragmentami. Jest to funkcja vstr_sc_read_iov_fd. Posiada ona aż sześć argu-mentów. Pierwszy to typ Vstr_base *, reprezentujący ciąg znaków. Drugi argument to miejsce, w którym ma zostać dołączony nowy fragment ciągu znaków. Trzeci parametr do deskryptor plików. Następne dwa argumenty to mini-malna i maksymalna ilość węzłów, które przeznaczamy na odczytywany ciąg znaków. W ostatnim parametrze możemy podać adres bądź wskazanie na zmienną, w której zostanie umieszczony ewentualny dodatkowy kod błędu. Poniższy kod pozwala utworzyć ciąg znaków ze standardowego wejścia:

Vstr_base *read_str;

read_str=vstr_make_base (NULL);

while(vstr_sc_read_iov_fd(read_str, read_str->len,

STDIN_FILENO, 1, 16, NULL));

Listing 4. Przykładowy kod poddany analizie przez

Memwatch

#include <stdio.h>#include <signal.h>

#include "memwatch.h"

int main(int argc, char **argv)

{

mwStatistics(2);

char *p, *unalloc;

p=(char *) malloc(5);

unalloc=(char *) malloc(500);

strcpy(p, "12345");

printf("%s\n", p);

strcpy(p, "1234567");

printf("%s\n", p);

p=(char*)malloc(50);

free(p);

return 0;

}

Listing 5. Wyniki śledzenia programu z Listingu 4

= MEMWATCH 2.71 Copyright (C) 1992-1999 Johan Lindh =

Started at Sun Nov 23 22:03:03 2003

Modes: __STDC__ 64-bit mwDWORD==(unsigned long)

mwROUNDALLOC==8 sizeof(mwData)==32 mwDataSize==32

statistics: now collecting on a line basis

Stopped at Sun Nov 23 22:03:03 2003

unfreed: <2> t1.c(14), 500 bytes at 003D25D0

{FE FE FE FE FE FE FE FE FE FE .......}

unfreed: <1> t1.c(13), 5 bytes at 003D2540

[overflowed] {31 32 33 34 35 .. .. .. 12345}

Memory usage statistics (global):

N)umber of allocations made: 3

L)argest memory usage : 555

T)otal of all alloc() calls: 555

U)nfreed bytes totals : 505

Memory usage statistics (detailed):

Module/Line Number Largest Total Unfreed

t1.c 3 555 555 505

22 1 50 50 0

14 1 500 500 500

13 1 5 5 5

Page 64: Linux+_2004 01_PL

styczeń 200462

dla programistów

Nie ma tu ograniczenia, ilu danych się spodziewamy, więc pętla będzie działać tak długo, jak będą jakieś dane do odczytu. Określimy tylko ilość węzłów, z których składa się ciąg, przy czym węzły mogą mieć dowolną długość. Zaletą Vstr jest fakt, że wczytanie nowych fragmentów nie będzie wymagać czasochłonnej alokacji czy realokacji pamięci.

Obsługa pamięciDrugim istotnym aspektem na drodze uzyskania bezpiecz-nej aplikacji jest poprawne zarządzanie pamięcią. Aby uczynić nasz program lepszym w tym względzie, najlepiej wprowadzić automatyczne zarządzanie pamięcią wzorem języka Java. Niestety, powoduje to obniżenie wydajności. Wiązałoby to się także z koniecznością modyfikacji samego języka (czytelnikowi zainteresowanemu taką tematyką polecam odwiedzić strony o językach D oraz Cyclone).

Do problemu można podejść inaczej. Program można wyposażyć w dodatkową bibliotekę, która będzie zajmo-wać się monitorowaniem operacji na pamięci. Tego rodzaju biblioteki są nazywane debugerami pamięci (ang. memory debuggers). Śledzą one wywołania standardowych funkcji, takich jak malloc oraz free, bądź operatorów new i delete dla języka C++. Tego rodzaju bibliotek powstało bardzo wiele i można dosłownie przebierać wśród dostępnych roz-wiązań. Wspólną cechą wielu z nich jest to, że można pisać program przy pomocy standardowych poleceń, takich jak malloc i free. Podczas kompilacji odpowiednią flagą naka-zujemy podmianę oryginalnych poleceń na pochodzące z określonej biblioteki, uzyskując w ten sposób śledzenie obsługi pamięci. Usuwając definicję flagi podczas ponow-nej kompilacji przywracane są standardowe funkcje.

Wykrycie błędu w obsłudze pamięci jest znacznie trud-niejsze niż w przypadku bufora, nawet jeśli kod jest dość oczywisty, czego przykładem może być błąd w bibliotece Libmcrypt, która (uwaga!) służy do obsługi szyfrów syme-trycznych.

Błąd, który popełniono w tej bibliotece, wiązał się z przydzieleniem pamięci zmiennej sizes przez funkcję mcrypt_enc_get_supported_key_sizes – nigdzie nie była ona potem zwalniana. Co gorsza, jednym z pierwszych roz-

wiązań tego błędu było wstawienie funkcji free wewnątrz instrukcji if (sizes != NULL), co wydaje się logiczne (oznaczone na Listingu 3 przez "!!!"). Tymczasem wewnątrz drugiej instrukcji warunkowej if (ok == 0) zmienna sizes nadal była wykorzystywana (pod warunkiem, że nie przyj-muje wartości NULL). Oczywiście prawidłowym rozwiąza-niem jakże oczywistym jest umieszczenie wywołania free poza pierwszą i drugą instrukcja warunkową.

Ten błąd prowadził ostatecznie do strat pamięci, ale wyobraźmy sobie, że gdzieś indziej poprzez podobne nie-dopatrzenie nie byłyby usuwane wskaźniki na klucz. Taki błąd znacząco obniżałby jakość biblioteki, a bezpieczeń-stwo szyfrowanych danych byłoby bardzo niskie.

Zastosowanie odpowiednich monitorów pamięci, choćby takich jak opisane poniżej Memwatch dla języka C i Libcwd dla C++, ułatwiłoby odszukanie takiego błędu – każde wywołanie malloc czy free jest zliczane i śledzone.

Pakiet MemwatchMemwatch to mały pakiet składający się z dwóch plików źródłowych: memwatch.c i memwatch.h, które można dołą-czyć do naszej aplikacji, aby uzyskać śledzenie wywołań funkcji malloc i free.

Listing 4 zawiera przykład kodu, w którym zostały popełnione błędy w zarządzaniu pamięcią. Dokładnie cztery błędy, bowiem dwa razy kopiujemy dłuższy ciąg znaków do zmiennej p, pamięć przydzielona zmiennej unalloc nie została zwolniona, natomiast zmienna p ma dwukrotnie przydzielaną pamięć.

API pakietu Memwatch zawiera wiele funkcji przy-datnych przy bardziej zaawansowanej obsłudze, ale w naszym programie wystarczy dołączyć plik nagłówko-wy. Aby uzyskać więcej informacji, wywołujemy funkcję mwStatistics z parametrem 2. Jak widać, w pozostałej części kodu operacje na pamięci są przeprowadzane w standardowy sposób. Dołączenie pakietu Memwatch powinno wychwycić popełnione przez nas błędy i tak jest w istocie – podczas kompilacji wystarczy zdefiniować dwie flagi: MEMWATCH oraz MEMWATCHSTDIO. Pierw-

Listing 6. Przykładowe komunikaty wygenerowane przez

bibliotekę Libcwd

MALLOC : operator new[]

0x81a123a int [20], (size = 80);

zmienna p to tablica o 20 elementach

MALLOC : delete[] 0x81a123a

t1.cc:24 int [20];

(sz = 80) zmienna p to tablica o 20

elementach <unfinished>

COREDUMP: delete[]: magic number corrupt!

Quit (core dumped)

Rysunek 2. Strona domowa biblioteki Vstr, która zawiera wiele

informacji związanych z bezpieczną obsługą ciągów znaków

Page 65: Linux+_2004 01_PL

63www.linux.com.pl

bezpieczne programy

sza definicja naturalnie uruchamia cały system śledzenia, natomiast druga wprowadza możliwość odpowiedzi na niespełnione asercje. Wobec tego, kompilacja przedstawia się następująco:

gcc -DMEMWATCH -DMEMWATCH_STDIO t1.c memwatch.c -o t1 –I.

Gdy skompilujemy i uruchomimy program, pojawi się plik z logiem, w którym znajdą się informacje, jakie błędy zostały wychwycone oraz opis zużycia pamięci przez nasz program. Dla kodu z Listingu 4 plik z logiem wygląda tak jak na Listingu 5. Po słowie overflow zostały wymienione linie, w których nastąpiło przekroczenie wielkości bufora. Została tam także umieszczona informacja, o ile bajtów przekroczony został bufor. Dodatkowo, po słowie unfre-ed zostały wyszczególnione zmienne, dla których pamięć nie została zwolniona. Pakiet Memwatch wskazuje także numery linii w kodzie źródłowym, w których następuje przydzielenie pamięci.

Zachęcam, aby do jednego ze swoich własnych pro-gramów pisanych w C podłączyć ten pakiet i prześledzić zarządzanie pamięcią. Może się okazać, że gdzieś pogubiły się cenne bajty.

Oczywiście, możliwość uzyskania logu nie jest końcem możliwości Memwatch. Pakiet oddaje nam do dyspozycji funkcję mwIsSafeAddr, którą sprawdzimy, czy dany adres jest bezpieczny. Poniższym kodem badamy, czy istnieje możliwość zapisu danych pod zmienną wskaźnikową p, lecz 100kB dalej względem jej początku:

if( mwIsSafeAddr(p+(1024*100),1) ) {

*(p+(1024*100)) = 0;

}

W logu możemy także wprowadzać własne komentarze makrem TRACE.

Pakiet Memwatch pomimo niewielkich rozmiarów posiada wiele cennych możliwości w zakresie ochrony pamięci. Bardzo cennym rozszerzeniem są asercje, które

mogą funkcjonować tak jak oryginalne asercje, czyli zatrzy-mywać natychmiast działanie programu. Wersja asercji z pakietu Memwatch umożliwia jednak zadanie pytania, czy wykonanie danej asercji ma być powtórzone bądź zignorowane, czy też ostatecznie przerwać wykonanie programu.

Libcwd – coś dla miłośników C++Rozwiązania podobne do Memwatch istnieją także dla języka C++. Jednym z bardziej rozbudowanych jest biblio-teka Libcwd. Nie jest to tylko i wyłącznie pakiet do moni-torowania operacji na pamięci, ale również cały system przeznaczony do śledzenia pracy aplikacji.

Śledzenie operacji zawiązanych z dynamicznym przy-dzielaniem pamięci w przypadku C++ jest ułatwione dzięki własnościom samego języka. Przeciążenie operatorów new oraz delete (oraz ich odmian nazywanych operato-rami umieszczającymi) powoduje, że wszelkie operacje na pamięci można łatwo monitorować. Libcwd oferuje śledzenie dosłownie wszystkich operacji na pamięci, doko-nywanych przez naszą aplikację nawet na poziome funkcji bibliotecznych C++. Takich możliwości nie dawał nam pakiet Memwatch – świadczy to dobrze o jakości biblioteki Libcwd.

Libcwd oferuje także wykrywanie błędów charaktery-stycznych dla C++ , np. pomyłki w używaniu operatorów do alokacji pamięci – zostanie zastosowany operator new, a do usunięcia delete [].

O ile stosowanie Memwatch ograniczało się do uży-wania malloc i free, to libcwd pozwala na wprowadza-nia dodatkowych komentarzy poprzez funkcje AllocTag. Informacje te są używane przez bibliotekę w momencie wykrycia nieprawidłowości, więc oprócz informacji, w której linii nastąpił błąd, możemy także podać komen-tarz, np.:

int N=20;

int* p = new int[N];

AllocTag(p, "zmienna p to tablica o “ << n

Fakt, że została zadeklarowana zmienna zostanie odno-towany w logu oraz umieszczony w komentarzu. Wykry-

Listing 7. Badanie strat w pamięci

libcw::debug::marker_ct *mkr =

new libcw::debug::marker_ct(“znacznik 1”);

// operacje na pamięci

Debug(move_outside(mkr, p));

if (libcw::debug::mem_blocks() > 0)

Dout(dc::warning, "Nie zwolniono pamięci "

else

Dout(dc::malloc, "Brak strat w pamieci\n");

delete mkr;

Rysunek 3. Strona domowa biblioteki Libcwd

Page 66: Linux+_2004 01_PL

styczeń 200464

dla programistów

wanie przez Libcwd przepełnienia bufora również jest możliwe. Jak podaje autor, należy podczas konfiguracji pamiętać o opcji --enable-magic, która powoduje, że każdy przydzielony blok jest wyposażany w specjalne dodatkowe wartości, tzw. „magiczne liczby” (ang. magic number) na jego początku i końcu. Jeśli zostaną one zamazane, to oczywiście oznacza to, że nastąpiła próba przepełnieniu bufora. Uzupełnijmy kod o następujące linie:

p[20]=0;

p[21]=0;

p[22]=0;

delete [] p;

W logu powinny znaleźć się informacje podobne do tych z Listingu 6. W pierwszej linii zostaliśmy poinfor-mowani o przydzieleniu pamięci. Druga linia dotyczy wywołania operatora delete. Proces ten jednak nie został zakończony z powodu zmodyfikowania dodat-kowych wartości.

Do innych możliwości Libcwd należy np. sprawdza-nie, czy zmienna może zostać pomyślne usunięta. Taki test przeprowadza się funkcją test_delete. Biblioteka oferuje również znaczniki pamięci, które można wyko-

rzystać do sprawdzenia, czy nastąpiła utrata pamięci. Po utworzeniu znacznika można wykonywać operacje przy-dzielenia i zwalniania pamięci, ale gdy chcemy spraw-dzić, czy mamy jakieś straty, należy wywołać funkcję move_outside i wskazać zmienną, od której rozpoczęto operacje z pamięcią. Umożliwia to sprawdzenie za pomocą mem_blocks (Listing 7), czy istnieją jakieś nie-zwolnione bloki. Trzeba pamiętać, że funkcje mem_blocks oraz mem_size nie tylko biorą pod uwagę zmienne aloko-wane przez bibliotekę standardową, a także ciągi znaków podawane w cudzysłowach.

Biblioteka Libcwd oferuje jeszcze więcej możliwości związanych z samym procesem śledzenia, np. można śle-dzić proces ładowania bibliotek dynamicznych, odczytywać zdefiniowane symbole oraz na podstawie adresu biblioteki sprawdzić, ile pamięci pod ten adres zostało przydzielo-nych. Zachęcam do dalszej analizy Libcwd osobom tworzą-cym w C++, a także początkującym, którym z pewnością pomoże tworzyć lepsze oprogramowanie.

PodsumowanieTemat tworzenia bezpiecznego oprogramowania jest bardzo obszerny i mam nadzieję, że udało mi się pokazać, iż dotyczy wielu aspektów związanych z obsługą pamięci czy ciągów znaków, a także przesyłaniem danych.

Wystarczy uświadomić sobie, że zwykła operacja odczytywania znaków z wejścia – jak krótko to pokaza-łem przy okazji biblioteki Vstr – powinna być odpowied-nio zaimplementowana. Istnieje jeszcze wiele bibliotek, np. Electric Fence, gdzie test, czy nie przekroczono zakre-su przydzielonej pamięci jest wykonywany z użyciem fizycznych możliwości procesora do chronienia pamięci – powoduje to, że ta biblioteka staje się bardzo skuteczna, choć nie oferuje tak szerokich statystyk jak Memwatch czy Libcwd.

Tabela 1. Spis funkcji operujących na ciągach znaków

Funkcja Przeznaczenie

Safe C String Library

safestr_create utworzenie ciągu znaków

safestr_alloc alokacja pamięci dla ciągu znaków

safestr_makereadonly ciąg tylko do odczytu

safestr_isreadonly test, czy ciąg jest przeznaczony tylko

dla odczytu

safestr_makewritable ustala, że ciąg może być modyfiko-

wany

safestr_memzero czyści pamięć

safestr_trust ustala flagę zaufania

safestr_istrusted sprawdza, czy ciąg posiada flagę

zaufania

safestr_insert wstawia ciąg znaków

VStr

vstr_init inicjalizacja biblioteki

vstr_exit zakończenie pracy biblioteki

vstr_sc_write_fd zapis do pliku/gniazdka o podanym

uchwycie

vstr_sc_read_iov_fd odczyt z pliku/gniazdka o podanym

uchwycie

vstr_dup_cstr_buf kopia ciągu znaków

vstr_make_base utworzenie typu reprezentującego

ciąg znaków

vstr_free_base usunięcie z pamięci ciągu znaków

W Sieci:

• Biblioteka Safe C String Library: http://www.zork.org/safestr/• Biblioteka Vstr: http://www.and.org/vstr/• Strona autora pakietu Memwatch: http://www.linkdata.se/• Biblioteka Libcwd: http://libcwd.sourceforge.net/• Język D rozwijany przez firmę Digital Mars: http://www.digitalmars.com/d/• Bezpieczny dialekt języka C Cyclone: http://www.cs.cornell.edu/projects/cyclone/• Serwis zajmujący się aspektami bezpieczeństwa (zawiera

archiwa listy dyskusyjnej Bugtraq): http://www.securityfocus.com/• Opis błędu w programie MPlayer: http://www.securityfocus.com/archive/1/339330

Page 67: Linux+_2004 01_PL

65www.linux.com.pl

Praca dla InformatykaKategoria i opis

administrator systemu

analityk

grafik komputerowy

handlowiec

inżynier systemowy

kierownik projektu

menedżer

A

AN

G

H

IS

K

M

operator baz danych

programista

pomoc techniczna

projektant

serwisant sprzętu

twórca serwisów internetowych

OBD

P

PT

PR

SS

TSI

Ogłoszenia

Poszukuję pracy w okolicach Oławy bądź Wrocławia. Posiadam znajomość: Novell NetWare6.0, MS Windows2000 Server, Citrix Metaframe, Linux, SQL Windows, SQL Sys, SQL BaseExchange, CENTURA, dBase. Jestem zainteresowany stanowiskiem administratora sieci, zabezpieczeniami, instalacją okablowań oraz konfiguracją struktur sieciowych. Mój staż to 3,5 roku.Kod 1073 A H OBD PT SS

Java Certified Programmer i Web Component Developer weźmie udział w projekcie na terenie kraju.Kod 1074 P PR TSI

Mgr inż. informatyki z 5-letnim doświadczeniem podejmie pracę.Kod 1075 A AN IS K M P PT PR SS TSI

Student trzeciego roku informatyki na Uniwersytecie Warszawskim poszukuje pracy w Warszawie lub Lublinie. Moje zainteresowania to: programowanie C/C++i inne, bazy danych, witryny internetowe itd.Kod 1076 A OBD P PT SS TSI

Szukam pracy, najlepiej w zakresie zastosowań systemów typu *nix w automatyce przemysłowej. Kod 1077 A IS P

Poszukuje pracy. Posiadam wysokie doświadczenie oraz kwalifikacje w zakresie IT. Kod 1078 G H IS PT SS

Prowadzę usługi informatyczne (działalność gospodarcza). Podejmę się realizacji projektu związanego z systemem obsługi baz danych przez Internet (e-sklep, internetowe biuro obsługi klientów, internetowy system obiegu dokumentów itp.).Kod 1079 AN K P PR TSI

Ukończyłem Wydział Informatyki Stosowanej, uzyskując tytuł inżyniera Informatyki Stosowanej o specjalności Telekomunikacja. Temat mojej pracy to „Zapory ogniowe na platformie Linux”. Poszukuje pracy dodatkowej w Warszawie. Kod 1080 A G IS K OBD P SS TSI

Poszukuję pracy w stabilnej firmie IT na terenie Poznania. Interesuje mnie administracja systemami (Linux, WinNT, Novell), projektowanie stron WWW (PHP+MySQL), helpdesk oraz serwis. Kod 1081 A OBD PT PR SS TSI

Dziesięcioletnie doświadczenie, konsultant ds. systemów MRP/ERP i baz danych. Administracja i budowa sieci LAN/WAN, protokołów TCP/IP. Programowaniew C/C++, VB, Pascal, Delphi. Poszukuję pracy stałej lub na zasadach współpracy podmiotów gospodarczych. Kod 1091 A IS K M OBD PT PR

Jestem doświadczonym grafikiem i chętnie podejmę się ciekawych zleceń.Kod 1083 G K OBD P PT PR SS TSI

Ambitny i szybko uczący się młody administrator szuka pracy na Dolnym Śląsku. Kod 1084 A SS

Szukam pracy jako administrator lub serwisant.Kod 1085 A PT SS

Administrator baz danych i programista C++, Pascal i SQL szuka pracyw województwie małopolskim.Kod 1086 OBD P PR SS

Doświadczony programista Delphi (aplikacje bazodanowe), PHP. Także HTML, DHTML, JavaScript i inne. Administracja WinNT, OS/400 i kilkoma serwerami DB. Najlepiej Białystok lub Warszawa. Kod 1087 A OBD P

Kilkuletnie doświadczenie w zarządzaniu projektami wdrożeniowymi systemów ERP w firmach o złożonych strukturach; doświadczenie w integracji sieci LAN, WAN; znajomość zagadnień biznesowych. Kod 1088 AN K M P PR

Doświadczony projektant i programista Java (J2EE, aplikacje internetowe),C++ (Visual Studio), RDBMS podejmie pracę stałą lub kontraktową (preferowana forma to kontraktowa praca zdalna). Kod 1089 P PR TSI

Student IV roku PWr, znajomość systemów operacyjnych SCO Unix(certyfikat), Linux, bardzo dobra znajomość C/C++, Java, PHP+MySQL. Wrocław lub praca zdalna.Kod 1090 A P PT SS TSI

Mam 30 lat i duże doświadczenie jako administrator (MS Windows, Novell, Solaris, Linux, BSD, Oracle, PostgreSQL, MySQL, LAN-WAN (Cisco , 3com) i inne). Poszukuję stałej lub dodatkowej pracy na terenie Górnego Śląska. Kod 1082 A IS OBD

Page 68: Linux+_2004 01_PL

styczeń 200466

dla graczy

Vega StrikeKrzysztof Wolski

Czy kiedyś będzie można podróżować statkiem kosmicznym, odwiedzać inne planety i han-dlować towarami? Pewnie kiedyś tak, choć na pewno nie szybko. Gdybyś jednak chciał spró-

bować tego teraz, to gra Vega Strike jest właśnie dla Ciebie.Vega Strike to symulator statku kosmicznego. W grze

wcielasz się w rolę pilota i handlowca, który podróżu-je pomiędzy planetami, kupuje i sprzedaje towary oraz w razie potrzeby walczy z przeciwnikami. Musi on także zadbać o swój statek, np. naprawiać uszkodzenia czy tan-kować paliwo.

InstalacjaPliki instalacyjne gry można pobrać ze strony http://vega-strike.sourceforge.net/files/. Na tej stronie odnajdziemy wersje zarówno dla Linuksa, jak również dla systemów Windows oraz MacOS X. W momencie pisania tego artyku-łu najnowszą dostępną wersją była 0.4.1D (wersja stabilna). Pobierając plik należy uzbroić się w cierpliwość, ponieważ gra zajmuje aż 167 MB, więc użytkownicy słabszych łącz będą musieli odczekać dłuższą chwilę.

Plik rozpakowujemy do wybranego przez nas katalogu, a następnie w terminalu wpisujemy polecenia:

cd /ścieżka_dostępu/vegastrike-0.4.1-installer

./setup.sh

Podstawowy proces kompilacji nie wymaga posiadania praw użytkownika root, ale skrypt, który instaluje składniki gry (root-setup.sh – zostanie on automatycznie uruchomio-ny po zakończeniu działania skryptu setup.sh), wymaga podania hasła użytkownika root.

Uruchomienie gry to wpisanie poleceń:

vsinstall

vslauncher

Autorzy przewidzieli możliwość zakupu płyty CD z grą – zamówienia można składać na stronie producenta.

Plik instalacyjny gry dla Linuksa został także zamiesz-czony na płycie B poprzedniego numeru Linux+. Jak wyglą-da sama gra, można zobaczyć korzystając z Auroksa Live, zamieszczonego na płycie A bieżącego numeru.

Jak graćPo uruchomieniu gry wybieramy misję – przycisk Select Mission. Razem z grą zostało dostarczonych kilka goto-wych, m. in. te dla kilku graczy. Dla przykładu z otwartego okienka wybieramy plik explore_universe.mission.

Nową grę rozpoczynamy po kliknięciu przycisku New Game. Oprócz rozpoczęcia nowej gry, mamy również możliwość wczytania gry zapisanej, wczytania stanu gry z auto-zapisu, a także zmiany opcji, przeczytania pomocy i zamknięcia okna. Klikamy więc na New Game i po chwili widzimy miejsce, w którym znajduje się nasz statek, cel misji oraz zapisy z komputera pokładowego.

Na początku misji nasz statek znajduje się na lądowisku. Na każdej planecie mamy możliwość sprawdzenia opcji związanych z misją. Kliknięcie tuż po prawej stronie statku spowoduje przejście do komputera (Mission Computer), w którym możemy dowiedzieć się czegoś więcej o misji, którą wykonujemy, przejrzeć wiadomości oraz dokonać operacji zapisu stanu gry, wczytania oraz opuszczenia gry. Kliknięcie po lewej stronie statku spowoduje przejście do opcji związanych ze sprzedażą i zakupem towarów, surow-ców czy materiałów (Cargo Computer). Przeglądamy tam stany naszych zapasów, decydujemy o tym, co chcemy sprzedać (Sell) lub co chcemy kupić (Buy, przy czym możemy zakupić większą ilość jednostek danego towaru klikając na Buy 10).

O autorze:Autor jest studentem czwartego roku na Politechnice Ślą-skiej na Wydziale Organizacji i Zarządzania, specjalność „Informatyka w Przedsiębiorstwie”. W codziennych zasto-sowaniach wykorzystuje przede wszystkim system Linux. Kontakt z autorem: [email protected].

Rysunek 1. Strona domowa Vega Strike http://vegastrike.sf.net/

Page 69: Linux+_2004 01_PL

67www.linux.com.pl

vega strike

Oczywiście wszystkiego tego możemy dokonać, gdy posiadamy odpowiednią ilość gotówki. W jaki sposób można zarobić pieniądze? Na przykład przez zakup, prze-wiezienie na inną planetę, a następnie sprzedaż towarów, surowców czy materiałów. Należy pamiętać, że aby prze-mieszczać się pomiędzy planetami, należy posiadać odpo-wiednią ilość paliwa, które można zakupić na planecie.

Warto jeszcze wspomnieć, że po wylądowaniu na pla-necie możemy odwiedzić pokój (Weapons Room), w którym możemy zmieniać wyposażenie naszego statku w zakresie broni. Pokój ten znajduje się po lewej stronie ekranu z wido-kiem lądowiska. Po prawej stronie lądowiska znajduje się pomieszczenie rozrywkowe, ale mogące przynieść również nieco istotnych informacji – jest to bar (Bar), w którym można porozmawiać np. z sympatyczną barmanką.

Jeśli chcemy wystartować, naciskamy myszką na statku i po chwili nasz statek znajduje się w przestrzeni kosmicz-nej. Obserwując otoczenie z wnętrza statku, widzimy infor-macje z komputera, po prawej stronie cel misji, a po lewej – broń. U dołu znajduje się radar oraz wybrany cel naszej podróży.

Podróżując pomiędzy planetami można natknąć się na wrogie statki, które oczywiście należy zniszczyć.Gra zapewnia także tryb dla wielu graczy. Choć taki z praw-dziwego zdarzenie nie jest jeszcze dostępny, to można pograć w dwóch graczy na jednym komputerze. W takim przypadku ekran dzielony jest na dwie części.

PodsumowanieVega Strike wyróżnia się bardzo ładną i estetyczną grafiką. Gra działa płynnie w rozdzielczości 1024x768 (testowałem na sprzęcie Athlon 1.4 GHz, 512 MB DDR, GeForce2 64 MB). Oczywiście gra jest również “udźwiękowiana”, co oznacza, że podczas zabawy słyszymy efekty dźwiękowe i muzykę.

Gra pozwala również na tworzenie nowych misji, budo-wanie nowych statków oraz projektowanie nowych broni. Teoretycznie może więc istnieć nieskończona ilość misji.

Wydaje mi się, że gra Vega Strike w znakomity sposób wykorzystuje możliwości, które posiadają współcze-sne komputery, a przede wszystkim pozwala na granie pod kontrolą ulubionego systemu, czyli Linuksa. Więcej takich gier, jak VegaStrike, dopracowanych i dostępnych za darmo, spowoduje, że Linux będzie zdobywał coraz więcej zwolenników nie tylko wśród zaawansowanych użytkowników.

Minimalne wymagania sprzętoweMinimalne wymagania gry Vega Strike są następujące:

• procesor Pentium 200 MHz;• karta graficzna z akceleracją 3D (na stronie domowej

projektu znajduje się lista kart, z którymi gra na pewno będzie współpracowała – można tam odnaleźć m.in. kilka różnych modeli kart ATI Radeon czy NVIDIA GeForce);

• głębia kolorów ekranu 16-bitowa.

Gra została opublikowana na licencji GNU GPL.

Rysunek 2. Statek na planecie

Sterowanie

Sterowanie statkiem odbywa się przy pomocy klawiszy ze strzałkami (możemy również sterować statkiem za pomocą myszki).

Klawisz [+] służy do przyspieszania, [-] do zwalniania, a [t] do wyboru celu, do którego chcemy lecieć.

Klawiszem [a] uruchamiamy autopilota, który pokieruje nas do wybranego celu.

Do strzelania służy klawisze [Spacja], który odpala działko, oraz [Enter], odpalający rakiety.

Aby wylądować na planecie, musisz ją najpierw ustawić jako swój cel (przy pomocy klawisza [t]). Następnie należy nacisnąć klawisz [0], aby uzyskać pozwolenie. Gdy statek znajduje się już odpowiednio blisko planety, należy nacisnąć klawisz [d].

Cała obszerna lista znajduje się w dokumentacji. Możemy również nacisnąć kombinację klawiszy [Shift]+[m], aby zoba-czyć tę listę w czasie gry.

Rysunek 3. Podróż w przestrzeni

Page 70: Linux+_2004 01_PL
Page 71: Linux+_2004 01_PL

warto przeczytać

69www.linux.com.pl

dział prowadzi: Piotr Truszkowski

[email protected]

Perl

<<AUTOR | FIT=BOTTOM>>

Autor: Reuven M. LernerTłumaczenie: M. Michalski, S. DzieniszewskiISBN: 83-7361-169-XTytuł oryginału: Core PerlFormat: B5, stron: 456Data wydania: 09/2003Cena książki: 49.00 zł

Język Perl stał się jednym z najpopularniejszych języków programowania na świecie. Zawdzięcza to swojej prostej konstrukcji, szerokiej skali wykorzystania i niezłej szybkości działania. Książka Reuvena Lernera, zatytułowana po prostu „Perl” i pochodząca z serii Core, przedstawia czytelnikowi aspekty związane z filozofią działania tego popularnego języka i pokazuje, jak stworzyć za jego pomocą gotowe rozwiązania. Pomimo tego, że autor adresuje książkę do programistów, nie tylko oni znajdą tutaj wiele ciekawych i bardzo przydatnych informacji. Dzięki przejrzystemu językowi autora i cieka-wemu podejściu do tematu, „Perl” z pewnością może zainteresować także osoby, które zastanawiają

się nad wyborem odpowiedniego i przenośnego języka programowania do stworzenia swoich własnych projektów. Autor omawia Perla zaczynając od podstaw i z każdym kolejnym rozdziałem wprowadza czytelnika dalej. W dalszej kolejności przeczytamy m.in. o pod-stawowych funkcjach wejścia/wyjścia, pracy z plikami, klasach znaków, tworzeniu obiektów i pracy z nimi, współpracy z protokołami sieciowymi i o wielu innych aspektach pracy z Perlem. Książkę tę z pewnością można polecić zarówno zaawansowanym programistom Perla, jak i początkującym, którzy chcą szybko poznać ten język, a nie mają czasu na czytanie nudnych podręczników, gdzie zamiast praktyki otrzymają często nudną teorię. Polecam.

Hack I.T. Testy bezpieczeństwa danychAutorzy: T.J. Klevinsky, Scott Laliberte, Ajay GuptaTłumaczenie: Witold Kurylak, Przemysław SzeremiotaISBN: 83-7361-232-7Tytuł oryginału: Hack I.T. - Security Through Penetration TestingFormat: B5, stron: 464Data wydania: 10/2003Cena książki: 55.00 zł

Bezpieczny serwer internetowy to swoista wizytówka dobrego administratora sieci komputerowej. Często jednak bywa tak, że pomimo dużych umiejętności, zawsze znajdzie się jakiś problem, który przeoczymy. Na taki właśnie moment czekają hakerzy. Książka T.J. Klevinskiego, Scotta Lalibertai Ajaya Gupta „Hack I.T - Testy bezpieczeństwa danych” przedstawia nam wiele aspektów tworzenia bezpiecznego serwera i stojącej za nim sieci komputerowej. Dowiemy się z niej m.in o słabych punk-tach systemów operacyjnych, najczęstszych błędach w popularnych serwerach (BIND, Sendmail), zobaczymy, jak przeprowadzić testy penetracyjne sieci przez internet i połączenie telefoniczne oraz

poznamy aplikacje mające na celu ułatwić pracę każdemu administratorowi sieci i ograniczyć do minimum ewentualne prawdopodo-bieństwo włamania do systemu/sieci. Książka skupia się na systemach Linux i Windows serii NT, więc może być przydatną pozycją dla osób, które korzystają z tych dwóch rozwiązań. Do książki dołączono płytę CD zawierającą omówione w tytule oprogramowanie.

1. Wybierz czerwoną pigułkę. Nauka, filozofia i religia w Matrix, Wyd. Helion, 2003 2. Nauka programowania dla początkujących. Turbo Pascal – K. Walczak, A. Stuzińska-Walczak, Wyd. W&W, 2003 3. Google dla praktyków – Andrzej Szewczyk, Wyd. Mikom, 2003 4. Delphi 5 Professional. Object Pascal – Andrzej Marciniak, Wyd. Nakom, 2000 5. Fotografia cyfrowa. Edycja zdjęć – Scott Kelby, Wyd. Helion, 2003 6. Zintegrowane systemy informatyczne w praktyce – Piotr Adamczewski, Wyd. Mikom, 2003 7. Flash – samouczek dla nieinformatyków – Anna Owczarz, Wyd. Help, 2003 8. Microsoft Access 2002 Visual Basic dla aplikacji – krok po kroku (+CD-ROM) – Evan Callahan, Wyd. Read Me, 2002 9. Windows server 2003. Vadamecum administratora – William R. Stanek, Wyd. Promise, 2003 10. Język ANSI C – Brian W. Kernighan, Dennis M. Ritchie, Wydawnictwa Naukowo-Techniczne, 2003

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

Page 72: Linux+_2004 01_PL
Page 73: Linux+_2004 01_PL

PRENUMERATA TO NAJLEPSZY WYBÓR

Zainwestuj w siebie, zainwestuj w swojego pracownika

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: [email protected]. Przyjmujemy też zamówienia telefoniczne: (22) 860 17 67

Z A M Ó W I E N I E

Imię i Nazwisko Stanowisko

ID kontrahenta*

* 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 w tabeli Dane teleadresowe

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

Pieczęć firmy i podpis

Dane teleadresoweNazwa firmy

Dokładny adres

Telefon (wraz z numerem kierunkowym)

Adres e-mail

Faks (wraz z numerem kierunkowym)

Numer NIP firmy

Liczba kolejnychnumerów

Liczbazamawianychprenumerat

Od numerupisma

lub miesiąca

Opłata w złTytuł pisma

Linux+Miesięcznik użytkowników systemów linuksowych

Linux+ Extra!Numery specjalne z dystrybucjami Linuksa

12

8

*

Oferta dla prenumeratorów Linux+ lub Software 2.0: 198 zł

Oferta standardowa: 232 zł

Linux w szkoleKwartalnik o stosowaniu Linuksa w edukacji 4 99 zł

W sumie(liczba prenumerat * cena)

* 180 zł – prenumerata roczna (12 numerów) Linux+ dla studentów i osób prywatnych* 250 zł – prenumerata roczna (12 numerów) Linux+ dla firm

UWAGA! Nadesłanie zamówienia jest jednocześnie zobowiązaniem do zapłaty!

SOFTWARE-WYDAWNICTWO SP. Z O.O.ul. Lewartowskiego 6, 00-190 Warszawa, e-mail: [email protected]

AuroxNumery specjalne Linux+ Extra! z dystrybucją Aurox Linux 4

Oferta dla szkół: 99 zł

Oferta standardowa: 119 zł

Page 74: Linux+_2004 01_PL
Page 75: Linux+_2004 01_PL
Page 76: Linux+_2004 01_PL