OS/SOLARIS2007. 11. 17. 00:17
반응형

(Solaris Version. HP-UX, AIX 는 아래 설정과 같습니다.
그러나, Linux 는 다르니 미 문서를 참고하여 사용하시기를 바랍니다.)

 

Xmanager(Xbrowser)를 이용한 XDM 접속시에는 PC에서 Unix(솔라리스)방향으로 UDP 177으로

접근 후에 Unix에서 PC방향으로 TCP Port 6000~6010번을 이용하여 접속합니다.

그러므로, XDM 접속시 사용하는 UDP 177번을 막으시거나,  XDM 접속 자체를 막으면 됩니다.


 

CDE를 쓰는 Unix라면..

/usr/dt/config/Xaccess 혹은 /etc/dt/config/Xaccess 를 아래와 같이 설정하십시오.

 

1)

vi /usr/dt/config/Xaccess
.........................

!*                   # grant service to all remote displays

 

그 다음, /usr/dt/bin/dtconfig -reset 명령을 내리시면 됩니다.

 

2)

/usr/dt/bin/dtconfig -reset

done
dtlogin config resources reloaded.

 

 

 

특정 IP 만 (관리용으로) 허용하고 싶으시다면, 아래와 같이 하십시요.


192.168.1.40
192.168.1.41


!*                 # grant service to all remote displays

 

이렇게 설정하면 192.168.1.40과 41 만이 Xmanager 가 PC 에서 뜨고 다른 PC 에서는 사용이 안됩니다.


그리고, 설정 안된 PC 에서 Xmanager 를 실행하면 해당 서버의 List (정보)가 안나옵니다. (Xmanager 접근안됨)

 


참고로 Xaccess 파일은 위에서부터 순차적으로 적용됩니다.


맨 아래에 넣지 말고, * 위에 IP 설정을 하셔야 합니다.


그리고, 설정후 반드시 /usr/dt/bin/dtconfig -reset 명령으로 reload 하셔야 제대로 먹힙니다.

 

참고)

#   /usr/dt/bin/dtconfig

Usage: Needs one argument

CDE configuration utility

 /usr/dt/bin/dtconfig -d     (disable auto-start)
 /usr/dt/bin/dtconfig -e     (enable auto-start)
 /usr/dt/bin/dtconfig -kill  (kill dtlogin)
 /usr/dt/bin/dtconfig -reset (reset dtlogin)
 /usr/dt/bin/dtconfig -p     (printer action update)

 

 

관리자 학습용 서버도 이렇게 되어 있습니다.

Xmanager 사용으로 인한 서버의 과부하를 막기 위해서 이므로,

다른 엔지니어나 서버 관리자 분들도 이걸 사용하셔도 됩니다.

반응형

'OS > SOLARIS' 카테고리의 다른 글

samba  (0) 2008.02.28
VMSTAT  (0) 2007.12.07
sun ipmp 관련 정보 사이트들  (0) 2007.08.28
IPMP  (0) 2007.08.28
IPMP Link-based Failure Detection with Solaris [TM] 10 Operating System (OS) and higher  (0) 2007.08.28
Posted by [PineTree]
OS/LINUX2007. 10. 29. 20:04
반응형




= 디렉토리갯수 세기

Prompt>ls -l | grep ^d | awk '{print $9}'|wc -l


= 화일갯수 세기

Prompt>ls -l | grep ^- | awk '{print $9}'|wc -l


서브디렉토리를 포함하려면 "ls -l" 대신 "ls -Rl"을 쓰면 되겠지요

반응형

'OS > LINUX' 카테고리의 다른 글

iptables 추가  (0) 2007.11.21
iptables  (0) 2007.11.21
텔넷 putty ssh-keygen으로 자동 로그인하기  (0) 2007.10.26
LINUX 방화벽 프로그램 iptables  (0) 2007.10.26
Grep 계열 명령어  (0) 2007.10.25
Posted by [PineTree]
OS/LINUX2007. 10. 26. 03:01
반응형
SSH 인증서를 통한 로그인 (패스워드 X)
 
#vi /etc/ssh/sshd_config

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

 

PasswordAuthentication no



# service sshd restart

 
  PuTTY와 TuTTY 모두 OpenSSH 서버로부 터 만들어진 인증키를 이용하여 로그인할 수 있습니다. 또한 개인 키를 암호없이 만들면 암호 입력없이 로그인할 수 있습니다.

  우선 텔넷으로 서버에 접속합니다. 인증키에 대한 암호를 입력해야 함으로, 당연히 ssh 를 이용한 텔넷을 이용하는 것이 안전하겠지요. ssh-keygen을 이용하여 ssh 인증키를 생성합니다.


  인증키를 담는 파일 생성 위치와 파일 이름을 묻게 되는데, 기본 값을 사용하기 위해 엔터키를 누릅니다.

  다음은 인증키를 보호하기 위한 암호를 입력할 차례입니다. 여기서 입력하는 암호는 인증키를 위한 암호이지 텔넷에 접속할 때 사용하는 암호가 아닙니다. 아래 글에서 PuttyGen을 사용하여 개인키를 만들 때 이해가 되실 것입니다.

  암호 입력이 옳바른지 다시 한번 암호를 입력합니다.

  아래와 같이 fingerprint까지 출력되었다면 정상 적으로 인증키가 만들어진 것입니다.

  생성된 인증키 파일은 .ssh에 있습니다. .ssh로 이동합니다.

  파일이 정상적으로 생성이 되었지요.

  id_rsa는 개인키이고 서버에 접속하는 클라이언트쪽에서 필요한 파일입니다. id_rsa.pub는 공개키로 서버가 가지고 있어야 하는데, 파일 이름을 반드시 authorized_keys 로 변경해 주어야합니다.

  텔넷이나 VNC나 SSH를 이용하여 프로그램이 (1) 서버에 접속하게 되면 (2) 프로그램은 개인키를 서버에 제시하게되고, (3) 서버는 .ssh 에 있는 authorized_keys 파일 값을 비교 확인하여 로그인을 허가하게 됩니다.

  서버에서 할 일은 모두 끝났습니다. 이제 이 서버에 접속하려는 클라이언트쪽에서 해야할 일입니다.

  생성된 개인키, id_rsa를 ftp나 기타 방법으로 컴퓨터에 복사합니다. 이제 이 개인키를 가지고 PuTTY 나 TuTTY에서 로그인할 때 사용하는 인증키를 만들겠습니다.

  PuTTY 홈페이지다운로드 페이지에서 PuTTYgen을 내려받습니다. 설치파일이 아니므로 바로 실행하시면 됩니다.

  [Load]
버튼을 클릭합니다. 그리고 서버로부터 복사한 id_rsa 파일을 선택합니다.
 

  그러면 암호를 물어 오는데, 인증키를 생성했을 때 사용한 암호를 입력합니다.

  키를 이상없이 읽어 들였다면 아래와 같이 설명 글이 출력됩니다.


  이제 텔넷 접속에 사용할 암호를 공백으로 수정해 줍니다. 개인키만 확인하면 로그인이 되도록 수정한다는 말씀이 되겠습니다.

  화살표가 가르키는 암호를 모두 삭제합니다. 그리고 Save private key를 이용하여 적당한 곳에 개인키를 저장합니다.


이제 PuTTY나 TuTTY를 실행합니다. 이전 서버 접속에 대한 정보를 Load 합니다.


  [Connection/Data]로 이동해서 로그인 ID를 입력합니다.


  이제 [Connection/SSH/Auth]로 이동한 후 PuTTYgen에서 저장한 개인크를 선택하여 줍니다.


  다음 사용을 위해 이 정보를 저장합니다.

  이제 [Open]버튼으로 텔넷을 접속하여 보십시오. 이전과는 달리 암호 확인 없이 로그인이되지요.

  PuTTYgen에서 만들어진 개인키는 매우 조심해야 합니다. 암호 확인 없이 텔넷에 접속할 수 있기 때문에 잘못 관리하셨다가는 큰 낭패를 보실 수 있습니다.

  긴 글 읽어 주셔서 감사합니다.
반응형

'OS > LINUX' 카테고리의 다른 글

iptables  (0) 2007.11.21
리눅스 & 유닉스에서 화일 갯수 세기  (0) 2007.10.29
LINUX 방화벽 프로그램 iptables  (0) 2007.10.26
Grep 계열 명령어  (0) 2007.10.25
[LINUX] iptables  (0) 2007.10.25
Posted by [PineTree]
OS/LINUX2007. 10. 26. 01:42
반응형
명령어순례

iptables 명령은 리눅스 IPv4 방화벽을 설정하는 명령어이다. 1.1 시리즈 부터 리눅스 커널은 패킷 필터링을 포함하기 시작했다. 제 1세대는 BSD의 ipfw를 기본으로 했고 1994년 후반기에 알란 콕스(Alan Cox) 에 의해서 포트 됐다.
이것은 리눅스 2.0에서 Jos Vos와 다른이들에 의해서 개선됐고 커널의 필터링 규칙을 제어하는 사용자 툴로는 'ipfwadm'이 사용됐다.
1998년 중반에 리눅스 2.2를 위해 사용자 툴로 'ipchains'를 내놓았다. 마지막으로, 제 4세대 툴이 'iptables'이고 리눅스 2.4를 위해 1999년 중반에 커널을 재작성했다.


<리눅스매거진 편집부>

  패킷 필터란? 네트워크를 통하는 모든 것은 패킷의 형태를 가지며, 패킷의 앞부분에는 패킷이 어디서 왔는지 어디로 향하는지, 어떤 프로토콜을 이용하는지 등과 같은 정보를 가지고 있다. 패킷 필터는 이렇게 지나가는 패킷의 헤더를 보고 패킷을 ‘DROP'(마치 전혀 전달되지 않는 것처럼 패킷을 거부) 하거나 ’ACCEPT‘(패킷이 지나가도록 내버려 둠)하는 등의 작업을 하는 프로그램을 말한다. iptables은 이런 패킷 필터링 기능을 설정하는데 사용할 수 있는 프로그램이다. 자신의 시스템에 설치돼 있는 iptables의 버전을 확인하는 방법은 아래명령을 통해 가능하다.

# iptables --version

iptables 1.2.4

커널은 3가지의 방화벽 체인(chain)을 기본적으로 가지고 패킷 필터링을 시작한다. 파이어월 체인 혹은 체인이라 부르는 이 3가지는 입력(Input), 출력(Output), 전달(Forward)이다. 입력체인은 들어오는 패킷을 조사하고 전달체인은 외부의 다른 시스템으로 전달될 패킷을 조사한다. 마지막으로 출력체인은 외부로 나가는 패킷을 조사한다.


■ 패킷검사방법

1. 패킷이 커널에 도착하면 그 패킷의 목적지를 확인한다. 이것을 '라우팅' 이라고 한다.

2. 패킷의 목적지가 이곳이면, 패킷은 전달돼 입력체인에 도달한다. 패킷이 입력체인을 통과하면 패킷을 기다리고 있던 프로세서가 받게 된다.

3. 그렇지 않고 커널이 포워딩 불능이나, 패킷을 어떻게 포워딩해야 하는가를 알지못하면, 그 패킷은 ‘DROP‘ 된다. 포워딩이 가능하게 돼있고 다른 곳이 목적지이면 패킷은 그림의 오른쪽 방향으로 전달돼 포워딩 체인으로 간다. 이 체인이 ’ ACCEPT‘ 하게 되면 이것은 포워딩 할 네트워크로 보내진다.

4. 마지막으로, 로컬에서 수행하던 프로그램은 네트워크 패킷을 전송할 수 있다.
이 패킷은 즉시 출력 체인에 보내지며 이 체인이 ‘ACCEPT’되면 이 패킷은 그 목적지가 어디든지 보내진다.


:::: 사 용 법 ::::

iptables -[ADC] chain rule-specification [options]

iptables -[RI] chain rulenum rule-specification [options]

iptables -D chain rulenum [options]

iptables -[LFZ] [chain] [options]

iptables -[NX] chain

iptables -P chain target [options]

iptables -h (print help information)


# Commands

-A : 새로운 규칙을 추가한다.(--append)

-D : 규칙을 삭제한다.(--delete)

-C : 패킷을 테스트한다.(--check)

-R : 새로운 규칙으로 교체한다.(--replace)

-I : 새로운 규칙을 삽입한다.(--insert)

-L : chain에 설정된 규칙을 출력한다.(--list)

-F : chain으로부터 규칙을 모두 방출(삭제)한다.(--flush)

-Z : 모든 chain의 패킷과 바이트 카운터 값을 0으로 만든다.(--zero)

-N : 새로운 chain을 만든다.(--new)

-X : chain을 삭제한다.(--delete-chain)

-P : 기본정책을 변경한다.(--policy)


# chain

INPUT : 입력에 대한 사용

OUTPUT : 출력에 대한 사용

FORWARD : 전달(forwarding)에 대한 사용


# Options

-s : 패킷의 발신지를 명시한다.(--source)

-p : 패킷의 프로토콜을 명시한다.(--protocol)

-d : 패킷의 도착지를 명시한다.(--destination)

-i : 규칙을 적용할 인터페이스 이름을 명시한다.(--interface)

-j : 규칙에 맛는 패킷을 어떻게 처리할 것인가를 명시한다.(-jump)

-y : 접속 요청 패킷인 SYN패킷을 허용하지 않는다.(--syn)

-f : 두 번째 이후의 조각에 대해서 규칙을 명시한다.(--fragment)


# 사용예

127.0.0.1 IP 주소로부터 오는 모든 ICMP 패킷을 무시하는 경우 사용되는 프로토콜은 ICMP이고 발신 주소는 127.0.0.1 이어야 한다. 그리고 패킷 필터의 목표는 드롭(DROP)이다. 테스트하는 프로그램은 ping이며 ping은 단순히 ICMP type 8로 반응요구를 보내며 이에 협조하는 대상 호스트는 ICMP 타입 0 (echo reply)를 보내어 응답하도록 돼 있다. 이제 iptables의 패킷필터를 통해 로컬호스트가 ping 명령에 반응하지 않도록 하겠다.


# ping -c 1 127.0.0.1

  PING 127.0.0.1 (127.0.0.1): 56 data bytes

  64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms

  --- 127.0.0.1 ping statistics ---

  1 packets transmitted, 1 packets received, 0% packet loss

  round-trip min/avg/max = 0.2/0.2/0.2 ms


# iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP

; `INPUT' 체인에 127.0.0.1로부터 오고(`-s 127.0.0.1') ICMP(`-p
ICMP') 패킷에 대해 DROP로 점프하라는 (`-j DROP') 규칙을 추가(-A).

# ping -c 1 127.0.0.1

  PING 127.0.0.1 (127.0.0.1): 56 data bytes

  --- 127.0.0.1 ping statistics ---


  1 packets transmitted, 0 packets received, 100% packet loss


■ 설정된 iptables 규칙의 삭제

지금 현재 입력돼 있는 chain이 하나밖에 없으므로 숫자를 지정하는 명령으로 삭제가 가능하며, 앞의 명령과 똑같이 하되 -A를 -D로 바꾸어 지우는 방법이 있다.

#iptables -D INPUT 1

#iptables -D INPUT -s 127.0.0.1 -p icmp -j DROP


■ 체인 규칙 나열하기

설정돼 있는 체인의 규칙을 모두 볼 수 있다. 명령으로 -L을 사용해 가능하며 -v 옵
션과 같이 사용해 각 체인에 대한 패킷과 바이트 카운터 등의 자세한 정보를 함께
볼 수 있다.




# iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP

# iptables -L -v

Chain INPUT (policy ACCEPT 709 packets, 35362 bytes)

pkts bytes target     prot opt in       out     source              
destination

  0     0 DROP       icmp --  any    any     localhost.localdomain  
anywhere


Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

pkts bytes target     prot opt in       out     source              
destination


Chain OUTPUT (policy ACCEPT 423 packets, 39549 bytes)

pkts bytes target     prot opt in       out     source              
destination      


■ 체인 비우기

하나의 체인 안의 모든 규칙을 비우는 것은 ‘-F’ 명령을 사용해 간단하게 할 수
있다. 체인을 지정하지 않으면 모든 체인의 규칙을 지울 수 있다.

# iptables -F INPUT


■ 출처와 목적지 지정

출처('-s', '--source', '--src')와 목적지('-d', '--destination', '--dst') IP 주소를 지정하는데 4가지 방법이 있다. 가장 보편적인 방법은 'www.linuzine.com', 'localhost'처럼 도메인 네임을 이용하는 것이다. 두번째 방법은 '127.0.0.1'과 같은 IP 주소를 이용하는 것이다.

세번째와 네번째 방법은 IP 주소의 그룹을 지정하는 것으로 '199.95.207.0/24' 또는 '199.95.207.0/255.255.255.0' 같은 형태이다. 이 둘은 모두 199.95.207.0
부터 199.95.207.255 사이의 모든 IP 주소를 지정한다. '/' 다음의 숫자는 IP 주
소의 어떤 부분이 의미 있는가를 나타낸다. '/32' 나 '/255.255.255.255' 가 기
본 값이다.(IP 주소의 모든 부분이 일치해야 한다.) 모든 IP 주소를 지정하는
데 '/0' 가 사용된다.


# iptables -A INPUT -s 0/0 -j DROP


많은 지시자들('-s'나 '-d' 같은)은 일치하지 않는 주소를 나타내기 위해 '!'('not'을 의미한다)로 시작하는 설정을 할 수 있다. 예로, '-s ! localhost' 는 localhost로부터 오는 패킷이 아닌 경우를 나타낸다.


■ 프로토콜 지정

프로토콜은 '-p' 지시자로 지정할 수 있다. 프로토콜을 숫자가 될 수 있고(IP의 프로토콜 번호를 알고 있다면) 'TCP', 'UDP', 'ICMP' 같은 이름이 될 수도 있다.
그리고 'tcp'는 'TCP'와 같은 역할을 한다. 프로토콜 이름 지정에도 '!'을 이용
할 수 있다. '-p ! TCP'


■ TCP 확장

TCP 확장은 '--protocol tcp' 가 지정되고 다른 적용이 지정되지 않으면 자동으로 적재된다. 이것은 다음과 같은 옵션을 제공한다.

--tcp-flags
뒤에 두개의 단어를 사용한다. 첫번째 것은 검사하고자 하는 지시자 리스트의 마스크이다. 두번째 단어는 지시자에게 어떤 것이 설정 될 것인지를 말해준다.

# iptables -A INPUT --protocol tcp --tcp-flags ALL SYN,ACK -j DROP

이것은 모든것이 검사돼야 함을 말한다. 그러나 SYN과 ACK만 설정된다.

--syn
'!' 옵션이 선행될 수 있다. 이것은 '--tcp-flags SYN,RST,ACK,SYN'의 약어이다.

--source-port,
'!' 옵션이 선행될 수 있다. 이후에 하나의 TCP 포트나 포트의 범위를 지정한다.

--sport
/etc/services 에 기록된 것과 같은 포트 이름이 사용될 수 도 있고 숫자로 나타낼 수도 있다. 범위는 두 개의 포트 이름을 '-'으로 연결해서 사용하거나 하나의 포트 뒤에 '-'를 사용하거나 하나의 포트 앞에 '-' 를 덧붙일 수 있다.

--destination-port, --dport
위의 내용과 같으나 목적지를 지정한다.

--tcp-option
'!' 나 숫자가 옵션에 선행될 수 있는데 숫자가 앞에 올 경우 그 숫자 와 TCP 옵션이 같은 경우의 패킷을 검사한다. TCP 옵션을 검사하려 할 때 완전한 TCP 헤더를 갖지 않는 것은 자동으로 드롭 된다.


■ iptables를 통한 포트관리

iptables는 테이블 형식으로 관리를 한다. 그리고 먼저 등록된 것이 효력을 발생하기 때문에 등록을 하는 순서가 중요하다. 모든 것을 거부하는 설정이 먼저 오게 되면 그 이후에 포트를 열어주는 설정이 와도 효과가 없다. 그러므로 허용하는 정책이 먼저 오고 나서 거부하는 정책이 와야 한다.


iptables -A INPUT -p tcp --dport 25 -j ACCEPT

iptables -A INPUT -p tcp --dport 22:30 -j DROP


이렇게 하면 먼저 25번 포트로 들어오는 것을 허용하고 난 후에 다른 것을 막아내기 때문에 제대로 된 설정이 된다.


iptables -A INPUT -p tcp --dport 22 -j ACCEPT


등록된 라인은 ssh를 사용하는 것을 허용하는 것이다. 출처(source)와 목적지 (destination)는 명시하지 않았기 때문에 전체포트와 IP가 대상이 된다. -dport 는 패킷이 대상으로 삼는 포트를 명시한 것이다 여기에서 22라고 표기한 것은 ssh서비스 포트이다. 그리고 마지막에 -j ACCEPT는 허용하도록 정책을 정하는 것이다.
따라서 여기로의 ssh서비스를 요청하는 패킷은 허용되도록 설정을 한 것이다.


■ 전체적인 설정

#!/bin/sh

# iptables 모듈 등록하기

modprobe iptable_filter

# ssh 열기

/usr/local/bin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# httpd 열기

/usr/local/bin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# pop3 열기

/usr/local/bin/iptables -A INPUT -p tcp --dport 109 -j ACCEPT

# pop2 열기

/usr/local/bin/iptables -A INPUT -p tcp --dport 110 -j ACCEPT

# imap 열기

/usr/local/bin/iptables -A INPUT -p tcp --dport 143 -j ACCEPT

# mysqld 열기

/usr/local/bin/iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

# ftpd 열기

/usr/local/bin/iptables -A INPUT -p tcp --dport 21 -j ACCEPT

# ftp-data 열기

/usr/local/bin/iptables -A INPUT -p tcp --dport 20 -j ACCEPT

# ircd 열어주기

/usr/local/bin/iptables -A INPUT -p tcp --dport 6667 -j ACCEPT

/usr/local/bin/iptables -A INPUT -p udp --dport 6667 -j ACCEPT

# 전부 거절하기

/usr/local/bin/iptables -A INPUT -p tcp --dport 1:30000 -j DROP

/usr/local/bin/iptables -A INPUT -p icmp --icmp-type echo-request -j
DROP


  이처럼 허용하는 서비스가 한정적이다. 우선 ssh, http, pop3, pop2, imap,
mysql, ftp, ircd를 위해서 서비스를 요청하는 패킷은 허용하고 나머지는 전부 거부하는 설정이다. 이 설정을 자세히 보면 tcp와 icmp를 대상으로 했다. 거절하는 줄인


/usr/local/bin/iptables -A INPUT -p tcp --dport 1:30000 -j DROP


이 라인에서 --dport 다음에 1:30000 으로 지정돼 있다. 이 부분은 서버를 경유해서 다른 곳으로 가고자하는 경우에 클라이언트 프로그램이 사용할 포트를 남겨주기 위함이다. 1번포트에서 30000번 포트까지는 완전히 tcp에 대해서 막는 것이다.

만약에 서버에서 나갈 이유가 없으면 전부 막으면 된다. 1:65535 로 설정하면 전체포트가 막힌다. iptables 설정은 조금만 공부를 하면 쉽게 습득이 가능하다. 그러므로 문서를 보는 것이 중요하다. 이 설정은 기본이므로 좀더 많은 것은 관련 문서를 이용하기를 바란다.  
반응형

'OS > LINUX' 카테고리의 다른 글

리눅스 & 유닉스에서 화일 갯수 세기  (0) 2007.10.29
텔넷 putty ssh-keygen으로 자동 로그인하기  (0) 2007.10.26
Grep 계열 명령어  (0) 2007.10.25
[LINUX] iptables  (0) 2007.10.25
iptables  (0) 2007.10.25
Posted by [PineTree]
OS/LINUX2007. 10. 25. 20:22
반응형
grep 계열 명령어

1.grep 명령어

1.1 grep의 의미

grep : 파일 전체를 뒤져 정규표현식에 대응하는 모든 행들을 출력한다.
egrep : grep의 확장판으로, 추가 정규표현식 메타문자들을 지원한다.
fgrep : fixed grep 이나 fast grep으로 불리며, 모든 문자를 문자 그래도 취급한다. 즉, 정         규표현식의 메타문자도 일반 문자로 취급한다.

1.2 grep의 동작 방법

grep에서 사용하는 정규표현식 메타문자
메타문자
기    능
사용 예
사용 예 설명
^
행의 시작 지시자
'^love'
love로 시작하는 모든 행과 대응
$
행의 끝 지시자
'love$'
love로 끝나는 모든 행과 대응
.
하나의 문자와 대응
'l..e'
l 다음에 두 글자가 나오고 e로 끝나는 문자열을 포함하는 행과 대응
*
선행문자와 같은 문자의 0개 혹은 임의개수와 대응
' *love'
0개 혹은 임의 개수의 공백 문자 후에 love로 끝나는 문자열을 포함한 행과 대응
[]
[] 사이의 문자 집합중 하나와 대응
'[Ll]ove'
love나 Love를 포함하는 행과 대응
[^ ]
문자집합에 속하지 않는 한 문자와 대응
'[^A-K]love'
A와 K 사이의 범위에 포함되지 않는 한 문자와 ove가 붙어있는 문자열과 대응
\<
단어의 시작 지시자
'\< SPAN>
love로 시작하는 단어를 포함하는 행과 대응(vi,grep에서 지원)
\>
단어의 끝 지시자
'love\>'
love로 끝나는 단어를 포함하는 행과 대응
(vi,grep에서 지원)
\(..\)
다음 사용을 위해 태그를 붙인다.
'\(lov\)ing'
지정된 부분을 태크1에 저장한다. 나중에 태그값을 참고하려면 \1을 쓴다. 맨 왼쪽부터 시작해 태그를 9개가지 쓸 수 있다. 왼쪽 예에서는 lov가 레지스터1에 저장되고 나중에 \1로 참고할 수 있다.
x\{m\}
문자 x를 m번 반복한다.
'o\{5\}'
문자 o가 5회 연속적으로 나오는 모든 행과 대응
x\{m,\}
적어도 m번 반복한다.
'o\{5,\}'
문자 o가 최소한 5회 반복되는 모든 행과 대응
x\{m,n\}
m회 이상 n회 이하 반복한다.
o\{5,10\}'
문자 o가 5회에서 10회 사이의 횟수로 연속적으로 나타나는 문자열과 대응

grep의 옵션
옵션
동작 설명
-b
검색 결과의 각 행 앞에 검색된 위치의 블록 번호를 표시한다. 검색 내용이 디스크의 어디쯤 있는지 위치를 알아내는데 유용하다.
-c
검색 결과를 출력하는 대신, 찾아낸 행의 총수를 출력한다.
-h
파일 이름을 출력하지 않는다.
-i
대소문자를 구분 하지 않는다.(대문자와 소문자를 동일하게 취급).
-l
패턴이 존재하는 파일의 이름만 출력한다.(개행문자로 구분)
-n
파일 내에서 행 번호를 함께 출력한다.
-s
에러 메시지 외에는 출력하지 않는다. 종료상태를 검사할 때 유용하게 쓸 수 있다.
-v
패턴이 존재하지 않는 행만 출력한다.
-w
패턴 표현식을 하나의 단어로 취급하여 검색한다.

# grep -n '^jack:' /etc/passwd
(/etc/passwd 파일에서 jack을 찾는다. jack이 행의 맨 앞에 있으면 행 번호를 화면으로 출력한다.)

1.3 grep과 종료 상태
grep은 파일 검색의 성공 여부를 종료 상태값으로 되돌려준다.
패턴을 찾으면 0, 패턴을 찾을 수 없으면 1, 팡리이 존재하지 않을 경우 2
sed,a자 등은 검색의 성공 여부에 대한 종료 상태값을 반환하지 않는다. 다만 구문 에러가 있을 경우에만 에러를 보고한다.

2. 정규표현식을 사용하는 grep의 예제
# grep NW datafile
# grep NW d*
(d로 시작하는 모든 파일에서 NW를 포함하는 모든 행을 찾는다.)
# grep '^n' datafile
(n으로 시작하는 모든 행을 출력한다.)
# grep '4$' datafile
(4로 끝나는 모든 행을 출력한다.)
# grep TB Savage datafile
(TB만 인자이고 Savage와 datafile은 파일 이름이다.)
# grep 'TB Savage' datafile
(TB Savage를 포함하는 모든 행을 출력한다.)
# grep '5\.' datafile
(숫자 5, 마침표, 임의의 한 문자가 순서대로 나타나는 문자열이 포함된 행을 출력한다.)
# grep '\.5' datafile
(.5가 나오는 모든 행을 출력한다.)
# grep '^[we]' datafile
(w나 e로 시작하는 모든 행을 출력한다.)
# grep '[^0-9]' datafile
(숫자가 아닌 문자를 하나라도 포함하는 모든 행을 출력한다.)
# grep '[A-Z][A-Z] [A-Z]' datafile
(대문자 2개와 공백 1개, 그리고 대문자 하나가 연이어 나오는 문자열이 포함된 행을 출력한다.)
# grep 'ss* ' datafile
(s가 한 번 나오고, 다시 s가 0번 또는 여러번 나온 후에 공백이 연이어 등장하는 문자열을 포함한 모든 행을 출력한다.)
# grep '[a-z]\{9\}' datafile
(소문자가 9번 이상 반복되는 문자열을 포함하는 모든 행을 출력한다.)
# grep '\(3\)\.[0-9].*\1 *\1' datafile
(숫자 3,마침표,임의의 한 숫자,임의 개수의 문자,숫자 3(태그),임의 개수의 탭 문자,숫자 3의 순서를 갖는 문자열이 포한된 모든 행을 출력한다.)
# grep '\<>
(north로 시작하는 단어가 포함된 모든 행을 출력한다.)
# grep '\' datafile
(north라는 단어가 포함된 모든 행을 출력한다.)
# grep '\<[a-z].*n\>' datafile
(소문자 하나로 시작하고, 이어서 임의 개수의 여러 문자가 나오며, n으로 끝나는 단어가 포함된 모든 행을 출력한다. 여기서 .*는 공백을 포함한 임의의 문자들을 의미한다.)

3. grep에 옵션 사용
# grep -n '^south' datafile
(행번호를 함께 출력한다.)
# grep -i 'pat' datafile
(대소문자를 구별하지 않게 한다.)
# grep -v 'Suan Chin' datafile
(문자열 Suan Chin이 포함되지 않은 모든 행을 출력하게 한다. 이 옵션은 입력 파일에서 특정 내용의 입력을 삭제하는데 쓰인다.
# grep -v 'Suan Chin' datafile > black
# mv black datafile
)
# grep -l 'SE' *
(패턴이 찾아진 파일의 행 번호 대신 단지 파일이름만 출력한다.)
# grep -w 'north' datafile
(패턴이 다른 단어의 일부가 아닌 하나의 단어가 되는 경우만 찾는다. northwest나 northeast 등의 단어가 아니라, north라는 단어가 포함된 행만 출력한다.)
# grep -i "$LOGNAME" datafile
(환경변수인 LOGNAME의 값을 가진 모든 행을 출력한다. 변수가 큰따옴표로 둘러싸여 있는 경우, 쉘은 변수의 값으로 치환한다. 작은따옴표로 둘러싸여 있으면 변수 치환이 일어나지 않고 그냥 $LOGNAME 이라는 문자로 출력된다.)

4. egrep
egrep(extended grep) : grep에서 제공하지 않는 확장된 정규표현식 메타문자를 지원  한다.
                                     grep와 동일한 명령행 옵션을 지원한다.
egrep에서 지원하는 확장 메타문자
메타문자
기능
사용 예
사용 예 설명
+
선행문자와 같은 문자의 1개 혹은 임의 개수와 대응
'[a-z]+ove'
1개 이상의 소문자 뒤에 ove가 붙어있는 문자열과 대응. move,approve,love,behoove 등이 해당된다.
?
선행문자와 같은 문자의0개 혹은 1개와 대응
'lo?ve'
l 다음에 0개의 문자 혹은 하나의 문자가 o가 나오는 문자열과 대응. love,lve 등이 해당된다.
a|b
a 혹은 b와 대응
'love|hate'
love 혹은 hate와 대응.
()
정규표현식을 묶어준다
'love(able|ly)'
lovable 혹은 lovely와 대응.
'(ov)+'
ov가 한 번 이상 등장하는 문자열과 일치.

4.1 egrep 예제
# egrep 'NW|EA' datafile
(NW나 EA가 포함된 행을 출력한다.)
# egrep '3+' datafile
(숫자 3이 한 번 이상 등장하는 행을 출력한다.)
# egrep '2\.?[0-9]' datafile
(숫자 2 다음에 마침표가 없거나 한 번 나오고, 다시 숫자가 오는 행을 출력한다.)
# egrep ' (no)+' datafile
(패턴 no가 한 번 이상 연속해서 나오는 행을 출력한다.)
# egrep 'S(h|u)' datafile
(문자 S 다음에 h나 u가 나오는 행을 출력한다.)
# egrep 'Sh|u' datafile
(패턴 Sh나 u를 포함한 행을 출력한다.)

5. 고정 grep 과 빠른 grep
fgrep : grep 명령어와 동일하게 동작한다. 다만 정규표현식 메타문자들을 특별하게 취급하지
          않는다.
# fgrep '[A-Z]****[0-9]..$5.00' file
([A-Z]****[0-9]..$5.00 이 포함된 행을 출력한다. 모든 문자들을 문자 자체로만 취급한다.)
반응형

'OS > LINUX' 카테고리의 다른 글

텔넷 putty ssh-keygen으로 자동 로그인하기  (0) 2007.10.26
LINUX 방화벽 프로그램 iptables  (0) 2007.10.26
[LINUX] iptables  (0) 2007.10.25
iptables  (0) 2007.10.25
[Linux] mrtg setting  (0) 2007.10.17
Posted by [PineTree]
OS/LINUX2007. 10. 25. 20:18
반응형
 

IPTABLES 을 사용하여 커널수준의 방화벽을 구성할 수 있다.

==============================================================================
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F INPUT
iptables -F OUTPUT

# 웹서버일경우 80으로 들어오는 요청과 1.1.1.1 에서들어오는 ssh 요청을
# 받아들인다.
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -s 1.1.1.1 --dport 22 -j ACCEPT

# 1초에 15번 이상의 HTTP 접근을 할경우 (DOS공격) 접근을 차단한다.

# 이기능을 사용하려면 커널컴파일 및 iptables 패치가 필요하다. (리눅스서버 보완관리 실무 P.298 참조)
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 15 -connlimit-mask 24 -j DROP

# 메일서버의 경우 동시에 5개이상 SMTP 접근자(스팸머)의 경우 5분동안
# 접근을 제한한다.
iptables -A INPUT -m recent --name spammer --rcheck --seconds 300 -j drop
iptables -A INPUT -p tcp --syn --dport 25 -m connlimit --connlimit-above 5 -m recent --name spammer --set -j DROP

# STRING 필터기능
# MSN 문자열이들어간 패킷 차단
iptables -A FORWARD -m string --string "messenger.msn.com" -j DROP
# 싸이월드로 접속차단
iptables -A FORWARD -p tcp --dport 80 -m string --string "Host: cyworld.nate.com" -j DROP

# 포트스캔을 차단한다.
iptables -A INPUT -m psd -j DROP

# 만약서버가 해킹당해 DOS공격지로 사용될때 적용시킴.
# DNS 쿼리이외에 UDP 패킷이 나가는 것을 방지
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p udp ! --dport 53 -m state --state NEW -j DROP

# 이외 모든 접근을 차단한다.
iptables -A INPUT -j DROP

==============================================================================

 

참고)

 

# DoS 공격 방지를 위한 설정
/sbin/iptables -t nat -A syn-flood -m limit -limit 12/s \ --limit-burst 24 -j RETURN
/sbin/iptables -t nat -A syn-flood -j DROP


# ssh 정책
/sbin/iptables -A INPUT -p tcp --dport 22 -m owner --uid-owner 0 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 22 -m owner --gid-owner 0 -j ACCEPT

반응형

'OS > LINUX' 카테고리의 다른 글

LINUX 방화벽 프로그램 iptables  (0) 2007.10.26
Grep 계열 명령어  (0) 2007.10.25
iptables  (0) 2007.10.25
[Linux] mrtg setting  (0) 2007.10.17
SELinux 에 대하여  (0) 2007.07.23
Posted by [PineTree]
OS/LINUX2007. 10. 25. 20:16
반응형

테스트용으로 사용하는 리눅스 서버에 있는 데이터베이스에 접근을 하려면

 

SSH 밖에 열려있지 않아서 불편해서 사무실에서 사용하는 ip 대역만

 

MySQL 데이터베이스에 직접 접근 할 수 있도록 열기로 했습니다.

 

리눅스 서버에는 iptables 를 사용해서 제한하고 있습니다.

 

현재 설정을 보려면 다음을 입력합니다.

 

# iptables -L

 

추가를 하겠습니다.

 

# iptables -A INPUT -p TCP -s xxx.xxx.xxx.0/24 --destination-port 3306 -j ACCEPT

 

이제 xxx.xxx.xxx.0 ~ 255 까지의 IP 대에서 접근이 가능합니다.

 

-A : 새로운 rule 을 추가하는 옵션 (INPUT, FORWARD, OUTPUT)

-p : 사용할 프로토콜을 지정 (TCP, UDP)

-s : 사용할 ip 주소를 지정

--destination-port : 사용할 포트를 지정

-j : 패킷처리방법을 지정(ACCEPT, DROP, REJECT)

 

추가했던 chain rule 을 제거하는 방법

 

# iptables -D INPUT -p TCP -s xxx.xxx.xxx.0/24 --destination-port 3306 -j ACCEPT

 

주의사항

위에서 처럼 명령을 사용해서 처리했을 경우 리부팅하면 추가된 설정이 없어지고 적용되지 않습니다.

부팅시에 적용하려면 보통 /etc/init.d/iptables 시작 스크립트에 내용을 기록해 둡니다.

 

반응형

'OS > LINUX' 카테고리의 다른 글

Grep 계열 명령어  (0) 2007.10.25
[LINUX] iptables  (0) 2007.10.25
[Linux] mrtg setting  (0) 2007.10.17
SELinux 에 대하여  (0) 2007.07.23
[linux] 리눅스의 각종 데몬들  (0) 2007.07.21
Posted by [PineTree]
OS/LINUX2007. 10. 17. 02:42
반응형
MRTG(Multi Router Traffic Grap her)는 펄(Perl)과 C 언어로 구성돼 있고, 유닉스와
NT에서 동작한다. 일, 주, 월, 년 간으로 트래픽 발생량을 그래프화해 보여주므로
시간대별 흐름을 파악하는데 좋은 분석 도구가 될 수 있다.

대체적으로 MRTG는 네트워크 장비인터페이스별 트래픽 분석, CPU나 메모리 사용률
분석, 모뎀별 포트 사용률 분석 등에 사용되고 있다. 그러나 트래픽 모니터링 뿐만
아니라, SNMP 값(MIB 값)을 이용해 다양한 모니터링이 가능하고 외부 프로그램을
사용할 수 있기 때문에 다양한 변형이 가능하며, MRTG가 생성하는 로그 값을 가공해
새 DB의 구축에도 응용할 수도 있다.

MRTG의 주요 기능

기본적으로 네트워크 장비가 SNMP를 지원한다면 MRTG를 사용할 수 있다. MRTG의 가장
큰 장점이라면 결과치의 흐름을 알 수 있기 때문에 사업 계획을 세우는 자료로 활용할
수 있고, 로그값을 가공해 여러 용도로 이용할 수 있는 것.

로그값을 가공하는 데는 여러 방법이 있겠지만, 필자는 주로 펄 언어를 사용했다.
그러나 PHP를 이용하면 복잡한 CGI 프로그램이 없어도 쉽게 웹 상에서 활용할 수 있을
것이다. 주로 활용되는 분야는 다음과 같다.

·장비의 특정 인터페이스에 대한 트래픽 모니터링

(그림 1)은 MRTG를 이용한 라우터에 관한 일간 그래프다. KT-IX와 155Mbps로 연결된
라우터의 1개 포트에 대한 트래픽을 보여주고 있다.

·CPU 사용률 모니터링

(그림 2)는 주간 그래프로, 라우터의 CPU 사용률을 보여주고 있다. 이를 통해
입출력이 같음을 알 수 있다.

·RAS 장비에 대한 포트 사용률 모니터링

(그림 3)은 가입자들이 014XY로 접속한 포트 수를 보여준다. 이 값은 RAS 장비에서
현재 접속한 사용자 수를 읽어와서 펄 언어로 작성된 프로그램을 이용해 가공한 후,
MRTG를 이용한 그래프 작성법을 이용했다.

·특정 서버에 대한 세션 수 측정

(그림 4)는 일간 그래프로, 프록시 서버의 TCP 세션 수를 보여 준다. 사용된 OID는
‘1.3.6.1.2.1.6. 9.0’.

·MRTG의 로그 값 분석

:
966919200 1545 2958 1545 2958
966918900 1505 2927 1545 2958
966918600 236 1942 236 1942
:

MRTG 그래프는 이 로그 값을 기초로 해서 만들어진다. 형식은 unix time, current_in,
current_out, max _in, max_out로 나타난다. 유닉스 시간은 1970년 1월 1일을 0으로
해서 1초마다 카운트한 값이다. 로그 시간을 보면 5분마다 쌓이는 것을 볼 수 있다.
각 레코드가 공백으로 구분돼 있기 때문에, C언어나 펄 언어 등을 이용해서
current_in 값을 배열로 저장해, 매일 특정 시간대의 평균 트래픽 등을 계산하는데
이용할 수 있다.

유닉스에서 MRTG 구축하기

