'OS/SOLARIS'에 해당되는 글 77건

  1. 2007.08.02 SSH
  2. 2007.08.02 Solaris Resource Manager (SRM)
  3. 2007.08.02 dumpadm
  4. 2007.08.01 Solaris 보안
  5. 2007.07.25 Solaris 설치 후 기본적인 설정
  6. 2007.07.20 Solaris,HP-UX 에서 패치
  7. 2007.07.20 SOLARIS PATCH ERROR CODE
  8. 2007.07.20 Trunking
  9. 2007.07.19 solaris 10 DVD 여러개 파일 한개이미지로 합치기
  10. 2007.07.19 IPMP에 대하여
OS/SOLARIS2007. 8. 2. 19:04

SSH

반응형
1. SSH 일반적 설명
 
Solaris9에서는 SSH를 기본 제공하나 8에서는 그러하지 못하다. 보안문제가 중요한 이시점에서 무료로 제공하는 SSH는 안전한 패킷통신을 지원하기 위한 원격 접속 서비스입니다.
일반 텔넷 서비스는 암호회되지 않아서 스니핑시에 정보가 노출될 위험이 있으나, 22번 포트를 사용하는 SSH의 경우 인터넷의 키 알고리즘을 이용해 암호화된 자료를 전송하며, 인터넷 프로토콜로 쉽게 사용할수 있어 불법적으로 내용을 해독할수 없게 합니다.
SSH는 쌍방의 비대칭키를 이용하여 안전한 접속 세션을 구성합니다.
보통 scp(rcp(secure cp))나 sftp(ftp(secure ftp))와 같은 파일 전송 도구로도 활용되고 있는 실정입니다. 보통 SSH1과 SSH2가 있는데 SSH2를 많이 사용합니다.
 
 
2. SSH 설치 작업
 
1. 자신의 솔라리스에 맞는 패치를 설치합니다.
http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/patch-access 에서 자신에게 맞는 패치를 다운로드 받습니다.

2. 받은 패치를 설치합니다.
112438-01.zip는 버전마다 차이있음 자신에게 맡는것 받으세요

# mv 112438-01.zip.exe 112438-01.zip
만약 위 보기처럼 exe라고 붙은 파일이 있으면 이름 변경해야됩니다.
# unzip 112438-01.zip
압축을 풉니다.
# patchadd 112438-01
패치를 까는 명령(patchadd), 지우는 명령(patchrm)
Checking installed patches......
패치 까는데 보통 30~1시간 이상 걸립니다.
3. 패치를 깔고나면 프롬프트(#)가 나오는데, 재부팅을 해야합니다.
# reboot
 
 
3. 다음 4개의 파일을 www.sunfreeware.com등에서 다운로드 받으세요
 
※ 주의 : 아래파일은 솔라리스8용이며 인텔버젼용 딴 머신은 자신에게 맞는 파일을 다운로드 받으세요

1. openssh-3.4p1-sol8-intel-local.gz
2. openssl-0.9.6e-sol8-intel-local.gz
3. zlib-1.1.4-sol8-intel-local.gz
4. libgcc-3.1-sol8-intel-local.gz
위 4개의 파일을 받는데 버전이 업된것도 있다.
 
4. 해당 파일을 다운 받았으면, 압축을 풀어주세요
 
# gunzip openssh-3.4p1-sol8-intel-local.gz
# gunzip openssl-0.9.6e-sol8-intel-local.gz
# gunzip zlib-1.1.4-sol8-intel-local.gz
# gunzip libgcc-3.1-sol8-intel-local.gz
압축 한번에 풀기 는..    # gunzip *.gz 위명령과 동일하다.
 
5. 압축이 풀렸다면 패키지를 깔으세요.
 
#pkgadd -d openssh-3.4p1-sol8-intel-local
#pkgadd -d openssl-0.9.6e-sol8-intel-local
#pkgadd -d zlib-1.1.4-sol8-intel-local
#pkgadd -d libgcc-3.1-sol8-intel-local
 
6. /var/empty 디렉토리 생성후 권한줍니다.디렉토리내 아무것도 없어야함)
 
# mkdir /var/empty
# chown root:sys /var/empty
# chmod 755 /var/empty
 
7. sshd 유저와 그룹생성 홈디렉토리 변경
 
# groupadd sshd
# useradd -g sshd -c "sshd" -d /var/empty -s /bin/false sshd
 
8. 모든 시스템에서의 접속을 허용한다면 다음과 같이 한다.
 
# echo "sshd: ALL" > /etc/hosts.allow
allow로 끝나는 파일은 허용할 대상 설정 파일(deny는 막는것 설정)

9. ssh의 실행을 위해 기본으로 사용될 키를 생성합니다.
 
만약 다음 명령이 실행안되면 패스를 지정합니다.
참고로 다음 명령의 위치는 /usr/local/bin/ssh-keygen 입니다

# ssh-keygen -t rsa1 -f /usr/local/etc/ssh_host_key -N ""
# ssh-keygen -t dsa -f /usr/local/etc/ssh_host_dsa_key -N ""
# ssh-keygen -t rsa -f /usr/local/etc/ssh_host_rsa_key -N ""
 
 
10. 환경변수 설정합니다.(본인 쉘에 맞는것만 하세요)
 
Bourne shell 시에...
# export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/ssl/lib:$LD_LIBRARY_PATH

C Shell 시에는...
# setenv LD_LIBRARY_PATH /usr/local/lib
 
 
11. inetd 데몬 죽입니다.
 
# ps -ef | grep inetd
root 177 1 0 5월 XX일 ?  8:00 /usr/sbin/inetd -s
# kill -9 177           
해당 프로세서를 죽인다.
 
 
12. /usr/local/sbin/sshd 를 실행시킨다.
 
# /usr/local/sbin/sshd
 
 
13. 내 시스템이나 타 시스템 접속시
 
# ssh localhost
.......자기 시스템에 접속됨................
# ssh
user@host.example.com
.......타 시스템에 접속시 예제.............

정리.

inetd를 죽인이유는 inetd데몬 없이도 접속이 가능하기때문입니다.
 
 
 
 
 
 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
기존에 telnet 명령이나 ftp 명령은 text base 통신 이기 때문에 snoop 등의
프로그램에 의해 감청을 당하기 쉽습니다.
쉽게 말해 자신의 암호를 다른 사람이 쉽게 알아 낼 수 있다는 것이지요.

아래의 내용으로 프로그램을 설치하면 다음의 명령들을 사용할 수 있습니다.

- ssh 107.2.1.1 ( telnet 107.2.1.1 과 같은 보안 프로그램)
- sftp 107.2.1.1 ( ftp 107.2.1.1 과 같은 보안 파일 전송 프로그램)
- scp comedu100:/etc/passwd /tmp
( rcp comedu100:/etc/passwd /tmp 과 같은 파일 복사 프로그램)
- slogin comedu100 ( rlogin comedu100 과 같은 프로그램)


1) pkg를 설치 합니다.
4가지의 package 를 설치 하여야 합니다.
이프로그램은 (
http://sunfreeware.com 에서 구하실 수 있습니다.)

[/]# pkgadd -d prngd-0.9.25-sol8-sparc-local
[/]# pkgadd -d zlib-1.1.4-sol8-sparc-local
[/]# pkgadd -d openssl-0.9.6g-sol8-sparc-local
[/]# pkgadd -d openssh-3.5p1-sol8-sparc-local

2) /.profile 과 /.kshrc 파일을 수정 합니다.
이 파일안에 설정하는 내용은 프로그램의 위치를 나타내는 PATH 변수와
man 프로그램의 MANPATH 를 설정 하는 부분입니다.

[/]# vi /.profile
export ENV=.kshrc

[/]# vi /.kshrc
export PATH=$PATH:/usr/local/bin:/usr/local/sbin
export MANPATH=$MANPATH:/usr/local/man

[/]# . /.profile
[/]# . /.kshrc

3) /etc/services 파일에 다음의 내용을 추가 합니다.

[/]# vi /etc/services
prngd 708/tcp
prngd-user 4840/tcp

[/]# pkill -HUP inetd <-- 반드시 수행 합니다.

4) prng 데몬을 시작 합니다.
[/]# /usr/local/sbin/prngd -s /dev/urandom /var/run/egd-pool

% 반대로 데몬을 정지 하고자 한다면 다음과 같이 하셔야 합니다.
[/]# /usr/local/sbin/prngd --kill /var/run/egd-pool

5) ssh 통신을 위한 보안키를 생성 합니다.
[/]# ssh-keygen -t rsa1 -f /usr/local/etc/ssh_host_key -N ""
[/]# ssh-keygen -t dsa -f /usr/local/etc/ssh_host_dsa_key -N ""
[/]# ssh-keygen -t rsa -f /usr/local/etc/ssh_host_rsa_key -N ""

6) sshd 의 사용자를 생성합니다.
[/]# useradd sshd

7) 디렉토리를 생성합니다.
[/]# mkdir /var/empty

8) sshd 데몬을 뛰웁니다.
[/]# sshd

9) 연결하려는 컴퓨터도 위와 같이 셋업을 한후에 test 합니다.
[/]# ssh comedu100
root@comedu129's password: *******
Last login: Wed Feb 12 15:14:06 2003 from comedu127
Sun Microsystems Inc. SunOS 5.8 Generic February 2000
Sun Microsystems Inc. SunOS 5.8 Generic February 2000
You have new mail.

또는 sftp 로 접속하여 안전하게 파일을 암호화 하여 전송합니다.
[/] # sftp comedu100
Connecting to comedu129...
root@comedu129's password:
sftp>

10) test가 제대로 되었을 경우 부팅후에도 계속적으로
daemod을 사용할 수 있도록 startup script 를 생성합니다.


[/]# vi /etc/rc2.d/S88ssh
------------------- 여기부터 ----------------------
#!/bin/ksh
case "$1" in
start)
/usr/local/sbin/prngd -s /dev/urandom /var/run/egd-pool
/usr/local/sbin/sshd
;;
stop)
pkill -9 sshd
/usr/local/sbin/prngd --kill /var/run/egd-pool
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
------------------- 여기까지 ----------------------

[/]# chmod u+x /etc/rc2.d/S88ssh
 
Q&A게시판에 질문하신 분이 계셔서 글을 올립니다..
이작업을 수행하고 나면 라이브러리 에러가 발생할 수 있다는군요..
해결책으로는 gcc를 설치해 주시면 깔끔하게 해결이 된답니다..
 
출처
반응형

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

solaris 솔라리스 svcadm 설정 rsh  (0) 2007.08.21
솔라리스 10에서 nfs 설정하기  (0) 2007.08.17
Solaris Resource Manager (SRM)  (0) 2007.08.02
dumpadm  (0) 2007.08.02
Solaris 보안  (0) 2007.08.01
Posted by [PineTree]
OS/SOLARIS2007. 8. 2. 18:43
반응형
 
Resource Manager는 Solaris9 OS 이상부터 포함되어 있는 기술로
OS차원에서의 전반적인 자원 관리를 할 수 있는 기술입니다.
 
최근들어 시스템 통합작업(consolidation)을 많이 하게 됩니다.
여러대로 나누워져 있는 서버를 성능 좋은 하나의 서버에 통합 하게 되는데
이때 각 서버에서 사용하던 서비스를 하나의 시스템에 통합하게 되면
시스템 자원에 대한 고민이 생기게 됩니다. 예를 들어 oracle과 web서비스를
통합했을 때 web서비스가 시스템의 CPU와 Memory를 모두 사용하게 될 경우
Oracle서비스는 자원 부족으로 동작하지 못하거나 느려지는 문제가 발생하게 됩니다.
이런 문제점들을 해결하기 위해 Resource Manager를 이용하게 되면 별도의 비용없이
서비스들을 효율적으로 자원 관리 할 수 있습니다.
 
시스템 차원에서의 자원 관리는 다음과 같은 것들을 포함합니다.
 
1. CPU 자원 관리
  
   1) Fair Share
  
       - 서비스가 전체 CPU 사용량을  특정 비율로 정해 사용하는 기술입니다.
         예를 들어 Oracle 서비스와 WEB 서비스를 동시에 사용하는 서버에서
         Oracle 서비스는 전체 CPU의 50% 사용까지 , WEB서비스는 전체 CPU의
         30% 까지만 사용하도록 제한하여 사용하고자 할 경우에 사용되는 기술입니다.
 
       - 특정 Login 사용자에게 CPU 사용률을 부여 할 수 있습니다.
          예를 들어 Oracle 사용자에게는 전체 CPU 사용률 50%로 제한을 할 수 있습니다.
 
       - 사용자,서비스별 CPU사용량을 모니터링 할 수 있습니다.
 
   2) Resource Pool
 
       - 다중 CPU 환경에서 특정 서비스를 특정 CPU들에 연결하여 사용하는 기술입니다.
          예를 들어 10개의 CPU중에서 Oracle 사용자에게는 CPU 2,3,4,5번 을 사용하도록
          설정하고, WEB 사용자에게는 CPU 6,7,8,9,10번을 사용하도록 설정할 수 있습니다.
 
 2. Memory 자원 관리
   
       - 서비스별 Memory 사용량을 제한 할 수 있습니다.
         예를 들어 전체 메모리 10Gbyte중  Oracle 서비스는 6Gbyte만 사용하도록 하고
         WEB 서비스는 3Gbyte만 사용하도록 제한 할 수 있습니다.
 
       - 서비스별 Memory 사용량을 모니터링 할 수 있습니다. 예를 들어 oracle관련
          Process들의 메모리 사용량을 확인 할 수 있습니다.
 
3. Process 제한 관리
 
       - Process와 관련된 제한을 쉽게 설정한다.  Shell의 limit를 resource 로 변경됨.
 
    1) Address space 제한
        - Process의 가상 메모리 사이즈 제한 설정할 수 있다.
   
     2) Core File 제한
         - Process 문제로 인해 발생하는 Core 파일의 사이즈를 제한 한다.
 
     3) CPU 사용시간 제한
         - Process가 CPU를 특정 시간이상 사용하지 못하도록 제한 한다.
   
      4) Heap 사이즈 제한
         - Process가 사용하는 Heap 메모리 사용량을 제한한다.
   
      5) 파일 사이즈 제한
         - Process가 만들 수 있는 최대 파일 사이즈를 제한 할 수 있다.
 
      6) 최대 Open 파일  개수 제한
         - Process가 최대 동시에 OPEN할 수 있는 파일 사이즈를 제한 할 수 있다.
 
      7) 최대 Stack 사이즈 제한
         - Process가 사용할 수 있는 Stack 사이즈를 제한 할 수 있다.
 
4. Extended Accounting
     기존 Account와 별도로 확장된 Account 기능이 제공됩니다.
     시스템 관리자는 Account기능을 이용해 시스템 사용량을 일별, 월별로
      기록 하여 관리 할 수 있습니다.
 
     1) Process & task
        - Prcess별 시작, 종료, 사용된 시간이 기록됩니다.
        - Process별 Swap  , Disk , Network ,signal 사용량 등이 기록 됩니다.
        - Process뿐만 아니라 서비스 별로 기록된다.
          ( 예를 들어 Oracle서비스가 얼마정도 1시간30분20초 동안 사용했다.)
 
     2) Flow account
        - IPQOS를 이용한 Network 사용량이 기록 됩니다.
        - IP-address 별로 사용량이 기록 됩니다.
        - Network Port별로 사용량이 기록 됩니다.
        - 사용자별로 network 사용량이 기록 됩니다.
        - Class별로 Network 사용량이 기록 됩니다.
        - 서비스별로 Network 사용량이 기록됩니다.
         ( 예를 들어 Oracle 서비스는 10.10.10.1 서버와 통신시 1Gbyte를 통신했다.)
 
5. IPQOS 자원 관리
     Network의 사용량을 분석하고 제한할 수 있다.
   
     - Packet별로 사용자 우선 순위 설정이 가능하다.
     - Class별 사용량을 제한할 수 있다.
     - Class별 처리량에 따른 Packet 구분이 가능하다.
        예를 들어 1Mbps 속도 이내로 전송되는 packet과 1Mbps 이상으로 전송되는
        Packet을 구분하여 제한 할 수 있다.
     - Flow acount와 연동하여 Network 사용량을 기록 한다.
      
6. Solaris10 에서의 추가 자원관리
     솔라리스9 버젼보다 10에서는 보다 많은 자원 관리 기능을 수행합니다.
    
   - IPCS 관련 사용량 제한으로 더이상 Oracle설치후 /etc/system 파일에
      IPCS관련 설정 값을 기록할 필요가 없으며 Oracle설치후 시스템을 rebooting할 필요없다.
 
   - Zone이라는 가상 서버 기술과 Resource manager를 이용하여 CPU 자원관리를 한다.
  
   - 20개 이상의 Proces자원 관리가 추가됨
 
반응형

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

솔라리스 10에서 nfs 설정하기  (0) 2007.08.17
SSH  (0) 2007.08.02
dumpadm  (0) 2007.08.02
Solaris 보안  (0) 2007.08.01
Solaris 설치 후 기본적인 설정  (0) 2007.07.25
Posted by [PineTree]
OS/SOLARIS2007. 8. 2. 18:37
반응형
[1] 기능

이 명령어는 시스템의 크래쉬 덤프(Crash dump) 환경 설정을 위하여 사용한다.
시스템의 크래쉬는 예기치 않은 이벤트(event)로 인하여 시스템에서 발생하는 치명적인 장애라 할 수 있다.
이때 장애를 일으키는 원인을 찾기 위해서는 시스템의 장애 발생 시점에서의 각종 상황을 이해해야 한다.
CPU에서 실행이 되어지는 프로세스는 무엇이고, 메모리에 있던 프로세스는,
각종 캐시에 있던 내용등에 대해서 상세한 정보가 필요하다.
이러한 정보들은 항상 메모리에 흔적이 남아 있다.
크래쉬 덤프란 이 메모리의 내용을 파일로서 받기 위한 방법이라 할 수 있다.

[2] 형식
   /usr/sbin/dumpadm  [ -nuy ]  [ -c content-type ]  [ -d dump-device ]
                      [ -m min k | min m | min% ] [ -s savecore-dir]
                      [ -r root-dir ]


[3] 상세 설명

dumpadm 프로그램은 시스템에서 크래쉬 덤프 기능을 설정하기 위한 시스템 어드민 명령어이다.
크래쉬 덤프는 잘못된 시스템 에러가 발생 하였을 때, 시스템의 물리적인 메모리의 내용을 디스크로 복사한다.
OS의 치명적인 에러가 발생할 때, 콘솔 창에는 에러에 대하여 메시지가 상세히 출력된다.
OS는 물리적 메모리의 내용을 사전에 정의된 덤프 디바이스(dump device-일반적으로 로컬 디스크 파티션을 사용한다.)에
쓰기를 함으로써 크래쉬 덤프는 활성화 되어진다. 덤프 디바이스는 dumpadm에 의하여 설정되어 진다.
OS의 에러는 OS의 버그(bug)에 의할 수 있으며, 디바이스 드라이버나, 로드러블(loadable) 모듈, 하드웨어의 실패 등이 있을 수 잇다. 1
이러한 경우가 발생 하였을 때, 크래쉬 덤프는 지원하는 엔지니어가 문제를 분석을 할 수 있는 정보 등을 제공한다.
시스템 크래쉬는 savecore 라는 유틸리트를 부팅하는 동안에 자동으로 실행 하여, 덤프 디바이스로부터
크래쉬 덤프를 복구한다. 이때 복구는 사용자의 파일 시스템에 unix.X, vmcore.X
형식의 파일로 쓰기를 실행한다.
X는 10진 양의 정수로서, 처음 생성이 되면 0, 두 번째 생성이 되면 1 등의 번호를 순서적으로 갖게 된다.
저장되어지는 디렉토리는 dumpadm에 의하여 설정되어 진다.
기본적으로는 /var/crash/server_name이 된다.

기본적으로 덤프 디바이스는 스왑(swap) 파티션으로 설정되어 있다.
스왑 파티션은 OS에서 가상 메모리을 내용을 백업 저장하기 위하여 예약된 디스크의 파티션이다.
그러나, 덤프 하기 위하여 있는 데이터는 덮어쓰기가 되어버릴 수 있으므로 영구적이지 못하다.

다음은 아무런 옵션 없이 dumpadm 을 실행한 결과이다.
# dumpadm
         Dump content: kernel pages
         Dump device: /dev/dsk/c0t0d0s1 (swap)
  Savecore directory: /var/crash/cyber
    Savecore enabled: 예

옵션 없이 실행을 하게 되면, dumpadm은 크래쉬 덤프를 위하여 현재 시스템에 설정 되어 있는 내용을 출력한다.
위 결과의 내용은 다음과 같다.
덤프를 할 내용은 “kernel”이고, 현재 덤프 디바이스는 /dev/dsk/c0t0d0s1(swap)이고,
나중에 파일로서 저장되어지는 디렉토리의 경로는 /var/crash/cyber이며,
savecore는 시스템 부팅 시 자동으로 하게끔 enable 상태로 되어 있다.

[4] 옵션

  
[표1] dumpadm 명령어의 옵션
-c content-type- 덤프 되어지는 덤프 내용
     -content-type
     kernel     커널 메모리 페이지만 덤프
     all     모든 메모리 페이지를 덤프
-d dump-device- 덤프 디바이스는 절대 경로
- /dev/dsk/cNtNdNsN 형식으로 기술처음에 시스템이 구성될 때 dumpadm은      swap을 기본 디바이스로 사용하고 있으며, 그대로 사용하는 것이 일반적이다.
-m min k | min m | min%- 현재의 savecore를 할 디렉토리를 가지는 파일 시스템의 공간이 부족할 경우 프리 공간(free space) 범위 내에서만 생성이 되도록 설정

min 은 다음의 인수를 가진다.
     k     Kbyte 단위로 파일 저장
     m     Mbyte 단위로 파일 저장

           - %은 minfree 값이 savecore 디렉토리를 포함하는 파일 시스템이 현재 전체크기의 주어진 퍼센트(%)로서 계산되어진다.
