grozdniyandy
Midle Weight
- Депозит
- $0
verb 0
Для кого предназначена эта статья?
Для всех, кто хочет настроить свой собственный openvpn. Я видел множество людей, продающих это как услугу, и множество людей, которые хотят купить это как услугу, так что написать статью об этом - не такая уж плохая идея. Я не убиваю чей-либо бизнес (возможно сам начну продажу), очевидно, что люди, которые хотят купить это как услугу, либо ленивы, либо ничего не понимают в Linux.Предварительные требования:
- Базовые знания Linux
Журнал - лог
Содержание
- Местоположение логов в Linux
- Настраиваем OpenVPN
- Стоит ли автоматом ежедневно удалять логи?
- Мы -> OpenVPN -> Tor
Прежде чем приступить к настройке openvpn и т.д. Сначала мы должны понять, что регистрируется в нашем Linux и где. Одной из клёвых частей Linux является система регистрации событий, которая позволяет нам отслеживать работу системы - логирование.
Я не знаю, как вы, ребята, это настраиваете, если есть что-то, что я пропустил, не стесняйтесь добавлять в комментариях.
Местоположение логов в Linux
В большинстве дистрибутивов Linux, лог файлы хранятся в каталоге /var/log. В этом каталоге каждый сервис может создавать собственный лог файл. Я воспользуюсь атак боксом TryHackMe и посмотрю, какие логи там хранятся, в которых может содержаться информация о подключении.auth.log
Давайте начнем с auth.log. Этот файл содержит информацию о попытках аутентификации, включая попытки входа в систему по SSH и другим методам. Мы можем найти IP-адреса, из которых выполнялись попытки подключения, а также информацию о том, удалось ли успешно аутентифицироваться или нет. Администраторы могут анализировать этот лог для выявления неудачных попыток аутентификации и источников, откуда эти попытки были предприняты. Также стоит упомянуть, в системах Debian и Ubuntu используется auth.log, в то время как в CentOS и Red Hat этот файл может иметь название "secure".syslog
Системный журнал, известный как syslog является стандартным логом событий в большинстве дистрибутивов Linux. Он включает в себя информацию о системных событиях, включая сетевую активность. Журнал syslog подразделяется на уровни важности, что упрощает фильтрацию и анализ, и позволяет обнаруживать проблемы, связанные с безопасностью и производительностью. Обычно статьи советуют вам искать "ssh" и т.д. Я предпочитаю искать по IP-адресам. Для этого можно использовать команду grep с регулярными выражениями.Изображение [1]: syslog
На изображении ниже мы видим несколько IP-адресов. Один из них из Кореи, похоже, кто-то оттуда сканировал IP-адреса aws на username "Admin", которое предназначено для Windows, но почему-то захотел подключиться по ssh.
Эта команда извлекает уникальные IP-адреса из файлов auth.log/syslog:
Код: Скопировать в буфер обмена
Code:
cat auth.log | grep -E -R '([0-9]{1,3}\.){3}[0-9]{1,3}'
cat syslog* | grep -E -R '([0-9]{1,3}\.){3}[0-9]{1,3}'
Изображение [2]: auth.log
Изображение [3]: Корейский IP
Изображение [4]: IP адреса в syslog
Очевидно, что у меня нет возможности понять, где IP-адреса регистрируются в вашей системе. Итак, я создал "однострочник", который может помочь вам определить файлы, в которых регистрируются IP-адреса.
Код: Скопировать в буфер обмена
cat ./* | grep -E -R '([0-9]{1,3}\.){3}[0-9]{1,3}' | grep -oE '^[^:]+:' | awk -F ':' '{print $1}' | uniq
Изображение [5]: Файлы с IP адресами
Я советую вам использовать "strings" вместо cat.
Код: Скопировать в буфер обмена
strings ./* | grep -E -R '([0-9]{1,3}\.){3}[0-9]{1,3}' | grep -oE '^[^:]+:' | awk -F ':' '{print $1}' | uniq
Если вы хотите просмотреть все IP-адреса, залогированные в вашей системе, используйте это:
Код: Скопировать в буфер обмена
strings ./* | grep -E -o '([0-9]{1,3}\.){3}[0-9]{1,3}' | uniq
Я попытался отфильтровать локальные IP-адреса и проверить, сколько существует внешних IP-журналов. Ответ таков : 1255 - что, честно говоря, странно, почему сервер, который работает менее одного часа, уже имеет 1255 уникальных IP-подключений.
Код: Скопировать в буфер обмена
strings ./* 2>/dev/null | grep -E -o '([0-9]{1,3}\.){3}[0-9]{1,3}' | uniq | grep -v '10\|192\|127\|172\|0.0' | wc -l
Изображение [6]: Кол-во IP адресов
В любом случае, в этой части мы узнали об идентификации файлов логирования, которые могут содержать IP-адреса, сборе IP-адресов и проверке количества уникальных IP-адресов, которые пытались установить соединение.
Я не смог удержаться и написал еще одну строчку, которая покажет нам организацию и страну IP-адресов.
Код: Скопировать в буфер обмена
strings ./* 2>/dev/null | grep -E -o '([0-9]{1,3}\.){3}[0-9]{1,3}' | grep -v '10\|192\|127\|172\|0.0\|255' | uniq -u | xargs -I % curl https://ipinfo.io/% 2>/dev/null | jq -r '.ip, .country, .org'
Чего я не учел, так это того, что, возможно, в спистке логов также существуют IP-адреса, к которым мы пытались подключиться. Я понял это, когда проверил однострочки на своем собственном сервере. Либо это, либо системы, которым я отправлял запросы, пытались атаковать в ответ :lol:
Мое лицо после контратаки CTF:
Изображение [7]: Анимеееее
Настраиваем OpenVPN
Что такое OpenVPN?
OpenVPN - это программа с открытым исходным кодом, которое предоставляет возможность создания зашифрованных туннелейУстанавливаем OpenVPN
Существует очень, очень простой способ установки и настройки openvpn. Это скрипт на github, который мы будем использовать.Код: Скопировать в буфер обмена
Code:
wget https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh
./openvpn-install.sh
Мы должны ввести наш паблик IP-адрес, затем мы должны выбрать наш порт, это зависит от вас, я буду использовать 31337, я использовал TCP в качестве протокола, для OpenVPN по умолчанию используется UDP, как DNS resolver, я использовал Cloudflare. Теперь все, что нам нужно сделать, это подождать, и он запросит у нас имя клиента.
Изображение [8]: Настройка OpenVPN
Мы добавили пользователя "xss", теперь у нас есть файл "xss.ovpn", который является нашим файлом для openvpn.
Изображение [9]: Добавление пользователя
Мы также можем добавить нового пользователя, если захотим, сделав это ./openvpn-install.sh
Изображение [10]: Добавление пользователя
Теперь давайте проверим наш IP-адрес и проведем небольшой тест на утечку DNS, чтобы увидеть, не просочилось/утекло ли что-нибудь.
Изображение [11]: Whoer
Изображение [12]: DNSLeakTest
Изображение [13]: Whoer - DNS Leak
Как вы можете видеть на фотографиях, все выглядит идеально.
Стоит ли автоматом ежедневно удалять логи?
Часть OpenVPN готова, мы проверили системные логи, теперь пришло время для логов OpenVPN.В моем случае я просто отредактировал /etc/openvpn/server.conf и заменил verb 3 на verb 0.
Код: Скопировать в буфер обмена
Code:
sudo nano /etc/openvpn/server.conf
#Заменяйте
verb 0
status /dev/null
Код: Скопировать в буфер обмена
Code:
log
log-append
Удаление логов: Почему не следует удалять /var/log
Удаление лог-файлов или даже всего каталога /var/log является плохой идеей. Логи играют важную роль в обеспечении безопасности и отслеживании активности системы. Важно понимать, что некоторые процессы и службы могут зависеть от существования лог-файлов, и их удаление может нарушить работоспособность системы.Для удаления устаревших лог-файлов мы можем использовать cron. Например, для удаления всех лог-файлов, содержащих ключевое слово "vpn", каждый час, мы можем создать соответствующую задачу cron:
Код: Скопировать в буфер обмена
0 */1 * * * find /var/log -exec grep -q 'vpn' {} \; -delete
Добавьте приведенный выше код внутрь /etc/crontab
НО если вы хотите удалить строки, содержащие слово "vpn", то используйте следующий код:
Код: Скопировать в буфер обмена
0 */1 * * *find /var/log -type f -exec sed -i '/vpn/d' {} \;
Я удалил /var/log, что делать?
Код: Скопировать в буфер обмена
Code:
sudo mkdir /var/log
sudo chmod 755 /var/log
Мы -> OpenVPN -> Tor
Первым шагом является установка Tor. Для этого выполняем следующую команду:Код: Скопировать в буфер обмена
sudo apt install tor
Далее мы настроим Tor, добавляя определенные параметры в файл "/etc/tor/torrc". Эти параметры определяют, как Tor будет работать. Файл "/etc/tor/torrc" - это конфигурационный файл Tor, где определены различные настройки.
Код: Скопировать в буфер обмена
sudo echo -e "VirtualAddrNetwork 10.192.0.0/10 \nAutomapHostsOnResolve 1 \nDNSPort 10.8.0.1:53530 \nTransPort 10.8.0.1:9040" >> /etc/tor/torrc
VirtualAddrNetwork - определяет, какие виртуальные адреса могут быть использованы в сети Tor.
AutomapHostsOnResolve - автоматическое сопоставление хостов при разрешении DNS-запросов.
DNSPort - указывает, на каком порту Tor будет слушать DNS-запросы.
TransPort - определяет порт, на котором Tor будет слушать входящие транспортные соединения.
После настройки Tor необходимо перезапустить службу, чтобы изменения вступили в силу:
Код: Скопировать в буфер обмена
sudo systemctl restart tor
Что такое iptables?
IPTables - это инструмент для настройки правил брандмауэра (firewall) в системах Linux. Он позволяет управлять тем, какие сетевые пакеты могут входить и выходить из нашей системы.Что такое tun0?
tun0 - это виртуальный сетевой интерфейс, который может быть использован для маршрутизации трафика через туннель. В нашем случае это связано с OpenVPNЧто такое DNAT?
DNAT (Destination Network Address Translation) - это механизм в iptables, который позволяет изменять адрес назначения пакетов при их прохождении через брандмауэр. Мы используем DNAT для перенаправления трафика через Tor.Эти правила позволят маршрутизировать трафик от OpenVPN через Tor.
Сначала мы разрешим входящие пакеты на интерфейсе "tun0" с исходным адресом 10.8.0.0/24:
Код: Скопировать в буфер обмена
sudo iptables -A INPUT -i tun0 -s 10.8.0.0/24 -m state --state NEW -j ACCEPT
Затем мы произведем перенаправление (DNAT) UDP-трафика с портом 53 с исходным (source) адресом 10.8.0.0/24 на адрес и порт (destination) 10.8.0.1:53530:
Код: Скопировать в буфер обмена
sudo iptables -t nat -A PREROUTING -i tun0 -p udp --dport 53 -s 10.8.0.0/24 -j DNAT --to-destination 10.8.0.1:53530
Также перенаправляйем TCP и UDP трафик:
Код: Скопировать в буфер обмена
Code:
sudo iptables -t nat -A PREROUTING -i tun0 -p tcp -s 10.8.0.0/24 -j DNAT --to-destination 10.8.0.1:9040
sudo iptables -t nat -A PREROUTING -i tun0 -p udp -s 10.8.0.0/24 -j DNAT --to-destination 10.8.0.1:9040
В конечном итоге, этот процесс обеспечивает более высокий уровень приватности и безопасности при использовании OpenVPN. Надеюсь, что данная статья окажется полезной для всех, кто стремится защитить свои данные и соблюдать конфиденциальность в онлайн-мире.
Также отдельно спасибо f5ociety (не реклама) - часть с тор написал благодаря им -
https://github.com/f5ociety/OpenVPN-over-Tor