Задать вопрос
  • Windows xp + openvpn client не блокирует интернет, как исправить?

    @younghacker
    Вы не написали где установлен OpenVPN и как устроена сеть.
    Для windows
    route print
    или
    ip route
    линукс/мак
    Смотритe куда настроен default gate или 0.0.0.0/0 на той машине где установлен OpenVPN.
    Ответ написан
    Комментировать
  • Как правильно настроить OpenVPN?

    @younghacker
    Логи не пишутся потому что не настроены.
    Опции нет ни в клиентском ни в серверном конфигах.
    log                   /var/log/openvpn-udp1194.log
    verb 3

    Для винды другой каталог куда логи писать.

    На сервере сделайте 2 вещи:
    1) откройте UDP порт 1194
    -A INPUT -i eth0 -p udp -m state --state NEW -m udp --dport 1194 -j VPN


    2) проверьте что SELinux ничего не блокирует. Можно ВРЕМЕННО отключить
    setenforce 0
    Ответ написан
    Комментировать
  • Как можно определить момент, когда клиент подлкючается и отключается от OpenVPN сервера?

    @younghacker
    В конфиг сервера нужно добавить:
    script-security 2 # to run scripts
    client-disconnect "scripts/on-client-disconnect.sh"

    Заготовка скрипта.

    /etc/openvpn/script/on-client-disconnect.sh

    #!/bin/bash
    ## Parse variables
    
    if [ ! -z "${time_ascii}" ]; then
      sessionStart=${time_ascii}
    else
      sessionStart="UNSET"
    fi
    
    if [ ! -z "${trusted_ip}" ]; then
      clientHostAddress=${trusted_ip}
    else
      clientHostAddress="UNSET"
    fi
    
    if [ ! -z "${username}" ]; then
      clientUID=${username}
    else
      clientUID="UNSET"
    fi
    
    if [ ! -z "${time_duration}" ]; then
      sessionDuration=${time_duration}
    else
      sessionDuration="UNSET"
    fi
    
    if [ ! -z "${bytes_sent}" ]; then
      txVolume=${bytes_sent}
    else
      txVolume="UNSET"
    fi
    
    if [ ! -z "${bytes_received}" ]; then
      rxVolume=${bytes_received}
    else
      rxVolume="UNSET"
    fi
    
    if [ ! -z "${common_name}" ]; then
      client_cn=${common_name}
    else
      client_cn="UNSET"
    fi
    
    ## Send to syslog
    logger -t openvpn -- "Disconnect: CommonName: ${client_cn} Username: ${clientUID} HostIP: ${clientHostAddress} Duration: ${sessionDuration} seconds opened at ${sessionStart} Session Traffic: TX: ${txVolume} bytes RX: ${rxVolume} bytes"


    В логе будут такие вот записи, которые Вы можете затем парсить.

    Sep 17 17:02:35 gw1-vpn openvpn: Disconnect: CommonName: vpn-client14 Username: UNSET HostIP: 444.555.666.777 Duration: 755 seconds opened at Sat Sep 17 16:50:00 2016 Session Traffic: TX: 20676207 bytes RX: 3596392 bytes

    В скрипте Вы всегда можете запустить export и слить его в файл. Увидите там переменные которые установил OpenVPN.

    И не забудьте поставить для скрипта атрибут на запуск и добавить в selinux правило открывающее доступ openvpn демону к этому файлу.
    Ответ написан
  • Как настроить доступ к клиенту VPN извне?

    @younghacker
    Я бы поставил на статическом IP в интернете OpenVPN сервер. На Raspberry Pi OpenVPN клиент. Вернее настроил бы как клиента. Настроил бы iptables на нужные пробросы portforwarding или же включил бы маршрутизацию и анонсировал бы адрес Raspberry Pi на VPN сервер, а оттуда на клиентов которые будут к нему подключаться чтобы получить доступ к Raspberry Pi. Или http прямо на публичный интерфейс как у Вас нарисовано на схеме.
    Ответ написан
    Комментировать
  • Почему не получается перекачать папку с виртуального хостинга на VDS сервер?

    @younghacker
    ssh -vvv username@ip.ad.dr.es
    покажет детальную информацию о ходе соединения

    Возможно будет удобнее для копирования использовать scp
    Ответ написан
    Комментировать
  • Почему systemd запускает OpenVPN раньше готовности интерфейсов определенных в /etc/network/interfaces?

    @younghacker
    Проверьте файл (это федора на убунте может быть в другом месте) /lib/systemd/system/openvpn@.service

    [Unit]
    Description=OpenVPN Robust And Highly Flexible Tunneling Application On %I
    After=network.target

    [Service]
    PrivateTmp=true
    Type=forking
    PIDFile=/var/run/openvpn/%i.pid
    ExecStart=/usr/sbin/openvpn --daemon --writepid /var/run/openvpn/%i.pid --cd /etc/openvpn/ --config %i.conf

    [Install]
    WantedBy=multi-user.target
    Ответ написан
    7 комментариев
  • Как ограничить доступ в интернет в VirtualBox и разрешить только к определенному IP?

    @younghacker
    Выход наружу через виртуалку?
    Основная система с гипервизором — Windows? Может ещё и Windows 10? Если это так то это всё слишком завёрнуто. Сделайте наоборот. Гипервизор на Linux на нём же поднять VPN и DNS и только уже внутри виртуальной машины запустить лучше линукс, но можно и Windows. Firewall настроить на хост системе так чтобы по умолчанию блокировал весь входящий и исходящий трафик. Затем потихоньку разрешать. В этом случае трафик отфильтруется очень просто.
    Есть специально заточенные дистрибутивы Linux для таких целей. Например WHONIX.
    Там две виртуалки, одна клиентская другая служит гейтом. Но всё это можно сделать самостоятельно на любом полноценном дистрибутиве Linux.

    Ещё одна возможность, взять роутер который можно прошить OpenWRT на нём поднять VPN компьютер подключить к нему. Такой вариант наиболее надёжный. Роутер разумеется тоже нужно настроить чтобы при падении VPN не выбросил пакет в открытом виде.

    На линукс, для того чтобы трафик не уходил в обход VPN нужно прописать правила для интерфейсов. Блокируем весь исходящий трафик кроме адреса на VPN сервер и даже порт прописать в правило. А остальной трафик в том числе DNS разрешить через TUNx интерфейс. Всё это очень просто. А вот как это сделать на Windows тем более средствами OpenSource файрволов — не знаю, сам ищу ответ.

    Но вопрос слишком общий. Будут конкретные вопросы будут и конкретные ответы.
    Ответ написан
    Комментировать
  • Получение прав на использование авторского изображения?

    @younghacker
    А каким образом получить гарантированное доказательство того что тот кто выдаёт себя за Автора именно он и есть? Или что тот кто подпишет бумагу является автором. На мой взгляд это довольно скользкий вопрос.
    Ответ написан
  • Распределенный cron с ожиданием выполнения?

    @younghacker
    Если Вам бэкапить то поставьте специальный инструмент для бэкапа например bacula/bareos. Сходу кажется многоголовой гидрой, но после освоения очень даже приятный и вполне автономный инструмент.

    А если Вам нужно сделать систему верёвочек чтобы через месяц не помнить почему что-то не работает или ещё лучше подарить это "ацкое" наследие следующему админу то нужно написать самому. Вариантов масса.
    Ответ написан
    2 комментария
  • Как отредактировать файл /etc/sysconfig/iptables из php скрипта?

    @younghacker
    Да вы отважный шутник батенька!
    И конечно php скрипт будет запускаться удалённо...
    Запустите php с правами рута и будет вам счастье!
    Кроме изменения файла нужно бы и iptables перезапустить.
    Так может лучше правила заливать в IPTABLES без изменения файла?

    На порядок безопаснее будет записать обычный файл от обычного непривилигированного пользователя, где-то в его домашней папке, а на него натравить inotify в режиме монитора который увидит что он изменился, запустит скрипт с привилегиями рута, тот распарсит его сформирует команду для управления iptables и выполнит её. Формат файла текстовый, никаких прямых команд. Работа строго по словарю. Строка не прошла словарь — удаляется, в лог пишется уведомление.

    Вы бы описали задачу. Может она уже давно решена.
    Ответ написан
    Комментировать
  • Возможно ли создать TripleVPN имея учетные записи разных компаний предоставляющих OpenVPN?

    @younghacker
    Если у вас нет рутового доступа к серверам, то это будет вложенный VPN.

    Вам нужен роут через внешний интерфейс от вас до первого VPN1.
    Затем внутр полученного TUN1 нужно положить роут до второго VPN2 поднимем и получим TUN2. В него нужно отправить роут до третьего VPN3. Поднять VPN3 и в полученный TUN3 отправить Default route.

    Не забыть про DNS leak
    Законопатить на клиенте Firewall так чтобы пакет ни один пакет не прошмыгнул через ваш WAN интерфейс. Через WAN вам позволяется только один путь IP VPN1:PORT. Всё остальное DROP.

    Но логичнее взять три виртуалки и поднять свой нормальный трипл VPN с DNS.
    Ответ написан
    Комментировать
  • Ovpn client на микротике. DNS request timed out до КД?

    @younghacker
    Похоже что клиент из офиса2 получает DNS push из офиса 1.
    DNS-серверы. . . . . . . . . . . : 192.168.0.28
                                       8.8.4.4
                                       192.168.3.1

    Таймаут может быть потому что:
    1) DNS не слушает нужный интерфейс не хочет отвечать в чужую подсеть
    2) Нет маршрута
    3) Firewall дропает пакеты приходящие из TUN интерфейса
    4) OpenVPN ничего не знает о том что чужая подсеть находится за TUN интерфейсом.

    Извините, но на из ваших описаний и копипастов нельзя понять где выполнялся пинг и трейсроут. Одно дело если с гейта. Другое если с машины в чужой подсети. Две большие разницы с точки зрения маршрутизации.

    P.S.
    Я очень поверхностно знаком с микротиковским OpenVPN. Из-за того что его там "кастрировали" — не вижу смысла. Только прошить OpenWRT на неплохое микротиковское железо и получить полный функционал OpenVPN. :)
    P.P.S.
    Средства шифрования по определению не могут быть закрыты от анализа. Поэтому только OpenSource!
    Ответ написан
  • Как проверить трафик на обход VPN'a?

    @younghacker
    Отключите IPv6. Для вашей анонимности он опасен.

    Вот эта опция железобетонная!
    iptables -A OUTPUT -o eth0 -j DROP
    Вы уверены что у вас VPN работает? А если работает то через какой интерфейс? eth1, wlan? Куда смотрит default gate в ip route ?

    Перед дропом нужно было поставить акцепт для пакетов в адрес сервера. Ну и дропать нужно на всех интерфейсах кроме TUN... Зачем же вам TAP интерфейс ???
    Ответ написан
    Комментировать
  • Как быстро поднять vpn?

    @younghacker
    Можно!
    Хотите я вам скину сертификаты и конфиги? :)
    дальше будет пару команд:
    1) поставить openvpn
    2) скопировать конфиги и сертификаты клиента и сервера
    3) запустить сервис на сервере и на клиенте.
    И всё.

    Но сертификаты генерируются на раз-два. Главное разобраться что и как.
    Ответ написан
    Комментировать
  • Как построить цепочку vpn?

    @younghacker
    Кроме того чтобы настроить это два или три раза, нужно пробросить Default Gate таким макаром чтобы пакет прошёл как нужно. И я так подозреваю что топикстартеру нужно добиться и того чтобы пакет случайно не вывалился в паблик, когда инженер связи рвёт VPN коннект. :)

    T_y_l_e_r как с вами связаться? Что-то тостеровцы два года назад обещали личные сообщения, а воз и ныне там.
    Ответ написан
    Комментировать
  • Как соединить 2 сети в одну?

    @younghacker
    Опции OpenVPN сервера:
    route - сказать ядру что такие-то пакеты нужно отправлять в openvpn процесс
    iroute - сказать что такая-то подсеть находится у такого-то клиента. Вяжется с CN common name сертификата клиента, поэтому шаред сертификаты не пойдут. Роутерам идут только индивидуальные сертификаты.
    push route - сказать клиенту что пакеты отправлять через TUN интерфейс на OpenVPN сервер.

    И не забудьте включить маршрутизацию в ядре. :) (в винде тоже она выключена по умолчанию)
    Firewall — настройте.
    Если у вас Linux c Selinux то ахтунг! Но не выключить, а настроить!

    Никаких маршрутов прописывать руками в системе нет нужды. Всё работает прямо из OpenVPN если его правильно сконфигурировать.

    Ваши друзья:
    Linux | Windows
    tcpdump | windump (WinPcap) WireShark
    ip route | route print
    ip a | ipconfig /all
    ping | ping

    Включите логи в OpenVPN на клиенте и на сервере.
    Добавье опцию verb 5
    почитайте логи после установки соединения. Там видны команды добавления маршрутов.

    Если речь идёт о подключении только одного IP то можно не настраивать полную маршрутизацию, а сделать NAT (Forwarding) в сторону вашего сервера 192.168.1.202
    В этом случае соединяться нужно будет на адрес вашего TUN интерфейса, а попадёте на сервер. Сервер не узнает ваш IP так как ему будет подсунут IP компа в его подсети и он отправит пакеты ему, а тот отмаскарадит их обратно в вашу сторону. Но это не исключает того что и в этом случае если вы соединяетесь не прямо с гейта,а из другого компа офисной сети то этот комп должен знать куда слать такой запрос иначе он отправит его в адрес Default Gate. Но это отпадает если OpenVPN стоит на роутере Default Gate.

    P.S.
    Вы себе не представляете как схема с адресами да с пояснениями облегчает ответ на поставленную задачу. :) В ней уже половина ответа!
    Ответ написан
    Комментировать
  • Как защитить БД Access в Delphi?

    @younghacker
    В вопросе явно мало вводных данных.

    Аксес для этой задачи однозначно не подходит Хотя если построите трёхзвенное приложение и будете шифровать все критические поля то можно помучаться.

    Я бы сделал так:
    Разместил бы базу на другом сервере. FireBird.
    В ней завёл бы обычного юзера. Пользователю разрешл бы читать только определённые объекты tables, views и выполнять определённые процедуры. Другими словами сделал бы так чтобы пользователь не мог читать писать то что ему нельзя. Там же на сервере запустил бы другое приложение задача которого подсоединиться к базе как sysdba и прочесть табличку с логинами паролями пользователей и сидеть ждать соединения пользователя. Вторая задача серверного приложения принимать соединения по ssl и дешифровать их. Тут же должна быть защита от подбора пароля.
    На клиенте бы использовал ssl.
    Но у этого решения есть большая проблема чтобы обезопаситься от dll injection нужно избавиться от внешних ssleay.dll и fbclient.dll нужно взять их исходники и внедрить в приложение без использования техники dll. А это явно не Delphi.

    Но главный вопрос что Вы хотите сделать?
    Если пользователь может запустить приложение и пользоваться им то что ему мешает сделать простой скрипт который распарсит данные из базы? Любое Windows GUI приложение которое использует Windows API может быть обмануто внешней программой.

    Если задача ограничить пользователя только его песочницей -- то тут нужно работать над устройством базы данных её структурой и бизнеслогикой. Firebird позволяет используя только возможности сервера сделать различные ограничения в том числе отображать записи из таблицы избирательно через view (блокируя при этом доступ к таблице).

    Но если база физически доступна пользователю то шифруйте её. Возможно есть какие-то готовые решения.
    Ответ написан
    Комментировать
  • Есть ли ограничение на время выполнения программы по крону?

    @younghacker
    Если сервер принадежит Вам то ограничения нет. Важно чтобы ваша программа не попала в зацикливание когда первая ещё не закончилась, а вторая уже началась.

    Для shared хостинга хостеры вынуждены ограничивать время работы крон-задания потому что они жрут память и зачастую процессор и сетевые сокеты. Но я сомневаюсь, что там кто-то позволит запустить JAVA тем более в кроне! :)
    Ответ написан
    Комментировать
  • Почему не могу подключится к удаленному серверу?

    @younghacker
    Как подключается программа клиент? По имени или по IP ?
    Что говорит ping сервера по адресу из обоеих сетей?
    Если не пингуется то что говорит route
    Ну и что думает firewаll на сервере с базой по повду входящих соединений по нужному протоколу на нужный порт из обеих сетей.
    tcpdump вам в помощь!
    Да! А что думает ip route | sort на стороне linux сервера?
    Ответ написан
    Комментировать
  • Почему не открывается сайт?

    @younghacker
    Проверить домен в разных NS.
    nslookup мойсайт.ру 8.8.8.8
    если ответит значит всё в порядке.
    пинганите адрес указанный в качестве A записи.
    ping x.x.x.x
    если ответит — пропишите у себя в hosts строку вида
    x.x.x.x мойсайт.ру
    и зайдите на сайт мойсайт.ру в браузере.
    на сайте должна быть какая-то страничка чтобы она открылась. При определённых условиях браузер может показать полностью пустую страницу или ошибку. Это может указывать на отсутствие в корне сайта необходимой страницы. Создайте index.html и откройте её в браузере http://мойсайт.ру/index.html
    Должна отобразиться именно страница либо будет ошибка.

    Если 8.8.8.8 не вернёт адрес проверьте его в тех NS которые указаны в домене. Команда такая же только 8.8.8.8 замените на адрес DNS привязанного к домену.
    Если не вернёт корректный адрес, смотрите привязку домена к DNS.

    Файл hosts отрабатывает до ресолва имён в DNS подсистеме. Тоесть имеет более высокий приоритет позволяет иметь доступ к сайту без реального существования имени в DNS подсистеме (разумеется web сервер должен отвечать на это имя)
    Ответ написан
    Комментировать