Czy to jeszcze żart Prima Aprilisowy czy już phishing?

Dzisiaj pojawiła się na niebezpieczniku notka informująca o rzekomym błędzie w Facebooku pozwalającym na sprawdzenie kto nas odwiedza. Link do tej notki: http://niebezpiecznik.pl/post/jak-sprawdzic-kto-przegladal-twoj-profil-na-facebooku/

O notce dowiedziałem się z własnego Facebooka, gdy jeden z moich znajomych wrzucił link do niej i dopisał „działa!”. Zatem skoro dotarła ona do mnie to zapewne i w sieci rozprzestrzenia się z prędkością błyskawicy.

Notka mówi, że wpisując w hostsy:
178.217.184.34 facebook.com
Będzie można sprawdzić kto ogląda profil. Są scriny jest wszystko co trzeba, żeby uwiarygodnić tą informację. Dziwne jest tylko jedno, dlaczego owy adres 178.217.184.34 jest zlokalizowany w Polsce?

Co więcej, dlaczego pytając ten adres na porcie 80 o domenę niebezpiecznik.pl ona odpowiada poprawną stroną? Może niebezpiecznik hostinguje się w Facebooku, albo Facebooku u niebezpiecznika ? 😀

Moje przypuszczenie – niebezpiecznik postanowił w bardzo bolesny sposób zadrwić z czytelników w ten Prima Aprillisowy dzień i udostępnił stronę, która pewnie jest bramką do facebooka (przekazuje wszystkie zapytania do Facebooka) przy okazji dodając kilka informacji (np. o ilości odwiedzić) na liście waszych znajomych!

Niby nic groźnego… Jednak… Niebezpiecznik ma dostęp do WASZYCH HASEŁ (ciekawe ile osób ma to samo hasło do poczty i facebooka? 🙂 )!

Ech… Ten Prima Aprillis… Najstraszniejsze jest to, jak dużo osób bez pytania wpisało dowolną linię do hostsów bez większego oporu…

 

OpenWRT jak zacząć?

Przede wszystkim czym jest OpenWRT ? Wg. definicji z OpenWRT.org jest to dystrybucja Linuxa przeznaczona na zintegrowane (embedded?) urządzenia (czyli dla wszelkiego rodzaju routerów, access pointów itp.).

Po co instalować OpenWRT ? Warto się nad tym zastanowić. Często producent urządzenia udostępnia na tyle rozwinięty firmware, że wszystkie potrzebne nam funkcje są w nim już zawarte. Czasami jednak chcielibyśmy ujednolicić strukturę naszych urządzeń lub poszerzyć funkcjonalność naszego urządzenia – wtedy warto spróbować OpenWRT.

Od czego zacząć?

Na początku należy wybrać urządzenie. Nie może być to dowolne urządzenie, musi być wspierane przez OpenWRT. Listę wspieranych urządzeń można znaleźć tutaj. Warto też sprawdzić czy do danego urządzenia można wgrać OpenWRT poprzez dotychczasowy firmware (przy pomocy interfejsu WWW) czy też będziemy musieli otworzyć urządzenie (co za tym idzie stracić gwarancję) i wlutować się w piny portu szeregowego.

Jakie urządzenie wybrać ?

Jest to kwestia co chcemy uzyskać. Warto zwrócić uwagę czy jest port USB (będzie można go wykorzystać do podłączenia bezprzewodowego internetu lub dysku). Należy też sprawdzić w jakiej rewizji (revision) urządzenie jest obsługiwane przez OpenWRT. Może się okazać, że pomimo zgodności oznaczenia modelu rewizja dostępna na rynku jest nowsza niż obsługiwana (nowsze rewizje mogą, ale nie muszą działać – jeśli nie ma jej na liście oznacza to, że jeszcze nikt nie przetestował kompatybilności urządzenia z OpenWRT). Ja wybrałem urządzenie TP-LINK TL-WR824ND.

Jak wgrać OpenWRT?

