Gadżet wirtualnych pulpitów w systemie Windows

Istnieje dodatek do systemu Windows XP umożliwiający korzystanie ze znanych w systemach linuksowych wirtualnych pulpitów. Jest to narzędzie niezwykle praktyczne, ale mało znane. Narzędzie nazywa się Virtual Desktop Manager i wchodzi w skład Windows XP PowerToys. Do pobrania za darmo spod adresu http://www.microsoft.com/windowsxp/downloads/powertoys/xppowertoys.mspx

Podpowiem jeszcze możliwe “scenariusze” użycia tego narzędzia. Po zainstalowaniu, na pasku narzędziowym obok zegara, po kliknięciu PPM możemy wybrać pasek Desktop Manager. Obok zasobnika z zegarem pojawiają się wtedy takie przyciski:

MSVDM

Każdy z nich reprezentuje oddzielny wirtualny pulpit na którym możemy mieć odrębny zestaw otwartych okienek i tapetę. Osobiście mam pewne zastrzeżenia do sposobu przenoszenia okienek między pulpitami - trzeba zaznaczyć opcję Shared Desktops, kliknąć przycisk docelowego pulpitu i kliknąć okienko tak, aby nie było zwinięte do paska zadań. Wówczas po odznaczeniu Shared Desktops wybrane okienko zostaje na stałe w wybranym pulpicie i nie jest widoczne w innych. Każdy, kto korzysta z linuksa kojarzy zapewne, że w dowolnym środowisku graficznym jest to rozwiązane dużo lepiej poprzez prostą opcję w rodzaju “przenieś okienko x na pulpit y”.

Niemniej jednak za wygodę korzystania z 4 pulpitów warto znieść tę drobną niedogodność z przenoszeniem okienek. Osobiście wykorzystuję to narzędzie w ten sposób, że np. na pulpicie nr 1 mam otwartą przeglądarkę internetową, na 2 okienko z wirtualną maszyną, na kolejnym mam zawsze otwartą konsolę i menedżer plików z uprawnieniami administracyjnymi. Dzięki temu mam zawsze pod ręką najczęściej używane narzędzia i jednocześnie unikam bałaganu i chaosu spowodowanego niezdrową liczbą pootwieranych okienek.

Zbiór moich zasad bezpiecznego przeglądania stron internetowych

W tym wpisie wymienię i opiszę kilka zasad, którymi sam kieruję się podczas codziennego przeglądania stron internetowych. Czynność ta stała się jedną z ważniejszych wykonywanych przy użyciu komputera, a sama przeglądarka stała się programem, który uruchomiony jest niemalże przez cały czas gdy komputer jest włączony. Z tych właśnie powodów wiele wektorów ataku wykorzystywać może słabości związane właśnie z oprogramowaniem służącym do przeglądania stron internetowych. Warto więc zadać sobie pewien trud i zastanowić się nad bezpieczeństwem “surfowania” (ostatnio, odkąd Internet spowszedniał, chyba już rzadziej spotykane słowo).

0. Zasada z zerowym numerem, niejako w charakterze oczywistości, dotyczy korzystania na co dzień z konta zwykłego użytkownika, była o tym szerzej mowa w poprzednim wpisie. Tak więc przeglądarka internetowa, jak również wszelkie inne programy niezbędne w codziennej pracy uruchamiam z konta zwykłego użytkownika.

1. Dbam o aktualność przeglądarki internetowej, ale również oprogramowania “około-przeglądarkowego”. Mam tutaj na myśli wtyczkę Adobe Flash, która ponoć znajduje się w dziewięćdziesięciu-kilku procentach komputerów na świecie i w której też znajdowane są błędy mogące zagrażać bezpieczeństwu. Eliminowanie takich krytycznych błędów jest podstawowym uzasadnieniem dla dbania o posiadanie aktualnych wersji programów. Uaktualniam obie wersje zarówno dla Internet Explorer’a jak i dla Opery i Firefoxa. Uaktualniam również regularnie czytnik PDF Adobe Reader i Java Runtime Enviroment.

Ponieważ komunikaty o nowych wersjach oprogramowania nie zawsze się pojawiają wtedy, gdy powinny, a użytkownicy systemu Windows nie dysponują dobrodziejstwami znanych z linuksowych repozytoriów sprawdzam ręcznie czy dostępne są nowe wersje programów. Dobrym miejscem, w którym można szybko sprawdzić dostępność nowych wersji wielu programów jest FileHippo. Korzystam z RSS tego serwisu, więc wiem niemalże natychmiast, że pojawiła się nowa wersja Adobe Reader i trzeba dokonać aktualizacji.

2. Na co dzień korzystam z przeglądarki Firefox - używam bardzo użytecznego dodatku jakim jest Web of Trust, który informuje mnie o złej lub dobrej reputacji odwiedzanej witryny. Innym tego typu dodatkiem jest McAfee SiteAdvisor. Jeżeli dostanę ostrzeżenie, że ze stroną coś jest nie w porządku to na nią nie wchodzę.

