티스토리 툴바


예전에 회사에서 알았던 사람이 어제 새벽에 암으로 세상을 떴다는 소식을 들었다 .
서로 잘 알고 지내지는 못했지만, 나와는 동갑이고, 자주 얼굴을 마주치던 분이었기에 그 소식에 마음 한켠이 먹먹해짐을 느꼈다.
아직 40도 되지 않은 나이에 사랑하는 사람들을 뒤로 하고 먼저 먼 길을 떠나야 했을 때, 과연 어떤 심정이었을까.
누군가 그랬다. 죽음이 공포스러운 이유는 사랑하는 모든 것들과 이별해야 하는 것 때문이라고.
내가 오늘 아무렇지도 않게 허비하는 이 순간들은 내가 사랑할 수 있는 모든 것들에 대한 죄인 듯 싶다.
삼가 고인의 명복을 빕니다.

저작자 표시
Posted by erratum

kill() 시스템콜을 프로세스에게 시그널을 보내는 것 외에 다른 목적에 사용할 수 있다.
kill의 두번째 인자인 int sig의 값에 0을 할당한 체 호출하게 되면, 해당 프로세스에게 아무 의미 없는 시그널(null signal)을 보내게 된다. 만약 존재하지 않는 프로세스 id로 시그널을 보내게 되면 ESRCH(no such process) 에러가 발생한다. 만약 EPERM(operation not permitted) 에러가 발생하거나 함수가 성공한다면 해당 프로세스가 현재 실행 중인 것이다. 이렇게 해서 어떤 프로세스가 실행중인지 확인 하는 용도로 kill 시스템콜을 사용할 수 있다. 하지만 이런 방법에 문제점이 있는데, 프로세스 ID는 kernel에 의해서 재사용되기 때문이다. 시간이 꽤 흐른 뒤에는 시그널을 보내는 pid가 내가 알고 있는 그 프로세스의 pid인지 장담 못한다. 또한 좀비 프로세스일 가능성도 있다.
그래서 다음과 같은 다양한 방법으로 프로세스가 살아 있는지 체크하게 된다.

1. wait() 시스템콜
살아 있는지 감시당하는 프로세스가 자식 프로세스인 경우 사용할 수 있다.

2. semaphore와 exclusive file locks
감시당하는 프로세스가 세마포어를 가지거나 어떤 파일(대게 /var/run/xxx.pid)에 exclusive lock을 걸고 실행한다. 감시하는 프로세스가 이런 동기 객체를 얻을 수 있다면 감시당하는 프로세스가 종료된 것이다. 그런데 감시당하는 프로세스가 비정상 종료하는 경우, 동기 객체를 정리하지 못할 수 있어, 곤란한 상황이 만들어질 수도 있다.

3. IPC channel
감시당하는 프로세스는 파이프를 쓰기로 열고 감시하는 프로세스는 읽기로 연다. 읽기 파이프에서 end of file을 받으면 감시당한느 프로세스가 끝난것이다.

4. /proc/pid
현재 실행중인 프로세스들은 모두 /proc 밑에 process id로 된 디렉토리를 만든다. 여기에 보면 바이너리 이름과 같은 프로세스에 대한 정보들이 많이 있어서 적절히 사용하면 kill() 시스템콜에서 언급된 한계점을 뛰어넘을 수 있을것이다.

저작자 표시
Posted by erratum
flock() 함수로 파일을 lock할 때 다음과 같은 한계가 있다. 

  1. 오직 파일 전체에만 lock을 걸 수 있다. 이것은 협동하는 프로세스들 간의 concurrency에 제약이 될 수 있다. 같은 파일의 서로 다른 부분을 접근하는 프로세스들도 모두 접근하지 못하게 만들기 때문이다. 
  2. 다른 프로세스에 의해서 lock에 걸린 파일에 대한 접근은 전적으로 programmer의 선택이다. 즉, locking mechanism을 강제할 수 없다. 
  3. 많은 NFS 구현은 flock()에 의한 lock을 인지하지 못한다. 하지만, 2.6.12 kernel 이후로 fcntl()을 사용해서 구현을 하였다. 이것은 flock()을 서버와 클라이언트에서 동시에 사용했을 때 의도하지 않은 결과를 만들기도 한다. 