Sposoby instalacji OpenWRT są uzależnione od modelu. W niektórych trzeba otworzyć urządzenie i dolutować się do odpowiednich wyprowadzeń, w innych wystarczy dokonać aktualizacji firmware’u wybierając specjalnie przygotowaną binarkę. W urządzeniu, które będę opisywał wystarczy załadować OpenWRT przez panel WWW – to jest jego jedna z zalet. Przy wybranym urządzeniu z reguły jest opis jak należy zaktualizować firmware do OpenWRT.

 

c.d.n.

Jak usunąć separator ( ” — ” ) treści od stopki w Thunderbird?

Ustawiając stopkę dla wiadomości w Thunderbird, program automatycznie dodaje „–” pomiędzy treścią i stopką. Co zrobić, żeby to usunąć?
Wystarczy wybrać z menu Narzędzia -> Opcje. Wybieramy ikonę „Zaawansowane” oraz zakładkę „Ogólne”. Klikamy guzik „Edytor ustawień”. Klikamy prawym na liście ustawień, z menu wybieramy „Dodaj ustawienie typu” -> „Wartość logiczna (Boolean)”. W oknie nazwy nowego ustawienia wprowadzamy „mail.identity.default.suppress_signature_separator”. Na liście pojawi się to ustawienie – musimy się upewnić, że ma wartość true. I viola, nie ma już „–”

Rootkit atakuje Debiana

Mawia się, że Linux to bardzo bezpieczny system… i wg. mnie w istocie tak jest, ale jest wprost proporcjonalnie bezpieczny do świadomości i wiedzy użytkownika go obsługującego. Jednak tak jest w każdym systemie, nawet w Windowsie!

Wczoraj obiegła świat informacja o nietypowym rootkit’cie, który atakuje kernel Debiana w wersjie Squeeze. Informacja o nim została zamieszczona tydzien temu na Full Disclosure  przez właściciela pewnej strony WWW, na której został umieszczony przez atakującego. Kod został już przeanalizowany przez kilka firm (w tym CrowdStrike oraz Kaspersky Lab), analiza wykazała, że jest to bardzo nietypowy, złośliwy kod wykorzystujący niestandardowy sposób ataku typu iFrame injection.

Rootkit atakuje dokładnie wyselekcjonowane systemy, chodzi o 64-bitowy kernel w wersji 2.6.32-5. W pierwszej fazie próbuje on ukryć własne wątki, następnie próbuje przejąć kontrolę nad systemem, jednak nie wiadomo po co! Kod wygląda na niedokończony, taką hipotezę pozwala wysnuć m.in. istnienie w nim kodu debugującego.

Fon Netia Free – co to jest i jak wyłączyć?

Co to jest?

FON to projekt stworzony w 2006 roku, ma na celu zapewnienie darmowego i wszechobecnego dostępu do internetu. Sieć budowana jest na całym świecie. Netia dołączyła do tej sieci podczas World Mobile Congress 2012. Czy jest to dobre ? Owszem. Jednak oprócz powszechnie dostępnego internetu Netia postanowiła jeszcze na tym zarobić. Bez wyraźnego wyrażenia chęci przez klienta Netia uruchamia zdalnie na Twoim routerze (zanim router nie pobierze konfiguracji z Netii nie widnieje sieć FONa) dodatkowy SSID, do którego może mieć dostęp każdy uczestnik sieci FON. Jeśli nie masz dostępu do sieci FON możesz zapłacić Netii SMSem za czasowy dostęp do sieci. Jaki jest tego efekt ? Bez Twojej wyraźnej zgody (nie szukałem, ale domyślam się, że pewnie gdzieś w regulaminie, małym druczkiem napisane jest, że Netia może uskuteczniać takie praktyki) oprócz abonamentu, który płacisz Netii, może ona dodatkowo zarobić na osobach chcących dostać się do Internetu, a to wszystko z wykorzystaniem Twojego prądu, Twojego urządzenia i Twojego łącza.

Nie chcę tak! Co mogę zrobić?

Możesz wyłączyć propagowanie sieci FON w Twoim routerze NETIA SPOT. Aby to zrobić musisz się na niego zalogować. Na stronie głównej ukarze się taki ekran: 

Jeśli Twój router ma udostępnioną sieć FON – będzie ona tutaj widoczna pod nazwą FON_NETIA_FREE_INTERNET.

Przejdź teraz do zakładki „Połączenie z Internetem”:

I wybierz link „Fon”…

Otworzy się formularz, w którym należy odznaczyć opcję „Włączony” i klikamy „Ok”.

W ten sposób wyłączyliśmy SSID Fona.

 

Apache 2.2 wiele wirtualnych domen jednym konfigiem

Ostatnio postanowiłem poszukać rozwiązania, które pomogłoby mi zautomatyzować proces tworzenia nowego projektu na moim serwerze developerskim. Do tej pory tworzyłem nowy <VirtualHost> z nazwą domeny. W stefie miałem wpis z gwiazdką – więc z tym chociaż nie miałem problemu.

Szperając trochę w sieci natknąłem się na VirtualDocumentRoot, dzięki tej dyrektywie można stworzyć jeden <VirtualHost>, który obsłuży wszystkie projekty w danej domenie.

Załóżmy, że mamy domene example.com i chcemy zrobić, aby Apache obsługiwał wszystkie domeny *.projekty.example.com oraz sam wybierał katalog w którym znajduje się strona.

Na początek musimy w strefie dodać wpis z gwiazdką.

*.projekty         IN A [ip serwera z apache]

Teraz konfigurujemy Apacha:

<VirtualHost *:80>
    ServerName projekty.example.com
    ServerAlias *.projekty.example.com
    VirtualDocumentRoot /home/projects/%-4+/public_html
</VirtualHost>

Dyrektywa VirtualDocumentRoot pozwala nam skonfigurowanie takiego katalogu strony, który będzie zależny od domeny. Stosując %, możemy wybrać, która część domeny ma być brana pod uwagę. Zastosowane tutaj %-4+ powoduje, że wybierane są wszystkie części subdomeny .dev.example.com.

Przykład:

Przy takiej konfiguracji, user wchodzący na stronę testowa.projekty.example.com dostanie stronę z katalogu /home/projects/testowa/public_html

W takiej konfiguracji możemy jeszcze ustawić stronę dla domeny projekty.example.com, musimy umieścić ją w katalog /home/projects/_/public_html (brak domeny zastępowany jest podkreśleniem).

W ten sposób mamy dość zautomatyzowany proces tworzenia domen. Wystarczy założyć katalog i domena od razu działa.

Moim dodatkowym założeniem było jeszcze, że domyślnie nie chcę, aby użytkownicy „z zewnątrz” widzieli nowy projekt strony. User mógłby się domyślić jak wyglądać będzie nowa nazwa strony. W tym celu dodałem następujący kod do konfiguracji Apache:

<Directory /home/projects>
    AllowOverride All
    Order Deny,Allow
    Allow from 192.168.168.0/24
    Deny from All
</Directory>

Dyrektywa AllowOverride All pozwoli mi na nadpisywanie wszystkich możliwych parametrów przez plik .htaccess. Zatem jeśli chcę, aby mój projekt był dostępny z Internetu tworze w /home/projects/[nazwa_projektu] plik .htaccess z treścią:

Allow from Any

Pozostała jeszcze jedna rzecz – chciałem, aby pomimo, że projekt dostępny jest z Internetu to jednak nie był indeksowany przez wyszukiwarki. Stworzyłem plik /etc/apache2/robots.txt z treścią:

User-agent: *
Disallow: /

A następnie dodałem do konfiguracji Apache:

Alias /robots.txt /etc/apache2/robots.txt

Dzięki czemu w każdej mojej domenie istnieje plik robots.txt z parametrami dla wyszukiwarek zabraniającymi indeksacji jakichkolwiek plików – najpopularniejsze wyszukiwarki honorują ten plik.

Best practies po instalacji systemu

Postaram się zebrać tutaj wszystkie najważniejsze konfiguracje, które należy wykonać na świeżo zainstalowanym systemie.

Stworzenie konta użytkownika i zablokowanie dostępu do roota przez SSHa przy użyciu hasła

Warto założyć konto zwykłego użytkownika, do którego będziemy się logować przed podniesieniem uprawnień do poziomu roota. Konto użytkownika zakładamy oczywiście poprzez adduser.
Po założeniu konta modyfikujemy konfigurację serwera SSH. W tym celu edytujemy /etc/ssh/sshd_config i zmieniamy wartość PermitRootLogin

