All posts

전체 글

Windows Server 운영체제 사용자 계정 관리 방식
- 워크그룹 방식, 도메인 방식
- 로컬 사용자 계정은 %SystemRoot%System32\config\SAM 에 저장
 
이벤트 뷰어
 
이벤트 로그 파일명
%SystemRoot%\system32\winevt\Logs\application.evtx
 
윈도우 로그 관리 시 '감사 정책'을 가장 먼저 고려해야 한다.
- 감사 정책은 어떤 로그를 남길지 정의한 규칙
- 실행 > secpol.msc
 

감사 항목설명
개체 액세스파일, 디렉터리 등 객체에 대한 접근 성공/실패 여부
계정 관리사용자 계정, 그룹의 생성/변경/삭제/암호 설정 및 변경 등의 이벤트 성공/실패 기록
계정 로그온 이벤트도메인 계정에 대한 로그온 성공/실패 기록
권한 사용권한 사용의 성공/실패 기록
디렉터리 서비스 액세스AD 개체에 액세스 할 때 이벤트 기록
로그온 이벤트로컬 계정에 대한 로그온/오프 성공/실패 기록
시스템 이벤트시스템 시작/종료, 보안 로그 이벤트 등 감사 여부
정책 변경감사 정책 변경 성공/실패 기록
프로세스 추적실행되는 프로세스에 대한 추적정보. 프로세스 생성/종료 등의 이벤트 감사 여부

 
Windows 바이너리 로깅 시스템
- Security, System, Application 로그
 
널 세션 취약점
- 네트워크의 다른 원격 컴퓨터에 사용자명과 패스워드를 널값으로 접속하는 취약점
 
사전 대입 공격, 무차별 대입 공격, 혼합 공격
 
Pass the Hash 공격
- 패스워드 자체를 몰라도 인증용 해시값을 탈취하여 인증하는 기법
미미카츠 - 윈도우 시스템에서 자격증명 정보를 수집할 수 있는 도구
 
크리덴셜 스터핑(Credential Stuffing) 공격
 
운영체제 보안
물리적 분리 - 사용자별 별도 장비 사용 제한
논리적 분리 - 운영체제가 프로그램의 접근을 제한
시간적 분리 - 프로세스를 서로 다른 시간에 운영
암호적 분리 - 다른 프로세스가 인식할 수 없도록 암호화
 
보안 커널 - 주체, 객체 간 모든 접근과 기능 중재하는 보안 절차를 구현한 하드웨어, 펌웨어, 소프트웨어
참조 모니터 - 객체 간의 접근 통제 기능 수행
 
인터럽트 - 입출력 프로그램에 의한 입출력 단점 개선 방식. 시스템에 예기치 않은 상황이 발생했을 때 운영체제에게 알리고 이를 해결하는 매커니즘
1) CPU가 인터럽트 신호를 받으면
2) 프로그램 카운터의 복귀 주소를 메모리 스택에 저장 후
3) 입출력 전송을 위한 인터럽트 핸들러로 제어를 이동한다. (인터럽트 핸들러를 PC로 옮긴 후 인터럽트 핸들러를 수행)
 
운영체제의 핵심 - Kernel
시스템 내의 메모리 접근, 프로세스 생성 및 관리 등의 역할
 
유닉스의 핵심 컴포넌트 - 커널, 쉘, 파일시스템
 
소스 프로그램을 기계어로 번역하는 과정 - 컴파일
 
init 프로세스 - 런 레벨에 따른 초기화 작업, 고아 프로세스의 대리모 역할
 
Bash 쉘 환경에서 표준에러 - 2, 표준출력 - 1
 
프로세스는 준비, 실행, 대기 상태로 구분
둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유한 자원을 요구하며 무한정 기다리는 현상을 교착 상태라고 함.
PCB는 운영체제가 프로세스에 대한 정보를 관리하기 위해 사용하는 자료구조 테이블로 각 프로세스 생성,완료 될때 함께 생성/제거 됨.
 
리눅스 프로세스 관리 명령어
top - CPU, MEM, DISK 및 프로세스 현황 파악
pstree - 프로세스의 트리 구조 조회
nice - 프로세스 우선 순위 조절 및 NICE 값 변경
 
메모리 공간 부족 시 사용되는 디스크 영역 - Swap 영역
 
페이지 교체 방식
LRU - 가장 오랫동안 미사용
LFU - 가장 적은 빈도
NUR - 최근 미사용
FIFO - 선입선출
 
유닉스 파일 시스템
부트 블록 - 부팅 정보
슈퍼 블록 - 파일시스템 관리 정보
아이노드 리스트 - 파일 속성 정보. 아이노드 구조체
데이터 블록 - 데이터 저장
 
저널링 - ext2에서 사용하는 fsck의 시간이 오래 걸리는 단점 보완한 기술
데이터를 쓰기 전에 로그에 남겨 비정상적인 종료가 발생해도 로그에 저장된 데이터로 fsck보다 빠르고 안정적으로 복구
ext4에서는 기본적으로 사용 됨.
 
버퍼 오버플로우 공격
스택, 힙
 
스택 버퍼 오버플로우 대응방안
1) 운영체제 커널 업데이트
2) 함수에서 복귀하기 전 스택 무결성 검증
3) 스택에서 쓰기 제한
4) 스택에서 프로그램 실행 금지
5) 가능성이 있는 SUID 제한
 
ASLR - 프로세스의 주소 공간을 랜덤하게 배치하는 기법
 
레이스 컨디션 공격 - 시스템 프로그램과 경쟁 상태로 만들어 시스템 프로그램이 갖는 권한으로 파일 접근을 가능하게 하는 기법
 
포맷 스트링 취약점의 보안 위협
- 프로세스 공격
- 프로세스 메모리 읽기/쓰기
 
포맷 스트링 공격 - 출력 함수의 서식 문자열을 악용해 실제 메모리 주소 공간을 공격자가 원하는 값으로 변경
 
심볼릭 링크 파일 생성
ln -s [source] [target]
 
shadow 파일
$ID - 암호화에 적용된 일방향 해시 알고리즘 식별 ID
 
리눅스 시스템에서 암호화 강도를 높이기 위해 사용하는 랜덤 값 - salt
 
리눅스 시스템에서 파일 생성 시 제거할 전급 권한을 명시하는 명령어 - umask
 
umask 022 설정시
파일: 644, 디렉터리: 755
 
4000 setuid, 2000 setgid
 
find / -user root -perm -4000 -print
root 사용자로 SUID 부여된 파일 찾기
 
TCP Wrapper - 네트워크 서비스에 관련한 트래픽을제어하고 모니터링할 수있는 UNIX 기반 정책
hosts.allow, hosts.deny
 
TCP Wrapper 실행 경로
/usr/sbin/tcpd
 
로그 기록 추적
utmp - 현재 로그인한 사용자 상태 기록. 'who' 명령어
wtmp - 로그인/로그아웃 정보 기록. 'last' 명령어
acct - 사용자에 실행된 모든 명령어 기록. 'lastcomm' 명령어
lastlog - 가장 최근에 성공한 로그인 정보를 바이너리 형태로 저장
btmp(loginlog) - 실패한 로그인 시도에 대한 기록 - 'lastb' 명령어
sulog - su 명령어 사용 결과
xferlog - FTP 로그파일
 
접속 로그 추적
// 모든 계정 접속 확인
lastog
// 해당 계정 최근 접속 확인
lastlog -u 계정명
// 해당 일 수 내 접속 기록 확인
lastlog -t 일수
 
/var/log/messages - 기본적인 로그 파일
/var/log/secure - 사용자 및 그룹 생성/삭제, 사용자 인증 정보 기록. PAM, su 결과 기록
/var/log/boot.log - 부팅 로그
 
로그 수준
emerg > alert > crit > err > warning > notice > info > debug
 
BEEP - syslogd 보안 향상
 
logrotate, cron
logrotate.conf - 설정 파일
/etc/logrotate.d - 디렉터리
 
crontab
분 시 일 월 요일 파일

메일 전송 프로토콜

SMTP - Simple Mail Transfer Protocol

TCP/25 사용

 

SMTPS - SMTP over SSL/TLS

TCP/465 사용

 

메일 접근 프로토콜

POP3 - Post Office Protocaol version 3

TCP/110 사용

클라이언트가 서버로 부터 메일은 가지고 온 후 메일 서버에서는 해당 메일을 삭제하는 방식

 

POP3S - POP3 over SSL/TLS

TCP/995 사용

 

IMAP - Internet Message Access Protocol

TCP/143 사용

클라이언트에서 메일을 복사하는 방식

 

IMAPS - IMAP over SSL/TLS

TCP/993 사용

 

메일 서버 구조

MUA - Mail User Agent

사용자가 메일을 송수신하기 위해 사용하는 메일 클라이언트 프로그램

ex) Outlook, Thenderbird

 

MTA - Mail Transfer Agent

수신한 메일을 전송/저장하는 메일 서버 프로그램

ex) Sendmail, Qmail

 

MDA - Mail Delivery Agent

사용자 메일함에 메일을 저장해주는 프로그램

ex) Procmail

 

MRA - Mail Retrieval Agent

MUA가 확인을 요청하는 메일을 사용자 메일함에서 사용자로 전달해주는 프로그램

 

 

SMTP 연결 방식

연결 요청
HELO [Mail-Server]
MAIL FROM: [발신자 메일 주소]
RCPT TO: [수신자 메일 주소]
[DATA]
# Subject : 메일 제목
QUIT

 

SMTP 취약점 및 대응

SMTP Server Spoofing

메일 봉투의 MAIL FROM 정보를 조작할 수 있음

 

대응방안

* SPF(Sender Policy Framework) 메일 인증 기술 적용

  SPF - 메일 송신자 검증

 

Mail Sniffing 및 Spoofing

메시지를 훔쳐보거나 조작하는 중간자 공격 발생할 수 있음

 

대응방안

* DKIM(DomainKeys Identified Mail) 메일 인증 기술 적용
  DKIM - 메일 위변조 검사

* SMTPS, POP3S, IMAPS 등의 보안 프로토콜 설정

 

DMARC(Domain-based Message Authentication, Repoting and Conformance)

SPF와 DKIM 인증 기술을 모두 적용할 수 있고, 인증 결과에 대한 모니터링할 수 있는 기술

 

 

메일서버 보안 설정

SMTP Relay를 통해 다른 도메인의 메일을 외부 메일 서버로 전달할 수 있다.

발신자에 대한 인증 없이 모든 메일은 릴레이하는 Open Relay 서버는 스팸 메일 서버로 악용 된다.

 

대응방안

* 허가된 IP 및 도메인에서만 릴레이 가능하도록 설정

* Authenticated Relay - SMTP AUTH 기능을 이용하여 계정 인증 수행

 

sendmail 서버 스팸메일 및 릴레이 차단 설정

/etc/mail/access - 스팸메일 및 릴레이 차단을 위한 설정 파일
---------------
# [적용 대상] [처리 방식]
192.168.10.2 OK
172.16.32.1 501 "Not Allowed"

## 처리 방식
## OK - 모두 허용
## RELAY - 릴레이 허용
## REJECT - 모두 거부
## DISCARD - 모두 폐기
## 501 message - 메일을 거부하고 설정한 메시지 전송
---------------
# makemap hash /etc/mail/access < /etc/mail/access

 

SPF - Sender Policy Framework