저작자 표시
Posted by erratum
요즘 왠지 귀에 들어오는 노래들이 있다.
아이유의 좋은날, 걸스데이의 잘해줘봤자..
두 가수 모두 내 취향은 아니고(물론 실력도 있고 이쁘지만, 나도 이제 늙었나.. 그 많은 나이차를 극복할 엄두가 나질 않는다.ㅋㅋ), 가사가 나의 개인사와 관련 있는 것도 아니고, 인기도 좀 지난 노래고, 심지어 걸스데이 노래는 많은 인기를 얻은 곡도 아닌데, 두 곡을 들으면 왜 그런지 모르겠는데, 대학생활을 막 시작하던 그 때 그 시절이 떠오른다.
아마 리듬이나 멜로디가 그 시절을 연상하게 만드는 것 같다.
노래를 듣고 있노라면, 1995년 봄의 그 풋풋함. 왠지 그 향기가 나를 감싸는 것 같다.
대학생이라는 내 생애 최초의 해방감과 대학이라는 새로운 환경에 대한 어색함을 동시에 맞닥뜨려야 했던 그해 봄.
햇살은 따뜻하고, 봄 향기는 향기로웠지만, 모든 게 순조롭지만은 않았던 그 시절이 이제 또 다시 그리워 지는 건, 나도 이제 서서히 추억을 먹고 사는 나이가 되는가 보다. ㅋㅋ


저작자 표시
Posted by erratum

광릉 수목원

나의 사랑 2010/06/02 23:46
광릉 수목원에 나들이를 갔다.
계절의 여왕 5월이 다 끝나가는데, 바람도 한 번 못 쐬보는 건 아닌가 싶어서 부랴부랴 나섰다.
급조긴 하지만, 도시락도 싸서 구색은 제대로 갖췄다.
공식적인 이름은 국립 수목원이었다.
예약한 사람들만 입장할 수 있다고 들었는데, 정확한 건지는 모르겠다.
어른 1000원, 아이는 500원, 더 어린 아이는 무료인데, 인터넷으로 예약했다.
수목원을 둘러보니 넓다란 공간에 사람도 얼마 없어서 여유롭고, 나무도 많고... 좋았다.
내가 바라던 그런 나들이가 될 수 있었다.
한 바퀴 휘 도는데 3시간 정도 걸렸다. 애가 아직 여기저기 붙어 있는 팻말의 의미를 알 수 있는 나이가 아니어서 제대로 구석구석 보진 못해서 그랬는데, 아마 제대로 보려면 서너 시간 가지고는 부족할 듯 싶었다.
애가 좀 큰 다음에 다시 한 번 가봐야겠다는 생각이 들었다.