-n시스템 리부팅 시에 자동으로 savecore를 실행하지 않는다.(거의 사용하지 않음)
-r root-dirdumpadm이 생성하는 상대적인 경로는 /(root)에서 찾는다. 기본적으로 /로 설정 되어 있으므로, 변경을 하지 않는다.
-s  savecore-dirsavecore 유틸리트에 의하여 저장되어지는 디렉토리의 절대적인 경로를 표시한다. 기본 경로는 /var/crash/server_name이며, 시스템 관리자는 이를 여가 많은 다른 파일시스템의 디렉토리로 변경 할 수 있다.
-u/etc/dumpadm.conf 파일을 강제적으로 업데이트하기 위한 옵션이며, 시스템이 리부팅(rebooting) 되어 질 때, veore 시작 스크립트에 의해서만 사용되어진다.
-y시스템 리부팅 시에 자동으로 savecore를 실행한다. 기본적으로 설정되어 있는 옵션




[5] 예제

예제1] 덤프 디바이스의 변경
# dumpadm -d /dev/dsk/c0t1d0s7
         Dump content: kernel pages
         Dump device: /dev/dsk/c0t1d0s7 (dedicated)
         Savecore directory: /var/crash/cyber
         Savecore enabled: 예


이때 /dev/dsk/c0t1d0s7 파티션은 마운트되어 사용하는 파일 시스템이 아니어야 한다.

예제2] savecore 디렉토리 변경
# dumpadm -s /home88/lsi
        Dump content: kernel pages
        Dump device: /dev/dsk/c0t0d0s1 (swap)
        Savecore directory: /home88/lsi
        Savecore enabled: 예

savecore할 디렉토리가 /var/adm/cyber에서 /home88/lsi로 변경되었다.
이후 save 유틸리트는 크래쉬 덤프 파일들을 /home88/lsi 디렉토리로 저장할 것이다.

[6] /etc/dumpadm.conf 파일
이 파일은 dumpadm 명령어에 의해서 크래쉬 덤프에 대한 내용이 변경이 될 경우 자동으로 업데이트 되어진다.
예를 들어, 다음과 같이 savecore 디렉토리를 변경하면, 이 파일의 내용도 다음과 같이 바뀌게 된다.

# dumpadm -s /home88/lsi
        Dump content: kernel pages
        Dump device: /dev/dsk/c0t0d0s1 (swap)
        Savecore directory: /home88/lsi
        Savecore enabled: 예

# more /etc/dumpadm.conf
#
# dumpadm.conf
#
# Configuration parameters for system crash dump.
# Do NOT edit this file by hand -- use dumpadm(1m) instead.
#
DUMPADM_DEVICE=/dev/dsk/c0t0d0s1
DUMPADM_SAVDIR=/home88/lsi
DUMPADM_CONTENT=kernel
DUMPADM_ENABLE=yes

그리고, 크래쉬 덤프를 위하여 사용하는 디바이스는 /dev/dump 라는 디바이스 파일을 이용한다.
이 어드민 명령어는 Soalris 7이상에서만 지원이 됩니다.
반응형

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

SSH  (0) 2007.08.02
Solaris Resource Manager (SRM)  (0) 2007.08.02
Solaris 보안  (0) 2007.08.01
Solaris 설치 후 기본적인 설정  (0) 2007.07.25
Solaris,HP-UX 에서 패치  (0) 2007.07.20
Posted by [PineTree]
OS/SOLARIS2007. 8. 1. 22:16
반응형

Solaris  보안

 

1. o/s 설치

1-1 초기 install의 중요성

- 보안과 app의 호환성을 위해 최신의 o/s patch설치를 권장합니다.

- o/s update를 하는 것 보다는 새로 install하는 것이 낫다.

- 설치시에는 항상 정품 o/s를 사용한다.

- o/s 파티션은 분할 하여 설치하는 것을 권장합니다.

 

2.  openboot PROM 보안

Command security – PROM 레벨에서 eeprom변경이나 명령어를 실행할 수 없습니다.

Full security – command security와 같은 기능을 하며 추가적으로 password없이는 booting이 되지 않습니다.

2-1 설정방법

# eeprom security-mode=full

Changing PROM password:

New password:

Retype new password:

è     설정 해제시 ‘security-mode=none’ 값으로 변경

 2-2 passwd 변경 방법

# eeprom security-password=

Changing PROM password:

New password:

Retype new password:

è     반드시 “=” 를 하셔야 합니다.

 

- 주의 -

만약 PROM password를 분실 하면 EEPROM을 교체해야 합니다. 신중히 사용하기를 권장합니다.

만약 시스템을 리부팅 했을 때 부팅이 안된다면 openboot PROM의 보안 파라미터값을 확인하십시요. root권한을 취득한 해커에 의해 이 값은 언제든지 변경될 수 있습니다.

 

3. 파일시스템 보안

3-1 setUID setGID

- 실행 권한을 가진 파일이나 프로그램들은 일반적으로 해당 퍼미션을 가진 user에 의해서만 실행됩니다.

그러나 setUID로 설정된 프로그램은 해당 프로그램의 퍼미션으로 실행되기 때문에 해킹에 자주 이용되는 부분입니다. 만약 어떤 해커에 의해 format이라는 root권한의 실행 파일이 setUID가 설정된다면 해커는 해당 시스템의 disk의 정보를 삭제 할 수 있게 됩니다. 또한 setUID를 이용해 보이지 않는 path backdoor를 숨겨 언제든 시스템으로 침입을 시도할 수 있습니다.

따라서 해킹이 의심되는 시스템은 반드시 setUID설정 파일들을 먼저 확인해야 합니다.

# find / -type f \( -perm -u+s -o -perm -g+s \) -ls

시스템의 모든 setUID setGID를 검색하여 보여줍니다.

 

3-2 마운트 옵션

- 앞에서 언급한 되로 setUID는 해커들이 가장 즐겨 사용하는 해킹방법중 하나입니다.

이러한 해킹파일(프로그램)들은 파일시스템의 어딘가에 존재하여 언제든 시스템을 손상 시킬 수 있습니다. 따라서 이러한 상황을 미연해 방지 할 필요가 있습니다.

파일시스템 마운트 옵션중에 nosuid라는 옵션으로 이러한 문제를 해결 할 수 있습니다.

파일시스템에 nosuid옵션이 설정되면 그 해당 파일시스템에는 suid가 설정되어도 무시됩니다.

 

/dev/dsk/c0t3d0s0 /dev/rdsk/c0t3d0s0  /     ufs 1 no -

/dev/dsk/c0t3d0s4 /dev/rdsk/c0t3d0s4  /usr  ufs 1 no ro

/dev/dsk/c0t3d0s5 /dev/rdsk/c0t3d0s5  /var  ufs 1 no nosuid

/dev/dsk/c0t3d0s6 /dev/rdsk/c0t3d0s6  /opt  ufs 2 yes nosuid

è     /, /usr‘nosuid’ 옵션이 적용되지 않습니다.

4. vold(volume management) 보안

- cdrom, floppy vold데몬에 의해 자동으로 마운트됩니다. 또한, 어떤 user에 의해서도 실행권한이 주워집니다. vold데몬에 의해 관리되는 파일시스템에 대한 nosuid옵션 설정을 권장합니다.

# /etc/rmmount.conf

mount hsfs -o nosuid

mount ufs -o nosuid

è     Solaris7 이상의 버전에서는 default로 옵션이 정의 되어있습니다.

cdrom마운트 후 mount명령어로 확인하십시요.

 

5. user계정 보안

- o/s가 설치 되면 기본적으로 시스템은 특정 user(uucp,smmp)를 생성합니다.

보안을 위해 불필요한 user들은 삭제하기를 권장합니다.

5-1 계정에 대한 보안설정

# passmgmt -d smmsp

è     /etc/passwd, /etc/shadow에서 smmp에 대한 entry를 삭제합니다.

# passwd -l uucp

è     uucp계정에 lock을 설정합니다.

 

6. cron,at 보안

- 미래의 어떤 시점에 jobs을 실행 시킬 수 있는 명령어가 cron,at 입니다.

이러한 명령어의 접근 권한은 /usr/lib/cron 디렉토리에서 관리가 됩니다.

어떤 user가 위 명령어를 실행하려 할 때 시스템은 cron.allow파일을 가장먼저 확인하여 등록되어 있으면 실행권한이 주어지고 없으면, cron.deny파일을 확인하여 등록되어 있으면 권한이 거부되고 없으면 허용됩니다.

모든 user cron사용을 방지하기 위해서는 cron.allow파일을 생성합니다.

따라서 cron,at이 해킹에 이용되는 것을 최소화 하기위해 cron.allow를 생성하여 필요한 user만 등록하기를 권장합니다.

# touch /usr/lib/cron/cron.allow

è     기본적으로 생성되지 않음

 

7. rc.d(init스크립트)의 서비스 관리

디렉토리

관련 서비스

/etc/rcS.d

/etc/rc0.d

/etc/rc1.d

/etc/rc2.d  

/etc/rc3.d

/etc/rc4.d

/etc/rc5.d  

/etc/rc6.d  

single user

shutdown

start

multi-user

multi-user (default)

multi-user (unused)

shutdown and power off

shutdown and reboot

 

7-1

보안상 취약한 서비스 목록

서비스

내용

포트/protocol

RPC           

rpc/rwalld/sun/format_string

111/tcp

RPC           

rpc/cmsd/running

111/tcp

RPC           

rpc/tooltalk/running

111/tcp

RPC            

rpc/sadmind/running

111/tcp

SMTP          

smtp/sendmail/dns_map_txt_record/bof                           

25/tcp

SMTP          

smtp/sendmail/addr_fields/bof

25/tcp

SMTP          

smtp/sendmail/prescan/typeconv_bof                              

25/tcp

SMTP          

smtp/sendmail/prescan/ruleset_bof                              

25/tcp             

RPC           

rpc/solaris_sadmind/remote_exec                                

32772/udp          

RPC           

rpc/solaris_snmpXdmid/running                                  

32779/tcp          

SNMP          

snmp/solaris_mibiisa/running                                   

32790/udp          

RPC    

rexec/anycommands                                              

512/tcp             

RPC

rexec/anycommands                                              

512/tcp            

RPC

rlogin/loginto

513/tcp            

RPC

rsh/anycommands                                                

514/tcp            

LPD           

lpd/solaris/bof                                                

515/tcp            

RPC           

rpc/rwalld/sun/format_string                                   

111/tcp            

RPC           

rpc/cmsd/running                                                

111/tcp            

RPC           

rpc/tooltalk/running                                           

111/tcp            

RPC           

rpc/sadmind/running                                            

111/tcp            

SMTP           

smtp/sendmail/dns_map_txt_record/bof                           

25/tcp             

SMTP          

smtp/sendmail/addr_fields/bof                                  

25/tcp             

SMTP          

smtp/sendmail/prescan/typeconv_bof                              

25/tcp             

SMTP          

smtp/sendmail/prescan/ruleset_bof                              

25/tcp             

RPC           

rpc/solaris_sadmind/remote_exec                                