3. Korzystam z oprogramowania izolującego przeglądarkę internetową - Sandboxie z dodatkowo ustawionymi obostrzeniami na uruchamianie programów tylko z wyznaczonej przeze mnie listy. Sandboxie przechwytuje wszystkie operacje zapisu na dysku procesu i kieruje je do określonego folderu. Program jest niczego nie świadomy, a użytkownik ma pełen wgląd w zmiany na dysku jakie on wprowadza. Oczywiście przeglądarka internetowa aby działać prawidłowo musi mieć skonfigurowany dostęp bezpośredni do swojego profilu, jest to jednak jedyna “dziura” w piaskownicy, która z resztą ustawia się domyślnie, bo Sandboxie “zna” wszystkie popularne przeglądarki.

Zdecydowałem się na dodatkową izolację przeglądarki po przeczytaniu wywiadu z Joanną Rutkowską, która sama stosuje jeszcze silniejsze rozwiązanie w postaci przeglądania stron internetowych z wirtualnych maszyn VMware. Uważam, że Sandboxie jest rozsądnym kompromisem pomiędzy wygodą i szybkością “uwolnionej” przeglądarki a bezpieczeństwem maszyny wirtualnej. Niewątpliwie złamanie całego hypervisor’a byłoby o wiele trudniejsze niż “piaskownicy”, ale w grę wchodzi też wygoda i szybkość działania. Korzystanie z maszyny wirtualnej nawet na sprzęcie z 2 GiB pamięci oraz 2 rdzeniowym procesorem wnosi jednak pewien narzut wydajnościowy. Okienko wirtualnego komputera nie przełącza się tak szybko i sprawnie jak okienka zwykłych aplikacji, zaś ogólne spowolnienie całego komputera wynikające z dużego użycia pamięci i częstego “wymiatania” stron pamięci do pliku wymiany jest nieprzyjemnie odczuwalne. Przeglądarka zamknięta w “piaskownicy” działa praktycznie tak samo sprawnie jakby działała poza nią. Dodatkowa opcja blokowania uruchamiania programów przez proces z piaskownicy również podnosi poziom bezpieczeństwa. Naturalnie, jeżeli dysponujemy potężnym sprzętem (w linkowanym wywiadzie mowa jest o 8 rdzeniowym procesorze i 16 GiB pamięci) i nie musimy martwić się o spadek szybkości działania komputera to lepiej jest rzeczywiście użyć wirtualnych maszyn do korzystania z Internetu

4. Używam oddzielnej przeglądarki gdy muszę świadomie odwiedzić bardziej mroczne zakamarki Internetu. Korzystam wtedy z Opery (również w piaskownicy) z wyłączonymi skryptami, obsługą Javy, wtyczek i ciasteczek. Jeżeli jakaś strona nie wyświetla się z powodu tej rygorystycznej konfiguracji no to trudno.

5. Do wykonywania wrażliwych operacji (np. bankowość) zdecydowałem się na wszelki wypadek używać jednak maszyny wirtualnej. Mój hypervisor to darmowy Sun VirtualBox a systemem gościa jest Xubuntu - ze względu na lekkie środowisko Xfce. Maszyna ma przydzielone 384 MiB pamięci przez co włącza się i zapisuje swój stan bardzo szybko. Taka ilość pamięci wystarcza do tego aby wykonać coś na stronie Internetowej jak również sprawnie (bez “zamulania”) przełączać się do pozostałych uruchomianych programów.

Ostatnia zasada może nie musi być właściwie wymieniana, bo wie o niej chyba każdy. Chodzi oczywiście o zdrowy rozsądek. Staram się zastanawiać zanim gdziekolwiek kliknę, staram się nie uruchamiać podejrzanych plików (jeżeli już muszę to obowiązkowo najpierw z maszyny wirtualnej przeznaczonej do takich właśnie eksperymentów), uważnie przyglądam się programom, które instaluję w swoim systemie etc.

Przykładowy kod w C++ – dlaczego nie każdy przykład jest dobry

W sieci krąży całe mnóstwo przykładowych kodów źródłowych, napisanych mniej lub bardziej elegancko i poprawnie (to, że program działa nie implikuje, że jest poprawny :) - ten ani nie działa - daje błędne wyniki, ani nie jest poprawny, ani nie jest elegancki). Spotkałem dziś paczkę zawierającą kilka prostych programów obliczających pola figur. Paczka ma być “Przydatna dla ludzi, którzy nie mają pojęcia o programowaniu”, czyli, jak rozumiem ma stanowić pewnego rodzaju wzór z którego można się czegoś dobrego nauczyć i co warto naśladować. Dobre przykłady są fundamentem nauki programowania, ale nie każdy przykład jest dobry.

#include <iostream>
#include <conio.h>
using namespace std;
    