MRTG는 소스 코드로 제공되기 때문에 다운로드 받은 후 컴파일하는 작업이 필요하다.
따라서 컴파일하기 위해서는 C 컴파일러가 설치돼 있어야 한다. 그외 유닉스에서
MRTG를 수행하는 데 필요한 프로그램으로써는 Perl, gd, libpng, zlib가 있어야 한다.
그리고 웹으로 공유하기 위해서는 웹 서버가 필요하다.

① GCC 설치하기

웹(http://gcc.gnu.org)에서 다운로드 받아서 인스톨하면 된다.

② Perl 설치하기

웹에서(www.perl.com) v5.005 이상을 다운로드 받아서 설치한다. 이미 설치가 돼 있는
경우, 버전 확인은 ‘perl -v’로 알 수 있다.

gzip -d stable.tar.gzip (stable이라는 이름에서 최신의 안정된 버전 이라는 뜻으로
추정)
tar -xvf stable.tar
mv ./stable*/ /usr/local/perl/ (프로그램은 주로 /usr/local/ 디렉토리로
이동시킨다)
cd /usr/local/perl
rm -f config.sh(기존에 설치된 config shell 파일을 지움)
sh Configure (configure 파일 생성)
make (소스 파일이므로 컴파일 함)
make test
make install(컴파일 후 인스톨 함)

③ 그래픽 생성용 라이버러리 만들기

MRTG가 생성하는 그래픽 파일의 형식이 PNG라고 위에서 언급했다. 이를 위해 gd
라이브러리가 필요하고, 이 gd 라이브러리는 2개의 라이브러리(zlib, libpng)가
설치돼 있어야 컴파일이 가능하다.

a. zlib(그래픽 파일을 압축함)

웹(www.info-zip.org/pub/infozip/zlib)에서 최신 버전을 다운받아 설치한다.

gzip -d zlib.tar.gz
tar -xvf zlib.tar
mv ./zlib*/ /usr/local/zlib/(program은 주로 /usr/local/ 디렉토리로 이동)
cd /usr/local/zlib
./configure
make
make test
make install

b. libpng(zlib의 그래픽 파일을 PNG 포맷으로 변형)

웹(www.libpng.org/pub/png)에서 다운로드 한다.

gzip -d libpng-1.0.8.tar.gz (stable 이라는 이름에서 최신의 안정된 버전을 말하는
것 같음)
tar -xvf libpng-1.0.8.tar
mv ./libpng*/ /usr/local/libpng/(program은 주로 /usr/local/ 디렉토리로 이동)
cd /usr/local/libpng
cp scripts/makefile.std makefile(scripts 디렉토리 밑에서 해당 OS에 맞는 makefile
선택해서 makefile로 복사함)
make test
make install

c. gd

웹(www.boutell.com/gd)에서 다운로드 한다.

gzip -d gd-1.8.3.tar.gz (stable 이라는 이름에서 최신의 안정된 버전을 말하는 것
같음)
tar -xvf gd-1.8.3.tar
mv ./gd*/ /usr/local/gd/ (program은 주로 /usr/local/ 디렉토리로 이동)
cd /usr/local/gd
make
make install

④ MRTG 설치하기

웹(http://ee-staff.ethz.ch/~oetiker/webtools/ mrtg/pub/beta)에서 최신 버전을
다운로드 한다.

gzip -d mrtg-2.9.0pre21.tar.gz | tar -xvf (gzip과 tar를 한꺼번에 실행함)
mv ./mrtg*/ /usr/local/mrtg/
cd /usr/local/mrtg
./configure --with-gd=/usr/local/src/gd
--with-z=/usr/local/src/zlib
--with-png=/usr/local/src/libpng(라이버러리들이 있는 위치를 지정해줌)
make

MRTG가 이상없이 설치됐다면 run 디렉토리 밑에 mrtg, cfgmaker와 같은 실행 파일이
만들어지게 된다. run 디렉토리 밑에 있는 실행 파일들은 꼭 이 위치가 아니더라도
실행하는 데는 지장이 없다.

⑤ cfg 파일 생성

이제 cfgmaker를 이용해 mrtg.cfg 파일(꼭 이름이 mrtg.cfg일 필요는 없다. cfg
성격에 맞게, router.cfg, switch.cfg 등의 이름을 만들어 주면 된다)을 형식에 맞게
만들어서 실행하면 된다.

cfgmaker --global ‘WorkDir: /home/httpd/mrtg’
--global ‘Options[_]: bits,growright’
--output /home/httpd/mrtg/mrtg.cfg
community at router.abc.xyz

WorkDir은 결과 파일이 만들어질 디렉토리를 말한다. 옵션은 여러 가지가 있는데,
비트를 선택하지 않으면 바이트가 기본값이 되고, growright는 그래프를 오른쪽에서
왼쪽 순서로 그리도록 한다.

Output은 mrtg.cfg 파일이 생성되는 경로를 지정하는 것이고, 마지막 줄은 실제
모니터링 하려고 하는 네트워크 장비를 적어 준다. 여기서 community는 장비마다 SNMP
값을 갖고 올 때 사용하는 고유값인데, 기본적으로 public을 사용한다.
router.abc.zyz는 네트워크 장비의 IP 주소나 호스트명을 적으면 된다.

⑥ MRTG 실행

/usr/local/mrtg/run/mrtg /home/httpd/mrtg/mrtg.cfg

이렇게 실행하면 그 결과 값이 /home/httpd/mrtg 디렉토리 밑에 만들어진다. 처음
실행하면 경고 메시지가 뜨는데, 이는 비교할 수 있는 로그값이 없기 때문이므로
걱정하지 않아도 된다. 위의 명령을 2, 3번 정도 반복하면 정상적인 트래픽을 볼 수
있다.

⑦ 5분마다 MRTG 실행하기

위의 명령이 주기적으로 실행되게 하기 위해서는 crontab을 이용하면 된다. 만일 매
5분마다 실행하기 위해서는 crontab 파일에 다음 한 줄을 추가하면 된다(crontab
파일은 시스템마다 다른데, 우리 환경의 경우 /var/spool/cron/crontabs/root 파일을
이용한다).

0,5,10,15,20,25,30,35,40,45,50,55 * * * *
[CODE]<mrtg-bin>/mrtg <path to mrtg-cfg>/mrtg.cfg[/CODE]

그리고 이를 적용하려면 ‘crontab root’ 하면 된다.

⑧ 아파치 서버 설치

마지막으로 html 파일들을 웹 브라우저를 통해 보기 위해서는 웹 서버를 구동해야
되는데, 유닉스 시스템에서 가장 많이 사용되어지는 아파치(Apache) 서버에 대해
간단히 설명하겠다(보다 자세한 것은 아파치 홈페이지를 참조하기 바란다). 먼저
웹(www.apache.org /dist)에서 최신 버전을 다운로드 받아 설치한다.

gzip -d apapche_1.3.12.tar.gz | tar -xvf
mv ./apache*/ /usr/local/apache/
cd /usr/local/apache
./configure
make
make install
conf/httpd.conf 파일 수정작업(기본적인 웹서버로 동작하기 위해 필요한 설정을 하는
곳)
/usr/local/apache/bin/apachectl start(아파치를 실행)

윈도우 NT에서 MRTG 설치하기

윈도우 NT에서의 MRTG 설치는 간단하다. 윈도우 NT용 펄(perl) 프로그램과 MRTG를
다운로드 받아서 설치하면 된다.

① 펄 설치하기

웹에서(www.ActiveState.com)에서 ActivePerl 616을 다운 받아 설치한다. 설치 후에는
경로가 제대로 설정됐는지 [제어판] → [시스템] → [환경변수]에서 확인.

② MRTG 설치하기

MRTG도 마찬가지로 MRTG
사이트(http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/pub/beta)에서 윈도우 NT용
최신버전을 다운로드 받아서 설치만 하면 된다(윈도우 NT용은 확장자가 .zip인 파일).
이전 버전에서는 MRTG 파일을 수정해야 됐지만, 이제는 그럴 필요가 없다. MRTG
설치가 끝나면 이제 실제 cfg 파일을 만든 후 MRTG가 제대로 동작하는지 확인하는
과정만 거치면 된다.

③ cfg 파일 생성하기

c:>perl cfgmaker public@10.10.10.1 --global “WorkDir: c:” -output mrtg.cfg

(IP주소가 10.10.10.1인 라우터인 경우 인터페이스별로 고유의 포트 번호를 가진 cfg
파일을 만들게 된다)

④ MRTG 실행하기

c:>perl mrtg mrtg.cfg

이렇게 실행하면 유닉스도 마찬가지지만 에러 메시지가 나타나는데, 2번 더 반복하면
더 이상 에러 메시지없이 정상 그래프를 출력하게 된다. 유닉스와 마찬가지로 5분마다
MRTG를 실행하기 위해서는 윈도우 NT의 AT 스케줄러를 이용하거나 MRTG 스태틱
업데이터(Static Updater) 서비스를 사용할 수도 있지만, 간단히 mrtg. cfg 파일에
‘RunAsDamon: yes’를 추가하면 된다.

전용회선 가입자별로 MRTG 화면 보여주기

ISP나 그외 전용회선을 구축해 회선 임대를 하는 공공기관이나 학교 등에서는 해당
가입자별로 ID와 패스워드를 부여해 접속한 ID별로 MRTG 그래프를 볼 수 있도록 할 수
있다. 이때 이용되는 것은 펄 언어와 아파치 서버(물론 GCI를 처리하는 다른 언어도
사용 가능).

한 ISP와 전용회선으로 연결된 랜드라는 회사에 ID와 패스워드를 부여해 이 ID로 자기
회사의 전용회선 트래픽을 볼 수 있도록 ID 입력창→ 인증창→ MRTG 화면의 순서를
거치면 된다.

① ID와 패스워드 정하기

랜드 - ID: land, 패스워드: ld1234

② cfg 파일 생성

mrtg.cfg파일에 land 라는 이름으로 등록하자. 여기서 WorkDir은 /home/httpd/MRTG/
설정.

③ mrtg 실행

‘mrtg mrtg.cfg’를 실행하면, /home/httpd/MRTG/밑에 land-day.png, land-week.png,
land-mon th.png, land-year.png, land.html 파일이 생성된다.

④ ID별로 디렉토리 생성해 작업하기

ID와 같은 이름으로 home/httpd/land 라는 디렉토리를 만들자.

home/httpd/land 디렉토리에 .htpasswd파일과 .htaccess파일을 생성해 아래와 같이
수정한다. 이 파일의 역할은 웹 상에서 이 디렉토리로 접근하려면 ID와 패스워드를
물어보는 역할을 한다.

mrtg# cat .htaccess
AuthName MRTG (이 값은 시스템마다 다름)
AuthType Basic
AuthUserFile /home/httpd/land/.htpasswd ( 패스워드가 저장된 파일 지정)
AuthGroupFile /dev/null
[CODE]<Limit GET POST> require valid-user </Limit>[/CODE]
mrtg# cat .htpasswd
land:z5EPIRJHqBQV (암호화된 패스워드)

⑤ Symbolic Link 설정 단계

현재 MRTG 결과 파일들은 ‘/home/httpd/MRTG/’에 저장되어 있고, 외부에서 ID별로
접속할 때는 ‘/home/httpd/land/로 연결되도록 구성하고자 한다. 이 경우 실제
파일들이 있는 위치를 ‘ln’명령을 사용하여 symbolic link를 시킬 수 있다.

mrtg# pwd
/home/httpd/land
mrtg# ln -s /home/httpd/MRTG/land-day.png
mrtg# ln -s /home/httpd/MRTG/land-week.png
mrtg# ln -s /home/httpd/MRTG/land-month.png
mrtg# ln -s /home/httpd/MRTG/land-year.png
mrtg# ln -s /home/httpd/MRTG/land.html

⑥ 웹 상에서 입력한 ID를 구분하는 프로그램

마지막으로 웹 상에서 ID(land)를 입력하고 ‘/home /httpd/land/land.html’ 창이
뜨도록 하면, 이 디렉토리에는 ‘.htaccess’파일이 있기 때문에 인증창이 뜨게 된다.
다시 말해 웹페이지에서 ID를 입력받도록 페이지를 만들고, CGI를 이용해 ID별로 해당
MRTG 그래프가 뜨도록 하면 된다. 필자는 CGI 프로그램을 펄을 이용해 작성해 봤다.

[ 웹페이지상에서 ID를 입력 받는 부분]

[CODE]<form method=”GET” action=”http://www.mrtg.co.kr/cgi-bin/id.pl”> <b> ID: </b><INPUT type=”text” name=”fname”>[/CODE]

[펄 프로그램 (id.pl)]

웹페이지에서 넘어온 ID를 이름(fname)과 값(id)으로 분리하는 작업

[CODE] $qs = $ENV{‘QUERY_STRING’}; # ‘fname&land’ 와 같은 형식으로 넘어오기 때문에, ‘&’를 기준으로 분리해 저장 @qs = split(/&/, $qs); foreach $i (0 .. $#qs) { # convert plus chars to spaces $qs[$i] =~ s/+/ /g; # convert the hx characters $qs[$i] =~ s/%(..)/pack(“c”, hex($1))/ge; # split each one into name and value ($name, $value) = split(/=/, $qs[$i],2); # $value변수에 ‘land’가 할당된다. # create the associative element $qs{$name} = $value; } # 실제 html 형식으로 출력하는 부분. print “Content-type: text/html”, “”; print “<HTML>”, “”; print “<HEAD><TITLE>$value MRTG 트래픽</TITLE></HEAD>”, “”; # mrtg.co.kr이라는 도메인을 운영할 경우 아래와 같이 사용 가능 print “\u8221”http://www.mrtg.co.kr/$value/$value.html\u8221”>”, “”; print “</HTML>”, “”; [/CODE]
이상으로 MRTG에 대한 기본적인 내용과 설치 방법, 그리고 몇 가지 응용 예를
살펴봤다. 이외에도 MRTG를 활용해 수 있는 일이 많다.


--------------------------------------------------------------------------------

MRTG 지원 가능한 플랫폼

리눅스 1.2.x, 2.0.x, 2.2.x
SunOS 4.1.3
솔라리스 2.4, 2.5, 2.5.1, 2.6, 7
AIX 4.1.4, 4.2.0.0
HP-UX 9,10,11
IRIX 5.3, 6.2
BSDI BSD/OS 2.1, 4.x, 3.1
NetBSD(sparc)
FreeBSD 2.1.x, 2.2.x, 3.1, 3.4
OpenBSD 2.5, 2.6
디지탈 유닉스 4.0
SCO 오픈 서버 5.0
Reliant UNIX
NeXTStep 3.3
OpenStep 4.2
윈도우 NT 3.51, 4.0, 2000

--------------------------------------------------------------------------------

MRTG 이용해 라우터 포트와 CPU 사용률 체크하기

아래의 cfg 파일은 시스코 카탈리스트 5500 장비에서 MRTG를 이용해 모니터링할 수
있는 방법을 설명한 것으로써 3번과 5번 포트 사용률과 CPU 사용률을 보여주고 있다.

WorkDir: D: (윈도우 NT인 경우),
WorkDir: /home/httpd/mrtg (유닉스인 경우)

Interval: 5 (5분마다 반복)
RunAsDamon: yes (운영체제로 하여금 매 5분마다 mrtg를 실행하도록 함)

3번 포트의 경우 기본적인 키워드만 사용한 경우로써, 10Mbps 이더넷 포트에 대한
트래픽을 보여준다.

MaxBytes는 125×대역폭(bit)를 의미하므로, 10Mbps인 경우 1250000가 된다.
[CODE] Target[cat5500_3]: 3:public@10.10.10.1 MaxBytes[cat5500_3]: 1250000 Title[cat5500_3]: LC-Bridge (sample-device): ether0 PageTop[cat5500_3]: <H1>Traffic Analysis for ether0</H1> <TABLE> <TR><TD>System:</TD><TD>LC-Bridge inAndover</TD></TR> <TR><TD>Maintainer:</TD><TD>Administrator</TD></TR> <TR><TD>Interface:</TD><TD>ether0(3)</TD></TR> <TR><TD>IP:</TD><TD>sample-device(10.10.10.1)</TD></TR> <TR><TD>Max Speed:</TD> <TD>1250.0 kBytes/s (ethernetCsmacd)</TD></TR> </TABLE> [/CODE]
5번 포트의 경우 추가의 키워드를 적용했고, 웹 페이지에 나타나는 부분도 수정을
했음. 키워드에 관해서는 ‘doc/co nfig.txt’를 참조.

[CODE] Target[cat5500_5]: 5:public@10.10.10.1 MaxBytes[cat5500_5]: 1250000 Title[cat5500_5]: Catalyst 5500 Port 5번 PageTop[cat5500_5]: <H1> Catalyst 5500 Port 5번 트래픽 </H1> <TABLE> <TR><TD>Interface:</TD><TD>Ethernet 1/5</TD></TR> <TR><TD>IP:</TD><TD>10.10.1.1</TD></TR> <TR><TD>Max Speed:</TD> <TD>10.0 Mbit/s (ethernetCsmacd)</TD></TR> </TABLE> [/CODE]
### XScale YScale------------
XScale[cat5500_5]: 1.5
YScale[cat5500_5]: 1.5
WithPeak[cat5500_5]: ymw
Unscaled[cat5500_5]: ymwd
Options[cat5500_5]: growright, bits
Colours[cat5500_5]: GREEN#00eb0c,BLUE#1000ff,DARK GREEN#006600,VIOLET#ff00ff
YLegend[cat5500_5]: Bits per Second
ShortLegend[cat5500_5]: b/s
Legend1[cat5500_5]: Incoming Traffic in Bits per Second
Legend2[cat5500_5]: Outgoing Traffic in Bits per Second
Legend3[cat5500_5]: Maximal 5 Minute Incoming Traffic
Legend4[cat5500_5]: Maximal 5 Minute Outgoing Traffic
LegendI[cat5500_5]: In:
LegendO[cat5500_5]: Out:

카탈리스트 5500의 CPU 사용률을 보기 위해서는 포트 번호 대신 특정 OID(Object ID =
MIB값)가 필요하다. mrtg는 기본적으로 인력과 출력의 2개 값이 필요하므로, CPU
사용률과 같이 값이 하나인 경우에는 ‘&’를 기준으로 같은 OID를 적어 주면
된다.

Target[cat5500_cpu]:1.3.6.1.4.1.9.2.1.58.0&1.3.6.1.4.1.9.2.1.58.0:public@10.10.10.1
RouterUptime[cat5500_cpu]: public@10.10.10.1
MaxBytes[cat5500_cpu]: 100
Title[cat5500_cpu]: CPU LOAD
PageTop[cat5500_cpu]:

CPU Load %


Unscaled[cat5500_cpu]: ymwd
ShortLegend[cat5500_cpu]: %
XSize[cat5500_cpu]: 380
YSize[cat5500_cpu]: 100
YLegend[cat5500_cpu]: CPU Utilization
Legend1[cat5500_cpu]: CPU Utilization in % (Load)
Legend2[cat5500_cpu]: CPU Utilization in % (Load)
Legend3[cat5500_cpu]:
Legend4[cat5500_cpu]:
LegendI[cat5500_cpu]:
LegendO[cat5500_cpu]: Usage
Options[cat5500_cpu]: gauge

출처 : http://www.linuxc.net
반응형

'OS > LINUX' 카테고리의 다른 글

[LINUX] iptables  (0) 2007.10.25
iptables  (0) 2007.10.25
SELinux 에 대하여  (0) 2007.07.23
[linux] 리눅스의 각종 데몬들  (0) 2007.07.21
LINUX RPM 관련 명령어  (0) 2007.07.03
Posted by [PineTree]
OS/SOLARIS2007. 8. 28. 02:20
반응형
반응형
Posted by [PineTree]
OS/SOLARIS2007. 8. 28. 01:57
반응형

IPMP는 Solaris에서 기본으로 제공하는 기능으로서 Network Adapter에 대한
Single Point Failure로부터 보호되며 또한 동일한 IP link에 여러개의
Network Adapter가 연결되어 있으면 Throughput도 증가된다.

Feature NAFO IPMP
===================================================================
Failure 감지 Physical Link IP Link
Fail over time 20sec 이상 2~3 sec이내
Active상태 1개만 Active 모두 Active가능
Load Balance No Load Spreading
===================================================================

Feature Trunking IPMP
===================================================================
Inbound Load Spreading Y Y (1)
Uses Single IP address Y N
Uses Single MAC address Y N
Supports hot standby NIC N Y
Supports built-in NICs N (4) Y
Bundled with Solaris N (5) Y (S8 10/00)
Supports Many Link Layers N Y
Outbound Load Spreading Y Y
Auto NIC Failover Y Y
Basis for later
SunCluster NIC failover N Y (3.next)
Supports Solaris <= S8 Y N

(1)Future release will implement IEEE 802.3ad and which will support
auto inbound load balancing for switches which support 802.3ad.
Most switches using trunking implement MAC address hashing for
load balancing so that inbound load from multiple clients will
be evenly split across available ports.
====================================================================

- Failure Detection
Network adapter가 fail되었을때 이를 감지하여 자동적으로 다른 Network
adapter를 통하여 네트워크에 접속할수 있도록 전환해준다. 감지하는 방
법은 각 adapter에 Test IP를 부여하여 이를 이용하여 네트워크상에 있는
target과 ICMP request와 Reply에 의하여 판단한다.

- Outbound Load Spreading
Outbound 되는 패켓에 대하여 여러개의 Network adapter에 분산되어 전달
된다. 그러나 한개 이상의 Client와 통신할때만 이루어진다.

- Repair Detection
Fail된 Network dapter에 대하여 연속적으로 체크를 하며, Repair되었을때
는 자동적으로 Fail back할수 있다.(Failbacks를 enable했을때)

< IPMP를 구성하기위한 요구사항>

- Hardware지원
IPMP는 SPARC, Intel 환경 모두 지원하여, 다른종류의 Network adapter
(즉,le, hme, ge, qfe등)들과도 같은 IPMP group에 구성될수 있다.

주의사항:IPMP구성시 "local-mac-address?"는 true로 해야한다.

- Software
IPMP는 Solaris 8 Updated 2(H/W 10/00)에서부터 지원된다.

< IPMP 테스트 target선정방법>
in.mpathd 해당 network adapter를 검증하기위해서 Target정하는데 있어서
자동적으로 정해지며 이는 임으로 구성할수 없다.

1) netstat -r에서 router를 찾아 target 등록

2) 위에서 router가 없으면 없으면 같은 link상에 있는 임의의 Host들을
Multicast packet을 보내(IPv4=224.0.0.1, IPv6=ff02::1)을 모든 host
들에게 보낸 응답자들중에서 선정한다. 만일 router나 host가 ICMP echo
에대하여 응답이 하나도 없으면 in.mpathd는 target을 찾을때까지 연속
적으로 Multicast을 보낼것이다.