저작자 표시
Posted by erratum

  • 개요       
    • 일단 flux의 사전적인 의미를 살펴보자. 영한사전에는 기체, 액체의 유동, 흐름, 범람과 같은 것들이 나온다. 그렇다면, fast flux란 빠른 흐름 정도로 이해하면 될것 같다.

    • fast flux를 쉽게 얘기하자면 하나의 domain name에 여러 개의 IP 주 소를 할당하는 것을 말한다. 여기서 여러 개라 함은 수백 개 내지는 수천 개를 의미한다. 이렇게 해서 이 domain name을 알고 있는 client로 하여금 접속하는 대상의 실체를 제대로 알지 못하게 하려는 의도가 있다.

    • 이러한 IP 주소들의 할당은 일정한 주기마다 DNS 서 버의 A record, NS record를 변경하는 방식으로 이루어진다. 여기서 일정한 주기는 DNS 서 버의 TTL(Time-To-Live) 설정을 통해서 결정되는데, 보통 3분 내지는 10분 정도의 값을 사용한다. fast flux의 fast란 말은 여기서 나온 것으로 볼 수 있다.

    • fast flux는 많은 불법적인 행위와 관련있다. 
      • for example, online pharmacy shops, money mule recruitment sites, phishing websites, extreme/illegal adult content, malicious browser exploit websites, and the distribution of malware downloads.
      • money mule: A money mule is a person who transfers stolen money or merchandise from one country to another, either in person, through a courier service, or electronically. The term is commonly used to describe on-line scams that prey on victims who are unaware that the money or merchandise they are transferring is stolen. In these scams, the stolen money or merchandise is transferred from the victim's country to the scam operator's country. 더욱 자세한 것은 <money mule> 참조. 
    • fast flux는 UDT redirect와 blind TCP를 이용하므로,  DNS, HTTP 뿐만 아니라 SMTP, POP3, IMAP과 같은 방향성 있고, 하나의 포트를 향하는 서비스들은 fast flux에 이용될 수 있다.
    • fast flux가 attacker들에게 매력적인 이유
      • 단순하다. DNS, http 서비스를 제공하는 하나의 성능 좋은 back-end server만 있으면 된다. 
      • 언제든지 처분 가능한 front-end가 있어서 추적이 쉽지 않다.
      • 물리적으로 유연한 network을 구성할 수 있으므로, 감시, 단속, 처벌이 느슨한 곳에서 활동할 수 있다.
    • fast flux는 크게 single flux와 double flux로 나누어 진다.




  • DNS와 관련된 것들
    • DNS의 record type
    • authoritative name server
      • 어떤 DNS zone을 책임지고 있는 name server. 예를 들면, 우리가 다음의 지도 서비스 사이트를 찾으려고 할 때, local.daum.net의 IP 주소를 알아야 하는데, daum.net 까지는 KT나 Dacom에서 운영하는 DNS 서버로 찾을 수 있지만, local이라는 도메인에 대한 IP 주소는 다음이 운영하는 DNS 서버에서 찾을 수있다. 이러한 다음이 운영하는 DNS 서버를 말한다.

    • DNS의 TTL
      • DNS 서버에 있는 cache가 유효한 시간을 의미한다.
      • 상위 DNS 서버의 과부하를 감소시킬 목적으로 사용된다. 
      • 유닉 스의 dig 프로그램으로 TTL 값을 확인할 수 있다. 



  • 동작 방식
    • fast flux network을 만들고 제어하는 mothership이 존재한다.
    • mothership은 IRC C&C와 유사한 역할을 하지만, DNS와 HTTP services등 더 많은 기능이 있다.
    • mothership에 의해서 제어당하는 node는 flux agent 혹은 flux bot이라고 부른다.
    • victim은 flux agent를 자신이 원하는 URL을 가지고 있는 web server라고 생각한다.
    • victim에서 오는 request를 mothership으로 redirect하는 역할을 한다.
    • attacker는 flux agent들의 네트워크 가용성 등을 체크하여 부하가 몰리지 않도록 조절한다.(load balancing) 이렇게 하여 만약 도중에 flux agent가 available하지 않게 되더라도 fast flux network의 생명력을 길게 가져갈 수 있다.
    • load balancing의 효과는 flux agent의 변경이 용이하므로, 추적을 어렵게 만들기도 한다.
    • case study
      • honeywall 환경에서 weby.exe를 대상으로 실험. 
      • 실제 인터넷이 가능한 환경에서 테스트.
      • victim host에서 malware 실행. http request를 통해서 자신이 감염 되었음을 owner에게 알린다. 여기서 사용되는 http request는 다음과 같은 모양이다. "http://xxx.ifeelyou.info/settings/weby/remote.php?os= &user= &status= &version= &build= &uptime="
      • mothership은 성공적으로 fast flux network에 편입되었음을 알리는 응답을 한다. victim은 이제 mothership으로부터 명령을 기다린다.
      • mothership은 상세한 설정을 ini 파일로 담아 내려 보낸다. 여기에는 victim이 수행하게 될 행위에 대한 자세한 명세가 있다. 
      • 이제 victim은 완전히 mothership의 제어권으로 들어간다.



  • Single flux





  • Double flux