수신한 메일의 발신자 IP 주소가 실제 메일주소 도메인의 메일 서버와 일치하는지 검사

TXT 레코드를 통해 SPF 레코드 정보를 입력

 

SPF 레코드 형식

[SPF Version] [ipv4/ipv6, include, all]

+	## 인증 통과
-	## 인증 실패
~	## 가벼운 인증 실패. 수신측 설정에 따라 허용 여부 판단
?	## 중립. 인증 여부에 대한 판단 정보 없음

ex) "v=spf1 ipv4:192.168.10.20 ipv4:192.156.10.21 -all"
	"v=spf1 include:_SPFinclu.frosty.kr ~all"

 

DKIM

수신된 이메일이 위변조되지 않았는지 수신자 측에서 검증

 

DKIM 레코드 형식

[DKIM Version] [알고리즘] [공개키]

ex) "v=DKIM1; k=rsa; p=~~"

 

DMARC

도메인 기반 이메일 인증

[DMARC Version] [Option]

ex) "v=DMARC1; p=none; sp=quarantine; rua=mailto:dmarc@frosty.com"

p	## 인증 실패 시 처리 정책
sp	## 서브 도메인에 대한 인증 실패 시 처리 방법
rua	## 실패 보고서를 수신할 이메일

 

주요 메일 헤더 정보

Received 메시지 헤더

실제 메일이 전송된 경로 조회 가능

 

Received-SPF 메시지 헤더

SPF 인증 결과를 기록하는 헤더로 pass여부 확인 가능

 

Authentication-Results 메시지 헤더

SPF, DKIM 및 DMARC 인증 결과 기록하는 헤더 pass,fail 여부 확인 가능

웹 서비스 최소 권한 사용자 운영

웹서버의 알려지지 않은 취약점으로 인해 권한 탈취가 발생할 가능성을 최소화하기 위해 최소한의 권한으로 실행

 

대응방안

* 웹 서비스 프로세스를 실행할 별도의 사용자 및 그룹 생성 및 로그인 제한

/etc/passwd
---------------
apache:x:48:48:Apache-httpd:/var/www:/sbin/nologin
---------------

/etc/group
---------------
apache:x:48:
---------------

httpd.conf
---------------
User apache
Group apache
---------------

 

심볼릭 링크(Symbolic link) 사용 설정 제거

웹에서 허용하는 디렉터리 외에 다른 디렉터리를 참조하는 링크가 존재하는 경우 해당 링크를 엑세스 할 수 있음

 

대응방안

* 심볼릭 링크 비활성화

httpd.conf
---------------
<Directory />
	Options None
	AllowOverride All
</Directory>
---------------

 

웹 서비스 정보 숨김

웹 서버 버전과 같은 배너 정보 숨기는 것이 안전

 

대응방안

* 응답 헤더로 제공되는 서버 정보 제한

* 불필요한 웹 서버 정보 Erorr 메시지로 대체

httpd.conf
---------------
...
# ServerTokens Full
ServerTokens Prod

## Prod - 웹 서버 종류
## Min - Prod + 버전 정보
## OS - Min + OS 정보
## Full - OS + 설치된 모듈 정보

ServerSignature Off
...
---------------

 

타임아웃 관련 설정

httpd.conf
---------------
Timeout 60		# 클라이언트와 서버가 연결 된 후 연결 대기 시간

KeepAlive On		# 일정 조건에 따라 연결을 지속하여 다수 요청을 처리하는 기능
MaxKeepAliveRequests 100	# 연결 중 허용할 최대 요청 건수
KeepAliveTimeout		# 연결을 지속 시키는 동안 다음 요청을 대기하는 시간
RequestReadTimeout header=5 body=10	# 요청 메시지의 헤더와 바디를 모두 수신하는 시간에 대한 timeout
---------------

 

 

'공부 > 정보보안기사' 카테고리의 다른 글

