V-zlom.ru » Статьи » Базовые приемы скрытия айпи и шифрования трафика

Базовые приемы скрытия айпи и шифрования трафика

Вот, решил опубликовать некоторые свои заметки, исследования на данную тему. Конечно, в интернете информации по данной теме много, но эта статья является некой попыткой "причесать" конкретно то, что нас интересует. 

Наверняка все вы видели впн-сервисы. А как насчет поднять что-то свое? В данной статье мы будем использовать операционную систему FreeBSD. Описывать процесс настройки я буду с нуля, и постараюсь довольно подробно все расписать. Все действия проводились на тестовой впске. Например здесь http://nqhost.com/freebsd-vps.html за 7 долларов в месяц можно заказать впс, мощности которой нам должно хватить, а стоимость подписки на single vpn в среднем стоит где-то 30 баксов. Будем брать впс в Германии. Кстати, в ЮСА в случае если брать довольно солидные тарифы в суппорте обещают 100mbit dedicated, правда они говорят что с торрентами там строго. А вот в случае с Германией они огласили скорости около 40мбит в сек., что тоже в общем то неплохо. 

Настройка клиента будет описываться на примере FreeBSD и Windows XP. 

Установка ОС


Если заказывать впс на ресурсе, который я указал выше, там необходимо вначале поставить ось. Это делается сравнительно легко, и сейчас я опишу, как по быструшке делал я. Извиняюсь так сказать за тофталогию, да, описаний процесса установки данной оси просто море, просто я хочу описать настройку сервера от А до Я. 

Итак, после того как мы оплатим впс и нам придут данные, идем в панель https://vpsman.nqhost.com/ выбираем нашу впску. И лучше сразу жестко пропишите загрузку только с CDROM (вкладка Settings -> CDROM Only), потому что у меня с первой попытки проинсталить ОС не удалось, вместо процесса установки посыпались сообщения об ошибках, и пришлось ставить еще раз. Со второго раза все заинсталилось как надо. 

Далее коннектимся к серверу с помощью VNC. В вашем браузере, кстати, должен быть установлен ява. У нас запустится консоль. 

В первом окне можно выбрать United States, во втором выбираем Standard, далее жмем ок, переходим в меню разметки. Нажимаем "a", то есть будем использовать весь диск, далее нажимаем "q" (выход). Если у вас, кстати, данные клавиши не работают, проверьте раскладку клавиатуры, она должна быть en. В следующем окне выбираем Standard. Далее после нажатия принятия "ок" нам необходимо разобраться с разделами. Оперативки у нас имеется 128MB, ну не будем мелочиться сделаем swap 300MB (хотя в теории можно поставить гораздо меньше, хотите можете указать 128). Нажимаем "c" и в появившемся окошке вводим "300M". Если захотите нажать "Cancel", воспользуйтесь клавишей Tab. Далее выбираем "Swap". Ну а потом еще раз нажимаем "c", далее оставляем циферки в поле как есть, и затем выбираем "FS" и в поле вводим "/". Все готово, нажимаем "q". На всякий случай привожу скрин, какая должна получиться картина: 

 

В следующем меню выбираем "Custom" далее ставим галочки слева от base и kernels (в появившемся подменю выбираем GENERIC, там собственно больше выбирать нечего, далее Exit). Далее выбираем Exit, затем CD/DVD и смело ждем "ок". Ну а далее выбираем Exit, и потом снова Exit. Потом выбираем источник установки, в нашем случае это уже подмонтированный диск, так что выбираем CD/DVD. Ну и далее смело жмем "ок". Пошел процесс установки... 

После того как все успешно установится необходимо будет еще кое-что настроить. На предложение "Would you like to configure any Ethernet network devices?" ждем "ок" выбираем re0 далее отказываемся от IPv6 и соглашаемся на DHCP. В появившемся окне в поле Host вписываем имя хоста, который можно найти в панели (vdsтут_номер.nqhost.com). Domain пропишется сам (nqhost.com). Оставляем все остальное как есть и жмем "ок". На предложение "Do you want this machine to function as a network gateway?" ждем "no", так же отказываемся от "Do you want to configure inetd...". А вот на предложение "Would you like to enable SSH login" соглашаемся. Далее отказываемся от всех предложений, которые следуют до окна User Confirmation Requested: 

 

Жмем "ок", далее выбираем "User", и заполняем поля по следующему шаблону: 

 

Участие в wheel позволит нам повышать права до рута в будущем... 

Далее выбираем Exit. Ставим пароль рута, и на предложение настроить еще какие-либо опции отказываемся. Далее мы попадем в первоначальное окно sysinstall. Ждем Exit Install и соглашаемся на ребут. Окно VNC можно закрывать. 
Идем в панель и настраиваем загрузку с жесткого диска (Hard Disk Only). Нажимаем на кнопку "Reboot" в панеле. 

