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]
DB22006. 7. 20. 23:27
반응형
서버에 연결하기

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Document No. D2200511001
Rel. Tech. IBM DB2
Initial Release 2005.11.23
Last Modified 2005.11.23

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

요약

DB2 클라이언트에서 DB2 서버에 연결하는 방법에 대해서 알아본다.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

내용

 

# System File 작성

1. C:\WINDOWS\system32\drivers\etc/services 을 연다.

 

2. 해당 파일에 Service name, 포트번호, 프로토콜을 추가한다.
예) Service name: db2c_db2ins1, 포트번호:50000에 대해 TCP와 UDP를 등록할 경우 다음과 같이 두 줄을 추가한다.

 

db2c_db2ins1    50000/tcp

db2c_db2ins1    50000/udp

 

 

# 구성 지원 프로그램을 이용한 서버와의 연결

 

1. 구성 지원 프로그램을 열고, 마우스 오른쪽 버튼을 클릭한다.

 

2. [마법사를 사용한 데이터베이스 추가]를 선택한다.

 

3. [데이터베이스 추가 마법사]의 1단계에서 [데이터베이스에 대한 연결을 수동으로 구성]을 선택한다.

 

4. [데이터베이스 추가 마법사]의 2단계에서 TCP/IP를 선택한다.

 

5. [데이터베이스 추가 마법사]의 3단계에서 호스트 이름, 서비스 이름을 설정하고 [검색]버튼을 클릭한다 (여기서 서비스 이름은 System File에 작성된 이름과 동일하여야 한다).

 

6. [데이터베이스 추가 마법사]의 4단계에서 데이터베이스 이름을 설정한다.

 

7. [데이터베이스 추가 마법사]의 5단계에서 [시스템소스로]를 선택한다.

 

8. [데이터베이스 추가 마법사]의 6단계에서 운영체계를 선택한다.

 

9. [데이터베이스 추가 마법사]의 7단계에서 시스템 이름/호스트 이름을 확인하고, [발견]을 클릭한다.

 

10.  [데이터베이스 추가 마법사]의 8단계에서 보안 옵션을 지정한다.

 

11. [구성 지원 프로그램]창에서 새로운 데이터베이스가 추가된 것을 확인할 수 있다.

 

 

# 연결테스트

1. [구성 지원 프로그램]창에서 마우스 오른쪽 버튼을 클릭하여 [연결테스트]를 클릭한다.

 

2. [연경유형]을 선택한 후, 사용자 ID와 암호를 입력하고 [연결테스트]를 클릭한다.

 

3. 연결테스트가 성공하면 다음과 같은 메시지를 볼 수 있다.

 

 

 

# DB2 CLP를 이용한 연결 테스트

1. [DB2 CLP] 명령 프롬프트 창을 띄운다.

 

2. 연결 테스트를 위해 다음과 같은 방식으로 테스트 명령문을 입력한다.

 

connect to [데이터베이스이름] user [사용자] using [패스워드]

 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Reference

-

 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

muduri07@naver.com

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

# # mt -f /dev/rmt/0 status                  (tape 상태 표시)

        # mt -f /dev/rmt/0 eom                  (맨 끝으로 이동, 끝부분 헤더로 이동)

        # mt -f /dev/rmt/0 rewind                (처음으로 되감기)

        # mt -f /dev/rmt/0n fsf count             (count만큼 뒤로 이동)

        # mt -f /dev/rmt/0n nfsf count            (count+1만큼 뒤로 이동)

        # mt -f /dev/rmt/0n bsf count            (count만큼 앞으로 이동)

        # mt -f /dev/rmt/0n nbsf count           (count+1만큼 앞으로 이동)

        # mt -f /dev/rmt/0 erase                  (모든 내용 삭제)

        # mt -f /dev/rmt/0 offline                  (eject)

 

# mt -f /dev/rmt/0 rew

    테이프를 처음으로 감음

 

 # ufsrestore tf /dev/rmt/0n

   첫번째 백업 내용을 출력하고 테이프는 그 다음 백업 받은 것을 가리킴

 

 # ufsrestore tf /dev/rmt/0n

   두번째 백업 내용을 출력. 테이프는 그자리.

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

 mt 명령어

 

목적: 마그네틱(Magnetic) 테이프 드라이버를 조정하기 위해 사용한다.
사용법:  mt  command
명령어 사용법:
fsf  n :  forward space count files
bsf  n : backward space count files
rewind : Rewind the tape
ret : Retension the tape
status : Print status information about the tape unit
feom : 테이프에 파일을 추가할 수 있는 장소로 이동한다.


[/home] mt  ret
[/home] mt  rewind
[/home] mt  -f  /dev/rmt0  sf  1
[/home] mt  -f  /dev/rmt0  bsf  1
[/home] mt  -f  /dev/rmt0  feom

 

 

유닉스를 주로 사용하는 기계는 많은 종류의 자기테이프를 씁니다.

옛날에 쓰던 1/2 인치 릴 테이프... 이건 아마도 아니겠죠?
이건 옛날 교환기에서는 아직도 쓸지 모르지만... 전 안써봐소 모릅니다.
이건 아닐거고..

1/4인치짜리 카트리지로 나온게 있습니다. 수십메가에서 백몇메가까지
백업이 가능한데... 이건 90년대 초에 많이 쓰던겁니다. 이건 테이프
드라이브에 꼽아 넣기만 하면 됩니다.

다음 8미리 비디오테잎(같이 생긴것)이 있습니다. 이건 용량때문에
잠시 쓰다가 바로 DDS(Digital Data Storage?)테입 일명 다트 테잎으로
바뀌었습니다.

대부분이 아마도 이 DDS테잎인데.. .이것도 그냥 테잎드라이브에 넣으면
됩니다.

또 대용량 고속 백업시스템에 많이 쓰는 DLT, 이것도 그냥 테잎드라이브에
넣으면 됩니다.


넣고 나서는 그 안의 파일을 가져와야 하는데, 그것이 어떠한 방식으로
넣었느냐에 따라 다릅니다.

대부분이 아마도 tar (Tape ARchive)유틸리티로 만들어진 것일 겁니다.
그럼 tar xvf /dev/mnt/0m 정도로 내용을 풀 수 있습니다.
/dev/mnt/0m 은 디바이스 파일로 시스템마다 다를 수 있으니 시스템에
맞는 테이프 디바이스 파일을 지정해 주시면 됩니다.

그 다음 카세트 테이프 작동법 처럼 fast forward, rewind, eject 같은
작동을 시키는 명령어가 mt 라는 명령어 입니다.

mt rew : 되감기
mt fsf : 다음 파일로
mt offl : 꺼내기

이런 명령어들이 대충 먹을 겁니다. (이건 mt 매뉴얼을 보세요... man mt)
 

반응형
Posted by [PineTree]
ORACLE/ADMIN2006. 7. 6. 22:18
반응형

XP에 설치된 원격지 오라클에 접속하면 "TNS-12535 TNS 작동이 중단입니다"

 

오라클이 설치된 XP에서는 TNSPING 또는 SQLPLUS 접속이 원활이 진행되나

다른 원격지 컴퓨터에서 오라클이 설치된 XP(방화벽)에 접속할경우

"TNS-12535 TNS 작동이 중단입니다" 라는 오류 메시지를 만나게 된다.

 

원격지에서 1521포트를 통해 접속하지만 DB에서는 프리포트를 생성해 클라이언트에 결과를

돌려주게 된다. 때문에 발생하는 오류인것 같다.

 

[해결방법]

 

환경 :

   XP SP2

   ORACLE 9

  

DB가 설치된 방화벽설정에 1521포트를 허용하도록 추가해준다.

레지스트리편집기를 열어 해당 경로 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE

에서 새로만들기->확장가능한 문자열값 을 선택 USE_SHARED_SOCKET = TRUE 를 지정한다.

 

