3. Unix/linux 서버 보안
(1) 시스템 보안
1) 사용자의 패스워드 관리
@ /etc/shadow 파일
=> root:$1$~~~~/:13115:0:99999:7:10::
root : 사용자 계정( 사용자 계정을 인덱스로 하여 /etc/passwd 파일과 사용자 정보를 서로 연계)
$1$~~~~ : 암호화된 패스워드(복호화가 불가능하며, 사용자가 입력한 패스워드를 암호화하여 비교)
13115 : 마지막으로 패스워드를 변경한 날(1970년 1월1일 부터 지난 날)
0 : 최소 변경 일수 (패스워드를 변경할 수 없는 기간의 일수를 지정)
99999 : 최대 변경 일수 (현재 사용 중인 패스워드를 변경하지 않고 사용할 수 있는 일수)
7 : 경고일수 (max 필드에 지정한 일수가 며칠 남지 않았음을 알리는 필드)
10 : 최대 비활성화 일수 (시스템에 고르인을 자주하지 않는 사용자의 경우 사용자 계정을 비활성화 시켜서 로그인이 되
지 않도록하는 기능)
사용자 계정이 만료되는날 (1970년1월1일 부터 며칠이 지났는지 그 일수로 표기
@/etc/passwd 두번쨰 필드
- 암호 영역부분에는 정상암호, NP, *LK*, 공백 등이 올 수 있다.
- NP : no password를 의미, 주로 애플리케이션을 사용하는 사용자들에 이 암호를 준다.
- *LK* : 록(lock)이 설정된 사용자, 일반 사용자를 만들고 정상 암호를 설정해주지 않으면 록이 걸린다.
- 공백 : 시스템 관리자가 암호를 설정해서 사용자에게 알려주는 방식이 아니라, 일반 사용자가 처음 로그인시 암호를 설
정한다.
2) 실행권한 (setuid, setgid)
- UNIX 시스템에서는 프로세스에 다섯 가지 번호를 부여한다. 프로세스 식별자(PID), 실제 사용자 ID(RUID), 유효사용자
ID(EUID), 실제 사용자 그룹 ID(RGID), 유효 사용자 그룹 ID(EGID)가 그것이다.
- setuid가 설정되어 있는 프로그램을 실행하는 경우, 이 프로세스가 갖는 권한은 프로그램을 실행한 사용자의 권한이
아닌 프로그램 소유주의 권한이 된다.
- 슈퍼유저 root만 접근할 수 있는 파일이나 명령에 대해, 일반 사용자로 접근하는 것이 기능상 필요하다면 setuid을 적
용하는 것이 시스템 운영면에서 효율적이다.
- 실행 파일에 설정된 setgid는 setuid와 기능이 유사하다. setgid가 설정된 명령 또는 프로그램은 실행중인 프로세스의
EGID를 소유주의 그룹 ID로 변경한다.
3) 디렉터리 접근권한 (sticky-bit)
- UNIX 시스템은 sticky-bit를 이용하여 디렉터리에 특별한 접근권한을 부여할 수 있따. 그래서 sticky-bit를 공유모두
하고 한다.
- sticky-bit가 설정된 디렉터리는 시스템에 있는 모든 사용자들이 파일이나 하위 디렉터리를 생성할 수 있지만 해당 디
렉터리를 지우는 것은 소유주나 root인 경우에만 가능해진다.
(2) 네트워크 보안
1) 슈퍼 서버 [inetd 데몬]
@ 개요
- Unix 시스템에는 다양한 종류의 서버 프로그램이 실행되고 있다. 이들 서버 프로그램은 개발자의 시각으로 보면 모두
비슷한 구조로 이루어졌다.
- inetd 데몬은 N개의 개별 서버를 하나로 통합하여 클라이언트로부터 서비스 요청이 올때 마다 해당 서비스에 관련된
실행 모듈을 샐행해준다.
- inetd 데몬은 최초 실행 시 /etc/inetd.conf 파일의 정보를 참조하여 서비스할 프로그램들에 대한 정보를 얻는다.
- 시스템에서 불필요한 서비스를 제한하기 위해 살펴봐야 할 것은 /etc/inetd.conf파일이다. 주석처리
- 서비스를 추가하거나 제거하여 파일을 변경했다면 다시 시작해야됨
- Xinetd는 inetd에서 보안과 리소스 관리 등을 향상 시킨것
@ inetd.conf 파일의 구조
- 파일의 구조
1. 서비스명-telnet
/etc/services 파일에 등록된 포트번호를 참조하여 서비스할 프로세스의 포트를 결정한다.
2. 소켓 타입 - 스트림 or 데이터그램
해당 서비스에 대한 소켓유형을 설정한다.
3. 프로토콜 - TCP, UDP
4. 플래그 - nowell 또는 wait
5. 사용할 사용자 계정 - root, nobody
6. 실행 경로명
7. 실행 인수
2) 접근 통제 (tcpwrapper)
=> tcpwrapper는 외부에서 들어오는 클라이언트에 대해 접근 통제 기능을 제공한다. 클라이언트의 ip주소를 확인하여 시
스템 관리자가 접근을 허용한 호스트들에 대해서만 서비스를 허용
=> 접근허용 및 금지에 대한 판단은 /etc/host.allow , /etc/host.deny 파일을 기분으로한다.
@ hosts.allow와 hosts.deny
-> 구문 형식 : service_list : client_list
@ shell_conmmand
-> 셸명령을 실행하는 방법으로는 twist 또는 spawn이 있다. twist는 명령의 결과를 클라이언트에게 전송하기 때문에
클라이언트에게 메시지를 보낼 떄 유용하고, swpawn은 명령의 결과를 클라이언트에게 전송하지 않는다.
(3) PAM (장창형 인증 모듈, Pluggable Authentication Modules)
- 리눅스는 로그인, telnet, ftp 등이 PAM을 통해서 인증을 처리한다.
- PAM은 리눅스 배포판에서 사용자 인증의 핵심이며, 각 응용 프로그램에 대한 인증형태, 사용자 권한, 접근 자원등을
선택할 수 있는 라이브러리이다.
- 시스템 관리자는 다양한 인증 서비스를 선택할 수 있고, 기존 응용 프로그램을 수정할 필요 없이 새로운 인증 서비스
모듈을 추가하여 사용할 수 있는 프로그램이다.
@ PAM 설정 파일
type control module-path module-arguments
1. type
- account : 사용자의 시스템 사용권한을 확인하는 모듈
- auth : 실질적인 인증기능, 패스워드 확인을 담당하는 모듈
- password : 패스워드를 설정하거나 확인하는데 사용하는 모듈
- session : 사용자가 인증 성공시 세션을 맺어주는 모듈
2. control
- requisite : 인증에 실패할 경우, 즉시 인정을 거부
- required : 인증에 실패하더라도 다음 라인의 모듈을 실행하지만 최종 결과는 인증 실패
- sufficient : 이전에 요청된 모듈이 실패하더라도 여기서 성공하면 PAM은 인증 승인
- option : 모듈의 성공, 실패 응답 상관안함(거의 사용안함)
3. module-path
- PAM에서 사용할 실제 모듈파일이 있는 경로이며 보통 아래와 같이 /lib/security이다. *.so 확장자가 모듈이고 각 모
듈별로 기능은 다양하다.
4. module-arguments
- 모듈에게 전달되는 인수
(4)시스템 로그 설정과 관리
=> 리눅스에서는 /var/log 디렉터리에서 시스템의 모든 로그를 기록 및 관리하고 있다.
시스템의 /etc/syslog.conf 파일에서 시스템 로그 파일들의 위치를 지정하고 있다.
=> 서버에는 여러개의 로그파일이 있으며 이들 로그를 남기는 데몬들 또한 다양하다.
시스템로그데몬(syslogd), 메일데몬(sendmail 등), 웹 데몬(httpd), 네임 데몬(named), 슈터데몬(xineted) 등 매우
다양하다.
1) 리눅스 로그 파일
(가) /var/log/dmesg 로그파일
1. 리눅스가 부팅될 때 출력되는 모든 메시지를 기록하고 있다.
2. 부팅 시의 에러나 조치사항
(나) /var/log/cron 로그 파일
1. 시스템의 정기적인 작업에 대한 로그
2. /etc/디렉터리에는 cron, hourly, cron.daily, cron.weekly, cron.monthly 디렉터리들이 있다.
(다) /var/log/messages 로그파일
1. 리눅스 시스템의 가장 기본적인 시스템 로그파일로서 시스템 운영에 대한 전반적인 메세지를 저장하고 있다.
2. 주로 시스템 데몬들의 실행상황과 내역, 그리고 사용자들의 접속정보 등의 로그기록내역을 기록하고있다.
(라) /var/log/secure 로그 파일
1. 주로 사용자들의 원격접속 즉, 원격로그인 정보를 기록하고 있는 로그파일로서 서버보안에 민감.
2. tcp_wrapper(xinetd)의 접속 제어에 관한 로그파일로서 언제, 누가, 어디에서, 어떻게 접속했는가에 대한 로그를 기
록하고 있다.
3. 주로 sshd 데몬과 su관련실행, 그리고 telnet 관련 원격 접속 실행 내용들이 기록되는 로그파일
(마) /var/log/xferlog
1. 리눅스 시스템의 ftp 로그파일, proftpd,vsftpd 데몬들의 서비스 내역을 기록
2. 즉 ftp로 로그인하는 사용자에 대한 로그 기록과 어떤 파일을 업로드/다운로드 하는기록
(바) /var/log/mailog
1. sendmail, qmail과 같은 메일 송수신 관련 내역, ipop, imap등과같은 내역
2. 메일 로그 파일이라고도 한다.
(사) /var/spool/mail 로그 파일
1. 사용자들에 대한 메일을 보관하고 있는 디렉터리로서 메일을 한번 이상 사용한 사용자는 사용자 계정 id와 동일한 파
일이 하나씩 존재한다.
2. 사용자 계정 생성시에 /var/spool/mail 디렉터리 내에 생성하는 계정명과 동일한 메일파일이 생성된다.
--------------------------------
기타 로그 분석
- /var/adm/wtmp : 사용자 로그인, 로그아웃, 정보 및 시스템의 shutdown, booting 정보를 가진 파일 , last 명령어로
확인
- /var/adm/utmp : 현재 로그인한 사용자의 정보를 담고 있는 db 파일
- /var/adm/btmp : 5번 이상 로그인 실패를 했을 경우에 로그인 실패기록
- /var/adm/lastlog : 각 사용자들의 최근 로그인 시각과 접근한 소스 호스트에 대한 정보를 가진 파일
3) 시스템 로그 설정 확인 /etc/syslog.conf
=>/etc/syslog.conf 파일은 시스템 로그 데몬 (syslogd)이 실행될 때 참조되는 로그 설정 파일로서 관련된 로그 파일들
이 어떤 경우에 어떤 파일에 남겨지는가에 대하여 정의하고있다.
=> 파일형식
facility.priority;facility.priority action(logfile-location)
@ facility
- auth : 로그인과 같이 사용자 인증에 관한 메시지
- authpriv : 보안 및 승인에 관한 메시지
- daemon : telnet, ftp 등과 같은 데몬에 의한 메시지
- news : innd 등과 같은 뉴스시스템에 의해 발생되는 메시지
@ priority
- debug : 최하위, 디버깅 관련 메시지
- info : 단순한 프로그램에 대한 정보 및 통계 관련 메시지
- notice : 에러가 아닌 알림에 관한 메시지
- warnig : 주의를 요하는 메시지
- crit : 급한 상황은 아니지만 치명적인 시스템 문제 발생 상황의 메시지
- alert : 즉각 조치를 취해야 하는 메시지
- emerg : 최상위, 매우 위험한 상황의 메시지, 전체 공지가 요구되는 메시지
- none : 어떠한 경우라도 메시지를 저장하지 않음
'IT 자격증 > 정보보안 기사' 카테고리의 다른 글
정보보안기사 실기_네트워크 기본학습 2 (0) | 2015.05.13 |
---|---|
정보보안기사 실기_네트워크 기본 학습_ OSI 7 Layer (0) | 2015.05.10 |
정보보안기사 _ Unix, Linux _ 2.시스템 관리 (0) | 2015.05.06 |
정보보안기사 실기 _ Unix 기본 사용법 (0) | 2015.05.04 |
정보보안기사 실기 포스팅 (0) | 2015.05.04 |