1. 서버관리자의 업무
로깅 정보 감시, 백업 수행, 정기적 테스트 등
시스템은 지속적으로 보안 유지 관리를 받아야 함
- 시스템관리자 계정
- root 계정으로 로그인
- root 계정으로 변경 (su)
- root로 직접 로그인하는 것은 막고, su를 통해 변경하는 것이 권장됨
- 사용자 계정 관리
- 리눅스는 멀티태스킹 목적의 다중 사용자를 수용할 수 있음
- /etc/passwd는 일반 사용자가 접근 가능하므로 비밀번호는 shadow에 암호문으로 저장됨
- 계정 사용을 제한해야 함
- 원격 접근 권한 제거: /etc/passwd에서 셸 삭제
- 계정 사용 기간 설정: /etc/shadow에서 사용기간이나 만료일 설정
- 자원 관리
- 프로세스 관리
- ps, kill, wait, su 등의 명령어가 있음
- nice: 프로세스의 우선순위 변경 가능
- 메모리 관리
- free: 메모리 사용 현황 확인 가능
- 메일, 디스크 등 관리
- quota: 디스크 사용량을 사용자별로 설정
- du: 디스크 사용량을 재귀적으로 보여줌
- 프로세스 관리
- 네트워크 관리
- ifconfig, netstat -an
- top: 시스템 자원 사용 현황
- nslookup: 도메인 관련 정보 확인 가능
- traceroute: 라우팅 경로 확인 가능
2. 로그 설정과 관리
2-1. 시스템 로그
A. 윈도우 로그 분석
- 이벤트라는 중앙 집중화된 로그를 수집해 저장, 다루기 쉽지만 보안 수준 역시 낮음
- 즉각적인 해커 확인
- net session: 현재 로그인된 사용자를 확인
- net session /delete: 세션을 끊을 수 있음
- 이벤트 로그 종류
- 응용 프로그램 로그: 개발자에 의해 결정된 다양한 이벤트 저장
- 보안 로그: 로그인 시도 및 파일, 리소스 사용 관련 이벤트 (LSA)
- 시스템 로그: 시스템 구성요소의 오류 기록
- %Windows%\system32\config 폴더에 .evt 확장자로 저장되어 있으며 이벤트 뷰어로 확인 가능
- 감사 정책
- 어떤 로그를 남길지 정의한 규칙
- 대부분 정보를 로깅하지 않는 게 기본으로 설정되어 있어, 적절한 로깅 설정이 필요함
B. 유닉스 / 리눅스 로그 분석
- 로그를 여러 곳에 산발적으로 저장, 다루기 어렵지만 공격자도 흔적을 지우기 어려움
- 로그 디렉터리
- 중앙 집중적으로 로그를 관리하는 syslogd 데몬이 있지만, 각 데몬이 별도로 남기는 경우가 많음
- 시스템마다 로그 저장 경로가 다름
- 로그 파일
utmp | 현재 시스템에 로그인한 사용자 상태 출력 w, who, users, whodo, finger 등 명령어로 출력 가능 |
wtmp | 로그인, 로그아웃, 시스템 재부팅 정보 last 명령어로 확인 가능 |
btmp (Linux) 또는 loginlog (Unix, SunOS) |
btmp: 실패한 모든 로그를 남김 |
loginlog: 5회 이상 실패 시 남김 | |
sulog | 권한 변경에 대해 기록 성공 시 +, 실패 시 -로 기록 |
acct/pacct | 사용자가 실행한 프로그램에 대한 정보를 저장 (요금 부과 가능) acctcom, lastcomm 명령어로 확인 가능 |
.sh_history 또는 .bash_history |
실행한 명령에 대한 기록이 각 계정 홈 디렉터리에 저장됨 history로 실행한 명령어를 순서대로 출력 가능 |
lastlog | 가장 최근에 성공한 로그인을 기록 lastlog, finger 명령으로 확인 가능 |
xferlog | protfpd, vsftpd 데몬들의 서비스 내역 기록 (FTP) |
dmesg | 부팅될 때 출력되는 모든 메시지를 기록 |
cron | 정기적인 작업에 대한 로그 |
messages | 시스템 운영의 전반적인 메시지를 기록 |
secure | 사용자의 원격 로그인 정보를 기록 |
- 로그 설정
- syslogd
- 운영체제에 의해 자동으로 시작되며, /etc/syslog.conf를 읽어 어떤 로그를 어디에 남길지 결정
- syslong.conf의 각 행은 facility, priority, action으로 구성
- 서비스 이름 (facility)
- auth(사용자 권한 사용 및 변경), console, cron, lpr(프린터 메시지), ntp(시간 동기화), uucp 등
- 메시지 우선순위 (priority, log level)
- Emergency(패닉), Alert(즉각 조치), Critical(치명적인 오류), Error(에러), Warning(경고), Notice, Information, debug 순으로 높음
- action
- 로그를 어디에 남길 것인지 결정 (로그 파일, 콘솔, 원격 서버, 사용자 화면 등 지정 가능)
- syslogd
- 로그 관리
- 로그 모니터링
- tail -f /var/log/messages로 실시간 모니터링 가능
- utmp, wtmp 등의 바이너리 형식 로그파일은 텍스트 편집기가 아닌 별도의 명령어로 확인해야 함
- 로그 순환
- logrotate는 로테이트, 압축, 메일 기능을 제공하는 로그파일 관리기
- 로그 모니터링
2-2. 응용 프로그램 로그
- IIS (Internet Information Services) 웹 서버 로그
- IIS 웹 서버의 로그는 기본적으로 W3C 형식을 사용
- 필드
- date, time, c-ip, s-ip cs-method 등
- cs-uri-stem: 요청 페이지
- cs-uri-query: 요청 파라미터, 대부분의 공격이 여기에 삽입됨
- Cs(Referer): 접속 전 어느 사이트를 거쳤는지에 대한 정보 (프라이버시 문제 존재)
- Apache 웹 서버 로그
- httpd.conf 파일에서 LogFormat 확인 가능
- 로그 포맷을 조합한 combined 설정도 가능
- 필드
- %s: HTTP 실행 결과 코드
- %{Referer}i: 참조되거나 링크된 URL
3. 공개 해킹도구
- 크래킹 SW
- 사용자의 ID, 패스워드를 찾는 도구
- 예시: John the Ripper, pwdump, L0phtCrack 등
- 키로그 SW
- 키보드 입력 정보를 로그로 남김
- 발전된 키로그 프로그램은 키보드 입력 뿐만 아니라 프로그램 사용, 인터넷 접속 정보도 남김
- 키보드 해킹방지 프로그램: 키보드 입력 자체를 보호
4. 서버 보안용 S/W 설치 및 운영
- 취약점 분석 도구
- SATAN: 해커에게 노출될 수 있는 약점을 찾는 네트워크 분석 도구
- SARA: SATAN 기반으로 개발됨
- SAINT: 네트워크 취약점 분석도구로 원격 점검 기능 존재
- COPS: 시스템 내부 취약점 점검
- Nessus: 클라이언트-서버 구조로 클라이언트 취약점을 점검, 플러그인 업데이트가 쉽고 결과 리포트 가능
- 무결성 점검 도구
- 정상 상태일 때의 파일 정보를 백업하고 있다가 변경된 사항을 점검함
- 트립와이어는 대표적인 도구로, 다양한 해시 함수를 지원하고 변조 여부를 판별
- 스캔 탐지
- mscan, sscan, porsentry 등이 대표적인 스캔 탐지 도구
- 침입 탐지 및 방화벽
- 네트워크 모니터링 및 침입탐지
- Snort: 실시간 트래픽 분석과 패킷 처리를 담당하는 IDS로 다양한 공격 감지 가능
- 방화벽
- TCP-Wrapper: 트래픽을 제어하고 모니터링 할 수 있는 방화벽 도구
- IPchain / IPtable: 패킷 필터링 방화벽
- 네트워크 모니터링 및 침입탐지