멀티홈이라면 오라클홈 ORACLE.KEY 에 홈을 확인해보고 USE_SHARED_SOCKET = TRUE 를

어디에 지정할지를 확인하고 지정한다.

예)C:\oracle\ora92\bin\oracle.key

 

적용했는데도 접속이 되지 않을경우 윈도우 서비스를 열어 오라클 관련 서비스를 재시작해준다.

반응형
Posted by [PineTree]
ORACLE/INSTALL2006. 6. 27. 03:04
반응형

1. oracle 다운로드 및 압축해제

 

zcat ship_lnx_920_disk1.cpio.gz | cpio idmv

zcat ship_lnx_920_disk2.cpio.gz | cpio -idmv

zcat ship_lnx_920_disk3.cpio.gz | cpio -idmv

disk1, disk2, disk3이 생기고 생긴 파일들은 폴더를 하나 생성해서 이동시킨다

여기서는 /home/oracle로 이동

 

2. oracle 유저생성 및 권한부여

 

groupadd dba

useradd oracle g dba

chown R oracle.dba /home/oracle

chmod 777 / home

chmod 777 /home/oracle

 

3. pre-install RPM

* Required OS Components

            - compat-db-4.1.25-9

            - compat-gcc-32-3.2.3-47.3

            - compat-gcc-32-c++-3.2.3-47.3

            - compat-oracle-rhel4-1.0-3

            - compat-libcwait-2.0-1

            - compat-libgcc-296-2.96-132.7.2

            - compat-libstdc++-296-2.96-132.7.2

            - compat-libstdc++-33-3.2.3-47.3

            - gcc-3.4.3-9.EL4

            - gcc-c++-3.4.3-9.EL4

            - gnome-libs-1.4.1.2.90-44

            - gnome-libs-devel-1.4.1.2.90-44

            - libaio-devel-0.3.102-1

            - libaio-0.3.102-1

            - make-3.80-5

            - openmotif21-2.1.30-11

            - xorg-x11-deprecated-libs-devel-6.8.1-23.EL

            - xorg-x11-deprecated-libs-6.8.1-23.EL

 

The compat-oracle-rhel4-1.0-3 and compat-libcwait-2.0-1 packages are available

from Oracle Metalink Patch 4198954.

While installing the patch you might receive the warning. It is a normal behaviour.

 

. 의존성이 있는 RPM들은 같이 설치하여야 합니다.

보통 풀패키지로 설치 했을 때 대부분의 패키지들이 깔리지만 오라클의 메타링크에서 제공하는 패키지는 다운을 받아서 설치해야 합니다.

 

레드햇 9에서는

xorg-x11-deprecated-libs-devel-6.8.1-23.EL

compat-libgcc-296-2.96-132.7.2

openmotif21-2.1.30-11
위 패키지를 설치 안해도 잘 깔린다고 합니다.

 

4. jdk설치

 

다운로드 : https://jsecom16.sun.com/ECom/EComActionServlet;jsessionid=809FCB97DF13018EB55AFF8187294C0B

, 오라클 계정이 있어야 합니다.

RPM in self-extracting file(j2sdk-1_4_2_08-linux-i586-rpm.bin, 33.64M)

chmod +x를 주고 설치

rpm Uvh로 설치

/usr/java/j2sdk-1_4_2_08에서 /usr/local/j2sdk-1_4_2_08로 이동후

$/usr/local/에서 ln s j2sdk-1_4_2_08 java

/etc/profile에서 다음 내용을 설정

# For java

export JAVA_HOME=/usr/local/java

export PATH=$JAVA_HOME/bin:.:$PATH

 

5. 공유메모리 및 세마포 설정

오라클사가 제공한 커널 파라미터 값에 대한 권고값

파라미터

권장값

설명

SEMMNI

100

시스템 내 세마포어 셋의 최대 개수, 동시에 사용될 수 있는 세마포어의 최대 개수를 결정한다.

SEMMNS

256

시스템 내 세마포어 전체 개수

SEMMSL

100

한 개의 세마포어 셋에 존재할 수 있는 세마포어의 최대개수.

