20:05
5/6/2017

Sieć Tor to nie tylko siedlisko przestępców, jak najczęściej przedstawiają to mainstreamowe media. To także ostoja wolności słowa, opozycji wobec władzy i anonimowości. Każdy może umieścić w Torze swój własny serwer ze stroną WWW, zyskując tym samym odporność na cenzurę i zapewniając ochronę tożsamości osób ją odwiedzających. Wbrew pozorom zadanie nie jest szczególnie trudne — poniżej pokażemy, jak krok po kroku skonfigurować swój własny serwer w sieci Tor za pomocą usług oferowanych przez firmę Aruba Cloud.

Grupa ArubaCloud to europejska firma, która ma 15-letnie doświadczenie w budowie i zarządzaniu centrami danych i dedykowanymi rozwiązaniami serwerowymi. ArubaCloud ma ponad dwa miliony klientów i mocną pozycję w Europie Zachodniej i Środkowowschodniej. Firma od 2015 r. działa również również w Polsce, gdzie jest liderem tanich serwerów VPS opartych na technologii VMware. Już za 4 PLN miesięcznie możesz mieć swój własny serwer VPS. Ale jest też szansa na zdobycie VPS za darmo.

Aby uruchomić swoją stronę w sieci Tor użyjemy webserwera Apache2 wraz z interpreterem PHP. Najpierw skonfigurujemy nasz serwer w taki sposób, aby namierzenie jego prawdziwego adresu IP było jak najbardziej utrudnione. Potem podłączymy serwer do sieci Tor i sprawdzimy naszą przykładową stronę. Wszystkiego dokonamy w 7 krokach:

  • wykonamy aktualizację systemu,
  • dostosujemy parametry kernela – sysctl,
  • zainstalujemy i skonfigurujemy firewall – ufw,
  • zainstalujemy i skonfigurujemy usługę Apache2,
  • zainstalujemy interpreter php,
  • utworzymy katalog /var/www/aruba_tor_service/ wraz z przykładowym plikiem – index.php, który będzie widoczny w sieci Tor,
  • podłączymy serwer do sieci Tor.

Zaczynamy!

Po założeniu konta na platformie ArubaCloud, jako szablon maszyny wybieramy system operacyjny Debian 8 64 bit. Na początku warto upewnić się czy posiadamy najnowszą wersję systemu Debian. Aktualną wersję można sprawdzić wykonując polecenie:
# cat /etc/debian_version
8.3

Jeśli nie posiadamy najnowszej dostępnej wersji – warto zaktualizować system za pomocą poniższych poleceń:
# apt-get update
# apt-get upgrade

Po pobraniu i zainstalowaniu nowych pakietów, jeśli to konieczne, restartujemy serwer poleceniem:
# reboot

Zmiana parametrów kernela

