사이트 내 전체검색
[linux] 리눅스 관리자가 알아야 할것
로빈아빠
https://cmd.kr/server/420 URL이 복사되었습니다.

본문

리눅스 관리자가 알아야 할것

리눅스 시스템 관리자가 되기 위해서는 많은 것을 알아두어야 한다. 시스템 관리자의 관리 여하에 따라 많은 사람들의 시스템 장애를 초래할 수 있기 때문이다. 물론 시스템 관리자가 모든 것을 미리 예방할 수 없다. 하지만 불가피한 상황을 제외하고는 시스템이 정상적으로 작동되도록 해야한다.

이번호에는 시스템, 네트워크, APM, 메일, 보안, 장애발생시 복구등에서 일어날 수 있는 시스템 관리자의 행동요령에 대해 알아볼 것이다. 시스템 관리자는 항상 모니터와 키보드아 함께 한다는 사실을 기억해야 한다.

[ 막강한 시스템 길들이기 ]
1. 바이오스 타이머 조정
시스템이 네트워크에 연결되어 있다면, 다음과 같이 한국 표준시간 서버에서 표준시간 을 받아서 설정할 수 있다.
# rdate -s time.kriss.co.kr
시스템이 온라인 상태가 아니라면 아래와 같이 수동으로 설정할 수도 있다.
# date -s "1999-12-30 22:22:40"
위와 같이 실행하면 실행할 때만 적용되므로 이후 시간이 늦어지는 것을 막기 위해서는 주기적으로 변경 가능하게 크론(/etc/crontab)에 설정하는 것이 좋다.

2. .profile과 rc.local의 차이
.profile은 로그인시 적용되는 내용들이고, rc.local은 시스템 부팅시 실행해야 할 것들을 적어 놓은 것이다. 사용자 홈디렉토리의 .profile이 /etc에 있는 설정 파일보다 우선하기 때문에 홈 디렉토리에 .profile에 패스를 설정해주거나 쉘환경 파일 등을 설정해주면 계정 내에서 적용이 된다. rc.local에는 부팅시 가장 마지막에 실행되므로 일반적으로 부팅시 실행되어야 할 데몬 등을 적어준다.

3. 커널 컴파일시 시스템 자원 확인법
리눅스 시스템의 자원정보는 proc 파일시스템 구조를 통해서 알 수 있다. 이는 실제로 디스크 용량을 차지하는 파일들이 아닌 가상의 디렉토리 구조이며 리눅스 커널에 의해 사용되는 시스템의 정보를 담는 곳으로 사용된다. 다음의 위치에서 하드웨어에 대한 정보 및 시스템 관련 정보들을 확인할 수 있다.
-------------------------------------------------------------------- | /proc/cpuinfo | CPU의 정보 | -------------------------------------------------------------------- | /proc/interrupts | interrupt 할당 정보 | -------------------------------------------------------------------- | /proc/ioports | I/O 포트 할당 정보 | -------------------------------------------------------------------- | /proc/devices | Character, Block 장치명 | -------------------------------------------------------------------- | /proc/swaps | 활성화된 스왑영역 정보 | -------------------------------------------------------------------- | /proc/meminfo | 물리적인 램용량, 램 사용량, 스왑 사용량 등 | --------------------------------------------------------------------
표 1. proc 파일 시스템 구조를 통한 시스템 자원 정보

위와 같이 관련된 정보에 해당하는 파일 이름이 존재한다. 이 파일들은 텍스트 포맷이
므로 cat 명령을 통해서 확인할 수 있다.

4. vi 에디터로 유닉스에서 도스상의 ^M 문자 없애기
^M 문자를 공백으로 치환하면 된다.
:1,$s/^M//g

5. 특정 rpm 패키지의 설치 여부 확인
# rpm -qa | grep 패키지 명으로 확인할 수 있다.

6. RPM(Redhat Package Manager)에서 특정 패키지 복원시키기
rpm2cpio filename.rpm | cpio -I -make-deretories -E filename

7. TCP Syn Flooding 공격 대처방법
Tcp Syn Flooding은 웹으로의 공격이 대부분이므로 syn_recv 프로세스가 일정 개수가 넘게 되면 아파치를 재시작한다. 지속적인 공격일 경우 대처 방안으로 두 가지 방법이 있다. 첫째, sysctl -a | grep syn_backlog으로 확인 후 backlog를 늘려주거나 둘째, sysctl -a | grep syncookies로 확인 후 syncookies의 값을 1로 바꾸어준다. syn_bac klog의 값을 조정해주는 방법은 다음과 같다.
# sysctl -w net.ipv4.tcp_max_syn_backlog=1024 # echo 1024 > /proc/sys/net/ipv4/tcp_max_syn_backlog
syncookies의 값은 다음과 같이 변경이 가능하다.
# sysctl -w net.ipv4.tcp_syncookies=1

