1. 시스템 보안의 이해
시스템
- 하드웨어뿐만 아니라 소프트웨어까지 매우 많은 것 포괄
- 시스템 관련 보안 주제는 훨씬 큰 범위의 보안, 조직, 국가 단위의 보안 요소를 다루는 일
2. 계정 관리
식별과 인증
- 식별 : 어떤 시스템에 로그인하려면 먼저 자산이 누군지를 알림
- 인증 : 로그인을 허용하기 위한 확인
- 보안의 네 가지 인증 방법
- 알고 있는 것
- 머리속에 기억하고 있는 정보를 이용하여 인증 수행
- 가지고 있는 것
- 신분증, OTP
- 자신의 모습
- 홍채와 같은 생체 정보 인증 수행
- 위치하는 곳
- 현재 접속을 시도하는 위치의 적절성을 확인하거나 콜백 사용해 인증 수행
- 알고 있는 것
운영체제의 계정 관리
- 운영체제 : 시스템을 구성하고 운영하기 위한 가장 기본적 소프트웨어
- 일반 사용자의 권한 계정도 시스템의 상당 부분에 대한 읽기 권한을 가짐
- 관리자 권한 뿐 아니라 일반 사용자 권한이 있는 계정도 적절하게 제한
-
- 윈도우의 계정 관리
- 관리자 계정 : administrator
- 확인하려면 net localgroup administrators 명령 사용
- 사용자 계정 모두 확인시 net users
- net localgroup
- 윈도우의 주요 그룹
- 윈도우의 계정 관리
- 유닉스의 계정 관리
- 기본 관리자 계정 root가 존재
- /etc/passwd 파일에서 계정 목록 확인, 그룹은 /etc/group 파일에서 확인
- 계정 확인
- 관리자는 사용자 번호 0 그룹번호 0
- 데이터베이스의 계정 관리
- MS-SQL의 관리자 계정은 sa, 오라클은 sys, system
- system은 DB 생성 X
- 응용 프로그램의 계정 관리
- TFTP처럼 인증 X 프로그램 주의 필요
- 네트워크 장비의 계정 관리
- 패스워드만 알면 접근 가능
- 사용자모드(상태확인), 관리자모드(설정변경)
- 계정 생성 후 각 계정으로 사용할 수 있는 명령어 집합 제한
3. 세션 관리
세션
- 사용자와 시스템 사이 또는 두 시스템 사이의 활성화된 접속
- 해님 달님 : 손의 모양새 이용
- 지속적인 인증
- 인증에 성공한 후 인증된 사용자가 맞는지 지속적으로 재인증을 거치는 작업
- 시스템은 이를 세션에 대한 타임아웃 설정으로 보완(화면 보호기)
- 유닉스는 원격 접속 시 세션을 종료한 후 재접속 요구
- 웹 서비스도 마찬가지
- 유지하는 이유 세션 하이재킹, 네트워크 패킷 스니핑 대응, 지속적인 인증
4. 접근 제어
접근 제어
- 적절한 권한을 가진 인가자 및 특정 시스템이나 정보에 접근하도록 통제
- 시스템의 보안 수준을 갖추기 위한 가장 기본적 수단
- IP와 서비스 포트
- 운영체제 접근 제어 수행시 어떤 관리적 인터페이스가 운영되는지 파악
- 운영체제의 접근 제어
- 불필요한 인터페이스 제거
- 사용할 인터페이스에 보안 정책을 적용할 수 있는지 확인
- 텔넷은 스니핑과 세션 하이재킹에 취약 사용 X
- 기본적으로 IP로 수행
- 가능하면 SSH, XDMCP 사용
- 운영체제에 대한 접근 목적의 인터페이스를 결정한 뒤 접근 제어 정책 적용
- 유닉스는 텔넷, TCPWrapper를 통해 접근 제어
- 시스템에 대한 접근 제어는 기본적으로 IP
- 사용할 인터페이스에 보안 정책을 적용할 수 있는지 확인
- 불필요한 인터페이스 제거
inetd 데몬
- 클라이언트로부터 inetd가 관리하는 텔넷이나 SSH, FTP 등에 대한 연결 요청을 받음
- 해당 데몬을 활성화하여 실제 서비스를 함으로써 데몬과 클라이언트의 요청을 연결
- TCPWrapper가 설치되면 inetd 데몬은 TCPWrapper의 tcpd 데몬에 연결을 넘겨줌
- tcpd 데몬은 접속을 요구한 클라이언트에 적절한 접근 권한이 있는지 확인, 해당 데몬에 연결을 넘겨줌
데이터베이스의 접근 제어
- 데이터 베이스
- 조직의 영업 및 운영 정보를 담고 있는 핵심 응용 프로그램
- 적절한 접근 제어는 필수, 모든 DB가 적절한 접근 제어 수단 제공 X
- 오라클은 $ORACLE_HOME/network/admin/sqlnet.ora 파일에서 접근 제어 설정
응용 프로그램의 접근 제어
- NGINX(오픈 소스 웹 서버 프로그램) 웹 사이트 설정 파일에서 접근 제어 수행
- 네트워크 장비의 접근 제어
- IP에 대한 접근 제어
- ACL을 통한 네트워크 트래픽 접근 제어아 있음
- 유닉스 접근 제어와 같음
5. 권한 관리
운영체제의 권한 관리
- 윈도우의 권한 관리
- NT 4.0 이후 버전부터 NTFS를 기본 파일 시스템으로 사용
- [등록정보] - [보안] 선택 시 권한 설정 화면
- 권한의 규칙
- 접근 권한이 누적, 허용보다 거부, 파일 접근 권한이 우선
유닉스의 권한 관리
- 파일과 디렉토리 권한 설정이 같음
- ls -al로 디렉토리 내용 확인
- etc 항목
데이터베이스의 권한 관리
- 질의문에 대한 권한 관리
- DDL
- CREATE, ALTER, DROP
- DML
- SELECT, INSERT, UPDATE, DELETE
- DCL
- GRANT, REVOKE, DENY
- DDL
- 뷰에 대한 권한 관리
- 생성된 뷰에 대한 권한 설정은 테이블과 같음
- 사용하지 않는 경우 테이블에 각각 접근 제한
6. 로그 관리
AAA 요소
- 시스템 사용자가 로그인한 후 명령을 내리는 과정에 대한 시스템 동작
- 로그를 남기는 모든 시스템에 존재
- 책임 추적성, 감사 추적
- Authentication(인증)
- 자신의 신원을 시스템에 증명하는 것으로 ID, Password 입력
- Authorization(인가)
- 신원이 확인되어 인증받은 사람이 출입문에 들어가도록 허락하는 과정
- Accounting
- 로그인했을 때 시스템이 이에 대한 기록을 남기는 활동
운영체제의 로그 관리
-
- 로깅 정책은 기본적으로 수행 X, 필요할 경우 수행하도록 설정윈도우의 로그
- [로컬 보안 정책] - [감사 정책]
- 로깅 정책은 기본적으로 수행 X, 필요할 경우 수행하도록 설정윈도우의 로그
- 유닉스의 로그
- /usr/adm: (초기 유닉스),데이터 베이스 객체에 권한 부여
- /var/adm: (최근 유닉스),솔라리스, HP-UX 10.x, IBM AIX
- /var/run : 일부 리눅스
- 일반적으로 /var/log 디렉토리에 로그 존재
- utmp
- 유닉스 시스템의 가장 기본적인 로그
- 바이너리 형태로 로그 저장
- wtmp
- utmp 데몬과 비슷하게 사용자 로그인, 로그아웃, 재부팅에 대한 정보 확인
- last로 내용 확인
- secure
- 일반 유닉스에서 su 로그는 /var/adm/sulog 파일에 텍스트 형식으로 남음
- history
- 명령 창에서 실행한 명령 기록 확인
- syslog
- 시스템 운영과 관련한 전반적인 로그
- /var/log/messages 파일에 로그 남김
- MS-SQL의 로그
- [보안] 메뉴에서 ‘일반 로그인 감사’와 ‘C2 감사 추적’을 설정할 수 있음
- General 로그의 경우, 현재 설정을 확인할 수 있음
show variables like 'general%'; # 설정 및 해제 set global general_log = ON; set global general_log = OFF;
- 오라클의 로그
- 오라클 파라미터 파일의 AUDIT_TRAIL 값을 ‘DB’ 또는 ‘TRUE’로 지정
- 오라클에서 남길 수 있는 데이터베이스 감사의 종류 : 문장 감사, 권한 감사, 객체 감사
- IIS 웹 서버의 로그
네트워크 장비의 로그 관리
- 네트워크 보안 시스템의 로그
- 다양한 보안 시스템의 로그는 통합 로그 관리 시스템(SIEM)에 의해 수집 관리
- 네트워크 관리 시스템의 로그
- MRTG(네트워크 트래픽 모니터링 시스템), NMS(네트워크 관리 시스템) 로그 참고
- 네트워크 장비 인증 시스템의 로그
- 라우터나 스위치 인증을 일원화하기 위해 TACACS+ 사용
7. 취약점 관리
패치 관리
- 윈도우 업데이트를 통해 자동으로 보안 패치 확인
응용 프로그램별 고유 위험 관리
- 응용 프로그램을 통해 운영체제의 파일이나 명령을 실행시킬 수 있는 것이 있음
- MS-SQL의 xp_cmdshell은 DB를 통해 운영체제 명령 실행
- 적절성 검토
응용 프로그램의 정보 수집 제한
- 운영체제에 직접적인 영향을 미치지 않아도 응용 프로그램의 특정 기능이 운영체제의 정보 노출
- 유닉스에서 이메일 보낼 때 수신자가 있는 시스템의 sendmail 데몬에 확인용으로 일반 계정 vrfy, 그룹은 expn명령을 사용
telnet 192.168.61.129 25 vrfy root vrfy wishfree vrfy abc
8. 모바일 보안
iOS의 보안 체계
- 보안에 대한 기본적인 통제권을 애플이 소유
- 완전한 통제를 위해 보안 모델을 두고 네 가지 시스템 보안 체계를 갖춤
- 커널 : 운영체제 핵심부분,다른 프로그램 수행에 서비스 제공
- 샌드 박스 : 일종의 가상머신, 원래 운영체제와 독립 실행
- 안전한 부팅 절차 확보
- 시스템 소프트웨어 개인화
- 애플 아이튠즈를 통해 배포(보안 문제)
- 고유한 코드 값으로 버전 관리
- 응용 프로그램에 대한 서명
- 애플은 iOS에 설치되는 모든 앱에 대해 코드 무결성 사인 등록
- 샌드박스 활용
- 애플은 사용자앱에 적용
- 사용자 앱은 앱 간 데이터 전송 X, 시스템 파일 접근 X
- 멀티태스킹 X
- 원격지 iOS 로그인 X
iOS의 취약점
- 외부 해커가 접근할 수 있는 방법 제한적
- 탈옥한 iOS 기기 이용, 패스워드 변경
- iOS에서 root의 패스워드가 alpine으로 설정
안드로이드의 보안 체계
- 안드로이드는 리눅스 커널을 기반으로 하는 모바일 운영체제
- 공개적인 프로그램 개발 추구
- 응용 프로그램의 권한 관리
- 일반 사용자 권한으로 실행
- 사용자의 데이터 접근시 사용자 동의를 받음
- 응용 프로그램의 서명
- 안드로이드는 개발자가 서명
- 샌드박스 활용
- 기본적으로 시스템과 다른 애플리케이션에 접근 통제
안드로이드의 취약점
- 각종 바이러스와 악성 코드 유포되며 그에 따른 백신 보급
- iOS에 비해 상대적으로 보안 취약
- iOS는 탈옥, 안드로이드는 루팅
모바일 기기 보안
- 블루투스
- 높은 수준의 암호화 인증 구현 X, 다양한 위험에 노출
- 블루프린팅
- 블루투스 공격 장치의 검색 활동 의미
- 각 블루투스 장치에는 6바이트의 고유 주소 존재(앞 3 제조사, 뒤 3 장치별 할당)
- 공격자는 서비스 발견 프로토콜(SDP)를 이용 블루투스 장치 검색 후 공격
- 블루스나프
- 블루투스의 취약점 이용하여 장비의 임의 파일에 접근 공격
- 블루버그
- 블루투스 장비 간의 취약한 연결 관리를 악용한 공격
- 공격 장치와 공격 대상 장치를 연결하여 공격 대상 장치에서 임의의 동작 실행