Ustawiamy odpowiednie parametry w /etc/sysctl.conf:
# vim /etc/sysctl.conf
Usuwamy znak komentarza (#) zawierające linie:
net.ipv4.conf.default.rp_filter=1 # włączamy ochronę przed ip spoofingiem
net.ipv4.conf.all.rp_filter=1
net.ipv4.tcp_syncookies=1 # włączamy mechanizm pozwalający na obronę przed atakami SYN flood
net.ipv4.conf.all.send_redirects = 0 #wyłączamy przekierowywanie pakietów ICMP,
net.ipv4.conf.all.accept_source_route = 0

Jeśli nie chcemy obsługiwać protokołu IPv6 na końcu pliku sysctl.conf dodajemy:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1

Wprowadzamy zmiany w życie:
# sysctl -p

Konfiguracja firewalla

Aby zminimalizować wykrycie prawdziwego adresu IP na jakim działać będzie nasza usługa w sieci Tor, warto ograniczyć dostępność serwera z adresów zewnętrznych. Dla bezpieczeństwa na serwerze powinny być zaimplementowane reguły firewall – w dystrybucji Linux Debian dostępny jest Uncomplicated FireWall. Jest to nakładka na iptables do łatwiejszego zarządzania firewallem.

W poniższej konfiguracji zezwalamy wyłącznie na ruch przychodzący na port tcp/22 dla usługi SSH. Reszta usług z zewnątrz powinna być niedostępna. Warto zwrócić uwagę, że nie otwieramy także ruchu TCP/80 dla serwera WWW.
# apt-get install ufw
# ufw allow ssh
# ufw default deny incoming
# ufw default allow outgoing
# ufw enable # aktywujemy reguły firewalla
# ufw status # sprawdzamy czy firewall jest aktywny

Warto rozważyć, czy usługa SSH rzeczywiście powinna być uruchomiona na porcie 22/tcp. Jest pewne, że bardzo szybko w logach pojawi się wiele prób zgadywania hasła. Dlatego sugerujemy przenieść SSH na inny port, wtedy możecie zezwolić na ruch do SSH na zaporze wydając poniższe polecenie:

# ufw allow port_usługi_ssh/tcp

Instalujemy i konfigurujemy serwer WWW

Ponieważ w sieci Tor chcemy udostępnić usługę WWW, potrzebny nam będzie serwer Apache2. Zainstalujemy więc pakiet apache2, który jest dostępny w standardowym repozytorium Linux Debian:

# apt-get install apache2

Jeśli chcemy aby nasz serwer WWW obsługiwał pliki PHP, powinniśmy zainstalować interpreter PHP:

# apt-get install php5 libapache2-mod-php5 php5-gd php5-mcrypt

Jeśli potrzebujecie dodatkowych modułów do PHP, warto zapoznać się z zawartością repozytorium wydając polecenie:

# apt-cache search php5-

Przed uruchomieniem Apache2 warto zadbać o jego odpowiedni poziom bezpieczeństwa. Na wstępie przekonfigurujemy usługę tak, aby nie wyświetlała ona numeru wersji. Na początku wyedytujemy plik security.conf, który znajduje się w katalogu /etc/apache2/conf-enabled/:

# nano /etc/apache2/conf-enabled/security.conf

W linii 26, zmieniamy dyrektywę ServerTokens na wartość Prod:

ServerTokens Prod

Zmiana ta spowoduje, że usługa nie będzie wysyłała w nagłówkach informacji pełnych o używanej wersji oprogramowania Apache2, np:

Server: Apache/2.4.25 (Unix) -> Server: Apache

Następnie w linii 36, w dyrektywie ServerSignature usuwamy znak komentarza (#)

ServerSignature Off

oraz komentujemy linię 37 dodając znak # na poczatku linii:

#ServerSinature On

Na samym końcu pliku security.conf dodajemy:

FileETag None

W kolejnym kroku będziemy edytować plik apache2.conf, który znajduje się w katalogu /etc/apache2/

# emacs /etc/apache2/apache2.conf
W linii 165 dodajemy znak “-” przy słowie Indexes. Zmiana ta spowoduje, że nie będziemy wyświetlali zawartości katalogów jeśli w katalogu nie znajduje się plik ‘index.php’ czy ‘index.html’.

Następnie musimy określić w którym katalogu na serwerze będzie znajdować się strona internetowa. W ramach tego artykułu utworzymy przykładowy katalog – /var/www/aruba_tor_service/:

# mkdir /var/www/aruba_tor_service/

Tworzmy prosty skrypt PHP, którego zadaniem będzie wyświetlenie nam komunikatu “Server TEST”

# echo "<?php echo('Server TEST') ?>" > /var/www/aruba_tor_service/index.php

Plik index.php został zapisany do katalogu /var/www/aruba_tor_service/.

Gdy wybraliśmy już odpowiedni katalog oraz utworzyliśmy prosty skrypt php, możemy przejść do utworzenia konfiguracji Apache2 dla strony dostepnej w sieci Tor. Kopiujemy domyślną konfigurację 000-default.conf jako 001-aruba-tor.conf

# cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/001-aruba-tor.conf

a następnie edytujemy skopiowany plik:

# nano /etc/apache2/sites-available/001-aruba-tor.conf

W pliku tym zmieniamy dyrektywę DocumentRoot z /var/www na katalog, gdzie znajduje się nasz przykładowy plik index.php

DocumentRoot /var/www/aruba_tor_service/

oraz definiujemy katalog w którym będą zapisywane żądania do serwera WWW (logi będą zapisywane w katalogu /var/log/apache2/tor/):

ErrorLog ${APACHE_LOG_DIR}/tor/error.log
CustomLog ${APACHE_LOG_DIR}/tor/access.log combined

Następnie tworzymy katalog, w który będą znajdywały się logi z usługi WWW:

# mkdir /var/log/apache2/tor/

W tym katalogu zostaną utworzone dwa pliki: access.log oraz error.log.
Dezaktywujemy domyślną konfigurację w Apache2:

# a2dissite 000-default

oraz aktywujemy konfigurację dla strony WWW w sieci Tor:
# a2ensite 001-aruba-tor.conf

Dla bezpieczeństwa dezaktywujemy też moduł mod_status:
# ap2dismod status

W pliku /etc/apache2/ports.conf ustawiamy adres IP oraz port na którym będzie nasłuchiwała usługa WWW. Usługa nie będzie dostępna bezpośrednio, a jedynie za pomocą sieci Tor, dlatego wskazujemy adres lokalny:

# nano /etc/apache2/ports.conf
Listen 127.0.0.1:80

Celem wprowadzenia zmian restartujemy usługę Apache2:

# /etc/init.d/apache2 restart

Na chwilę obecną jeszcze nie możemy wywołać naszej strony przez Tora. Aby udostępnić naszą stronę w sieci TOR, musimy podłączyć serwer do sieci Tor.

Podłączamy serwer do sieci Tor

Aby spełnić to wymaganie instalujemy pakiet tor:

# apt-get install tor

Następnie edytujemy plik konfiguracyjny /etc/tor/torrc:

# vim /etc/tor/torrc

Definiujemy naszą usługę:

HiddenServiceDir /var/lib/tor/aruba_hidden_service/
HiddenServicePort 80 127.0.0.1:80

Wskazujemy adres 127.0.0.1:80 – jest to adres lokalny, który wskazaliśmy w pliku /etc/apache2/ports.conf. Kończąc edycję pliku usuwamy znak komentarza z linii 178:

ExitPolicy reject *:*

Restartujemy usługę Tor

# /etc/init.d/tor restart

Po nawiązaniu połączenia z siecią Tor zostanie utworzony plik /var/lib/tor/aruba_tor_service/hostname. W pliku tym zostanie wygenerowana domena w sieci Tor:

# cat /var/lib/tor/aruba_tor_service/hostname
ymrcdjxykr2ublbc.onion

Jeśli interesuje was jak zbudowany jest adres w domenie .onion, zajrzyjcie tu. A jeśli chcielibyście wygenerować sobie bardziej “sensowną” domenę onion, to możecie skorzystać z narzędzia Eschalot lub scallion.

Jeśli zajrzymy pod wygenerowany adres http://ymrcdjxykr2ublbc.onion w sieci Tor to odpowie nam nasz serwer, wyświetlając plik index.php.

Brawo, właśnie uruchmiłeś swoją stronę w sieci Tor! Pochwal się teraz w komentarzach jej adresem :)

PS. Niniejszy artykuł jest artykułem sponsorowanym, za który redakcja Niebezpiecznik.pl otrzymuje wynagrodzenie. Staramy się, aby publikowane na Niebezpieczniku reklamy były przydatne i kształcące. Jeśli chcielibyście przeczytać porady na inne tematy (nie tylko związane z siecią Tor), dajcie znać w komentarzach, postaramy się aby kolejne teksty poruszyły wskazane przez Was zagadnienia.

Przeczytaj także:

57 komentarzy

Dodaj komentarz
  1. Chętnie korzystałbym z usług aruby, ale niestety nie mogę zapłacić przykładowo skrillem lub paysafecard, co jest dla mnie najlepszą opcją. Podobno opłaty są wysokie, ale chyba mogłaby być opcja płatności z pokryciem przez kupującego wszystkich opłat.

    • Powinni akceptować Bitcoiny, bo inaczej to trochę słabo do stawiania Torowych serwerów…

    • Bloga gdzie najlepiej postawić ,żeby smutni czasem nie pukali i niedopytywali się aż tak o ekstremizmem oprócz aruby ?

    • Nie mozna placic karta/paypalem (zlecenie stale), a tylko polskimi bankami. To komplikuje cala sprawe i stawia arube na… eeee… nie stawia nigdzie! Nie mam tam nic, a pewnie mialbym sporo, ale coz… nie mam polskich konto, to nie mam aruby. Ich support twierdzi, ze “byly naduzycia” jak mieli plasnosci kartami.

  2. Eh miałem nadzieję że będzie w dockerze

  3. Plus dla Aruby – za reklamowanie się przez sponsoring artykułów.

  4. Ale.. czemu nie na nginx’ie? :D

    • A może thttpd (acme.com)? Dodatkowa warstwa obrony jest taka, że nikt nie wpisze poprawnie w google “thttpd exploit” za pierwszym razem, a słownie między kolegami-crackerami też ciężko wymówić, chyba że po wódce, to wtedy każdy serwer jest “tthttpp”…

  5. Szkoda tylko że jest to Apache :(

    • Nie marudź. Zmiana z apache na cokolwiek innego jest trywialna. A jeśli ktoś nie ma podstaw, to lepiej by nie stawiał serwera w Torze.

  6. Jak już reklamujecie usługę dla pedofilów i takich tam to chociaż upewnijcie się, że można za nią zapłacić Bitcoinem. Zboczek, o przepraszam – uciśniony dysydent chiński xd – nie będzie przecież płacił za to kartą kredytową.

    • Jasne, przecież każdy kto chce ukryć swoją tożsamość to zboczeniec i taki tam, patrząc na to co się dzieje w naszym “Kórniku” to za jakiś czas będzie można tylko w taki sposób wypowiedzieć się o naszych rządzących :)

    • Usługę dla pedofilów… powiedział właściciel jednego z największych portali w Polsce udostępniającego #rozowepaski publicznie

    • Arubę można opłacić przelewem przecież, czyli Inpay. Ponadto można na Aruba postawić blog w styly antykomor, albo Charlie Hebdo czy jak im tam było, i nie martwić się aż tak ekstremizmem.
      Albo np piętnować działania korporacji innych niż Aruba. Wówczas adwersarz nie ma mocy sprawczej takiej jak wobec normalnej strony www.

    • Sporo tego myślenia w Polsce ostatnio. Ukrywasz się? Znaczy żeś sodomita i zdrajca. Wszak prawy obywatel nie powinien mieć nic do ukrycia przed przedstawicielami suwerena. I nic do powiedzenia…

    • To nie ta sama Aruba co na prośbe Hacking Teamu przejęła adresy IP innego operatora? … niezły honeypot :)

    • Jak już przeglądasz i komentujesz artykuł o usługach dla zdegenerowanych ludzi i innych takich to chyba sam taki jesteś bo kto normalny interesuje się czymś takim jak TOR!

  7. “`
    ServerTokens Prod
    “`

    możecie zamienić na

    “`
    sed “s/ServerTokens.*/ServerTokens Prod/g”
    “`

  8. Szacunek dla Aruby że mają na tyle ‘jaj’ żeby sponsorować takie artykuły. Szczególnie w porównaniu do niektórych usługodawców dla których Tor jest dziki Tor jest zły, Tor ma bardzo ostre kły, dla zasady blokując.

  9. W końcu na Debianie, szanuję.
    Ale w jednej linijcie daliście chyba niechcący emacsa zamiast nano. :D Jeszcze brakuje tylko do tego sendmaila.

  10. Fajna inicjatywa, Tor to nie tylko zło i dobrze, że ktoś o tym informuje z zyskiem lub bez ale informacja w polski internet poszła.

    Kompletny poradnik na Nginx z obsługą e mail i zabezpieczeniami znajdziecie tutaj: http://54ogum7gwxhtgiya.onion/hs-cookbook/

    • Krangu, clearnetowa wersja Twojej strony znikła już z sieci?

    • Clearnetowa wersja to był tylko index z linkiem do cebulowej. Jak chcecie mogę postawić na nowo. Tylko czy jest taka potrzeba?

    • Po .onion (a przed /) dopisz jeszcze .city i działa :)

  11. Vim też jest. Chyba nie chcieli być nudni ^^

  12. Kurcze zainstalowalem ostatnio klienta tor, ale 95% linkow znalezionych na forach mi nie dzialalo. Jest tam jakies globalne forum, z ktorego mozna trafic na jakies inne pomniejsze strony? Albo cos godnego polecenia w tematyce podobnej do niebezpiecznika?

  13. Coś macie błąd w stopce:
    Wszelkie prawa zastrzeżone © 2009- echo date(“Y”);

    • Nie, nie maja. Zerknij w zrodlo strony ;)

    • A żebyś zobaczył źródło strony, fiu fiu.

    • Tak ma być.

    • widze że kolega nowy…

  14. Wykonanie tych punktów sprawia ze mój serwer jest odporny na ataki? Chętnie przeczytalbym coś na temat problemów z jakimi maja do czynienia male firmy hostingowe. Wydaje mi się że gdyby to było takie proste to nikt nigdy by nie miał problemów z serwerami a przecież ciągle coś nawala. Jeśli ktoś ma doświadczenie w tym temacie to laik chętnie przeczyta!

    • Oprogramowanie, czy to closed source, czy to open source, ma błędy. Trzeba aktualizować system, bo bezpieczeństwo to proces. To chyba pierwsza, nie jedyna ale najważniejsza zasada.

  15. # emacs /etc/apache2/apache2.conf

    Pomocy ! Jak się z tego wychodzi ?
    :wq nie działa :(

    • C-x

  16. A gdzie się podział tag ARTYKUŁ SPONSOROWANY?

  17. “Po , jako szablon maszyny wybieramy system operacyjny Debian 8 64 bit.”

    Po czym?

    A i czemu najpierw proponujecie vima a potem nano? Dobrze, że chociaż emacsem nie straszycie. mcedit FTW!

  18. “Już za możesz mieć swój własny serwer”
    No jak za mogę to “również również” się cieszę.
    Pominąć cenę w tekście reklamowym, to albo poważne niedopatrzenie, albo jakiś chiński chłyt marketingowy( ͡° ͜ʖ ͡°)

  19. “Przekierowywanie pakietów ICMP” – że jak?

  20. Fajny artykuł, taki sponsoring to popieram – normalnie człowiek może polubić reklamy :)

  21. Dlaczego firewall przez ufw? Jak to ma być minimalny serwer webowy bez obsługi baz, serwisów skryptowych itd itp, to nie lepiej jest ogarnąć rule przez czyste iptables?

  22. http://www.forbes.pl/bitcoin-podstawa-atakow-ransomware-hakerzy-go-uwielbiaja,artykuly,212781,1,1.html
    “Płacenie okupu zaleca także zazwyczaj serwis niebezpiecznik.pl, w przypadku chęci odzyskania danych.”
    Nie no serio???

    • Zdecydowanie! Przy innych ransomware jak nie masz backupu – plac, albo czekaj w niepewnosci czy kiedys ktos zlamie szyfrowanie. Co do Twojego cytatu, to doklej tez kolejne zdanie ktore wygodnie pominąłeś: “Jednak dla WannaCry wydano odmienną rekomendację. “

  23. Hm… Aruba… coz… Ale w sumie ktos musi normalnych inaczej tez obslugiwac…
    Co do meritum – Gratuluje pomyslu aby zablokowac wszystko na FW a nastepnie probowac sciagnac updaty :) Ale to moze i lepiej – oszczedzi posiadaczowi wsydu wystawiania sie w takim towarzystwie…
    Przy okazji – nie ma czegos takiego jak bezpieczny serwer. ;) Na szczescie TOR daje dobre mozliwosci namierzenia kazdego z uczestnikow tej zabawy a wiec w razie czegos i mozna sprobowac dochodzic sprawiedliwosci – no chyba ze to ‘oddzial 14652’ zlokalizowany pod Pekinem

  24. no w końcu ktoś używa Debiana a nie korpolubnych dystrybucji ;)

  25. no ladnie…. chlopaki w nano edytuja pliki… ;-)

    • nano jeszcze ujdzie ale żeby w emacs-ie :)

  26. Ten PS. to powinien być na początku albo w tytule wielkimi literami – ARTYKUŁ SPONSOROWANY – jeśli lubisz czytać reklamy śmiało ;)

    • Nastepnym razem powiadomimy Cie listownie na tydzień przed publikacją :)

    • To się dopiero nazywa dbanie o użytkowników :)

  27. Co do UFW – jeszcze trzeba dać “systemctl enable ufw.service”. Jak się tego nie zrobi to UFW przy restarcie systemu po prostu nie wystartuje.

  28. Bardzo fajny tutorial na prawdę!!! I chyba się nim trochę pobawię ;)

    Ale mam kilka pytań do autora z racji jego widocznie większego doświadczenia ;)

    1) Czy firewall to jest jedyna linia naszego bezpieczeństwa serwera ?

    2) Omawiamy tutaj kwestie od razu ataków od tylca :P a co z zabezpieczeniem naszego frontu ?

    3) Na przykładzie który widzimy wyżej mimo, że od strony administracyjnej jest trochę zabawy i może przysporzyć trochę problemów ale nie owijajmy w bawełnę nie jest to za bardzo zaawansowany projekt ;) Jak wygląda kwestia zabezpieczeń w przypadku gdzie administrator chciałby postawić sklep np Prest bądź Woo?

    4) zatem nasuwa się nam pytanie wynikowe :) Wiemy jaka jest sieć Tor :) ja po dłuższej przerwie od Tora wskoczyłem na chwilę do sieci i nadziałem się na pierwszym inpucie :p i tak minęła mi nocka :P A więc skoro stawiamy sklep w sieci Tor a klientów potencjalnych mamy po za nią, to w jaki sposób możemy zabezpieczyć ich drogę do naszego sklepu jak i sam przebieg rejestracji, logowania, transakcji itp… ?

  29. Jeszcze można zmienić nazwę serwera, żeby zamiast apache się wyświetlało co innego ;) Artykuł fajny :)

    https://www.howtoforge.com/changing-apache-server-name-to-whatever-you-want-with-mod_security-on-debian-6

  30. Cześć, czy ktoś wie jak zainstalować phpmyadmin? I jak stworzyć bazę danych w domenie .onione?

  31. Witam,

    zbyt trudne dla takiego starucha jak ja. Jednak nawet zgredy mają coś do powiedzenia, co się może nie wszystkim podobać.

    Marzy mi się blog z zawartością zdjęć, tekstów i filmów, po które wredne łapska nie sięgną. Jednak wiem, że nawet za miesiąc nie będę w stanie sam tego uczynić.

    Czy znajdzie się ktoś, kto mi pomoże za niewygórowaną opłatą?

    Zapomniałby, że chyba potrzebna jest domena. Oczywiście nie w naszym kraju rejestrowana.

    Pozdrawiam
    J

Twój komentarz

Zamieszczając komentarz akceptujesz regulamin dodawania komentarzy. Przez moderację nie przejdą: wycieczki osobiste, komentarze nie na temat, wulgaryzmy.

RSS dla komentarzy: