BLOG main image
All (22)
Operating System (17)
Networking (1)
Security (2)
Photo (0)
ETC (2)
«   2008/11   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
63409 Visitors up to today!
Today 45 hit, Yesterday 47 hit
'Operating System/Linux'에 해당되는 글 11건
*1 *2
[ruo91, 2008/10/09 11:39, Operating System/Linux]
시스템 : 데비안, 우분투

evasive 모듈 설치
# apt-get install libapache2-mod-evasive

설치가 완료되면 자동으로 모듈이 올라가고 아파치가 재시작 됩니다.

모듈이 안올라갈 경우 심볼링크로 링크를 걸어 줍니다.

심볼링크 생성
# cd /etc/apache2/mods-enabled
# ln -s ../mods-available/mod-evasive.load ./mod-evasive.load
apache2.conf 맨 아래 추가

<IfModule mod_evasive20.c>
    DOSHashTableSize  3097
    DOSPageCount        5
    DOSSiteCount          50
    DOSPageInterval      1
    DOSSiteInterval        1
    DOSBlockingPeriod  30
    DOSLogDir              "/var/log/mod_evasive.log"
    DOSWhitelist            127.0.0.1
</IfModule>

추가 완료후 /etc/init.d/apache2 restart 로 아파치 재시작

mod_evasive 옵션

- DOSHashTableSize 
   각 자식 해쉬테이블 마다 탑레벨 노드의 수를 지정한다.
   수치가 높으면 높을수록 더 많은 퍼포먼스가 나타나지만 테이블스페이스에 메모리를 남기게 된다
   접속량이 많으면 이 수치를 높혀도 된다.
 
- DOSPageCount
    이것은 같은 페이지 또는 URI, 인터벌당 요청수에 대한 카운트 수이다.
    지정된 값이 초과되면 클라이언트에 대한 IP 정보가 블러킹리스트에 추가된다.

- DOSSiteCount
    지정된 시간동안 같은 페이지를 지정된 수 보다 초과될경우 IP 정보가 블러킹리스트에 추가된다.

- DOSPageInterval
    페이지 카운트 시발점, 디폴트는 1초이다.

- DOSSiteInterval
    사이트 카운트 시발점, 디폴트는 역시 1초이다.

- DOSBlockingPeriod
    클라이언트가 블랙리스트에 추가되어 블러킹되는 총 시간.
    이때 클라이언트는 403 (Forbidden) 에러를 출력하게 된다.

- DOSEmailNotify
    이 값이 지정되면, IP가 블러킹될때마다 지정된 이메일로 발동된다.
주의 : 메일러는 mod_dosevasive.c 에 정확하게 지정되야 한다. 디폴트는 "/bin/mail -t %s" 이다.

- DOSLogDir
   로그 파일 경로

- DOSSystemCommand
    이 값이 지정되면, 시스템은 아이피가 블러킹될때마다 명령행을 실행한다.

- DOSWhitelist
   차단에서 제외될 호스트

   DOSWhitelist    127.0.0.1
   DOSWhitelist    127.0.0.* - (와일드카드는(*) 필요하다면 최대 8진수(xxx.*.*.*)까지 사용할 수 있다.)
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/10/09 11:39 2008/10/09 11:39
[ruo91, 2008/08/15 21:58, Operating System/Linux]
우분투 환경 /etc/apache2/sites-available/default 수정
소스컴파일 환경에선 httpd.conf 또는 virtualHost.conf 라던지..거기서 설정...기억안남;;
# Apache 가상호스트 설정
#==================================================
# SetEnvIf Remote 특정 아이피주소에서 접근시 로그를 남기지 않음
# FollowSymLinks 옵션을 추가하면 해당 디렉토리의 누출 or 파일이 보이지 않음
#==================================================
NameVirtualHost *
# www 셋팅
<VirtualHost *>
    ServerAdmin ruo91@naver.com
    ServerAlias yongbok.com www.yongbok.com
    DocumentRoot /home/www/
    ErrorLog /home/apache2-log/www-error.log
    LogLevel warn
        SetEnvIf Remote_Addr x.x.x.x$ do_not_log
        CustomLog /home/apache2-log/www-access.log combined env=!do_not_log
    ServerSignature On
    <Directory "/home/www/">
       Options FollowSymLinks
       AllowOverride FileInfo
       </Directory>
 </VirtualHost>
#
# blog 셋팅
<VirtualHost *>
    ServerAdmin ruo91@naver.com
    ServerAlias blog.yongbok.com
    DocumentRoot /home/blog/
    ErrorLog /home/apache2-log/blog-error.log
    LogLevel warn
#  SetEnvIf Remote 특정 아이피주소에서 접근시 로그를 남기지 않음
        SetEnvIf Remote_Addr X.x.x.x$ do_not_log
        CustomLog /home/apache2-log/blog-access.log combined env=!do_not_log
    ServerSignature On
    <Directory "/home/blog/">
       Options FollowSymLinks
       AllowOverride FileInfo
       </Directory>
 </VirtualHost>
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/08/15 21:58 2008/08/15 21:58
[ruo91, 2008/08/15 21:57, Operating System/Linux]
Ubuntu 리눅스에서 네트워크 설정을 하는 방법입니다.
이 방법은 고정아이피를 설정 할때 많이 사용됩니다.
vi /etc/network/interfaces 를 수정 하시면 됩니다.
# interfaces 의 내용

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
# static 을 dhcp 로 수정하면 유동아이피로 전환되어짐
iface eth0 inet static
    address 192.168.10.2
    netmask 255.255.255.0
    network 192.168.10.0
    broadcast 192.168.10.255
    gateway 192.168.10.1
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers 168.126.63.1 168.126.63.2

저장하고 vi /etc/resolv.conf 를 열어서 아래와 DNS 서버를 입력
nameserver 168.126.63.1
nameserver 168.126.63.2

