유닉스 서버 보안(Unix Server Security)

2025. 12. 16. 22:15·IT Dictionary/정보보안산업기사
반응형

1. UNIX 구성

  • 커널(Kernel)
    • 항상 메모리에 상주하여 하드웨어 자원을 제어하면서 다양한 기능을 제공
  • 시스템 호출(System Calls)
    • 커널 내에 서브루틴 형태로 존재하며, 사용자 프로그램이 커널에 접근하는 인터페이스 제공
    • 입출력 시스템 호출, 프로세스 간 통신 시스템 호출, 프로세스 관리 시스템 호출 등으로 분류
  • 셸(Shell)
    • 운영체제와 사용자가 대화하기 위한 기반을 제공하는 프로그램
    • 본 셸(sh), C 셸(csh), 콘 셸(ksh), 배시 셸(bash) 종류가 다양함

  • 파일 시스템(FIle System) 
    • UNIX 파일시스템의 디렉터리는 계층화된 트리 구조를 가지며, 최상위 디렉터리는 루트라고 함
    • 리눅스는 minix, ext2, ext3(Journaling) 와 같은 다양한 파일 시스템 지원
    • 저널링(Journaling) : 데이터를 디스크에 쓰기 전, 로그에 데이터를 남겨 안정적인 복구기능을 제공하는 기술
    • i-node
      • 각 파일에 대한 정보를 기억하는 약 120byte의 고정된 크기의 고정체
      • 각 파일에 대한 디스크 블록의 주소를 저장하고, 소유권, 그룹, 최근 수정된 시간 등과 같은 파일 정보를 포함
      • 단, i-node에는 파일명이 없으며 파일명은 디렉터리를 통해 관리
      • 특수 파일의 i-node는 주변 장치를 식별할 수 있는 정보를 포함
      • ls -l 명령에 의해 출력되는 결과는 해당 파일의 i-node를 참조
    • Super Block
      • 파일 시스템의 정보를 유지하는 자료구조로, 좀 더 효과적인 파일시스템의 관리를 가능케함 
      • 사용하지 않는 i-node를 할당받기 위해 i-node 리스트를 순차적으로 하나씩 비교하는 건 비효율적
      • 파일 시스템의 요약정보와 사용하고 있지 않은 i-node와 디스크 블록의 위치정보를 가짐
    • 주요 디렉터리
      • /etc :  시스템의 환경 설정 및 주요 설정 파일을 담음
      • /dev : 프린터나 터미널 같은 물리적인 장치를 다루기 위한 특수 파일을 담음
      • /usr/bin : 기본적으로 실행 가능한 파일을 담음 (echo, my, copy, pwd 등)
      • /usr/include : C언어 라이브러리 헤더 파일을 닫음
      • /usr/lib : 기본 프로그램 모듈을 담음
      • /usr/sbin : 시스템 관리 명령어를 담음
      • /home : 사용자의 홈 디렉터리가 저장됨
      • /tmp : 프로그램 실행 및 설치시 생성되는 임시 파일을 담음
      • /var : 시스템 로그를 담음

유닉스 디렉터리 트리 구조

 

유닉스 파일 시스템 구조(파티션에 생성된 파일 시스템은 네 가지 영역으로 분리된 자료구조를 가짐)

 

2. 리눅스 디렉터리 및 파일 확인(ls) 

  • ls 명령어 문법
문법 옵션
-l list 형태로 디렉터리 및 파일 정보를 자세히 출력
-a 숨김 파일을 포함하여 디렉터리 내에 있는 모든 디렉터리 및 파일 정보 출력
-R 하위 디렉터리에 있는 내용까지 출력
-F 어떤 종류의 파일인지 출력 (디렉티러 /, 실행 파일 *, 심볼릭링크 @)
-i i-node 번호 출력
예문 ls -al *.c        // .c로 끝나는 모든 디렉터리 및 파일 출력
  • ls 명령어 실행

ls 결과값 속성

문자 파일 유형
- 일반 파일
d 디렉터리 파일
l 심볼릭 링크 파일
b 블록 장치 특수 파일
c 문자 장치 특수 파일
p 파이프, 프로세스 간 통신에 사용되는 특수 파일
s 소켓, 네트워크 통신에 사용되는 특수 파일
권한 파일 디렉터리
읽기 r(4) 파일을 읽거나 복사할 수 있음 ls 명령으로 디렉터리 목록을 볼 수 있음
쓰기 w(2) 파일을 수정, 이동, 삭제할 수 있음 파일을 생성, 삭제할 수 있음
실행 x(1) 파일을 실행할 수 있음 파일을 디렉터리로 이동하거나 복사할 수 있음
파일의 경우 666, 디렉터리의 경우 777을 기본 값으로 취함, 단 umask로 지정한 값만큼 기본 값에 뺌

 

3. UNIX 프로세스 응용

  • PID 0인 swapper(sched)는 부팅 동안 운영체제에 의해서 생성됨, PID 0을 제외한 모든 프로세스는 부모 프로세스를 가짐
  • 이 프로세스는 PID 1인 init과 PID 2인 pagedaemon을 만들기 위해 fork() 와 exec를 실행
  • 해당 프로세스들은 그 중요성 때문에 커널 모드에서 영구적으로 실행되며 커널 프로세스라고 부름
  • 시스템 내 모든 프로세스들은 init 프로세스의 자손이 됨
  • 좀비 프로세서(Zombie Process)
    • 실제로 진행되고 있지는 않지만 프로세스 테이블 차지함
    • kill 명령으로 제거할 수 없음
    • SIGCHLD 시그널을 보내 부모 프로세스가 자식 프로세스를 정리하거나 부모 프로세스 자체를 종료시킴
    • 부모 프로세스가 종료되면 좀비 프로세스는 고아 프로세스가 되고 새로운 부모는 init이 됨 
    • init 프로세스는 자식 프로세스의 종료 정보를 주기적으로 확인 후 정리

 

4. UNIX 시스템 부팅 

  • 런 레벨(Run Level)
    • init 프로세스는 /etc/inittab 파일에 정의된 런 레벨에 따라 시스템 운영 상태 구성
    • 0 : PROM(Programmable Read-Only Memory) 모드 (리눅스는 시스템 종료 모드)
    • S, s : 시스템 싱글 유저 모드, 로컬 파일시스템이 마운트 되지 않은 상태
    • 1 : 시스템 싱글 유저 모드, 로컬 파일시스템이 마운트 된 상태 (관리자용)
    • 2 : 멀티 유저 모드(NFS 클라이언트 모드)
    • 3: 멀티 유저 모드(NFS 서버 모드, UNIX 기본 Run Level) 
    • 4 : 사용 안함
    • 5 : 시스템 종료 모드 (리눅스는 X윈도우 환경의 멀티 유저 실행 모드)
    • 6 : 시스템 리부팅
  • shutdown 명령은 시스템을 안전하게 종료 및 런레벨 변경을 위해 사용
  • 하드디스크 동기화는 시스템을 종료하는 중에 해야 할 가장 중요한 작업

 

5. UNIX 파일 시스템 관리(mount, unmount) 

  • 보조기억장치에 들어 있는 데이터와 파일시스템을 UNIX 시스템이 인식하도록 특정 디렉터리에 논리적으로 연결
  • /etc/mtab 파일은 시스템에 마운트 된 파일시스템의 정보를 관리
  • unmount는 이전에 마운트 된 파일시스템의 연결을 해제
문법 옵션
-a /etc/fstab 파일에 정의 된 모든 파일 시스템을 마운트
예문 mount                                              // 마운트 정보 출력
mount -a                                          // /etc/fstab 파일을 기반으로 명시적으로 실행
mount /dev/cdrom /mnt/cdrom        // /dev/cdrom 디바이스 파일을 /mnt/cdrom 에 마운트
unmount -a                                      // 마운트 된 모든 파일시스템 언마운트
unmount /mnt/cdrom                       // //mnt/cdrom 디렉터리 언마운트

마운트

 

6. UNIX 프로세스 스케줄 관리(crontab) 

  • cron 데몬 프로세스는 UNIX 시스템에서 정기적인 작업을 지정시간에 처리하기 위해 사용
  • /etc/default/cron 파일은 로그 기록 여부를 남기는 CRONLOG 변수가 설정됨, 기본 값은 YES
  • 해당 프로세스를 사용하기 위헤선 다음 세 가지 구성요소가 필요
    • 작업 목록을 정의한 crontab 파일
    • crontab 파일을 제어하는 crontab 명령어
    • crontab 파일을 읽어서 작업을 처리하는 cron 데몬 프로세스

구분
정의
필드1 분 0~59 까지 정의
필드2 시 0~23 까지 정의
필드3 일 1~31 까지 정의
필드4 월 1~12 까지 정의
필드5 요일 0~6 까지 정의
필드6 작업 실행할 작업을 절대 경로로 정의 및 필요한 옵션 및 인수 나열
예시 /20 * * * 1-5 /work/batch.sh           // 매월 매일 월~금 20분마다 batch.sh 명령 실행
#/20 * * * 1-5 /work/batch.sh         // 주석 되어있으므로 실행X
문법 옵션
-e crontab 파일 편집
-l crontab 파일 출력
-r crontab 파일 삭제
예문 mount -u admin -e                           // admin 계정으로 crontab 파일 편집
mount -e                                          // 자신의 cronta 파일 편집

 

7. UNIX 사용자 패스워드 파일(passwd, shadow) 

  • /etc/passwd
    • 시스템 관리자는 사용자 계정을 만들 때마다 사용자의 정보를 해당 파일에 저장
    • pwunconv 명령어를 실행하면 두 번째 필드에 패스워드가 저장되고, pwconv 명령어를 실행하면 원래 상태로 롤백

  • etc/shadow
    • 계정별 암호화된 패스워드와 관리정책인 패스워드 에이징을 저장한 파일
    • 관리자(root)만 열람 가능함

 

8. UNIX 권한 상승(SetUID, SetGID)

  • RUID : 프로세스를 실행시킨 사용자의 UID
  • RGID : 프로세스를 실행시킨 사용자의 GID
  • EUID : 접근 권한을 판단하기 위해 프로세스를 실행 동안에만 부여되는 UID
  • EGID : 접근 권한을 판단하기 위해 프로세스를 실행 동안에만 부여되는 GID
  • 최초로 실행했을 때는 RUID와 EUID, RGID와 EGID가 각각 같은 값을 가짐
  • SETUID 비트를 가진 프로그램 실행 시 일치하지 않게 됨, 즉 프로그램은 관리자 권한을 얻읃
  • SETUID 비트가 설정된 파일은 여러 공격에 이용되므로 설정된 파일을 목록화하여 관리하는 작업 필요
  • find / -perm 7000 : suid, sgid, sticky bit 비트가 모두 설정된 파일 검색 
  • SETGID 비트가 설정된 파일은 사용자의 권한이 아닌 프로그램 소유주의 권한이 됨
파일 종류(4bit) 특수권한(3bit) user, group, other(3bit)
-, d, c, s, b, s, l, p 4 2 1 4 2 1
suid(s) sgid(s) sticky-bit(t) r w x
예시 chmod 1644 파일이름  // 특수 권한 sticky bit 추가 (파일 생성만 가능, 파일 삭제 및 변경이 소유자만 가능)
-r-Sr-sr-x                      // user 자리에 있는 S 기호는 SetUID (대문자는 파일 실행 권한이 없음)
                                      group 자리에 있는 s 기호는 SetGID (소문자는 파일 실행 권한까지 있음)

 

