일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- System
- LOB
- 해킹
- 웹해킹
- pwnable
- 네트워크
- Buffer Overflow
- system hacking
- Shell code
- webhacking.kr
- 정보보안기사 실기
- stack overflow
- Spring Framework
- 정보보안기사
- Spring MVC
- Spring
- 운영체제
- wargame
- OS
- webhacking
- Pwnable.kr
- Payload
- Lord of BOF
- hacking
- BOF
- Operating System
- SQL
- PWN
- 워게임
- 정보처리기사 실기
- Today
- Total
DongDD's IT
[정보보안기사 실기] 침입 탐지 시스템, 침입 차단 시스템, 보안 도구 본문
[정보보안기사 실기] 침입 탐지 시스템, 침입 차단 시스템, 보안 도구
침입 탐지 시스템(snort)
- 네트워크 트래픽을 감시하고 분석하기 위한 도구
- 기능
-> Packet Sniffer : 네트워크 상의 패킷을 sniffing하여 보여주는 기능
-> Packet Logger : 모니터링한 패킷을 저장하고 로그에 남기는 기능
-> IDS/IPS : 네트워크 트래픽을 분석해 공겨을 탐지/차단하는 기능
snort rule
- 헤더 : 처리 방식, 프로토콜, IP 주소, 포트번호 등의 패킷을 처리할 판단 기준을 명시
- 바디 : 패킷을 탐지하기 위한 규칙
1. rule header 설정
1) 형식
- Rule Actions : 패킷이 룰에 걸렸을 때 처리 형식
-> alert : 선택한 alert 방식을 이용해 alert 발생, 패킷을 로그에 남김
-> log : 패킷을 로그에 남김
-> pass : 패킷을 무시
-> activate : alert 발생, 대응하는 dynamic rule 활성화
-> drop : 패킷을 차단, 로그에 남김
-> reject : 패킷을 차단, 로그에 남긴 후 TCP는 TCP Reset 전송, UDP는 ICMP Unreachable 전송
-> sdrop : 패킷을 차단, 로그에 남기지 않음
- Protocols : 탐지할 프로토콜(TCP, UDP, ICMP, IP)
- IP Addresses : Source/Destination IP
-> any : 모든 IP
-> 단일 IP 지정
-> IP 대역(CIDR) 지정
-> IP 리스트 지정(대괄호로 묶고 ,로 구분)
-> !(부정 연산자) 사용 가능
- Port Numbers : Source/Destination Port
-> any : 모든 Port
-> 단일 포트 지정
-> 포트 범위 지정 - :로 지정(begin:end)
-> 포트 리스트 지정(대괄호로 묶고 ,로 구분)
- Direction Operator : 방향 지시자
-> ->(단방향) : 왼쪽은 Source, 오른쪽은 Destination(<-는 없음)
-> <>(양방향) : Source-Destination 사이의 모든 패킷
2) 예제
alert tcp any any -> 192.165.114.0/24 80
- 목적지 IP가 192.165.144.0 대역이고 Port가 80인 패킷에 대해 alert 발생 후 로그를 남김
- IP 주소에 $EXTERNAL_NET, $HOME_NET 환경변수 사용 가능
-> $EXTERNAL_NET : snort.conf 설정 파일에 정의된 환경 변수로 외부 네트워크를 의미(default : any)
-> $HOME_NET : snort.conf 설정 파일에 정의된 환경 변수로 내부 네트워크를 의미
2. rule body 설정(일반 옵션)
1) 옵션
- msg : msg 옵션에 기록된 내용이 alert 발생 시 이벤트 이름으로 사용
- reference : rule과 관련된 외부 취약점 정보 참조 시 사용
- sid : snort rule id
-> 99 이하 : 시스템에 예약된 id
-> 100~1000000 : snort에서 배포하는 rule set을 사용하는 sid
-> 1000001 ~ : 사용자 정의 rule을 사용하는 id
- classtype : 공격 유형과 우선순위(1 : 높음, 2: 중간, 3 : 낮음)
- priority : rule의 우선순위(이 옵션이 설정되면 classtype의 우선 순위 무시)
- rev : rule 버전 번호, 수정 횟수 표기
3. rule body 설정(페이로드/범위)
1) 옵션
- content : 페이로드에서 검사할 문자열 지정(text, binary로 구성)
-> text : content:"text"로 표시
-> binary : content:|FF FF FF FF|로 표시
-> !(부정 연산자) 사용 가능(content:!"text")
-> 3가지 특수문자는 escape 처리해 사용( ; , " , \)
- uricontent : content를 전체 패킷과 비교하는 대신 HTTP 클라이언트 요청 URI 정보를 검사할 문자열 지정
- offset : 패턴을 검사할 시작 위치(0부터 시작)
- depth : offset부터 검사할 바이트 수 지정
- distance : 패턴 매칭 후 매치된 바이트부터 몇 바이트 뒤부터 다음 content를 검사할 지 지정
- within : 패턴 매칭 후 distance부터 몇 바이트 범위 내에서 다음 content를 검사할 지 지정
- nocase : 대/소문자 구분을 안함
2) 설정 방법
- local.rules 파일에 다양한 형식의 룰 생성
alert tcp any any -> 192.165.114.0/24 80 (msg:"msg"; content:"passwd"; nocase; sid:1000001;)
- 192.165.114.0 대역의 80 port로 가는 패킷 중 "passwd" 문자열을 포함한 패킷 발견 시 alert를 보여주고 로그에 기록
4. rule body 설정(페이로드/정규 표현식)
1) 메타 문자
- \ : 특수 문자 기능을 제거하는 이스케이프 문자
- ^ : ^ 다음 문자가 문자열의 시작을 의미
- $ : $ 앞 문자가 문자열의 끝을 의미
- . : 임의의 문자 1개
- [] : 집합문자
-> [abc] : a, b, c 중 하나
-> [a-z] : a ~ z 중 하나
- | : | 앞 문자열과 뒤 문자열 중 하나 일치
- * : * 앞 문자가 0회 이상 나타남
- + : + 앞 문자가 1회 이상 나타남
- ? : ? 앞 문자가 0회 or 1회 나타남
- {x} : {x} 앞 문자가 x회 나타남
- {x,} : {x,} 앞 문자가 x회 이상 나타남
- {x,y} : {x,y} 앞 문자가 x회 이상 y회 이하 나타남
-> snort에서 pcre를 사용해 정규 표현식 사용 가능
-> rule에 pcre:"\^~~~~~\" 와 같이 사용
5. rule body 설정(페이로드/HTTP)
1) 옵션
- http_method : method 검사
- http_uri : uri 검사
- http_header : 헤더 검사
- http_cookie : 쿠키 검사
- http_client_body : 클라이언트 요청 body 검사(POST)
- http_stat_code : 상태 코드 검사
- http_stat_msg : 상태 메시지 검사
6. rule body 설정(Event Threshold)
- 특정 시간 동안 발생하는 이벤트 수 제한
1) 옵션
threshold type limit | threshold | both, track by_src | by_dst, count c, seconds s
- limit : 매 s초 동안 c번째 이벤트까지 action 수행
- threshold : 매 s초 동안 c번째 이벤트마다 action 수행
- both : 매 s초 동안 c번째 이벤트 시 한번 action 수행
- by_src : source IP 기준, by_dst : destination IP 기준
공격 탐지
1. root 로그인 탐지
1) FTP root 로그인
- FTP 접속 시 USER 명령을 통해 ID 전달하는 것으로 root 로그인 탐지(USER root)
alert tcp any any -> dst_ip 21 (msg:"FTP root login"; content:"USER root"; nocase; sid:1000001;)
2) Telnet root 로그인
- telnet은 접속 성공 시 로그인 성공 메시지와 shell을 평문으로 전달하므로 이것을 이용해 root 로그인 탐지
alert tcp src_ip 23 -> any any (msg:"telnet root login"; content:"login"; pcre:"\root@.*#\"; nocase; sid:1000001;)
-> login 메시지를 포함하고 정규 표현식으로 root@로 시작하고 임의의 문자가 0회 이상 나타난 후 #을 포함한 문자열 검사
-> 응답 메시지를 검사하므로 서버에서 나가는 패킷을 탐지
2. 패스워드 크래킹 탐지
1) Telnet Brute Force/Dictionary Attack 탐지
- telnet 응답 메시지에서 로그인 실패를 탐지하고 event threshold로 이벤트 제한을 두어 탐지
alert tcp src_ip 23 -> any any (msg:"telent brute force"; content:"Login incorrect"; nocase; threshold: type limit, track by_dst, count 1, seconds 5; sid:1000001;)
-> 5초 동안 1번째 이벤트까지만 탐지
2) FTP Brute Force/Dictionary Attack 탐지
- FTP 응답 메시지에서 로그인 실패를 탐지하고 event threshold로 이벤트 제한을 두어 탐지
alert tcp src_ip 21 -> any any (msg:"FTP brute force"; content:"Login incorrect"; nocase; threshold: type threshold, track by_dst, count 5, seconds 30; sid:1000001;)
-> 30초 동안 5번째 이벤트마다 탐지
3) SSH Brute Force/Dictionary Attack 탐지
- SSH 로그인 요청 메시지에서 "SSH-2.0" 문자열을 탐지하고 event threshold로 이벤트 제한을 두어 탐지
alert tcp any any -> dst_ip 22 (msg:"SSH brute force"; content:"SSH-2.0"; nocase; threshold: type both, track by_src, count 5, seconds 30; sid:1000001;)
-> 30초 동안 5번째 이벤트 한번만 탐지
3. Flooding Attack 탐지
1) HTTP GET Flooding 탐지
- HTTP 요청 메시지에서 "GET /HTTP/1." 문자열을 탐지하고 event threshold로 이벤트 제한을 두어 탐지
alert tcp any any -> dst_ip 80 (msg:"HTTP Flooding"; content:"GET /HTTP/1."; nocase; threshold: tpye threshold, track by_src, count 50, seconds 1; sid:1000001;)
-> 1초 동안 50번째 이벤트마다 처리
-> 1.0버전과 1.1버전 모두 처리하기 위해 "1."으로 탐지
2) TCP SYN Flooding 탐지
- HTTP 클라이언트의 TCP 요청 메시지에서 SYN Flag가 설정된 것을 탐지하고 event threshold로 이벤트 제한을 두어 탐지
alert tcp any any -> dst_iop 80 (msg:"TCP SYN Flooding"; flags:S; threshold : type threshold, track by_src, count 5, seconds 1; sid:1000001;)
-> 1초 동안 5번째 이벤트마다 처리
3) UDP/ICMP Flooding 탐지
- udp, icmp를 탐지하고 event threshold로 이벤트 제한을 두어 탐지
alert udp any any -> dst_ip any (msg:"UDP Flooding"; threshold: type threshold, track by_src, count 5, seconds 1; sid:1000001;)
alert icmp any any -> dst_ip any (msg:"ICMP Flooding"; threshold: type threshold, track by_src, count 5, seconds 1; sid:1000001;)
-> 1초 동안 5번째 이벤트마다 처리
비정상 패킷 탐지
- 비정상 패킷 : RFC(Request For Command) 문서에 정의된 프로토콜 표준에 위배되는 패킷
1. 비정상 IP 패킷
1) 인터넷 구간의 사설 IP를 가진 패킷
- 인터넷에 돌아다니는 패킷 중 사설 IP 주소를 가진 패킷은 조작된 IP 주소이므로 차단해야함
alert udp 10.0.0.0/8 any -> dst_ip any (msg:"abnormal packet"; sid:1000001;)
alert udp 172.16.0.0/12 any -> dst_ip any (msg:"abnormal packet"; sid:1000001;)
alert udp 192.168.0.0/16 any -> dst_ip any (msg:"abnormal packet"; sid:1000001;)
2) Source IP와 Destination IP가 동일한 패킷
- Land Attack에 사용되는 이러한 패킷을 탐지해야함
alert ip any any -> dst_ip any (msg:"Land Attack"; sameip; sid:1000001;)
2. 비정상 TCP 패킷
1) 정상적인 TCP 플래그 패킷
- SYN, SYN+ACK. SYN
- SYN 패킷 제외 모든 패킷은 ACK 플래그가 설정되어있음
- FIN+ACK, ACK
- RST+ACK
2) SYN+FIN 비정상 패킷
- 연결 설정 SYN 플래그와 연결 종료 FIN 플래그는 동시에 설정될 수 없음
alert tcp any any -> dst_ip any (msg:"SYN+FIN"; flags:SF; sid:1000001;)
-> SF+ : SYN+FIN 포함 다른 플래그도 설정 가능
-> SF* : SYN or SYN+FIN or FIN 중 하나를 포함하고 다른 플래그도 설정 가능
-> !SF : SYN, FIN(지정한 플래그)을 포함하지 않는 설정
3) SYN+FIN 변형 비정상 패킷
- SYN+FIN을 포함한 다양한 조합의 패킷
alert tcp any any -> dst_ip any (msg:"SYN+FIN+"; flags:SF+; sid:1000001;)
4) FIN 설정 비정상 패킷
- 정상적인 연결 종료는 FIN+ACK이므로 FIN만으로 이루어질 수 없음
alert tcp any any -> dst_ip any (msg:"FIN"; flags:F; sid:1000001;)
5) 플래그가 없는 NULL 패킷
- stealth scan에 사용되는 플래그가 설정되지 않은 패킷은 비정상 패킷으로 판단하고 차단
alert tcp any any -> dst_ip any (msg:"NULL"; flags:!UAPRSF; sid:1000001;)
침입 차단 시스템(iptables)
- f리눅스 커널에 있는 netfilter(패킷 필터링) 기능을 관리하기 윈한 rule 기반 패킷 필터링 기능을 제공하는 툴
기능
1. 상태 추적 기능(Connection Tracking)
- 방화벽을 통과하는 모든 패킷에 대한 연결 상태를 추적해 이 정보를 메모리에 보관하고 이 후 연결 때 비교
- 위조된 패킷을 차단해 보안성 향상
- 연결된 패킷은 더이상 검사하지 않아 성능 향상
2. NAT 기능
3. 패킷 레벨의 로깅 기능
4. 확장 모듈의 다양한 기능
용어
1. Table
- iptables가 제공하는기능
- Filter, Nat, Mangle(default : Filter)
2. Chain
- 패킷이 이동하는 경로
- INPUT Chain : 방화벽을 최종 목적지로 하는 chain
- OUTPUT Chain : 방화벽을 최초 출발지로 하는 chain
- FORWARD Chain : 방화벽을 경유하는 chain(방화벽을 별도 서버로 구성 시 사용)
3. Rule
- 패킷 필터링을 위한 Rule
사용 방법
iptables 테이블 체인 룰 타겟
1. Table
- -t 테이블
- 명시하지 않으면 default는 Filter
2. Chain
iptables -A | -I | -D 체인
- -A : append 모드, 해당 체인의 마지막에 룰 추가
- -I : insert 모드, 해당 체인의 첫 행에 룰 추가(-I 체인 n : n행에 룰 추가)
- -D : delete 모드, -D 체인 룰(해당 룰 삭제), -D 체인 n(n행 룰 삭제)
- Filter table : INPUT, OUTPUT, FORWARD 체인
3. Rule
1) IP/ICMP/TCP/UDP 모두 호스트를 식별하기 위해 IP 이용
- -s src_ip or src_ip 대역 : 출발지 IP를 명시(default : any)
- -d dst_ip or dst_ip 대역 : 목적지 IP를 명시(default : any)
2) TCP/UDP는 Port 번호로 서비스 식별
- --sport src_port : 출발지 port 명시
- --dport dst_port : 목적지 port 명시
3) ICMP는 타입과 코드로 식별
- --icmp-type type_name : 메시지 타입 명시
4) TCP 패킷 유형에 따른 설정
- -p tcp 옵션이 선행되어야 사용 가능
--tcp-flags 검사플래그 설정플래그
-> --tcp-flags SYN,FIN SYN,FIN : SYN, FIN을 검사해 SYN,FIN이 설정된 패킷 탐지
-> --tcp-flags ALL SYN : 모든 플래그를 검사해 SYN이 설정된 패킷 탐지
-m state --state 탐지상태
-> --state NEW | ESTABLISHED | RELATED | INVALID
4. Target
- -j ACCEPT : 해당 패킷 허용
- -j DROP : 해당 패킷을 차단하고 응답을 하지 않음
- -j REJECT : 해당 패킷을 차단하고 ICMP 응답을 보냄
- -j LOG : 탐지 로그를 남김(/var/log/messages에 저장)
5. 옵션
1) iptables -L 체인 -n
- -L 체인 : 해당 체인에 설정된 룰 리스트 확인
- -n : IP와 Port를 숫자로 출력
2) iptables -F 체인
- 해당 체인에 설정된 모든 룰 삭제
3) iptables -P 체인 ACCPET | DROP | REJECT
- 해당 체인의 기본 정책(default policy) 설정(모든 룰에 매치되지 않으면 적용)
- Negaative Policy : 기본 정책을 DROP/REJECT로 설정하고 허용할 부분만 ACCEPT
- Positive Policy : 기본 정책을 ACCEPT로 설정하고 허용할 부분만 REJECT/DROP
상태 추적 기능(Connetction Tracking)
1. 상태 유형
1) NEW
- 최초로 들어온 패킷 상태, 연결 정보가 없는 패킷(TCP의 경우, SYN 패킷)
2) ESTABLISHED
- 연결 정보를 갖고 있는 패킷(연결 이후 송수신 패킷)
3) RELATED
- 연관된 연결 정보를 갖고 있는 패킷(연결 시 포트 정보가 서비스 수행 중 추가)
-> ex) FTP에서 데이터 채널을 통해 송수신되는 패킷
4) INVALID
- 위 3가지 상태 중 어떤 상태에도 포함되지 않는 패킷
2. 프로토콜별 상태 유형
1) TCP
- SYN : NEW 상태
- SYN+ACK 이후 : ESTABLISHED 상태
- 연결 종료 마지막 ACK 전까지 ESTABLISHED 상태
2) UDP
- 연결 상태를 유지하지 않아 상태 정보가 없으나 다음과 같이 표시
- 최초 들어온 패킷 : NEW
- TTL이 유지되는 동안의 패킷 : ESTABLISHED
3. 위조된 TCP SYN 패킷 차단
- NEW이면서 SYN Flag가 설정되지 않은 패킷은 위조된 패킷으로 판단하고 차단
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-> ESTABLISHED, RELATED 상태의 패킷은 허용해 룰 검사를 다시 하지 않게 하여 성능 향상
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "Abnormal SYN"
-> NEW이면서 SYN Flag가 설정되지 않은 패킷은 "Abnormal SYN"이라는 접두어를 붙여 로그를 남김
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
-> NEW이면서 SYN Flag가 설정되지 않은 패킷 차단
iptables 확장 모듈
1. connlimit 모듈
- 동일한 IP, IP 대역의 동시 연결 개수를 제한할 수 있는 모듈
- DDoS 공격에 대응할 수 있음
1) 옵션
- --connlimit-above n : n을 초과하는 동시 연결 제한
- --connlimit-mask 0~32 : 0~32의 mask 값을 지정해 IP 대역에 대한 동시 연결 제한
2) 웹 서버에 대한 TCP SYN Flooding 대응 룰
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 -j LOG --log-prefix "SYN Flooding"
-> 동시 연결 개수 5 초과 시 "SYN Flooding"을 접두어로 사용해 로그를 남김
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 -j DROP
-> 동시 연결 개수 5 초과 시 차단
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 --connlimit-mask 24 -j DROP
-> 동일한 24 bit 마스크 대역의 IP에서 동시 연결 개수 5 초과 시 차단
2. limit 모듈
- 룰에 매치되는 비율을 제한해 불필요한 로그를 남기지 않게 하는 모듈
1) 옵션
- --limit n/second | n/minute | n/hour | n/day
-> 초/분/시/일당 매칭되는 제한 건수 지정
2) 비정상 TCP 플래그 조합 차단 룰
iptables -A INPUT -p tcp --tcp-flags ALL SYN,FIN -m limit --limit 6/minute -j LOG --log-prefix "SYN+FIN"
-> 모든 플래그를 검사해 SYN+FIN Flag가 설정된 패킷에 대해 분당 최대 6개의 로그를 남김
iptables -A INPUT -p tcp --tcp-flags ALL SYN,FIN -j DROP
-> 모든 플래그를 검사해 SYN+FIN Flag가 설정된 패킷 차단
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
-> NULL 패킷 차단
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
-> 모든 플래그가 설정된 XMAS 패킷 차단
3. recent 모듈
- 동적으로 source IP 목록을 생성하고 이를 기반으로 패킷을 제어하는 기능을 제공하는 모듈
1) 옵션
- --name : 목록 이름 지정
- --set : 해당 목록에 새 엔트리 추가
-> 이미 있는 경우 "last seen" timestamp를 old로 옮기고 새로 갱신
- --rcheck : 해당 목록에 패킷의 source IP가 있는지 확인
- --update : 해당 목록에 패킷의 source IP가 있는지 확인하고 있으면 "last seen" timestamp를 갱신
- --seconds : update or rcheck와 같이 사용, "last seen" timestamp가 지정된 초 범위 내에 있는지 확인
- --hitcount : update or rcheck와 같이 사용, 해당 entry의 hit count가 지정 값 이상인지 확인(seconds 옵션과 같이 사용해 특정 초 내에 hit count 이상으로 발생했는지 확인)
2) SSH Brute Force/Dictionary Attack 차단 룰
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --name SSH_DROP --set
-> TCP 22번 포트(SSH) 연결 요청 목록의 이름을 SSH_DROP으로 설정
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 30 --hitcount 5 -j LOG --log-prefix "SSH Brute Force"
-> 30초 이내에 5번 이상 연결 요청 패킷이 오면 "SSH Brute Force" 접두어로 로그를 남김
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 30 --hitcount 5 -j DROP
-> 30초 이내에 5번 이상 연결 요청 패킷이 오면 차단
보안 솔루션
네트워크 보안 솔루션
1. 웹 방화벽(WAF : Web Application Firewall)
- 웹 어플리케이션 보안에 특화된 장비
- 여러 웹 공격을 탐지하고 차단
- 정보 유출, 부정 로그인 등을 방지
2. 무선 침입 방지 시스템(WIPS : Wireless IPS)
- 인가되지 않은 무선 접속을 탐지하고 차단하며 보안에 취약한 AP를 탐지하는 시스템
- 외부 공격으로부터 내부 시스템을 보호하기 위한 시스템
3. 네트워크 접근제어(NAC : Network Access Control)
- 내부 네트워크로의 접속에 대해 제어하고 통제하는 기능
- 인증 -> 백신, 보안 프로그램 정상 동작 확인 -> 접근 허용
4. 통합 위협 관리 시스템(UTM : Unified Threat Management)
- IDS, IPS, Firewall 등 다양한 보안 기능을 하나의 장비로 통합해 제공하는 솔루션
- 하나의 장비로 여러 보안 기능 수행
- 장점 : 비용 감소, 운영 편리
- 단점 : 장애 발생 시, 모든 보안 기능에 영향
시스템 보안 솔루션
1. 스팸 차단 솔루션
- 메일 서버 앞 단에 위치해 프록시 메인 서버로 동작
- 스팸 메일 차단, 바이러스 검사, 내부 정보 유출 방지 등의 기능 제공
2. 보안 운영체제(Secure OS)
- 보안 기능이 통합된 보안 커널을 추가한 운영체제
정보 유출 방지 솔루션
1. 보안 USB(Security USB)
- 보안 기능을 갖춘 USB
- 사용자 식별/인증, 암호화/복호화, 임의 복제 방지 등의 기능 제공
2. 디지털 저작권 관리(DRM : Digital Rights Management)
- 저작권 관리 보안 솔루션
- 파일 자체에 암호를 걸어 권한이 없는 사용자는 사용을 못하게 함
3. 데이터 유출 방지(DLP : Data Loss Prevention)
- 조직 내부의 정보가 외부로 유출되는 것을 탐지하고 차단하는 솔루션
- 정보의 흐름에 대한 모니터링과 실시간 차단 기능 제공
보안 관리 솔루션
1. 전사적 통합 관리 시스템(ESM : Enterprise Security Management)
- 여러 보안 장비를 통합해 관리하기 위한 솔루션
- 상호 연관 분석 : 여러 보안 장비에서 발생하는 로그, 이벤트 간의 연관성을 분석
1) 구성 요소
- ESM Agent : 관리 대상 보안 장비에 설치되어 규칙에 따른 로그, 이벤트를 수집해 ESM Manager로 전달하는 역할
- ESM Manager : 수집된 데이터를 저장, 분석해 결과를 ESM Console로 전달하는 역할
- ESM Console : 전달받은 정보를 시각적으로 보여주고 상황 판단 및 리포팅 기능을 제공해주며 Manager, Agent에 대한 제어를 담당하는 역학
2. 위협 관리 시스템(TMS : Threat Management System)
- 외부 위협으로부터 내부 정보 자산을 보호하기 위해 위협을 조기에 감지하고 위혐을 감소, 제거하기 위한 보안 시스템
3. 패치 관리 시스템(PMS : Patch Management System)
- 기업 네트워크에 접속하는 사용자의 PC 등을 기업 보안 정책에 맞게 자동으로 패치해 보안 위협으로부터 효과적으로 보호해주는 솔루션
1) 구성 요소
- PMS Server : 패치를 배포하고 보안 정책 위반 PC를 인식해 정책에 맞는 보안을 적용하는 역할
- PMS Agent : 서버로부터의 패치를 적용하고 사용자 PC를 점검해 정책 위반 여부를 서버에 제공해주는 역할
인증 및 암호 솔루션
1. H/W 토큰(HSM : Hardware Security Module)
- 전자 서명을 저장 장치 내부에 생성해 공인 인증 유출을 방지하는 휴대용 저장 장치(= 보안 토큰)
취약점 점검 도구
- 보안 취약점을 사전에 점검하여 보안을 강화하기 위한 도구
취약점 유형
1. 네트워크 보안 취약점
- 네트워크 장비, 네트워크 구조에 대한 취약점
2. 시스템 보안 취약점
- 계정, 권한, 파일 관리 등에 대한 취약점
3. 웹 보안 취약점
- 웹 브라우저, 웹 서버, 웹 프로그램에 대한 취약점
nessus
- 미국 tenable사가 개발한 취약점 점검 도구
- 시스템, 네트워크, 웹 등의 알려진 취약점에 대한 점검을 수행해 취약점의 내용과 해결 방법을 상세하게 제공
1. 특징
1) 클라이언트-서버 구조로 동작
- nessus 데몬과 각종 취약점 점검 플러그인을 통해 취약점을 점검하고 결과를 조회할 수 있는 인터페이스 제공
2) 사용이 자유롭고 플러그인 업데이트가 쉬움
- GUI 형태로 되어있어 사용하기 쉬움
3) 여러 형태로 결과를 리포트할 수 있음
- HTML, TXT 등 다양한 포맷으로 점검 결과 저장
2. 사용 방법
- /etc/init.d/nessusd 데몬을 실행 시킴(default port : 8834)
- 웹을 통해 접속 후 GUI를 통해 취약점 점검
nikto
- 공개용 웹 취약점 점검 도구
- 웹 서버, 웹 기반 응용 프로그램 취약점을 점검할 수 있음
- 방대한 DB를 이용해 취약한 CGI 파일을 스캔하는 기능이 있음
- 다양한 포맷으로 저장 가능
1. 사용 방법
nikto -h host -output a.txt | a.html -Format html | txt
-> host : 점검할 웹 호스트 주소
-> a.txt | a.html : 저장할 파일의 이름과 확장자
- -Format html | txt : 저장할 확장자 포맷
무결성 점검 도구
tripwire
- 유닉스/리눅스 환경의 파일 시스템 무결성을 점검하는 도구
- 파일시스템 상태 추적, 비허가 변경 여부를 주기적으로 검사하고 복구
- 시스템 내 중요 디렉토리, 파일에 대한 DB를 생성하고 tripwire가 실행될 때 이 DB와 비교해 변경된 점을 알려줌
1. 동작 방식
- 최초 설정 파일에 등록된 파일, 디렉토리의 해시값을 생성해 DB에 저장
- 주기적으로 동작하며 DB에 저장된 해시값과 설정된 디렉토리, 파일의 해시값 비교
- 비교한 후 결과가 다르면 변경 내역을 출력해 알려줌
2. 사용 방법
- /etc/tripwire에 있는 정책 설정 파일을 통해 디렉토리, 파일 지정
- tripwire --init을 통해 DB 초기화
- /var/lib/tripwire에 *.twd db 파일 생성 확인
- tripwire --check를 통해 tripwire 실행
Rootkit 점검 도구
- Rootkit : 자신의 존재를 숨겨 탐지되지 않게하여 관리자 권한 획득과 백도어 기능을 수행하는 프로그램들의 집합
chkrookit
- 루트킷 탐지를 위한 도구
- chkrootkit [옵션]
- 옵션
-> 빈 값 : 모든 파일의 결과를 출력
-> -q : 변조/감염된 파일 정보만 보여줌(quiet 모드)
1. 점검 결과 메시지
- INFECTED : 감염/변조됨
- not infected : 감염/변조되지 않았음
- not tested : 감염/변조 여부를 확인하지 못했음
- not found : 해당 파일이 존재하지 않음
2. hidden process 탐지 원리
1) /proc
- 커널이 메모리 상 사용하고 있는 모든 자원들에 대한 정보 파일
- 현재 실행중인 개별 프로세스 pid로 숫자 형식의 디렉토리들이 있음
- ps를 통해 pid 확인 후 해당 pid 디렉토리로 들어가면 다양한 상태 정보 파일들을 확인할 수 있음
2) 탐지 원리
- 일반적인 rootkit 프로그램은 자신을 숨기기 위해 ps에 출력되지 않도록 ps 프로그램을 만들어 정상 ps 프로그램과 교체함
- 탐지 프로그램은 /proc 디렉토리의 정보와 ps를 비교해 /proc에는 있지만 ps에 출력되지 않은 프로세스를 탐지함
Rootkit 대응 방법
1. RPM(Redhat Package Manager) 명령으로 변조 파일 확인
- rpm : 설치 파일인 package를 관리하는 명령어
- rpm [옵션]
1) 옵션
- -Uvh 패키지.rpm : 해당 패키지 설치 or 업데이트
- -qf 절대경로 : 해당 파일이 어떤 패키지에 속해있는지 확인
- -V 패키지 : 해당 패키지를 통해 설치된 파일의 무결성 검사
-> S : 파일 크기 변경 여부
-> M : 파일 권한 변경 여부
-> 5 : MD5 Checksum 변경 여부
-> T : 파일 수정 시간 변경 여부
-> U : 소유자 정보 변경 여부
-> G : 소유 그룹 변경 여부
-> D : 장치 정보 변경 여부
-> L : 심볼릭 링크 변경 여부
2. 변경 확인 후 패키지 재설치
1) 패키지 재설치 오류가 발생하는 경우
- rpm -Uvh --force 패키지.rpm 명령으로 패키지 재설치
-> --force : 동일하거나 더 높은 버전의 패키지라도 기존 것을 삭제하고 재설치
-> 공격자가 변조한 실행 파일을 삭제하지 못하게 속성을 설정한 경우 오류가 발생함(lsattr 명령을 통해 i 속성 설정을 확인)
2) 속성 변경 후 재설치
- chattr -i 파일명 명령으로 i 속성을 제거 후 재설치
3. Linux 파일 속성 설정
- 권한과 달리 파일 자체에 대한 허가를 의미
1) lsattr
- 파일의 속성 정보를 확인하는 명령어
- lsattr 파일명
-> i 속성 : 읽기 전용 모드(변경, 추가, 삭제 불가능)
-> a 속성 : append(추가)만 허용(변경, 삭제 불가능)
-> A 속성 : Access Time을 변경하지 않음
2) chattr
- 파일의 속성을 변경하기 위한 명령어
- +를 통해 속성을 추가, -를 통해 속성을 제거할 수 있음
- chattr [+ | -] [i | a | A] 파일명
'자격증 > 정보보안기사' 카테고리의 다른 글
[정보보안기사 실기] 정보보안 일반 (0) | 2018.05.20 |
---|---|
[정보보안기사 실기] 각종 취약점 및 도구 (0) | 2018.05.15 |
[정보보안기사 실기] 어플리케이션 보안 - 웹 서버, 데이터베이스 취약점 (0) | 2018.05.10 |
[정보보안기사 실기] 어플리케이션 보안 - 웹 취약점 (0) | 2018.05.09 |
[정보보안기사 실기] 어플리케이션 보안 - 기초 (0) | 2018.05.07 |