저작자 표시
Posted by erratum
TAG fast flux
오늘 처음으로 나의 아들에게 매를 들었다.
옷걸이 가지고 바닥을 두어번 내리친 게 다여서, 매라고 하기에도 쑥스럽지만, 그래도 마음이 영 개운치 않다.
요즘 부쩍 자기 하고 싶은대로 되지 않으면 심하게 떼쓰는 녀석.
때와 장소를 가리지 않고 바닥에 드러누워서 몸부림을 치고, 울고, 소리 지르고...
18개월 아이들이 자연스럽게 보이는 모습이라고는 하지만, 이대로 묵과할 수가 없었다.
소리도 질러보고, 무서운 표정도 지어보지만, 별 효과는 없기에 주변에 보이는, 제일 매와 비슷한 걸로 집어 든 게 옷걸이었다.
옷걸이로 바닥을 두세번, 일부러 큰 소리가 나게 내려쳤다.
좀 효과가 있는듯 아이는 놀란 표정으로 나를 봤다.
하지만, 이내 마음이 찜찜하다.
아이에게 뭔가 잘못하고 있다는 것을 알려 주고는 싶은데, 생각만큼 쉽지가 않다.
그 동안 늘 주변에서 보아 왔던 자신의 아이와 씨름하며 애태우는 여느 부모들과 똑같은 길을 걷게 되는건지.
그 길이 싫은 건 아니지만, 그 길에서 세상에서 가장 사랑하는 사람에게 상처를 주고 실망을 하게 되는 건 아닌지... 그런 것들이 걱정된다.
그렇게 혼이 나고도 아이는 다시 엄마 아빠를 보고 웃는다.
나도 웃어 주었지만, 내가 웃는 건 웃는게 아니었다.
이렇게 서툰 아빠를 보고 웃어주는 아들 녀석이 고맙다.
저작자 표시
Posted by erratum
어제 출근길에 여의나루역에서 나와 보니 눈 앞에 새하얀 벚꽃들이 펼쳐졌다.
아직 만개하진 않았지만, 이 쌀쌀한 날씨에 기특하게도 자신들의 소임을 잊지 않고 있었다.
이번 주말이나 다음 주초 정도면 벚꽃들이 절정을 맞이하지 않을까 싶다.
다급한 마음에 휴대폰 카메라로 담긴 했는데, 그 화사함과 포근함이 잘 표현이 안 된 것 같다.
아쉽지만... 봄은 봄이다.


저작자 표시
Posted by erratum
Unix나 Linux와 같은 OS에서는 파일 내 문자열 찾는 유틸리티라면 누구나 grep을 떠올린다.
광활한 file system에서 내가 원하는 문자열을 포함하고 있는 파일을 찾는 것이 생각보다 더욱 빈번하고 중요한 일인 경우가 많다.
특히, 프로그래밍을 하는 경우는 더욱 더 그 쓰임새가 요긴하다.
윈도우에서는 기본 shell인 explorer에서 파일 찾기에 대한 기능이 grep에 비해서 약하다는 생각이 든다. 바스타부터 검색 기능을 강화했다고는 하지만, 파일을 찾는 것이 아닌, 파일 내 문자열을 찾는 것은 아직 만족할만한 수준은 아닌 것 같다. 물론 grep도 하나의 유틸리티이지만, 워낙 널리 쓰이고, 기본적으로 OS에 포함되어 있다보니, OS의 일부라고 해도 과언이 아니다.
grep과 비슷한 수준의 파일 탐색 기능을 윈도우에서도 사용할 수 있는 방법이 있다.
윈도우 비스타부터 포함되기 시작한 powershell은 그 전의 command 프로그램에서 더욱 더 Unix의 shell과 비슷한 모양과 기능을 가지는 shell이다. shell에서 실행되는 명령어를 cmdlet이라는 용어로 부르는데,  ls와 같은 Unix 명령어도 alias 형태를 통해서 제공한다.
'get-command' 명령어를 통해서 powershell에서 사용할 수 있는 cmdlet, function, alias를 쭉 볼 수 있다.
어떤 명령어에 대해서 알고 싶으면, 'get-help <알고 싶은 명령어>'와 같은 형태로 실행시키면 된다. 그러면 예제, 자세한 설명, 기술적인 설명까지 많은 설명이 나온다. 물론 한글화도 잘 되어 있다.
파일 내에서 문자열을 찾는 것은 get-childitemselect-string 두 가지 명령어를 조합하여 만든다.
일단,  get-childitem은 어떤 대상의 자식 아이템을 보여준다. 즉, ls와 같은 명령어다. get-childitem을 사용해서 내가 원하는 파일들을 열거한다. 이렇게 열거된 파일들 중에서 select-string을 사용해서 내가 찾고자 하는 문자열이 있는지 확인한다. 다시 말하면, get-childitem의 출력이 select-string의 입력이 되는 것이다.

예) c:\project1\src\와 그 하위 폴더에 있는 cpp 파일들 중에서 m_nCount라는 변수가 쓰인 곳을 모두 찾고 싶을 때.
PS C:\> get-childitem project1\src -recurse | select-string -pattern m_nCount -include *.cpp

다음은 MS의 powershell 블러그에 있는 select-string 기능에 대한 이야기이다. 맨 위에 Unix의 grep에 대한 언급이 되어 있다.
http://blogs.msdn.com/powershell/archive/2008/03/23/select-string-and-grep.aspx
저작자 표시
Posted by erratum
3월인데 많은 눈이 내렸다.
눈이 쌓인 여의도 공원...
핸드폰으로 찍어서 화질은 별루네.







저작자 표시
Posted by erratum