9. inted 데몬(슈퍼 서버)

  • UNIX 시스템에는 다양한 종류의 서버 프로그램이 실행되고 있음
  • inted 데몬은 개별 서버를 하나로 통합하여 서비스 요청이 올 때마다 관련 실행 모듈을 실행해줌
  • inted에 의해 불린 후에는 서비스 종료 후에 종료됨
  • tcp에 의해 /etc/hosts.allow, /etc/hosts.deny 파일로 접근 제어
  • /etc/inted.conf 파일에서 서비스 설정이 가능

속성 정의
1 서비스 이름을 정의함, /etc/services에 정의되어 있어야함
2 소켓 유형을 설정함, TCP면 stream, UDP면 dgram
3 /etc/protocls 에 정의된 프로토콜 종류와 번호, 임의로 정해지는 것이 아닌 표준
4 서비스 처리를 즉시할 것 인지를 설정함, nowait과 wait으로 구분
5 데몬을 어떤 사용자의 권한으로 수행할 것 인지를 설정함
6 해당 서비스를 수행하기 위해 어떤 프로그램을 실행한지 설정함, 절대 경로로 적음
7 인자(hosts.allow, hosts.deny), 리눅스는 inted 데몬보다 xinted를 더 많이 사용

 

10. standalone 데몬

  • xinted와는 다르게 독립적으로 실행되는 서비스 데몬
  • 항상 메모리에 독립 데몬으로 상주
  • tcp와는 무관하지만 자체 설정 파일에 의해 접근 제어를 할 수 있음

 

11. TCPWrapper(접근 통제)

  • 외부에서 들어오는 클라이언트의 IP 주소를 확인하며 접근 통제 기능을 제공
  • inted 데몬은 TCPWrapper의 데몬인 tcpd 데몬에 연결을 넘겨줌
  • tcpd 데몬은 접속을 요구한 클러이언트가 적절한 접근 권한이 있는지를 확인하고, 해당 데몬에 연결을 넘겨줌, 로깅도 실행함
  • standalone 데몬처럼 inted 데몬이 통제할 수 없는 경우의 TCPWrapper는 모든 프로토콜에 대한 접근 제어를 할 수는 없음
  • hosts.allow, host.deny 파일에 정의된 호스트 정보를 기준으로 함, allow의 우선 순위가 더 높음
  • 설정의 오류 확인을 위해 /usr/sfw/sbin/tcpdchk를 실행
hosts.allow hosts.deny  설명
ALL: 192.168.1.1 ALL:ALL 192.168.1.1 IP 주소는 모든 서비스가 이용 가능
in.telnetd: 192.168.1.0/255.255.255.0
in.ftpd: 192.168.1., 
ALL:ALL 192.168.1.0/24 주소는 telnet과 ftp 서비스 이용 가능
in.telnetd: .aaa.co.kr ALL:ALL aaa.co.kr 도메인에 속한 모든 호스트는 telnet 서비스 이용 가능
ALL: LOCAL ALL:ALL 같은 네트워크에 있는 모든 호스트는 모든 서비스 이용 가능
ALL EXCEPT in.telnetd: ALL ALL:ALL 모든 호스트는 telent 서비스 제외하고 모든 서비스 이용 가능
in.telnetd : 192.168.1. EXCEPT 192.168.1.5 ALL:ALL 192.168.1.5 IP를 제외한 192.168.1.0/24 주소는 telnet 이용 가능

 

12. PAM(Pluggable Authentication Modules, 장착형 인증 모듈)

  • 사용자 인증의 핵심이며, 각 응용 프로그램에 대한 사용자 권한, 접근 자원 등을 선택할 수 있는 라이브러리
  • 시스템 관리자는 다양한 인증 서비스를 선택할 수 있고, 기존 응용 프로그램을 수정할 필요 없이 새로운 인증 서비스 모듈 추가
  • /etc/pam.d 에서 설정
  • auth required lib/security/pam_securetty.so →root 계정 로그인 가능 장치를 제한 (예)
  • 인증 절차
    • 각 프로그램(login, telnet, ftp) 등 인증이 필요한 부분에 PAM 라이브러리 호출
    • PAM 라이브러리가 호출되면 해당 프로그램의 PAM 설정 파일을 참조하여 모듈 수행 및 응용 프로그램에 반환
    • 응용 프로그램은 그 반환된 결과로 인증여부 결정

 

