시스템이야기2014. 4. 9. 15:19

OpenSSL 1.0.1버전에 TLS heartbeat 취약점(일명 Heartbleed Bug라고 부름. CVE-2014-0160, openssl: information disclosure in handling of TLS heartbeat extension packets)이 있습니다. 

공격자가 https서버의 메모리 64KB 데이터를 볼 수 있습니다. 메모리에는 https서버와 유저간에 주고 받은 데이터들(ID/PW, ... 등의 정보)이 있는데, 공격자는 plain text형태로 볼 수 있습니다. 그리고,SSL 개인키를 얻을 수 있습니다. 반드시 업데이트하세요.


http://a4.aurynj.net/post/82075898166/heartbleed (Heartbleed 이슈에 관해 정리)

http://yisangwook.tumblr.com/post/82056087918/openssl-heartbeat-heartbleed (OpenSSL 취약점 발견. Heartbleed)

http://heartbleed.com/


1. 취약한 버전


OpenSSL 1.0.0과 0.9.8 버전은 취약하지 않으며,

1.0.1은 1.0.1f까지 취약합니다. 1.0.1g에서 패치되었구요.


http://www.openssl.org/news/secadv_20140407.txt



2. RHEL, CentOS


# yum update openssl*

... 생략 ...

=====================================================================

 Package              Arch      Version               Repository        Size

=====================================================================

Updating:

 openssl              x86_64    1.0.1e-16.el6_5.7     updates          1.5 M

 openssl-devel        x86_64    1.0.1e-16.el6_5.7     updates          1.2 M



3. FreeBSD


# freebsd-update fetch

# freebsd-update install

# ls -la /usr/lib*/libssl*

-r--r--r--  1 root  wheel  685846 Apr  9 12:28 /usr/lib/libssl.a

lrwxr-xr-x  1 root  wheel      11 Feb 25 09:24 /usr/lib/libssl.so -> libssl.so.7

-r--r--r--  1 root  wheel  430352 Apr  9 12:28 /usr/lib/libssl.so.7

-r--r--r--  1 root  wheel  713782 Apr  9 12:28 /usr/lib/libssl_p.a

-r--r--r--  1 root  wheel  470850 Apr  9 12:28 /usr/lib32/libssl.a

lrwxr-xr-x  1 root  wheel      11 Feb 25 09:26 /usr/lib32/libssl.so -> libssl.so.7

-r--r--r--  1 root  wheel  363552 Apr  9 12:28 /usr/lib32/libssl.so.7

-r--r--r--  1 root  wheel  480306 Apr  9 12:28 /usr/lib32/libssl_p.a


업데이트 후 openssl사용하는 데몬은 재실행해주세요.



Posted by 좋은진호
시스템이야기2007. 9. 19. 21:58
SSL인증서를 사용할 때, https는 왜 도메인기반 virtual host가 안되는가에 대해서 http://linuxchannel.net/board/read.php?table=qna&no=6427 에 2006년 1월에 답변한 내용을 정리한 것이다. 단일도메인 인증서(인증서 1개에 하나의 도메인만 갖고 있음)를 기준으로 답변한 내용이다. 와일드카드 인증서(*.foo.com 형태의 인증서)와 멀티인증서(foo.com, bar.com 등 여러 도메인을 하나에 넣은 인증서. 즉, Common Name(CN)을 여러개 갖고 있음)는 1개의 인증서로 같은 IP, 같은 포트(443)로 여러 도메인의 SSL 서비스가 가능하다.

한편 Channy's Blog( http://channy.creation.net/blog/?p=444 )에 따르면 TLS 프로토콜(RFC 2246)의 확장 규약(RFC 3546)에서 웹 서버와 브라우저 사이의 통신을 할 때 서버명을 미리 보내는 SNI(Server Name Indication)을 추가하였다고 한다. 따라서, 브라우저와 서버가 지원하게 되면 쉽게 virtual 설정이 가능할 날이 올 것으로 보인다.

----------------------------------------------------------------------------------------------------
글쓴이 : 좋은진호
글쓴날 : 2006년 01월 10일

     [이현철]님이 남기신 글:

> 상용화용 CA와 서버에서 만든 CA(테스트용 CA)를 사용할 경우
> 다른점은 단지 웹브라우저 접속시 서버에서 만든 CA를 사용해서 서명한 사이트 경우에는 경고창이 뜬다는것으로 알고 있습니다.
> (신뢰성이 없는 사이트라는 형태의 메세지)
>
> 상용화 CA라는것을 사용하는 이유는 신뢰성을 믿고 사이트를 이용해도 된다는 판단이라고 생각합니다.
>
> 그 이외 기능은 같다고 생각합니다.(암호화 처리)
    
예. 그렇습니다.