8. TCP Syn Flooding 공격 대처방법
Umount시 위와 같은 메시지가 나는 것은 unmount하려는 디렉토리에서 실행되고 있는 프로세스가 있기 때문이다. 예로 /tmp 디렉토리를 umount 시키려 할때 위의 메시지가 뜨는 경우 mysql.socket파일이 /tmp에 있는 경우를 들 수 있다. 이 경우에는 해당 파일시스템에서 실행중인 프로세스를 제거해야 하나 일일이 제거가 번거로우므로 Fuser 에서 -k 옵션을 사용하면 간단히 해결할 수 있다.
Fuser -k 장치명

9. setuserid
디렉토리나 파일 퍼미션 중 setuid는 소유자의 권한을 잠시 빌려 실행 후 권한을 돌려 주고 실행을 마치게 되는데 실행도중 인터럽트가 발생한다면 정상적으로 권한을 반환 하지 못하게 되어 소유자의 권한을 그대로 가지고 있게 된다. 이때 파일의 소유자가 루트였다면 이것은 보안에 문제가 될수 있으며 이런 점을 이용해 해킹에 많이 사용된 다. Setuid가 걸여 잇는 파일 중에 실행권하이 있으며 루트권한일 경우에는 위험하다. 특정 디렉토리에서 setuid가 걸려있는 파일을 찾으려면 find /usr -perm 4775와 같이 perm 옵션으로 찾을 수 있다.

10. bash_profile 변경 후 변경된 내용을 유효하게 만들기
다음과 같이 ~/.bash_profile를 실행해서 변경이 적용되도록 한다.
# source ~/.bash_profile

11. root 패스워드를 잊어 버렸을때 다시 세팅하는 방법
리눅스 시스템을 재부팅하고 lilo가 뜨면 ''linux single''로 부팅한다. Tab 키를 누르면 등록되어 있는 라벨이 모두 보이므로, 여기에서 선택하도록 한다. 부팅 후 쉘 명령어 화면에서 /etc/passwd 파일에서 암호 부분을 삭제하거나 passwd를 실행하여 루트의 패스워드를 새로 설정해 준다.
# passwd root

위의 명령을 입력한 후 변경할 패스워드를 입력하면 된다.

12. 파티션을 나누는 이유와 기준
보통 파티션을 나누는 것에 대해서 별다른 고려없이 /로 모든 것을 잡아서 설치하는 경우가 종종 있다. 이럴 경우 설치시 편리하지만, 나중에 파일시스템에 문제가 생기거나 효율적으로 파티션을 관리하기에는 많은 어려움이 있다. 파티션을 나눌때는 어떤 용도로 쓸것인지에 대해서 충분히 생각한 후 파티션을 해야 한다. 다음은 9.1GB 스카시 하드디스크를 기준으로 웹 서버에서 이용될 서버에 대해 파티션한 경우의 예다.
-------------------------------------------------------------------------------- | /boot | 30M | boot에 필요한 booting 지원 파일들이 있다. | | | | 커널 컴파일시 1MB 씩 늘어난다는 것을 염두해 둔다. | -------------------------------------------------------------------------------- | / | 1000M | | -------------------------------------------------------------------------------- | /usr | 2000M | 리눅스에서 사용되는 모든 application 및 시스템 파일들이 위치 | | | | 하고 있으며, library 파일과 실행파일이 존재한다. | -------------------------------------------------------------------------------- | /var | 1000M | | -------------------------------------------------------------------------------- | /tmp | 200M | | -------------------------------------------------------------------------------- | /home | | 나머지 모두 웹 서버 용도로 사용한다면 home 부분에 자료가 | | | | 많아질 것이므로 home에 용량을 더 많이 배분했다. 이렇게 파티션| | | | 을 나눠주면 서비스 거부 공격 방어, SUID 프로그램에 대한 보호,| | | | 빠른 부팅속도, 백업과 업그레이드 등 관리의 편리성, 마운팅된 | | | | 파일 시스템에 대한 제어 가능성의 증대, 각 파일 시스템에 대한 | | | | 효율적인 제한이 가능하다는 이점이 있다. | --------------------------------------------------------------------------------
표 2. 9.1GB 스카시 하드디스크를 기준으로 한 웹 서버 파티션의 예

13. 기존의 ext2파일시스템과 저널링 파일시스템인 ext3, Reiser의 비교
------------------------------------------------------------------------------------- | 최대 파일사이즈 | ext2 | Journalling filesystem | | | |---------------------------------------------| | | | ext3 | Reiser FS | ------------------------------------------------------------------------------------- | 최대저장용량 | 2TB (지원으로 | 4TB | 4GB of blocks, 16Tb | | | 4TB까지 가능) | | | ------------------------------------------------------------------------------------- | 블럭사이즈 | 1KB | 1KB - 4KB | Up to 64KB Currently | | | | | Fixed 4KB 필요할 때마다 | | | | |정확한 사이즈 할당가능 | ------------------------------------------------------------------------------------- | 최대 파일사이즈 | 2GB | 2GB | 4GB, 2^10 Petabytes in | | | | |ReiserFS(3.6.XX) | ------------------------------------------------------------------------------------- | 장점 및 단점 | 성능위주, 20KB | 파일복구 능력 | 공간저약 효과, | | | 저장에 유리, | 뛰어남, 항상 로그 | 속도향상 | | | access 속도저하 | 남기므로 속도 저하| | -------------------------------------------------------------------------------------
표 3. ext2, ext3, Resiser의 특징 및 장담점