PermitRootLogin without-password

Takie ustawienie chroni nas przed atakami bruteforce na konto roota. Dostęp do niego będzie możliwy jedynie przy użyciu klucza. Jest to wygodne rozwiązanie w przypadku, gdy chcemy uzyskiwać zdalny dostęp do serwera bezpośrednio na konto roota (np. przy użyciu skryptu backupującego).
Można również ustawić wartość no – wtedy dostęp do konta roota z poziomu SSHa nie będzie w ogóle możliwy.

Ograniczenie dostępu do su dla użytkowników z określonej grupy

Jeśli mamy większą liczbę użytkowników, którzy posiadają dostęp do SSH naszego serwera warto ustawić w PAMie, żeby su mogli wywoływać użytkownicy tylko jednej grupy (w Debianie jest to domyślnie grupa root).
Żeby to zrobić proponuję najpierw dodać naszą nazwę użytkownika do grupy root

usermod -a -G root solitary

oczywiście zamiast „solitary” podajemy swoją nazwę użytkownika. Teraz edytujemy plik /etc/pam.d/su i odkomentujemy (lub dodajemy) linię:

auth       required   pam_wheel.so group=root

Od tej chwili dostęp do su mają jedynie użytkownicy z grupy root. Proponuję otworzyć nowe połączenie SSH (nie zamykając starego!), zalogować się na swoje konto i sprawdzić czy możemy poprawnie podnieść uprawnienia przy pomocy su (aby uniknąć sytuacji w której tracimy zdalną kontrolę nad maszyną).

Szybkie i wydajne przesyłanie danych między serwerami

Zwykle korzystałem z pipelingu i ssh. Jednak czasami niepotrzebne jest nam szyfrowanie przesyłanych danych (gdy, wykonujemy to w zaufanej sieci) a chcemy szybko przesłać dane bez zbędnej utraty prędkości i obciążania maszyn.

W takiej sytuacji najpierw odpalamy na serwerze, który będzie odbierał socketa:

socket -q -r -s 9999 > plik_do_ktorego_ma_zostac_zapisane

lub też od razu pipelingiem do tara, aby rozpakować dane:

socket -q -r -s 9999 | tar -xvf -

Po stronie serwera nadającego wykonujemy:

cat twoj_plik | socket -q zdalny.komputer.pl 9999

lub bezpośrednio z tara:

tar -cf - katalog_do_przeslania | socket -q zdalny.komputer.pl 9999

Wada – nie ma paska postępu.

Problem z kompilacja Encode_Detect dla Perla

problem:

cc -Isrc -I/usr/local/lib/perl5/5.8.8/mach/CORE -DXS_VERSION=.1.00. -DVERSION=.1.00. -DPIC -fPIC -x c++ -Iinclude -c -DAPPLLIB_EXP=/usr/local/lib/perl5/5.8.8/BSDPAN -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe -I/usr/local/include -O0 -pipe -fexpensive-optimizations -s -march=pentiumpro -o lib/Encode/Detect/Detector.o lib/Encode/Detect/Detector.c
lib/Encode/Detect/Detector.c:73: syntax error before `__attribute__.
lib/Encode/Detect/Detector.c:74: syntax error before `__attribute__.
lib/Encode/Detect/Detector.c:79: register name not specified for `struct SV ** mark.
lib/Encode/Detect/Detector.c:79: `sp. was not declared in this scope
lib/Encode/Detect/Detector.c:81: syntax error before `if.
error building lib/Encode/Detect/Detector.o from .lib/Encode/Detect/Detector.c. at /usr/local/lib/perl5/site_perl/5.8.8/ExtUtils/CBuilder/Base.pm line 108.
*** Error code 2

Rozwiązanie:
W katalogu pakietu w work/Encode-Detect-xxx/Detector.xs
Należy dodać

*** 38,43 ****
#define PERL_NO_GET_CONTEXT /* we want efficiency */
#include .EXTERN.h.
#include .perl.h.
+ #undef HASATTRIBUTE_UNUSED
#include .XSUB.h.