Война в Украине

Все мы знаем, какой пиздец сейчас происходит с Украиной и одной известной вам страной-победительницей-фашизма. Если вы хотите почитать об этом, помочь актуализировать информацию или высказать свое мнение — можете сделать это в статье Война в Украине и в обсуждении.

Участник:Xlikam/Даркнеты — различия между версиями

Материал из Urbanculture
Перейти к: навигация, поиск
Анонимус
(Создаём защищённый eepsite: SSL в зад)
Анонимус
(-<br />; +страйки)
Строка 34: Строка 34:
 
''Я выбрал nginx, так как считаю его наиболее безопасным.''
 
''Я выбрал nginx, так как считаю его наиболее безопасным.''
 
Итак, понеслась:
 
Итак, понеслась:
# Скачиваем исходник последней стабильной версии [http://nginx.org/download], редактируем файл '''src/http/ngx_http_header_filter_module.c'''
+
* Скачиваем исходник последней стабильной версии [http://nginx.org/download], редактируем файл '''src/http/ngx_http_header_filter_module.c'''
Находим строчки<br />
+
Находим строчки:
<code>static char ngx_http_server_string[] = «Server: nginx» CRLF;<br />
+
  static char ngx_http_server_string[] = «Server: nginx» CRLF;
static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;</code><br />
+
  static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;
и меняем их, к примеру, на:<br />
+
и меняем их, к примеру, на:
<code>static char ngx_http_server_string[] = «Secured webserver» CRLF;<br />
+
  static char ngx_http_server_string[] = «Secured webserver» CRLF;
static char ngx_http_server_full_string[] = «Server: Secured webserver 0.3» CRLF;</code>
+
  static char ngx_http_server_full_string[] = «Server: Secured webserver 0.3» CRLF;
Это осложнит определение настоящей версии сервера, что значительно повысит его безопасность.
+
Это осложнит определение настоящей версии сервера, взломщики потратят время на проверку сервера на наличие уязвимостей, которых у него может не быть.
# Собираем сервер, отключив ненужные модули (список всех модулей можно получить, запустив configure c флагом --help):
+
 
## ./configure --without-http_autoindex_module --without-http_ssi_module
+
* Собираем сервер, отключив ненужные модули (список всех модулей можно получить, запустив configure c флагом --help):
## make
+
  # ./configure --without-http_autoindex_module --without-http_ssi_module
## make install
+
  # make
# Конфигурируем сервер
+
  # make install
# Открываем файл /etc/nginx/nginx.conf и добавляем в него строчку «server_tokens off» Это скроет информацию о версии и типе сервера на страницах, отображаемых при ошибочный запросах клиента, что дополнительно повысит его безопасность.
+
* Конфигурируем сервер
 +
* Открываем файл /etc/nginx/nginx.conf и добавляем в него строчку «server_tokens off» Это скроет информацию о версии и типе сервера на страницах, отображаемых при ошибочный запросах клиента, что дополнительно повысит его безопасность.
  
 
Теперь изменим таймаут для повышения производительности:
 
Теперь изменим таймаут для повышения производительности:
<code>client_body_timeout 10;<br />
+
  client_body_timeout 10;
client_header_timeout 10;<br />
+
  client_header_timeout 10;
keepalive_timeout 5 5;<br />
+
  keepalive_timeout 5 5;
send_timeout 10;<br /></code>
+
  send_timeout 10;
Защитимся от переполнения буфера:<br />
+
 
client_body_buffer_size 1K;<br />
+
Защитимся от <s>переполнения буфера</s> (ЩИТО?):
client_header_buffer_size 1k; — увеличить, если сервер будет поддерживать загрузку файлов<br />
+
  client_body_buffer_size 1K;
client_max_body_size 1k;<br />
+
  client_header_buffer_size 1k; # увеличить, если сервер будет поддерживать загрузку файлов
large_client_header_buffers 2 1k;<br />
+
  client_max_body_size 1k;
Увеличим количество соединений с одного ip-адреса, так как обращаться к серверу будем только с адреса 127.0.0.1<br />
+
  large_client_header_buffers 2 1k;
limit_conn slimits 40;<br />
+
 
На всякий случай оставим только 3 метода обращения к серверу<br />
+
Увеличим количество соединений с одного ip-адреса, так как обращаться к серверу будем только с адреса 127.0.0.1
if ($request_method !~ ^(GET|HEAD|POST)$) <br />
+
limit_conn slimits 40;
{<br />
+
На всякий случай оставим только 3 метода обращения к серверу
return 444;<br />
+
  if ($request_method !~ ^(GET|HEAD|POST)$) {
}<br />
+
    return 444;
 +
  }
 
Устанавливаем пароль на нужные нам папки:
 
Устанавливаем пароль на нужные нам папки:
<br /># mkdir /etc/nginx/.htpasswd<br />
+
  # mkdir /etc/nginx/.htpasswd
# htpasswd -c /etc/nginx/.htpasswd/passwd user1 — создаём файл паролей для пользователя user1
+
  # htpasswd -c /etc/nginx/.htpasswd/passwd user1 # создаём файл паролей для пользователя user1
 
Добавляем в nginx.conf
 
Добавляем в nginx.conf
<br />location /private/
+
  location /private/ {
<br />{
+
    auth_basic «Restricted»;
<br />auth_basic «Restricted»;
+
    auth_basic_user_file /etc/nginx/.htpasswd/passwd;
<br />auth_basic_user_file /etc/nginx/.htpasswd/passwd;
+
  }
<br />}
+
<br />
+
  
 
Перезагружаем сервер:
 
Перезагружаем сервер:
<br />/etc/init.d/nginx reload
+
  /etc/init.d/nginx reload
<br />Для ещё большей паранойи разместим каталог сервера на отдельном разделе диска или даже флешке, шифрованном truecrypt-ом
+
Для ещё большей паранойи разместим каталог сервера на отдельном разделе диска или даже флешке, шифрованном truecrypt-ом.
<br />Скачиваем установщик truecrypta отсюда — http://www.truecrypt.org/downloads
+
Скачиваем установщик truecrypta [http://www.truecrypt.org/downloads отсюда].
<br />Устанавливаем, запускаем, шифруем флешку (Create Volume — Create a volume within a partition/drive — Hidden truecrypt volume — ???(подробнее завтра допилю))
+
Устанавливаем, запускаем, шифруем флешку (Create Volume — Create a volume within a partition/drive — Hidden truecrypt volume — ???(подробнее завтра допилю)).
 
Монтируем её через Select drive — Mount, правим /etc/fstab, предварительно переместив файлы сервера
 
Монтируем её через Select drive — Mount, правим /etc/fstab, предварительно переместив файлы сервера
<br />/dev/mapper/truecrypt1 /nginx ext4 defaults, nosuid, noexec, nodev 1 2
+
* /dev/mapper/truecrypt1 /nginx ext4 defaults, nosuid, noexec, nodev 1 2
<br />5. Тут про запуск сервера из под KVM, допилю завтра.
+
* Тут про запуск сервера из под KVM, допилю завтра.
<br />6. Дополнительная защита из под selinux-a — http://sf.net/projects/selinuxnginx/
+
* [http://sf.net/projects/selinuxnginx/ Дополнительная защита из под selinux-a]
# tar -zxvf se-ngix_1_0_10.tar.gz
+
 
# cd se-ngix_1_0_10/nginx
+
  # tar -zxvf se-ngix_1_0_10.tar.gz
# make
+
  # cd se-ngix_1_0_10/nginx
# /usr/sbin/semodule -i nginx.pp
+
  # make
7. PHP<br />
+
  # /usr/sbin/semodule -i nginx.pp
Если вы всё-таки решили использовать на вашем сайте язык PHP, что довольно опасно, то стоит настроить его должным образом
+
* PHP
 +
Если вы всё-таки решили использовать на вашем сайте язык PHP, что довольно опасно, то стоит настроить его должным образом.
 
Редактируем файл /etc/php/php.ini
 
Редактируем файл /etc/php/php.ini
<br />disable_functions = phpinfo, system, mail, exec — отключение опасных функций
+
  disable_functions = phpinfo, system, mail, exec # отключение опасных функций
<br />max_execution_time = 10
+
  max_execution_time = 10
<br />max_input_time = 60
+
  max_input_time = 60
<br />memory_limit = 8M
+
  memory_limit = 8M
<br />post_max_size = 8M
+
  post_max_size = 8M
<br />upload_max_filesize = 2M
+
  upload_max_filesize = 2M
<br />display_errors = Off
+
  display_errors = Off
<br />safe_mode = On
+
  safe_mode = On
<br />sql.safe_mode = On
+
  sql.safe_mode = On
<br />safe_mode_exec_dir = /secured/ — путь к каталогу, из которого можно выполнять внешние команды
+
  safe_mode_exec_dir = /secured/ # путь к каталогу, из которого можно выполнять внешние команды
<br />expose_php = Off
+
  expose_php = Off
<br />log_errors = On — логи
+
  log_errors = On # логи
<br />allow_url_fopen = Off
+
  allow_url_fopen = Off
<br />8. Скрываем сервер от внешнего интернета
+
* Скрываем сервер от внешнего интернета
<br />iptables -A INPUT -m state --state NEW -p tcp -s 127.0.0.1 --dport 80 -j ACCEPT
+
  iptables -A INPUT -m state --state NEW -p tcp -s 127.0.0.1 --dport 80 -j ACCEPT
<br />iptables -A INPUT --dport 80 -j REJECT
+
  iptables -A INPUT --dport 80 -j REJECT
<br />Этим мы скроем наш сервер от всех подключений, кроме тех, что из I2P.
+
Этим мы скроем наш сервер от всех подключений, кроме тех, что из I2P.
<br />Теперь, когда наш сервер достаточно защищён, создаём [http://127.0.0.1:7657/i2ptunnel/ серверные туннели] к http и https.
+
Теперь, когда наш сервер достаточно защищён, создаём [http://127.0.0.1:7657/i2ptunnel/ серверные туннели] к http и https.
 
Там же отключаем неиспользуемые туннели, если таковые имеются.
 
Там же отключаем неиспользуемые туннели, если таковые имеются.
10. Регистрация в DNS.
+
* Регистрация в DNS.
 
Заходим на сайт [stats.i2p] и регистрируемся там.
 
Заходим на сайт [stats.i2p] и регистрируемся там.
  
 
== SSL ==
 
== SSL ==
 
Для пущей паранойи можно использовать SSL (в принципе, данные так надежно шифруются, что на пути между клиентом и скрытым сайтом их невозможно прочитать или подменить). Но SSL не повредит, от греха подальше.
 
Для пущей паранойи можно использовать SSL (в принципе, данные так надежно шифруются, что на пути между клиентом и скрытым сайтом их невозможно прочитать или подменить). Но SSL не повредит, от греха подальше.
<br />
+
 
 
Создаём сертификат:
 
Создаём сертификат:
# cd /etc/nginx
+
  # cd /etc/nginx
# openssl genrsa -des3 -out server.key 1024
+
  # openssl genrsa -des3 -out server.key 1024
# openssl req -new -key server.key -out server.csr
+
  # openssl req -new -key server.key -out server.csr
# cp server.key server.key.org
+
  # cp server.key server.key.org
# openssl rsa -in server.key.org -out server.key
+
  # openssl rsa -in server.key.org -out server.key
# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
+
  # openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Пишем в nginx.conf<br />
+
Пишем в nginx.conf:
server {<br />
+
  server {
server_name localhost;<br />
+
    server_name localhost;
listen 443;<br />
+
    listen 443;
ssl on;<br />
+
    ssl on;
ssl_certificate /etc/nginx/server.crt;<br />
+
    ssl_certificate /etc/nginx/server.crt;
ssl_certificate_key /etc/nginx/server.key;<br />
+
    ssl_certificate_key /etc/nginx/server.key;
access_log /etc/nginx/logs/ssl.access.log;<br />
+
    access_log /etc/nginx/logs/ssl.access.log;
error_log /etc/nginx/logs/ssl.error.log;<br />
+
    error_log /etc/nginx/logs/ssl.error.log;
}<br />
+
  }

Версия 01:18, 10 января 2013

Тут будет различная информация о сабжах

I2P + Tor

Сеть I2P очень удобна для обеспечения анонимности обмена данными между участниками сети, но только при условии, что все они находятся в ней самой, а не во внешнем интернете. Да, имеются шлюзы для доступа во внешний интернет из I2P, но они имеют множество ограничений и, как правило, работают очень медленно, делая работу во внешнем интернете крайне неудобной. Исправить ситуацию можно посредством связки I2P + Tor. Тогда при выходе за пределы I2P вашу анонимность будет обеспечивать Tor, что гораздо быстрее и удобнее outproxy.

Что для этого необходимо:

  1. Зайти в менеджер туннелей.
  2. В появившемся окне менеджера нажать кнопку создать новый серверный туннель.
  3. Точка доступа: 127.0.0.1. Порт: 8118 (Для HTTP-proxy) или 9050 (прямое обращение к Tor через SOCKS).
  4. Программа connect (пакет connect-proxy в Дебиане и Убунте)
  5. Сохраняем изменения.
  6.  ????
  7. PROFIT!

Скриншоты потом вставлю.

Утилиты командной строки через TOR

Зайти по ssh на обычный сервер:

 ssh -o ProxyCommand='connect -4 -S localhost:9050 %h %p' user@server.com

Зайти по ssh на скрытый сайт:

 ssh -o ProxyCommand='connect -R remote -5 -S localhost:9050 %h %p' user@serverfxnnckztbn.onion

Скачать через TOR:

 curl --socks5 localhost:9050  

Скачать через TOR (с подделкой user agent):

 curl --socks5 localhost:9050 -A "Opera/9.25 (Windows NT 6.0; U; en)"  

Зайти на сайт (осторожно, возможна течка DNS, так как там SOCKS4):

 links2 -socks-proxy localhost:9050 http://www.fbi.gov/

Создаём защищённый eepsite

В первую очередь нам понадобится веб-сервер. Я выбрал nginx, так как считаю его наиболее безопасным. Итак, понеслась:

  • Скачиваем исходник последней стабильной версии [1], редактируем файл src/http/ngx_http_header_filter_module.c

Находим строчки:

 static char ngx_http_server_string[] = «Server: nginx» CRLF;
 static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;

и меняем их, к примеру, на:

 static char ngx_http_server_string[] = «Secured webserver» CRLF;
 static char ngx_http_server_full_string[] = «Server: Secured webserver 0.3» CRLF;

Это осложнит определение настоящей версии сервера, взломщики потратят время на проверку сервера на наличие уязвимостей, которых у него может не быть.

  • Собираем сервер, отключив ненужные модули (список всех модулей можно получить, запустив configure c флагом --help):
 # ./configure --without-http_autoindex_module --without-http_ssi_module
 # make
 # make install
  • Конфигурируем сервер
  • Открываем файл /etc/nginx/nginx.conf и добавляем в него строчку «server_tokens off» Это скроет информацию о версии и типе сервера на страницах, отображаемых при ошибочный запросах клиента, что дополнительно повысит его безопасность.

Теперь изменим таймаут для повышения производительности:

 client_body_timeout 10;
 client_header_timeout 10;
 keepalive_timeout 5 5;
 send_timeout 10;

Защитимся от переполнения буфера (ЩИТО?):

 client_body_buffer_size 1K;
 client_header_buffer_size 1k; # увеличить, если сервер будет поддерживать загрузку файлов
 client_max_body_size 1k;
 large_client_header_buffers 2 1k;

Увеличим количество соединений с одного ip-адреса, так как обращаться к серверу будем только с адреса 127.0.0.1 limit_conn slimits 40; На всякий случай оставим только 3 метода обращения к серверу

 if ($request_method !~ ^(GET|HEAD|POST)$) {
   return 444;
 }

Устанавливаем пароль на нужные нам папки:

 # mkdir /etc/nginx/.htpasswd
 # htpasswd -c /etc/nginx/.htpasswd/passwd user1 # создаём файл паролей для пользователя user1

Добавляем в nginx.conf

 location /private/ {
   auth_basic «Restricted»;
   auth_basic_user_file /etc/nginx/.htpasswd/passwd;
 }

Перезагружаем сервер:

 /etc/init.d/nginx reload

Для ещё большей паранойи разместим каталог сервера на отдельном разделе диска или даже флешке, шифрованном truecrypt-ом. Скачиваем установщик truecrypta отсюда. Устанавливаем, запускаем, шифруем флешку (Create Volume — Create a volume within a partition/drive — Hidden truecrypt volume — ???(подробнее завтра допилю)). Монтируем её через Select drive — Mount, правим /etc/fstab, предварительно переместив файлы сервера

 # tar -zxvf se-ngix_1_0_10.tar.gz
 # cd se-ngix_1_0_10/nginx
 # make
 # /usr/sbin/semodule -i nginx.pp
  • PHP

Если вы всё-таки решили использовать на вашем сайте язык PHP, что довольно опасно, то стоит настроить его должным образом. Редактируем файл /etc/php/php.ini

 disable_functions = phpinfo, system, mail, exec # отключение опасных функций
 max_execution_time = 10
 max_input_time = 60
 memory_limit = 8M
 post_max_size = 8M
 upload_max_filesize = 2M
 display_errors = Off
 safe_mode = On
 sql.safe_mode = On
 safe_mode_exec_dir = /secured/ # путь к каталогу, из которого можно выполнять внешние команды
 expose_php = Off
 log_errors = On # логи
 allow_url_fopen = Off
  • Скрываем сервер от внешнего интернета
 iptables -A INPUT -m state --state NEW -p tcp -s 127.0.0.1 --dport 80 -j ACCEPT
 iptables -A INPUT --dport 80 -j REJECT

Этим мы скроем наш сервер от всех подключений, кроме тех, что из I2P. Теперь, когда наш сервер достаточно защищён, создаём серверные туннели к http и https. Там же отключаем неиспользуемые туннели, если таковые имеются.

  • Регистрация в DNS.

Заходим на сайт [stats.i2p] и регистрируемся там.

SSL

Для пущей паранойи можно использовать SSL (в принципе, данные так надежно шифруются, что на пути между клиентом и скрытым сайтом их невозможно прочитать или подменить). Но SSL не повредит, от греха подальше.

Создаём сертификат:

 # cd /etc/nginx
 # openssl genrsa -des3 -out server.key 1024
 # openssl req -new -key server.key -out server.csr
 # cp server.key server.key.org
 # openssl rsa -in server.key.org -out server.key
 # openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Пишем в nginx.conf:

 server {
   server_name localhost;
   listen 443;
   ssl on;
   ssl_certificate /etc/nginx/server.crt;
   ssl_certificate_key /etc/nginx/server.key;
   access_log /etc/nginx/logs/ssl.access.log;
   error_log /etc/nginx/logs/ssl.error.log;
 }