OpenVPN (Управление клиентами)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС для молодых и начинающих системных администраторов.

Модераторы: SLEDopit, Модераторы разделов

pelmen
Сообщения: 1268
ОС: debian

OpenVPN

Сообщение pelmen »

Подскажите, как можно управлять клиентами в OpenVPN. Я имею ввиду вот что: у меня сервер openvpn, у каждого клиента свои сертификаты и ключи, с помощью которых они подключаются и аутентифицируются в системе. Нужно иметь возможность приостанавливать доступ некоторым клиентам, либо разрешить им доступ на 30 дней вперед. Либо запретить доступ на 2 дня (типа забанить :) ).
Возможно ли это автоматизировать, либо это нужно делать вручную, либо это невозможно?
Спасибо сказали:
Аватара пользователя
mandreika
Сообщения: 217
ОС: Debian 3,4,5,6

Re: OpenVPN

Сообщение mandreika »

1)Ввести дополнительную авторизацию через логин/пасс и блокировать на стороне сервера
2)Есть возможность вести список отозванных сертификатов.
3)Есть возможность отключать клиентов - если отсутствует именной ccd (клиент конфиг дир) файл.

---
Я использую первый - все пункты легко автоматизируются.
p.s. Первый пункт хорош тем что клиент при запрете авторизации завершает службу на своей стороне - а не долбится пстоянно.
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: OpenVPN

Сообщение pelmen »

В случае выбора первого пункта в какую сторону копать? Что-то снаскоку не нашел ничего в гугле. Только вот это
http://www.exploit.in/forum/index.php?showtopic=25663
...
Для аутентификации по паролю нам необходим модуль openvpn-auth-pam.so, для его сборки заходим в наш каталог с исходниками
...
Оно?
Спасибо сказали:
Аватара пользователя
mandreika
Сообщения: 217
ОС: Debian 3,4,5,6

Re: OpenVPN

Сообщение mandreika »

На сервере:
auth-user-pass-verify /etc/openvpn/0chkpw via-file

где 0chkpw - перл скрипт набросал примерно.

#!/usr/bin/perl -t
use strict;
# OpenVPN --auth-user-pass-verify script.
# Only authenticate if username equals common_name.
# In OpenVPN config file:
my $status="0";
open (ifile,@ARGV[0]);
my @all = <ifile>;
my $username = @all[0];
my $pass = @all[1];
close(ifile);
my $common_name = $ENV{'common_name'};
chomp($username);chomp($pass);
open (ifile,"/etc/openvpn/passwords");
@all=<ifile>;
close (ifile);
my $i=0;
while ($i<=$#all)
{
my @pstr=split(":",@all[$i]);
if (
(@pstr[0] eq $common_name)
and(@pstr[1] eq $username)
and(@pstr[2] eq $pass)
and(@pstr[3]eq "+")
)
{$status="1";}
$i++;
}
exit ($status eq "0");
###################
содержимое passwords
cert1:login1:pass1:+:comment:
cert2:login2:pass2:-:comment:
+/- отключает включает клиента.

На клиенте:
auth-user-pass /etc/openvpn/passwd

где passwd содержит 2 строки
login
pass

Под windows нужен отдельный дистрибутив.
Спасибо сказали: