Download - [네이버D2SF] 안전한 서비스 운영을 위한 Ncloud 보안교육
안전한 Service�운영을위한보안교육
황성호
IT보안대응실 /�NBP
ⓒNAVER�BUSINESS�PLATFORM�Corp.
목차
1.외부위협유형
2.계정관리
3.DDoS 공격예방
4.어플리케이션로직
5.시스템취약점
6.For�Safety�Service
1. 외부 위협유형
1.1 수치로보는위협, 취약성, 위험
712,868,621 213,883 257공격시도수 공격유입수 유효공격수
위협 위험취약성
위협 = 사건(이벤트)
• 힘으로으르고 협박함• 정보자산의 보안에 부정적 영향을 줄
수있는외부 환경또는사건(이벤트)
위험 = 가능성(확률)
• 해로움이나손실이생길우려가있음• 보 안 의 3 대 요 소 인 기 밀 성
(Confidentiality), 무결성(Integrity),가용성(Availability)를 해치는 사건이발생할가능성
취약성(취약점) = 속성, 상태
• 무르고약한점• 위협에 의해 정보자산의 보안에 부정
적 영향을 줄 수 있는 정보자산의 속성이나상태
1.2 2016년상반기위험유형
5428
262222
1110
87766544433333
Mysql_Login_Success
NETBIOS_Name_Query
WP_Pingback
System_Command_Linux
UDP_Flooding
wget_Execute_Success
Django_Stack_Trace
Directory_Indexing
TCP_SYN_Flooding
DB_Error
IRC
33%
1%
9%
13%
33%
11%
Account
Bruteforce
DDoS
Exposure
Intrusion
Vulnerability
Mysql_Login_Success : 계정 관리
- 계정 설정및 계정정책방안
WP_Pingback : DDoS 공격 예방
- Secure Coding
- 취약점패치
Wget_Execute_Success : Application 설정
- Web Application 설정
- Error 출력 설정
- Trace 정보 출력
Account : Application Logic
- SQL Injetion
- Filte Upload
Intrusion : 침입탐지
- NETBIOS, WGET, WebShell 탐지
- IRC, Malware, Anti Virus
Vulnerability : 패치 및 업데이트
- Apache, Tomcat 취약점(RCE)
- Struct 취약점(RCE)
[TOP20�공격명]
[공격유형]
2. 계정 관리
2.1 Default�계정
Vendor별 Default�계정정보 3Com�&�Cisco�Default�계정정보 D-Link�Default�계정정보
MySQL�Default�계정정보 Router�Default�계정정보
2.2 계정보안
안전한패스워드를만드는 6가지원칙
1. 패스워드를최소한 9자 이상으로만들어라
2. 대문자와소문자, 특수문자와숫자를섞어만들어라
3. 흔히 사용하는문자나 숫자의조합을피해라
4. 60일 혹은 90일 간격으로패스워드를변경해라
5. 잘못된패스워드입력시 계정잠금을설정해라
6. 패스워드정보를이메일로보내거나제3자에게공유하지마라
[참고URL]• 패스워드 선택 및 이용 가이드 : http://www.krcert.or.kr/data/guideView.do?bulletin_writi
ng_sequence=436&queryString=cGFnZT0yJnNvcnRfY29kZT0mc2VhcmNoX3NvcnQ9dGl0bGVfbmFtZSZzZWFyY2hfd29yZD0=
2.3 Jenkins 보안
① Configure�Global�Security 선택
② Enable�Security�체크Disable�remember�체크Jenkins’�own�user�database�선택사용자의가입허용선택해제
③ Matrix-based�security�선택User/group�to�add에 관리자계정입력후 Add�클릭
2.3 Jenkins 보안
④ 추가된관리자계정의권한설정을위해 Overall의Administer를 체크후 Save�클릭
⑤ 계정명에생성한관리자계정명을입력하고암호와이름, Email을 입력후 Sign�Up 클릭
⑥ 계정등록이완료되면성공Message가 표시됨
3. DDoS 공격 예방
3.1 DDoS 공격이란?
DDoS(Distributed Denial of Service)
해킹 방삭의 하나로 여러 대의 공격자를 분산 배치하여 동시에 ‘서비스 거부 공격(Denial of Service attack : DoS)’을 함으로써 시스템이 더이상 정상적인 서비
스를 제공할수없도록 만드는것을말함
3.2 DDoS 공격유형
DNS�Amplification�Attack NTP�Amplification�Attack
WrodPress Pingback�Attack DDoS Attack�Tool
3.3 DDoS 공격대응절차
Step1.초기대응
Step2.공격회피
Step3.용량증설
Step4.사후조치
• 공격유형 파악 및 공격자 IP추출
• ACL/IPTables을 이용한 공격자차단
• Server Rebooting
• Redirect를 이용하여 정상사용자만을허용
• Server/Network 증설 • 외부기관연계• 원복및사후조치방안도출
Server
DNS
DNS
② ③ ⑤
Proxy①
④
• www.test.com100.100.100.100
• www.test2.com100.100.100.101
⑤
Server
DNS
DNS
② ③ ⑤
Proxy①
④
• www.test.com100.100.100.100
• www.test2.com100.100.100.101
⑤
L4�Proxy를 이용한 공격자 차단 Flow
① 예비 DNS�및 VIP�등록② www.test.com�접속③ www.test2.com Redirect�요청④ Zombie 특성상 www.test2.com DNS�Update 불가⑤ www.test2.com 접속하지 못하고 www.test.com으
로만 공격시도
3.4 DDoS 공격예방방안
OS�HardeningApplication취약점 제거
KISA사이버대피소
• Server와 PC OS의 기본 보안옵션활성화
• 악성코드감염최소화
• 사용중인 Application의 최신버전 확인 및 정기적인 Update 정책 수립
• KISA에서 제공하는 사이버대피소활용
[참고URL]• 민간사이버안전메뉴얼 : http://www.krcert.or.kr/data/guideView.do?bulletin_writing_se
quence=399&queryString=cGFnZT0zJnNvcnRfY29kZT0mc2VhcmNoX3NvcnQ9dGl0bGVfbmFtZSZzZWFyY2hfd29yZD0=
• 사이버대피소 : http://www.krcert.or.kr/webprotect/cyberShelters/cyberShelters.do
3.5 OS�Hardening�Checklist(Linux)
구분 점검사항 세부항목 비고
최신버전 패치 최신 OS�버전 및 주요 보안패치를 적용하였는가?• OS Version• Apache�Version• MySQL�Version
민간사이버안전매뉴얼 ISP및IDC용 - 118P
사용자계정 및 패스워드관리
사용하지 않는 계정을 삭제하였는가? • /etc/passwd 점검 민간사이버안전매뉴얼 ISP및IDC용 - 120P
불필요한 서비스 중지 불필요한 서비스를 중지하였는가?• /etc/inetd.conf 점검• /etc/xinetd.d 점검
민간사이버안전매뉴얼 ISP및IDC용 - 121P
원격접속 관리 원격 root�계정 접속을 제한하였는가? • /etc/securitty 점검 민간사이버안전매뉴얼 ISP및IDC용 - 125P
파일시스템 보안 setuid와 setgid 퍼미션을 제한하였는가? • setuid/setgid 퍼미선 점검 민간사이버안전매뉴얼 ISP및IDC용 - 126P
중요파일 퍼미션 설정중요파일에 대한 퍼미션을 제한하였는가?임의 사용자의 쓰기권한을 제한하였는가?
• /etc/utmp,�/var/adm/wtmp,/etc/motd,�/etc/mtab 퍼미션 644로변경
• 중요파일에 대해 퍼미션 644로 변경
민간사이버안전매뉴얼 ISP및IDC용 - 127P
예약 작업(Cron)관리crontab의 퍼미션을 root만 사용하도록 변경하였는가?
• crontab 허용권한을 600으로 설정 민간사이버안전매뉴얼 ISP및IDC용 - 128P
FTP�보안 FTP�접근 계정 및 디렉토리 권한을 제한하였는가?• FTP�접근 계정 설정• FTP�디렉토리 퍼미션 점검
민간사이버안전매뉴얼 ISP및IDC용 - 128P
3.6 Application�취약점제거(Apache)
구분 점검사항 세부항목 비고
웹 프로세스 계정웹 프로세스 계정은 로그인 할 수 없는 계정“nobody”�계정을 사용하는가?
• /etc/passwd와 /etc/shadow�파일의nobody 계정에 /bin/sh,�/bin/csh등shell을 명시한 부분이 제거되어 있는지를 점검
• httpd.conf 파일에 User�nobody,�Group�nobody로 설정되어 있는지를점검
민간사이버안전매뉴얼 ISP및IDC용 -153P
DocumentRoot 설정 DocumnetRoot 경로를 변경 하였는가?• httpd.conf 파일내 Default
DocumentRoot 경로를 변경하였는지를 점검
민간사이버안전매뉴얼 ISP및IDC용 -154P
불필요 CGI�스크립트 제거 cgi-bin 디렉토리내 모든 파일을 삭제하였는가?• .../cgi-bin/�디렉토리내 모든 파일이 삭
제되었는지를 점검민간사이버안전매뉴얼 ISP및IDC용 -154P
디렉토리 리스팅 방지 httpd.conf 파일내 Indexes�옵션을 제거하였는가?• httpd.conf 파일내 Options 지시자에
서 Indexes�옵션을 모두 제거민간사이버안전매뉴얼 ISP및IDC용 -155P
심볼릭 링크 베거httpd.conf 파일내 FollowSymLinks 옵션을 제거하였는가?
• httpd.conf 파일내 Options 지시자에서 FollowSymLinks 옵션을 모두 제거
민간사이버안전매뉴얼 ISP및IDC용 -155P
SSI(Server Side�Includes)�사용제한
httpd.conf 파일내 IncludesNoExec 옵션을 제거하였는가?
• httpd.conf 파일내 Options 지시자에서 IncludesNoExec옵션을 모두 제거
민간사이버안전매뉴얼 ISP및IDC용 -155P
CGI 실행 디렉토리 제한httpd.conf 파일내 ScriptsAlias 지시자를 설정하였는가?
• httpd.conf 파일내 ScriptsAlias 지시자를 설정하였는지 점검
• ScriptAlias /cgi-bin/�“/usr/local/apache/cgi-bin/”
민간사이버안전매뉴얼 ISP및IDC용 -155P
응답 헤더 정보 숨기기httpd.conf 파일내 ServerTokens 지시자에 불필요한 설정값을 제거하였는가?
• httpd.conf 파일내 ServerTokens 지시자에 Prod�설정값만 있는지 점검
• ServerTokens Prod
민간사이버안전매뉴얼 ISP및IDC용 -158P
3.6 Application�취약점제거(MySQL)
구분 점검사항 세부항목 비고
웹 프로세스 계정웹 프로세스 계정은 로그인 할 수 없는 계정“nobody”�계정을 사용하는가?
• /etc/passwd와 /etc/shadow�파일의nobody 계정에 /bin/sh,�/bin/csh등shell을 명시한 부분이 제거되어 있는지를 점검
• httpd.conf 파일에 User�nobody,�Group�nobody로 설정되어 있는지를점검
민간사이버안전매뉴얼 ISP및IDC용 -153P
DocumentRoot 설정 DocumnetRoot 경로를 변경 하였는가?• httpd.conf 파일내 Default
DocumentRoot 경로를 변경하였는지를 점검
민간사이버안전매뉴얼 ISP및IDC용 -154P
불필요 CGI�스크립트 제거 cgi-bin 디렉토리내 모든 파일을 삭제하였는가?• .../cgi-bin/�디렉토리내 모든 파일이 삭
제되었는지를 점검민간사이버안전매뉴얼 ISP및IDC용 -154P
디렉토리 리스팅 방지 httpd.conf 파일내 Indexes�옵션을 제거하였는가?• httpd.conf 파일내 Options 지시자에
서 Indexes�옵션을 모두 제거민간사이버안전매뉴얼 ISP및IDC용 -155P
심볼릭 링크 베거httpd.conf 파일내 FollowSymLinks 옵션을 제거하였는가?
• httpd.conf 파일내 Options 지시자에서 FollowSymLinks 옵션을 모두 제거
민간사이버안전매뉴얼 ISP및IDC용 -155P
SSI(Server Side�Includes)�사용제한
httpd.conf 파일내 IncludesNoExec 옵션을 제거하였는가?
• httpd.conf 파일내 Options 지시자에서 IncludesNoExec옵션을 모두 제거
민간사이버안전매뉴얼 ISP및IDC용 -155P
CGI 실행 디렉토리 제한httpd.conf 파일내 ScriptsAlias 지시자를 설정하였는가?
• httpd.conf 파일내 ScriptsAlias 지시자를 설정하였는지 점검
• ScriptAlias /cgi-bin/�“/usr/local/apache/cgi-bin/”
민간사이버안전매뉴얼 ISP및IDC용 -155P
응답 헤더 정보 숨기기httpd.conf 파일내 ServerTokens 지시자에 불필요한 설정값을 제거하였는가?
• httpd.conf 파일내 ServerTokens 지시자에 Prod�설정값만 있는지 점검
• ServerTokens Prod
민간사이버안전매뉴얼 ISP및IDC용 -158P
4. 어플리케이션로직
4.1 XSS(Cross-Site�Script)
XSS(Cross-Site Script)
웹 페이지에악의적인 Javascript를 Injection 해서 사용자를공격하는기법
Reflected XSS / Stored XSS 공격
4.1 XSS(Cross-Site�Script)
Reflected�XSSStored�XSS
4.1 XSS(Cross-Site�Script)�대응방법
• 사용자입력값한정
파라미터로 들어오는사용자값에대한철저한검증
• 특수문자가필요한경우?
HTML Entity 처리 or URL Encoding
• 추가로할수있는것은?
X-XSS-PROTECTION Header or HTTP Only Cookie
4.2 SQL�Injection
SQL Injection
사용자 입력파라미터에 SQL 구문을 Injection 해서 DB에 정보를가져오거나시스템을조작하는취약점
Classical SQL Injection / Blind SQL Injection / Compound SQL Injection …
4.2 SQL�Injection
Exposure�SQL�Query Exposure�DB�Data
4.2 SQL�Injection
• Sysadmin (SA) 권한 계정미사용
• 허용하지않는형식의값제한
• 모든입력값은인용부호(‘ 또는 “)로 묶음
• 불필요한프로시저사용제한
• 입력값에대한검증로직추가 (아래 문자)
• 프로시저또는 PreparedStatement 사용
4.3 GET�/�POST�외 HTTP�메시지허용
HTTP Method
HTTP 프로토콜에서 제공하는사용자의요청을구분하기위한미리정의된프로토콜
각 프로토콜별의미에 따라 HTTP 서버에서다른동작수행
4.3 GET�/�POST�외 HTTP�메시지허용
HTTP�TRACE�method
4.4 Directory�Listing
Directory Listing
웹서버설정오류및 어플리케이션의버그로인하여서버내에파일들의목록이보여지는취약점
서버의 구조파악을 및소스코드탈취가능
Directory�Listing�Vulnerability
4.5서버정보노출
서버정보노출
PHP, Apache, Tomcat등에서제공하는서버의상태를확인할수있는페이지노출
/phpinfo.php, /server-status, /jkmanager 등의 페이지를통해서접근가능
4.6 인증우회
인증우회
어플리케이션의인증을 통해서접근할수있는페이지 / api를 우회해서접근
우회된 권한에따라서 다양한공격가능(파일 업로드, 시스템수정, 백도어설치, 웹쉘 설치등)
Register�Notice�in�Notice�BoardAdmin�page�Access
4.7 File�Upload
File Upload
PUT Method, 서비스에서 제공하는 File Upload 기능을이용해서 webshell or 악성코드 upload
정보 노출이아닌 시스템침해로다양한피해발생가능
WebShell Upload
4.8오류페이지노출
오류페이지노출
HTTP Server, DB, Tomcat Server등에서오류발생시노출되는오류메시지를사용자에게전달
이 정보를통해서 시스템정보및디렉토리구조, 취약점확인가능
MS�SQL�DB�Error�Message�Exposure Apache�HTTP�Server�Error�Message�Exposure
5. 시스템취약점
5.1 CVE(Common�Vulnerabilities�and�Exposures)
CVE(Common Vulnerabilities and Exposures)
보안 도구제조업체, 대학 연구소, 정부 기관, 기타 보안전문가등수많은보안관련기관의대표들이포함된공통보안취약성및노출(CVE) 편찬 위원회
5.1 CVE(Common�Vulnerabilities�and�Exposures)
CVE-2014-0226�:�Apache�HTTP�RCE(Remote�Code�Execution)�Vulnerability
5.2 Unknown�Communication
Unknown Communication
침해 발생후데이터 유출및지속적인접근을시도할경우발생.
SSH / HTTPS / 자체 암호화통신에의한정상적인통신과구분이필요함.
6. For�Safety�Service…
6.1 안전한서비스
§ 기술적보안에대한관심
• 개발자들이관심가지면대부분해결
• 필요시전문서비스요청
§ 업데이트확인 / 패치
• 웹서버 /라이브러리의주기적인패치
• 서비스에서사용하는라이브러리,오픈소스에대한모니터링
§ 아이디 / 패스워드관리
• 아이디 / 패스워드에대해나름의원칙을가지고관리
• 종이에적어서금고에넣기(?)
§ 서비스에서사용하는언어 / 프로토콜 / 시스템에대한정확한이해
• 설정만으로보안 OK!
• 불필요한프로토콜 / 시스템 사용중지
6.2 지원이필요하면?
End�of�Document