3) 위와 같은 상황에서 router가 없으면 brocast 를 보내기 때문에 해당
네트워크상에 부하를 준다. 이를 회피하는 방법으로 infodoc 41422에
설명된바와 같이 임으로 해당 네크워크상의 호스트를 target으로
선정하여 IPMP를 구성한 host routing table에 등록해준다.

예) host0(10.1.1.1),host1(10.1.1.2) : 네트워크상의 시스템,
host2(10.1.1.3): IPMP를 구성한 시스템

host2># route add host 10.1.1.1 10.1.1.1
host2># route add host 10.1.1.2 10.1.1.2
위와 같이 host2에 routing table에 등록을 해주면 in.mpathd는
등록된 router를 테스트 target시스템으로 등록을한다.
** 만일 동일 네트워크상에 계층적으로 LAN switch가 구성되어져
있다면, 가장 상위에 연결되어있는 시스템을 target으로 정한다면
해당 경로에 있는 switch도 점검이 가능하다.

< NIC의 Failure/Repair감지>
in.mpathd는 이는 위에서 정한 target(host)들에 대하여 ICMP echo request
/replies(PING-PONG)에 의해서 감지한다.

< IPMP Configuration >

Example)
192.9.200.1 v480 loghost ; 실제 시스템 IP
192.9.200.3 v480-test ; ce0 테스트 어드레스
192.9.200.4 v480-second-test ; ce1 테스트 어드레스

[ ] 다음과 같이 IPMP구성

# ifconfig ce0 group v480-group ; v480라는 그룹에 설정
# ifconfig ce1 group v480-group ; v480라는 그룹에 설정

[ ] 로지칼 인터페이스 생성 및 테스트 IP 어드레스 설정 테스트 IP 어
드레스는 각 NIC의 로지칼 인터페이스를 만들어 그에 할당 해 사용
합니다.

# ifconfig ce0 addif v480-test deprecated -failover netmask
+ boradcast + up
(deprecated 파라미터는 애플리케이션에서 사용 못하게 함)

# ifconfig ce1 v480-second-test deprecated -failover netmask +
broadcast + standby up
여기까지 하면 설정 완료 되고, ifconfig 로 설정을 확인

[ ] 다음은 영구적으로 사용하기 위해 파일에 등록

==== /etc/hostname.ce0 ====
v480 netmask + broadcast + group v480-group up
addif v480-test deprecated -failover netmask + boradcast + up

==== /etc/hostname.ce1 ====
v480-second group v480-group deprecated -failover netmask +
boradcast + standby up

반응형
Posted by [PineTree]