정보보호관리체계(ISMS-P)/실무 Q&A

ISMS-P 인증심사원 - 유닉스/리눅스 보안(2)

자격증 홀릭 2022. 6. 10. 11:55
728x90
반응형

유닉스 시스템 불필요한 서비스 제거

o 시스템 운영에서 불필요한 서비스 제거를 위하여 다음 절차를 수행한다.

o “#netstat -an”을 통하여 현재 사용, 준비하고 있는 서비스 포트를 확인한다.

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 210.205.14.100:80 0.0.0.0:* LISTEN
tcp 0 0 210.205.14.100:8080 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN

 

- 명령어의 실행 결과에서 LISTEN으로 응답하는 포트는 외부사용자가 접속할 수 있는 경로를 제공하는 서비스 포트로서, 현재 사용 중임을 의미한다. 따라서 반드시 사용 유무를 확인하여 제거해야 한다.

 

o “#netstat -an”의 처리 결과 LISTEN 상태인 서비스 포트의 내용을 /etc/services 파일의 내용과 비교하여 서비스 포트의 내용을 참조한다. 그리고 /etc/inetd.conf 파일에서 해당 서비스 항목의 첫 라인에 주석 처리한다. (#을 해당 라인에 삽입)

 

[stkim@insert stkim]$ more /etc/inetd.conf

# Version: @(#)/etc/inetd.conf 3.10 05/27/93

#

# Echo, discard, daytime, and chargen are used primarily for testing.

#echo stream tcp nowait root internal

#echo dgram udp wait root internal

#discard stream tcp nowait root internal

#discard dgram udp wait root internal

#daytime stream tcp nowait root internal

#daytime dgram udp wait root internal

#chargen stream tcp nowait root internal

#chargen dgram udp wait root internal

#time stream tcp nowait root internal

# These are standard services.

 

# 첫 라인에 #이 삽입되면 주석으로 인식되어 해당 서비스 포트의 사용을 제거함.

 

ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd

telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd

# Shell, login, exec, comsat and talk are BSD protocols.

#shell stream tcp nowait root /usr/sbin/tcpd in.rshd

#login stream tcp nowait root /usr/sbin/tcpd in.rlogind

#exec stream tcp nowait root /usr/sbin/tcpd in.rexecd

#comsat dgram udp wait root /usr/sbin/tcpd in.comsat

 

o “ps –ef | grep inetd”의 명령어를 사용하여 현재 사용 중인 서비스 포트들을 총괄적으로 관리하는 인터넷 슈퍼 데몬의 프로세스 ID를 확인한다.

           [stkim@insert stkim]$ ps –ef | grep inetd

           root 318 1 0 14:01 ? 00:00:00 inetd

 

o “kill –HUP 318(inetd’s Process ID)” 인터넷 슈퍼 데몬을 재수행하여 /etc/inetd.conf 파일에서 사용을 금지하도록 설정한 서비스 포트의 상태를 재인식하도록 명령한다.

 

o 유닉스 시스템 프로세스 관련 명령어

- ps –ef : 프로세스 확인 명령

- kill PID, killall PID : 프로세스 정지 명령

- kill -15 PID : default signal 제거

- kill -9 PID : 프로세스 강제 제거

- pgrep –lf sendmail : 프로세스 실행 확인 명령

- pkill sendmail : 프로세스 정지 명령

 

o 유닉스에서의 시스템 파일 설정

- mount 테이블을 이용한 파일 시스템 관리 - /etc/fstab 파일 보기

 

o X 윈도우 사용을 위한 환경 설정 및 관리 기법

- X 윈도우를 설정하기 위해서는 비디오 그래픽카드와 모니터를 정확하게 알고 설정

- X 윈도우를 초기화면으로 부팅하기 위해서는 실행 레벨값을 확인하고 지정

- X 윈도우는 클라이언트가 X서버에 접속하여 윈도우를 띄우는 서비스를 제공하므로 공격자에게 이용당할 수 있으므로 ‘xhost -‘명령어를 이용하여 서비스를 중지한다.

 

o 유닉스 배치 작업(at, cron)

① at 설정

#at 1045                      10 15분에 특정한 job(shell_script_file)을 수행하도록 처리한다.

#/var/spool/cron/crontabs 파일을 수정하여 주기적으로 job을 수행하도록 한다.

※ 명령어는 full path을 지정해야 한다.

② cron 설정

- crontab 파일 구문(syntax) “minute hour day_of_month month weekday command" 이다.

o crontab 파일 구문- minute() : 0 ~ 59 - hour() : 0 ~ 23 - day_of_month () : 1 ~ 31

- month() : 1 ~ 12 - weekday(요일) : 일요일부터 토요일까지를 나타내는 0 ~ 6

- command(명령) : 실행 명령

-  “0 0 * * 0 /bin/myjob.sh” 은 매월 일요일 0 0분에 /bin/myjob.sh 명령어를 실행하라.

 

배치작업 설정 파일
파일명 설명
/usr/etc/cron/crontab 배치 프로그램의 주기적 자동 수행과 관련된 내용이 기록되어 있다.
/usr/etc/at/at 배치 프로그램의 일회 수행과 관련된 내용이 기록되어 있다.

 

o 파일시스템 이해

파일 시스템 구조
구분 내용
부트 블록
(Boot Block)
파일 시스템으로부터 유닉스 커널을 적재시키기 위한 프로그램 포함
슈퍼 블록
(Super Block)
디스크의 크기와 같은 파일시스템에 관한 일반적인 정보 저장 부분
이곳의 정확한 정보는 파일시스템 전반에 큰 영향을 미친다.
파일 시스템마다 하나씩 존재
슈퍼 블록의 자료 구조
  파일 시스템의 크기
  파일 시스템에 있는 블록의 수와 이용 가능한 빈 블록 목록
  빈 블록 목록에서 그 다음의 빈 블록을 가리키는 인덱스
  inode 목록의 크기
  파일 시스템에 있는 빈 inode의 수와 목록
   inode 목록에서 그 다음의 빈 inode를 가리키는 인덱스
  빈 블록과 빈 inode 목록들에 대한 lock필드들
  슈퍼 블록이 수정되었는지 나타내는 플래그(flag)
  파일 시스템 이름과 파일 시스템 디스크의 이름
아이노드 (inode) 파일이나 디렉터리에 대한 모든 정보를 가지고 있는 구조체
파일 이름을 제외한 파일에 관한 모든 정보를 저장하는 곳이다. 파일 이름은 inode 영역의 파일번호와 함께 디렉토리 영역에 저장된다
데이터 블록
(Data Block)
실제 데이터가 파일의 형태로 저장되어 있음

 

구분 설명
EXT(1) □ 리눅스 운영체제를 목표로 만들어진 첫번재 파일 시스템
 Extended File System을 줄여 EXTFS 또는 EXT라 함
EXT2 □ 뛰어난 효율과 속도 안정성을 가진 리눅스 파일 시스템
 FSCK(File System Check) 기능을 이용한 복구
- EXT의 상위버전으로 리눅스를 위한 확장성 있고 강력한 파일 시스템으로 가장 성공적인 파일 시스템일 뿐만 아니라 현재 배포되고 있는 모든 리눅스 배포판의 기반을 이루고 있다.
- 다른 파일 시스템과 마찬가지로 EXT2 파일 시스템은 파일에 들어있는 데이터의 데이터 블럭에 저장되며 모든 데이터 블럭의 크기는 같고 EXT2 파일 시스템의 블럭크기는(mke2fs 명령을 통해) 파일 시스템이 만들어 질 때 결정된다.
EXT3  EXT2를 기반으로 데이터의 신뢰성을 강화한 파일 시스템
□ 저널링(Journaling) 기술은 로그를 이용하여 FSCK보다 빠르고 안전한 복구
- EXT2 FSCK(File System Check)라는 파일시스템 복구 기능을 제공하지만 시간이 만이 소요되고 시스템의 크기가 크다면 복구하는데 오랜 시간이 걸릴 뿐만 아니라 복구하는 동안 시스템을 사용하지 못하는 등의 문제점이 있는데 이를 보완하기 위한 EXT3파일 시스템은 저널링(Journaling)이라는 기능을 추가 해서 소개된 파일 시스템이다.

 