그다음 /etc/init.d/networking restart 로 재시작 하거나 shutdown -r now 로 시스템 재부팅
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/08/15 21:57 2008/08/15 21:57
[ruo91, 2008/08/15 21:56, Operating System/Linux]
root@yongbok:~# adduser test
Adding user `test' ...
Adding new group `test' (1002) ...
Adding new user `test' (1002) with group `test' ...
Creating home directory `/home/test' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: 열쇠글을 성공적으로 업데이트했습니다
test의 사용자의 정보를 바꿉니다
새로운 값을 넣거나, 기본값을 원하시면 엔터를 치세요
        이름 []: 김용복
        방 번호 []: 1
        직장 번화번호 []: 없음
        집 전화번호 []: 비밀
        기타 []: 없음
이 정보가 맞습니까? [y/N] y

root@yongbok:~# find /home/test
/home/test
/home/test/.bashrc
/home/test/.profile
/home/test/.bash_logout
/home/test/Examples
root@yongbok:~#
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/08/15 21:56 2008/08/15 21:56
[ruo91, 2008/08/15 21:55, Operating System/Linux]
# tar tfz filename.tar.gz | xargs rm

tar 파일을 엉뚱한 디렉토리에 풀어 디렉토리가 망가진 경험, 그리고 슬퍼하며 하나씩 지
워 본 경험, 저도 있습니다.

사실, 리눅스는 잘 찾아 보면 죽으란 법은 없는 것 같습니다. 잔머리를 잘굴리면 답이 나오
는 뭐, 수수께끼 풀기 같다고나 할까… 암튼, 위의 명령을 잠시 살펴보면,
tar의 -t 옵션은 묶여진 파일이 뭐뭐인지를 보여줍니다.
그리고, xargs 는  파이프로 이 리스트를 입력으로 받아서 xargs 뒤에 있는 명령어 한테
‘너의 파라미터다!’ 하면서 넘겨 줍니다. 그러면, rm이 넘겨 받은 이름의 파일을 지웁니다.
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/08/15 21:55 2008/08/15 21:55
[ruo91, 2008/08/15 21:54, Operating System/Linux]
root@yongbok:~# last | more
ruo91    pts/0        :0.0             Wed May 21 00:35   still logged in  
ruo91    tty7         :0               Wed May 21 00:34   still logged in  
reboot   system boot  2.6.24-16-server Wed May 21 00:34 - 11:54  (11:20)   
ruo91    pts/0        :0.0             Mon May 19 19:11 - down  (1+03:52)  
ruo91    tty7         :0               Mon May 19 19:08 - down  (1+03:55)  
reboot   system boot  2.6.24-16-server Mon May 19 19:08 - 23:04 (1+03:55)  
ruo91    pts/0        :0.0             Sun May 18 22:07 - 16:15  (18:08)   
ruo91    tty7         :0               Sun May 18 22:06 - crash  (21:02)   
reboot   system boot  2.6.22-14-server Sat May  3 12:06 - 12:19  (00:13)   
root     tty1                          Sat May  3 11:19 - down   (00:45)   
root     tty1                          Sat May  3 11:19 - 11:19  (00:00)   
ruo91    tty1                          Sat May  3 11:19 - 11:19  (00:00)   
ruo91    tty1                          Sat May  3 11:19 - 11:19  (00:00)   
reboot   system boot  2.6.22-14-server Sat May  3 20:19 - 12:05  (-8:-14)  
wtmp begins Sat May  3 20:19:55 2008

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/08/15 21:54 2008/08/15 21:54
[ruo91, 2008/08/15 21:53, Operating System/Linux]

APM(Apache, PHP, MYSQL) 설치 방법

1. Apache2 설치

# apt-get install apache2

vi /etc/apache2/apache2.conf 를 열어 맨 아래 부분에 ServerName localhost 를 추가

2. PHP5 설치

# apt-get install php5

vi /etc/php5/apache2/php.ini 에 610번 라인 ;extension=msql.so 에 ";" 주석을 제거하고 저장 후 빠져나온다. 그리고 /etc/init.d/apache2 restart 로 아파치 재시작!

3. MYSQL 설치

# apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql

설치후 터미널에서 mysql 묻는 창이 뜨면 패스워드를 적고 설치를 마친다.

--> mysql 접속
# mysql -u root -p      

--> blog 데이터베이스 생성
mysql> CREATE DATEBASE blog;    blog 디비를 생성

--> 사용자 계정 추가
mysql> GRANT ALL PRIVILEGES ON *.* TO '사용자명'@'localhost' IDENTIFIED BY '패스워드' WITH GRANT OPTION;

이제...APM이 잘 실행 되는지 테스트 해봅니다.
우선 /home 디렉토리에 www 라는 하위 디렉토리를 생성후 권한을 707로 줍니다.
# mkdir /home/www
# chmod 707 /home/www

아파치 가상호스트 설정을 합니다.
vi /etc/apache2/sites-available/default

아래의 글을 복사하여 저장합니다.
#=======================================================================================
# 아파치 가상 호스트 설정

# SetEnvIf Remote_Addr 192.168.1.2$ do_not_log  192.168.1.2 아이피로부터 로그를 저장하지 않는다.

# Options FollowSymLinks  만약 지정한 디렉토리안에 index 파일이 없다면 원래 주소로 이동
# AllowOverride FileInfo  디렉토리의 목록을 보여주지 않음
NameVirtualHost *
# www 셋팅
<VirtualHost *>
 ServerAdmin ruo91@naver.com
 ServerAlias yongbok.com www.yongbok.com
 DocumentRoot /home/www/
 ErrorLog /home/apache2-log/www-error.log
 LogLevel warn
        SetEnvIf Remote_Addr 192.168.1.2$ do_not_log
        CustomLog /home/apache2-log/www-access.log combined env=!do_not_log
 ServerSignature On
 <Directory "/home/www/">
       Options FollowSymLinks
       AllowOverride FileInfo
       </Directory>
 </VirtualHost>
#=======================================================================================
저장후 /etc/init.d/apache2 restart 로 아파치를 재시작!
/home/www 디렉토리 폴더에 index.php 를 생성하여 이 php파일에 <? phpinfo(); ?> 를 입력!

# cat > index.php
<? phpinfo(); ?>

여기서 Ctrl + D
# chmod 707 index.php

이후 사이트를 방문하여 php 정보가 나오는지 확인하면 되요~

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/08/15 21:53 2008/08/15 21:53
[ruo91, 2008/08/15 21:52, Operating System/Linux]
Nmap 네트워크 점검 도구 및 보안 스캐너
1. 개요
Nmap(Network Mapper)은 네트워크 보안을 위한 유틸리티로, 대규모 네트워크를 고속으로 스캔하는 도구이다. Nmap은 raw IP 패킷을 사용하여 네트워크에 어느 호스트가 살아있고, 그들이 어떠한 서비스(포트)를 제공하며, 운영체제(OS 버전)가 무엇이며, filter/firewall의 패킷 타입이 무엇인지 등 네트워크의 수많은 특징들을 점검할 수 있다. Nmap의 주요 특징을 살펴보면 다음과 같다.

Flexible

IP 필터, 방화벽, 라우터 등으로 구성되어 있는 네트워크를 점검하기 위한 도구로, 포트 스캐닝 메카니즘(TCP & UDP), OS 검색, pings sweeps 등을 점검할 수 있다.

Powerful

Nmap은 수천 수백 개의 호스트를 가진 거대한 네트워크를 고속으로 스캔할 수 있다.

Portable

Linux, Open/Free/Net BSD, Solaris, IRIX, Mac OS X, HP-UX, Sun OS 등 대부분의 운영체제에서 사용할 수 있다.

Easy

Nmap은 사용자들에게 강력하면서도 다양한 set을 제공함에도 불구 하고 "nmap -O -sS targethost"와 같이 아주 간단하게 사용할 수 있다. 또한 command line 및 graphical (GUI) 버전 모두를 지원한 다.

Free

Nmap의 주요 목적은 좀더 안전한 인터넷을 만드는데 도움을 주고 자 하는 것과 administrators/auditors에게 그들의 네트워크를 점검 하기 위한 보다 강력한 도구를 제공하기 위한 것이다. Nmap은 http://www.insecure.org/nmap에서 무료로 다운받을 수 있으며, GNU General Public License(GPL)하에 모든 사람이 자유롭게 사용할 수 있다.

Popular

현재 네트워크 스캔 툴 중에서 가장 많이 이용되고 있는 툴이다.

Nmap에서 사용되는 대부분의 기술은 호스트의 어떤 포트가 listening 되고 있는지를 스캔하기 위해 사용된다. 이 포트들은 통신 가능한 채널로 이들 포트들에 대한 매핑은 호스트에 대한 정보 교환을 용이하게 한다. 따라서 nmap은 시스템 관리자는 물론이고 해커를 포함한 네트워크 환경을 점검하기를 원하는 모든 사람에게 매우 유용한 도구로 사용된다.

Nmap은 방대한 네트워크를 점검하기 위한 강력한 포트 스캐너로 다음과 같은 것을 지원한다.

o Vanilla TCP connect() scanning,
o TCP SYN (half open) scanning,
o TCP FIN (stealth) scanning,
o TCP ftp proxy (bounce attack) scanning,
o SYN/FIN scanning using IP fragments (bypasses packet filters),
o UDP recvfrom() scanning,
o UDP raw ICMP port unreachable scanning,
o ICMP scanning (ping-sweep), and Reverse-ident scanning.

 

2. 설치 및 운영 

가. Nmap 설치

Nmap은 http://nmap.org/ 사이트에서 다운 받을수 있다. 리눅스에서 Nmap 4.60 버전으로 소스 설치 해보겠다.

1. PuTTY-SSH 접속을 하여 wget 으로 소스 파일을 다운받는다. 

 root@ruo91:~# mkdir nmap-src
 
root@ruo91:~# cd nmap-src
 
root@ruo91:~/nmap-src# wget http://download.insecure.org/nmap/dist/nmap-4.60.tar.bz2
 --13:04:29--  http://download.insecure.org/nmap/dist/nmap-4.60.tar.bz2
            => `nmap-4.60.tar.bz2'
 Resolving download.insecure.org... 205.217.153.53
 Connecting to download.insecure.org|205.217.153.53|:80... connected.
 HTTP request sent, awaiting response... 301 Moved Permanently
 Location:
http://nmap.org/dist/nmap-4.60.tar.bz2 [following]
 --13:04:34-- 
http://nmap.org/dist/nmap-4.60.tar.bz2
            => `nmap-4.60.tar.bz2'
 Resolving nmap.org... 64.13.134.48
 Connecting to nmap.org|64.13.134.48|:80... connected.
 HTTP request sent, awaiting response... 200 OK
 Length: 3,213,870 (3.1M) [application/x-bzip2]

 100%[========================================================>] 3,213,870      1.14M/s

 13:04:38 (1.14 MB/s) - `nmap-4.60.tar.bz2' saved [3213870/3213870]

 root@ruo91:~/nmap-src#

2. 다운 받은 파일을 압축을 풀고 컴파일 한다.

 root@ruo91:~/nmap-src# ls
 nmap-4.60.tar.bz2
 
root@ruo91:~/nmap-src# bzip2 -cd nmap-4.60.tar.bz2 | tar xvf -

 nmap-4.60/
 nmap-4.60/nse_pcrelib.cc
 nmap-4.60/global_structures.h
 nmap-4.60/nmap-rpc
 nmap-4.60/output.h
 nmap-4.60/nse_nsock.cc
 nmap-4.60/aclocal.m4
 nmap-4.60/nmap-4.60-1.spec
 nmap-4.60/libpcap/

 ....................................

 ....................................
 nmap-4.60/libpcap/doc/
 nmap-4.60/libpcap/doc/pcap.txt
 nmap-4.60/libpcap/missing/snprintf.c
 nmap-4.60/nse_debug.h
 nmap-4.60/FingerPrintResults.h
 nmap-4.60/output.cc
 nmap-4.60/config.h.in
 nmap-4.60/nmap_error.cc
 nmap-4.60/portlist.cc
 nmap-4.60/depcomp
 nmap-4.60/NmapOutputTable.h
 
root@ruo91:~/nmap-src# ls -l
 total 3148
 drwxr-xr-x 14  500  500    4096 Mar 15 19:27 nmap-4.60 
 -rw-r--r--  1 root root 3213870 Mar 15 19:59 nmap-4.60.tar.bz2

 root@ruo91:~/nmap-src# cd nmap-4.60

 root@ruo91:~/nmap-src/nmap-4.60# ./configure \

 > --prefix=/usr/local/nmap-4.60

 checking build system type... i686-pc-linux-gnu
 checking host system type... i686-pc-linux-gnu
 checking for gcc... gcc
 checking for C compiler default output file name... a.out
 checking whether the C compiler works... yes
 ...........................

 ...........................

 Configuration complete.  Type make to compile.

 root@ruo91:~/nmap-src/nmap-4.60# make

 root@ruo91:~/nmap-src/nmap-4.60# make install

나. Nmap 실행

nmap의 사용방법은 다음과 같다. scan type 및 option에 대해서는 nmap의 man page에 자세히 나와있다.

USAGE :./nmap [Scan Type(s)] [Options] <host or net [#1] ... [#N]>

ex) root@ruo91:~/usr/local/nmap-4.60/bin# ./nmap example.com

Scan Type

-sT

TCP connect() scan : TCP scanning의 가장 기초적인 형태로 connect() 함수를 사용해서 모든 포트에 대해 스캔하는 방식이다. 만약 포트가 listening 상태라면 connect()는 성공할 것이고, 그렇지 않으면 reachable 되지 않는다.

-sS

TCP SYN scan : full TCP 접속을 하지 않으므로 "half-open" 스캐닝이라 한다. 하나의 SYN 패킷을 보내어 SYN|ACK 응답이 오면 그 포트는 listening 상태임을 나타내며, RST 응답이 오면 non-listener임을 나타낸다. 이 기술은 하나의 패킷을 보내어 SYN|ACK 응답을 받으면 그 즉시 RST 패킷을 보내서 접속을 끊어버린다. 이렇게 하면 접속이 이루어지지 않은 상태에서 접속을 끊었기 때문에 로그를 남기지 않는 경우가 대부분이다. custom SYN packet을 만들기 위해서는 루트 권한이 필요하다.

-sF
-sX
-sN

Stealth FIN, Xmas Tree, Null scan : 이들은 SYN 패킷을 막아놓은 방화벽이나 패킷 필터 또는 Synlogger와 Courtney 같은 스캔을 탐지하는 프로그램들을 무사히 통과할 수 있다. open 포트로 FIN 패킷을 보내면 이 패킷을 무시하고, closed 포트로 보내면 RST 패킷이 온다. 이들 스캔은 주로 유닉스계열 OS에서만 사용 가능하며, 루트권한이 필요하다.

-sP

Ping scanning : 네트워크의 어느 호스트가 살아있는지를 알고 싶을 때 사용한다. nmap은 명시한 네트워크의 모든 IP 주소로 ICMP echo request packet을 보내어 이것을 행한다. 호스트가 살아 있다면 응답을 보낸다. 하지만 microsoft.com 같은 일부 사이트는 echo requst packet을 방해한다. 따라서 nmap은 포트번호 80(default) 으로 TCP ack packet을 보낸다. 만약 RST back을 받았다면 이 시스템은 살아있는 것이다.

-sU

UDP scans : 이것은 호스트의 어떠한 UDP 포트가 open 되어 있는지를 결정하기 위해 사용된다. 이 기술은 시스템의 각 포트에 0 바이트의 udp 패킷을 보낸다. 만일 ICMP port unreachable 메시지를 받았다면 이 포트는 closed 상태이며, 다른 경우라 open 상태라고 할 수 있다. 일부에서는 UDP 스캐닝이 무의미하다라고 말한다. 하지만 최근의 Solaris rcpbind hole을 보면 Rpcbind가 32770 이상의 정의되지 않은 UDP 포트에서 발견되고 있다. 이것은 111 포트가 방화벽에서 차단되어지는 것과는 별개의 문제이다. 따라서 UDP 스캐너로 30,000번 이상의 high 포트들이 listening 상태인지를 점검해봐야 한다. 이것은 루트만이 실행가능하다.

