OS/LINUX2006. 10. 11. 00:56
반응형

이번에는 랜카드 2개를 묶어 하나의 ip를 부여한 다음, 대역폭을 2배로 사용하는 방법에 대해서 강좌를 쓰겠습니다. 요즘 UTP케이블을 사용한 Giga(1000MB/Sec) 랜카드가 많이 나왔습니다. 테스트 결과 150M/Sec 의 성능정도밖에 내지 못했습니다. 그러나 본 강좌에서 사용되는 bonding는 대역폭의 2배 200M/Sec 가 나왔습니다. 물론 Giga bit 에 맞는 케이블을 사용하지 않았는지는 모르지만, 사용된 케이블은 카테고리 6 이였습니다. 현재는 스위치및 허브가 100M 이고, giga bit은 고가입니다.  많은 분들께 도움이 되었으면 좋겠다는 마음으로 이렇게 강좌를 써 내려갑니다.

1. Bonding 이란?
 여러장의 이더넷 카드를 묶어 하나의 ip를 부여하여 그만큼 대역폭을 확보하는 방법 입니다. 물론 케이블 불량을 대비한 고장대비 방법이라고도 볼  수 있습니다.

2. 준비운동.
 랜카드 2장 (난 100M 짜리 2장을 준비했습니다.. )
 커널에서 : Network device support 에서 Bonding driver support 가 채크되어야 합니다..(RedHat은 기본)

3. /etc/sysconfig/network 파일
echo 'NETWORKING=yes
HOSTNAME=fileserver
GATEWAY=192.168.0.1
GATEDEV=bond0
'>/etc/sysconfig/network

위와같이 그대로 입력하면 설정이 바뀝니다. 물론. 중간에"HOSTNAME=호스트이름" 으로 변경하시기 바랍니다. 그리고 "GATEWAY=게이트웨이아이피" 로설정하시기 바랍니다.

4.bond0 설정
echo 'DEVICE=bond0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.100
NETMASK=255.255.255.0
NETWORK=192.168.0.0
' > /etc/sysconfig/network-scripts/bond0
 이 부분은 서버의 ip를 셋팅합니다. "IPADDR=서버아이피"를 설정하시고, "NETWORK=네트웍아이피"를 설정하시기 바랍니다.

5. ifcfg-ethXX 설정
echo 'DEVICE=eth0
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
'> /etc/sysconfig/network-scripts/ifcfg-eth0
이 부분은 묶일 물리적 장치를 정합니다. eth0 는 첫번째 랜카드입니다. 위와같이 설정합니다.

echo 'DEVICE=eth1
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
'> /etc/sysconfig/network-scripts/ifcfg-eth1
eth1번 은 2번째 랜카드이며 위와같이 설정합니다.

강좌에서 사용된 이더넷카드는 2개 입니다. 하지만, 그 이상을 사용하시려면, 계속 추가 한 다음, eth2, eth3 계속 설정해 주면 끝납니다. 위와같이.

6. 모듈로 binding driver 을 올렸다면, eth0와 eth1 전에 모듈을 올려야 합니다..
alias bond0 bonding
alias eth0 8139too
alias eth1 8139too

  커널 2.4.XX 에서
 /etc/modules.conf
- 그런다음 insmod 로 모듈을 올려 준다.
insmod bonding

  커널 2.6.XX
 /etc/modprobe.conf
modprobe bonding
## 위와같이 모듈을 인식시켜 줍니다.
ifconfig eth0 up 0.0.0.0
 ifconfig eth1 up 0.0.0.0
## 위 방법은 안될때 하는 방법입니다. (생략했을때 문제 생기면 하시기 바랍니다.)

 ifenslave bond0 eth0
 ifenslave bond0 eth1
위왁같은 명령으로 bond0에 eth0와 eth1을 슬레이브로 등록시킵니다.

7. network 스크립트 재 시작.(꼭 로컬에서 하시기 바랍니다.~~)


8. 삽질의 결론
 1. 단점 : 
            - 같은 스위치에 꽂혀야 한다.
            - 서버가 못따라 주면 생각만큼 성능이 나오지 않는다.
 2. 장점 :
           - 이론상 속도 2배 (또는 그 이상~~)
           - 둘 중에 선 하나 뽑아두 통신 ~~ 잘한다. (리던던시 기능)


이렇게 강좌를 마칩니다. 물론 하나의 간단한 팁이며.. 알고계시면 많은 되리라 생각하고 강좌를 마무리합니다.
혹시 본 강좌에 개선점이 있으면 아래의 메일 주소로 메일 한통 부탁드립니다.

 2005.10.28 : 전현규님의 개선사항으로 아래 내용 추가합니다.
   혹시 부팅할 때 잘 올라오지 않는다면, 아래와 같이 수정해 보시기 바랍니다.
      RedHat 경우, /etc/init.d/network 파일에서,
     # Bring up xDSL and CIPE interfaces 라인 바로 이전에, 
     if [ -x /etc/sysconfig/network-scripts/ifup ]; then 
        echo "Bringing up eth0 and eth1..."
        /etc/sysconfig/network-scripts/ifup eth0
        /etc/sysconfig/network-scripts/ifup eth1
     fi

 

출처:슈퍼유저코리아

반응형

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

호스트네임 변경  (0) 2006.10.11
아이피 변경  (0) 2006.10.11
원격접속시 한글이 깨질때 | centos  (0) 2006.10.10
var/log/audit.d/ full 문제  (0) 2006.10.09
리눅스 텔넷 설정  (0) 2006.08.08
Posted by [PineTree]
OS/LINUX2006. 10. 10. 22:01
반응형

원격접속시 한글이 깨질때 | centos

#vi /etc/sysconfig/i18n

 

LANG="ko_KR.eucKR"
SUPPORTED="en_US.UTF-8:en_US:en:ko_KR.eucKR:ko_KR:ko"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"

 

/*------------------------------man의 한글 깨짐 추가--------------------------------*/

 

#vi /etc/man.config

 

PAGER          /usr/bin/less -iRs 의 옵션 중에서 대문자 R을 아래와 같이

PAGER       /usr/bin/less -irs 로

 

