1. 인증과 접근 통제
(1) 계정과 패스워드 보호
▶ Linux Server
- 리눅스 Booting 순서
- ROM BIOS를 읽고 디스크의 MBR(Master Boot Record)에 있는 부트로더(Boot Loader)가 실행
- 부트로더(LILO or GRUB)는 보조 기억장치에 저장되어 있는 리눅스 커널 탐색 및 실핵
- 리눅스 커널은 하드웨어 확인 후 root의 읽기 전용으로 mount 수행
- 디스크 검사 후 root의 쓰기 전용으로 다시 mount 수행
- 리눅스 커널은 init 프로세스 실행, PID 1번 할당
- init 프로세스는 /etc/initab 파일을 읽어 디바이스 및 프로세스 활성화
- Linux Run Level
- 0 : PROM 감사단계
- 1 : 관리 상태의 단계, 암호 변경 시 사용
- 2 : 공유된 자원을 갖지 않은 다중 사용자 단계
- 3 : 공유된 자원을 가진 다중 사용자 단계, 텍스트 유저 모드 (기본실행 단계)
- 4 : 현재 사용되지 않음
- 5 : Run Level3으로 기동 후 그래픽 모드인 X-Windows 실행
- 6 : 재부팅 단계로 실행단계 3의 상태로 재부팅
- 계정 생성, 수정, 삭제 : useradd / usermod / userdel
- 계정과 패스워드에 관련된 파일
- /etc/passwd : 사용자 계정 정보
- /etc/shadow : 사용자 패스워드
- /etc/group : 그룹 ID / 목록
- /etc/gshadow : 그룹 정보
- /etc/login.defs : 사용자 전체에 자동 할당되는 UID, GID 범위, 패스워드 유효 기간, useradd 설정사항
- /etc/default/useradd : useradd 명령어로 계정 생성 시, 어떤 환경과 파일을 참조할 것인가에 대한 정보
- /etc/skel : 계정생성시 필요한 파일, 디렉토리를 저장하고 있는 디렉토리, 새 계정 생성 시 그대로 해당 계정은 홈 디렉토리로 복사
- /etc/passwd 구성
-
- [User Name] : [password] (x : 패스워드가 암호화되어 Shadow 파일에 저장) : [UID] : [GID] : [계정정보] : [홈디렉토리] : [쉘]
- root : x : 0 : 0 : root : /root : /bin/bash
- ※ Linux에서 사용자 계정 잠구는 법
- /etc/passwd에서 쉘 정보에다가 /bin/false 또는 /bin/nologin을 기술함
- passwd -l [계정명]
-
- /etc/shadow 구성
- root : $1$F9FBAJKWEBKF4A30AJWNFKE : 15551 : 0 : 99999 : 7 : : : :
- [User Name] : [암호화된 패스워드] : [패스워드 최종 수정일] : [패스워드 변경 최소일] : [패스워드 변경 최대일] : [패스워드 만료 경고기간] : [로그인 접속차단 일 수] : [로그인 금지 일 수] : [사용 안함]
▶ Windows Server
- 컴퓨터 관리나 net user 명령어로 계정 생성, 수정, 삭제
- 계정 생성 시 옵션
- 다음 로그온 시 반드시 암호 변경
- 암호 변경 불가
- 암호 사용기간 제한 없음
- 계정 사용 안 함(사용할 때까지 로그인 X)
- 기본 제공 계정인 Administrator(리눅스 root)는 계정 사용 안함으로 설정하거나 이름을 변경하는게 보안상 이득
- Guest 계정은 불필요하면 계쩡 사용 안함으로 설정(기본값은 사용안함)
- 암호 정책
- 암호의 복잡성
- 최근 암호 기억
- 최대 암호 사용기간
- 최소 암호 사용기간
- 최소 암호 길이
- 해독 가능한 암호화를 사용해 암호 저장
- 계정 잠금 정책
- 계정 잠금 기간 : 0으로 하면 명시적으로 잠금 해제 할 때까지 유지(0부터 99999까지; 분 단위)
- 계정 잠금 임계값 : 실패한 로그인 시도 최대 횟수를 설정(0부터 999까지 적용가능; 0이면 잠금 적용 X)
- 다음 시간 후, 계정 잠금 임계값을 0으로 설정(1에서 99999까지; 분 단위)
(2) 파일 시스템 보호
▶ Windows
- FAT12 / FAT16 / VFAT / FAT32
- NTFS
- 관리 공유 폴더 제거 / 마지막에 로그인한 계정 숨김 / 예약작업 수시로 체크 / 이동식 디스크의 자동실행방지 / 원격 레지스트리 서비스 중지
▶ Linux
- minix / ext2 / ext3 / ext4
▶ 클라우드 파일 시스템
- Ceph
- GlusterFS(글러스터)
- Google 파일시스템(GFS)
- Hadoop 분산파일시스템(하둡)
- Lustre 파일시스템
- Panasa 파일시스템
- PVFS2
- OASIS : 한국전자통신연구원 저장 시스템 연구팀에서 개발한 객체 기반 클러스터 파일 시스템
(3) 시스템 파일 설정과 관리
▶ 리눅스 디렉토리 구조(트리 구조)
- /bin : 필수 바이너리 파일, 시스템 기본 명령어
- /dev : 장치 파일
- /etc : 시스템 설정 파일
- /usr : 각종 서드 파티 응용 프로그램이 설치되는 프로그램
- /var : 시스템에서 운영되는 임시파일 및 로그 파일
- /home : 사용자 홈 디렉토리
- /lib : 시스템 운영 및 프로그램 구동 시 필요한 공유 라이브러리
- /sbin : 관리자가 사용하는 시스템 운영에 필요한 명령어
- /tmp : 임시파일 디렉토리
- /boot : 부팅에 필요한 커널과 핵심 파일
- /mnt : CD-ROM과 플로피의 마운트 포인트를 제공하는 디렉토리
- /proc : 시스템 상태를 제공하기 위한 디렉토리와 파일들이 존재
▶ Mount 하기
- 디바이스와 디렉토리의 연결
- # mount <디스크or 파티션> <마운트될 디렉토리>
- 재부팅 시 마운트가 풀리기에, /etc/fstab에 기술해서 자동 마운트
▶ Shell 설정 변경
- /etc/profile : 시스템 전역 쉘 변수 초기화
- /etc/bashrc : 쉘 함수와 Alias를 위한 시스템 전역 변수 정의
- 파일 안에 alias rm='rm -i'처럼 기술하면, rm이란 명령어는 rm-i와 동일하게 처리하라는 의미
- ~/.bash_profile : 사용자의 환경 설정 파일
- ~/.bash_history : 사용자 최초 로그인 후 생성, 사용자가 쉘에 입력한 명령어를 기록
▶ 쿼타(Quota)
- 디스크에 사용량을 체크 감시하고, 한 파티션에 너무 많은 디스크를 사용하게 되면 관리자에게 알리도록 제한
▶ 파일 시스템 점검(File System Check & Recovery) : FSCK를 사용함
- 저널링 파일 시스템으로 자동 복구가 되지만, 복구가 불가능한 경우 수동으로 복구해야할 경우 사용
- 많은 시간을 요구하는 경우가 많음
- 반드시 검사하고자 하는 파일 시스템은 unmount하고 검사해야 함
▶ 퍼미션(Permission)
- umask : 파일은 666에서 빼고, 디렉토리는 777에서 뺌
- setuid(s, 4000) / setgid(s,2000) / sticky bit(t, 1000)
- setuid, setgid 해당 파일이 실행될 떄에만, 실행한 사용자에게 소유자(그룹)의 권한을 부여함
- sticky bits는 주로 공유 디렉토리에 지정하는데,sticky bit가 부여된 디렉토리는 누구나 사용할 수 있지만, 삭제 및 수정은 root와 소유자만이 가능
- setuid 파일 찾기 : find / -user root -perm -4000 -print -xdev
▶ find로 악성코드 탐지하기
- find 명령으로 악성코드 파일과 중요 파일 존재 여부 확인
- 과도하게 부여된 권한이 있는 파일 확인
- 최근에 변경된 파일 확인
- 특정 사용자가 소유자인 파일 화가인
(4) 시스템 접근통제 기술
▶ Linux의 iptables
- 방화벽 정책을 수립할 수 있는 도구로 특정 패킷을 분석해 패킷 차단 및 허용 가능
- iptables -A FORWARD -p udp -m udp --dport 53 -j DROP : DNS를 사용하는 서비스 모두 차단
▶ Windows의 ipsec
▶ 통제 방식
- 강압적 접근통제 : MAC(Mandatory Access Control)
- 주체, 객체 등급 기반 접근권한 부여
- 임의적 접근통제 : DAC(Discretionary Access Control)
- 접근 주체 신분 기반 접근권한 부여
- 역할기반 접근통제 : RBAC(Role-Based Access Control)
- 주체, 객체 역할기반 접근 권한 부여
2. 보안관리
(1) 시스템 최적화(Unix/Linux)
▶ CPU
- top : CPU와 Memory, swap에 대한 전체적인 모니터링 가능
- ps aux : CPU와 Memory 사용량이 큰 PID를 확인 가능
- pstree : 시스템에서 프로세스간의 연결구조를 트리 구조로
▶ Memory
- free : 사용되는 메모리와 여유가 있는 메모리가 얼마인지 알려주는 간단한 명령어
- vmstat : 가상 메모리 상태를 확인
▶ Disk I/O
- df : 파일 시스템의 상태를 기초로 용량을 출력(df -k(KB단위) / df -h(다양한 단위))
- du : 실제 디렉토리와 파일의 크기를 확인해서 용량을 출력
- iostat : 디스크에 I/O가 얼마나 나타나는 모니터링
▶ Network
- netstat : 포트 정보
- ping : IP 네트워크를 통해 특정한 호스트가 도달할 수 있는지의 여부를 테스트
- traceroute : 목적지로 이동할 때 패킷이 실제로 사용하는 경로를 검색하는데 사용
- tcpdump : 네트워크 카드를 통해 송수신 되는 패킷을 가로채고 표시함
(2) 시스템 로그 설정과 관리
▶ 시스템 로그는 시스템의 정확한 시간이 필수
- #rdate -s time.bora.net
▶ Linux의 /var/log 디렉토리
- messages
- 로그인 기록에서 디바이스에 관련된 정보와 네트워크 등등 다양한 정보
- 콘솔에 출력되는 메시지들이 저장됨. 시스템 장애가 생기면 이 파일을 점검해서 취약점 점검
- pacct(binary)
- 로그인부터 로그아웃까지 입력한 명령과 시간, 작동된 tty 등에 대한 정보 수집
- 명령어 : lastcomm
- histroy
- 사용자별로 실행한 명령을 기록하는 로그
- lastlog(binary)
- 사용자별로 최근 로그인 시간
- 명령어 : lastlog
- wtmp(binary)
- 전체 로그인 기록(최근에 사용자 로그인 및 로그아웃한 정보)
- 시스템 관련 정보
- 시스템 종료 및 부팅 정보, 재부팅 정보
- 명령어 : last
- utmp(binary)
- 현재 로그인이 되어 있는 사용자에 대한 정보(/var/run/utmp에 있음)
- 로그인 사용자 ID, 사용 터미널, 로그인 시간 등을 확인 가능
- 명령어 : w / who / users / finger
- btmp(binary)
- 로그인 실패 정보
- 명령어 : lastb
- sulog
- Su 명령어와 관련된 로그
- dmesg
- 부팅부터 HW적인 에러
- secure
- 보안과 관련된 중요한 로그(사용자 인증 관련된 로그 ; FTP나 SSH 같은 것)
- httpd access_log, error_log
- 웹 서버에 대한 로그
- xferlog
- FTP로 어떤 자료가 오갔는지 보여주는 로그
(3) 서버 해킹 원리의 이해
▶ 정보수집단계
- 포트스캐닝 등
▶ 시스템 침입단계(root 권한 획득이 목적)
- exploit : 컴퓨터의 소프트웨어나 하드웨어 및 컴퓨터 관련 전자 제품의 버그, 보안 취약점
- 서버 설정 오류 / 원격 버퍼 오버플로우 취약점 / 계정 도용 / 패스워드 파일 획득 / 기타 취약점을 이용해 침입함
- 가장 단순하지만 강력한 대책은 업데이트(패치)
▶ 공격 경유지나 혹은 거점 마련
- 백도어 등을 설치하거나, 또 다른 공격의 공유지로 삼음
(4) 서버관리자의 업무
- 시스템의 시작과 종료 및 재시작
- 사용자 계정관리
- 프로세스 및 디스크, 메모리
- 네트워크 연결 및 상태관리
3. 서버 보안용 S/W 설치 및 운영
(1) 시스템 취약점 점검 도구
▶ NESSUS : 서버-클라이언트 구조로 작동하는 취약점 점검 도구
▶ SARA (SATAN 기반) : 서버, IDS, 라우터 등의 보안 분석 도구
▶ nikto2 : 웹 서버 스캔해서 취약점 점검(오픈 소스)
(2) 시스템 침입 탐지 시스템
(3) 무결성 점검도구
▶ trpwire : 가장 대표적인 무결성 점검도구로써, 시스템의 모든 파일에 대해 DB를 만들어서 추후 변동 사항을 점검
▶ Fcheck : tripwire보다 조금 더 간편한 설치와 설정
(4) 접근통제 및 로깅도구
▶ TCP Wrapper
- 슈퍼데몬(Xinetd)의 영향을 받는 데몬들은 TCP Wrapper로 접근 제어와 로깅이 가능
- 도식화 : 클라이언트의 요청 → Xinetd → TCP Wrapper → 데몬 실행
- /etc/host.deny 파일과 /etc/host.allow 파일을 통해 접근 통제를 할 수 있음
- Deny 정책 적용 시, host.deny에 ALL:ALL을 적어 놓고, host.allow에 [데몬종류]:[클라이언트 주소]를 적음
- 접근 통제기록은 secure나 message 파일 등에 기록됨
(5) 스캔 탐지도구
▶ 방어적인 관점에서, 스캔 탐지가 일어나면 이에 따라 방어 대책을 세워야 함
▶ Portsentry
- 포트스캔을 실시간으로 탐지하고 TCP_Wrapper와 결합해, host.deny 파일에 자동으로 등록해 방어
▶RTSD(Real Time Scan Detector) : 실시간 네트워크 불법 Scan 자동탐지 도구
(6) 로깅 및 로그 분석 도구
▶ syslog
- 백그라운드 프로세스로 돌면서, 로그 메시지를 하나 이상의 개별 파일에 기록하는 데몬
- /etc/syslog.conf에 각종 로그 환경 설정을 추가, 변경, 삭제할 수 있음
- 형식 : Facility.Priority Logfile-Location
- Priority : Emerg > Alert > Crit > Error > Warn > Notice > Info >Debug > None
- webalizer
- 아파치 웹로그를 분석해주는 멀티 웹 로그 분석도구
참고 자료 :
'자격증 > 정보보안기사' 카테고리의 다른 글
[어플리케이션 보안] 인터넷 응용 & 데이터베이스 보안 (0) | 2021.03.09 |
---|---|
[네트워크 보안] 네트워크 기반 공격 기술 및 대응 기술 (0) | 2021.03.07 |
[네트워크 보안] 네트워크 일반 및 활용 (0) | 2021.03.06 |
[시스템 보안] 클라이언트 보안 (0) | 2021.03.05 |
[시스템 보안] 운영체제의 구조 및 이해, 관리 (0) | 2021.03.02 |
댓글