메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

포트 컬렉션 둘러보기

한빛미디어

|

2002-04-22

|

by HANBIT

8,535

저자: 드루 라빈, 역 서성용

만약 필자의 기사를 정기적으로 보는 사람이라면 필자가 FreeBSD 포트 컬렉션의 열렬한 팬이라는 것을 이미 알고 있을 것이다. 그것은 6000개가 넘는 애플리케이션을 단순히 "make install"로 즉시 사용할 수 있게 한다는 사실만으로도 필자를 충분히 놀라게 하니 말이다. 이 기사에서는 최근 여섯달 동안 필자가 발견한 포트를 여러분들과 함께 공유하려고 한다.

여기서 여러분이 유의해야 할 점은 이러한 포트의 어떤 것이라도 직접 구축하고 싶다면 FreeBSD 시스템에 /usr/ports 디렉토리가 있는지부터 확인하라는 것이다. 만약 이 디렉토리가 없다면 www.freebsd.org/ports에 가서 "Download a gzip"d tar file of all ports"라고 써있는 링크를 클릭해라. 파일 다운로드가 끝나면 수퍼유저가 되어 다음과 같이 그 파일을 untar하면 된다.
su
Password:
mv ports.tar.gz /usr
cd /usr
tar xzvf ports.tar.gz
이 과정은 포트 디렉토리를 비롯한 모든 서브디렉토리를 생성할 것이다. 실제로 포트를 구축하기 위해서는 수퍼유저의 상태에서 cd로 목표로 하는 디렉토리에 간 다음, 인터넷에 접속된 상태에서 make install clean을 친다. 작업이 끝나면 수퍼유저 계정을 나와서 새로운 애플리케이션을 시험해보wk. 만약 C 셸을 사용하고 있다면 rehash를 입력하여 새롭게 설치된 애플리케이션이 경로 안에 있도록 해야 할 지도 모른다.

한권으로 끝내는 유닉스
포트들을 구축할 시간이 있을 때마다 필자는 항상 /usr/ports/net 디렉토리에서 구축을 시작하는 것 같다. 필자의 집에는 다양한 운영체제를 사용하는 소규모의 LAN이 있고 필자도 항상 내가 가지고 있는 컴퓨터들로 시험해 볼만한 새로운 것들을 찾고 있다. 또한 필자는 보안을 위해 각각의 운영체제를 강화하는 것에 관심이 많기 때문에 특히 nat의 설명이 눈에 띄었다.

"보안이 중요한 환경에서 정보를 수집하고 잘못된 설정을 확인하기 위해 사용되는 SMB/CIFS 서버와 파일 공유 감사용 도구"

만약 이 포트를 구축하기로 결정했다면 당신이 포트를 구축하기로 한 컴퓨터 소유자로부터 명시적인 서류상의 허가를 갖고 있지 않는 한 다른 사람의 컴퓨터를 감사할 수 없다는 사실을 기억해 두어야 한다.

최근에 필자는 LAN에 MS 운영체제를 설치했으므로 필요한 패치를 적용하기 전에 과연 어떤 정보를 보여줄지 궁금했다. 그래서 nat 포트를 설치한 후, 일반 사용자가 되어 이것을 다음과 같이 실행했다. 10.0.0.2는 LAN에 있는 MS 컴퓨터의 IP 주소이다.
cd /usr/local/share/nat
nat -u userlist.txt -p passlist.txt 10.0.0.2
[*] NAT - NetBIOS Auditing Tool v2.0
    Copyright 1996, 1997, 1998, Secure Networks Inc.
[*] Host 10.0.0.2 (unknown) checked on Sat Jan 19 10:28:31 2002
[*] Trying to connect with "*SMBSERVER"
[*] Connected with NetBIOS name *SMBSERVER
[*] Dialect selected: NT LM 0.12
[*] Server has share level security enabled
[*] Server supports password encryption
[*] Remote server"s workgroup: WORKGROUP
[*] Logging in as "" with password ""
[*] Able to login as user "" with password ""
[*] Server Operating System: Windows 5.0
[*] Lan Manager Software   : Windows 2000 LAN Manager
[*] Machine has a browse list
  NOVATECH
      - NetBIOS OS Version 5.0
      - Master browser
      - System is Windows NT