32773/udp          

RPC            

rpc/solaris_snmpXdmid/running                                  

32779/tcp          

SNMP          

snmp/solaris_mibiisa/running

32780/udp          

RPC

rexec/anycommands

512/tcp            

RPC

rlogin/loginto

513/tcp            

LPD            

lpd/solaris/bof

515/tcp            

X11           

X11/CDE/dtspcd_running

6112/tcp           

X11           

xfsd/solaris/running

7100/tcp           

 

7-2 일반적인 서비스 보안 설정

- 위의 표에서와 같이 RPC, SMTP, X11, SNMP, LP등의 서비스는 보안상 취약점을 가지고 있어 해당 포트를 disable 해 놓는 것이 바람직 합니다.

 

- 해결 방법( 사용자 환경에 따라 달라 질 수 있습니다.)

1. # cp /etc/inet/inetd.conf{,.old}

2. # vi /etc/inet/inetd.cnof

telnet, ftp제외한 모든 네트웍 서비스를 주석처리 or 삭제

3. # /etc/rc2.d , /etc/rc3.d의 해당 서비스 스크립트 move

()- # mv S71rpc{,.old}

 

8. log 파일

8-1 시스템 log파일

/var/adm/message – 중요한 시스템 log 기록합니다.

/var/log/syslog - mail관련 log 기록합니다.

/var/log/authlog – 인증과 관련된 log를 기록합니다. Default /etc/syslog.conf파일에 주석처리 되어 있습니다.

 

8-2 application log 파일

/var/adm/sulog

/var/adm/vold.log

/var/adm/wtmpx

/var/cron/log

 

/usr/bin/su 에 의한 log파일

/usr/sbin/vold 에 의한 log파일

/usr/bin/login 에 의한 log파일 (last에 의해 보여집니다.)

/usr/sbin/cron 에 의한 log파일

 

 

 

8-3 기타

- /etc/issue

로그인시 터미널에 보여지는 메시지 보통 경고 메시지 입력할 때 사용합니다.

- /etc/motd

/etc/issue파일과 비슷한 용도의 파일입니다. 보통 두 파일중 어떤 것을 사용해도 무관 합니다만, 이 파일은 default로 생성되지 않습니다.

- /etc/default/login

 

9. 네트워크 서비스

9-1 Telnet

아시는 바와같이 telnet은 네트웍을 통해 원격지 시스템으로 접속을 하기 위한 protocol입니다.

그러나 telnet id password가 네트웍을 통할 때 어떠한 암호화 인증을 거치지 않기 때문에 해킹이나 네트웍 스니핑에 이용될 수 있습니다. 따라서 부득이 하게 telnet을 사용하셔야 한다면, tcpwrapper나 암호화 인증 알고리즘을 사용하는 ssh를 사용할 것을 적극 권장합니다.

 

9-1 Remote Access Services(rsh, rlogin, rcp)

이러한 서비스는 시스템보안에 가장 취약한 약점을 가지고 있습니다. 대부분의 critical한 사이트는 상기 서비스를 사용하지 않고 있습니다.

 

9-2 Remote Execution Service(rexec)

네트웍을 통해 인증 과정없이 명령어를 실행할 수 있습니다.

Telnet과 마찬가지로 암호하 되지 않아서 해킹이나 스니핑에 이용될 수있습니다.

보통 /etc/inetd.conf 파일에서 삭제 됩니다.

 

9-3 inetd 서비스

- /etc/inet/inetd.conf파일의 network 서비스 목록

In.tnamed

DARAP 네임서버 protocol을 지원합니다.

In.uucpd

네트웍상의 Uucp connections을 지원합니다.

In.fingerd

로컬시스템의 계정정보를 제공합니다.

Systat

Ps –ef의 출력과 함께 시스템에 연결되어 있는 계정정보 제공

Netstat

현재 network에 연결되어 있는 서비스 목록을 제공합니다.

Time

현재의 날짜와 시간을 동기화 시켜주는 서비스 입니다. xntp를 사용할 것을 권장합니다.

Echo

input되는 데이터 스트림을 추적해주는 서비스

Discard

input되는 데이터 스트림을 처리하는 서비스

Chargen

연속적인 문자 스트림을 발생시키는 서비스

è     상기 서비스는 /etc/inet/inetd.conf파일에서 제거 시키기를 권장합니다.

 

10. rpc 서비스

10-1. /etc/inet/inetd.conf파일의 rpc 서비스 목록

 testsvc

 sadmind

 rquotad

 rpc.rusersd

 rpc.sprayd

 rpc.rwalld

 rpc.rstatd

rpc.rexd

ufsd

 kcms.server

 fs

 cachefsd

 kerbd

 in.lpd

 dtspcd

xaudio

 rpc.cmsd

rpc.ttdbserver

 

10-2. /etc/rc2.d/S71rpc 스크립트의 rpc서비스

 rpcbind : CDE를 사용한다면 enable 되어 있어야 한다.

 keyserv

 rpc.nisd

 nis_cachemgr

 rpc.nispasswdd

 

10-3. /etc/rc3.d/S15nfs.server 스크립트의 rpc서비스

 rpc.bootparamd

 

10-4 서비스 제거

- 상기 rpc서비스들은 보안상 대부분 제거하는 것을 권장합니다.

- /etc/inet/ient.conf : 해당 서비스 목록을 찾어 주석처리 후 inetd데몬을 다시 시작한다.

- /etc/rc2.d/S71rpc, /etc/rc3.d/S15nfs.server : 파일 이름을 remove시킨다. Nfs server를 사용한다면 S15nfs.server 스크립트는 remove시켜서는 안된다.

 

10-5 네트웍 서비스 banner

- telnet,ftp접속시 시스템의 기본 정보를 출력하지 않게 하기 위한 방법

/etc/default/telnetd, /etc/default/ftpd 파일 편집

BANNER= ”Unlistend OS”

 

- sendmail 기본 정보 변경

/etc/mail/sendmail.cf

SmtpGreetingMessage=$j Sendmail $v/$Z; $b

변경 -> SmtpGreetingMessage=Mail Server Ready

반응형

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

Solaris Resource Manager (SRM)  (0) 2007.08.02
dumpadm  (0) 2007.08.02
Solaris 설치 후 기본적인 설정  (0) 2007.07.25
Solaris,HP-UX 에서 패치  (0) 2007.07.20
SOLARIS PATCH ERROR CODE  (0) 2007.07.20
Posted by [PineTree]
OS/SOLARIS2007. 7. 25. 02:22
반응형


   Solaris Basic Set

 

 ** 네트워크 설정 **

 

/etc/hosts

 127.0.0.1       localhost

 192.168.211.20   solaris10 loghost

 

/etc/hostname.pcn0

 solaris10

 

/etc/netmasks

 192.168.211.0     255.255.255.0

 

/etc/defaultrouter

 192.168.211.2

 

    - 부팅시 GW자동인식이 안돼면
      /etc/init.d/inetsvc

      route add default route_IP 1  
  

/etc/resolv.conf
nameserver 219.250.36.130

 

/etc/nsswitch.conf
hosts:    files dns

 

** shell 바꾸기**         

작업의 편의를 위해 root 의 쉘과 홈디렉토리부터 변경해준다.
솔라리스에서는 기본적으로 root 의 홈디렉토리를 / 로 사용하지만 관리의 편의를 위해 /root 라는 디렉토리를 만들어서 root 의 홈디렉토리로 사용한다.

 # mkdir /root
 
root의 기본 쉘을 bash로 변경해주고, 홈디렉토리를 /root 로 변경해준다.

 기본 : root:x:0:1:Super-User:/:/sbin/sh

 변경 : root:x:0:1:Super-User:/root:/bin/bash

/etc/bashrc와 root의 홈디렉토리에 .bash_profile 을 만들어준다.
 리눅스의 파일을 참조하여 사용한다.

 +++ /etc/bashrc ++++++++++++++++++++++++++++++++++++++++

# /etc/bashrc

# System wide functions and aliases
# Environment stuff goes in /etc/profile

# by default, we want this to get set.
# Even for non-interactive, non-login shells.
if [ $UID -gt 99 ] && [ "`id -gn`" = "`id -un`" ]; then
    umask 002
else
    umask 022
fi