-sA

ACK scan : 이 방법은 방화벽의 룰셋을 정밀하게 계획하기 위해 사용된다. 특히 방화벽이 stateful한지 아니면 단순히 들어오는 SYN 패킷을 차단하는 패킷필터인지를 점검하는데 도움이 된다. 포트에 ACK 패킷을 보내어 RST 응답을 받으면 그 포트는 "unfilterd"이며, 아무런 응답이 없으면 "filtered" 이다. nmap은 "unfilterd" 포트는 프린트하지 않는다.

-sW

Window scan : TCP Window 크기의 변칙 때문에 filtered/nonfiltered 뿐만 아니라 open 포트도 스캔할 수 있다는 점을 제외하면 ACK scan과 매우 유사하다.

-sR

RPC scan : 이 스캔 방법은 nmap의 다양한 포트 스캔 방법을 조합해서 이루어진다. 이것은 열려져있는 TCP/UDP 포트에 대해 그들이 RPC 포트인지, 서비스를 제공하는 프로그램은 무엇이며, 버전은 무엇인지 등을 확인하기 위해 SunRPC program NULL commands를 계속 보내게 된다. 따라서 호스트의 portmaper가 방화벽(또는 TCP wrapper)안에 있다 하더라도 'rpcinfo -p'와 같은 정보를 얻을 수 있다.

-b

FTP bounce attack : 익명 FTP 서버를 이용해 그 FTP 서버를 경우해서 호스트를 스캔한다. 이를 FTP 바운스 스캔이라 한다.


Options


-P0

이것은 방화벽에 의해 ICMP echo requests (or responses)를 막아놓은 네트워크의 스캔을 가능하게 한다. ping을 막아놓은 호스트를 스캔하기 위해서는 -P0 나 -PT80을 사용해야 한다.

-PT

어느 호스트가 살아 있는지를 알기 위해 TCP "ping"을 사용한다. 이것은 ICMP echo request 패킷을 보내고 응답을 기다리는 대신에, 네트워크에 TCP ACK를 보내어 응답이 오기를 기다린다. RST 응답이 오면 호스트는 살아 있는 것이다. 이 옵션은 ping 패킷을 차단하는 네트워크나 호스트을 스캔하는 동안은 호스트가 살아 있는 것과 같다. -PT<port number>를 사용 하며, 디폴트 포트는 80이다.

-PS

이 옵션은 루트사용자를 위해 ACK 패킷 대신에 SYN (connection request)을 사용한다. 호스트가 살아 있다면 RST (or, rarely, a SYN|ACK)로 응답 한다.

-PI

이 옵션은 오리지날 ping (ICMP echo request) packet을 사용한다. 이것은 살아있는 호스트를 찾으며 또한 네트워크의 subnet-directed broadcast addresses를 찾는다. 이들은 들어오는 IP 패킷을 컴퓨터의 서브넷으로 브로드케스트하기 위한 IP 주소이다. 따라서 denial of service attacks (Smurf is the most common) 가능성이 있다면 이들은 제거되어야 한다.

-PB

이것은 ping 기본 형태로 ACK (-PT)와 ICMP (-PI) 모두를 사용한다.

-O

이것은 TCP/IP fingerprinting을 통해 리모트 호스트를 확인하는데 사용된다 다시 말해 리모트 시스템의 운영체제를 점검해 준다. 루트권한이 필요하다.

-I

RFC 1413에 정의되어 있는 ident 프로토콜을 사용해 open되어 있는 포트가 어떤 사용자에 의해 열려 있는지 검사한다.

-v

verbose mode : interactive한 사용에 매우 유용한 옵션이다.

-h

nmap의 'quick reference'이다.

-p
<port ranges>

점검하고자 하는 포트를 지정하는 옵션이다. 예로 23번 포트를 점검하려면 '-p 23' 하면 된다. 또한 '-p 20-30,139,60000-'은 20에서 30사이의 포트와 139번 포트, 60000번 이상의 포트에 대해 스캔하라는 뜻이다.

-F