13. UNIX/LINUX 서버 취약점 분석 및 평가

  • root 계정 원격 접속 제한(가상 터미널 root 로그인 허가 확인)
    • cat /etc/pam.d → auth required lib/security/pam_securetty.so
    • cat /etc/securetty → pts/0 ~ pts/x
  • root 이외의 UID '0' 금지
    • 침입자에 의한 무차별 대입 공격 및 패스워드 추측 공격 발생 시 암호 입력 실패 횟수를 적정
    • cat /etc/shadow→ 여부 확인
  • 계정 잠금 임계값 설정
    • 침입자에 의한 무차별 대입 공격 및 패스워드 추측 공격 발생 시 암호 입력 실패 횟수를 적정
    • cat /etc/pam.d/system-auth →auth required /lib/security/pam_tally.so deny=5
  • 패스워드 파일 보호
    • 패스워드 파일을 평문으로 저장하면 정보 유출 피해 발생할 수 있으므로 암호화하여 저장
    • cat /etc/shadow→ 여부 확인
    • cat /etc/passwd→ 두번째 필드가 "x" 인지 확인
  • 패스워드 최소 길이, 최대 및 최소 사용기간 설정
    • cat /etc/login.defs→ 사용자 계정의 설정과 관련된 기본 값을 정의한 파일
  • $HOME/.rhosts, hosts.equiv 시용 금지
    • 'r'command (인증 없이 관리자의 원격접속을 가능하게 하는 명령어들로, rsh, rlogin, rexec 등이 있음) 사용 자제
    • 사용이 불가피할 때는 $HOME/.rhosts 및 /etc/hosts.equiv 에서 소유자를 root 및 해당 계정으로 변경
    • 파일 권한도 600 이하로 변경하고 '+'를 제거
    • ls -al $HOME/.rhosts→ rw-------
    • ls -al /etc/hosts.equiv→ rw-------

       
반응형

'IT Dictionary > 정보보안산업기사' 카테고리의 다른 글

악성 소프트웨어 및 보안 위협 공격 종류  (1) 2025.12.25
윈도우 및 리눅스 로그 관리  (0) 2025.12.23
윈도우 서버 보안(Windows Server Security)  (0) 2025.12.14
보안 운영체제(Secure OS)  (0) 2025.12.04
접근통제 보안위협 및 대응책  (0) 2025.12.02
'IT Dictionary/정보보안산업기사' 카테고리의 다른 글
  • 악성 소프트웨어 및 보안 위협 공격 종류
  • 윈도우 및 리눅스 로그 관리
  • 윈도우 서버 보안(Windows Server Security)
  • 보안 운영체제(Secure OS)
MutJangE
MutJangE
즐거운 인생
  • MutJangE
    MutJangE
    MutJangE
  • 전체
    오늘
    어제
    • 분류 전체보기 (87)
      • IT Dictionary (59)
        • Hardware (3)
        • Software (9)
        • Data Structure (0)
        • Algorithm (1)
        • Database (7)
        • Network (10)
        • Linux (1)
        • Tool's Guide (1)
        • 정보보안산업기사 (24)
        • CTF & 보안 (3)
      • 일상 (9)
        • 배포중인 웹 서비스 (0)
        • CERT병 (7)
        • 토익 (0)
      • 프로그래밍 (19)
        • Java (1)
        • C# (6)
        • Unity (7)
        • React (4)
        • React native (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.5
    MutJangE
    유닉스 서버 보안(Unix Server Security)
    상단으로

    티스토리툴바