얼마전 Pure-FTPd를 설정 하다 TLS설정을 안했을 경우 네트워크 상에 어떤 패킷들이 돌아 다니는지 굼금하여 Wireshark로 패킷을 수집했었다. 어느정도 예상은 했었지만 TLS설정이 안된 상태에서 FTP에 접속했을 경우 로그인 요청 메시지에 들어 있는 비밀번호가 암호화 안된 상태로 전송되는것을 보고 바로 TLS옵션을 켰고 현재는 FTP 접속시에 되도록이면 보안 접속을 이용하려고 노력중이다.
이런 이유로 보안에 관심을 가지다 보니 HTTP상에서 동작하는 trac이 눈에 거슬린다. 거의 모든 개인 자료들이 subversion 저장소에 들어 있는 상황에서 이 사이트가 해킹이라도 당하면 이제까지 모아두었던 자료들이 순식간에 날아가는 것은 물론이고 같은 비밀번호를 사용하는 여러 사이트(대부분 돈과 관련된 사이트나, 사생활과 밀접히 관련되어 있는 사이트)들 역시 안전하지 않기 때문에 전송시 데이터가 암호화 되는 mod_ssl을 이용해야 겠다는 생각에 곧바로 작업에 들어갔다. 어렵지 않게 mod_ssl 설정은 마쳤지만 이전 주소로 접속 했을 경우 새로운 주소로 리다이렉션 시키기 위해 .htaccess 파일을 만지는 부분이 막혀 몇시간 삽질을 하게 되었다 하지만 만족할 만한 결과를 얻었으니 O.K.
서버로 사용하는 리눅스 박스의 문자셋이 UTF-8로 설정되어 있는 상황에서 시스템의 문자셋이 UTF-8이 아닌 MS Windows에서 리눅스 박스의 FTP 서버에 접속했을 경우 UTF-8로 되어 있는 한글 파일이름이 깨져 나오거나 아예 보이지 않는 현상이 발생한다. 나의 경우 FTP Client를 서버의 문자셋을 따로 설정할 수 있는 FileZilla를 사용하기 때문에 상관 없지만 MS IE나 서버의 문자셋을 설정할 수 없는 여타 다른 FTP Client로 FTP 서버에 접속하였을 경우 UTF-8로된 한글 파일이름이 깨어지게 되고 MS IE에서 업로드한 한글 파일 이름 역시 리눅스 박스에서 깨져나오게 된다.
이러한 이유로 서버단에서 문자셋을 변경해 줄수 있는 FTP 데몬을 찾고 있었는데 구글님의 도움으로 Pure-FTPd가 RFC2640을 지원기 때문에 서버와 클라이언트의 문자셋이 다를 경우 서버에서 문자셋을 바꿔주는 기능이 있다는 사실을 알게 되었다.
Pure-FTPd를 설치 하고 서버의 문자셋을 UTF-8로 클라이언트의 문자셋을 CP949(EUC-KR)로 설정하니 원했던되로 MS IE에서도 한글을 훌륭하게 표현된다.
우분투 박스에서 Pure-FTPd를 설치하고 설정하는 방법을 간단하게 적는다.
우선 Pure-FTPd를 설치한다.
sudo apt-get install pure-ftpd
다른 FTP Client와는 다르게 Pure-FTPd 데몬 실행 옵션으로 FTP 데몬을 설정할 수 있게 되어 있다. Ubuntu에서는 /etc/pure-ftpd/conf 디렉터리에 실행시 적용할 옵션의 이름과 같은 파일을 만들고 그 파일에 해당 옵션에 주어야할 값이나 해당 옵션이 on/ff의 기능을 하는 경우 파일에 yes/no를 적어 주면 데몬 실행 wrapper에서 conf 디렉터리에 있는 파일들을 읽어 옵션을 적용하여 데몬을 실행하게 된다. 실행시 사용할 수 있는 옵션은 --help 옵션으로 알 수 있다.
pure-ftpd --help
익명 FTP를 사용하고 싶지 않다면 --noanonymous (-E) 옵션을 사용하면 되는데 /etc/pure-ftpd/conf 디렉터리에 NoAnonymous 파일을 만들고 이 파일에 yes를 적어 주면 실행시에 이 옵션을 적용된다. 만드는 파일의 이름은 첫글자는 대문자 다른 글자는 소문자, 여러 단어가 합쳐져 있을 경우는 각단어의 시작을 대문자로, 옵션의 이름이 약어일 경우 모두 대문자로 만들어 주면 된다.
몇가지 예를 들어 보면 로그 파일의 위치를 지정하는 altlog 옵션의 경우 AltLog, 시스템 계정 사용자의 인증을 허용하는 옵션인 unixauthentication 옵션의 경우 UnixAuthentication, 보안을 위해 TCL/SSL을 활성화 하는 옵션인 tls 옵션의 경우 약자이므로 TLS 파일을 만들어 주면 된다.
앞에서도 설명했지만 파일안의 내용은 옵션이 on/off 기능을 담당하는 경우 yes/no를 옵션이 특정 값을 요구하는 경우는 해당 값을 적어 주면 된다.
다음은 설치시 기본적으로 적용되는 옵션외에 문자셋 변환을 위한 옵션 (FsCharset, ClientCharset), FTP 로깅시 호스트 이름 대신 IP를 로깅하게 하게 하는 옵션 (DontResolve), MS IE 등 일부 FTP Client와 의 호환을 위해 일부 표준을 무시하는옵션(BrokenClientsCompatibility, MS IE로 접속했을때 주소창에 ID@example.com와 같이 ID를 넣지 않고 ftp 서버의 주소만 넣을 경우 익명 FTP 로 접속되는데 익명 FTP로 접속하지 않고 ID/PW를 물어 보는 창을 표시하고 싶을 때 사용.)들을 적용하는 예다.
echo "utf8" | sudo tee /etc/pure-ftpd/conf/FsCharset echo "cp949" | sudo tee /etc/pure-ftpd/conf/ClientCharset echo "yes" | sudo tee /etc/pure-ftpd/conf/BrokenClientsCompatibility echo "yes" | sudo tee /etc/pure-ftpd/conf/DontResolve
적용후 데몬으로 재시작 하면 해당 옵션이 적용되어 데몬이 시작되는 것을 볼 수 있다.
sudo /etc/init.d/pure-ftpd restart
한가지 아쉬운 점이라면 이런 옵션을 특정 사용자나 특정 디렉터리에만 적용하는 방법을 찾을 수 없었다는 것이다.
6.10 (Edgy Eft)이 설치 되어 있던 서버를 7.04로 업데이트 하는 과정에서 MySQL과 PHP가 MySQL5, PHP4로 업데이트 되었다. MySQL의 경우 문제 없이 동작했지만 PHP의 경우 PHP5로 업데이트 됨으로 인해 발생한 에러로 페이지를 표시하지 못하는 문제가 발생하였다. 하는 수 없이 PHP4로 다운 그레이드를 시도 했지만 PHP4 패키지가 LEFT되어 설치 되지가 않는다.
$ sudo apt-get install php4 Reading package lists... Done Building dependency tree Reading state information... Done Package php4 is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source E: Package php4 has no installation candidate
구글링해본 결과 데비안 미러 사이트(링크는 KAIST 미러)에서 다음 패키지를 받아 설치 하면 된다고 한다.
Nvidia 그래픽 카드를 사용하여 Dual Head를 구성하는 방법에는 TwinView를 이용하는 방법과 Xinerama를 이용하는 방법이 있다. TwinView는 하나의 CPU(그래픽 코어)를 이용하는 그래픽 카드를 이용해 여러 모니터를 지원하게 하기 위해 개발된 방법이다. 이와는 달리 Xinerama는 DEC에에서 PanoramiX라는 이름으로 개발되어 X window 시스템에 통합되었다. TwinView가 Nvidia 칩셋을 사용하는 그래픽 카드에서만 사용되는 것에 반해 Xinerama는 일반적으로 사용되는 거의 모든 그래픽카드를 지원한다. 여기서는 Xinerama를 이용하여 Dual Head를 구성하는 방법에 대하여 설명할 것이다.
1. Installing Nvidia Driver 먼저 자신의 우분투박스에 설치된 커널의 아키텍쳐를 알아낸 후 최신 kernel image, headers와 restricted modules을 설치 한다.
X server를 재시작하여 Nvidia드라이버를 적용시킨다.(Ctrl + Alt + Backspace키를 누르면 X server가 새로운 설정파일을 읽어 재시작된다.)
2. Configure Dual Head with Xinerama 드라이버 설치를 마쳤으면 Dual Head를 구성하여 보자. Xinerama를 이용하여 Dual Head를 구성하기 위해서는 /etc/X11/xorg.conf파일에 Screen, Monitor, Device Section을 하나씩 추가 해주면 된다. 다음과 같이 추가 한다.
Nvidia Driver를 설치 하면 first display가 DVI가 아니라 D-SUB으로 설정된다. DVI를 first display로 바꾸기 위해서는 Device 색션에 UseDisplayDevice 옵션을 추가 하여 해당 디바이스가 사용할 출력포트를 선택하도록한다. DFP는 DVI포트를 의미하고 CRT는 D-SUB 포트를 의미한다. 그래픽 카드의 두 포트 모두 D-SUB이나 DVI 포트를 사용한다면 DFP-0, DFP-1이나 CRT-0, CRT-1로 구분한다.
실험실에 문서 작업, 웹 서핑에 사용하는 Windows XP가 깔린 피씨와 서버및 개발에 사용하는 Ubuntu box가 있다. 당연히 키보드도 2개 마우스도 2개이다 보니 어떻게 정리를 해도 책상이 어지러울수 밖에 없고 컴퓨터를 옯겨 다니면서 작업하기도 여간 귀찮은 것이 아니다. 그래서 괜찮은 KVM을 찾기 위해 KLDP에 질문을 올렸었는데 어떤 분이 시너지라는 소프트웨어를 알려 주었다.
그 후, 이런 저런 일때문에 신경을 쓰지 못하고 있었는데 왠지 오늘따라 키보드와 마우스를 옮겨 다니는게 불현하게 느껴지는 것이다. 그래서 이전 기억을 더듬어 시너지라는 프로그램을 설치하고 사용해보니 꽤 괜찮은 프로그램인 것 같다. 설치 과정과 설정 과정등은 아래 링크에 자세히 다루고 있으니 따로 설명하지 않겠다.
그런데 이놈이 불규칙 적으로 접속이 되지 않다가 시간이 지나면 다시 접속이 되는 현상이 자주 발생한다. 처음에는 IP충돌이 나서 그러나 했지만 시간이 지나도 계속 그러는 것이다. 그래서 로그를 봤더니 다음과 같은 로그가 남아 있다.
e1000: eth0: e1000_watchdog: NIC Link is Down e1000: eth0: e1000_watchdog: NIC Link is Up 100 Mbps Full Duplex e1000: eth0: e1000_watchdog: 10/100 speed: disabling TSO
그래서 해당 로그로 검색을 해보니 GbE에서 사용하는 TCP Segmentation Offload과 관련된 문제라는데 문제의 TSO를 disable해도 해결이 안되되어 acpi를 끄니 문제가 해결 되었단다. (검색해서 찾은 글에 트랙백을 보내려고 했더니 트랙백을 보낼 수 없습니다. 라는 오류가 나서 해당글을 링크한다. http://blog.lunatine.net/lunatine/entry/리눅스-e1000-드라이버-오류)
혹시나 하는 마음에 TSO만 disable 시키고 상태를 보니 해당 여전히 간헐적으로 인터넷이 안되는 현상이 발생하여 acpi를 끄려고 했더니 acpi를 off하면 하이퍼 스래딩 기능이 꺼진다는 것이다. 사실 우분투를 처음 설치한후 하이퍼 스래딩 기능을 활성화 시키지 않았을 경우 기본적으로 하이퍼 스래딩 기능이 꺼져 있지만 하이퍼 스래딩 기능을 활성화 시켜 사용하는 경우에는 찝찝할 수 밖에 없다.
그럼 그럴 경우에는 어떻게 하느냐?
커널 옵션에 acpi=off 옵션을 주지 말고 acpi=ht 옵션을 주도록 하자.
시스템을 재시작 한 후 하이퍼 스래딩 기능이 활성화 되어 있는지 확인 하기 위해 /proc/cpuinfo 의 flags에 ht 가있는지 확인하자.
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pni monitor ds_cpl est tm2 cid cx16 xtpr