로그 설정과 관리

 

(1) 시스템 로그(syslog) - 운영체제 제어 하에 시스템 관련 중요 이벤트에 대한 로그

- syslog, klog : 유닉스 시스템에 대한 로그 설정 및 로그 디렉토리, 로그보기 방법

- 윈도우즈 이벤트 로그 : 윈도우즈에서는 시스템, 애플리케이션, 보안로그가 기본적으로 설정되어 남게되는데 보안로그는 디폴트로 설정이 되어있지 않게 때문에 설정이 필요하다.

 

(2) 응용프로그램 로그

o 데이터베이스 로그 - My-SQL, MS-SQL, Oracle 로그 설정 및 관리

o 웹서버 로그 - IIS, Apache 로그 설정 및 관리

o 메일서버 - Sendmail, SMTP 메일서버 관리

o 접근통제로그 - TCP-wrapper 로그

o 기타

 

(3) 유닉스 시스템 로그 관리 - syslog 로깅 주체(facility) - syslog 로깅 주체(facility)는 로그 정보를 요청한 프로그램 종류로 구분되며, syslog 로깅 주체별 로그 대상은 다음과 같다.

 
구분 설명
kern kernel에서 요청한 경우
mail mail subsystem에서 요청한 경우
lpr printing subsystem에서 요청한 경우
daemon system server processes에서 요청한 경우
auth login authentication system에서 요청한 경우

 

o syslog 레벨 - syslog 레벨(level)은 심각성(severity) 레벨을 의미하는데 심각성 레벨은 심각도에 따라 emerg > alert > crit > err > warn > notice > info > debug 순이다.

 

유닉스 syslog 레벨
구분 설명
emerg 시스템이 “panic”을 일으킬 정도로 심각(emergency)한 상황에 대한 메시지로 모든 사용자에게 경보해야 되는 심각한 메시지
alert 즉시 주의를 요하는 심각한 에러가 발생한 경우로 변조된 시스템 데이터베이스 등과 같이 곧바로 정정해야만 하는 상태의 메시지
crit 하드웨어 같은 디바이스 쪽에서 critical한 에러가 발생한 경우
err 시스템에서 발생하는 일상적인 에러 메시지
warn 경고(Warning)
notice 에러는 아니지만 특수한 방법으로 다루어져야만 하는 메시지
info 유용한 정보를 담고 있는 메시지
debug 문제 해결(debug)을 할 때 도움이 될 만한 외부 정보들을 표시하는 메시지
none facility에서 무시하는 정보
mark 몇 분마다 메시지들을 생성할 것인지를 결정(디폴트값은 20)

 

o syslog 설정 구문(/etc/syslog.conf) - 주의할 점은 mark를 제외한 나머지 레벨은 *.alert , *.debug 등과 같이 facility를 와일드카드(wild card, *)를 사용하여 나타낼 수 있지만, mark의 경우에는 와일드카드를 사용할 수 없다는 것이다.

 
설정 구문 설명
*.err /dev/console 모든 facility에서 발생한 err메시지들은 /dev/console에 뿌려준다.
*.err; daemon,auth.notice;mail.crit
/var/adm/messages
모든 facility에서 발생한 에러 메시지, daemon auth facility에서 발생한 notice 메시지, mail facility에서 발생한 crit 메시지는 /var/adm/messages에 저장한다.
lpr.debug /var/adm/lpd-errs lpr facility에서 발생한 debug 메시지들은 /var/adm/lpd-errs에 저장한다.
mail.debug
/var/spool/mqueue/syslog
mail facility에서 발생한 debug 메시지들은 /var/spool/mqueue/syslog 파일에 저장한다.
*.alert root 모든 facility에서 발생한 alert 메시지들은 root에게 메일로 전송한다.
*.emerg root, sysadmins, operators 모든 facility에서 발생한 emerg 메시지들은 root, sysadmins, operators에게 메일로 전송한다.
auth.info;*.warn @hamlet auth facility에서 발생한 info 메시지들과 모든 facility에서 발생한 warn 메시지들은 hamlet이란 호스트에 로그를 남긴다.
*.debug /dev/tty01 모든 facility에서 발생한 debug 메시지들은 /dev/tty01에 뿌려준다.
 