# are we an interactive shell?
if [ "$PS1" ]; then
    case $TERM in
    xterm*)
        if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
            PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
        else
            PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\007"'
        fi
        ;;
    screen)
        if [ -e /etc/sysconfig/bash-prompt-screen ]; then
            PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
        else
        PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\033\\"'
        fi
        ;;
    *)
        [ -e /etc/sysconfig/bash-prompt-default ] && PROMPT_COMMAND=/etc/sysconfig/bash-prompt-default
        ;;
    esac
    # Turn on checkwinsize
    shopt -s checkwinsize
    [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
fi

if ! shopt -q login_shell ; then # We're not a login shell
        for i in /etc/profile.d/*.sh; do
        if [ -r "$i" ]; then
            . $i
        fi
    done
    unset i
fi
# vim:ts=4:sw=4

 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 +++ /etc/bashrc ++++++++++++++++++++++++++++++++++++++++

# .bash_profile

# Get the aliases and functions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
unset USERNAME

 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++

- 다른 사용자의 shell 을 변경하고자 할때도 위와 같은 방법을 참고하여 변경해 준다.


** 솔라리스에서 한글 사용하기**

set | grep LANG 으로 설정 확인
LANG=ko

변경은  /etc/profile 에


LANG=ko
export LANG

 를 추가해 준다.


** 솔라리스에서 /home 사용하기**

 솔라리스에서는 /home을 automounter가 mount해서 사용하기 때문에 root라 할지라도 디렉토리나 파일을 만들 수 없다. 하지만 리눅스에 익숙한 관리자라면 /home 에서 모든 사용자 홈디렉토리를 관리하기를 원할 것이다. /home 을 automount 하지 않으려면 /etc/auto_master파일에서 /home부분을 주석처리 하고 시스템을 재부팅하면 된다.

/etc/auto_master

......
+auto_master
/net            -hosts          -nosuid,nobrowse
#/home           auto_home       -nobrowse
/xfn            -xfn

reboot


** 시스템 시간 맞추기**

직접 맞추기
 
 rdate 명령어를 사용하여 필요할때마다 수정해도 좋지만, 이보다는 시스템 재부팅시에 자동으로 세팅되도록 부팅 스크립트에 포함시켜 준다. time 서버로는 time.bora.net 또는 time.kriss.re.kr 를 사용한다.
 일단 현재 시간을 맞추기 위하여 프롬프트 상에서 한번 실행해 준다. 이때 리눅스에서는 -s 옵션을 주어 시스템 시간을 동기화 시키지만 솔라리스에서는 -s 옵션을 주지 않는 것을 주의한다.

rdate time.bora.net

 다음 시스템 부팅시마다 자동으로 맞추기 위하여 부팅 스크립트에 포함시켜 준다.

 /etc/rc3
 …
rdate time.bora.net

자동으로 맞추기

XNTP 라는 프로그램을 사용하면 시스템에 항상 XNTP 프로그램이 데몬으로 상주하며 자동으로 시스템 시간을 정확히 맞혀 준다 설정방법은

pkginfo | grep ntp

NTP 패키지가 설치되어 있는지 확인하고, 설치되어 있으면

/etc/inet             / 디렉토리로 이동하여, ntp.client 파일을 ntp.conf라는 이름으로 복사한다.

ntp.conf 를 열어 맨 밑에

server time.bora.net
server time.nuri.net
server gps.bora.net
server ntp1.cs.pusan.ac.kr
server ntp.ewha.net
server ntp1.gngidc.net
server ntp2.gngidc.net
server time.kriss.re.kr

를 추가해 준다.

/etc/init.d/xntpd start

다음 시스템 재부팅부터는 자동 실행된다

ntpq -p

로 ntp 서버에 정상 접속하는지 확인한다.


** DNS 설정 **

솔라리스에서 DNS 설정법은 리눅스와 약간의 차이가 있다. 먼저 리눅스처럼 resolv.conf 파일에 사용할 DNS 를 추가한다. 추가 방법은 동일하지만, 리눅스처럼 resolv.conf 파일이 생성되어 있는 것이 아니고, 시스템 관리자가 직접 생성해 줘야 한다. 위치는 리눅스와 같은 /etc/resolv.conf 가 된다.

resolv.conf

nameserver 211.115.194.2
nameserver 211.115.194.3
nameserver 203.255.112.34
search localdomain

다음으로 nsswitch.conf 라는 파일을 열어서 hosts: …. 줄의 맨 끝에 DNS를 추가해 준다.

nsswitch.conf

 …
hosts:      files dns


** 패키지 다운로드 **

http://www.sunfreeware.com

 패키지 설치 확인은 아래의 명령어를 사용하여 확인한다.

pkginfo | grep {Package Name}

 패키지 설치법

 보통 솔라리스 패키지는 패키지명-패키지버전-OS버젼-cpu타입-local.gz 으로 제공된다.
 우선 gzip 을 사용하여 gz 압축을 해제후에 pkgadd 를 사용하여 설치한다.

ex) gzip -d autoconf-2.59-sol9-intel-local.gz
  pkgadd -d autoconf-2.59-sol9-intel-local


** 컴파일 환경 만들기 **

wget 패키지를 미리 설치하여 다운로드에 사용한다
 
  ftp://ftp.sunfreeware.com/pub/freeware/intel/10/wget-1.10.2-sol10-x86-local.gz 
 
autoconf 패키지 설치

 wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/autoconf-2.59-sol10-intel-local.gz

make 패키지 설치

 wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/make-3.80-sol10-intel-local.gz


automake 패키지 설치

 wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/automake-1.9-sol10-intel-local.gz

gcc 패키지 설치

 wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/gcc-3.3.2-sol10-intel-local.gz

 

패키지는 일반적으로 /usr/local ~ 에 설치 되므로 /etc/profile 에 PATH와 LD_LIBRARY_PATH를 수정 또는 추가해 준다.

 /etc/profile

...

PATH=/usr/local/bin:$PATH
LD_LIBRARY_PATH=/usr/lib:/usr/local/lib:/usr/openwin/lib:/usr/openwin/bin:/usr/dt/lib:/usr/ucblib:/opt/lib:/usr/sfw/lib/:.
export PATH LD_LIBRARY_PATH

주의사항:
LD_LIBRARY_PATH에서 디렉토리 경로의 순서를 바꾸시면 안됩니다! 역시 PATH에서 /usr/local/bin이 앞에 나와야 합니다.


libgcc 패키지 설치

 wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/libgcc-3.3-sol10-intel-local.gz

libiconv 패키지 설치

 wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/libiconv-1.9.2-sol10-x86-local.gz


** 개발 환경 만들기**

 -- ls 하이라이팅 세팅

 솔라리스에 기본적으로 제공되는 ls 는 하이라이팅 기능을 지원하지 않으므로 fileutils에 포함되어 있는 ls를 사용하기 위하여 fileutils를 설치한다.
 현재 intel 기반 솔라리스용 fileutils 패키지를 제공하지 않으므로 앞서 세팅한 컴파일 환경을 사용하여 설치한다.

wget http://ftp.gnu.org/pub/gnu/fileutils/fileutils-4.1.tar.gz
 
gzip -d fileutils-4.1.tar.gz
tar xvf fileutils-4.1.tar.gz

cd ./fileutils-4.1

./configure

make
 make 시에 컴파일 에러가 난다면
 ........
 error: parse error before "ctid_t" 
 ........
 
 - PATH 에 /usr/ccs/bin 가 추가되어 있는지 확인
 - cd /usr/local/lib/gcc-lib/sparc-sun-solaris2.10/3.3.2/install-tools
   ./mkheaders

 

make install

 

설치가 완료되었다면, /usr/local/bin 에 ls 가 설치되었는지 확인한다.

/usr/local/bin/ls --color=auto

하이라이팅이 정상적으로 나타난다면, 쉘 스크립트에 alias 를 주어 사용한다.

/etc/profile
...
alias ls = ‘/usr/local/bin/ls --color=auto’


 -- vi 환경 설정

솔라리스에 기본적으로 제공되는 vi 는 하이라이팅 기능을 지원하지 않으므로 vim 을 설치하여 하이라이팅과 탐색 옵션 기능, 탭 설정 기능 등을 사용한다.

vim 패키지를 다운로드하여 설치한다.
wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/vim-6.3-sol10-intel-local.gz

vim 패키지를 사용하기 위해 ncurses 패키지를 다운로드하여 설치한다.
wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/ncurses-5.4-sol10-intel-local.gz
 
정상적으로 설치되었는지 확인하여 본다.
vim

이때 라이브러리 에러가 난다면 /etc/profile의 LD_LIBRARY_PATH 에 /usr/sfw/lib/ 가 포함되어 있는지 확인하여 본다.

정상적으로 실행되지만 vim 역시 하이라이팅 기능이 기본 설정이 아니다. 터미널을 ansi 표준으로 세팅하고, vi 를 vim 으로 aliasing 하고, vim 설정 파일을 각자의 홈 디렉토리에 생성하여 하이라이팅 on 한다.

/etc/profile
...
alias vi='vim'
TERM=ansi
export TERM

을 포함하여 준다.

 

기타 추가 aliasing

/etc/profile

....

alias cp='cp -i'
alias l.='ls -d .[a-zA-Z]* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

 

그리고 각자의 홈 디렉토리에 .

/root/.vimrc

set incsearch
set hlsearch
set laststatus=2
set ts=4
set sw=4
syn on

반응형

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

dumpadm  (0) 2007.08.02
Solaris 보안  (0) 2007.08.01
Solaris,HP-UX 에서 패치  (0) 2007.07.20
SOLARIS PATCH ERROR CODE  (0) 2007.07.20
Trunking  (0) 2007.07.20
Posted by [PineTree]
OS/SOLARIS2007. 7. 20. 20:01
반응형

Content

  • Solaris 에서의 Patch
  • HP-UX 에서의 Patch
  • ACDC98 소개
  • References

 

0. General Information

이 문서는 김휘강(sakai@major.kaist.ac.kr) 에 의해 만들어 졌습니다. 저자의 허가없이 무단으로 도용, 게제할 수 없습니다.

1. Solaris 에서의 Patch

1.0. What is the patch?

    ** patch :  헝겊조각 (깁는데 쓰는), 천조각, 판자조각, 덧대는 쇳조각 (수리용)

    사전적 의미에서도 바로 짐작할 수 있듯이 , OS 가 출시된뒤 OS 내부의 package 나 application program 또는 kernel 모듈에 버그가 발견된 경우 이를 바로잡기 위해 vendor 측에서 update 모듈을 내놓는데 이것이 바로 patch 이다.

    각각의 패치에는 고유한 Patch ID 가 부여되는데 xxxxxx-xx 와 같은 형태로 부여된다.

    앞의 6 자리는 ID serial number 이고 뒤의 두자리는 revision number 이다. 그러므로 같은 ID serial number를 가지고 있다하더라도, revision number 가 높을수록 최근에 나온 patch 임을 알 수 있다.

1.1. How to apply whole Patches?

  • http://sunsolve1.sun.com/pub-cgi/us/pubpatchpage.pl 에서 공식적인 recommended patch 를 구할 수 있고, OS 별 PATCH Report 를 구할 수 있다.
    Recommended Patch 와 Security Patch 의 Patch Cluster 를 다운로드 받아서 한꺼번에 설치를 하고 난 후에는 security mailing list 에 가입하여 지속적으로 추가되는 패치사항에 대해서만 patch 를 적용하면 된다.

    Recommended Patch 를 설치하는 경우에는 OS_VERSION_Recommended.tar.Z 파일을 다운로드 한 후 다음과 같이 설치하면 된다.

    # zcat OS_VERSION_Recommended.tar.Z | tar xvf -
    # cd OS_VERSION_Recommended
    # installcluster .
    ......

    security patch 에 대해서만 patch 를 apply 하고 싶다면, "http://sunsolve1.sun.com/pub-cgi/secbul.pl 에서 security bulletin 을 읽고 자신의 OS 버전에 해당된 버그를 찾아 대응되는 패치를 적용하면 된다. 이 경우에는 install_patch 라는 스크립트를 쓰는데, 자신이 패치하려고 하는 패치의 Patch ID 가 무엇인지를 반드시 확인하도록 한다.

    예:

    다음과 같이 실행하여, 솔라리스 패치를 적용시킨다.

    예를 들어 major 란 호스트에서 Patch ID 가 103817-03 인 패치를 설치해야 하는 경우라고 하면,

    우선 자신의 호스트에 103817-03 패치가 기존에 설치되어 있는지를 확인하도록 한다. 이는 /usr/bin/showrev 커맨드를 사용하여 손쉽게 확인할 수 있다.

    # showrev -p | grep 103817-03
    Patch: 103817-03  Obsoletes:   Packages: SUNWcsu
    #

    위와같은 출력결과가 나왔다면 이미 설치가 된 경우이고 아무것도 출력결과가 없다면 설치가 되지 않은 경우이다.

    설치가 되지 않았다면 ftp://sunsolve1.sun.com/pub/patches/103817-03.tar.Z 에서 파일을 받아온 후, 다음과 같이 설치하도록 한다.

    major# ./installpatch .
    Checking installed packages and patches...
    Generating list of files to be patched...
    Verifying sufficient filesystem capacity (exhaustive method)...
    Installing patch packages...
    Patch number 103817-03 has been successfully installed.
    See /var/sadm/patch/103817-03/log for details
    Patch packages installed:
      SUNWcsu
    major#

    패치가 설치된 후에 에러메시지나 결과 log 는 /var/sadm/patch/ 디렉토리 밑에 PATCH_ID 의 디렉토리 아래에 log 파일로 저장이 되게 된다. 다음에 다루겠지만, 패치를 uninstall 하고 싶은 경우에는 /var/sadm/patch/PATCH_ID/ 디렉토리에 있는 backoutpatch 스크립트를 사용하면 된다.

    시스템에 여유공간이 별로 없는 경우라면 /var/sadm/patch 디렉토리를 삭제해도 무방하다. showrev -p 에서 읽어들이는 정보는 /var/sadm/pkg/ 디렉토리에 기록되어 있는 package information 이므로 현재 시스템에 설치되어 있는 patch 정보를 알아내는 데에는 영향을 주지 않으므로 /var/sadm/patch를 삭제해도 문제없다.

1.2. How to back out patches?

    backout을 하는 경우는 패치를 설치한 후 시스템이 비정상적으로 작동하는 경우나, OS 버전에 맞지 않는 잘못된 패치를 설치한 경우 (이런 경우는 거의 드물다. 대개 설치시 installpatch script에서 error handling을 해준다.), 또는 패치를 설치할 때 에러가 발생한 경우, 설치한 패치를 제거하고 싶을 때이다.

    이때에는 /var/sadm/patch/PATCH_ID/backoutpatch 스크립트를 실행시키면 된다.

    # backoutpatch PATCH_ID

    와 같은 형태로 명령을 수행해 주면 안전하게 패치가 uninstall 된다.

    아래의 Exit Code 는 backoutpatch를 수행할 때 발생할 수 있는 Exit Code 를 나열한 것이다.

    # Exit Codes:
    #       0   No error
    #       1   Usage error
    #       2   Attempt to backout a patch that hasn't been applied
    #       3   Effective UID is not root
    #       4   No saved files to restore
    #       5   pkgrm failed
    #       6   Attempt to back out an obsoleted patch
    #       7   Attempt to restore CPIO archived files failed
    #       8   Invalid patch id format
    #       9   Prebackout script failed
    #       10  Postbackout script failed
    #       11  Suspended due to administrative defaults
    #       12  Backoutpatch could not locate the backout data
    #       13  The relative directory supplied can't be found
    #       14  Installpatch has been interrupted, re-invoke installpatch
    #       15  This patch is required by a patch already installed, can't back it out

    아래는 major 란 호스트에서 Patch ID 가 103817-03 인 패치를 제거(back out) 하는 예이다.

    major# ./backoutpatch 103817-03
    Checking installed packages and patches...
    Patch 103817-03 has been backed out.
    major# showrev -p | grep 103817
    Patch: 103817-01  Obsoletes:   Packages: SUNWcsu
    Patch: 103817-02  Obsoletes:   Packages: SUNWcsu

     

1.3 참고사항 (중요)

  • 패치를 적용할 때 , required 패치가 설치할 패치 이전에 설치되어 있어야 한다. 참고로 Solaris 2.5.1 머쉰에서 사전에 필요한 패치를 하지 않고 패치를 실행시켰을 때의 예이다.
    Solaris2.5.1_machine# ./installpatch .
    Checking installed packages and patches...
    ERROR: This patch requires the following patches
    which have not been applied to the system:
    103566-36 106663-01 106662-01 103901-11
    Installpatch is terminating.
     
    이 예에서는 103666-36.tar.Z , 106663-01.tar.Z , 106662-01.tar.Z , 
    103901-11.tar.Z 를 pre-required patch 로 설치를 사전에 해두어야 한다.  
  • 패치를 설치할 경우나 backout 시킬 때에는 single user mode 로 로긴하여 패치를 하는 것이 원칙이다. 하지만 이것이 여의치 않을 경우 (가령, 24 시간 Full Service 를 하고 있는 시스템인 경우) 에는 가급적 시스템이 조용한 상태에서 , 즉 사용자가 뜸한 시간이라든가 작동되고 있는 프로세스 수가 적은 시간 대를 이용해서 패치를 하는 것이 바람직하다.
  • 패치를 설치한 후에는 리부팅을 시켜야 한다. 간단히 application 프로그램의 바이너리 파일만 패치하는 경우가 아닌 커널모듈이나 데몬을 패치하는 경우라면 가급적 리부팅을 시켜주도록 한다.

2. HP-UX 에서의 PATCH

2.1. How to apply whole Patches?

  • 아래의 사이트에서 패치를 구하도록 한다. 자신이 어떤 항목에 관련된 패치를 적용할 것인지 미리 키워드를 알고 있는 것이 좋다. 아직 아래의 사이트에서는 OS 별 , 패키지별 패치항목을 표로 정리해서 보여주고 있지 않다.
  • 원하는 패치를 받아왔으면 간단하게 sh을 이용하여 압축을 풀도록 한다. 압축을 풀고나면 패치에 대한 간략한 설명이 포함되어 있는 PATCH_ID.text 파일과 PATCH_ID.depot 파일이 생성되게 된다.  이 파일들을 swinstall을 이용해서 설치해 주기만 하면 된다. X windows 환경이나 CDE 환경 하에서는 GUI 로 swinstall 이 작동되며, 그렇지 않은 경우에는 text 모드로 작동되게 된다.
  • 아래는 PHCO_8246 이라는 팻치를 설치하는 예제이다.

     # sh PHCO_8246  
     PHCO_8246.text  PHCO_8246.depot
     # swinstall -s $PWD/PHCO_8246.depot

    swinstall에서 패치가 기존에 설치되어 있는지, 또는 시스템에 맞는 패치인지를 알아서 점검해 주므로 상당히 편리하다.

2.2 참고사항 (중요)

    PATCH_ID.depot 파일 내에 Automatic Reboot? 항목이 yes 인지 no 인지 사전에 반드시 확인해야 한다. Automatic Reboot 이 yes 로 되어 있는 경우 패치를 설치함과 동시에 시스템이 rebooting 되기 때문이다.

3. ACDC98 소개

  • 보안에 관련되서 한달에 한두 개 정도는 새로운 버그가 지적이 되고 이를 해결해주는 패치역시 1~2 개 정도는 꼬박꼬박 나오게 마련인데, 시스템 관리를 하면서 자기가 관리하고 있는 시스템이 어떤 것이 패치가 되어 있는지, 또 어떤 것이 패치가 되어 있지 않은지 일일이 점검해 보기는 보통 시간을 많이 잡아먹는 일이 아니다. 이를 위해 Solaris 2.x에서 Security 관련 패치에 대해 패치상황을 점검해 주고 , 필요한 패치를 다운로드 받도록 지시해 주는 간단한 프로그램이다.

    이 프로그램에서 점검해 주는 항목들은 다음과 같다. 이 프로그램 내에서는 98/11/14 일까지 발표된 security 상의 문제점을 점검하고 그에 대한 패치가 설치되어 있는가를 점검한다. 프로그램에서 체크해 주는 항목들은 꾸준히 업데이트 될 예정이다.

     

    OS Version

    check list

    Solaris 2.3

    Solaris_2.3.txt

    Solaris 2.4

    Solaris_2.4.txt

    Solaris 2.5

    Solaris_2.5.txt

    Solaris 2.5.1

    Solaris_2.5.1.txt

    Solaris 2.6

    Solaris_2.6.txt

         # gzip -dc acdc98.tar.gz | tar xvf -
           # make all
           # ./acdc

  • result report

      성공적으로 버그에 대한 검색이 끝났다면 results.html 이 생성되었을 것이다.
        시스템 내의 WWW browser 를 이용해서 보면 된다.

    다음은 captain.kaist.ac.kr 에서의 실행 예이다.


     

장점

    이 프로그램의 장점은 알고리즘이 단순하기 때문에 빠르고 시스템에 부하를 거의 주지 않는다. 또 관리자에게 도움이 될 만한 문서를 많이 제공해 주고 있다.

4. References

반응형

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

Solaris 보안  (0) 2007.08.01
Solaris 설치 후 기본적인 설정  (0) 2007.07.25
SOLARIS PATCH ERROR CODE  (0) 2007.07.20
Trunking  (0) 2007.07.20
solaris 10 DVD 여러개 파일 한개이미지로 합치기  (0) 2007.07.19
Posted by [PineTree]
OS/SOLARIS2007. 7. 20. 03:42
반응형
패치 오류 (error code) 
 
0 No error  
1 Usage error  
2 Attempt to apply a patch that\'s already been applied 
3 Effective UID is not root  
4 Attempt to save original files failed  
5 pkgadd failed  
6 Patch is obsoleted  
7 Invalid package directory  
8 Attempting to patch a package that is not installed 
9 Cannot access /usr/sbin/pkgadd (client problem)  
10 Package validation errors  
11 Error adding patch to root template  
12 Patch script terminated due to signal  
13 Symbolic link included in patch  
14 NOT USED  
15 The prepatch script had a return code other than 0.  
16 The postpatch script had a return code other than 0.  
17 Mismatch of the -d option between a previous patch install and the current one.  
18 Not enough space in the file systems that are targets of the patch.  
19 $SOFTINFO/INST_RELEASE file not found  
20 A direct instance patch was required but not found  
21 The required patches have not been installed on the manager  
22 A progressive instance patch was required but not found  
23 A restricted patch is already applied to the package  
24 An incompatible patch is applied  
25 A required patch is not applied  
26 The user specified backout data can\'t be found  
27 The relative directory supplied can\'t be found  
28 A pkginfo file is corrupt or missing  
29 Bad patch ID format  
30 Dryrun failure(s)  
31 Path given for -C option is invalid  
32 Must be running Solaris 2.6 or greater  
33 Bad formatted patch file or patch file not found  
34 Incorrect patch spool directory 
35 Later revision already installed 
36 Cannot create safe temporary directory 
37 Illegal backout directory specified 
38 A prepatch, prePatch or a postpatch script could not be executed 
 
2번, 8번, 35번은 무시 가능하다. 
2: 이미 설치된 패치임 
8: 패키지가 설치되지 않았음(패치할 소프트웨어가 설치되지 않았음) 
35: 최신 버전이 이미 설치되었음. 
 
5번, 10, 30번 오류가 난 경우 다운로드가 잘 되었는지 부터 살피는 것이 좋다. (패치를 다운로드 하다가 깨지는 경우도 있다) 
 
pkgadd를 두번 동시에 실행하는 경우 오류가 생기기도 한다. 
 
나머지 코드는 패치하다 오류코드를 본 적이 없다. ^^; 
----- 
2004년 12월 30일: 36,37번 추가 
2005년 1월 11일: 38번 추가
반응형

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

Solaris 설치 후 기본적인 설정  (0) 2007.07.25
Solaris,HP-UX 에서 패치  (0) 2007.07.20
Trunking  (0) 2007.07.20
solaris 10 DVD 여러개 파일 한개이미지로 합치기  (0) 2007.07.19
IPMP에 대하여  (0) 2007.07.19
Posted by [PineTree]
OS/SOLARIS2007. 7. 20. 01:48
반응형

설치준비

System 요구사항

* Hardware

Sun Ultra 60, Sun Ultra Enterprise 3x00, 4x00, 5x00, 6x00, E250,

E450, Sun Enterprise 10000, 12000, 15000 Sun Fire™ 4800, Netra

T3, T4, Sun Blade™ 100, 150, 1500, 2500 Netra™ T4.

 

* OS

Solaris 7, 8, 9 or 10

 

* NIC

Sun Quad FastEthernet adapter (qfe driver), Sun

GigabitEthernet adapter (ge driver), Sun GigaSwift

Ethernet adapter (ce driver), Sun Dual FastEthernet and

Dual SCSI/P adapter (ce driver)

 

설치

파일 위치http://www.sun.com/products/networking/ethernet/suntrunking/

참고) Sun에서 제공하는 매뉴얼을 가지고 설치하면 안됨. 다음과 같이 간단하게 설치할 수 있음.

 

위의 파일을 압축 해제 후 임의의 디렉토리에 복사한다.

#pwd

Sun_Trunking_1.3_s10/Product/sparc/

#pkgadd –d .

 

설치후 패키지 확인

#pkginfo –l SUNWtrku

PKGINST:  SUNWtrku

      NAME:  Sun Trunking Utility 1.3 for Solaris 10

  CATEGORY:  application

      ARCH:  sparc

   VERSION:  1.3,REV=2005.06.14.5.10

   BASEDIR:  /

    VENDOR:  Sun Microsystems, Inc.

      DESC:  Sun Trunking PCI/SBus Adapter Utility

    PSTAMP:  miro20050614090857

  INSTDATE:  Oct 17 2005 16:06

   HOTLINE:  Please contact your local service provider

    STATUS:  completely installed

     FILES:     25 installed pathnames

                 8 shared pathnames

                16 directories

                 5 executables

               566 blocks used (approx)

 

#pkginfo –l SUNWtrkm (이건 맨 페이지니까 설치 안해도 상관 없을 듯)

PKGINST:  SUNWtrkm

      NAME:  Sun Trunking Utiltiy 1.3 Man Pages

  CATEGORY:  system

      ARCH:  all

   VERSION:  1.3,REV=2005.06.14.10.0

   BASEDIR:  /opt

    VENDOR:  Sun Microsystems, Inc.

      DESC:  Sun Trunking PCI/SBus Adapter man pages

    PSTAMP:  miro20050614090918

  INSTDATE:  Oct 17 2005 16:05

   HOTLINE:  Please contact your local service provider

    STATUS:  completely installed

     FILES:     12 installed pathnames

                 8 directories

                44 blocks used (approx)

 

Trunking 구성

다음의 명령을 통해 자신의 시스템에 연결된 모든 NIC 정보를 얻어온다.

# grep <device> /etc/path_to_inst

* device : qfe for Sun Quad FastEthernet adapter

          ge for GigabitEthernet adapter

          ce for Ethernet adapter

 

Ex)

"/pci@1f,0/pci@1/pci@2/SUNW,qfe@0,1" 0 "qfe"

"/pci@1f,0/pci@1/pci@2/SUNW,qfe@1,1" 1 "qfe"

"/pci@1f,0/pci@1/pci@2/SUNW,qfe@2,1" 2 "qfe"

"/pci@1f,0/pci@1/pci@2/SUNW,qfe@3,1" 3 "qfe"

 

위의 리스트에서 trunking을 구성할 디바이스를 선택한다.

예를 들어 qfe1, qfe2 두 인터페이스로 네트워크 trunking을 구성하려면 다음과 같이 설정한다.

 

# Nettr –setup head-instance device=<qfe | ge | ce> members=<instance, instance, …> [policy=<number>]

* head-instance : trunking을 구성할 물리적 인터페이스들 중에서 대표 인터페이스

* device : 자신이 구성할 인터페이스의 종류

* members : trunking을 구성할 인터페이스 리스트

* policy : trunking 모드

         1 – MAC trunking

         2 – round robin

         3 – IP destination

         4 – IP source/IP destination

à policy의 구체적인 내용은 매뉴얼 참조
Ex)
다음은 위의 qfe0~1 중에서 qfe1 qfe2 두 개의 인터페이스로 head“1”(qfe1) round-robin 방식의 trunking 예를 보여준다.

# nettr –setup 1 members=1,2 device=qfe policy=2


위와 같이 구성하였으면 trunking이 잘 되었는지 확인한다.

 

# nettr –conf

Name    Head      Policy DEV Type   Original-Mac-Addr   Speed   Duplex   Link

qfe1      qfe1      2      qfe-pci    0:3:ba:c:cc:27        100     Full      DOWN

qfe2      qfe1             qfe-pci    0:3:ba:c:cc:27        100     Full      DOWN

 

위에 나열된 정보에서 마지막 Link 항목이 DOWN으로 나오는 이유는

trunking 구성 후 head IP 주소를 할당하지 않았기 때문이다. 따라서 다음과 같이 IP를 할당합니다.

 

# ifconfig qfe1 plumb 10.1.1.55 up

# nettr –conf

Name    Head      Policy DEV Type   Original-Mac-Addr   Speed   Duplex   Link

qfe1      qfe1      2      qfe-pci    0:3:ba:c:cc:27        100     Full      UP

qfe2      qfe1             qfe-pci    0:3:ba:c:cc:27        100     Full      UP

위와 같이 Link 정보가 “UP” 상태로 전환됨을 확인할 수 있다.

 

이제 모든 설정이 끝났으므로 설정된 인터페이스들이 제대로 동작하는지 확인한다.

# ./nettr -stats 1 device=qfe

Name   Ipkts        Ierrs  Opkts      Oerrs  Collis  Crc     %Ipkts  %Opkts

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

qfe1   8782         0      1563        0      0     0        60.25   65.95

qfe2   5793         0      807         0      0     0        39.75   34.05

 

다음과 같이 interval을 사용하여 주기적으로 해당 인터페이스들로 유입/유출되는 트래픽을 관찰할 수 있다.

# ./nettr -stats 1 device=qfe interval=sec

위에서 round-robin 방식으로 설정되었으므로 qfe1 qfe2가 주기적으로 통신을 함을 확인할 수 있다.

Oct 17 17:56:39 2005

Name   Ipkts        Ierrs  Opkts      Oerrs  Collis  Crc     %Ipkts  %Opkts

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

qfe1   0            0      0            0      0     0         0.00    0.00

qfe2   1            0      0            0      0     0       100.00    0.00

(Aggregate Throughput(Mb/sec): 0.00(New Peak)   0.00(Past Peak) 100.00%(New/Past))

Oct 17 17:56:40 2005

Name   Ipkts        Ierrs  Opkts      Oerrs  Collis  Crc    %Ipkts  %Opkts

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

qfe1   1            0      0            0      0       0    100.00    0.00

qfe2   0            0      0            0      0       0       0.00    0.00

(Aggregate Throughput(Mb/sec):  0.00(New Peak)  0.00(Past Peak) 100.00%(New/Past))

 

Trunking 해제

# /etc/opt/SUNWconn/bin/nettr -release 1 device=qfe

반응형

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

Solaris,HP-UX 에서 패치  (0) 2007.07.20
SOLARIS PATCH ERROR CODE  (0) 2007.07.20
solaris 10 DVD 여러개 파일 한개이미지로 합치기  (0) 2007.07.19
IPMP에 대하여  (0) 2007.07.19
SVM(솔라리스 볼륨메니져) - 미러링  (0) 2007.07.19
Posted by [PineTree]
OS/SOLARIS2007. 7. 19. 20:28
반응형

명령 프롬프트에서

 

copy /b sol-10-u3-ga-sparc-dvd-iso-a+sol-10-u3-ga-sparc-dvd-iso-b+sol-10-u3-ga-sparc-dvd-iso-c+sol-10-u3-ga-sparc-dvd-iso-d+sol-10-u3-ga-sparc-dvd-iso-e sol-10-u3-ga-sparc-dvd.iso

 

하면 된다.

 

 

반응형

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

SOLARIS PATCH ERROR CODE  (0) 2007.07.20
Trunking  (0) 2007.07.20
IPMP에 대하여  (0) 2007.07.19
SVM(솔라리스 볼륨메니져) - 미러링  (0) 2007.07.19
x86/x64 플랫폼의 솔라리스10에서 점프스타트 사용하기  (0) 2007.03.29
Posted by [PineTree]
OS/SOLARIS2007. 7. 19. 20:21
반응형
[개요]
IPMP 기능 이해
IPMP 관련 화일및 명령어 이해
IPMP 설정 및 테스트


[설명]
솔라리스 8부터 새로이 추가된 기능중 하나인 IPMP(IP MultiPathing)는
솔라리스의 core package인 SUNWcsr에 포함되어 있다.
IPMP는 하나의 시스템이 여러개의 NIC(Network Interface Card)를  사용할때
네트웍 카드들을 그룹핑을 하여서 그중 하나의 네트웍 카드가 failure 되었을때
이를 검사하여 정상적인 네트웍 카드로 failover해주는 기능이다.
그러므로써 네트웍 서비스를 제공하는데 있어서 네트웍 카드의 장애로 생기는
네트웍 장애 문제를 극복할 수 있는 안정적인 환경을 구성해 줄 수 있다.
또한 failback 기능을 가지고 있는데 이는 장애가 발생한 네트웍 카드를 복구한 후
관리자가 메뉴얼하게 네트웍 카드의 설정을 하지 않아도 자동으로 이전 설정으로 돌려주는 기능이다.
IPMP 설정 방법으로는 크게 두가지가 있다. Standby NIC를 가지는 환경과 그렇지 않은 환경이다.
Standby NIC란 네트웍 서비스를 일반적으로 하지 않는 NIC를 하나 설정하여
실제 서비스중인 NIC의 failover에 집중적으로 책임을 지는 인터페이스이다.
이것이 Standby NIC를 가지고 IPMP를 설정하는 것이다.
Standby NIC를 가지지 않는 환경이란 그룹에 있는 NIC들이 네트웍 서비스를 각각 하고 있다가 
그룹내 NIC 하나가 failure가 발생하면 남아있던 정상의 NIC로 failover하는 것이다.
IPMP를 설정하는데 있어서 Standby를 갖는냐 갖지 않는냐의 가장 큰 차이는
failover를 할 수 있는 대상 NIC 차이이다.
Standby NIC는 Standby가 아닌 다른 NIC의 failover를 제공하지만 반대는 할 수 없다.
즉, Standby가  아닌 NIC는 Standby NIC의 failure에 대해 failover를 하지 않는다.
Standby NIC가 없이 NIC들을 모두 active path로 잡아주는 환경은 그룹에 있는
NIC들이 어떤것이든 서로를 failover하며 서비스 해 줄 수 있다.
아래의 Lab에서는 Standby NIC를 두는 IPMP 환경 설정과 그렇지 않는 설정에 대해 설명할것이다.


IPMP 구현 관련 명령어와 파일

1. in.mpathd : IPMP의 main control daemon이다. NIC를 그룹핑하는 Ifconfig 명령어를 실행하면 
실행하는 프로세스로써 그룹내에 있는 네트웍 카드가 failure가 발생했는지 검사하여
정상적인 네트웍 카드를 failover를 시켜주고 failback을 시켜주는 프로세스이다.
이때 in.mpathd가  failover, failback을 하기위해 (NIC를 테스트하기 위해) 사용하는
logical interface가 필요한데 이것이  test interface이다. test interface는 failover하지 않는다.
단지 테스트를 위한 virtual interface이다.
참고로 Standby interface는 test interface 형태로만 설정한다.
하지만 그룹내 NIC들이 모두  active한 환경이라면(즉 Standby NIC를 가지지 않는 설정) NIC들은
public한 ip address와 test를 위한 ip address 모두를 갖도록 설정해야한다.

2. /etc/default/mpathd : in.mpathd의 configuration file이다.
예를 들어 in.mpathd가 그룹내 NIC들의 failover를 체크할 시간 간격을 정의하는
파라메터등을 설정하는 화일이다.

3. ifconfig : 너무나 잘 알고 있듯이 네트웍 카드 설정을 해주는 명령어이다.
예를 들어 ip address나 netmask등을 설정해주는 명령어이다.
그러한 기본 기능뿐만이 아니라 IPMP를 설정시에도 그룹을 지정하거나 테스트 NIC를 설정하는데 사용된다.
IPMP 설정에 관련있는 ifconfig 명령어들의 옵션이나 아규먼트 몇 가지를 살펴보자.
group : IPMP failover를 할 그룹을 설정한다.
deprecated -failover : test interface 에 설정하는 옵션
addif : test interface 이면서 active path 를 가지고 있으면서 test interface를 add 하기 위해
사용하는 아규먼트
standby : active path를 갖지 않는 standby test interface 를 설정하는 아규먼트

Implementation
아래의 구현 내용은 IPMP를 설정하는 방법으로 첫째로 standby를 사용하지 않고 두 NIC가
모두 active하게 서비스를 할 수 있는 상태로 만든후 failover, failback을 하는 내용이다.
두번째 구현의  내용은 standby를 사용하는 테스트의 예이다.

1. Standby 없이 dual active path 의 IPMP설정 및 확인
[설정]
host1#eeprom local-mac-address?
local-mac-address?=false
host1# eeprom local-mac-address?=true

--> 각 interface의 ethernet address를 달리 설정하기 위한
eeprom parameter를 true로 설정

host1# eeprom local-mac-address?
local-mac-address?=true 
host1# ifconfig ge0 unplumb
host1# ifconfig ge1 unplumb
host1# ifconfig ge0 plumb 192.168.0.86 group testgrp2 up

host1# ps -ef|grep mpath
root 477 1 0 17:18:09 ? 0:00 /sbin/in.mpathd

host1# ifconfig ge0 addif 192.168.0.87 deprecated -failover up
---> test interface 설정 . Created new logical interface ge0:1

host1# ifconfig -a
lo0: flags=1000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
ge0: flags=1000843 mtu 1500 index 6
inet 192.168.0.86 netmask ffffff00 broadcast 192.168.0.255 3
groupname testgrp2
ether 8:0:20:c0:ff:ec
ge0:1: flags=9040843
mtu 1500 index 6
inet 192.168.0.87 netmask ffffff00 broadcast 192.169.0.255

host1# ifconfig ge1 plumb 192.168.0.88 group testgrp2 up
host2# ifconfig ge1 addif 192.168.0.89 deprecated -failover up
--> test interface설정 . Created new logical interface ge1:1

host1# ifconfig -a
lo0: flags=1000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
ge0: flags=1000843 mtu 1500 index 6
inet 192.168.0.86 netmask ffffff00 broadcast 192.168.0.255
groupname testgrp2
ether 8:0:20:c0:ff:ec
ge0:1:
flags=9040843
mtu 1500 index 6
inet 192.168.0.87 netmask ffffff00 broadcast 192.168.0.255
ge1: flags=1000843 mtu 1500 index 7
inet 192.168.0.88 netmask ffffff00 broadcast 192.168.0.255
groupname testgrp2
ether 8:0:20:c0:ff:ec
ge1:1:
flags=9040843
mtu 1500 index 7
inet 192.168.0.89 netmask ffffff00 broadcast 192.168.0.255


Failover 테스트
다른 호스트 host2 로부터 192.168.0.88 번으로 ping을 날리고 host1은 그러는 중간에
ge1에 장애를 일으켰다. lab에서는 네트웍 포트를 뽑아버렸다
host2# ping -s 192.168.0.88
PING 192.168.0.88: 56 data bytes
64 bytes from host1 (192.168.0.88): icmp_seq=0. time=0. ms
64 bytes from host1 (192.168.0.88): icmp_seq=1. time=0. ms
64 bytes from host1 (192.168.0.88): icmp_seq=2. time=0. ms
64 bytes from host1 (192.168.0.88): icmp_seq=3. time=0. ms
64 bytes from host1 (192.168.0.88): icmp_seq=4. time=0. ms
64 bytes from host1 (192.168.0.88): icmp_seq=5. time=0. ms
.
.
.
64 bytes from host1 (192.168.0.88): icmp_seq=14. time=0. ms
64 bytes from host1 (192.168.0.88): icmp_seq=15. time=0. ms

위의 결과에서 보듯이 중간에 잠시 멈추는 부분이 보이는데 이때 host1의 ge1이 장애를 일으켰다.
하지만 잠시 시간이 흐른 후 계속 ping 이 잘 진행되는 것을 확인할 수 있다.
host1에서 IPMP설정에 의해 failover가 되는 것이다.
이러한 테스트는 ge0에 장애를 일으켜도 마찬가지로 ge1으로 failover 된다.
그럼 host1쪽의 failover된 환경을 확인해 보자.


host1# ifconfig -a
lo0: flags=1000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
ge0: flags=1000843 mtu 1500 index 6
inet 192.168.0.86 netmask ffffff00 broadcast 192.168.0.255
groupname testgrp2
ether 8:0:20:c0:ff:ec
ge0:1:
flags=9040843
mtu 1500 index 6
inet 192.168.0.87 netmask ffffff00 broadcast 192.168.0.255
ge0:2: flags=1000843 mtu 1500 index 6
inet 192.168.0.88 netmask ffffff00 broadcast 192.168.0.255
ge1: flags=19000842
mtu 0 index 7
inet 0.0.0.0 netmask 0 groupname testgrp2
ether 8:0:20:c0:ff:ec
ge1:1:
flags=9040843
mtu 1500 index 7
inet 192.168.0.89 netmask ffffff00 broadcast 192.168.0.255



Failback 테스트
ge1을 복구한 후 얼마 지나지 않아 자동으로 failback 하는 것을 확인할 수 있다.
아래의 내용은 failback을 한 후의 host1의 네트웍 카드 설정을 보면 이전 상태로
돌아가 있는 것을 확인할 수 있다


host1# ifconfig -a
lo0: flags=1000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
ge0: flags=1000843 mtu 1500 index 6
inet 192.168.0.86 netmask ffffff00 broadcast 192.168.0.255
groupname testgrp2
ether 8:0:20:c0:ff:ec
ge0:1:
flags=9040843
mtu 1500 index 6
inet 192.168.0.87 netmask ffffff00 broadcast 192.168.0.255
ge1: flags=1000843 mtu 1500 index 7
inet 192.168.0.88 netmask ffffff00 broadcast 192.168.0.255
groupname testgrp2
ether 8:0:20:c0:ff:ec
ge1:1:
flags=9040843
mtu 1500 index 7
inet 192.168.0.89 netmask ffffff00 broadcast 192.168.0.255

/etc/hostnanme. 설정 내용
# cat /etc/hostname.hme0
192.168.10.215 broadcast + netmask + up group test 
addif 192.168.10.216 -failover  deprecated netmask + broadcast + up
# cat /etc/hostname.hme1
192.168.10.217 broadcast + netmask + up group test 
addif 192.168.10.218 -failover  deprecated netmask + broadcast + up


2. Standby 를 가진 single active path의 IPMP 설정하기
[설정부분]
host1#eeprom local-mac-address?
local-mac-address?=false
host1# eeprom local-mac-address?=true
--> 각 interface의 ethernet address를 달리 설정하기 위한 eeprom parameter를 true로 설정
host1# eeprom local-mac-address?
local-mac-address?=true

host1# ifconfig ge0 unplumb
host1# ifconfig ge1 unplumb
host1# ifconfig ge0 plumb 192.168.0.86 group testgrp2 up

host1# ps -ef|grep mpath   ß 데몬이 실행중인지 확인한다
root 477 1 0 17:18:09 ? 0:00 /sbin/in.mpathd
-> 실행중이지 않다면 /sbin에서 #./in.mpathd 실행

host1# ifconfig ge0 addif 192.168.0.87 deprecated -failover up
-> ge0:1 가상인터페이스가 생성된다

host1# ifconfig -a   <-확인

lo0: flags=1000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
ge0: flags=1000843 mtu 1500 index 6
inet 192.168.0.86 netmask ffffff00 broadcast 192.168.0.255
groupname testgrp2
ether 8:0:20:c0:ff:ec
ge0:1: flags=9040843
mtu 1500 index 6
inet 192.168.0.87 netmask ffffff00 broadcast 192.169.0.255

host1# ifconfig ge1 plumb 203.234.247.88 group testgrp1 deprecated -failover standby up
host1# ifconfig -a
lo0: flags=1000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
ge0: flags=1000843 mtu 1500 index 6
inet 192.168.0.86 netmask ffffff00 broadcast 192.168.0.255
groupname testgrp2
ether 8:0:20:c0:ff:ec
ge0:1: flags=9040843
mtu 1500 index 6
inet 192.168.0.87 netmask ffffff00 broadcast 192.169.0.255
ge1: flags=69040843

mtu 1500 index 5
inet 192.168.0.88 netmask ffffff00 broadcast 192.168.0.255
groupname testgrp1 ether 8:0:20:c0:ff:ec

Failover 테스트
다른 호스트 host2 로부터 192.168.0.86 번으로 ping을 날리고
host1은 그러는 중간에 ge1에 장애를 일으켰다. 
lab에서는 네트웍 포트를 뽑아버렸다

host2# ping -s 192.168.0.86
PING 192.168.0.86: 56 data bytes
64 bytes from host1 (192.168.0.86): icmp_seq=0. time=0. ms
64 bytes from host1 (192.168.0.86): icmp_seq=1. time=0. ms
64 bytes from host1 (192.168.0.86): icmp_seq=2. time=0. ms
64 bytes from host1 (192.168.0.86): icmp_seq=3. time=0. ms
64 bytes from host1 (192.168.0.86): icmp_seq=4. time=0. ms
.
.
.
64 bytes from host1 (192.168.0.86): icmp_seq=11. time=0. ms
64 bytes from host1 (192.168.0.86): icmp_seq=12. time=0. ms

위의 결과에서 보듯이 중간에 잠시 멈추는 부분이 보이는데 이때 host1의 ge1이 장애를 일으켰다.
하지만 잠시 시간이 흐른 후 계속 ping 이 잘 진행되는 것을 확인할 수 있다.
host1에서 IPMP설정에 의해 failover가 되는 것이다.
하지만 이때 ge0이 아닌 standby 인 ge1에 장애가 발생하면 ge0으로는 failover되지 않는다.

/etc/hostname. 설정 내용
# cat /etc/hostname.ge0
192.168.0.86 netmask 255.255.255.0 broadcast + group host1 up
addif 192.168.0.87 deprecated -failover netmask 255.255.255.0 broadcast + up

#cat /etc/hostname.ge1
192.168.0.88 netmask 255.255.255.0 broadcast + group host1 deprecated -
failover standby up
반응형
Posted by [PineTree]