Friday, June 26, 2015

Создание Tor onion сайта - пример настройки в Ubuntu.

Расссмотрим пример настройки Tor onion сайта в операционной системе Ubuntu.

Общие рекомендации по соблюдению аннонимности:
1. Не запускайте более ничего на данном сервере.
2. Используйте начисто установленную операционную систему.
3. Не используйте более никаких сервисов у данного сервис провайдера.
4. Оплаичвайте услуги провайдера через PayPal или лучше через Bitcoin.
5. Не предоставляйте сервис провайдеру никакой идентифицирующей Вас информации.
6. Не запускайте Tor-relay на данном сервисе, потому как публичный адрес данного сервера будет публичным адресом Tor-relay.
7. Не отправляйте почту с данного сервера.
8. Используйте безопасное программное обеспечение запущенного сайта и стойкие пароли.
9. Избегайте програмного обеспечения которое использует скрипты, такие как javascript например.
10. Убедитесь, что Ваше приложение не выводит информацию об ошиках способную нарушить анонимность сервера.
11. Убедитесь, что код сайта не использует какие либо элементы со сторонних сайтов, таких как jquery.com или google fonts.
12. Устанавливайте своевременно обновления безопасности на сервер.


Основные шаги:
1. Выбрать хостинг для сайта с учётом географического распределения пользователей.
2. Установить и настроить операционную систему Ubuntu.
3. Установить и настроить веб сервер Nginx.
4. Установить и настроить Tor Hidden Services.
После проделанных шагов, сайт будет доступен по своему onion адресу в сети Tor.

Будем исходить из того, что хостинг мы выбрали и у нас установлена операционная система Ubuntu.

Настройка Ubuntu:
1. Удаляем приложения которые могут повлиять на анонимность:
sudo apt-get remove --purge rsyslog exim postfix sendmail wget curl
2. Оптимизируем настройки для работы системы с нагруженным сайтом:
sudo vi /etc/sysctl.d/100-nginx.conf
fs.file-max = 2097152
net.core.netdev_max_backlog = 65536
net.core.optmem_max = 25165824
net.core.rmem_default = 16777216
net.core.rmem_max = 31457280
net.core.somaxconn = 65536
net.core.wmem_default = 16777216
net.core.wmem_max= 31457280
net.ipv4.ip_local_port_range= 2000 65000
net.ipv4.tcp_congestion_control = cubic
net.ipv4.tcp_fin_timeout= 7
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_time = 90
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_max_syn_backlog = 65536
net.ipv4.tcp_max_tw_buckets = 1048576
net.ipv4.tcp_mem = 8388608 8388608 8388608
net.ipv4.tcp_orphan_retries = 0
net.ipv4.tcp_rfc1337 = 1
net.ipv4.tcp_rmem = 8192 87380 16777216
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_wmem = 8192 65536 16777216
vm.dirty_background_ratio = 2
vm.swappiness = 10
vm.dirty_ratio = 60
sudo sysctl -p /etc/sysctl.d/100-nginx.conf

sudo vi /etc/security/limits.conf
*           soft    nofile  1048576
*           hard   nofile   1048576
root       soft    nofile   1048576
root       hard   nofile   1048576

sudo vi /etc/pam.d/su
session       required       pam_limits.so
sudo vi /etc/pam.d/common-session
session
      required
      pam_limits.so

Установка и настройка Nginx:
1. Устанавливаем nginx
sudo apt-get install nginx
 2. Сохраняем оригинальный конфиг:
sudo mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig
3. Создаём конфиг с конфигурацией для высоко нагруженного сайта:
sudo vi /etc/nginx/nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;

worker_rlimit_nofile 2129952;

events {
        worker_connections 81920;
        multi_accept on;
        use epoll;
}

http {

        ##
        # Basic Settings
        ##

        open_file_cache max=200000 inactive=20s;
        open_file_cache_valid 30s;
        open_file_cache_min_uses 2;
        open_file_cache_errors on;
       
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 30;
        reset_timedout_connection on;
        send_timeout 2;
        client_max_body_size 32k;
        client_body_buffer_size 32k;
        client_body_in_single_buffer on;
        client_body_timeout 10s;
        client_header_timeout 10s;
        client_header_buffer_size 8k;
        large_client_header_buffers 4 32k;
        types_hash_max_size 2048;
        server_tokens off;

        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # Logging Settings
        ##

        access_log off;
        error_log off;

        ##
        # Gzip Settings
        ##

        gzip on;
        gzip_disable "MSIE [1-6]\.";
        gzip_comp_level 6;
        gzip_buffers 16 8k;
        gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

        ##
        # Limits
        ##
        limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
        limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=30r/s;

        ##
        # Server configuration
        ##
server {
        listen 127.0.0.1:8080 default_server backlog=65536;
        server_name localhost _ "";

        root /usr/share/nginx/html;
        index index.html;

#        error_page 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 420 422 423 424 426 428 429 431 444 449 450 451 500 501 502 503 504 505 506 507 508 509 510 511 = /index.html;

#       limit_conn conn_limit_per_ip 20;
#       limit_req zone=req_limit_per_ip burst=50 nodelay;

        location / {
                expires 1h;
                allow 127.0.0.1;
                deny all;
        }
}
}
 
4. Перегружаем Nginx:
sudo service nginx restart

Установка и настройка Tor:
1. Для установки Tor подключаем репозитории указанные на страничке проекта:
sudo vi /etc/apt/sources.list
deb http://deb.torproject.org/torproject.org trusty main
deb-src http://deb.torproject.org/torproject.org trusty main
gpg --keyserver keys.gnupg.net --recv 886DDD89
gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -
2. Устанвливаем Tor:
sudo apt-get update
sudo apt-get install tor deb.torproject.org-keyring
3. Выполняем настройки Tor Hidden Service.
sudo vi /etc/tor/torrc
HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:8080
4. Перезапускам Tor:
sudo service tor restart
5. Узнаём свой Tor onion адрес:
sudo cat /var/lib/tor/hidden_service/hostname

Теперь наш сайт доступен по адресу который указан в данном файле.

За это имя отвечает файл содержащий приватный ключ: /var/lib/tor/hidden_service/private_key

Устанавливаем и настраиваем файервол.
1. Устанавливаем файервол:
sudo apt-get install ufw
2. Настраиваем файервол:
sudo ufw allow ssh
3. Разрешаем доступ к серверу через ssh
sudo ufw enable
Использованне материалы:
1. Как создать ONION-сайт.
2. Configuring Hidden Services for Tor.
3. How To Create A Hidden Service Tor Site To Set Up An Anonymous Website Or Server.
4. How to Create a Tor .onion Site [Updated].
5. 500 Million hits/day with Nginx + PHP-FPM + MySQL.
6. Tuning Nginx for Best Performance.
7. Optimizing Nginx for High Traffic Loads.
8. Tuning NGINX for Performance.
9. sysctl.conf.
10. The GNU/Linux Kernel.
11. Part 1: Lessons learned tuning TCP and Nginx in EC2.
12. Increase "Open Files Limit".
13. Setting up a hidden service with Nginx.