소문자로 바꿔주면 된다. 두 옵션의 차이는 아래의 설명으로 대신한다.

 

       -r or --raw-control-chars
              Causes "raw" control characters to be displayed.  The default is to  dis-

              play control characters using the caret notation; for example, a control-
              A (octal 001) is displayed as "^A".  Warning: when the -r option is used,
              less cannot keep track of the actual appearance of the screen (since this
              depends on how the screen responds to each type  of  control  character).
              Thus, various display problems may result, such as long lines being split
              in the wrong place.

 

       -R or --RAW-CONTROL-CHARS
              Like -r, but tries to keep track of the screen appearance where possible.
              This  works  only  if the input consists of normal text and possibly some
              ANSI "color" escape sequences, which are sequences of the form:

 

                   ESC [ ... m

 

              where the "..." is zero or more characters other than "m".  For the  pur-
              pose  of  keeping  track of screen appearance, all control characters and
              all ANSI color escape sequences are assumed to not move the cursor.   You
              can  make  less  think  that characters other than "m" can end ANSI color
              escape sequences by setting the environment variable LESSANSIENDCHARS  to
              the list of characters which can end a color escape sequence.

반응형

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

아이피 변경  (0) 2006.10.11
2개의 랜카드 묶어서 2배의 대역폭:Bonding  (0) 2006.10.11
var/log/audit.d/ full 문제  (0) 2006.10.09
리눅스 텔넷 설정  (0) 2006.08.08
CentOS 한글 에러 수정  (0) 2006.03.30
Posted by [PineTree]
OS/SOLARIS2006. 10. 9. 22:12
반응형
슬라이스정보 복사
 
#############################################################
 
prtvtoc /dev/rdsk/c0t0d0s2 | fmthard -s - /dev/rdsk/c0t1d0s2
 
#############################################################
 
백업

 

명령어 cpio
명령어 설명

아카이브 파일을 복사하여 입출력

사용법

cpio -o [acBvV] [-C bufsize] [-O file] [-M message]

cpio -i [BcdmrtuvVfsSb6k][-C bufsize][-I file][-M message][pattern. ]

cpio -p [ adlmuvV ] directory

Functions:

cpio -o

(복사출력)은 표준 입력으로부터 경로명의 목록을 읽어 들여 그파일을 경로명, 상태 정보와 함께 표준 출력으로 복사한다

cpio -i

(복사입력) cpio -o의 결과를 표준 입력 으로 하여 pattens이 일치하는 파일만을 추출 한다

cpio -p

(패스)는 표준 입력으로부터 경로명을 목록을 읽어 들여 지정한 directory에 조건부로 파일들을 생성하고 복사

Options:

-l

-a

파일의 복사후 입력 파일의 최종 액세스 시각을 현재로 재설정

-B

입출력은 5120바이트의 레코드로 블록화된다(이 항목이 지정되지 않은 경우는 512 bytes 를 사용한다.)

-c

ASCII문자로 파일의 헤더 정보를 작성한다

-C bufsize

입출력은 bufsize바이트로 레코드를 블록화한다

-d

디렉토리가 필요하면 자동적으로 생성한다

-f

patterns과 일치하는 것을 제외한 모든 파일을 복사

-k

파일의 헤더가 망가졌거나 입출력오류시 작업을 종료 하지 않고 다음 현재 파일은skip하고 다음 파일을 읽는다. ( -i 에서만 사용)

 

가능하면 파일을 복사하지않고 링크 시킨다 (-p 에서만 사용)

-m

파일의 최종 수정 시간을 현재 파일이 가지고 있는 시간을 그대로 유지한다.

-M message

백업 미디어 매체 교환이 필요할 때 사용자가 그 메시지

를 정의 하여 사용할 수 있도록 한다

-O file

cpio의 출력을 file에 지정한다 (-o 에서만 사용)

-r

대화식으로 파일명을 변경 한다(-p 에서는 사용불가능)

-b

각 단어 내의 바이트 순서를 바꾼다(-i에서만 사용)

-s

각half word의 두바이트를 서로 교환한다(-i에서만 사용)

-S

각 word의 두half word를 서로교환한다(-i에서만 사용)

-t

입력파일 목록을 출력하고 파일은 생성하지 않는다

-u

restore시에 기존의 디렉토리에 그파일이 존재하더라도 무조건 복사한다. 이 값을 설정하지 않으면 두개의 수정 날자를 비교하여 더최근의 파일을 보존한다.

-v

현재 작업이 진행되고 있는 파일 목록을 표준 출력으로 출력 한다

-V

현재 작업이 진행되고 있는 각 파일을 한 개의'.'으로 출력 한다.

Examples:


$ ls | cpio -ocv >/dev/rmt/0m

$ find . -print | cpio -ovcB >/dev/tape1

$ find . -print | cpio -ovcB -O /tmp/testcpio

$ find /home -print | cpio -ovc >/dev/tape1

$ find $HOME -name "*.c" -print | cpio -ov >/dev/fd0

cpio 에 파일 목록을 파이프에 전달하기 위해 ls cat echo find와 같은 명령들을 사용하고, 출력은 -I, -O 옵션 또는 쉘의 입출력 방향 변경기능인 > , <을 이용하여 일반 파일 또는 device special file로 지정할 수 있다.

$ cpio -ivmucdB </dev/rmt/0m

/dev/rmt/0m 장치에 저장되어 있는 cpio 아카이브 파일을 읽어 들여서 현재 디렉토리에 저장한다.

$ cat newfile | cpio -icd "/memo/al" "/memo/b*"

아카이브 파일 newfile의 내용을 입력 받아서 /memo/a1, /memo/b* 패턴과 일치하는 파일들을 현재 디렉토리에 저장한다. 서브디렉토리가 필요한 경우 생성하돌고 지시하였다.

$ find . -depth -print | cpio -pdlmv new_direc

현재 디렉토리에 있는 모든 파일 리스트를 cpio 의 입력으로 받아서 new_direc 디렉토리에 하드링크 하도록 한다. -m은 수정 시각을 그대로 유지 하게 하며, -d는 필요에 따라 새로운 디렉토리가 만들어진다. cpio시 경로명을 생성하기 위한 find명령의 -depth 옵션은 디렉토리에 쓰기 모드가 허용되어 있지 않은경우에도 디렉토리에 쓰기를 할수 있도록 하기위해 사용된다.

 

명령어 tar
명령어 설명

테이프 파일 아카이버(archiver)

파일을 자기테이프에 저장하며 그기능은 키문자인수(c,r,t,u,v)로 제어 할 수 있다. 출력 방향은 디폴트로 mt0로 지정되어있다. (/etc/default/tar 에 정의 되어 있다)

사용법

tar c [ vwfb [ #s ] ] device block files..

tar r [ vwfb [ #s ] ] device block [files..]

tar t [ vf [ #s ] device

tar u [ vwb [ #s ] ] device block [ files ]

tar x [ lmovwf [ #s ] ] device [ files.. ]

 

키문자기능:

c

생성. 테이프의 처음부터 기록한다. 이기능은 r의 기능을 포함 하고 있다.

r

대체. 지정된 파일을 테이프의 마지막부터 기록된다.

t

테이블. 지정된 파일이 테이프상에서 검출될 때마다 파일명 및 그밖의 정보가 리스트된다. 파일 인수를 지정하지 않으면 테이프에 기록된 모든 정보에 대해 리스트 된다.

u

갱신. 지정된 파일이 테이프에 없을 경우 추가하거나 그 테이프에 기록된 최후의 것으로 갱신하다

x

추출. 지정된 파일을 테이프에서 읽어낸다. 지정된 파일이 디렉토리이고 내용이 테이프에 있는 경우, 이 디렉토리의 내용을 재귀적으로 모두 읽어낸다.

Options:

v

verbose. 보통 tar실행중에 아무런 메세지도 출력하지 않는 다. 이 항목을 사용하면 기능을 나타내는 문자와 처리한 파일명이 출력된다. t기능과 사용하면 명칭 뿐만 아니라 테이프 항목에 관한 정보도 출력된다.

w

확인. 준비된 처리와 파일명을 출력하고 사용자의 확인을 기다린다. y로 시작되는 글자를 입력하면 처리를 수행한다.

f

파일. 다음에 지정된 device인수를 디폴트 출력방향인 /dev/mt/0m 또는 /dev/mt0 대신에 지정한 아카이브명(디바 이스 명칭이나 화일명)으로 사용 한다. 지정한 파일명이 - 인 경우에는 표준 출력으로 출력하거나 표준 입력으로 부터 읽어 들인다.

b

블로킹계수. 지정된 block 인수를 테이프 레코드의 블로킹 계수로 사용한다. 디폴트는 1로 최대 20블록까지 지정할 수 있다.

m

수정을 기존의 파일이 가지고 있는 시간으로 유지하게 한다.

o

소유권. 읽어들인 파일의 사용자, 그룹ID가 테이프 상에 기록 되는것이 아니라 이 명령을 실행하고 있는 사용자의 것으로 변경한다.

Examples:

$ tar cv /home/kys/src

tar가 지정하는 디폴트 장치로 /home/kys/src 디렉토리의 모든 화일과 디렉토리의 내용을 저장한다

$ tar cvf /dev/rmt/0m .

현재의 디렉토리의 모든 화일들을 /dev/rmt/0m 디바이스로 back-up

$ tar xvf /dev/rmt/0m

/dev/rmt/0m 디바이스로 부터 현재 디렉토리로 restore

$ tar tvf /dev/rmt/0m

/dev/rmt/0m 디바이스에 back-up된 내용을 display

$ tar uvf /dev/mt0 /home/src/file1

/home/src/file1을 /dev/mt0에 update한다

$ tar rvf /dev/mt0 /home/src/file1

/home/src/file1을 /dev/mt0에 append 한다

$ tar cvf /dev/mt0 `tar tvf /dev/mt0 | grep file1`

file1이라는 화일만 /dev/mt0로 부터 restore한다


명령어 dd
명령어 설명

화일의 변환과 복사

지정한 입력 화일을 적절한 변환을 거쳐 지정한 출력에 복사한다. 입출력 화일을 생략 하는 경우에는 표준 입,출력이 사용된다.

사용법

dd [ options = value ]..

 

Options:

if=file

입력화일명

of=file

출력화일명

ibs=n

입력블록의 크기를 n bytes(default 512)로 지정

obs=n

출력블록의 크기를 n bytes(default 512)로 지정

bs=n

ibs와 obs를 모두취소하고 입력및 출력블록의 크기를 모두 n바이트로 한다

cbs=n

변환을 위한 버퍼크기 지정 cbs는 conv=ascii또는 conv=ebcidic을 지정하는 경우에만 사용한다.

skip=n

복사시작전 n개의 입력블록을 무시

seek=n

복사전에 출력화일의 선두로부터 n 블록 검색

count=n

n개의 입력블록만 복사

conv=ascii

EBCDIC을 ASCII로 변환ebcdic ASCII를 EBCDIC으로변환

ibm

ASCII를 EBCDIC으로변환(표준방식과 다소다르게)

lcase

알파벳을 소문자로 변환

ucase

알파벳을 대문자로 변환

swab

두개의 바이트를 서로 교환

noerror

오류가 발생해도 처리를 중지하지 않는다

sync

각입력블록을ibs로 padding

...,... 쉼표로 구분한 복수개의 변환

 

Examples:

# dd if=sample of=/dev/rmt/0m

300+0 blocks in

300+0 blocks out

$ dd if=sample of=/dev/rmt/0m ibs=1024 obs=1024

150+0 blocks in

150+0 blocks out

$ dd if=/dev/rmt/0m of=rest_in cbs=1024 conv=ascii

300+0 blocks in

300+0 blocks out

디스크 통째로   복사 (OS 도 복사된다)

dd if=/dev/rdsk/c0t0d0s2 of=/dev/rdsk/c0t8d0s2

FC 타입 디스크는

/etc/path_to_inst 파일 수정해줘야 된다.


 

$ tar cvf - /home/kys/src/*.c | dd of=dd_file conv=lcase

/home/kys/src 디렉토리하의 .c로 끝나는 모든 화일을 tar 아카이브 화일호 생성하여 그결과를 파이프를 통해 dd의 입력으로 전달하고, dd 명령은 입력되는 모든 데이타를 소문자로 변환하여 dd_file로 출력한다.

반응형
Posted by [PineTree]
OS/LINUX2006. 10. 9. 20:42
반응형

리눅스 시스템에는 LAUS(Linux Auditing-SubSystem)이 있어서 시스템에서 일어나는 변화를 로깅하는 감사시스템이 존재한다.
로깅 내용은 # aucat 이나 # augrep 으로 확인 할 수 있다.
이 로그는 디폴트로 /var/log/audit.d/ 아래에 bin.0~4 라는 파일에 기록되며 bin.0 부터 bin.4까지 다 쓰여지면 save.* 파일로 보관되고 bin.*을 rotating 해가며 쓰여지게 된다.
따라서 save.* 파일은 시스템에 계속 누적이 되어 결국 파일시스템을 full이 되게 만들어 시스템에 문제를 일으킬 수 있다.
이런 문제를 방지하기 위한 방법으로 LAUS를 아주 내려버리는 방법이 있고, 또는 save.*로 보관되는 것을 안하게 하는 방법이 있다.
물론 save.*파일을 주기적으로 삭제해주는 방법도 있겠지만 auditing 기능은 어느정도 필요 할 수 있으므로 후자를 택해 save.*로 보관되는 것을 막기로 한다.
방법은 아래와 같다.

1. /etc/audit/audit.conf의 내용을 다음과 같이 수정한다.
======================================================================
output {
mode  = bin;
num-files = 4;
file-size = 20M;
file-name = "/var/log/audit.d/bin";
#notify  = "/usr/sbin/audbin -S /var/log/audit.d/save.%u -C"; <--- 주석
notify  = "/bin/true";          <--- 변경
======================================================================
위 커맨드를 실행하지 않고 그냥 true를 LAUS에 리턴하겠다는 의미 같음.

2. 재구동
# service audit restart

반응형
Posted by [PineTree]
OS/LINUX2006. 8. 8. 23:11
반응형

리눅스 telnet  설정하기

 

1. 먼저 telnet 을 설치되어 있는지 확인한다.

[root@angka root]# rpm -qa | grep telnet
telnet-0.17-25
telnet-server-0.17-25
[root@angka root]#

   * 필자는 설치되어 있으며 혹시 설치되어 있지 않으면 yum을 이용하거나
      http://www.rpmfind.net 에서 찾아서 깔면된다.

 

2. 설치가 되어있거나 혹은 upgrade를 하고 싶으면 yum을 이용한다.
  
[root@angka root]# yum -y upgrade telnet-server
Gathering header information file(s) from server(s)
Server: Red Hat Linux 9 - i386 - freshrpms
Server: Red Hat Linux 9 - i386 - os
Server: Red Hat Linux 9 - i386 - updates
Finding updated packages
Downloading needed headers
Finding obsoleted packages
No Upgrades available for telnet-server.
[root@angka root]#

   * 필자의 버젼이 redhat 9에서는 가장 최근의 버젼임을 yum을 통해서 알 수 있다.

 

3. /etc/xinetd.c/telnet 을 편집하여 telnet 을 사용가능하도록 설정한다.

# default: on
# description: The telnet server serves telnet sessions; it uses \
#       unencrypted username/password pairs for authentication.
service telnet
{
        disable = yes                <-- no로 바꾼다.
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/in.telnetd
        log_on_failure  += USERID
}

 

4. xinetd 데몬을 재실행해서 설정이 작동하도록 해준다.

[root@angka xinetd.d]# /etc/init.d/xinetd restart
xinetd 를 정지함: [  확인  ]
xinetd (을)를 시작합니다: [  확인  ]
[root@angka xinetd.d]#

 

5. telnet이 잘 작동하는지 확인한다.
[root@angka xinetd.d]# telnet localhost
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Red Hat Linux release 9 (Shrike)
Kernel 2.4.20-31.9 on an i686
login: angka
Password:
[angka@angka angka]$ logname
angka
[angka@angka angka]$

 

6. 만약 위와 같이 telnet 서비스가 되지 않는다면 방화벽에서 telnet 서비스를 열어주어야 한다.
[root@angka xinetd.d]# vi /etc/sysconfig/iptables
  
# Firewall configuration written by lokkit
# Manual customization of this file is not recommended.
# Note: ifup-post will punch the current nameservers through the
#       firewall; such entries will *not* be listed here.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Lokkit-0-50-INPUT - [0:0]
-A INPUT -j RH-Lokkit-0-50-INPUT
-A FORWARD -j RH-Lokkit-0-50-INPUT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 25 --syn -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 80 --syn -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 21 --syn -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 22 --syn -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 23 --syn -j ACCEPT <- 추가
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 137 --syn -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p udp -m tcp --dport 137 --syn -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p udp -m udp -s 0/0 --sport 67:68 -d 0/0 --dport 67:68 -i eth0 -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p udp -m udp -s 0/0 --sport 67:68 -d 0/0 --dport 67:68 -i eth1 -j ACCEPT
-A RH-Lokkit-0-50-INPUT -i lo -j ACCEPT

-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 6000:6009 --syn -j REJECT
#-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 7100 --syn -j REJECT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 7100 --syn -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p udp -m udp -s 192.168.10.0/24 -d 0/0 --dport 2049 -i eth0 -j ACCEPT
COMMIT
~

 그리고 방화벽서비스를 재실행한다.

[root@angka root]# /etc/init.d/iptables restart

[root@angka root]#

 

7. telnet 서비스는 root 사용자로 로그인 할 수 없도록 되어 있다(보안상)
   그래도 root 사용자로 로그인하고 싶으면 /etc/securetty 파일을 다른 이름으로 바꾸면 된다
.
[root@angka xinetd.d]# mv /etc/securetty /etc/securetty.back
[root@angka xinetd.d]# telnet localhost
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Red Hat Linux release 9 (Shrike)
Kernel 2.4.20-31.9 on an i686
login: root
Password:
Last login: Sat Jul 29 23:18:12 from 192.168.10.100
You have new mail.
[root@angka root]#

 

8. 서버 재부팅 시에도 telnet이 잘 작동하도록 ntsysv에서 telnet 데몬을 check 해준다.

[root@angka root]# ntsysv
                                                                                       
   


반응형
Posted by [PineTree]
OS/SOLARIS2006. 8. 7. 20:39
반응형

----------------------------------------------------------------------------
                        시스템 디스크 교체 후 E3500 부팅 절차
----------------------------------------------------------------------------
시스템 디스크 교체 후 E3500 부팅

개요: 시스템 디스크 교체 후 E3500 부팅
상세 설명:

E3500의 내부 부트 디스크 교체 지침(광채널 디스크)
이 지침은 A5000으로도 알려진 SENA(Solstice Enterprise Network Array)의 부트 디스크에도 적용됩니다.
그러나 SEVM 또는 SDS에 의해 미러링된 부트 디스크에는 적용되지 않습니다
(Solstice Enterprise Volume Manager 또는 Solstice Disk Suite).
Ultra Enterprise 3500의 내부 부트 디스크에 문제가 발생하여 다른 드라이브로 교체했습니다.
새 드라이브는 newfs가 수행되었으며 원본 디스크의 덤프 테이프로부터 복원되었습니다.
새 디스크의 월드 와이드 번호(WWN)를 반영하기 위해 Open Boot Prom의 부트 디바이스 변수를 변경했습니다.

STOP + A

boot cdrom -sw

일반적인 절차에 따라 새 디스크에 적합한 디스크 파티션과 파일 시스템을 생성하고 백업 덤프를 복원합니다.
그런 다음, 아래와 같은 명령을 수행합니다.
이제, 새 디스크로 시스템을 부팅할 수 있도록 교체 디스크의 WWN이 적절한 경로에 생성됩니다.


기존 생성된 디바이스 정보를 삭제한다.

/a/devices/.... <-- 파일 삭제
/a/dev/....  <-- 파일 삭제

drvconfig -r /a/devices -p /a/etc/path_to_inst
disks -r /a
devlinks -r /a

버그 ID 4161768로 인해 다음과 같은 두 명령이 필요합니다.
cd /devices
find . -print | cpio -pduvm /a/devices

(cdrom의 /device 트리를 마운트된 파일시스템으로 복사)
마지막으로, 부트 디스크를 설치합니다.

installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/cXtXdXsX

#installboot /usr/platform/sun4u/lib/fs/ufs/bootblk /dev/rdsk/cXtXdXs0
# ls -l /dev/rdsk/cXtXdXsX

lrwxrwxrwx 1 root root 50 Aug 1 10:48 /dev/rdsk/cXtXdXsX -> ../../devices/pci@1f,0/pci@1,1/ide@3/dad@1,0:a,raw

여기서 주의 : 윗라인의 pci@1f,0/pci@1,1/ide@3/dad@1,0:a,raw 부분을 꼭 기억 하세요.

--부팅 디스크 앨리어스 지정하기
STOP + A (prom mode)

OK prompt

ok nvalias mirror /pci@1f,0/pci@1,1/ide@3/dad@1,0:a,raw   --앨리어스 지정함.

ok boot mirror --새로구성된 디스크로 부팅함.


--A5000으로 구성된 경우
마운트된 파일시스템을 해제합니다.모든 파일시스템에 최종 fsck 검사를 수행합니다.
luxadm 명령을 사용하여 부트 디바이스를 생성합니다.
luxadm -v set_boot_dev -y /dev/dsk/cXtXdXs0
시스템이 정지되고 부팅이 제대로 수행되어야 합니다.


----------------------------------------------------------------------------
              기존 디스크 / 에서 새 디스크 / dd copy
----------------------------------------------------------------------------
boot_disk 만들기

1)root 장치 확인
#df -k /

2)디스크 정보 확인
#format  --파일 크기가 동일해야 한다.
0.c1t0d0  <-- 원본
1.c1t1d0  <-- 백업
--원본디스크 와 백업디스크 확인하기

3)백업 디스크 확인
#fdisk /dev/rdsk/c1t1d0s0

y <-- 선택

#dd if=/dev/rdsk/c1t0d0s0 of=/dev/rdsk/c1t1d0s0 bs=8192k


4)백업 디스크에 boot 환경 설정

어떤 디스크로 booting 하는지 부팅패스 확인
#eeprom | grep bootpath
bootpath=/pci@1,0/pci1014,8f@3/sd@0,0:a

두번째 디스크 물리 장치명 확인
#ls -l /dev/rdsk/c1t1d0s0
--경로명확인


5)모든 파일 시스템 체크함

#fsck -y /dev/rdsk/c1t1d0s0
#fsck -y /dev/rdsk/c1t1d0sX --기존 파일시스템 모두 체크함

 

6)두번째 디스크를 root를 마운트 한다.

#mount /dev/dsk/c1t1d0s0 /mnt

7)boot path 설정

#vi /mnt/boot/solaris/bootenv.rc
--기존 셋팅
setprop bootpath=/pci@1,0/pci1014,8f@3/sd@0,0:a
--변경 셋팅
setprop bootpath=/pci@1,0/pci1014,8f@3/sd@1,0:a

8)자동 마운트 포이트 수정
#vi /mnt/etc/vfstab
--기존 마운트 포인터 수정함

--------------------------------------------------------------------------
                      슬라이스  dd로 copy test
--------------------------------------------------------------------------
# format
Searching for disks...done


AVAILABLE DISK SELECTIONS:
       0. c1t0d0 <DEFAULT cyl 1302 alt 2 hd 255 sec 63>
          /pci@0,0/pci1000,30@10/sd@0,0
       1. c1t1d0 <DEFAULT cyl 1788 alt 2 hd 128 sec 32>
          /pci@0,0/pci1000,30@10/sd@1,0
       2. c1t2d0 <DEFAULT cyl 1020 alt 2 hd 64 sec 32>
          /pci@0,0/pci1000,30@10/sd@2,0
       3. c1t3d0 <DEFAULT cyl 1020 alt 2 hd 64 sec 32>
          /pci@0,0/pci1000,30@10/sd@3,0
       4. c1t4d0 <DEFAULT cyl 1020 alt 2 hd 64 sec 32>
          /pci@0,0/pci1000,30@10/sd@4,0
       5. c1t5d0 <DEFAULT cyl 1020 alt 2 hd 64 sec 32>
          /pci@0,0/pci1000,30@10/sd@5,0
       6. c2t0d0 <DEFAULT cyl 1020 alt 2 hd 64 sec 32>
          /pci@0,0/pci1000,30@11/sd@0,0
       7. c2t1d0 <DEFAULT cyl 1020 alt 2 hd 64 sec 32>
          /pci@0,0/pci1000,30@11/sd@1,0
Specify disk (enter its number): 2
selecting c1t2d0
[disk formatted]


FORMAT MENU:
        disk       - select a disk
        type       - select (define) a disk type
        partition  - select (define) a partition table
        current    - describe the current disk
        format     - format and analyze the disk
        fdisk      - run the fdisk program
        repair     - repair a defective sector
        label      - write label to the disk
        analyze    - surface analysis
        defect     - defect list management
        backup     - search for backup labels
        verify     - read and display labels
        save       - save new disk/partition definitions
        inquiry    - show vendor, product and revision
        volname    - set 8-character volume name
        !<cmd>     - execute <cmd>, then return
        quit
format> p


PARTITION MENU:
        0      - change `0' partition
        1      - change `1' partition
        2      - change `2' partition
        3      - change `3' partition
        4      - change `4' partition
        5      - change `5' partition
        6      - change `6' partition
        7      - change `7' partition
        select - select a predefined table
        modify - modify a predefined partition table
        name   - name the current table
        print  - display the current table
        label  - write partition map and label to the disk
        !<cmd> - execute <cmd>, then return
        quit
partition> p
Current partition table (original):
Total disk cylinders available: 1020 + 2 (reserved cylinders)

Part      Tag    Flag     Cylinders        Size            Blocks
  0 unassigned    wm       0               0         (0/0/0)          0
  1 unassigned    wm       0               0         (0/0/0)          0
  2     backup    wu       0 - 1019     1020.00MB    (1020/0/0) 2088960
  3 unassigned    wm       0               0         (0/0/0)          0
  4 unassigned    wm       0               0         (0/0/0)          0
  5 unassigned    wm       0               0         (0/0/0)          0
  6 unassigned    wm       0               0         (0/0/0)          0
  7 unassigned    wm       0               0         (0/0/0)          0
  8       boot    wu       0 -    0        1.00MB    (1/0/0)       2048
  9 unassigned    wm       0               0         (0/0/0)          0

partition> 0
Part      Tag    Flag     Cylinders        Size            Blocks
  0 unassigned    wm       0               0         (0/0/0)          0

Enter partition id tag[unassigned]:
Enter partition permission flags[wm]:
Enter new starting cyl[0]:
Enter partition size[0b, 0c, 0e, 0.00mb, 0.00gb]: $
partition>
partition>
partition> p
Current partition table (unnamed):
Total disk cylinders available: 1020 + 2 (reserved cylinders)

Part      Tag    Flag     Cylinders        Size            Blocks
  0 unassigned    wm       0 - 1019     1020.00MB    (1020/0/0) 2088960
  1 unassigned    wm       0               0         (0/0/0)          0
  2     backup    wu       0 - 1019     1020.00MB    (1020/0/0) 2088960
  3 unassigned    wm       0               0         (0/0/0)          0
  4 unassigned    wm       0               0         (0/0/0)          0
  5 unassigned    wm       0               0         (0/0/0)          0
  6 unassigned    wm       0               0         (0/0/0)          0
  7 unassigned    wm       0               0         (0/0/0)          0
  8       boot    wu       0 -    0        1.00MB    (1/0/0)       2048
  9 unassigned    wm       0               0         (0/0/0)          0

partition> q

# prtvtoc /dev/rdsk/c1t2d0s2 | fmthard -s - /dev/rdsk/c1t3d0s2
fmthard:  New volume table of contents now in place.
#
#
#
# newfs /dev/rdsk/c1t2d0s0
newfs: construct a new file system /dev/rdsk/c1t2d0s0: (y/n)? y
/dev/rdsk/c1t2d0s0:     2088960 sectors in 1020 cylinders of 64 tracks, 32 sectors
        1020.0MB in 64 cyl groups (16 c/g, 16.00MB/g, 7680 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
 32, 32832, 65632, 98432, 131232, 164032, 196832, 229632, 262432, 295232,
 1771232, 1804032, 1836832, 1869632, 1902432, 1935232, 1968032, 2000832,
 2033632, 2066432,
#
#
# newfs /dev/rdsk/c1t3d0s0
newfs: construct a new file system /dev/rdsk/c1t3d0s0: (y/n)? y
/dev/rdsk/c1t3d0s0:     2088960 sectors in 1020 cylinders of 64 tracks, 32 sectors
        1020.0MB in 64 cyl groups (16 c/g, 16.00MB/g, 7680 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
 32, 32832, 65632, 98432, 131232, 164032, 196832, 229632, 262432, 295232,
 1771232, 1804032, 1836832, 1869632, 1902432, 1935232, 1968032, 2000832,
 2033632, 2066432,
#
#
#

#
# mkdir backup1
# mkdir backup2
#
#
# mount /dev/dsk/c1t2d0s0 /backup1
# mount /dev/dsk/c1t3d0s0 /backup2
#
#
# df -k  
Filesystem            kbytes    used   avail capacity  Mounted on
/dev/dsk/c1t0d0s0    9524711 1348982 8080482    15%    /
/proc                      0       0       0     0%    /proc
mnttab                     0       0       0     0%    /etc/mnttab
fd                         0       0       0     0%    /dev/fd
swap                  316836      20  316816     1%    /var/run
swap                  317116     300  316816     1%    /tmp
/dev/dsk/c1t0d0s7     483151    1048  433788     1%    /export/home
/dev/dsk/c1t2d0s0     981999    1041  922039     1%    /backup1
/dev/dsk/c1t3d0s0     981999    1041  922039     1%    /backup2
# cd /backup1
# pwd   
/backup1
# mkdir folder
#
# mkfile 100m ddfiletest
#
# dd if=/dev/rdsk/c1t2d0s0 of=/dev/rdsk/c1t3d0s0 bs=8192k
127+1 records in
127+1 records out
#
# fsck -y /dev/rdsk/c1t3d0s0

FILE SYSTEM IS CURRENTLY MOUNTED.  CONTINUE?  yes

** /dev/rdsk/c1t3d0s0
** Currently Mounted on /backup2
** Phase 1 - Check Blocks and Sizes
** Phase 2 - Check Pathnames
** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts
** Phase 5 - Check Cyl groups
FREE BLK COUNT(S) WRONG IN SUPERBLK
SALVAGE?  yes

4 files, 102474 used, 980957 free (13 frags, 122618 blocks, 0.0% fragmentation)

***** FILE SYSTEM WAS MODIFIED *****

# cd /backup2
# ls -l
total 204946
-rw------T   1 root     other    104857600 Mar  3 17:32 ddfiletest
drwxr-xr-x   2 root     other        512 Mar  3 17:28 folder
drwx------   2 root     root        8192 Mar  3 16:44 lost+found
# pwd
/backup2
#

--dd copy 됨


----------------------------------------------------------------------------
                        테이프 명령어
----------------------------------------------------------------------------

테이프 명령어
명령:mt - 자기 테이프 용도:테이프 상태 확인, 되감기, 지우기 등 경로:/usr/bin/mt

구문:mt [ -f 테이프 장치 이름 ] 명령 [ 반복 횟수] 여기서 테이프 장치 이름은 보통
   /dev/rmt/0입니다.

   명령은 다음과 같습니다.

   status  -테이프 드라이브의 상태 정보를 표시합니다
   rewind  -테이프를 되감습니다.
   retension  -테이프를 팽팽한 상태로 만듭니다.
   erase  -테이프 전체를 지웁니다.
   fsf   -지정된 반복 횟수만큼 파일을 앞으로 건너뜁니다.
   bsf   -지정된 반복 횟수 만큼 파일을 뒤로 건너뜁니다.
   eom   -기록된 미디어의 끝부분으로 건너 뜁니다.

   반복 횟수는 요청된 작업을 수행하는 횟수를 말합니다.
   기본적으로 mt는 명령을 한 번 수행합니다.
   하나의 명령을 두 번 이상 반복하려면 반복 횟수를 지정하면 됩니다.

   예:mt -f /dev/rmt/0 status ---> 테이프의 상태를 표시합니다.
   mt -f /dev/rmt/0 rewind ---> 테이프를 되감습니다.
   mt -f /dev/rmt/0n fsf 2 ---> 첫 번째 두 개의 파일을 건너뜁니다.
   mt -f /dev/rmt/0n bsf 2 ---> 두 개의 파일만큼 뒤로 건너뜁니다.

명령: tar - 테이프 아카이브
용도: 테이프 아카이브를 만들거나 복원합니다.
    디렉토리 구조를 유지하면서 하나 또는 여러 개의 파일을 백업하는데 사용합니다.
경로: /usr/bin/tar
구문: tar [옵션] [장치 이름] [파일 이름]

   옵션은 다음과 같습니다.
   c    tar 파일을 새로 만듭니다.
   r    기존 tar 파일을 대체합니다.
   t    테이프 아카이브의 목차를 표시합니다.
   u    업데이트합니다.
       업데이트할 파일이 tar 파일에 없거나 마지막으로 tar 파일을 쓴 후
       수정된 경우에는 tar 파일의 끝에 씁니다. 업데이트 수행은 다소
       느릴 수 있습니다. 5.x 시스템에서 만든 tar 파일은 4.x 시스템에서
       업데이트할 수 없습니다.
   x    추출하거나 복원합니다.
      추출하거나 복원할 파일은 tar 파일에서 추출하고 현재 디렉토리에서
      tar 파일에 지정된 디렉토리에 씁니다. 추출할 파일 및 디렉토리에
      대해 상대 경로 이름을 사용하십시오.
   v    자세한 정보를 표시합니다.
      기능 문자 다음에 각 파일의 이름을 출력합니다.

여기서 장치 이름은 대개 /dev/rmt/0입니다. 또는 파일 이름일 수도 있습니다. 파일
이름은 아카이브로 만들 파일 이름입니다.

예:
tar cvf /dev/rmt/0 /export/home/user1 --> /dev/rmt/0 테이프에 /export/home/user1의
테이프 아카이브를 만듭니다.
tar tvf /dev/rmt/0 ---> /dev/rmt/0의 목차를 표시합니다.
tar xvf /dev/rmt/0 ---> /dev/rmt/0에서 데이터를 복원합니다.

참고: 위의 명령에서 /dev/rmt/0 대신 /dev/rmt/0n을 사용할 수 있습니다.
/dev/rmt/0n을 사용하면 백업 수행 후 테이프를 되감지 않습니다.
명령: ufsdump
용도: 파일 시스템, 파일 또는 디렉토리를 백업하는데 사용합니다.
   전체 백업이나 증분 백업을 수행할 수 있습니다.
경로: /usr/sbin/ufsdump
구문: ufsdump [옵션] [장치 이름] [덤프할 파일]

옵션은 다음과 같습니다.

0 ~ 9 덤프 레벨 옵션을 지정합니다.
    레벨 0은 가장 낮은 수준으로 전체 백업을 수행합니다. 레벨 1 ~ 9는 증분
    백업을 수행합니다.
u   현재 백업의 날짜와 덤프 레벨을 /etc/dumpdates 덤프 기록에 업데이트합니다.
f   파일이 쓰여질 장치를 지정합니다.이 옵션은 장치 이름이 필요합니다.
v   테이프에 있는 데이터를 파일 시스템에 있는 데이터와 비교하고 검사합니다.

여기서 장치 이름은 /dev/rmt/0입니다.
덤프할 파일은 초기 파일 시스템 /dev/rdsk/c0t2d0s0이나 블록 파일 시스템
/dev/dsk/c0t2d0s0입니다. 또한 /export/home과 같이 파일 시스템 이름이나
/export/home/user1과 같이 파일 이름 또는 디렉토리 이름을 사용할 수도 있습니다.

예:
ufsdump 0uf /dev/rmt/0 /export/home ---> /export/home 파일 시스템을 /dev/rmt/0
으로 덤프하고 전체 백업을 수행합니다.

ufsdump 1uf /dev/rmt/0 /dev/dsk/c0t2d0s4 --> /dev/dsk/c0t2d0s4 파일 시스템을
/dev/rmt/0로 덤프합니다. 이 명령은 레벨 1의 증분 백업을 수행합니다.

ufsdump 4uf dbserver:/dev/rmt/0 /export/home/user1 --> /export/home/user1에 대한
레벨 4의 증분 백업을 Remote Box dbserver에 마운트된 dev/rmt/0 테이프 장치에 덤프
합니다.   여기서 테이프 장치는 로컬 시스템이 아니라원격 시스템인 dbserver에 있는
장치입니다.

명령: ufsrestore
용도: ufsdump 명령으로 만들어진 백업본에서 파일을 복구하거나 추출하는데 사용합니다.
경로: /usr/sbin/ufsrestore
구문: ufsrestore [옵션] [장치 이름] [복원할 파일]

옵션은 다음과 같습니다.
i    대화형 모드로 파일을 복원합니다.
r    백업 전체를 복원합니다.
t    백업의 목차를 표시합니다.
x    명령행에서 지정한 파일을 복원합니다.
f    /dev/rmt/0과 같이 장치 이름을 지정합니다.
v    파일을 복원하고 있는 경로 이름을 표시합니다(세부 정보 표시 모드).

참고: 이 옵션은 ufsdump 명령에서 사용하는 v(verify) 옵션과 다릅니다.

예:
ufsrestore xvf /dev/rmt/0 ./etc/hosts ---> /etc/hosts 파일을 현재 디렉토리로
                   복원합니다.   
ufsrestore ivf /dev/rmt/0 ---> 복원될 파일을 선택합니다.
ufsrestore rvf /dev/rmt/0 ./opt ---> /opt 파일 시스템을 현재 디렉토리로 복원합니다.
ufsrestore tvf /dev/rmt/0 ---> /dev/rmt/0의 목차를 표시합니다.


----------------------------------------------------------------------------
                        ufsdump & ufsrestore & tape 응용편
----------------------------------------------------------------------------
#sync;sync;sync;
#shutdown -i0 -y -g0

stop + A
ok setenv auto-boot? false

ok boot cdrom -sw

#ufsdump 0uf /dev/rmt/0 /dev//rdsk/c0t0d0s0
--백업 완료후..
#poweroff (파워를 내리고 디스크 교체)

또는 새 디스크 교체후

ok boot probe-scsi  -scsi disk 정보 인식시킴 (prom mode)
ok boot probe-ide   -ide disk 정보인식시킴
format  --디스크 인식여부 확인후 작업
ok reset  (or)
ok reset-all


운영중에 인식시키기
#drvconfig;disks;devlinks;
#devfsadm;


#shutdown -i5 -y -g0
ok setenv auto-boot? true

ok boot cdrom -sw

#format

#newfs /dev/rdsk/c0t0d0s0

--(y/n)?  y

#fsck -y /dev/rdsk/c0t0d0s0
--파일 시스템 이상여부 체크함


#mount /dev/dsk/c0t0d0s0 /a

#cd /a

#ufsrestore rvf /dev/rmt/0

--복원시킴


#rm restoresymtable

#installboot /usr/platform/'uname -m'/lib/fs/ufs/bootblk /dev/rdsk/c0t0d0s0

#cd /

#umount /a

#shutdown -g0 -y -i6

--shutdown command
종료 shutdown -y -i0 -g0
-y (yes or no)
-i (default run level S를 다른 레벨로 지정가능함)
-g (default 60초 -g0 바로 셧다운)
리붓 shutdown -y -i6 -g0


----------------------------------------------------------------------------
                 백업 4가지 방법 간단히 마무리 정리
----------------------------------------------------------------------------

1. tar
2. cpio
3. dd
4. ufsdump/ufsrestore

1. tar

tar를 화일 또는 디렉토리 전체를 백업 받는데 사용된다.

1.1 화일 시스템에서 테이프로 백업 받기

# tar cvf /dev/rmt/0 .

1.2 테이프에서 화일 시스템로 백업 받기

# tar xvf /dev/rmt/0

1.3 테이프 내용 보기

# tar tvf /dev/rmt/0


2. cpio

2.1 화일 시스템에서 테이프로 백업 받기

# find . -print | cpio -ocvB -O /dev/rmt/0

2.2 테이프에서 화일 시스템로 백업 받기

# cpio -icvBmd -I /dev/rmt/0

2.3 테이프 내용 보기

# cpio -ict -I /dev/rmt/0


3. dd

3.1 화일을 테이프로 백업 받기

# dd if=file1 of=/dev/rmt/0 bs=4096k

3.2 테이프에서 화일로 백업 받기

# dd if=/dev/rmt/0 of=file1 bs=4096k


4. ufsdump/ufsrestore

4.1 화일시스템에서 테이프로 백업 받기

# ufsdump 0cuf /dev/rmt/0 /

4.2 테이프에서 화일 시스템으로 백업 받기

# ufsrestore rvf /dev/rmt/0

4.3 테이프 내용 보기

# ufsrestore tvf /dev/rmt/0

4.4 Interactive restore

# ufsrestore ivf /dev/rmt/0

반응형
Posted by [PineTree]
OS/SOLARIS2006. 8. 2. 05:51
반응형

방화벽을 위한 Solaris 준비하기
Solaris의 무장화(Armoring Solaris)

인터넷 보안 분야에서 방화벽은 빠르게 성장하고 있는 유능한 도구이다. 그러나, 방화벽은 자신이 탑재되어 있는 OS가 안전한만큼만 안전할 뿐이다. 이 문서는 Sparc과 x86 Solaris를 어떻게 무장화시킬지에 대해 차근차근히 설명해나갈 것이다. 각 단계들은 모든 상황에 적용될 수 있지만, 여기에선 Solaris 2.6에 탑재된 Check Point FireWall-1을 예로 들기로한다. 이 문서의 끝에는 직접 다운로드하여 자동으로 solaris를 무장화시킬 수 있는 스크립트가 있다.

설치(Installation)
OS의 설치는 시스템의 보안을 위한 매우 중요한 과정이다. 방화벽을 설치하기 위한 시스템에 이미 설치된 것들을 믿어선 안 된다. 시스템의 보안도를 높이기 위해 새로 OS를 설치하는 것이 좋다.

시스템을 다른 곳과 연결된 네트웍으로부터 단절시켜라. 아직, 보호되지 않은 시스템을 다른 곳에 연결된 네트웍이나 인터넷 연결시키는 것은 좋지 않다. 새로 깔린 시스템이 인터넷에 연결된지 15분만에 발견되어 root를 뺏기는 일도 있다. 후에 중요한 파일들과 패치들을 받기 위해, 인터넷에 연결된 다른 박스가 하나 필요할 것이다. 이 두번째 박스는 인터넷으로부터 필요한 파일들을 다운받아, 중요한 파일들을 전송하기 위해 당신의 고립된 네트웍-혹은 시스템-에 연결될 것이다.

방화벽 박스가 될 박스를 고립된 네트웍에 놓았다면, 이제 시작할 준비는 된 것이다. 처음으로 할 일은, 설치될 OS 패키지를 선택하는 것이다. 최대의 효율을 유지하기 위한 가장 좋은 선택은 최소 설치를 선택하는 것이다. 박스에 설치되는 소프트웨어가 적을 수록, 잠재적인 취약점이나 구멍들이 줄어든다. 나는 Core 설치(Core Installation)를 추천한다. 내가 Core를 선호하는 이유는 이것이 좀더 안전한 OS를 만들기 위한 최소한의 소프트웨어를 설치하기 때문이다. 오타쿠들을 위해, Core 설치를 조정하는 방법에 대한 두 개의 체크 목록을 만들어봤다. 하나는 Solaris 2.6과 FW-1.4.0을 위한 것이고, 다른 하나는 Solaris 8과 FW-1.4.1을 위한 것이다. 두번째 체크 목록은 아직 beta판이다. 만약, 당신이 GUI를 필요로하거나, solaris에 처음 접한다면, End User 설치(End User Installation)을 고려하는게 좋을지도 모르겠다. Developer 같은 그 이상의 설치 패키지들은 필요도 없고 잠재적인 취약점이 남아있는 소프트웨어들을 설치한다. 설치과정에 "On-Line Manual Pages"를 꼭 선택하는 것이 좋다. 이것은 매우 유용할 뿐더러, 시스템에 별 위험을 끼치지 않는다. 최소 설치를 위한 좀더 많은 정보를 필요로한다면, 보안을 위한 솔라리스 최소화(Solaris Minimization for Security)를 읽어보아라.

설치 과정 중에, 시스템을 파티션해야 할 것이다. 나는 Sun이 /opt와 /usr을 비롯하여 많은 파티션들을 나누는 것을 이해할 수 없다. 작은 파티션을 만들게 되면, 나중에는 항상 그것들을 다 써버리게 된다. 나는 항상 root를 최대한 크게 잡고 모든 것을 그곳에 넣어버리는 것을 좋아한다. 이렇게 하면, 하드를 다 써버리는 일은 없을 것이다. 그러나, root 파티션을 보호하기 위해 몇 개 파티션들을 잡아주어야 한다. 만약, root 파티션을 logging이나 email 같은 자료들로 가득 채워버린다면, 시스템을 crash시킬지도 모르는 DoS가 일어날 수도 있다.

그러므로, /var를 위한 파티션을 따로 나누는 것이 좋다. 이 파티션은 시스템의 모든 logging과 email이 저장되는 곳이다. 방화벽 logging을 위한 파티션을 따로 잡아주는 것도 고려하는 게 좋다. Checkpoint Firewall 1은 기본적으로 모든 logging을 /etc/fw/log(4.0은 /var/opt/CKPfw/log)에 남긴다. 많은 solaris 시스템들이 Ultra 10이나 x86을 위한 2 IDE 같은 두가지 이상의 드라이브(하드디스크)들을 갖는다. 만약, 두번째 드라이브를 미러링하지 않았다면, 그것을 모두 방화벽 logging을 위한 파티션으로 잡아라. 이것은, 방화벽 logging이 넘치는 것으로부터 다른 모든 파티션들을 보호한다. 이와같은 설정을 따르면, 다음과 같은 모양의 파틴션이 나올 것이다.

/                    - everything else
/var              - 400 MB
swap            - 256 MB (or normally 2x amount of RAM)
/etc/fw/log                           - 2nd drive (for CP FW-1 ver 3.0x)
/var/opt/CKPfw/log          - 2nd drive (for CP FW-1 ver 4.0x)
/var/opt/CPfw1-41/log    - 2nd drive (for CP FW-1 ver 4.1x)

설치 후에 리부팅을 한 다음, Sun으로부터 recommended patch cluster를 꼭 설치하도록 한다. 패치들을 얻기 위해, 두번째 박스를 이용하는 것을 잊지 말아라. 아직, 방화벽 박스는 고립된 네트웍에 남아 있어야 한다. 패치들은 안전한 방화벽 유지를 위해 매우 중요하며 적어도 일주일에 한 번씩은 갱신되어야한다. Bugtraq은 최근의 버그와 취약점들을 위한 훌륭한 보고이다.

서비스 제거하기(Eliminating Services)
이제, 설치 패키지와 패치들을 깔고 리부팅하였다면, OS를 무장화하기 위한 준비가 되었다. 무장화는 주로 서비스들을 끄고, logging을 더하고, 몇 파일들을 조정하며, TCP Wrapper를 설치하는 것으로 이루어진다. 먼저, 우리는 서비스를 끄는 것에서 시작할 것이다.

기본적으로, solaris는 많은 유용한 서비스들을 제공하는 강력한 OS이다. 그러나, 이런 서비스들의 대부분은 방화벽을 위해선 필요가 없으며, 잠재적인 위험을 안고 있다. /etc/inetd.conf에서부터 시작해보자. 이 파일은 /usr/sbin/inetd 데몬이 listen할 서비스들을 정해놓고 있다. 기본적으로, /etc/inetd.conf는 35개의 서비스들로 구성되어 있지만, 당신에겐 ftp와 telnet 두 개만 필요할 뿐이다. 다른 필요 없는 서비스들에 대해선 앞에 #를 달아 주석처리한다(example). rexd 같은 inetd에 의해 제공되는 서비스들은 보안적으로 많은 위험을 가하기 때문에 이 과정은 매우 중요하다. 다음 명령을 통해, 어떤 서비스들을 주석처리했는지 확인하도록 한다.(이 명령은 주석처리 되지 않은 모든 서비스들을 보여줄 것이다.)

#grep -v "^#" /etc/inetd.conf

다음으로 건들어야 할 곳은 /etc/rc2.d와 /etc/rc3.d이다. 여기에는 init 프로세스에 의해 부팅시 실행되는 스크립트들이 있다. 이중 많은 것들이 필요하지 않다. 부팅 중에 스크립트가 실행되는 것을 막기 위해, 대문자 S를 소문자 s로 바꾼다. 부팅시에 스크립트를 실행하기 위해선 소문자 s를 다시 대문자 S로 바꾸어주면 된다. 다음 스크립트들은 필요가 없을 뿐더러, 보안적으로 위험한 것들이다.

/etc/rc2.d
S73nfs.client - NFS 마운팅을 위한 것으로, 방화벽엔 필요 없다.
S74autofs      - automount을 위한 것으로, 방화벽엔 필요 없다.
S80lp              - 프린팅을 위한 것으로, 역시 필요 없다.
S88sendmail  - 오는 email을 듣기 위한 것으로, 이것이 실행되지 않더라도 방화벽은 email을 보낼 수 이싸.
S71rpc            - portmapper 데몬으로, 아주 취약한 서비스이다.(CDE를 실행한다면, 필요하다.)
S99dtlogin      - CDE를 기본적으로 시작시키는 CDE 데몬이다.

/etc/rc3.d
S15nfs.server - 파일 시스템 공유를 위한 것으로, 방화벽엔 아주 안 좋다.
S76snmpdx     - snmp 데몬

GUI(CDE나 OpenWindows)를 실행시키는 것은 좋지 않다. 아주 꼭 필요한 경우에만 GUI를 실행시키도록 한다. Solaris 2.6의 기본 GUI인 CDE를 끄기 위해서는 S99dtlogin을 s99dtlogin으로 바꾸어주면 된다(대문자 S를 소문자 s로). CDE가 얼마나 많은 포트들과 서비스들을 필요로하는지 알아보려면, CDE가 실행되고 있을 때 다음을 쳐보아라.

ps -aef | wc - l

S99dtlogin과 S71rpc들을 꺼버린 다음(CDE를 실행시키기 위해선 필요함), 위에 명령을 실행시켜보고 얼마나 많은 서비스와 열려있는 포트가 줄어들었는지 그 전의 결과와 비교해보아라. 더 적은 서비스가 돌고 있을 수록 좋은 것이다. Core 설치를 한 경우에는 GUI가 설치되지 않기 때문에, 이 문제에 대해 신경쓸 필요가 없다.

Logging과 Tweaking(Logging and Tweaking)
가능한 많은 서비스들을 제거했다면, 이제는 logging을 설정할 차례이다. 많은 시스템의 logging이 /var/adm에서 이루어진다. 우리는 여기에 두 개의 log 파일들-sulog와 loginlog를 더할 것이다. /var/adm/sulog에는 su에 대한 모든 성공과 실패들이 기록된다. 이것을 통해 누가 시스템에 root 권한을 얻기 위한 시도를 했는지 모니터링 할 수 있다. /var/adm/loginlog에는 연속으로 실패한 login 시도가 기록된다. 만약, 사용자가 5번 login을 시도하여 모두 실패했다면 기록에 남게된다. 이것을 가능하게 하기 위해서는 /var/adm/loginlog과 /var/adm/sulog를 touch하기만 하면 된다. 두 파일 모두 민감한 정보를 싣고 있으니, chmod 640으로 설정하는 것을 잊지 말아라.

다음으로 할 일은 tweaking이다. 이것은 다양한 파일들의 관리에 관계된다. 먼저 할 일은 /etc/issue 파일을 만드는 것이다. 이 파일은 ASCII text 배너로 telnet login시에 나타난다(example A). 이 합법적인 경고는 누군가가 당신의 시스템에 login을 시도할 때 나타날 것이다.

또한 /etc/ftpusers 파일을 만들어야한다(example B). 이 파일에 열거된 계정들은 시스템에 ftp로 접속할 수 없다. 이것은 root나 bin과 같은 중요 계정들로 ftp session에 접근하는 것을 제한한다. 이 파일은 만드는 쉬운 방법은 다음 명령을 실행하는 것이다.
cat /etc/passwd | cut -f1 -d: > /etc/ftpusers

방화벽에 ftp로 접근하기 위한 계정이 /etc/ftpusers에 포함되지 않았는지 확인하라.
또한, root 계정으로 시스템에 telnet 접근을 할 수 없도록 확인해라. 이것은, 사용자가 시스템에 일반계정으로 login하여 root 권한을 갖기 위해 su를 사용하게 만든다. 대부분 시스템에 기본적으로 설정되어 있지만, /etc/default/login 파일에 console이 주석처리되지 않도록 확인한다(example C).

마지막으로, 나는 telnet OS 배너를 제거하고 ftp를 위한 배너를 만드는 것을 더 좋아한다. telnet OS 배너를 제거하는 건 /etc/default/telnetd 파일을 만들고 다음 문장을 추가하는 것으로 쉽게 된다.
BANNER="" # "SunOS 5.6" 텔넷 배너 제거

ftp를 위한 새 배너를 만들기 위해, /etc/default/ftpd 파일을 만들고, 다음 문장을 추가한다.
BANNER="WARNING:Authorized use only" # ftp를 위한 경고 배너

방화벽에 연결하기(Connetcing to Firewall)
방화벽에 연결하기 위한 안전하고 조정 가능한 길을 만드는 것은 매우 중요하다. 종종, 당신은 관리와 파일의 업로드를 위해 원격으로 방화벽에 접속해야 할 필요가 있을 것이다. 이런 통신들은 안전해야하며, 나는 여기에서 그 대책으로 ssh와 TCP Wrapper에 대해 설명할 것이다.

나는 ssh를 더 좋아한다. ssh는 당신과 방화벽 사이의 모든 통신들을 암호화시켜주지만, TCP Wrapper는 그렇지 않다. 따라서, TCP Wrapper는 스니핑으로부터 당신의 네트웍을 보호해주지 못 한다. 사용자들은 네트웍상에서 당신의 keystroke(패스워드 포함)들을 여전히 캡쳐할 수 있다. 만약, 사용자들의 스니핑이 걱정된다면, telnet/ftp 대신에 ssh를 쓸 것을 권장한다. ssh는 방화벽과의 모든 통신들을 암호화시켜, 당신이 안전한 상태로 파일을 업로드하고 방화벽을 관리할 수 있게 해준다. ssh는 자신만의 logging layer를 갖고 있다는 점과 자신에게 접속할 수 있는 시스템을 제한할 수 있다는 점에서 TCP Wrapper와 비슷하다. ssh에 대한 더 많은 정보를 원한다면, 이곳에서 찾을 수 있을 것이다. 2.x 버전은 라이센스에 제한이 있기 때문에, 1.2.7 버전을 쓰는 것을 권장한다. 95/NT 사용자들은 ssh 클라이언트 프로그램으로 SecureCRT를 사용할 수 있다.

TCP Wrapper는 비록 통신의 암호화는 해주지 않지만, 당신의 시스템에 접근할 수 있는 시스템들을 제한할 수 있고, 그들에 대한 log를 남길 수 있다. TCP Wrapper는 telnet이나 ftp 같은 inetd 서비스들을 보호하는 프로그램이다. TCP Wrapper를 통해 inetd 연결에 대한 wrapper를 띄워서, 모든 log들을 남겨 접근 조절 목록에 반하는 시도들을 가려낼 수 있게 된다. 만약, 연결이 허락되면 TCP Wrapper는 telnet과 같은 적당한 binary로 연결을 넘겨 준다. 접근 제한 목록에 의해 연결이 거절될 경우에는, 연결은 끊어진다.

많은 사람이 방화벽에 왜 굳이 TCP Wrapper가 필요한지 궁금해할 것이다. 대답은 간단하다. 첫째, 방화벽이 침범됐거나 무너졌을 때, TCP Wrapper는 두번째 방어벽을 제공한다. 둘째, TCP Wrapper는 방화벽의 잘못된 조정을 보완해준다. 나는 종종 방화벽이 잘못 세팅되어 있는 것을 보았다. 특히, VPN의 경우 권한이 없는 사용자가 방화벽에 접근할 수 있는 경우가 많았다. 셋째, TCP Wrapper는 다른 시스템 log들을 입증할 수 있는 두번째 logging layer를 제공한다.

Wietse Venema의 Website에서 TCP Wrapper를 얻을 수 있다. 다시 한 번, 당신의 두번째 박스를 사용하여 TCP Wrapper를 받고 컴파일하여라. 방화벽에는 어떤 컴파일러도 필요 없을 뿐더러, 아직은 고립된 네트웍에서 방화벽을 보호해야만 한다. 다운로드가 끝났으면, README 파일을 먼저 읽어보아라. 이것은 TCP Wrapper에 대한 아주 멋진 소개글이다. TCP Wrapper를 컴파일하는데 나는 두가지 옵션을 추천한다. 먼저, go with paranoid로 모든 연결에 대해 reverse lookup이 가능하다. 다음 방법으로, advance configuration을 사용하라. 이것은 매우 간단하다. 이 configuration은 후에 있을 패치들을 위해, 본래 위치에 binary들을 설치한다.

TCP Wrapper를 구동시키기 위해 몇가지 파일들을 편집해야 한다. 먼저, 컴파일이 끝났으면, /usr/local/bin 디렉토리에 tcpd 실행파일이 설치될 것이다. 다음으로, 서비스들을 보호하기 위해/etc/inetd.conf가 조정되어야 한다(example D). 그리고, tcpd logging을 위해 /etc/syslog.conf를 조정하고(example E), /var/adm/tcpdlog를 touch해줘야한다. 마지막으로, /etc/hosts.allow와 /etc/hosts.deny에 접근 제한 목록을 만들어야한다(example F).

이제 모든 파일들이 조정되었다면, /usr/bin/inetd를 kill -HUP를 이용하여 재실행한다. 이로써 TCP Wrapper 데몬이 실행될 것이다. 끝내기 전에 ACLs과 logging이 제대로 남는지 확인해보아라.

오타쿠들을 위해(For the Truly Paranoid)
이제까지 아주 필요한 것들에 대해서만 언급해보았다. 이런 방법들을 통해 당신의 시스템은 아주 안전해졌을 것이다. 축하!! 그러나 불행히도, 당신의 시스템이 100% 안전해진 것은 아닐 뿐더러 그럴 수도 없다(번역자 왈 : lan 선을 뽑아버리고, 컴퓨터를 스위스 은행 금고속에 넣으면 아주 안전하겠지만 --a). 오타쿠들을 위해, 조금더 안전한 시스템을 만들기 위한 몇 가지 방법들을 더해보았다.

먼저 우리는 wheel 그룹을 만들 것이다. wheel 그룹은 /usr/bin/su 같은 강력한 명령을 실행시킬 수 있는 선택된 개인들의 그룹이다. 이런 명령을 실행시킬 수 있는 사람들을 제한함으로써, 시스템의 안전도를 더 높일 수 있다. group을 생성하기 위해, /etc/group 파일을 편집해라. wheel 그룹을 만들고, 거기에 시스템 admin들을 추가시켜라. 그런다음 /usr/bin/su 같은 중요한 시스템 실행파일들을 찾아, 이 파일들의 그룹을 wheel로 바꾸고 실행 권한을 소유주와 그룹에게만 주어라. /usr/bin/su의 예를 들어, 다음과 같이 하면 된다.

/usr/bin/chgrp wheel /usr/bin/su
/usr/bin/chmod 4750 /usr/bin/su

*주의:(su가 /sbin 디렉토리에도 있다는 것을 잊지 말아라. 2.6에서는 /sbin/su.static로 되어 있다. 이 파일은 /usr/bin/su와 똑같지만, 라이브러리가 정적으로 링크되어 있어 파일 크기가 조금 더 크다. 이 파일 역시 위와 같이 바꾸어 주어야한다.)

다음으로, 우리는 .rhosts, .netrc, /etc/hosts.equiv 같은 파일들을 잠굴 것이다. r 명령들이 시스템에 접근하기 위해 이런 파일들을 사용한다. 이 파일들을 잠그기 위해, 퍼미션을 0으로 주어라. 이렇게 함으로써, 아무도 이 파일들을 변경시키거나 생성시킬 수 없게 된다. 예를 들어 다음과 같이 하면 된다.

/usr/bin/touch /.rhosts /.netrc /etc/hosts.equiv
/usr/bin/chmod 0 /.rhosts /.netrc /etc/hosts.equiv

또, TCP initial sequence number 생성 파라미터를 설정한다. 모든 TCP 연결에 대한 ISN을 랜덤하게 설정함으로써, 세션 하이재킹이나 ip 스푸핑 공격에 대해 대비를 할 수 있다. /etc/default/inetinit 파일에 TCP_STRONG_ISS=2로 설정함으로써 이것이 가능해진다(example G). 기본적으로, 시스템이 설치될 때 1로 설정되어있는데 이거은 결코 안전하지 않다.

가능한 버퍼오버플로우 공격을 막기위해, /etc/system에 다음 줄을 추가하여라.

set noexec_user_stack=1
set noexec_user_stack_log=1

(번역자 왈 : 이것은, stack 영역에서 code가 실행되지 않게 할 뿐더러 그러한 시도에 대해 log를 남긴다.)
마지막으로, IP 모듈에 대해 약간의 변경을 가하자. 다음의 명령들을 당신의 시작 스크립트에 추가하여라. ndd와 보안을 위한 ip 모듈 튜닝에 대한 자세한 정보는 Network Settings for Security에서 참고하여라.

### Set kernel parameters for /dev/ip
ndd -set /dev/ip ip_respond_to_echo_broadcast 0
ndd -set /dev/ip ip_forward_directed_broadcasts 0
ndd -set /dev/ip ip_respond_to_timestamp 0
ndd -set /dev/ip ip_respond_to_timestamp_broadcast 0
ndd -set /dev/ip ip_forward_src_routed 0
ndd -set /dev/ip ip_ignore_redirect 1

결론(Conclusion)
solaris 무장화를 위한 다소 기본적인 방법들을 살펴보았다. 안전한 시스템을 위한 열쇠는 최소의 소프트웨어 설치와 TCP Wrapper 등을 통한 layer들의 보호이다. 아직도 sudo(시스템 관리자가 root 권한을 몇몇 사용자에게만 주고 그들의 활동을 모두 log로 남길 수 있게한다), tripwire(시스템 실행파일들의 변경을 감지한다), swatch(자동으로 log를 모니터하고 경고해준다) 등과 같은 취할 수 있는 많은 방법들이 남아 있다. 시스템은 절대 100% 안전할 수 없다는 것을 명심하여라. 그러나, 위에 설명된 방법들을 통해, 위험을 크게 감소 시켰음은 틀림없다.

당신의 solaris 시스템을 더욱 무장화하기 위한 정보로, Sun Microsytems blueprint 글들, 특히 Solaris Security를 읽어 보는 것이 좋다.

보안을 위해, Brad Powell의 armoring script Titan을 검토해볼 것을 적극 권장한다. 이 전문적인 도구는 내가 여기에 써 놓은 것들보다도 더 강력하고 모듈적이면서, 훨씬 더 자세하게 보안에 대해 기술해 놓았다. 또한, YASSP-Yet Another Security Solaris Paper-를 검토해 보는 것도 좋을 것이다.

다운로드(Downloads)
당신의 시간과 노력을 덜어주기 위해, 여기에 쓰인 모든 것들을 자동으로 해주는 스크립트 하나를 만들어보았다. 이 스크립트는 바뀌기 전의 모든 파일들을 백업한 다음, 위에 쓰인데로 시스템을 바꿀 것이다. 또한, TCP Wrapper 역시 당신을 위해 구현할 것이다. 이 스크립트는 당신의 프로세서를 적절히 탐지하여 적당히 알아서 행동할 것이다. 이 스크립트는 꼭 새로이 설치된 시스템에만 쓰길 바란다. 의견이나 충고는 lance@spitzner.net로 보내면 된다.

Download armor-1.3.tar.Z

solaris 배포판에 uncompress가 기본으로 설치되기 때문에, gzip 대신에 compress를 사용하였다.
MD5 체크섬은 295e47ee993f4acc3b78333680fde1e5 이다.

Author's bio
Lance Spitzner는 집에서 그의 Unix 시스템을 날려 먹으면서 공부하는 것을 즐기고 있다. 이 전에는, 그는 Rapid Deployment Force의 장교였다. 그곳에서 그는 다른 어떤 것을 날려먹었다. lance@spitzner.net을 통해 그에게 연락할 수 있다.

 

 

반응형
Posted by [PineTree]
OS/SOLARIS2006. 8. 1. 00:19
반응형

1. /etc/hosts
2. /etc/net/ticlts/hosts
3. /etc/net/ticots/hosts
4. /etc/net/ticotsord/hosts
5. /etc/nodename
6. /etc/hostname.xxx(첫번째 랜카드)

 

위파일을vi로 열어서 호스트 네임을 변경해준다.^^

반응형
Posted by [PineTree]
OS/SOLARIS2006. 7. 24. 04:16
반응형
Reference:
Title: How to backup Operating System in Multi-user mode safely
http://sunsolve.sun.com/search/printfriendly.do?assetkey=1-9-79286-1

Title: ufsdump(1M) should not be done on a live (mounted) filesystem.
http://sunsolve.sun.com/search/printfriendly.do?assetkey=1-9-74065-1

 

0. 주의 사항
시스템의 Run Level 3 상태에서 ufsdump 혹은 dd 를 이용한 Boot device 백업은
Data Corruption 의 위험을 포함하고 있다.(비록 대부분의 경우는 문제가 발생하지
않지만... 왜 머피의 법칙이 있지 않은가...ㅠㅠ)
Run Level 3에서 Boot device의 Disk-To-Tape, Disk-To-Disk 백업은 반드시 아래 절차를
따라야 함.

 

1.0 Disk-To-Tape 백업/복구
fssnap -o bs=/export/home /
/* " /"  파일시스템에 대한 Snapshot을 /export/home 디렉토리 아래에 만든다.
bs, 즉 Snapshot이 생성될 디렉토리는 반드시 Snapshot 대상과 별도의 파일시스템에
존재해야 한다. */

 

fssnap -i #snapshot 생성 확인

 

ufsdump 0uf /dev/rmt/0 /dev/rfssnap/0  #Full backup


fssnap -d /  #deleting snapshot


rm /export/home/snapshot0 #실제로 디렉토리에서 snapshot 파일 지우기


ufsrestore tf /dev/rmt/0 # 테이프 내용 확인


ufsrestore tf /dev/rmt/9 ./bin/pwd #/bin/pwd 파일이 있는지 테이프 내용 확인

 

/*************** 복구 ****************/
/* Solaris 8 OS Software CD 1번을 넣고, boot cdrom -s 명령으로 부팅한다.
ufsrestore rvf /dev/rmt/0 #파일을 복원하고자 하는 디렉토리에서 이 명령을 치면 됨.
rm restoresymtable


/* Boot Block 을 OS Disk의 첫번째 블럭에 설치한다.
installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/devicename

 

2.0 Disk-To-Disk 백업/복구
prtvtoc /dev/rdsk/c0t0d0s2 | fmthard -s - /dev/rdsk/c0t1d0s2
/* Boot device c0t0d0s2 를 유휴 디스크 c0t1d0s2 로 파티셔닝 정보를 복사한다. */


newfs /dev/rdsk/c0t1d0s0; mount /dev/dsk/c0t0d0s0 /a
ufsdump 0f - /dev/rfssnap/0 | ( cd /a ; ufsrestore -xf -)
/* ufsdump, ufsrestore 를 이용한 디스크 복사 */


rm restoresymtable


/* Boot Block 을 OS Disk의 첫번째 블럭에 설치한다.
installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/devicename


/* 복사된 Disk umount */
umount /a

반응형
Posted by [PineTree]
OS/SOLARIS2006. 7. 24. 04:14
반응형

 
Disk 관리

1) ufsdump를 이용한 Disk 관리

: * slice단위의 data이동에 사용, 하나의 디스크에 여러개의 슬라이스가 있을 땐 사용 불편
* 소스, 타켓 의 슬라이스 크기나, 디스크 type 틀려도 사용 가능
* ufs file system에서만 사용가능

1. target disk에 slice 생성

:동일한 Disk Type일 경우

# /usr/sbin/prtvtoc /dev/rdsk/소스디스크s2 | /usr/sbin/fmthard [ -n 볼륨이름 ] -s - /dev/rdsk/타켓s2

:Disk type이 틀릴땐, format 으로 해당 slice 생성

2. target disk의 slice format 요

#newfs /dev/rdsk/타켓디스크각각의 slice


3. ufsdump | ufsrestore로 cp

: cdrom으로 부팅하여, 소스디스크- 타켓디스크 dump 하는 경우를 권장하지만, normal booting도 괜찮음
대신 dump 시 Disk I/O는 없어야 함

# mkdir /tmp/root2
# mount /dev/dsk/타켓디스크_슬라이스 /tmp/root2
# cd /tmp/root2
# ufsdump 0f - /dev/rdsk/소스_슬라이스 | ufsrestore rvf -

(주의) "ufsrestore rvf /dev/rdsk/타켓_슬라이스" 같이 mount 하지 않고, 바로 dump 불가!!


4. Os Disk 라면 Boot Block 추가

# cd /usr/platform/`uname -m/lib/fs/ufs
# installboot bootblk /dev/rdsk/타켓Disk_s0


etc> * swap 슬라이스는 공간만 맨들어 두면 된다.
* 디스크의 슬라이스가 여러개일때, 자동으로 dump 하는 shell script 이용 가능
그러나, 이런 경우는 dd가 편리
* logger 를 이용하여, shell script을 만들어 두고, dump 소요 시간을 /var/adm/message에서 확인한다.
# logger -p "user.notice" "dump Start......."
# ufsdump ...............
# logger -p "user.notice" "dump End.........."


5. 모든 작업이 끝나면, init 0으로 가서, 소스디스크를 빼고, 타켓디스크로 교환한다.
spare로 가지고 있을려면, 타켓Disk의 vfstab 변경

6. 광Disk 를 OS Disk 로 사용할때

: Fiber 인터페이스를 가지는 디스크는 , 시스템의 각각의 slot별로 wwn no.를 가지고 있으므로, cdrom
부팅하여, 다음의 과정을 거친후, 디스크를 교환해야 한다.


www.sun.co.kr/ - 기술문서 메뉴
-------------------------------------------------------------

FCAL disk를 boot disk로 사용할 경우 disk가 WWN을 가지고 있기 때문에
disk교체시 WWN을 바꿔주어야만 error없이 booting을 할수 있다.

다음과 같은 순서대로 실행 하여야 한다.

1) disk를 교체 한다.

2) OS cdrom 을 이용하여 single user mode 로 booting한다.

3) disk partition을 만든후 filesystem을 creation하고, mount한후 data를
restore한다.

4) "installboot" command를 이용하여 bootblock을 install 한다.

5) root partition을 mount한후 device tree를 re-build한다.
# drvconfig -r /a -p /a/etc/path_to_inst
# cd /devices
# find . -print | cpio -pduVm /a/devices
# disks -r /a
# devlinks -r /a

6) luxadm command를 사용하여 EEPROM의 "boot-device" parameter를 수정한다.
# luxadm set_boot_dev /dev/dsk/{root slice entry}
(가능하면, EEPROM의 "boot-device" parameter로 같이 수정한다.)

7) system을 rebooting한다

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


2) dd 를 이용한 Disk 관리

* 디스크에 여러개의 slice가 있는 경우, 디스트를 통으로 cp 할때 사용
* ufs 가 아닌 다른 파일 시스템일때도 사용 가능 ( vfs )
* dd 는 low-level로 disk cp 를 하므로, type 틀린 Disk에서는 사용을 자제한다.
* 대용량 hdd에서 , 적은 data만을 사용하고 있을땐 , ufsdump가 더 빠르다.
* OS Disk일 경우, installboot 가 필요 없다.

1. cdrom 부팅이나, 싱글모두 부팅을 권장하지만, 일반 레벨 부팅도 상관 없다.

2. # dd if=/dev/rdsk/소스디스크s2 of=/dev/rdsk/타켓디스크s2 bs=128k

cf> tape cp : if=/dev/rmt/0 of=/dev/rmt/1
floppy cp : if=이미지파일 of=/vol/dev/aliases/floppy bs=1440k

3. logger 를 이용하여, 셀스크립으로 만들어서 사용

 

3) tape 을 이용한 Network backup/ Restore 를 연습해 두면 , 쓸모가 많다.

: * .rhosts 과 tar 를 사용해서 Remote dat에 백업
* 백업할 곳을, root 퍼미션으로 share한뒤, ufsdump하는게 더 편하다.
aaa 10.0.0.1 : s0 : os
bbb 10.0.0.2 : s7 : 덮프 뜰 곳 : tmp/root2로 mount

bbb > share -o root=aaa /tmp/root2
aaa > cd /net/aaa/tmp/root2; touch aaa <- write test
aaa > ufsdump 0f - /dev/rdsk/c0t0d0s0 | ufsrestore rvf -


4) tar를 이용한 Disk 관리

: OS을 자주 설치해야할 경우, 동일 모델의 Sparc 이라면, 초기 설치시의 모든 파일을
tar 로 묶어 둔뒤, 필요할때, 다시 풀면, OS 설치랑 동일한 효과를 가진다.
만약 A 랑 B가 동일한 모델의 시스템이라면, A에서 Os 깔고, 패치하고, 이런 저런 세팅
한후, tar로 OS 슬라이스를 통채로 묶고, 압축한뒤, 이 파일만 B 시스템으로 옮겨서
압축 풀고, vfstab 설정하고, installboot 만 하면, 새로 설치한 거랑 동일하게 작동한다.
<-- cd 로 싱글 부팅해서 작업해야 겠죠?


* 기회가 되면 Veritas Netback 를 이용한 backup도 눈여겨 본다.

반응형

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

솔라리스 호스트네임변경  (0) 2006.08.01
Sun Solaris Server 온라인중 root 파일시스템 백업  (0) 2006.07.24
DAT 관련 명령어  (0) 2006.07.14
NIC 카드 추가하기  (0) 2006.06.22
스왑용량 늘리기  (0) 2006.06.17
Posted by [PineTree]