정보처리기사/정보 시스템 구축 관리
시스템 보안 구축 3
RangA
2023. 6. 2. 03:23
02. 시스템 보안
01. 시스템 보안
1) 시스템 보안의 개념
- 시스템 보안의 정의
- 시스템 구성 요소들 및 자원들의 기밀성, 무결성, 가용성을 보장하기 위해 취해지는 활동
- 외부 피해와 내부 피해로부터 조직이 보유한 컴퓨터 시스템, 기록 및 정보 자원들을 보호하는 활동
- 시스템 보안 범위
- 시스템 보안은 주로 계정과 패스워드 관리, 세션 관리, 접근 제어, 권한 관리, 로그 관리 및 취약점 관리 등이 포함됨
2) 시스템 보안 절차
- 시스템 보안 절차의 목적 정의
- 시스템 보안 절차서는 시스템의 도입, 설치, 운영, 폐기 등 시스템의 안전한 관리를 위해 준수하여야 할 업무 절차를 정의함
- 시스템의 불법 사용을 금지하고, 정보 자산을 보호하는 데 목적이 있음
- 적용 범위 결정
- 회사의 주요 시스템 및 이를 관리, 운영하는 담당자들을 대상으로 함
- 정하지 않은 사항은 별도 정보보안팀에서 정한 절차에 따름
- 역할과 책임 분배
- 정보보안 책임자는 시스템의 안전한 관리 및 운영을 위한 보안 정책 수립 및 시행을 총괄함
- 정보보안 관리자는 시스템의 안전한 관리 및 운영을 위한 보안 정책 구축 및 이행을 관리함
- 시스템 관리자는 시스템 운영팀장으로 하고, 시스템 운영과 장애 처리 내용의 기록을 관리 감독하며, 시스템의 설치 및 운영 등에 대해 검토 및 승인함
- 시스템 담당자는 시스템 운영팀원으로 하며, 시스템 운영 및 장애 처리를 본 절차에 따라 관리하며, 시스템의 효율적 관리를 위해 필요한 자원의 지원을 요청함
- 업무 개시
- 시스템 설치 시 정보보안팀에 의뢰하여 보안 설정 등을 검사 후 서비스를 개시함
- 시스템을 설치한 후, 시스템 담당자는 접근 제어 정책을 구성하여 일반 사용자가 시스템에 접근할 수 없도록 보안 설정을 적용함
- 중요 시스템에는 비인가된 서버 접근이나 정보 유출 등을 방지하기 위해 침입 탐지 시스템을 갖추어야 함
- 침입 탐지 시스템의 운영은 보안 시스템 정보보안 절차서에 따음
02. 시스템 보안 범위
1) 계정(Account)
- Default 계정 사용 제한
- 서버에 존재하는 Default 계정의 사용을 제한함
- 공용 계정 사용 제한
- 접속 시 사용하는 계정은 공용 계정의 사용을 금지하고 1인 1계정을 사용함
- 사용자 현행화
- 서버 접속 사용자 계정 정보를 최소 1일 1회로 현행화함
- 예를 들어 주기적인 인사 시스템과 연동하여 현재의 인사 정보를 얻으며, 인사 정보 현행화 주기를 설정함
- 권한 변경 프로세스를 통해 권한 획득, 수정, 해제를 함
- 개발자 계정 삭제
- 실제 운영 서버에서는 개발자는 개발용으로 사용했던 계정을 삭제함
- 서버의 접근 권한 변경 및 접근 권한 삭제 프로세스화
- 퇴직 및 직무 변동 시 인사 부서와 관련 부서 간 업무 프로세스를 통하여 시스템의 접근 권한 변경 및 접근 권한 삭제를 수행함
2) 패스워드(Password)
- 패스워드 보안
- 허가 없이 데이터베이스나 파일에 접속하는 것을 방지하기 위한 안전 대책
- 패스워드는 사용자가 컴퓨터 시스템 또는 통신망에 접속할 때 사용자 ID와 함께 입력하여 정당한 사용자라는 것을 식별할 수 있도록 주 컴퓨터에 전달해야 하는 고유의 문자열
- 온라인 데이터베이스나 PC 통신 등 온라인 정보 서비스는 패스워드가 없으면 이용할 수 없음
- 서비스 제공자의 주 컴퓨터는 입력된 사용자 ID와 패스워드를 등록된 것과 대조하여 일치해야 접속을 허용함
- 패스워드가 노출 및 위조, 변조되지 않도록 암호화함
- 계정과 패스워드의 보안 요구사항
- 원하는 시스템을 사용하기 위해서는 필요한 계정을 생성해야 함
- 필요한 계정에 대해서는 시스템 관리자 및 직책자의 검토 및 승인이 필요함
- 계정은 필요한 사람에게만 발급 되어야 하며, 만약 퇴사 및 휴직 시에는 계정을 삭제하거나 중지해야 함
- 패스워드는 주기적으로 변경해야 함
- 패스워드는 타인의 도용을 방지하기 위해 충분한 길이와 복잡성을 갖추어야 함
- 패스워드 생성 규칙 적용
- NULL 패스워드 사용을 금지함
- 사용자 계정과 동일한 패스워드 사용을 금지함
- 자판 배열 순서 단어 사용을 금지함
- 직전 패스워드 사용을 금지함
- 일반 사전 단어 사용을 금지함
- 연속 숫자 4자리 이상 사용을 금지함
- 개인 신상 및 부서 관련 전화번호 사용을 금지함
- 동일 숫자 및 문자 반복 사용을 금지함
- 패스워드를 영대문자, 영소문자, 숫자, 특수문자 중 2종류로 생성한 경우 최소 10자리 이상으로 부여함
- 패스워드를 영대문자, 영소문자, 숫자, 특수문자 중 3종류로 생성한 경우 최소 8자리 이상으로 부여함
- 자릿수 부여 패스워드는 생년월일, 주민등록번호, 전화번호를 포함하지 않고 유추할 수 없도록 생성함
- 최초/재발급 계정 생성 시 패스워드를 변경함
- 접속 시 일정 횟수 이상 패스워드 실패 시 강제 잠금 기능을 활성화함
- 2개의 패스워드를 교대로 사용하지 않음
- 접속 패스워드의 최소 분기를 1회 이상 갱신함
- 불안전한 패스워드
- 패스워드 문자열의 길이가 7자리 이하인 경우
- 알파벳 대문자, 소문자, 특수문자, 숫자 중에 2종류 이하의 문자로 구성된 경우
- 특정 패턴을 갖는 경우
- 개인 이름, 생일, 주소, 전화번호 등의 사용자 관련 정보로 구성한 경우
- 사용하고 있는 ID와 같거나 유사한 경우
- 사전적인 단어로 구성된 경우
- 특정 인물의 이름이나 컴퓨터 용어, 사이트명, 도메인명의 단어로 구성된 경우
- 영문자 O를 숫차 0으로 사용하거나 영문자 I를 숫자 1로 사용하는 경우처럼 숫자와 영문자를 비슷한 문자로 치환하여 구성하는 경우
- 한글 발음을 영문으로 혹은 반대로 구성한 경우
- 영문자판 상태에서 한글로 입력하여 구성한 경우
- 패스워드 솔트(Salt)
- 패스워드를 암호화할 때는 패스워드가 주어지면 랜덤으로 생성되는 솔트 값이 추가되어 해시값을 형성하는 방식
- 여러 사용자에 의해 중복으로 사용된 패스워드가 서로 다르게 저장되도록 함
- 해시 연산 비용이 증가하여 오프라인 사전적 공격을 어렵게 함
- 패스워드에 대한 사전식 공격을 막기 위해 전통적으로 솔트가 사용되어 왔음
- 한 사용자가 동일한 패스워드를 두 개 이상의 시스템에 사용해도 그 사실을 알기 어렵게 함
- 솔트 값은 보안 강화를 위하여 암호화된 상태로 shadow 파일에 저장되어야 함
3) 세션(Session)
- 세션 보안
- 네트워크 환경에서 사용자 간 또는 컴퓨터 간의 대화를 위한 논리적 연결 혹은 컴퓨터의 프로세스들 사이에서 통신하기 위해 메시지를 교환하여 서로를 인식한 이후부터 통신을 마칠 때까지의 기간을 의미함
- 사용자와 시스템 또는 두 시스템 간의 활성화된 접속에 대한 관리로서, 일정 시간이 지나면 적절히 세션을 종료하고, 비인가자에 의한 세션 가로채기를 통제함
- 세션 관리의 보안 요구사항
- 세션에 대한 지속적인 인증을 해야 함
- PC의 윈도 화면에 대한 타임아웃 설정을 함
- 새로운 중요한 거래 시에는 지속적인 인증을 설정함
- 자리를 비우거나 일정 시간 동안 입력값이 없는 경우 로그아웃 혹은 세션을 종료함
4) 접근 제어(Access Control) 관리
- 접근 제어 관리
- 접근은 데이터를 얻는 것으로 데이터가 있는 곳을 알아내어 데이터를 가져오는 것
- 사용자가 컴퓨터 시스템이나 프로그램을 이용하기 위해 최초로 접속을 시도하는 것을 의미함
- 시스템이 연결된 다른 시스템으로부터 적절히 보호되고 꼭 필요한 사람에게만 필요한 서비스를 제공할 수 있도록 전체 시스템 차원에서 접근을 통제하는 것을 의미함
- 접근 제어 관리의 보안 요구사항
- 각 시스템에 대한 접근은 필요한 사람에게만 허용함
- 각 시스템의 접근에 대해서는 별도의 관리자를 임명하여 설정함
- 각 시스템에 대한 접근 통제는 접근 통제 목록을 작성하여 관리함
5) 로그인(Login)
- 로그인 관리
- 로그인과 로그아웃은 사용자가 접근 허가 증명을 얻기 위한 사용자 인증
- 개인이 컴퓨터 시스템에 접근하는 작업을 말함
- 로깅은 로그인 정보를 기록하는 행위
- 로그인 관리의 보안 요구사항
- 사용자가 시스템에 로그인하여 명령을 내리는 과정에서 시스템의 동작에 대해 인증(Authentication), 인가(Authorization), 계정(Accounting)에 대한 로그를 기록함
- 로그는 중앙 시스템에 혹은 분산하여 기록함
- 로깅 감사 요건
- 접근 권한 변경 기록 : 서버에 대한 접근 권한의 부여 및 변경과 말소 내역 기록 서버에 대한 접근 권한의 부여 및 변경과 말소 내역을 3년 이상 보관함
- 접속 기록 관리 : 사용자 ID, 성명, 접속일시, 접속 IP 및 접속 위치 정보, 접속하여 수행한 내역 등을 기록 6개월 이상 보관하고, 위조, 변조 방지를 위하여 정기적으로 별도의 저장 장치에 백업 보관함
- 서버 운영 기록 로깅 : 운영체제 접근, 원격 접속 툴 접근, 시스템 정지 및 복구, 소프트웨어 변경, 시스템 시간 변경, 기타 주요 전산 자원 사용 등을 자동으로 기록하고 관리 책임자에게 정기적으로 보고함
- 연속된 접속 시도에 대한 로깅 : 패스워드 입력 시 일정 횟수 이상의 에러가 발생 및 장애 이벤트 로그 발생 시 관련 로그를 로깅하며, 로그인/로그아웃 이벤트, 시스템 파일 접근 등과 같은 시스템 운영체제 레벨의 작업을 로깅하며, 로그 파일은 백업하고, 이상 행위 추적을 위하여 주기적으로 분석함
- 시간 동기화 : 책임 추적이 용이하도록 네트워크에 연결된 모든 장비와 시스템의 시간 동기화 내부 네트워크에 NTP 서버를 구축하여 시간을 동기화함
- 로그 파일(Log File)
- 컴퓨터 시스템의 모든 사용 내역을 기록하고 있는 파일
- 컴퓨터 시스템이 침입 되었을 때 로그 파일을 분석하여 침입 원인과 해커를 추적함
- 해커에 의해서 로그 파일 자체가 삭제되면 추적 자체가 불가능하게 되므로, 로그 파일이 삭제되지 않도록 하는 것이 매우 중요함
- 로그 파일의 종류
- maillog : E-메일의 송수신 시간, 호스트명, 사용자명, 메일의 크기 등이 기록
- utmp : 현재 사용자의 정보를 기록
- wtmp : 로그인, 리부팅한 정보를 기록
- btmp : 5번 이상 로그인 실패한 정보를 기록, 솔라리스에는 loginlog
- syslog : 운영체제와 응용 프로그램의 실행 내용을 기록, 리눅스에서는 secure
- su.log : 슈퍼 사용자가 사용한 명령어들을 기록
- void.log : 디스크, CD-ROM과 같은 외부 저장 매체 사용 시 에러 내용을 기록
- xferlog : FTP 관련 파일을 송수신한 정보가 기록
- aculog : 모뎀 관련 기록
- acct : 사용자가 실행한 응용 프로그램 관리 기록
- message : 각종 시스템 및 리부팅 시 메시지 정보를 기록
- lastlog : 사용자가 마지막으로 로그인한 정보를 기록
- boot.log : 컴퓨터 시스템이 시작되면서 실행된 데몬들의 상태 정보가 기록
- dmesg : 컴퓨터 시스템이 시작되면서 모니터에 출력되는 메시지가 기록
- cron : 정해진 시간에 맞춰 실행되는 프로그램의 정보가 기록
- http_log : 웹에 관한 로그 기록
- loginlog : 실패한 로그인 시도 내역
- .bash_history : 사용자 디렉터리에 각자가 실행한 명령어들의 정보가 기록
- pacct : 시스템에 로그인한 모든 사용자가 수행한 프로그램 정보
- 로그 설정 파일
- 로그 정보를 설정할 수 있는 파일은 "/etc/syslog.conf"
facility.priority logfile-location
# 주석
# facility - 서비스 이름(메시지의 종류)
# priority - 메시지의 우선순위
# logfile-location - 로그 파일 경로와 로그 파일명
- facility(서비스 이름, 메시지 종류)
- auth : 보안 및 인증 관련 메시지로 패스워드 변경, 세션 연결 정보에 관한 내용
- authpriv : 개인별 보안 및 인증 관련 메시지로 인증 성공, 실패, 계정 정보 변경 내용
- cron : 클론 데몬(정해진 시간에만 실행되는 프로그램)에 의해 발생되는 메시지
- daemon : 데몬에 의한(항상 실행 중인 프로그램) 메시지
- lpr : 프린트 데몬의 메시지
- kern : 커널과 관련된 메시지
- mail : E-메일에 의해 발생하는 메시지
- news : 유즈넷이나 뉴스 시스템에 의한 메시지
- uucp : 유닉스와 유닉스 시스템 사이에서 발생하는 통신 메시지
- local 0~7 : 로컬 시스템을 위하여 비어있는 영역으로 추가적으로 사용
- user : 일반 사용자 레벨의 메시지, 생성된 프로세스 기록
- syslog : syslog 데몬의 메시지
- priority(메시지 우선순위)
- emerg : 매우 위급하고 치명적인 상황을 나타내는 메시지로 최상위 레벨
- alert : 즉각적인 조치를 위해야만 하는 메시지 레벨
- crit : 위급하지는 않지만 문제 상황을 알려야 하는 중요한 메시지 레벨
- err : 에러가 발생한 상황인 경우의 메시지 레벨
- warning : 중요한 경고성 메시지 레벨
- notice : 에러가 아닌, 알림 수준의 메시지 레벨
- info : 프로그램 관련 메시지 레벨
- debug : 프로그래머 요구에 의한 메시지 레벨
- priority(메시지의 우선순위)의 옵션
- none : 어떠한 레벨로 적용하지 않음
- : 모든 레벨을 적용함
- 레벨지정 : 레벨을 지정하면 상위 레벨을 포함함
- = : 해당 레벨만 적용함
- ! : 해당 레벨만 제외함
- ; : 복수 조건을 지정하는 것으로 And를 의미함
6. 취약점 관리의 보안 요구사항
- 취약점 관리는 취약점을 확인, 분류, 치료, 완화하는 주기적인 과정
- 시스템 민감성 또는 결함, 결함에 대한 접근, 결함에 대한 공격 가능성의 교집합을 의미
- 시스템의 취약점을 보완하기 위해 주기적으로 패치 혹은 서비스 팩을 설치함
- 주기적으로 시스템의 갱신을 실시함
- 시스템 관리 담당자는 주기적으로 시스템 공급자로부터 필요한 패치, 혹은 서비스 팩, 혹은 갱신을 확인하여 필요한 조치를 위해야 함