사설인증서를 사용하더라도 테스트는 동일하게 하실 수 있으며,
내부용으로 사용하는 것이나 단지 암호화를 위한거라면 사설인증서를 사용해도 됩니다.

> ----------------   ------------------ --------------------
> 현재 1대서버에 2개의 도메인이 존재하고 두개의 도메인 전부(http)웹서비스 그리고
> 하나의 도메인에 관해서만(https) 이용하고있습니다.(상용화키를 이용하지 않음-테스트용ca를 가지고 https형태로 이용중)
>
> httpd.conf에는
> ---------------------------------------------------
> <VirtualHost xxx.xxx.xxx.xxx:80>
>    ServerAdmin xxxxxxxxx
>    DocumentRoot /home/xxxxxxx
>    ServerName zec.gigaprize.co.jp
>    ErrorLog logs/error.log
>    CustomLog logs/access.log common
> </VirtualHost>
> <VirtualHost xxx.xxx.xxx.xxx:80>
>    ServerAdmin xxxxxxxxx
>    DocumentRoot /home/xxxxxxx
>    ServerName gourmet-star.gigaprize.co.jp
>    ErrorLog logs/error_1.log
>    CustomLog logs/access_1.log common
> </VirtualHost>
> ---------------------------------------------
>
> http://zec.gigaprize.co.jp/index.html (현재 index.html와 존재하지 않치만 도메인까지 접속은 가능함)
> http://gourmet-star.gigaprize.co.jp/index.html (현재 test용 index.html)이 존재함
>
> ----------------------------------
> ssl.conf에는
> ----------------------------------
> <VirtualHost _default_:443>
> #   General setup for the virtual host
> DocumentRoot /home/xxxxxxx
> ServerName gourmet-star.gigaprize.co.jp:443
> ErrorLog logs/ssl-error_log
> TransferLog logs/ssl-access_log
> -----------------------------------------------
> gourmet-star.gigaprize.co.jp 만 https(ssl)형태로 설정이 되어 있음.
>
> ----
> 실제 접속을 해보시면 알시겠지만 https://gourmet-star.gigaprize.co.jp/index.html
> 제대로 접속이 되고 있습니다.
>
> 그런데
> https://zec.gigaprize.co.jp/index.html
> 로 접속해보면 이 도메인도 https로 접속되어 버립니다.(index.html은 실제 존재하지 않는데, 내용을 보면 gourmet-gigaprize.co.jp 형태로 접속해버립니다.(웹브라우저 URL은 zec.gigaprize.co.jp 인데 index.html은
> gourmet-star.gigaprize.co.jp 내용이 보이고 있습니다)
>
> -------질문 1입니다..-----------------
> 위의 결과를 보면 1대의 서버에 443의 포트로 요청이(https가 설치되어있지않은 도메인도 ) ssl.conf에 설정된 도메인으로 결과를 보여주고 있는데 이것이 정상인지요?
> 개인적으로 https 설정되지 않은 도메인 경우에는 80은 보여주지만
> 443관해서는 에러가 나는 것이 정상이라고 생각하는데, 아니면 제 설정이 잘못되었습니까?
>------------------------------------

정상적인 현상입니다.
이유는 아래 질문에서 답변.

> --------질문2입니다-------------------
> 그리고 위의 두개 도메인을 전부 https형태로 시험해봤지만.
> (ssl.conf에 버츄얼로 두개의 도메일 등록-물론 ca와 각각 도메인별로 만들었음-테스트용 ca를 사용)
>
> 두개의 도메인을 등록 후 아파치설정 syntax테스트
> #sh apache2/bin/apachectl configtest
> Syntax OK
> 그리고 restart 한후 error.log를 보면 기존의 443포트가 이용하고 있기때문에 apachessl를 기동할수없다고 나옵니다.
> 결국 한대의 서버에 443포트는 하나의 도메인만 움직일수 있다는 결론인데요.(80포트는 몇개의 도메인을  띄울수있는데 말이죠)
>
> 결국 한대의 서버에 하나의 도메인만 https형태로 작동하는지요.
> --------------------------------------------------------------
> (상용화 CA사이트에 보면 700달러 정도주면 서브도메인(aaa.domail.com ,
> bbb.domail.com) 까지 전부 대응하는 CA도 팔고 있는데요..
> --------------------------------------------------------------

우선 처음 질문올릴 때 말씀하신, 여러 도메인을 SSL로 서비스를 한다면

1) 한 서버에 여러 IP를 할당하고, 웹서버는 각각의 IP에 바인딩해서 올리셔야 합니다.
   또는 https 포트를 443외에 각 도메인별로 다르게 하여 바인딩하거나.

2) 완전히 다른 서버에 한대당 하나의 도메인을 사용해야 합니다.

http(80포트)에서 virtual host 설정하는 것처럼 https를 도메인기반 virtual 설정으로는 안됩니다.