int main()
{
    int r;
    float pi=3.14;      
    cout << "Pole kola\n";   
    cout << "Podaj dlugosc promienia: ";  
    cin >> r;
    cout << "\n";  
    int p_kola(pi * (r * r));
    cout << "Pole wynosi: " << p_kola;
    getch();
    return  0;
}
    
  1. Plik nagłówkowy conio.h nie jest częścią standardu języka C ani C++ ani POSIX. Wywodzi się on jeszcze z dawnych kompilatorów działających w systemie DOS (np. ja osobiście kojarzę go z kompilatorów Borland Turbo C++). Używając tej biblioteki tworzymy nieprzenaszalny kod. Bez dodatkowych czynności nie będzie kompilował się na przykład w systemach uniksopodobnych. Nie jest to dobra praktyka. Dobrze byłoby ograniczyć się do używania jedynie bibliotek wchodzących w standard, co w przyszłości może zaowocować łatwiejszą pielęgnacją i utrzymaniem kodu. W tym przypadku to oczywiście nic poważnego, ale warto wyrabiać sobie dobre nawyki.

  2. Stałe powinno się opatrywać dodatkowym słowem kluczowym const. To również niby nic wielkiego, ale stosowanie const poprawia właściwość “samo-komentowania się” kodu. Gdy patrzymy na duży objętościowo kod, wyłapanie słów const pomaga w “uchwyceniu” koncepcji działania programu.

  3. Linijka 14 jest kwintesencją całego przykładu. Wyraźnie widać, że autor chciał się pochwalić obiektowością. Programiści często lubią się chwalić różnymi wysublimowanymi konstrukcjami. Tylko, że na dłuższą metę to również nie jest dobra praktyka. Kod należy pisać w sposób możliwie najprostszy, bez żadnych własnych udziwnień, cały czas obierając sobie za cel to, aby inny programista był w stanie szybko zrozumieć naszą wizję i kontynuować tworzenie kodu. Język C++ umożliwia traktowanie typów prostych jak klas i wykonywanie rzutowania podczas tworzenia obiektu poprzez podawanie wyrażenia w konstruktorze. Tyle, że jest to straszliwe udziwnienie, nie wnoszące żadnej wartości dydaktycznej a jedynie mogące namieszać osobie uczącej się programowania. Nie wspominam już tutaj o tym, że pole nie koniecznie musi być liczbą całkowita, o czym autor chyba zapomniał w przypływie zachwytu nad właśnie zastosowanym konstruktorem typu prostego int.

Ten przykład skłania do szerszej refleksji na temat jakości merytorycznej dostępnych w Internecie materiałów. Często słyszałem od ludzi nauki, że Internet jako źródło wiedzy jest swoistym śmietnikiem. Niestety wraz z upowszechnianiem się dostępu do Internetu wzrasta ilość treści bezwartościowych. Mógłbym nawet zaryzykować twierdzenie, że w pewnym sensie czasy gdy mało kto miał dostęp do Internetu miały swoje zalety. Obecnie wszędzie gdzie tylko można postuluje się najlepiej darmowy dostęp do Internetu i najlepiej dla wszystkich. Nie twierdzę, że w Internecie nie ma treści wartościowych. Oczywiście, że są. Wraz z rozwojem Internetu ogromnie dużo ich przybyło. To świetnie. Tylko, że przybyło również ogromnie dużo śmieci, a surfowanie po śmietnisku przestaje być przyjemne.

Konto zwykłego użytkownika w systemie Windows – nawyki i sztuczki przydatne podczas codziennej pracy

Wbrew obiegowym opiniom system Windows nie jest wcale tak bardzo niebezpieczny i podatny na działanie wirusów jak mogłoby to się wydawać. Jedną z przyczyn takiego postrzegania “windowsów” są raczej niefortunnie dobrane standardowe ustawienia systemu (NT4, 2000, XP) - mam tutaj na myśli tworzenie standardowo kont z uprawnieniami administracyjnymi zamiast tylko jednego konta administratora a do zwykłej pracy kont ograniczonych - tak jak jest to w systemach uniksopodobnych. Praca na koncie z ograniczeniami w bardzo znaczącym stopniu podnosi bezpieczeństwo, ponieważ nawet jeżeli zawiedzie program antywirusowy czy firewall i “przepuści” plik z wirusem, to wirus ten nie poczyni żadnych szkód ponieważ nie będzie mógł zainstalować się w systemie. Sam obserwowałem takie przypadki, gdy twórcy wirusa ewidentnie nie uwzględnili w założeniach projektowych uruchamiania swojego dzieła na koncie z ograniczeniami i mogłem podziwiać efektowną serię komunikatów o błędach która kończyła się zamknięciem procesu “wirusa”.

Niestety wszelkie zagadnienia związane z bezpieczeństwem pociągają za sobą zmniejszenie szybkości działania, efektywności, wygody użytkowania etc.

Balans

Idealnie byłoby wypracować rozwiązania, które są zarówno bezpieczne jak i szybkie i przyjemne do użycia. Postaram się opisać tutaj szereg chwytów, które sam stosuję korzystając na co dzień z ograniczonego konta w systemie Windows. Przybliżają one elastyczność i wygodę pracy na koncie z uprawnieniami administracyjnymi zachowując jednocześnie bezpieczeństwo na koncie zwykłego użytkownika (grupa “Użytkownicy” w menedżerze lusrmgr.msc).