[*] Unable to list shares as "" user
[*] Guessing passwords
[*] Trying to login as user "ADMINISTRATOR" with password "ADMINISTRATOR"
[*] Trying to login as user "ADMINISTRATOR" with password "ADMIN"
[*] Trying to login as user "ADMINISTRATOR" with password "PASSWORD"
[*] Trying to login as user "ADMINISTRATOR" with password "LOGON"
[*] Guessed: ADMINISTRATOR Password: PASSWORD
[*] Logging in as "ADMINISTRATOR" with password "PASSWORD"
[*] Able to login as user "ADMINISTRATOR" with password "PASSWORD"
[*] Workstation information
  Computer Name  : NOVATECH
  User Name      : 
  Work Group     : WORKGROUP
  Version        : 5.0
  Logon Domain   : 
  Other Domains  : 
[*] Able to list shares as "ADMINISTRATOR" user
  C$            DISK       Default share
  ADMIN$        DISK       Remote Admin
  IPC$          IPC        Remote IPC
[*] Verbose share information for C$
  Share Name   : C$
  Comment      : Default share
  Permissions  : 0 
  Max Uses     : 65535
  Current Uses : 0
  Shared Path  : C:\
[*] WARNING: Able to connect to \\*SMBSERVER\C$ as "ADMINISTRATOR" user
[*] WARNING: Able to WRITE to \\*SMBSERVER\C$
[*] Verbose share information for ADMIN$
  Share Name   : ADMIN$
  Comment      : Remote Admin
  Permissions  : 0 
  Max Uses     : 65535
  Current Uses : 0
  Shared Path  : C:\WINNT
[*] WARNING: Able to connect to \\*SMBSERVER\ADMIN$ as "ADMINISTRATOR" user
[*] WARNING: Able to WRITE to \\*SMBSERVER\ADMIN$
[*] Verbose share information for IPC$
  Share Name   : IPC$
  Comment      : Remote IPC
  Permissions  : 0 
  Max Uses     : 65535
  Current Uses : 1
  Shared Path  : 
[*] WARNING: Able to connect to \\*SMBSERVER\IPC$ as "ADMINISTRATOR" user
[*] Trying to get user information for *SMBSERVER
[*] Trying to get user information for NOVATECH$
[*] Trying to get user information for ADMINISTRATOR
[*] User Information for ADMINISTRATOR
  User          : Administrator
  Comment       : Built-in account for administering the computer/domain
  Comment       : 
  Full Name     : 
  Privilege     : 2 - User has ADMINISTRATOR privilege
  Auth Flags    : 0
  Password Age  : 4 minutes
  Home Directory: 
  Parameters    : 
  Last Logon    : Sat Jan 19 05:20:27 2002
  Last Logoff   : Never
  Bad Logons    : 0
  Total Logons  : 4
  Logon Server  : \\*
  Country code  : 0
  Workstations  : 
  Max storage   : Unlimited
  Code page     : 0
[*] Trying to get user information for GUEST
[*] User Information for GUEST
  User          : Guest
  Comment       : Built-in account for guest access to the computer/domain
  Comment       : 
  Full Name     : 
  Privilege     : 0 - User has GUEST privilege
  Auth Flags    : 0
  Password Age  : 0 minutes
  Home Directory: 
  Parameters    : 
  Last Logon    : Never
  Last Logoff   : Never
  Bad Logons    : 54
  Total Logons  : 0
  Logon Server  : \\*
  Country code  : 0
  Workstations  : 
  Max storage   : Unlimited
  Code page     : 0
[*] Trying to get user information for IUSR_*SMBSERVER
[*] Trying to get user information for *SMBSERVER$
우와.. 이 모든 정보가 순식간에 수집되었다. 그러고 보니 적절하게 강화되고 더군다나 방화벽으로 보호 받기 전에는 인터넷에 절대 연결되어서는 안되는 이유가 생각이 났다.

nat 유틸리티를 실행했을 때 내장된 패스워드와 사용자 목록을 참조했음을 알아두어야 한다. 그리고 집에 있는 LAN에 설치된 것으로 장난을 쳤을 뿐이지만, "password"라는 알기 쉬운 패스워드를 선택한 것만 보아도 필자가 게으름을 피웠다는 것을 알 수 있을 것이다.

이 유틸리티는 여러분이 제어하고 있는 컴퓨터들의 보안을 검사하는데 유용하게 사용될 것이다. 단지 네트워크에 만들어둔 사용자이름을 userlist.txt 파일에 추가하고 사용자들이 사용하지 않기를 바라는 알기 쉬운 패스워드를 passlist.txt 파일에 추가하라. 그리고 난 후 자신의 네트워크에서 실행하는 IP에 대항하는 유틸리티를 실행하고 출력 분석을 위해 파일로 리다이렉트해라. 필자는 특히 NT 컴퓨터를 강화할 때마다 이 유틸리티를 다시 실행해서 필자의 시도가 얼마나 성공적이었는지를 검사하려고 한다.

포트 컬렉션에서 대게 필자가 두 번째로 들르는 곳은 /usr/ports/sysutils 디렉토리로 거기에는 작지만 유용한 유틸리티들이 많이 있다. 이러한 유용한 유틸리티중의 하나는 symlinks 인데 시스템에 있는 모든 심벌릭 링크를 검색하고 확인한다. 이 유틸리티는 모든 스위치를 보여주는 짧고 작은 맨페이지와 함께 딸려온다. 필자는 시스템에 있는 모든 심벌릭 링크를 알아보기로 하고 수퍼유저가 되어 (그래야 모든 디렉토리를 스캔할 퍼미션을 얻음) 다음과 같이 유틸리티를 실행했다.
su
Password:
symlinks -vr /

relative: /dev/vga -> ttyv0
relative: /dev/mixer -> mixer0
relative: /dev/sequencer -> sequencer0
relative: /dev/dsp -> dsp0
relative: /dev/audio -> audio0
relative: /dev/dspW -> dspW0
relative: /dev/music -> music0
relative: /dev/pss -> pss0
relative: /dev/dsp0 -> dsp0.0
relative: /dev/audio0 -> audio0.0
relative: /dev/dspW0 -> dspW0.0
absolute: /dev/mouse -> /dev/sysmouse
other_fs: /dev/log -> /var/run/log
absolute: /dev/modem -> /dev/cuaa1
other_fs: /etc/termcap -> /usr/share/misc/termcap
other_fs: /etc/rmt -> /usr/sbin/rmt
relative: /etc/aliases -> mail/aliases
other_fs: /etc/apsfilter/basedir -> /usr/local/share/apsfilter
other_fs: /sys -> usr/src/sys
other_fs: /compat -> /usr/compat
other_fs: /home -> /usr/home
1초도 걸리지 않아서 시스템에 있는 모든 symlink가 출력되었다. 이와 같은 용도에는 아주 편리하게 사용될 수 있는 유틸리티이다.

"sysutils" 섹션에 있는 다른 편리한 유틸리티로는 pkg_tree가 있다. 이것은 시스템에 설치된 포트와 패키지 모두의 목록을 트리 구조로 출력해주므로 이것들의 의존성을 알 수 있다.

만약 두 세 개 이상의 패키지를 구축했다거나 Gnome이나 KDE같은 대규모 포트를 구축했다면 분명히 다음과 같이 페이지 단위로 보고 싶을 것이다.
pkg_tree | more
or
pkg_tree | less
단지 출력 예제를 보여주기 위한 용도로 실행결과 중 첫 번째 10줄만을 보여주겠다.
pkg_tree | head

Mesa-3.4.2_1
ORBit-0.5.8_1
|\__ pkgconfig-0.8.0
|\__ glib-1.2.10_4
|      \__ pkgconfig-0.8.0
 \__ gettext-0.10.35
OpenSSH-askpass-1.2.2.2001.02.24
aalib-1.2_2
acroread4-4.05
 \__ linux_base-6.1
"sysutils" 섹션에서 오늘 마지막으로 언급하려는 것은 fortunelock이다. 이것은 간단한 프로그램으로 짧고 작은 맨페이지와 함께 온다. 터미널을 떠나야 하는데 먼저 로그아웃부터 하고싶지 않다면 다음과 같이 입력하자.
fortunelock
위의 입력어는 패스워드를 물어보고 반복해서 입력할 것을 요구할 것이다. 일단 그렇게 하고 나면 돌아와서 패스워드를 재입력할 때까지 무작위로 fortunes를 반복할 것이다. 지나가는 사람들은 설령 여기에 접근하기 위한 패스워드를 알지 못하더라도 최소한 터미널때문에라도 즐거워할 것이다.

필자가 좋아하는 포트중의 하나는 /usr/ports/textproc 디렉토리에 있는 것으로 glimpse라고 한다. 필자의 홈디렉토리에는 기사들과 백서(whitepaper)들이 많이 흩어져 있으며 이 유틸리티는 텍스트에서 특정한 줄을 찾아내는데 필수적이다. 이는 데이터베이스를 생성한다는 점에서 볼 때 locate 유틸리티와 유사하다고 볼 수 있다. 이 데이터베이스로 인해 검색을 정말 빠르다. 거의 순식간에 검색된다고 할 수 있다.

glimpse를 처음으로 사용한다면 홈 디렉토리로 가서(여기서 필자는 여러분이 찾고자 하는 정보가 홈 디렉토리와 그 서브디렉토리 어딘가에 있다고 가정함) 다음과 같이 데이터베이스를 구축한다.
cd
glimpseindex -o 

This is glimpseindex version 4.12, 1999.
Indexing "/home/genisis" ...
Size of files being indexed = 6437564 B, Total #of files = 850
Index-directory: "/usr/home/genisis"
Glimpse-files created here:
-rw-------  1 genisis  wheel   35658 Jan 13 19:52 .glimpse_filenames
-rw-------  1 genisis  wheel    3400 Jan 13 19:52 .glimpse_filenames_index
-rw-------  1 genisis  wheel       0 Jan 13 19:51 .glimpse_filetimes
-rw-------  1 genisis  wheel  510659 Jan 13 19:52 .glimpse_index
-rw-------  1 genisis  wheel     863 Jan 13 19:52 .glimpse_messages
-rw-------  1 genisis  wheel  342572 Jan 13 19:52 .glimpse_partitions
-rw-------  1 genisis  wheel     130 Jan 13 19:52 .glimpse_statistics
-rw-------  1 genisis  wheel  262144 Jan 13 19:52 .glimpse_turbo
인덱싱은 수 분 동안 돌아갈 것인데 여기에 소요되는 시간은 홈 디렉토리가 얼마나 큰가에 따라 다르다. 홈 디렉토리에 ".glimpse"로 시작하는 숨겨진 파일들이 몇 개 생성된 것을 볼 수 있을 것이다. 일단 그 데이터베이스를 만들고 난 후 무엇인가를 찾아보아라. 예를 들어 필자는 "자동 응답(auto answer)"에 대한 모뎀 코드를 나에게 알려줄 파일이 어딘가에 있다는 것을 알고는 있지만, 어떤 파일인지는 정확하게 기억하지 못해서 다음과 같이 실행해 보았다.
glimpse "auto answer"

/home/genisis/unix:     no result codes (Q1), and auto answer (&S0=1).     Then write the
/home/genisis/unix:     at&s0=1     turn on auto answer
/home/genisis/unix에 있는 모뎀 코드를 찾았을 뿐 아니라 내가 찾던 모뎀 코드 일부를 리턴했기 때문에 전체 파일을 읽어볼 필요도 없다. 왜 이것이 내가 가장 좋아하는 유틸리티인지 이제 이해가 되는가?

glimpse의 맨페이지는 여러분이 어떻게 검색을 최적화할 수 있는가에 관한 몇 가지의 예제가 있다. 만약 이 유틸리티를 자주 이용하고 계속하여 홈 디렉토리에서 파일을 생성하고 삭제한다면, cron 작업으로 glimpseindex를 실행하는 것을 고려해야 할 지도 모르겠다. 필자는 아주 게으르기 때문에 찾으려는 것을 찾지 못할 때마다 glimpseindex를 다시 실행한다.

"textproc" 섹션에 있는 동안 dadadodo로 알려진 재미있는 유틸리티를 우연하게도 발견하게 되었다. 이 포트를 구축하겠다는 결정을 내리지 않더라도 홈페이지를 방문해 보자. 가볼 만한 가치가 충분히 있기 때문에 강력히 추천한다.

유틸리티를 실행하기 위해 다음과 같이 타이핑해 넣기만 하면 된다.
dadadodo name_of_a_file
필자는 저장된 이메일들, 특히 지루하고 지나치게 기술적인 것들로 훌륭한 입력 파일을 만들 수 있다는 사실을 발견했다. 이와 같은 유틸리티로 어떤 사람은 시인이나 점쟁이가 되기 위해 하루 일을 그만 둘 수도 있을 것이다.

"textproc" 섹션에서 마지막으로 구축한 정말 인상에 남는 포트가 있었는데 바로 gutenbook 포트였다. 구텐베르크 프로젝트를 처음 들어본다면 여기에서 확인해보기 바란다.

Gutenbook 프로젝트로 알려져 있는 개별적인 프로젝트는 Project Gutenberg에서 사용할 수 있는 etext에 접근하고 읽는 데 사용되는 사용하기 편리한 유틸리티이다.

일단 이 포트를 구축한 후, X 윈도우 세션에서 실행해보자. "Browse Gutenberg (L)ibrary" 버튼을 클릭한 후 몇 초를 기다리면, 사용할 수 있는 모든 etext 목록을 얻을 수 있을 것이다. 제목은 알파벳 순으로 되어있고 탭이 있기 때문에 관심있는 섹션으로 옮겨 갈 수 있다. 또는 "Search in Title/Author" 섹션을 사용하여 특정 etext를 검색하자. 관심있는 것을 발견하면 하이라이트 시키고 "Read Selected Etext"를 클릭한다. 이것을 다운받는 동안 몇 초만 기다리면 되다. "Local Copy" 칼럼 아래 zip 파일이 나타나면 끝난 것이다. 창을 닫으면 선택된 etext가 읽어 들여져서 읽을 수 있는 상태가 될 것이다. 단순하게 읽을 수 있을 뿐만 아니라 특정 페이지로 이동하거나 특정 문자열을 검색할 수도 있다. 예전에 보았던 진부한 방법으로 다시 책을 읽고싶지는 않을 것이다. 마지막으로 한 가지 주의할 사항은 "Gutenberg_Library"라는 새로운 디렉토리가 홈 디렉토리에 생성되어 내려받은 etext를 저장하는데 사용될 것이다.

오늘 다룰 마지막 포트는 /usr/ports/misc/kp에서 찾을 수 있는 타자 연습 포트이다.

이것은 타이핑 연습에 편리하게 짜여진 GUI 인터페이스이다. X 윈도우 세션에서 실행한 화면은 다음과 같다.

기본 모드는 Dvorak 자판을 보여주는 것으로 되어있다. 평범한 키보드를 사용하고 있다면 "Options-->Keyboard"로 가서 "Qwerty"를 선택해보자.

그리고 난 후 손가락을 보지 말고 탑 섹션에 보이는 것을 타이핑 해보자. 키가 어디에 있는지 잘 몰라도 손가락을 내려다 보지 말자. 그 대신 모니터를 보고 어떤 키에 하이라이트가 들어오는지를 확인하자. 이 프로그램은 오타와 타이핑 속도를 분당 타자수로 측정할 것이다. 만약 다른 파일에 있는 내용을 연습하고 싶다면 "File-->Load file"을 실행하면 된다. 거기에서는 홈 디렉토리에 있는 모든 파일들을 볼 수 있을 것이다. 타자 연습을 위한 파일 하나를 선택하여 타자 속도를 향상시킬 수 있는지 알아보자.

포트 컬렉션으로의 마지막 여행이 즐거웠기를 바란다. 여러분 스스로 다른 포트들도 점검해보고 필자와 같이 새로운 것을 발견해서 알려주기 바란다.

드루 라빈(Dru Lavigne)은 캐나다 온타리오주 킹스턴에 있는 공과 전문대학교에서 네트워크를 가르치고 있다. 하나의 테스트 머신에서 얼마나 많은 운영체제를 멀티 부팅할 수 있는지 알아보는 것으로 유명하다.
TAG :
댓글 입력
자료실

최근 본 책0