/var 디렉토리와 같이 항상 새로운 자료가 쌓이는 곳은 안정성이 우선시 되므로, ext3파일시스템이 유리하며, /usr와 같이 내용 변화 없이 빠르게 액세스하여 쓸 수 있어야하는 부분은 ext2 시스템을 이용하여 성능에 초점을 두면 좋을 것이다.

14. 기본 데이터 블럭 사이즈 1024KB와 4096KB의 차이
1024KB인 경우에는 블럭이 작은 만큼 4096KB보다 하드의 낭비가 적다. 1023KB의 데이터를 저장하는 경우, 기본 블럭사이즈가 1024KB일 때는 1K 공간이 사용되지만, 4096KB가 기본 블럭이라면 4K를 차지하게 된다. 하지만 아주 작은 파일들이 많은 경우 해당 데이터를 액세스하는 데는 1024KB가 4096KB보다 더 걸리게 되므로 퍼포먼스가 급격히 떨어지게 된다. 따라서 자신이 이용하는 시스템의 특성과 용도에 맞게 블럭 사이즈를 지정해서 사용하면 된다.

15. RAID
RAID는 ''Redundant Array of Inexpensive (or Independant) Disks''의 약어다. RAID 시스템은 여러 드라이브의 집합을 하나의 저장장치처럼 다룰 수 있게 하고, 장애가 발생 했을 때 데이터를 잃어버리지 않게 하며 각각에 대해 독립적으로 동작할 수 있도록 한다.

16. RAID 레벨 1과 레벨 5의 특성
시스템의 다운, 데이터 손실에 대비하여 보통 여러가지 RAID 레벨 중에서 1과 5번 방법을 많이 사용한다.
RAID 1(mirroring)의 특징은 빠른 기록 속도와 함께 장애복구능력이 있다는 것이다. 2대의 드라이브만으로 구성할 수 있기 때문에 작은 시스템에 적합하다. 읽을 똑같은 하드가 복제되고 있으므로, 시스템에 문제 발생시 서비스 지연시간이 매우 짧아서 웹 서비스를 하는 곳에서 유용하게 쓸 수 있다. 하지만 한 하드의 내용이 또 다른 하드에 똑같이 복사되므로 하드용량의 낭비가 심하다.
RAID 5(distributed parity)는 작고 랜덤한 입출력이 많은 경우 더 나은 성능을 제공 한다. 빠른 기록 속도가 필수적이지 않다면, 일반적인 다중사용자 환경을 위해 가장 좋은 선택이다. 그러나 최소한 3대, 일반적으로는 5대 이상의 드라이브가 필요하다. 변경된 내용이 있을 경우 그것만 기록한다. 일반적으로 RAID 1은 ECC 계산을 하지 않으므로 RAID 5보단 빠르고, RAID 5는 하드 공간을 좀 더 여유있게 쓸 수 있다는 장점을 지닌다.

17. 백업 계획 및 정책 수립의 요소와 Full 백업과 Incremental 백업
먼저 시스템의 전체 용량이 어떻게 되고, 그 중에서 백업할 가치가 있는 것은 어떤 부분인지를 결정한다. 사용할 백업 장비와 종류를 알아보고, 총 백업 시간과 어느 정도 부하가 걸리는지 예상해보고 테스트해 본 후 마지막으로 백업 스케줄을 정한다. Full백업은 백업할 자료를 처음부터 끝까지 다 기록하는 것이고, Incremental 백업은 이전의 데이터와 비교해서 새로 추가된 내용만 백업하는 방법이다. 따라서 Full 백업시 완전히 데이터를 백업할 수 있지만 시간이 많이 걸리고, 시스템에 부하를 초래할 수 있는 반면에 Incremental 백업은 빠른 시간내에 백업을 할 수 있지만, 백업하는 시간에 따라 데이터가 완전히 백업되지 못할 경우도 있을 수 있다.

18. SNMP의 의미와 구성요소
SNMP는 ''Simple Network Management Protocol''의 약자다. 네트워크에 연결되어 있는 장치에서 네트워크에 관련된 정보를 모으고 문제점 등을 보고할 수 있는 기능을 제공 하는 프로토콜이다. 구성요소는 에이전트와 매니저가 있다. 이것은 서버/클라이언트 구조로서 에이전트가 서버에 해당되고, 매니저가 클라이언트에 해당한다. 에러가 발생 하는 경우는 선택한 장비에 SNMP가 Enable이 안되었거나, 네트워크에 문제가 있어서 모니터링 하려는 장비까지 프로토콜이 전송되지 않는 경우, community 값이 잘못 사용 된 경우 등이 있다.

19. 데몬을 실행하고 정지하기
/etc/rc.d/init.d이 디렉토리에 있는 서비스를 ''서비스명'' stop 또는 start 시키거나 재시작시킨다.

댓글목록

등록된 댓글이 없습니다.

1,139 (10/23P)

Search

Copyright © Cmd 명령어 3.129.39.85