Sztuczka podstawowa to umieszczenie najlepiej na pulpicie lub w innym wygodnym miejscu skrótu do wiersza poleceń (program cmd.exe) i uruchomienie go klikając prawym przyciskiem myszy opcją “Uruchom jako” , a następnie wybranie administratora. Uzyskujemy w ten sposób wiersz poleceń działający z uprawnieniami administratora (odpowiednik uniksowego su). Wiele z moich sztuczek opiera się właśnie o wydanie komend z wiersza poleceń. Polecam zadbać o możliwość uzupełniania nazw plików i folderów tabulatorem - w systemie XP można to ustawić np. narzędziem Microsoft Tweak UI.

1. Dostęp do plików

Sporą uciążliwością konta zwykłego użytkownika jest brak możliwości tworzenia folderów na korzeniu głównym partycji oraz w innych miejscach. Wiąże się to z brakiem uprawnień do modyfikacji dla grupy użytkowników. Wypracowałem sobie takie rozwiązania tego problemu: w sytuacji gdy potrzebuję zmodyfikować podkatalog w katalogu systemowym albo utworzyć katalog w korzeniu głównym uruchamiam sobie menedżer plików klikając prawym przyciskiem myszy i wybierając opcję “Uruchom jako”. W miejscach do których wolałbym mieć jednak bezpośrednio swobodny dostęp dodaję uprawnienia pełnej kontroli dla grupy użytkowników. Ponieważ graficzny interfejs zarządzania uprawnieniami plików w systemie NT może moim zdaniem przyprawić o ból głowy - polecam zastosowanie tego polecenia:

cacls (nazwa_katalogu) /t /e /g Users:F

Powoduje ono dodanie uprawnień do pełnej modyfikacji dla podanego katalogu i wszystkich znajdujących się w nim plików i podkatalogów. Zamiast grupy Users można oczywiście podać nazwę samego użytkownika. To bardzo ważne polecenie które zdarza mi się dość często wykonywać. Warto je sobie zapisać i mieć pod ręką dopóki nie zapamięta się składni.

Ponieważ autorzy wielu programów (niestety) nie przewidzieli, że ich produkty będą uruchamiane na koncie ograniczonym a dostęp do folderu Program Files z takiego konta jest tylko do odczytu, to zdarzają się osobliwe błędy. Proponuję utworzyć sobie w katalogu Program Files specjalny katalog (ja go nazwałem UserAccess) i potraktować go powyższym poleceniem. Wszelkie nowe programy, które przewidujemy do działania na ograniczonym koncie sugeruję instalować właśnie w takim katalogu. Programy często potrzebują zapisywać sobie jakieś dane w trakcie działania w katalogu w którym są instalowane, dzięki tej sztuczce zwiększamy prawdopodobieństwo, że aplikacja będzie działała poprawnie na ograniczonym koncie.

2. Widoczność programów w Menu Start

Przyznam, że moim zdaniem jest to największa uciążliwość pracy na koncie ograniczonym. Zdarzają się tutaj 2 przypadki - albo zainstalowany program nie jest widoczny w menu start konta użytkownika, albo jeśli nawet jest widoczny to skrót nie działa ponieważ nie ma uprawnień dla użytkowników. Pierwszą czynnością którą polecam wykonać to potraktowanie powyższym poleceniem cacls całego folderu All Users\Menu Start. Dzięki temu jako zwykły użytkownik będzie można wprowadzać dowolne modyfikacje w menu start

Kolejną czynnością jest upewnienie się, że wpisy skrótów w menu start dla programu znajdują się właśnie w All Users a nie w katalogu Administrator. Ponieważ, aby zainstalować program należy jego instalator uruchomić z uprawnieniami administracyjnymi, to w wielu przypadkach wpisy do menu start dopisują się właśnie dla administratora przez co są niewidoczne dla innych użytkowników. Jeżeli dla All Users\Menu Start nadaliśmy już pełne uprawnienia dla użytkowników to proponuję przenosić wpisy z menu start administratora do All Users z wiersza poleceń (osobiście uważam, że tak jest łatwiej bo jest mniej klikania). Przechodzimy do menu start administratora poleceniem

pushd "c:\Documents and Settings\Administrator\Menu Start\Programy"

a następnie wydajemy polecenie

move (folder_programu_do_przeniesienia) "..\..\..\All Users\Menu Start\Programy"

Przy wpisywaniu tych długich ścieżek posługujemy się oczywiście autouzupełnianiem za pomocą tabulatora. Przechodzenie do katalogów komendą pushd powoduje, że możemy powrócić do poprzedniego folderu komendą popd.

Kilka słów o widoczności wpisów w menu start. To, co widzimy klikając Start/Programy, jest “widokiem” będącym teoriomnogościową sumą zawartości katalogu Programy z All Users i katalogu Programy z bieżącego użytkownika. Dlatego warto zadbać, aby wszelkie wpisy dla menu start znajdowały się jednak w All Users.

3. Konfigurowanie systemu, panel sterowania

