kpartx, create device mappings for partitions

Clip to Evernote

블로그가 이사를 갔어요!

죄송합니다! 대부분의 글을 유지하고는 있으나 일부는 유지하지 못했습니다!
10초 이내에 새로 옮겨진 페이지로 이동할 겁니다.
원하시는 글이 아니면 전체 목록을 확인해주세요!
소용환의 생각저장소 / 아카이브

재밌는 프로그램이네. 예전에는 통짜 Disk Image를 loopback으로 마운트하기 위해 partition 시작 위치 찾고 어쩌고... 그랬었던 기억인데, 이 물건이 그런 문제를 참 쉽게 풀어준다. 어디서 얼마나 호환되는지 시험은 안해봤지만, 간단한 시험에는 성공. 괜찮네.

Kpartx can be used to set up device mappings for the partitions of any
partitioned block device. It is part of the Linux multipath-tools.

쓸 일이 있어서 간단히 시험해봤는데,

$ sudo kpartx -v -a sdb.img
add map loop0p1 (252:1): 0 7856128 linear /dev/loop0 8192
$ sudo mount -o ro /dev/mapper/loop0p1 /mnt
$

잘 동작한다. 애용해야겠다.

rdesktop과 ClearType

Clip to Evernote

블로그가 이사를 갔어요!

죄송합니다! 대부분의 글을 유지하고는 있으나 일부는 유지하지 못했습니다!
10초 이내에 새로 옮겨진 페이지로 이동할 겁니다.
원하시는 글이 아니면 전체 목록을 확인해주세요!
소용환의 생각저장소 / 아카이브

요즘 회사에서는 업무 환경에 VDI를 구축하겠다고 난리다. 뭐 난리는 아니겠지만 그냥 그렇게 표현했다. 오늘은 POC를 한다고 VMware View Client를 설치하라고... 주문이 들어왔는데... POC 사이트에 접속을 했건만, 이건 무슨 90년대식 깨진 글꼴? 그래서 잠깐 이것 저것 시도를 해봤다.

1. VMware View Open Client

꽤 오래 전에 공개되었던 VMware View Client의 오픈소스 버전을 찾아서 Google Code에 방문, 프로젝트 사이트에서 최근의 버전을 다운받아 설치했다.
(http://code.google.com/p/vmware-view-open-client/)

amd64용 deb 패키지를 받았더니 Ubuntu에서 무리 없이 설치가 되었고, "프로그램-인터넷-VMware View Open Client" 메뉴를 이용하여 화면을 볼 수 있었다.

그런데 이게 무슨 꼴? 글씨가 삐뚤 빼뚤... 확~ 창을 닫을려다가 잠깐 IP와 접속 정보(Domain과 계정명)만 확인하고는 다음 시도에 들어갔다.

2. tsclient... "프로그램-인터넷-터미널 서버 클라이언트"

우분투에는 메뉴에 "터미널 서버 클라이언트"라는 제목으로 뜨는 프로그램이 있다. 아마도 rdesktop의 프론트엔드겠지. 이 녀석을 이용하여 다시 시도했다. 프로토콜에서 RDP 버전을 5로 설정하고 앞서 확인한 VM의 IP와 계정을 이용해서 접속. 그런데...

  1. 바탕화면 글꼴은 ClearType 적용이 잘 되어 있다.
  2. 그런데 바탕화면 배경 이미지는 없네...
  3. IE 브라우져의 URL 창은 ClearType이 적용된데 반해, Tab은 깨져 보인다. 뭐지? :-(

3. 다시 rdesktop, 손으로.

웹을 좀 뒤져봤더니, -x 옵션을 이용하여 좀 세세한 설정을 할 수 있었다. 그래서,

$ rdesktop -u xxx -p xxx -d xxx -g 1360x768 -x 0x80 10.10.10.10

이렇게, ... 그랬더니...

  1. 이제 ClearType도 완전해졌고(IE Tab 포함)
  2. 바탕화면도 보인다. ㅋ

그냥 -x 옵션을 기록으로 남기기 위해 좀 끄적였는데... 갑자기 예전에 s3c6400 기반 800x480 화면의 디바이스에 rdesktop 포팅하던 기억이 새록 새록 떠오르네... 그게 값이 쌀지는 모르겠으나... VDI라고 한다면 그렇게 가야 하지 않을까... :-)

Apache+JSP 환경에서 쫌 동적인 ErrorDocument

Clip to Evernote

블로그가 이사를 갔어요!

죄송합니다! 대부분의 글을 유지하고는 있으나 일부는 유지하지 못했습니다!
10초 이내에 새로 옮겨진 페이지로 이동할 겁니다.
원하시는 글이 아니면 전체 목록을 확인해주세요!
소용환의 생각저장소 / 아카이브

이번 글은 좀 색다른 주제다. Apache+JSP 환경에서 동적인 ErrorDocument 작성하기. 웹 관련 개발은 놓은 지가 오래인 데다가... JSP라고는 눈꼽만큼도 해본 적이 없으면서, 그리고 근래에는 Cloud Computing, Android 얘기만 하다가 참 어색하기까지 하네...

요즘 보안관도 아니면서 보안과 관련된 업무를 조금 보다보니, 웹에 불접적으로 접근하는 녀석을 어떻게 잡아낼지가 관심사 중 하나다. 그래서 웹 담당자에게 부탁하기를,

"웹사이트에 누군가 공격을 하려다보면 찔러보는 초기에 404 에러가 발생할거다. 그거 잡아서 로그로 남겨주든지, 실시간으로 mail이나 SMS를 발송해줘라..."

했더니만, 못한다고... 간단히 답을 해버려서 조금 실망. 그래서, 직접 해보기로 했다. (오지랍이긴 하네...)

그래서, 정적인 ErrorDocument를 동적으로 처리하면서, 오류 상황에 대한 리포트를 남기도록 뭔가 해봤다. Android Programming을 시작하면서 Java와 친하지 않았던 것을 쪼금 후회하는 터인데... 어쨌든 서버 환경은 JBoss를 쓰고 있다.

...
out.println("request.getRequestURL() : " + request.getRequestURL() + "<br/>");
out.println("request.getRemoteAddr() : " + request.getRemoteAddr() + "<br/>");
...

요렇게 해봤는데, 허걱! 이게 어인 일? 분명 request.getRequestURL()을 호출하면 오류가 발생한 그 URL을 돌려줄 것이라고 생각했는데 이게 ErrorDocument로 지정된 Handler의 URL만 냅다 돌려주는 황당한 상황 발생.

"그럼 어떤 URL로 공격이 들어왔는지 알 수가 없잖아..."

휴~ 정말 많이 뒤졌다. 계속되는 야근에 피곤해 죽겠는데... 이 지랄같은 성격때문에 그냥 포기할 수가 없다.

결론은 이렇다.

1. Apache 설정

단순하다. 익히 들어 알고 있는 다음의 설정이면 충분하다.

ErrorDocument 404 /error_handler.jsp

요렇게 설정해주면, Apache는 404 오류가 발생했을 때, 지정한 URL로 Redirection을 발생시킨다. 그리고 Redirection 관련 정보를 환경변수로 넘겨주는데, 그 변수 이름은 REDIRECT_URL 등과 같다. 이거 말고도 몇개가 더 있는데, 내겐 이거면 충분할 듯.
(자세한 것은 여기에... http://httpd.apache.org/docs/2.2/custom-error.html )

2. mod_jk 설정

이 부분을 몰라서 충분할 만큼 헤맸는데, 요 부분을 모르던 상황에서는 Apache에서 아무리 환경변수를 설정해줘도, 아무리 다양한 방식으로 JSP 내에서 그것을 읽으려고 노력해도 읽을 수 없었다. 결국, 검색 키워드를 조정하고, 또 고쳐보다 보니... 이 글을 찾았다.
(이거. http://forums.devshed.com/showpost.php?p=225739&postcount=8 )

mod_jk.conf 등과 같은 파일에서...

...
JkEnvVar REDIRECT_URL ""
JkEnvVar REDIRECT_REMOTE_HOST ""
JkEnvVar REDIRECT_PATH ""
...

요렇게, mod_jk 설정에서... JkEnvVar 라는 것을 설정해줘야... 환경변수가 넘어간다고 한다. 하긴... 지금 생각해보니 이게 정말 환경변수라면... httpd에서 설정한 것을 java VM에서 그냥 읽어질리는 없지...

ㅋㅋ 이제야 이해한다는 듯이 말하고는 있지만... 정말 몇 시간동안 짜증이...

3. Error Hander 작성

이제, JSP 코드 내에서, 다음과 같은 방식으로 내게 필요한 환경변수를 읽어올 수 있다.

String redir_url = request.getAttribute("REDIRECT_URL");

이걸 몰라서... 헤매도 너무 헤맸네!

조금 더 시험해서, 명확하게 공격의 흔적을 잡아내게 되면 iptables 명령을 이용하여 Host-IDS를 구성해볼까 한다.

침입자들 이제 딱걸렸어!


CloudFoundry, Getting Started

Clip to Evernote

블로그가 이사를 갔어요!

죄송합니다! 대부분의 글을 유지하고는 있으나 일부는 유지하지 못했습니다!
10초 이내에 새로 옮겨진 페이지로 이동할 겁니다.
원하시는 글이 아니면 전체 목록을 확인해주세요!
소용환의 생각저장소 / 아카이브

CloudFoundry 맛보기. 이 정도로 사실, 맛을 볼 수는 없겠으나 일단 시간과 능력의 부족으로 Getting Started Guide를 따라해보는 수준으로 정리, 간만에 신세계 구경도 하고 짧게 나마 포스팅도 한다.

먼저, http://www.cloudfoundry.com 에서 계정 신청을 해야하는데, 몇일 전에 CloudFoundry와 Ubuntu와의 뭔가 끈끈한 관계에 대한 글을 읽고 자극을 받아서 한 번 신청해봤는데, 오늘 메일함을 보니 계정 생성 메일이 와있었다. (초대형식으로 가입된다는 이야기)

1. 준비하기

특이한 점이, 웹 인터페이스가 없는 것 같다. 비슷한 서비스인 heroku(http://www.keroku.com) 의 경우에는 기본적인 정보 열람 등이 가능한 웹 인터페이스가 있는데, CloudFoundry는 그게 없다. 아마도 현재는 Beta 상태이므로 상용 서비스가 시작되는 시점에는 뭔가 포털이 생기지 않을까? 아무튼, command line 모드 클라이언트인 vmc를 설치해야 한다.

vmc는 ruby gem 형태로 배포되는데, 다음과 같이 설치가 가능하다. (물론 리눅스 이야기, 그리고 ruby 설치 등은 생략)

sio4@silver:~$ gem install --user-install --no-rdoc --no-ri vmc
Successfully installed json_pure-1.5.3
Successfully installed rubyzip2-2.0.1
Successfully installed highline-1.6.2
Successfully installed terminal-table-1.4.2
Successfully installed vmc-0.3.12
5 gems installed
sio4@silver:~$


2. 시작하기

이제 CloudFoundry에 로그인을 해야한다. 그런데 특이한 점은 CloudFoundry의 독특한 성격. 즉, 배포와 사용이 가능한 "Open PaaS"라는 점 때문에 어디로 로그인할 것인지 "target"을 정하는 과정이 있다는 점이 특이하다.

sio4@silver:~$ vmc target api.cloudfoundry.com
Succesfully targeted to [http://api.cloudfoundry.com]

sio4@silver:~$ vmc login
Email: xxxxxxxx@xxxxxxxx.com
Password: ****************
Successfully logged into [http://api.cloudfoundry.com]

sio4@silver:~$ vmc passwd
Changing password for 'xxxxxxxx@xxxxxxxx.com'
New Password: *********
Verify Password: *********

Successfully changed password

sio4@silver:~$

첫번째 로그인이라서 암호도 바꿔줬다. (가입 완료 메일에 임시 비번이 딸려온다.)


3. 개발하기

이제 간단하게 어플리케이션을 하나 개발(?)해볼 차례.

sio4@silver:~$ mkdir app_name
sio4@silver:~$ cd app_name/
sio4@silver:~/app_name$ cat > app_name.rb << EOF
> require 'sinatra'
> get '/' do
>   "Placeholder"
> end
> EOF
sio4@silver:~/app_name$ vmc push
Would you like to deploy from the current directory? [Yn]:
Application Name: app_name
Application Deployed URL: 'app_name.cloudfoundry.com'?
Detected a Sinatra Application, is this correct? [Yn]:
Memory Reservation [Default:128M] (64M, 128M, 256M, 512M, 1G or 2G)
Creating Application: OK
Would you like to bind any services to 'app_name'? [yN]:
Uploading Application:
  Checking for available resources: OK
  Packing application: OK
  Uploading (0K): OK
Push Status: OK
Staging Application: OK
Starting Application: OK

sio4@silver:~/app_name$

크핫! 이제 http://app_name.cloudfoundry.com 에 접속해보면, 짜잔~ 한 줄 뜬다. :-( 어쨌든 정상 작동!


이야~~~ 멋지지 않아? "준비하시고~", "시~", "작!" 하면 딱 뜨는데... 왜 클라우드를 안써? 아니, 왜 가상화만 생각해? 이게 궁극의 클라우드 아닌감? 게다가 CloudFoundry의 멋진 "Open PaaS" 정책은 (자세히 살펴보지는 않았지만) 데이터 유출의 걱정도 없이 Private PaaS의 구축을 쉽게 해줄 것 같은 느낌. 이거 좀 파봐야겠는데...

아하... 이럴 땐 여건에게 핑계를!!


참고로, 정보 보기

sio4@silver:~$ vmc info

VMware's Cloud Application Platform
For support visit http://support.cloudfoundry.com

Target:   http://api.cloudfoundry.com (v0.999)
Client:   v0.3.12

User:     xxxxxxxx@xxxxxxxx.com
Usage:    Memory   (128.0M of 2.0G total)
          Services (0 of 16 total)
          Apps     (1 of 20 total)

sio4@silver:~$

앱 스무개라... 음... 좋네~ ㅋ

GMail의 분실사고! 그리고 자료 해방!

Clip to Evernote

블로그가 이사를 갔어요!

죄송합니다! 대부분의 글을 유지하고는 있으나 일부는 유지하지 못했습니다!
10초 이내에 새로 옮겨진 페이지로 이동할 겁니다.
원하시는 글이 아니면 전체 목록을 확인해주세요!
소용환의 생각저장소 / 아카이브

막강 Google이 운영하는 웹메일 서비스인 GMail에서 일부(0.02%인가 0.08% 인가 그러던데, 따지고보면 엄청난 인구다!) 사용자의 주소록, 채팅 기록 등이 사라지는 사건이 있었다고 한다. Tape 백업도 있고 IDC 복제본도 있고 하여 복구가 가능하다고는 하지만, 혹시라도 그 데이터중 일부라도 사라지면... 어쩌나?

클라우드 컴퓨팅. 즉, 내가 인터넷 상의 자원을 쓰려면... 쓴다는게, 잠깐 써본다, 경험한다가 아니라 말 그대로 "쓴다"라고 표현할 수 있으려면 안정성, 지속성, 신뢰성은 기본! 그렇다면 신뢰성은 누가 보장하는가? 특히, 요즘처럼 무료 서비스 시대에 혹은 유료라 하더라도 내 자료의 가치는? 자료 유실에 따른 보상 한도는?

결국, 최소한의 사용자 백업이 가능한 길은 열려있어야 한다! 자신들이 완벽하지 않다면! 메일이라면 Forwarding 기능을 이용한 복제도 방법일 수 있고, Blog 등의 자료 기반의 서비스라면 백업 기능(그것이 내려받기든, AWS S3에 복제하는 방식처럼 서비스를 이용하는 것이든)이 제공되어야 하지 않을까?

클라우드 컴퓨팅의 조건, 자유!

예전에 이 문제와 관련된 소식을 적은 적이 있었는데... 요즘 그들은 어떻게 지내나? ㅎㅎ 궁금한 것 천지, 알고싶은 것 천지, 그러나 알 수 없는 것 천지!