Возможно ли это автоматизировать, либо это нужно делать вручную, либо это невозможно?
OpenVPN (Управление клиентами)
Модераторы: SLEDopit, Модераторы разделов
-
pelmen
- Сообщения: 1268
- ОС: debian
OpenVPN
Подскажите, как можно управлять клиентами в OpenVPN. Я имею ввиду вот что: у меня сервер openvpn, у каждого клиента свои сертификаты и ключи, с помощью которых они подключаются и аутентифицируются в системе. Нужно иметь возможность приостанавливать доступ некоторым клиентам, либо разрешить им доступ на 30 дней вперед. Либо запретить доступ на 2 дня (типа забанить
).
Возможно ли это автоматизировать, либо это нужно делать вручную, либо это невозможно?
Возможно ли это автоматизировать, либо это нужно делать вручную, либо это невозможно?
-
mandreika
- Сообщения: 217
- ОС: Debian 3,4,5,6
Re: OpenVPN
1)Ввести дополнительную авторизацию через логин/пасс и блокировать на стороне сервера
2)Есть возможность вести список отозванных сертификатов.
3)Есть возможность отключать клиентов - если отсутствует именной ccd (клиент конфиг дир) файл.
---
Я использую первый - все пункты легко автоматизируются.
p.s. Первый пункт хорош тем что клиент при запрете авторизации завершает службу на своей стороне - а не долбится пстоянно.
2)Есть возможность вести список отозванных сертификатов.
3)Есть возможность отключать клиентов - если отсутствует именной ccd (клиент конфиг дир) файл.
---
Я использую первый - все пункты легко автоматизируются.
p.s. Первый пункт хорош тем что клиент при запрете авторизации завершает службу на своей стороне - а не долбится пстоянно.
-
pelmen
- Сообщения: 1268
- ОС: debian
Re: OpenVPN
В случае выбора первого пункта в какую сторону копать? Что-то снаскоку не нашел ничего в гугле. Только вот это
http://www.exploit.in/forum/index.php?showtopic=25663
http://www.exploit.in/forum/index.php?showtopic=25663
Оно?...
Для аутентификации по паролю нам необходим модуль openvpn-auth-pam.so, для его сборки заходим в наш каталог с исходниками
...
-
mandreika
- Сообщения: 217
- ОС: Debian 3,4,5,6
Re: OpenVPN
На сервере:
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 нужен отдельный дистрибутив.
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 нужен отдельный дистрибутив.