nmap-services에 나열된 포트만 스캔한다.

-n / -R

DNS lookup을 하지 않는다. / DNS lookup을 한다.

-S
<IP_Address>

패킷의 source 주소를 지정한다.

-e
<interface>

네트워크의 인터페이스를 지정한다.

-g
<portnumber>

패킷의 source 포트번호를 지정한다.

-oN
<logfilename>

스캔한 결과를 로그 파일에 남긴다(사람이 읽기 편한 포맷).

-oM
<logfilename>

스캔한 결과를 로그 파일에 남긴다(컴퓨터가 읽기 편한 포맷).

 

다. nmap 탐지결과 분석

nmap의 실행 결과는 일반적으로 스캔되어진 호스트의 포트 리스트이다. nmap는 포트들의 "well known" service name, number, state, protocol 등을 알려준다. state는 'open', 'filtered' 'unfiltered'로 정의된다. Open은 호스트의 포트로 accept() 접속이 가능함을 의미한다. Filtered는 방화벽이나 필터, 또는 다른 네트웍 장비가 포트를 보호하고 있거나, 포트가 open 되어 있는지에 관해 nmap이 결정할 수 없음을 의미한다. Unfiltered는 closed 상태이고 firewall/filter가 없음을 의미한다. 대부분의 포트가 Unfiltered 포트이므로 'unfiltered'는 state에는 프린트되지 않는다.