오라클 프로세스의 최대개수에 10개정도를 더한 값으로 설정한다. (오라클 initSID.ora 파일 내의 processes 파라미터)

SEMOPM

100

시스템 내 semop를 호출할 때마다 operation의 최대 개수

SEMVMX

32767

세마포어의 최대값을 결정한다.

SHMMAX

2147483648

한 개의 공유 메모리 세그먼트의 최대 크기 (단위: 바이트)

SHMMIN

1

한 개의 공유 메모리 세그먼트의 최소 크기 (단위: 바이트)

SHMMNI

100

공유 메모리 세그먼트의 최대 개수

SHMSEG

4096

한 개의 프로세스에 연결될 수 있는 공유 메모리 세그먼트의 최대값

** 공유 메모리와 세마포어의 개수 알아보기**

원래 공유메모리와 세마포어를 변경한 값을 적용하여 커널을 재컴파일 해야하지만

여건이 되지 않는 경우 소프트웨어적으로 공유메모리와 세마포어를 변경할 수 있다.

[root@ora9 kernel]# vi /etc/sysctl.conf

가장 마지막에 다음을 추가합니다.

kernel.shmmax = 2147483648

kernel.sem = 250 32000 100 128

fs.file-max = 65536

net.ipv4.ip_local_port_range=1024 65000

시스템 리소스를 제한하는 설정파일에 다음을 추가한다.

[root@ora9 kernel]# vi /etc/security/limits.conf

가장 마지막에 다음을 추가합니다.

oracle soft nofile 65536

oracle hard nofile 65536

oracle soft nproc 16384

oracle hard nproc 16384

이 후 재부팅을 권장합니다.

 

6. 오라클 사용자 초기화 파일구성

oracle$ vi .bash_profile

 

# for ORACLE

 

export ORACLE_BASE=/home/oracle
export ORACLE_HOME=$ORACLE_BASE/product/9.2.0
export ORACLE_OWNER=oracle

export ORACLE_SID=ORA92
export ORACLE_TERM=xterm
export NLS_LANG=AMERICAN_AMERICA.KO16KSC5601
export TNS_ADMIN=$ORACLE_HOME/network/admin

export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export LD_LIBRARY_PATH
export LD_ASSUME_KERNEL=2.4.1

export THREADS_FLAG=native

export TEMPDIR=/tmp

export EDITOR=vi
export PATH=$PATH:$ORACLE_HOME/bin
umask 022

 

# for DBA/User

 

alias oh='cd $ORACLE_HOME'

alias ob='cd $ORACLE_BASE'

alias cls='clear'

alias ls=’ls -F’

alias rm=’rm –i’

umask 022

 

# for java

 

export JAVA_HOME="/usr/jdk"

CLASSPATH=".:$JAVA_HOME/lib/tools.jar"

CLASSPATH="$CLASSPATH:$ORACLE_HOME/jdbc/lib/classes12.jar"

CLASSPATH="$CLASSPATH:$ORACLE_HOME jdbc/lib/nls_charset12.jar"

CLASSPATH="$CLASSPATH:$ORACLE_HOME/rdbms/jlib/xsu12.jar"

CLASSPATH="$CLASSPATH:$ORACLE_HOME/lib/xmlparserv2.jar"

CLASSPATH="$CLASSPATH:$ORACLE_HOME/lib/classgen.jar"

CLASSPATH="$CLASSPATH:$ORACLE_HOME/lib/oraclexsql.jar"

CLASSPATH="$CLASSPATH:$ORACLE_HOME/lib/xmlplsql.jar"

CLASSPATH="$CLASSPATH:$ORACLE_HOME/lib/xschema.jar"

export CLASSPATH

 

오라클 환경 설정 항목과 그에 대한 설명

설정 이름

설정 설명

ORACLE_BASE

오라클 설치 프로그램인 OUI를 저장하고 오라클 트레이스 파일 및 데이터 파일을 저장하는 디렉토리의 이름을 기록하는 오라클 환경변수 명이다.