이유는 프로토콜의 계층만 이해하면 간단합니다.
HTTPS로 표시되는 SSL프로토콜층은 HTTP보다 하위에 있습니다.
그런데 웹서버의 virtual host설정에 의한 도메인정보는 HTTP의 헤더에 붙어있습니다.
즉, SSL프로토콜은 HTTP보다 하위이니 HTTP의 헤더를 이해를 못하는 것이겠죠.
따라서 도메인기반 virtual host설정과는 다르게 어떤 도메인으로 들어오든 첫 설정에 따라 결정이 되는겁니다.

layer는 http://coffeenix.net/doc/network/ssl_fig3.gif 에서 볼 수 있고,

사용자 삽입 이미지

이유는 http://www.modssl.org/docs/2.8/ssl_faq.html 에서 볼 수 있습니다.
    
Why can't I use SSL with name-based/non-IP-based virtual hosts?

The reason is very technical. Actually it's some sort of a chicken and egg problem: The SSL protocol layer stays below the HTTP protocol layer and encapsulates HTTP. When an SSL connection (HTTPS) is established Apache/mod_ssl has to negotiate the SSL protocol parameters with the client. For this mod_ssl has to consult the configuration of the virtual server (for instance it has to look for the cipher suite, the server certificate, etc.). But in order to dispatch to the correct virtual server Apache has to know the Host HTTP header field. For this the HTTP request header has to be read. This cannot be done before the SSL handshake is finished. But the information is already needed at the SSL handshake phase. Bingo!
Posted by 좋은진호
IT이야기2007. 5. 31. 14:22
SSL 사이트는 웹페이지의 보안을 위해서 서버와 클라이언트(PC)의 브라우저간에 데이터가 암호화되어 전송되는 사이트를 말한다.
URL에 http 대신에 https로 표시되고, 브라우저 하단에 자물쇠모양의 표시가 나온 것을 본적이 있을 것이다. 이 표시가 된 사이트는 전송되는 데이터는 암호화되어 안전하게 인터넷을 즐길 수 있다. 주로 결제, 로긴, 회원정보 변경등이나 기타 보안이 필요한 페이지에서 봤을 것이다.

※ 브라우저 하단의 자물쇠 모양의 표시
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
( 앞에서 부터 IE6, 파이어폭스2, 파이어폭스1.x )


Netcraft의 5월 15일 발표자료( http://news.netcraft.com/archives/2007/05/15/internet_passes_600000_ssl_sites.html )에 따르면 인터넷의 SSL사이트 수가 5월에 처음으로 60만개를 넘은 것으로 확인됐다. 통계를 시작한 1996년 11월에 3,283개부터 시작하여, 평균 매년 65%의 성장률을 보였다. Netcraft에 공개된 SSL통계 몇개를 살펴본 결과, 다음과 같은 수치를 확인할 수 있었다.

사용자 삽입 이미지
[ 이미지 출처 : netcraft ]

1996년 11월 3,283개
2006년 05월 384,732개
2006년 06월 393,332개
2007년 05월 600,000개

국내 보안서버 인증서 시장전자신문 작년 11월 기사에 따르면 최대 3만장으로 추정하는데, 단순 계산시 전세계 60만 사이트와 국내 3만 사이트를 비교하면 5%의 비율이다. 우리 나라의 보안서버(SSL 서버+응용프로그램을 통한 암호화) 보급률이 전세계 43위에 비하면 너무 높다. 3만장의 의미는 웹서버의 SSL인증서 + 응용프로그램인증서(코드사이닝 인증서, ActiveX인증용) 등을 통합했을 때의 수치가 아닐까 싶다.

SSL서버를 구성하는 웹서버 종류별 비율과 업체별 SSL 인증서 시장을 살펴보자.

2006년 4월 자료(최근 발표 자료 없음)에 따르면 SSL 서버는 apache가 44.0%, MS의 IIS가  43.8%로 양분하고 있다. 지금쯤이면 그래프의 흐름상 apache의 점유율은 점점 증가하여 50%정도가 됐을 것으로 추측한다.

또한 SSL 인증서 시장은 2006년 5월(최근 발표 자료 없음)에 Verisign이 45.4%, GeoTrust가 26.7%를 차지하고 있다.

사용자 삽입 이미지
[ 이미지 출처 : netcraft ]

마지막으로 개인적인 용도나 회사 내부에서만 사용하는 웹서버에 SSL인증서를 설치할 때 구매를 해야하냐는 질문을 가끔 받는다. 답은 구매할 필요없이 사설 인증서를 만들어 사용하면 된다. 내부적으로만 사용하는 건데 굳이 공인인증서를 구매해서 사용할 필요가 없다. 돈 쓰지마라.


Posted by 좋은진호