답변:
에 따르면 이 게시물 , common_name
사용자가 위조 할 수 없습니다.
이것을 openvpn server.conf에 추가하십시오
script-security 2
# untrusted state
auth-user-pass-verify /etc/openvpn/scripts/check_cn_on_connect.sh via-env
/etc/openvpn/scripts/check_cn_on_connect.sh
포함
#!/bin/bash
# username and common_name must be the same to allow access.
# users are not allowed to share their cert
if [ $username != $common_name ]; then
echo "$(date +%Y%m%d-%H%M%S) DENIED username=$username cert=$common_name" >> /var/log/openvpn-access.log
exit 1
fi
echo "$(date +%Y%m%d-%H%M%S) GRANTED username=$username cert=$common_name" >> /var/log/openvpn-access.log
exit 0
최신 정보
OpenVPN 2.1.4 용입니다. 2.2.0에서는에 표시되는 많은 새 변수를 추가했습니다 env >> /tmp/env
. 여기서 새 변수 중 하나는 인증서 지문 / 일련 번호입니다.
OpenVPN은 오픈 소스 프로젝트이기 때문에 많은 옵션이 있으며, 자체 인증 후크를 작성할 수있는 기능이 있으므로 다양한 수준의 인증을 제공하기 위해 다양한 작업을 수행 한 사람들이 많이 있습니다.
나는 docs / blogs / maillists에 언급 된 것을 본 적이 거의 없다. 이들 중 일부는 패치 또는 무료 버전이 필요할 수 있습니다.
주요 방법 중 하나는 키 쌍의 개인 부분을 추출 / 복사하는 것을 엄청나게 어렵게 만드는 것입니다.
키를 보호하는 것이 비용이 많이 들거나 클라이언트 플랫폼에서 지원되지 않거나 다른 이유로 불가능한 경우 몇 가지 옵션이 있습니다.
이상을 감시하기 위해 서버에 많은 로깅을 설정하십시오. Bob이 일반적으로 자신의 집에서만 로그인 한 다음 어느 날 Acme Inc.에서 로그인을 시작하면 조사해야합니다.
다단계 인증 설정 인증서는 '있는 것'으로 간주됩니다. 따라서 '현재 존재하는 것'또는 '알고있는 것'에서 대안을 찾아야합니다. 여기에는 바이오 메트릭 또는 암호 / 암호가 포함됩니다.
auth-user-pass-verify
옵션을 사용합니다 . 이 옵션은 제공된 사용자 이름과 비밀번호를 외부 스크립트 / 프로그램으로 전달하여 원하는 것을 기반으로 인증 결정을 내립니다.나는 보안에 대해 엄격한 보안 전문가가 아닙니다. 귀하의 질문은 IT 보안의 핵심 인 신뢰에 정확하게 도달합니다. 내가 알기로는 Bob을 신뢰할 수 있다고 가정해서는 안됩니다. 물론 밥은 정말 친절하고 믿을만한 사람 일 것입니다. 그는 20 년 이상 회사에서 근무했습니다. 그러나 "Bob"사용자는 IT 인프라와 전혀 관련이 없습니다.
Bob은 액세스를 허용하는 임의의 '릴레이'를 사용합니다. 릴레이는 비밀번호, 인증서, 하드웨어 토큰, 홍채 스캔, DNA 등 무엇이든 될 수 있습니다. 시스템에 액세스 할 수있는 키입니다. 귀하의 질문이 키를 사용하는 사람의 신원을 확인하는 것에 관한 것이라면, 유일한 정직한 대답은 아마도 같은 방에 있어야한다는 것입니다. 다른 모든 경우에는 Bob이 실제로 Bob이고 현재 액세스 권한을 얻는 동안 총점에 있지 않다는 것을 확신해서는 안됩니다. 따라서 IT 인프라 설계 계획에서 논리적은 "Bob"을 언급하지 않는 것입니다. 즉, 조직 이 사이트에 액세스 할 수 있습니다.
과거에 전달한 키로 '엔터티'가 액세스 할 수 있다는 사실 만 알 수 있기 때문에 적절한 관점은 아마도 키가 열 수있는 문 수를 제한하는 것입니다. 키가 많을수록 문이 적게 열립니다.
OpenVPN에는 키당 하나의 동시 연결 만 허용하는 옵션이 있습니다. 그런 다음 Bob이 이미 내부에있는 동안 Alice가 Bob의 키로 로그인하면 Alice는 액세스가 거부됩니다. 불행히도 이것은 Alice가 Bob의 키로 로그인 한 경우 Bob이 로그인 할 수 없음을 의미합니다. 따라서 여러 소스 IP의 동시 로그인 시도를 알리도록 시스템을 구성해야합니다. 위반이 발생하면 Bob이 전화를 걸어 도움을 청해야합니다.
요점은 : 보안 계획을 설계 할 때 확신 할 수없는 사항을 스스로 확인하지 말고 명심하십시오. 항상 당신보다 앞서있는 똑똑한 사람이 있다고 가정 해보십시오. 누가 당신을 잘못 증명하기를 기다릴 수는 없습니다. :-)
auth-user-pass-verify /etc/openvpn/scripts/connect.sh via-env
사용자의 사용자 이름을 얻을 수 있습니다 . 사용자가 사용중인 인증서에서 ID를 얻을 수 있는지 알고 있습니까? 그렇다면 알려진 인증서 ID로 yaml 파일을 확인하는 Perl 스크립트를 작성할 수 있습니다.