ORACLE_HOME

현재 설치하고자 하는 오라클 데이터베이스 서버를 저장할 디렉토리명을 기록한다.

ORACLE_OWNER

오라클 제품을 컨트롤할 OS 시스템 레벨의 유저가 누구인가를 설정하는 오라클 환경변수로, 앞 단락에서 생성한 oracle 사용자를 지정한다.

LD_LIBRARY_PATH

오라클 제품을 사용할 때 사용되는 오라클 공유 라이브러리들의 경로를 나타낸다. 반드시 $ORACLE_HOME/lib를 포함하여 설정한다./

ORACLE_SID

오라클 서버 인스턴스의 이름인 Oracle System Identifier(SID)를 설정한다. 하나의 하드웨어에 여러 개의 데이터베이스 인스턴스가 존재할 수 있지만, SID는 개별 인스턴스에 대해 유일한 이름으로 명명되어야 한다.

PATH

$ORACLE_HOME/bin을 포함하여 설정한다.

NLS_LANG

오라클 데이터베이스의 문자 셋을 설정한다. 여러분이 생성하게 될 데이터베이스의 문자셋과 일치해야 한다.

TNS_ADMIN

Oracle Network를 구성할 때 필요한 설정파일의 위치를 지정하는 것으로, insterner.ora, tnsnames.ora, sqlnet.ora 파일들이 위치하고 있다.

ORA_NLS33

NLS_LANG 항목에 설정된 문자 셋대로 오라클 데이터베이스에서 각국의 언어 및 도량형을 제공하는 데 필요한 정보를 갖고 있는 파일들의 위치를 지정한다.

TEMPDIR

오라클 데이터베이스가 운영 중에 임시 파일들을 위치시킬 장소를 지정한다.

EDITOR

SQL *Plus 상에서 edit명령어를 사용했을 때 실행할 수 있는 OS 레벨의 에디터를 지칭하는 것으로, 여러분에게 익숙할 만한 pico, vi를 설정한다.

LANG

데이터베이스의 문자 셋을 결정하는 NLS_LANG과 달리, 현재 사용자의 세션에서의 문자 셋을 결정하는 시스템 환경변수이다. 필자와 같이 ko_KR.eucKR를 설정하면 한글화된 시스템 메시지를 볼 수 있으며, 오라클에서 제공하는 모든 자바 툴에서 한글화 메시지를 바로 볼 수 있다.

DISPLAY

Oracle Universal Installer 등 오라클에서 제공하는 자바로 만들어진 여러 가지 툴이 구동하기 위한 X윈도우 환경을 설정하기 위한 것으로, 사용자의 서버 명이나 IP를 설정한다.

LD_ASSUME_KERNEL

KERNEL 버전을 다른것으로 보이게 하기 위한 환경 변수다.

THREADS_FLAG

JAVA Thread 실행과 관련이 있는 값이다.

 

7. 오라클 셋업

x-windows oracle계정으로 로그인

oracle에서 ./runinstaller

언어가 깨지거나 실행이 안될 경우에는 다음명령을 실행

unset LANG

Unix Group Name-> oinstall 또는 dba

sid-> 일반적으로 ora9 혹은 ora92

Global Database Name -> ora9.도메인

문자셋은 [6] 사용자 초기화파일에서 설정한 것과 같아야 한다.

export NLS_LANG=AMERICAN_AMERICA.KO16KSC5601

설치 중간에 orainstRoot.sh 팝업이 나올시

새창에서

su root

cd /tmp

./orainstRoot.sh실행

완료 후 진행

설치 진행 100% 후에

*/oracle/ora92/root.sh 실행 대화상자 팝업

$su root

#cd / oracle/ora92

#./root.sh

시스템 기본 디렉토리를 물으면

/usr/bin으로 설정

 

 

8. Database 시작과 종료

                    glibc 관련 rpm 패키지 원상복구하기

[root@ora9 /]# cd /usr/local/src/