Мои поздравления, ОС установлена. Но не расслабляйтесь, чем быстрее мы нормально настроим ssh, тем лучше. Если вы будете заказывать впс у другого хостера, и вам необходимо будет самим инсталлировать ос, он должен будет сообщить вам как настроить сеть. 

Базовые приготовления


Итак, заходим на сервер по ssh. Если вы заходите не с никсов, то putty вам в руки. Можете еще использовать sftp клиент. Под windows неплохой WinSCP

Логин по руту по дефолту отключен, поэтому заходим пользователем, которого мы создали. Вводим su - и затем пароль рута. Итак, что мы имеем на данный момент: 

# pkg_info
pkg_info: no packages installed


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

UPD 

Способ, описанный ниже оставлен только для истории, а вы юзайте portsnap. http://www.freebsd.org/doc/ru/books/handbook/portsnap.html 
То есть выполняете сначала команду portsnap fetch и затем portsnap extract. 

Про CVSup можете почитать здесь http://www.freebsd.org/doc/ru/books/handbook/cvsup.html. Ставим порт net/cvsup-without-gui: 

# cd /usr/ports/net/cvsup-without-gui
# make install clean
# rehash


Впс за 7 баксов особой скоростью мягко говоря не отличается... 

Создаем base каталог: 

# mkdir /var/db/base


Теперь создаем supfile следующего содержания для обновления портов: 

*default host=cvsup.de.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=.
*default delete use-rel-suffix
ports-all


Если захотите включить gzip сжатие, добавьте строчку *default compress перед ports-all. Сохраняем файл как /root/ports_update 

# touch /root/ports_update


Можете каждую строку добавить в файл с помощью echo: 

# echo "*default host=cvsup.de.FreeBSD.org" > /root/ports_update
# echo "*default base=/var/db" >> /root/ports_update
# echo "*default prefix=/usr" >> /root/ports_update
# echo "*default release=cvs tag=." >> /root/ports_update
# echo "*default delete use-rel-suffix" >> /root/ports_update
# echo "" >> /root/ports_update
# echo "ports-all" >> /root/ports_update


Либо прописать данные с помощью удобного текстового редактора ee: 

# ee /root/ports_update


Теперь собственно обновляем порты: 

# cvsup -L 2 /root/ports_update


В первый раз это обычно занимает довольно много времени. 
Подробнее о портах и их обновлении можете почитать здесь http://www.freebsd.org/doc/ru/books/handbook/ports-using.html 

После того как обновление завершится, смотрим, какие порты устарели 

# pkg_version -v | grep need
gmake-3.81_4                        <   needs updating (port has 3.82)
libtool-2.2.10                      <   needs updating (port has 2.4_1)


Для того чтоб наше дерево портов обновлялось раз в сутки (в 3 часа ночи), добавляем в /etc/crontab строчку в конец 

0	3	*	*	*	root	/usr/local/bin/cvsup -L 0 /root/ports_update >/dev/null 2>&1


Ставим portupgrade для обновления портов 

# cd /usr/ports/ports-mgmt/portupgrade
# make install clean
# rehash


В появляющихся окнах указания опций сборки оставляем дефолтные опции. 
Установка на данной впске займет весьма много времени... 

Выполняем 

# pkgdb -F


И наконец обновляем 

# portupgrade libtool-2.2.10
# portupgrade gmake-3.81_4


А теперь пришло время нормально настроить ssh. Мы будем использовать порт security/openssh-portable вместо базового sshd. Подобный прием позволит легче производить обновление. 

# cd /usr/ports/security/openssh-portable
# make install clean


в окне опций убираем галочку PAM 

В /etc/rc.conf ставим sshd_enable="NO" и openssh_enable="YES" а так же поставьте syslogd_flags="-ss" чтоб закрыть 514 udp порт syslogd (для того чтобы посмотреть что слушается можете ввести например sockstat -4 -l). 

Теперь будем редактировать конфиг openssh /usr/local/etc/ssh/sshd_config 

Делаем следующие изменения: 

повесим ssh на нестандартный порт 
Port 7355 

ServerKeyBits 2048 

отключаем авторизацию по паролям (будем использовать только ключи) 
PasswordAuthentication no 

если хотите включить коннект по ssh непосредственно под рутом 
PermitRootLogin yes 

чтоб не было лишней задержки при логине 
UseDNS no 

Сохраняем конфиг. 

Теперь прежде чем запускать openssh portable создадим ключи. Удобнее создавать ключи под пользователем, для которого они создаются. 