시스템 보안 단답형  (0) 2024.11.20
이메일 보안  (0) 2024.11.19
웹 서버 취약점  (0) 2024.11.17
웹 애플리케이션 취약점 - 개발 보안관리  (0) 2024.11.16
웹 애플리케이션 취약점 - 기타  (0) 2024.11.16

디렉터리 리스팅(Directory Listing) 취약점

웹 서버 인덱싱 기능을 통해 공격자가 웹 서버의 모든 디렉터리 및 파일 목록을 조회할 수 있는 취약점

 

대응방안

* 인덱싱/디렉터리 조회 옵션 비활성화

IIS - 웹서버 환경 설정에서 '디렉터리 검색' 기능 비활성화

apache - httpd.conf
---------------
...
<Directory />
	#Options Indexes
	Option None
	AllowOverride All
</Directory>

 

Tomcat configure - web.xml
---------------
	...
	<servlet>
    	...
    	<init-param>
	        <param-name>listings</param-name>
        	#<param-value>true</param-value>
        	<param-value>false</param-value>
        </init-param>
        ...
---------------

 

웹 서비스 메소드 설정 취약점

PUT, DELETE 등 불필요한 메소드를 이용하여 악성 파일을 생성하거나 중요 파일을 삭제/수정하는 취약점

 

대응방안

* 미사용 메소드 비활성화

Apache - httpd.conf
---------------
...
<Directory> "/var/www/html">

<LimitExcept GET POST>
	Order allow,deny
	Deny from all
</LimitExcept>
...
---------------

 

관리자 페이지 노출 취약점

관리자 페이지가 추측할 수 있는 형태로 구성되어있을 경우 무작위 대입 공격 등으로 관리자 권한을 획득할 수 있는 취약점

 

대응방안

* 어드민 페이지 URL을 추측하게 어렵게 설정

* 관리자 페이지 접근 제어

httpd.conf
---------------
...
<Directory "/var/www/html/admin">
	Order Deny,Allow	# 우선순위는 역순
	Deny from all
	Allow from 192.168.10.2
</Directory>
---------------

 

위치공개 취약점

백업, 로그파일 등이 자동적으로 생성되어 웹 애플리케이션 상에 노출된 경우 공격자가 접근하여 정보 탈취하는 취약점

 

대응방안

httpd.conf
---------------
<Files ~ "\.gz$">	# 확장자가 .gz인 파일 접근 제어
	Order allow,deny
	Deny from all
</Files>
---------------

 

검색엔진 정보 노출 취약점

검색엔진에 의해 웹 사이트의 중요 정보가 검색되어 해킹에 필요한 정보가 공개되는 취약점

robots.txt 파일을 통해 검색 조건을 설정

 

robots.txt 작성 방법

* 파일 위치는 웹 사이트 최상위 디렉터리

* 대소문자 구분 및 띄어쓰기 유의

robots.txt
---------------
## 모든 검색 로봇에 대핸 웹 사이트 전체 접근 차단
User-agent: *
Disallow: /

## Google 검색 로봇에 대해 웹 사이트 전체 접근 허용
User-agent: Googlebot
Disallow: 
# Allow: /		## "Disallow: "와 같은 의미
---------------

 

 

개발 보안 가이드라인

1. 사용자에게 전달된 값은 재사용할 경우 신뢰해서는 안 된다.

2. 최종 통제 메커니즘은 반드시 서버에서 수행한다.

3. 클라이언트에게 중요 정보를 전달하지 않는다.

4. 중요 정보 전송 시 POST 메소드 및 SSL/TLS를 적용한다.

5. 중요한 트랜젝션이 일어나는 프로세스에 사용자의 비밀번호를 재확인한다.

6. 중요정보를 보여주는 페이지는 캐시를 사용하지 못하도록 설정한다.

7. 적절한 방법으로 암호화한다.

8. 각 언어에서 제공하는 보안 수단을 이해한 후 사용한다.