Co prawda mechanizm uruchamiania programów z innymi uprawnieniami jest bardzo podobny do tego znanego z linuksa, to jednak są elementy systemu których w ten sposób uruchomić się nie da. Wynika to z faktu, iż nie da się w ten sposób uruchomić po raz drugi instancji powłoki systemowej - programu explorer.exe (jeden proces explorer.exe działa dla bieżącego użytkownika, z jakichś powodów system odmawia uruchomienia powłoki po raz drugi dla kogoś innego). Powłoka systemowa odpowiada za wyświetlanie okienek. Nie da się zatem uruchomić tych elementów, których “oprawą” są okienka - czyli np Panel sterowania, menedżer połączeń sieciowych, wszelkie programy które instalują się jako rozszerzenia powłoki.

Rozwiązaniem na to jest bezpośrednie wywoływanie apletów panelu sterowania z linii poleceń (administracyjnej oczywiście). Polecam do tego ten spis komend wiersza poleceń. Przykładowo jeżeli chcemy wyświetlić narzędzie usuwania programów - uruchamiamy z linii poleceń appwiz.cpl.

Niestety do zarządzania opcjami połączeń sieciowych konieczne jest pełne zalogowanie się na koncie administratora. Możemy jednak ominąć przynajmniej jedno ograniczenie - na włączanie i wyłączanie połączeń sieciowych. W tym celu wystarczy w narzędziu lusrmgr.msc dodać nasze ograniczone konto użytkownika do grupy konfiguracji sieci (ta możliwość pojawiła się chyba w XP SP3, bo jestem pewien, że wcześniej nie było tej grupy).

[EDIT - 14 października 2009]

Ponieważ treść tego wpisu dotyczy głównie Windows XP, brakuje wyjaśnienia czym jest i jak działa w tym kontekście mechanizm UAC w systemie Windows Vista oraz Windows 7. Odsyłam w tym miejscu do wpisu na blogu Joanny Rutkowskiej gdzie zawarte są te właśnie informacje jak również dużo bardziej wnikliwe rozważania na temat bezpieczeństwa kont użytkownika w Windows Vista.

Kopia zapasowa rejestru systemu Windows

W przypadku katastrofy systemu Windows istnieje pewne prawdopodobieństwo, że nieuruchamiający się system da się naprawić przywracając pliki rejestru z przygotowanej wcześniej kopii zapasowej. Istnieje pewien bardzo prosty, aczkolwiek mało znany sposób na wykonanie tej kopii: należy uruchomić narzędzie kopii zapasowej systemu Windows i zaznaczyć w okienku “Stan systemu”. Oprócz umieszczenia w pliku kopii zapasowej wszystkich najważniejszych plików systemowych, narzędzie to wykona również kopie plików rejestru i umieści ją w podkatalogu Repair katalogu z systemem Windows. Standardowo folder ten zawiera kopie rejestru wykonaną tuż po zainstalowaniu systemu, więc jej przywracanie będzie raczej mało pomocne.

Najprostszym sposobem na przywrócenie tak przygotowanej kopii jest moim zdaniem użycie specjalnej ratunkowej dystrybucji linuksa - System Rescue CD (swoją drogą zawiera ona bardzo dużo przydatnych narzędzi, m. in. znakomity menedżer partycji Parted). Po uruchomieniu tego linuksa na ekranie pojawiają się instrukcje co należy wpisać (jedno polecenie), aby uzyskać dostęp do partycji NTFS (używany jest ntfs-3g). Następnie przy pomocy na przykład Midnight Commandera można w prosty sposób przekopiować pliki rejestru z podakatalogu Repair do System32\config.

Kopie zapasowe rejestru przechowywane są również w katalogach roboczych usługi Przywracania Systemu. Traktuje o tym ten artykuł z bazy wiedzy Microsoft.

Moim zdaniem warto co jakiś czas uruchamiać narzędzie kopii zapasowej i wykonywać kopie “Stanu systemu”. Dzięki temu zyskujemy dodatkowe (w stosunku do samego Przywracania Systemu, które nigdy nie spełniło swojego zadania i nie usunęło awarii w sytuacjach, które obserwowałem) możliwości naprawy systemu w razie wystąpienia awarii:

  1. Kopia plików najważniejszych plików systemowych, którą można przywrócić za pomocą samego narzędzia kopii zapasowej - o ile system da się uruchomić. Jest to kilkaset MB, więc spora część całego systemu i spora szansa na naprawienie awarii.

  2. Kopia plików rejestru którą możemy w łatwy sposób przywrócić ręcznie opisanym powyżej sposobem.

Bardziej zapobiegliwi użytkownicy mogą pokusić się również o wykonywanie kopii całego katalogu systemu Windows z poziomu System Rescue CD. Może być to rozsądne rozwiązanie gdy z pewnych przyczyn nie możemy sobie pozwolić na wykonanie obrazu całej partycji.

Praktyczne zastosowanie dla przekierowania sesji X przez SSH

