Как стать автором
Обновить

Комментарии 36

При наличии WireGuard есть ли ещё веские причины создавать новые сети на основе OpenVPN?
Спасибо за подсказку, но об этом слышу впервые. Почитаю, разберусь
Нет поддержки авторизации через сторонний сервис (radius, active directory и пр.)

Конечно ipsec ike v2
Mikrotik его умеет с аппаратным ускорением

WireGuard не поддерживает tcp и соединение через HTTP CONNECT прокси.
Wireguard это туннель в чистом виде. А дальше в него заворачивайте что угодно, хоть tcp хоть прокси.
Речь о том, что сам туннель не может быть tcp. А это создает сложности в ограниченных сетях. Допустим, вы подключились к публичной сети, а там разрешены наружу только http и https, что делать будете?
В такой сети все равно нужен DNS который пока UDP. Как вариант маскироваться под него. Хотя честно говоря на практике пока таких сетей не встречал.
Честно говоря, я тоже не встречал, но часто натыкался на упоминания одно время. Тут в соседней ветке комментариев так же указали, что провайдер трафику на 443 порту дает больший приоритет. В общем, это не та фича, без которой жить нельзя, но она бы не помешала. UDP можно тоже зарезать, локальный DNS-сервер будет форвардить все запросы, а его адрес раздаваться по DHCP, к другим адресам запросы на 53 порт не разрешать. Ну и понятно, что пакеты от WireGuard уже не пройдут.
github.com/Nyr/openvpn-install
Вот если что репозиторий со скриптом, реализующим базовые потребности в настройке openVPN-сервера и генерации клиентских ключей и конфигов
Второй сниппет с кодом очень сильно напоминает часть кода из репозитория.
Он скорее всего оттуда и есть. Я делал это давно, не помню откуда взял. Там написано что второй скрипт не мой
StopDisablingSelinux
Серьёзно. Хватит. Не нужно отключать системы безопасности только по той причине, что вам лень их настраивать.

Другой вопрос — что мешало взять вам какой-нибудь pfsense/opnsense и настраивать vpn с пользователями, сертификатами и прочим в красивых окошках веб-интерфейса?

Вопрос номер три — вы уверены, что с «proto udp» у вас всё заработает? Насколько помню, mikrotik не умеет openvpn через udp, только через tcp.

«sudo chown -R Admin:Admin /var/log»
А вот это вообще ад. Привет поломанным логам всего подряд. Пожалуйста, не надо создавать статьи из вредных советов, вы — не Григорий Остер.
Я действительно на тот момент не знал как это работает. Постарался быть объективным. В инструкциях которые мне попадались, Selinux отключали. Я не искал и не копал. Это важно, не спорю
Зачем вы его вообще отключали? Не вижу в списке пакетов, которым он мог бы помешать
Selinux мог помешать запуску Openvpn на порту. На тот момент не было понимания как его разрешить. И подробного описания в инструкциях по которым я это собирал, было только отключение, либо permissive
Почему бы тогда не использовать стандартный порт? Провайдер режет?
у меня не то чтоб режет, но приоритет трафика дает низкий.

ещё на центосах включен жесткий firewalld по умолчанию

cat <<EOF > /etc/firewalld/services/openvpnextra.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <port protocol="udp" port="8080"/>
  <port protocol="tcp" port="8080"/>
</service>
EOF

firewall-cmd --permanent --zone=public --add-service=openvpnextra


По selinux

semanage port -a -t openvpn_port_t -p tcp 8080
semanage port -a -t openvpn_port_t -p udp 8080


И смотреть аудит дальше какого параметра ещё не хватило…
Небольшая поправочка, пакет openvpn добавляет правило с таким именем при установке, так что надо делать modify:
semanage port -m -t openvpn_port_t -p tcp 8080
semanage port -m -t openvpn_port_t -p udp 8080

Про firewalld хорошее замечание (я про него постоянно забываю). В принципе указанного вами должно хватить, у меня так и настроено. Идущие в комплекте права на selinux дают все необходимое из коробки.
нет, именно `-a` потому как на дефолтном порту openvpn тоже запущен (4 сервера с разными параметрами).

но если не запущен на 1194, то на второй строчке нужно всетаки -a чтоб не перетереть tcp версию.
Мы оба неправы. Я помнил, что нужен ключ -m, но неправильно помнил почему.
-a не сработает, если порт уже используется другим правилом

[root@server]# semanage port -l | grep ssh
ssh_port_t                     tcp      22
[root@server]# semanage port -a -t ssh_port_t -p tcp 443
ValueError: Port tcp/443 already defined
[root@server]# semanage port -m -t ssh_port_t -p tcp 443
[root@server]# semanage port -l | grep ssh
ssh_port_t                     tcp      443, 22
selinux — это полдня втыкания в аудит, если запускать что-то не типовое. Если человеку он не нужен — то и не стоит с ним заниматься.
Есть тупой способ:

Включаем аудит
semodule -DB
Ищем что нужно добавить
ausearch -ts today | audit2allow
Добавляем разрешений в модуль
ausearch -ts today | audit2allow -M module_name
Собираем и применяем модуль
semodule -i module_name.pp
Проверяем установку
semodule -l | grep module_name
Повторить сначала, если не помогло
Выключаем аудит
semodule -B

И так до победного, потом делаем результирующий модуль, в котором есть все нужные разрешения, а лишнее, конечно, удаляем. Полдня превращаются в полчаса
Я хочу постоянно поднимать уровень своего образования, а путь который проще в моем случае не туда. Поэтому сделано было так.
Второй вопрос. Да вы правы, не заработает. Скрипт писал после, и адаптировал его под сервер на Linux. Когда писал статью не заметил.
«sudo chown -R Admin:Admin /var/log»
А вот это вообще ад.
Я и сейчас не вижу ничего плохого в этой строке. Можете объяснить?
Есть немало программ, запускающихся не от рута. И если они создают свои лог-файлы, то конечно их создают с правами пользователя, под которыми запущен процесс. Вы этой командой сломали запись логов всем программам, работающим не от рута
В моем случае это осознанный поступок. Пользователь всего-лишь один. Сервер только для OpenVPN. Ничего другого там не могло быть. Может для многопользовательской системы это действительно важно, но для моей задачи это нормально.
Это для любой системы важно, многопользовательская или нет тут ни при чем, речь о системных сервисах. Это даже не системозависимо, на винсервере тоже можно поломать права и жить очень весело. Зачем делать сразу неправильно, чтобы однажды словить проблему? Тот же OpenVPN в вашем конфиге после инициализации дропает рутовые права со своего процесса. Благо, ему ничего не надо делать с файлами в собственной папке от непривилегированного пользователя, иначе бы вы долго бились «а почему оно не работает».
Я с вами согласен, был неправ. Все стало по местам.
Я соглашусь с Kanlas — не стоит менять права на системных папках. Лучше там создать подпапку с Вашими правами и писать лог туда.

Пользователей у Вас не один и не два. Тут имеются ввиду системные записи.
cat /etc/group | wc -l


После таких изменений прав обычно первым страдает Xserver. Правда сейчас многогие сервисы перешли на лог в журнале
sudo chown -R Admin:Admin /etc/sysctl.conf
chmod 755 /etc/sysctl.conf
echo net.ipv4.ip_forward=1 >>/etc/sysctl.conf


Можно же просто использовать sudo с echo, зачем ломать права на файлы и папки. И chown без sudo в данном случае все равно не сработает. Ну и echo без одинарных кавычек не по феншую, можно нарваться на выполнение непойми какой команды или интерпретации спецсимвола, вместо вывода текста. Далее такие же ошибки.
Можно же просто использовать sudo с echo, зачем ломать права на файлы и папки.
Согласен, учту. Это верно.

И chown без sudo в данном случае все равно не сработает
Срабатывает. Прежде чем отправить я проверил скрипт в машине на CentOS.

Ну и echo без одинарных кавычек не по феншую,
Если можно подробнее, я мог что-то упустить
Срабатывает. Прежде чем отправить я проверил скрипт в машине на CentOS.

Моя невнимательность, там ведь сначала владелец меняется.
Если можно подробнее, я мог что-то упустить

Лучше всего расскажет статья

Организовывать шлюз на базе pfsense если на обоих концах статические адреса. Или opensense если на одном конце адрес есть, а на точках нет. Ddns адреса тоже будут работать — проверенно. Мне пришлось искать помощи что бы дописали pfsense под работу без статики на конечных точках, но теперь всё работает. Отличный гибкий фаеврвол для защиты сети офиса. Openvpn и ipsec сервер с gui, менеджером сертификатов и т.д. все что нужно и не нужно в нем есть. Работает на базе китайского мини ПК с 2 Гб ОЗУ и 30 Гб m.ssd. легко создаются резервные копии, администрирование через web gui. У меня работает для обмена данными с магазинами через openvpn, объединение удаленных сегментов сетей через ipsec, раздача интернета внутри офиса
Общее количество подключений около 70.

Кучу echo тяжело читать, есть конструкция
cat << EOF > file
. так удобней.

Закрывать доступ к списку отзыва не понятно. Сертификаты (открытая часть) и список отзыва должны быть доступны для чтения всем на мой взгляд. Их можно открыть виндовой (и линуксовой) утилитой и посмотреть.

п.с. О, я в телевизоре)
Спасибо, я посмотрю эту конструкцию
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации