- Регистрация
- 20.09.2023
- Сообщения
- 14
- Розыгрыши
- 0
- Реакции
- 3
kritin не предоставил(а) никакой дополнительной информации.
verb 0
Для кого предназначена эта статья?
Для всех, кто хочет настроить свой собственный openvpn. Я видел множество людей, продающих это как услугу, и множество людей, которые хотят купить это как услугу, так что написать статью об этом - не такая уж плохая идея. Я не убиваю чей-либо бизнес, очевидно, что люди, которые хотят купить это как услугу, либо ленивы, либо ничего не понимают в Linux.Предварительные требования:
- Базовые знания Linux
- Настраиваем OpenVPN
- Стоит ли автоматом ежедневно удалять логи?
Журнал - лог
Содержание
- Местоположение логов в Linux
- Настраиваем OpenVPN
Прежде чем приступить к настройке 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 с регулярными выражениями.На изображении ниже мы видим несколько IP-адресов. Один из них из Кореи, похоже, кто-то оттуда сканировал IP-адреса aws на username "Admin", которое предназначено для Windows, но почему-то захотел подключиться по ssh.
Эта команда извлекает уникальные IP-адреса из файлов auth.log/syslog:
Код:
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}'
Очевидно, что у меня нет возможности понять, где IP-адреса регистрируются в вашей системе. Итак, я создал "однострочник", который может помочь вам определить файлы, в которых регистрируются IP-адреса.
Код:
cat ./* | grep -E -R '([0-9]{1,3}\.){3}[0-9]{1,3}' | grep -oE '^[^:]+:' | awk -F ':' '{print $1}' | uniq
Я советую вам использовать "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
В любом случае, в этой части мы узнали об идентификации файлов логирования, которые могут содержать 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:
Настраиваем OpenVPN
Что такое OpenVPN?
OpenVPN - это программа с открытым исходным кодом, которое предоставляет возможность создания зашифрованных туннелейУстанавливаем OpenVPN
Существует очень, очень простой способ установки и настройки openvpn. Это скрипт на github, который мы будем использовать.
Код:
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. Теперь все, что нам нужно сделать, это подождать, и он запросит у нас имя клиента.
Мы добавили пользователя "xss", теперь у нас есть файл "xss.ovpn", который является нашим файлом для openvpn.
Мы также можем добавить нового пользователя, если захотим, сделав это ./openvpn-install.sh
Теперь давайте проверим наш IP-адрес и проведем небольшой тест на утечку DNS, чтобы увидеть, не просочилось/утекло ли что-нибудь.
Как вы можете видеть на фотографиях, все выглядит идеально.
Стоит ли автоматом ежедневно удалять логи?
Часть OpenVPN готова, мы проверили системные логи, теперь пришло время для логов OpenVPN.В моем случае я просто отредактировал /etc/openvpn/server.conf и заменил verb 3 на verb 0.
Код:
sudo nano /etc/openvpn/server.conf
#Заменяйте
verb 0
status /dev/null
Код:
log
log-append
Удаление логов: Почему не следует удалять /var/log
Удаление лог-файлов или даже всего каталога /var/log является плохой идеей. Логи играют важную роль в обеспечении безопасности и отслеживании активности системы. Важно понимать, что некоторые процессы и службы могут зависеть от существования лог-файлов, и их удаление может нарушить работоспособность системы.Для удаления устаревших лог-файлов мы можем использовать cron. Например, для удаления всех лог-файлов, содержащих ключевое слово "vpn", каждый час, мы можем создать соответствующую задачу cron:
Код:
0 */1 * * * find /var/log -exec grep -q 'vpn' {} \; -delete
НО если вы хотите удалить строки, содержащие слово "vpn", то используйте следующий код:
Код:
0 */1 * * *find /var/log -type f -exec sed -i '/vpn/d' {} \;
Я удалил /var/log, что делать?
Код:
sudo mkdir /var/log
sudo chmod 755 /var/log