<예제1> nmap의 기본 옵션을 가지고 스캔하면 다음과 같다. 여기에 -v 옵션을 사용하면 좀더 자세한 정보를 알 수 있다.  

 root@ruo91:/usr/local/nmap-4.60/bin# ./nmap -v linux.yongbok.com

 Starting Nmap 4.60 ( http://nmap.org ) at 2008-03-28 15:53 KST
 Initiating Parallel DNS resolution of 1 host. at 15:53
 Completed Parallel DNS resolution of 1 host. at 15:53, 0.01s elapsed
 Initiating SYN Stealth Scan at 15:53
 Scanning 116.41.x.x [1715 ports]
 Discovered open port 53/tcp on 116.41.x.x
 Discovered open port 21/tcp on 116.41.x.x
 Discovered open port 80/tcp on 116.41.x.x
 Completed SYN Stealth Scan at 15:53, 0.09s elapsed (1715 total ports)
 Host 116.41.x.x appears to be up ... good.
 Interesting ports on 116.41.x.x:
 Not shown: 1712 closed ports
 PORT   STATE SERVICE
 21/tcp open  ftp
 53/tcp open  domain
 80/tcp open  http

 Read data files from: /usr/local/nmap-4.60/share/nmap
 Nmap done: 1 IP address (1 host up) scanned in 0.548 seconds
            Raw packets sent: 1715 (75.460KB) | Rcvd: 3433 (144.192KB)
 root@ruo91:/usr/local/nmap-4.60/bin#


<예제2> -A 옵션으로 서버의 OS 종류를 확인도 할수 있다. 

 root@ruo91:/usr/local/nmap-4.60/bin# ./nmap -A linux.yongbok.com

 Starting Nmap 4.60 ( http://nmap.org ) at 2008-03-28 15:55 KST
 Interesting ports on 116.41.x.x:
 Not shown: 1712 closed ports
 PORT   STATE SERVICE VERSION
 21/tcp open  ftp     vsftpd 2.0.6
 53/tcp open  domain
 80/tcp open  http    Apache httpd
 |_ HTML title: Site doesn't have a title.
 Device type: general purpose
 Running: Linux 2.6.X
 OS details: Linux 2.6.17 - 2.6.21
 Uptime: 1.811 days (since Wed Mar 26 20:27:17 2008)
 Network Distance: 0 hops
 Service Info: OS: Unix

 OS and Service detection performed. Please report any incorrect results at  http://nmap.org/submit/ .
 Nmap done: 1 IP address (1 host up) scanned in 31.324 seconds
 root@ruo91:/usr/local/nmap-4.60/bin#

<예제3> 호스트가 살아있는지를 알기 위해서는 -sP를 사용한다.  

 root@ruo91:/usr/local/nmap-4.60/bin# ./nmap -sP linux.yongbok.com

 Starting Nmap 4.60 ( http://nmap.org ) at 2008-03-28 15:58 KST
 Host 116.41.x.x appears to be up.
 Nmap done: 1 IP address (1 host up) scanned in 0.096 seconds
 root@ruo91:/usr/local/nmap-4.60/bin#

up으로 나오면 호스트가 살아있음을 의미하고, down으로 나오는 호스트가 죽어있거나 방화벽에 의해 차단되어 있음을 의미한다.

<예제5> UDP 포트에 대해 점검을 원하면 -sU를 사용한다.

(open|filtered 는 방화벽에 의해 보호받고 있거나 어떻게 됐는지 알수 없을때 보여진다.)

 root@ruo91:/usr/local/nmap-4.60/bin# ./nmap -sU linux.yongbok.com

 Starting Nmap 4.60 ( http://nmap.org ) at 2008-03-28 15:58 KST
 Interesting ports on 116.41.x.x:
 Not shown: 1485 closed ports
 PORT     STATE         SERVICE
 53/udp   open|filtered domain
 631/udp  open|filtered unknown
 5353/udp open|filtered zeroconf

 Nmap done: 1 IP address (1 host up) scanned in 1.323 seconds
 root@ruo91:/usr/local/nmap-4.60/bin#

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/08/15 21:52 2008/08/15 21:52
[ruo91, 2008/08/15 21:51, Operating System/Linux]

해당 홈페이지에 방문하기 위해서는 아이피 주소를 알고 있어야 하는데 사람이 숫자를 기억하기 보다는 www.naver.com 처럼 문자로 표현된 주소를 더 쉽게 기억할수 있기 때문에 이 네임서버(DNS)를 사용하는 것입니다.
DNS 서버란 쉽게 192.168.10.1 아이피 주소를 문자로 반환하여 사람이 기억하기 쉽게 문자로 변환 해주는 서비스 입니다.

그리고 네임서버들은 트리구조를 갖는 데이터베이스(whois database)입니다.

상하위 개념이 있고, 최상위에는 ROOT 네임서버가 존재합니다.

최상위에 있는 ROOT 네임서버는 13개가 있으며 각 독립된 기관에서 운영하고 있습니다.

이 트리 구조를 관리하는 기관이 있습니다. 네임서버를 사용하려면 해당 네임서버의 이름이 네임서버트리구조(디렉토리)를 관리하는 기관(internic)에 등록이 되어야 합니다.

아래 주소는 internic으로부터 공인받은 기관들 목록이고 우리나라 기관들도 있습니다.

http://www.internic.net/alpha.html

Linux로 BIND를 설치해서 네임서버를 설치할 경우 네임서버에는 반드시 네임서버의 이름이 있어야 하고 그 이름은 공인받은 기관에 등록이 되어 있어야 정상적인 동작을 할 수 있습니다.

이제부터 BIND9 버전으로 DNS 서버를 만들어봅시다. (Example Download)

환경 : Ubuntu

1. BIND9를 설치 하기 위해서 터미널이나 SSH에 apt-get install bind9 를 입력하여 설치를 합니다.

root@ruo91:~# apt-get install bind9
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
  bind9-doc
The following NEW packages will be installed:
  bind9
0 upgraded, 1 newly installed, 0 to remove and 5 not upgraded.
Need to get 255kB of archives.
After unpacking 799kB of additional disk space will be used.
Get:1
http://kr.archive.ubuntu.com gutsy-updates/main bind9 1:9.4.1-P1-3ubuntu1 [255kB]
Fetched 255kB in 1s (209kB/s)
Selecting previously deselected package bind9.
(Reading database ... 102198 files and directories currently installed.)
Unpacking bind9 (from .../bind9_1%3a9.4.1-P1-3ubuntu1_i386.deb) ...
Setting up bind9 (1:9.4.1-P1-3ubuntu1) ...
Adding group `bind' (GID 121) ...
Done.
Adding system user `bind' (UID 112) ...
Adding new user `bind' (UID 112) with group `bind' ...
Not creating home directory `/var/cache/bind'.
wrote key file "/etc/bind/rndc.key"
 * Starting domain name service... bind                                                                                   [ OK ]

 root@ruo91:~#

2. BIND9가 /etc/bind 디렉토리로 설치가 되었습니다. 해당 디렉토리로 가서 named.conf 파일을 열어 아래와 수정을 진행 합니다.

// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local
include "/etc/bind/named.conf.options";
// prime the server with knowledge of the root servers
zone "." {
        type hint;
        file "/etc/bind/db.root";
};
// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912
zone "ns1.yongbok.com" IN {
        type master;
        file "/etc/bind/db-yongbok";
};