Рекомендуется создавать ключи на вашем локальном компьютере, а не на самом сервере, а затем просто перенести публичный ключ на сервер. Но если вы не под никсами, создавайте на сервере... Создаем ключ 4096 бит 

ssh-keygen -t rsa -b 4096


passphrase рекомендуется ввести, она будет спрашиваться каждый раз при авторизации по ключу. 

cd ~/.ssh
cat id_rsa.pub > authorized_keys
rm id_rsa.pub


id_rsa это приватный ключ, перенесите его к себе, а на сервере удалите 

Кстати, если вы решите включить удаленную авторизацию под рутом, рекомендую в начале его authorized_keys прописать from="1.2.3.4" где 1.2.3.4 - айпи, с которого разрешена авторизация по ключу. 

Если вы будете авторизоваться с винды, то загоняете id_rsa в puttygen вводите в окошке passphrase и сохраняйте приватный ключ (Save private key) под расширением .ppk 

Итак, после того как вы создадите необходимые ключи все должно быть готово. Теперь выполняем команду: 

# /etc/rc.d/sshd forcestop && /usr/local/etc/rc.d/openssh start


Теперь затестируем. Попробуем приконнектиться к нашему порту без ключей, и получаем ошибку. 

Можно еще заменить базовый openssl 

# openssl version
OpenSSL 0.9.8q 2 Dec 2010
# which openssl
/usr/bin/openssl


Инсталим 

# cd /usr/ports/security/openssl && make install clean


Можете выбрать в опциях сборки Use optimized assembler for 80386 
Так же поставьте опцию Build with SCTP support 

После установки заменяем базовую версию пользовательской с помощью симлинка 

# cp /usr/local/openssl/openssl.cnf.sample /usr/local/openssl/openssl.cnf
# ln -sf /usr/local/bin/openssl /usr/bin/openssl
# cd /usr/bin && ls -la | grep openssl
# openssl version
OpenSSL 1.0.0e 6 Sep 2011


Для мониторинга канала нам может потребоваться iftop 

# cd /usr/ports/net-mgmt/iftop && make install clean
# rehash


Неплохо б еще поставить wget 

# cd /usr/ports/ftp/wget && make install clean
# rehash


Попробуем качнуть какой-то большой файл например с майкрософта и посмотрим, какая реальная входящая скорость есть в нашем распоряжении: 

cd ~
wget http://download.microsoft.com/download/1/6/5/165b076b-aaa9-443d-84f0-73cf11fdcdf8/WindowsXP-KB835935-SP2-ENU.exe


У меня скорость иногда достигала 7мбайт в сек. (грубо говоря в среднем скорость получилась под 40-50мбит в сек.). Правда я тестировал ночью. Но все равно, довольно неплохо :) 

Ну и напосредок смотрим сколько свободного места у нас осталось на диске 

df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ad0s1a    3.6G    1.5G    1.8G    46%    /
devfs          1.0K    1.0K      0B   100%    /dev


В общем то уложились мы неплохо. Кстати, если вы хотите немного подрихтовать командную оболочку, к вашим услугам данные заметки https://hpc.name/showthread.php?t=32003 

И еще момент насчет логов. Если вы хотите на впске отключить syslogd, добавьте syslogd_enable="NO" в rc.conf и остановите 

# /etc/rc.d/syslogd stop


Стоит ли отключать это дело или нет, решать вам, мое дело упомянуть данный момент. Если отключите, почистите каталог /var/log/* 

SSH-туннель


Итак, чем может быть полезен для нас SSH-туннель? Его можно использовать как socks 5, но здесь в дополнение ко всему прочему еще и шифруется трафик. Прописываете его в настройках программ и пользуетесь. А вот в случае с vpn весь трафик (включая днс-запросы) автоматически туннелируется через vpn сервер, то есть само программное обеспечение настривать не надо. В случае с SSH-туннелем не факт что dns-запросы будут отправляться через туннель. Если вас интересует отправка dns-запросов через SSH-туннель, советую для начала ознакомиться с даннымматериалом. 

Итак, рад вам сообщить что фактически в предыдущих шагах данной статьи у нас сервер настроен для ssh-туннеля, осталось только настроить клиентский компьютер. Путти настраивается следующим образом. 

На вкладке Session прописываете айпи и порт, на вкладке Data пишем юзера, под которым вы будете авторизоваться в поле Auto-login username. Далее переходите на вкладку Tunnels, в поле Source port вводите локальный порт, через который мы будем направлять туннель. Для примера возьмем 1234. Destination выбираем Dynami

  • Автор: makar
  • Комментарии: 0
  • Просмотры: 450
1

Добавить комментарий

Вы не авторизованы и вам запрещено писать комментарии. Для расширенных возможностей зарегистрируйтесь!