View
보안은 모든 곳에 있고 어디에서나 중요하다.
엔터프라이즈의 환경에서는 계정 정보를 통합하여 관리하고 서비스 하는 경우가 많다.
따라서 제공하는 솔루션에서 계정관리 시스템과 연계할 수 있도록 해야 하는데,
이때 인증Authentication/인가Authorization는 매우 중요한 요소이다.
그리고 일정 수준 이상으로 성숙한 솔루션들은 웹을 기반으로 제어할 수 있도록 기능을 제공한다.
이때 민감한 시스템의 경우는 내부망에 구성했음에도 불구하고 SSL을 적용하는 경우가 더러 있다.
이를 위해서 간단하게 간을 보았다.
* LDAP
- LDAP의 기능은 무엇인가?
> LDAP (Lightweight Directory Access Protocol)은 네트워크 상에서 어떠한 정보(전화번호, 주소, 조직, 파일, 프린터등 하드웨어 위치, 계정 등등)를 쉽게 찾아 볼 수 있게 하는 소프트웨어 프로토콜이다.
> LDAP은 디렉토리 서비스를 의미하기도 하고 LDAP 프로토콜을 의미하기도 하는데, LDAP 디렉토리 서비스는 LDAP 프로토콜의 구현체이다.
> LDAP은 계층구조를 갖는 데이터를 네트워크를 통해서 교환할 수 있게 하는 프로토콜인데, 이는 인증을 위한 중앙 저장소의 프로토콜로 사용하는 것이다.
> 프로토콜이라는 것은 표준이기 때문에 각 어플리케이션 벤더들이 이를 기반으로 인증기능을 구현한다.
> 이러한 기능을 하는 서비스를 일반적으로 디렉토리 서비스라고 한다.
- LDAP 이랑 비슷한 기능을 하는 서비스는 무엇이 있을까?
> AD(Active Directory)는 windows server 2000 이상에서 제공하는 directory 서비스로, 그룹/사용자/네트워크 통합 관리 기능을 지원한다.
> Red Hat Directory Service
> OpenLDAP
> Apache Directory Server 등이 있다.
- AD, Kerberos와 차이점은 무엇인가?
* AD (AD와 LDAP을 비교하는 것은 Apache와 http를 비교하는 것과 같다?)
> AD은 LDAP을 사용할 수도 있고 Kerberos를 사용하여 인증할 수도 있다.
< AD와 Kerberos는 cross-platform을 지원하지 않기 때문에 LDAP을 같이 제공한다.
> AD는 크게 Windows 사용자, 장치, 어플리케이션에 대한 디렉토리이다.
< LDAP은 반대로 Windows 구조가 아닌 Linux/Unix 환경에 대해서 동작하며 더 기술적인? 어플리케이션이다.
> AD는 MDC (Microsoft Domain Controller)가 필요하며 도메인 구조를 통해 SSO를 할 수도 있다.
< LDAP은 도메인이나 SSO와 같은 개념이 없다.
< LDAP은 OSS로 구현되어 있어서 AD에 비해서 유연하다.
- Kerberos
> Kerberos는 인증과 SSO를 위한 프로토콜이며, LDAP은 디렉토리 서비스를 위한 프로토콜이다.
> Kerberos는 티켓 기반의 메커니즘을 이용하여 인증을 수행한다.
- LDAP의 아키텍처/구성요소는?
> LDAP의 인증에는 2가지 옵션이 있다. 하나는 simple이고 또 다른 하나는 SASL(Simple Authentication and Security Layer)이다.
> Simple 옵션은 3가지에 대한 인증이 가능하다
. Anonymous 인증 : client에게 anonymous 상태로 LDAP 에게 전달함
. Unauthenticated 인증 : 오직 logging 목적으로 client에 대한 접근권한을 주지 않음.
. Name/Password 인증 : 자격을 기반으로 서버에대한 접근 권한을 부여함.
- 간단한 user/password 인증은 안전하 지 않으며, 기밀성 보호가 없는 인증에는 적합하지 않음(?)
> SASL 인증은 LDAP 서버를 다른 인증 메커니즘(ex. Kerberos)와 연계한다. LDAP 서버는 LDAP 프로토콜을 통해 인증 서비스에 메세지를 보내고 그것에 대한 응답으로 인증 성공/실패를 반환한다.
* SSL, Secure Socket Layer (=TLS)
- CA, Certificate Authority 라 불리는 서드 파티로부터 서버와 클라이언트의 인증을 하는데 사용된다.
- 동작 방식
> [browser->server] SSL로 암호화된 페이지를 요청함 (https://)
> [server->browser] pulbic key를 인증서와 함께 전송한다.
> [browser] 인증서가 자신이 신용하고 있다고 판단한 CA(certificate authority)로 부터 서명된 것인지, 날짜가 유효한지, 요청과 부합하는지 확인한다.
> [browser->server] public key를 이용해서 랜덤 대칭 암호화키(Random Symmetric encryption key)를 비롯한 URL, http 데이터를 암호화해서 전송한다.
> [server] 요청받은 URL에 대한 응답을 browser로 부터 받은 랜덤 대칭 암호화키를 이용하여 암호화해서 브라우저로 전송한다.
> [browser] 대칭키를 이용해서 http 데이터와 html 문서를 복호화 하고, 화면에 정보를 뿌려준다.
- 개인키/공개키
> 개인키/공개키를 이용하여 하나의 키로 암호화 하면 다른 하나의 키로 복호화 할 수 있도록 구성되어 있다. 이러한 key-pair는 소수prime-number 로부터 생성되며, 길이에 따라 암호화 강도가 달라진다.
> 개인키/공개키는 이러한 key-pair를 관리하는 방법인데 한개의 키는 안전한 장소에 보관하고(private key) 다른 하나는 모든 사람에게 공개하여(pulbic key) 나에게 메세지를 보낼때 암호화 해서 보내고,
나만 복호화 하여 보낼 수 있도록 한다.
> 반대로 상대방에게 메세지를 보낼때 private key로 암호화하고 public key 를 보내면 되지만 이는 안전한 방법이 아니다.
- 인증서
> SSL의 기본구조는 당신이 인증서를 서명한 사람을 신뢰한다면, 서명된 인증서도 신뢰할 수 있다는 것이다.
> Tree 구조를 이루면서 인증서는 하위 인증서에게 서명을 하게 된다.
> 최상위 root 인증서는 root CA라고 하는데 root CA는 기본적으로 웹 브라우저에 설치되어 있다. 이러한 인증기관은 자신들의 서명한 인증서를 관리할 뿐 아니라 철회 인증서도 관리하고 있다.
> 보통 모든 root CA 인증서는 자체 서명(self signed) 되어 있다.
- 대칭키(The symmetric key)
> 개인키/공개키는 좋은 알고리즘이지만 실용적이지 못하다.
> 비대칭이란 하나의 키로 암호화를 하면 다른 하나로 복호화를 해야 한다는 것이고, 하나의 키로 암호화/복호화를 할 수 없다는 것이다.
> 대칭키는 하나의 키로 암호화/복호화를 가능하게 한다. 하지만 이것만 사용하는 것은 안전한 방법이 아니다.
> 이것을 해결하기 위해 대칭키를 비대칭키로 암호화 해서 전송한다.
> 그러면 상대방은 public key로 암호화된 대칭키를 이용하여 정보를 암호화 하여 전달한다.
> 대칭키가 누출되어도 문제가 없도록 대칭키는 매번 랜덤으로 생성하여 암호화 후 전달한다.
'02.IT공부(간헐적취미) > 보안' 카테고리의 다른 글
[Kerberos]01.개요 (용어 및 프로토콜 동작 방식) (0) | 2018.04.13 |
---|