Co prawda z tego przykładu skorzystają jedynie studenci PW, ale sam mechanizm warto znać, ponieważ może się przydać. Rzecz dotyczy możliwości uruchomienia programu okienkowego na zdalnym unixowym serwerze na którym mamy konto. Wydając pod linuxem polecenie:

ssh -l nazwa_uzytkownika -X adres_serwera

uzyskujemy dostęp do konsoli na naszym koncie. Przełącznik -X dodatkowo daje możliwość korzystania nie tylko z aplikacji konsolowych, ale również z okienkowych.

Praktycznym przykładem na zastosowanie tego polecenia jest uzyskanie dostępu do zasobów czytelni ibuk.pl z dowolnego miejsca. Studenci PW (zapewne również innych uczelni) mają zapewniony darmowy dostęp do książek w tym serwisie. Warunkiem jest jednak otwarcie serwisu z sieci należącej do uczelni. Jeżeli ktoś chce uzyskać dostęp z domu (1 na poniższym rysunku) może dzięki temu otworzyć sobie sesję na serwerze uczelnianym (2) i uruchomić na nim przeglądarkę, która będzie pobierała książkę z serwera ibuk.pl (3) - widok okienka z przeglądarką jest przesyłany do domowego komputera (1) przez bezpieczne połączenie ssh.

SSH

Dostęp do książek jest ograniczony do tematyki technicznej, co jest zrozumiałe jeżeli zorganizowała to PW dla swoich studentów. Poniżej zrzut ekranu z otwartą książką:

X Window over SSH

Proste konsolowe narzędznie szyfrujące

Poszukiwałem od dłuższego czasu prostego programu do szyfrowania symetrycznego działającego z linii poleceń. Istnieje bardzo wiele rozwiązań zarówno open-source jak i wyprodukowanych przez firmy komercyjne (dla jak największego bezpieczeństwa zaleca się jednak stosowanie rozwiązań otwartych ze względu na pewność, iż aplikacja nie posiada żadnych “tylnych drzwi”). Osobiście nie lubię jednak żadnych graficznych udziwnień, integrowania się z powłoką, dodawania nowych pozycji do menu kontekstowych - ja potrzebuję jedynie prostej komendy która zaszyfruje mi plik.

Do niedawna stosowałem bcrypt, który jest implementacją algorytmu Blowfish działającą z linii poleceń. Niemniej jednak algorytm ten ma już swoje lata i co prawda nie został złamany, ale jego autor - Bruce Schneier zaleca stosowanie nowszego rozwiązania - Twofish.

Rozwiązaniem okazał się program openssl, który jest demonstracyjną implementacją biblioteki kryptograficznej o tej samej nazwie. Ma on całkiem spore możliwości z zakresu szyfrowania symetrycznego jak i asymetrycznego, dostępne są komendy szyfrujące wieloma algorytmami, również starym, złamanym DES’em. Oczywiście według obecnie obowiązujących standardów najlepiej jest wybrać szyfrowanie algorytmem Rijndael (zamiennie stosowaną nazwą jest AES - odkąd algorytm ten został zwycięzcą konkursu na standard, swoją drogą można spokojnie zaufać wszystkim finalistom konkursu - również algorytmom Serpent, RC6 i Twofish).

Po ściągnięciu z powyższego linka i zainstalowaniu plików programu możemy zaszyfrować dowolny plik na przykład takim poleceniem:

openssl enc -aes-256-cfb -salt -in plik_wejsciowy -out plik_wyjsciowy

Polecenie powoduje zaszyfrowanie pliku algorytmem AES z 256-bitowym kluczem w trybie cipher feedback. Po wykonaniu tego polecenia i podaniu hasła możemy mieć pewność, że nasz plik jest bezpieczny i nikt nie odczyta jego zawartości. Do odszyfrowywania należy wydać polecenie:

openssl enc -d -aes-256-cfb -salt -in -out plik_wyjsciowy

Przypominam, że przy wykonywaniu szyfrowania należy upewnić się, że plik wejściowy został usunięty w sposób bezpieczny np. przy użyciu programu firmy Sysinternals Sdelete. Co prawda algorytm AES jest obecnie uznany za bezpieczny i nie dający się złamać, ale należy pamiętać, że większość skutecznych prób łamania wszelkich zabezpieczeń cyfrowych opiera się albo na (głupich) błędach człowieka przy wykonywaniu procedury szyfrującej albo na podatności na techniki social-engineering.

W tym pierwszym przypadku mam na myśli na przykład ww. nie zniszczenie kopii pliku, który był szyfrowany. Załóżmy, że chcemy umieścić plik na jakimś nośniku np. pendrive. Kopiujemy go tam, wykonamy podane przeze mnie polecenie openssl, i normalnie skasujemy plik wejściowy przeciągając go do kosza i opróżniając kosz. Potencjalny włamywacz chociażby nie wiadomo jak się starał to nie odszyfruje zabezpieczonego przez nas pliku, ale uruchomi narzędzie do odzyskiwania skasowanych plików i uzyska plik który był przeznaczony do zabezpieczenia.

Techniki social-engeenering to po prostu na przykład bycie przekonanym przez włamywacza-oszusta do ujawnienia naszego hasła. To zadziwiające, ale takie rzeczy wciąż się zdarzają. Moim zdaniem należy zachowywać jak najdalej idącą powściągliwość przy podawaniu jakichkolwiek prywatnych danych osobom, których tożsamości nie możemy zweryfikować w 100% (nie wspominając już u podawaniu haseł, co jest absolutnie niedopuszczalne). Przykładowo, gdy ktoś wysyła mi wiadomość, że jest administratorem serwisu w którym mam konto i prosi o podanie hasła z powodu wykonywanych modernizacji to jedynymi podejmowanymi przeze mnie czynnościami jest śmiech i kliknięcie w “usuń”.

Podsumowując, powyżej przedstawiłem prosty i bardzo skuteczny sposób na zabezpieczenie cennych informacji. Polecam szersze omówienie komend programu openssl pod adresem: http://www.madboa.com/geek/openssl

Rozszerzenia Firefoxa

Podczas kilku lat korzystania z tej przeglądarki napotkałem sporą liczbę różnych rozszerzeń. To właśnie w nich tkwi prawdziwy potencjał, ponieważ umożliwiają dostosowanie programu do własnych potrzeb niczym uszycie ubrania na miarę. Konkurencja w postaci Opery, Internet Explorer’a i Chrome pod względem przystosowalności i elastyczności wypada raczej kiepsko w porównaniu do Firefox’a. Oczywiście nie znaczy to, że uważam ww. programy za gorsze. W szczególności Opera i Chrome posiadają moim zdaniem bardzo istotne zalety: Opera - doskonała responsywność (nie chcę wypowiadać się o szybkości przetwarzania np. kodu JavaScript bo od tego są benchmarki, mam na myśli samą interakcję z programem), świetnie zaprojektowany interfejs i niewielkie zapotrzebowania na pamięć; Chrome - nowatorskie podejście do stron internetowych jako aplikacji - efektywne wykorzystanie wielordzeniowych procesorów dzięki dzieleniu kart na oddzielne procesy systemowe.

Wracając do Firefox’a, bardzo często widzę użytkowników posiadających “gołą” przeglądarkę. Dziwi mnie strasznie takie niewykorzystywanie możliwości, które są jak najbardziej w zasięgu ręki. Rozumiem, że przeglądanie gigantycznej liczby prawie 150 mln. (na dzień dzisiejszy) dostępnych pozycji może być przytłaczające. Sam poszukiwałem zestawień i recenzji, aby odszukać rozszerzenia, które są naprawdę wartościowe i przydatne. Postanowiłem utworzyć listę używanych przeze mnie rozszerzeń - są to pozycje sprawdzone, które od dłuższego czasu usprawniają moją pracę z przeglądarką. Każde z nich można odnaleźć po nazwie w wyszukiwarce na stronie http://addons.mozilla.org. Polecam.

Nazwa Opis
Adblock Plus Pozycja obowiązkowa. Usuwa reklamy ze stron internetowych, automatycznie aktualizuje się, umożliwia dodawanie własnych filtrów. Rozumiem model finansowania wielu serwisów, ale jestem zdania żeby odbiorcami infantylnych i uciążliwych animacji pozostali ci użytkownicy, którzy nie zadadzą sobie trudu zainstalowania tego dodatku :)
Add To Search Bar Umożliwia dodanie do paska wyszukiwarek dowolnej napotkanej na stronie wyszukiwarki.
Better Gmail 2 Jest to zestaw opcji konfiguracyjnych GMaila, w szczególności możliwość wyświetlania etykiet w postaci drzewiastej struktury.
Clone n Forget Usuwa z historii aktualną stronę.
Colorful Tabs Poszczególne karty mają różne kolory.
Download Helper Umożliwia pobranie wyświetlanego filmu np. z Youtube.
DownThemAll! Zaawansowany menedżer pobierania plików.
Enter Selects Miły dodatek powodujący, że naciśnięcie Enter’a podczas wpisywania adresu powoduje natychmiastowe przejście do pierwszego podpowiadanego adresu.
ErrorZilla Plus W przypadku gdy strona “nie działa” wyświetlane są dodatkowe opcje jak np. ping czy próba otwarcia z internetowego archiwum ostatniej kopii tej strony.
Fast Dial Wyświetla zestaw dużych ikon w nowo otwartej karcie/oknie, tak aby można było jednym kliknięciem przejść do najczęściej odwiedzanych stron.
FireGestures Jeden z dodatków obsługujących gesty. Pozycja absolutnie obowiązkowa. Gesty są moim zdaniem jednym z najbardziej udanych pomysłów w dziedzinie interfejsów graficznych w ogóle i w sposób niesamowity zmieniają sposób interakcji z programem (nawet jeśli na co dzień pamięta się i używa jedynie kilku).
Flagfox Wyświetla flagę kraju w którym znajduje się serwer z aktualnie przeglądana stroną.
Forecastfox Powszechnie znany dodatek wyświetlający (całkiem dobrą) prognozę pogody.
Google Toolbar Dodatkowy pasek z dodatkowymi funkcjami od Google
GreaseMonkey Rozszerzenie umożliwiające dodawanie “podrozszerzeń” - skryptów zmieniających wygląd stron internetowych. Istnieją skrypty np. poszerzające widok map Google czy kolorujące pozycje Google Readera.
Open IT Online Otwiera od razu w przeglądarce pobierane pliki Microsoft Office.
Read It Later Zaznaczenie strony do przeczytania później.
Tamper Data Podgląd nagłówków HTTP.
Tweak Network Zaawansowane opcje sieciowe
Ubiquity W zasadzie temat na oddzielny wpis. Potężny dodatek umożliwiający wydawanie komend przeglądarce w specjalnym wierszu poleceń.
URL Fixer Poprawia literówki we wpisanym adresie
XMarks Pozycja obowiązkowa. Doskonałe narzędzie do synchronizacji między komputerami i wykonywania kopii zapasowej zakładek.

Pobieranie filmów z Youtube

Jest to zagadnienie przy którym dość często pojawiają się problemy i o które równie często jestem pytany. Poniżej przedstawiam moje sprawdzone sposoby, aby ściągnąć sobie film z Youtube.

  1. Zdecydowanie najbardziej podoba mi się pomysł strony www.kickyoutube.com. Jest absolutnie najprostszą i najszybszą metodą. Ich sztuczka polega na tym, że strona przyjmuje dokładnie ten sam system adresowania filmów co Youtube (w sensie parametrów przekazywanych do serwera http w adresie URL). Dzięki temu mając na przykład taki adres filmu:

http://www.youtube.com/watch?v=uvb-1wjAtk4

aby przejść do panelu sterującego pobieraniem i konwersją, jedyne co musimy zrobić to wpisać słowo “kick” do adresu URL:

http://www.kickyoutube.com/watch?v=uvb-1wjAtk4

Pomysł ten został wykorzystany również przez konkurencyjne serwisy, i tak, żeby było jeszcze łatwiej zapamiętać, co należy dopisać można używać abcyoutube.com

http://www.abcyoutube.com/watch?v=uvb-1wjAtk4

  1. Osobiście czasem używam również następujących stron - trzeba tam wkleić adres URL z Youtube:

    • http://dirpy.com - zdecydowanie polecam ze względu na szybkość działania i wysoką jakość zwracanych plików mp3

    • http://c01.filsh.net - solidny serwis, działa nieco wolniej niż ww., jakość również wysoka, strona po niemiecku

    • http://zamzar.com - bogactwo opcji, konwersja do wielu formatów, ale trzeba podać adres e-mail

  2. Używanym przeze mnie programem do konwersji z FLV do dowolnego formatu jest FormatFactory. Jest to program darmowy, łatwy i szybki w obsłudze o bardzo dużej liczbie obsługiwanych formatów.

  3. W kategorii programów pobierających film z Youtube polecam polskie rozwiązanie: FreeVideoDownloader do pobrania z http://www.pazera-software.pl/products/free-video-downloader/

  4. Wartym polecenia jest również rozszerzenie Firefox’a - Video DownloadHelper. Dodaje on do interfejsu przeglądarki przycisk który umożliwia pobranie w postaci pliku FLV aktualnie oglądanego filmu. Istotną zaletą jest duża liczba obsługiwanych serwisów, nie tylko Youtube.

Oczywiście nie twierdzę, że wymienione wyżej sposoby są najlepsze. To po prostu sposoby, które sprawdzają się dla mnie, ale opisuję je tutaj z myślą, że mogą się przydać również komuś innemu.

Prosty sposób na pozbycie się reklam w GG

Przypadkowo odkryłem niesłychanie prosty, “nieinwazyjny”, całkowicie legalny i bezpieczny sposób na ukrycie reklam w GG wersji 8. Kiedyś w tym celu stosowałem blokady na poziomie aplikacji firewall - filtr portu 80 dla procesu gg.exe, ale spowalniało to logowanie się do GG, jak się okazuje są lepsze sposoby.

Aplikacja GG używa do wyświetlania reklam kontrolki widoku strony internetowej w Internet Explorer. Czyli za to, co pojawia się w mało lubianym prostokąciku zarówno w głównym oknie programu jak i okienku rozmowy odpowiada przeglądarka firmy Microsoft. Jeżeli tak, to wszystkie ustawienia przeglądarki również tyczą się okienka z reklamami. Wystarczy uruchomić Internet Explorer i z menu **Plik **wybrać Pracuj w trybie offline. Od tej pory GG przy próbie załadowania reklamy nieświadomie spowoduje pojawianie się okienka Internet Explorer’a z pytaniem czy pozostać w trybie offline. Klikamy tak i nie oglądamy reklam.

Sposób wydaje mi się ciekawy, bo zakładam, że większość osób do przeglądania stron używa innej przeglądarki niż Internet Explorer, więc włączenie trybu offline w przeglądarce Microsoft’u nie spowoduje żadnych dodatkowych uciążliwości.