[root@ora9 src]# rpm -Uvh --nodeps glibc-common-2.3.2-11.9.i386.rpm

[root@ora9 src]# rpm -Uvh --nodeps glibc-devel-2.3.2-11.9.i386.rpm

[root@ora9 src]# rpm -Uvh --nodeps glibc-2.3.2-11.9.i386.rpm

 

                    오라클 데이터베이스 시작하기

Database 의 시작과 종료는 반드시!! Oracle 계정으로 수행해야 합니다.

[root@ora9 src]# su oracle

[oracle@ora9 src]$ sqlplus /nolog

SQL> connect / as sysdba

SQL> startup

오라클 데이터베이스를 시작하고 종료하기 위해서는 OS에서의 인증과 암호 파일을 생성하는

툴인 orapwd를 통해야 한다. 그리고 sys 스키마의 권한인 sysdba 권한과 public 스키마

권한인 sysoper 권한의 특별한 시스템 권한을 소유한 사용자이어야 한다.

· sysdba : 데이터베이스 시작/종료, 아카이브 및 복구 작업, ALTER DATABASE OPEN,

MOUNT, BACKUP, CHANGE, CHARACHER SET 절의 명령어 실행

· sysoper : 데이터베이스 시작/종료, 아카이브 및 복구 작업, ALTER DATABASE OPEN,

MOUNT, BACKUP 절의 명령어 실행

SQL> SELECT * FROM v$version;

현재의 오라클 데이터베이스 인스턴스의 버전 확인하기

 

                    오라클 데이터베이스 종료하기

[oracle@ora9 src]$ sqlplus /nolog

SQL> connect / as sysdba

SQL> shutdown immediate

SQL> exit

 

                    oratab 파일 편집하기

오라클 데이터베이스를 /etc/rc.d/ini.d에 스크립트로 설정하여 자동으로 실행하게 하여봅시다.

[root@ora9 src]# vi /etc/oratab

다음 부분을 수정 ([SID], [ORACLE_HOME], [자동실행/종료 플래그]로 구성되어 있습니다.)

ora9:/opt/oracle/product/9.2.0.1.0:N è ora9:/opt/oracle/product/9.2.0.1.0:Y

 

                    Parameter 파일 링크

xxxxxxxxxxxx은 일정치 않은 숫자 입니다.

[root @ora9 /]# cp /opt/oracle/admin/ora9/pfile/initora9.ora.xxxxxxxxxxxx \

/opt/oracle/product/9.2.0.1.0/dbs/initora9.ora

 

                    s/etc/rc.d/init.d 에 등록하기

oracle9i 스크립트를 /etc/rc.d/init.d 에 복사합니다.

[root@ora9 src]# cp /usr/local/src/oracle-9.2.0.1.0 /etc/rc.d/init.d/oracle9i

oracle9i에 실행권한을 부여합니다.

[root@ora9 src]# chmod 755 /etc/rc.d/init.d/oracle9i

시스템에 oarcle9i 데몬을 등록한다.

[root@ora9 src]# chkconfig --add oracle9i

[root@ora9 src]# chkconfig --level 2345 oracle9i on

Oracle Database를 재시작 시켜본 후, LISTENER 데몬이 띄워져 잇는지 확인합니다.

[root@ora9 src]# /etc/rc.d/init.d/oracle9i start

[root@ora9 src]# ps ax | grep LISTENER

 

 

설치 로그보기

tail f $ORA_HOME/app/oracle/product/orainventory/logs/installactions.log

 

Oracle 삭제

$ORACLE_HOME 디렉토리에 있는 설치파일들 전부삭제

/etc 밑에 orainst.loc, oratab 삭제

/usr/local/bin/oraenv 파일 삭제

/tmp 디렉토리에서 관련파일 삭제

# rm /etc/oratab /etc/emtab

이후 다시 재설치 하시면 됩니다.

 

 

이 문서는 RHEL4기준으로 작성 된 것이며

redhat 9.0버전과는 크게 틀리지 않을 것입니다.

 

 

반응형
Posted by [PineTree]