유닉스 시스템 중요 로그 파일
로그 파일 명 설명
acct / pacct 사용자 별로 실행되는 모든 명령어를 기록
사용자가 로그인한 후부터 로그아웃할 때까지 입력한 명령과 시간, 작동된 tty 등에 대한 정보를 수집. lastcomm 명령어를 이용하여 분석
.history 사용자 별 명령어를 기록하는 파일로 csh, tcsh, ksh, bash 등 사용자들이 사용하는 쉘에 따라 .history, .bash_history 파일 등으로 기록
사용자별로 실행한 명령을 기록하는 로그. bash, sh, tcsh, csh 등 사용자들이 사용하는 쉘에 따라서 각각 .bash_history, .sh_history, .history 등의 파일로 기록을 남기며, 명령어뿐만 아니라 파일위치 및 파일명까지 기록. vi 편집기, history 명령어로 로그분석
lastlog 각 사용자의 최종 로그인 정보
서버에 접속한 사용자의 IP 별로 가장 최근에 로그인 한 시간이 기록. lastlog 명령어
logging 실패한 로그인 시도를 기록
messages 부트 메시지 등 시스템의 콘설에서 출력된 결과를 기록하고 syslog에 의해 생성된 메시지도 기록
syslog 계열의 로그로써 콘솔 상의 화면에 출력되는 메시지들을 저장하고 시스템의 장애에 대한 기록뿐만 아니라 보안측면에서 취약점에 의한 공격 흔적을 기록으로 남기게 된다. vi 명령어로 로그분석
sulog su 명령어를 사용한 결과를 저장하는 로그. vi 에디터 활용
일반 사용자가 su 명령어의 사용을 통해 사용자의 권한을 변경하였을 경우, 명령 사용 내역을 기록 root로 전환한 기록을 관찰해야 함
syslog 운영체제 및 응용프로그램의 주요 동작내역
syslog 데몬에서 일괄적인 방법으로 생성된 로그들에는 authlog, messages, syslog, secure  /var/log 디렉토리에 대한 로그가 있다.
utmp 현재 로그인한 각 사용자의 기록
시스템에 현재 로그인한 사용자들에 대한 상태 정보 수집. 상태정보는 사용자이름, 터미널 장치이름, 원격 로그인시 원격 호스트 이름, 사용자가 로그인한 시간 등을 기록. who, w, whodo, users, finger 등의 명령어
wtmp 사용자 로그인/로그아웃 시간과 시스템 시작/ 종료 시간 등 기록
사용자들의 로그인 및 로그아웃한 정보 정보를 가지고 있으며, utmp와 같은 데이터 스트럭쳐를 사용. 텔넷을 통한 로그인뿐만 아니라, FTP를 통한 로그인 등 실질적으로 로그인 프로세스를 거친 정보 및 라부트와 같이 시스템과 관련된 정보 취득. last 명령어를 사용하여 정보를 확인할 수 있다.
btmp 5번 이상 로그인 실패를 했을 경우에 로그인 실패 정보를 기록. lastb 명령어
Xferlog FTP 서비스의 접근 기록
secure 보안과 관련된 주요한 로그를 남기는 파일로 사용자 인증에 관련된 로그를 기록한다. vi 에디터
728x90