OpenVPN сервер отключить и включить клиентов

Я запускаю OpenVPN 2.3.2 (все еще новичок в этом) на серверной машине Ubuntu 14.04. Я хочу иметь возможность отключить/включить клиентов, которые подключаются к моему серверу OpenVPN.

я следовал этой руководство для отзыва сертификата клиента, но, похоже, что этот шаг необратим. Кроме того, если я отзываю сертификат клиента, а клиент уже подключен, соединение не останавливается. Я хочу, чтобы связь прекратилась немедленно.

Это есть ли простой способ отключить и включить клиенты?

мой сервер.файл conf:

# OpenVPN server configuration file
dev tun
proto udp
port 1194
server 10.8.0.0 255.255.255.0
ca /usr/share/easy-rsa/keys/ca.crt
cert /usr/share/easy-rsa/keys/vpnserver.crt
key /usr/share/easy-rsa/keys/vpnserver.key
dh /usr/share/easy-rsa/keys/dh2048.pem
push "dhcp-option DNS 8.8.8.8"
push "redirect-gateway def1"
comp-lzo
keepalive 10 60
persist-tun
persist-key
user panos
group panos
log-append /var/log/openvpn.log
verb 3
# crl-verify keys/crl.pem

последняя строка для руководства выше.

спасибо.

3
задан panos
01.02.2023 3:25 Количество просмотров материала 3010
Распечатать страницу

2 ответа

я реализовал решение, похожее на davidgo. К сожалению, я столкнулся с ошибкой openssl, подобной эта ошибка, и мне потребовалось много времени, чтобы найти обходной путь для этого.

Я написал, Наконец, два скрипта для отзыва и unrevoking сертификатов клиента:

revoke.sh:

#!/bin/bash

keys_index_file=/usr/share/easy-rsa/keys/index.txt
fileline="$(grep "/CN=/" $keys_index_file)"
columns_number="$(echo $fileline | awk -F' ' '{print NF;}')"

if [[ $columns_number -eq 5 ]] && [[ $fileline == V* ]]; then

    source /usr/share/easy-rsa/vars 
    /usr/share/easy-rsa/revoke-full 

    {
        sleep 3
        echo kill 
        sleep 3
        echo exit
    } | telnet localhost 7505

    echo "Client certificate revoked successfully."
    exit 0;

elif [[ $columns_number -eq 6 ]] && [[ $fileline == R* ]]; then

    echo "Client certificate is already revoked."
    exit 0;

else

    echo "Error; key index file may be corrupted."
    exit 1;
fi

unrevoke.sh:

#!/bin/bash

keys_index_file=/usr/share/easy-rsa/keys/index.txt
linenumber="$(grep -n "/CN=/" $keys_index_file | cut -f1 -d:)"
fileline="$(grep -n "/CN=/" $keys_index_file)"
line="$(grep "/CN=/" $keys_index_file)"

columns_number="$(echo $line | awk -F' ' '{print NF;}')"
echo $columns_number



if [[ $columns_number -eq 6 ]] && [[ $line == R* ]]; then

    column2="$(echo $fileline | awk '{print }')"
    column4="$(echo $fileline | awk '{print }')"
    column5="$(echo $fileline | awk '{print }')"
    column6="$(echo $fileline | awk '{print }')"
    echo -e "V\t$column2\t\t$column4\t$column5\t$column6" >> $keys_index_file
    sed -i "${linenumber}d" $keys_index_file
    cd /usr/share/easy-rsa; source ./vars; openssl ca -gencrl -out "keys/crl.pem" -config "$KEY_CONFIG"

    echo "Certificate unrevoked successfully."
    exit 0;

elif [[ $columns_number -eq 5 ]] && [[ $fileline == V* ]]; then

    echo "Certificate is already unrevoked and active"
    exit 0;

else

    echo "Error; Key index file may be corrupted."
    exit 1;

fi

отметим, что revoke.sh скрипт также открывает telnet соединение С openVPN и выгоняет клиента, чтобы быть аннулированный.

2
отвечен panos 2023-02-02 11:13

игнорируя опцию iptables (которая, по моему мнению, технически превосходна), вы можете отозвать и восстановить закрытые ключи, изменив файл отзыва и перезагрузив openvpn. (Если вы используете easyRSA, вы можете редактировать easyRSA / index.формат txt. Найдите соответствующую строку и измените флаг "R" на флаг" V", удалите третий столбец.) Тогда

  source ./vars
  openssl ca -gencrl -out "crl.pem" -config "$KEY_CONFIG"

вы можете перезагрузить открывающий сервер, чтобы новая конфигурация вступила в силу. Это ударит всех клиентов, но они должны автоматически повторное подключение и согласование нового сеанса.

см.http://sq4ind.eu/openvpn-revoke-unrevoke-certificates/ для справочной статьи это решение основано на.

0
отвечен davidgo 2023-02-02 13:30

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх