InfoSec / / 2024. 9. 25. 15:53

웹서버 보안 강화 - HTTPS 사용

HTTP 보안 취약점 확인

 

웹서버의 게시판에 로그인하는 과정을 Wireshark로 캡쳐하였습니다.

 

이후 게시판에 로그인한 패킷(POST /board/login_chk.php)을

HTTP를 오른쪽 클릭 -> Follow -> HTTP Stream을 선택합니다.

 

 

확인결과 서버와 클라이언트가 주고받은 패킷을 제한없이 볼 수 있으며

암호화나 보안이 되어있지 않고 평문으로 전송됨을 알 수 있습니다.

 

이런 HTTP의 취약점을 보완하기 위해 도입된 것이

SSL/TLS를 사용한 HTTPS 프로토콜입니다.

 

 

HTTPS 보안 서버 구축

사용자 로그인 및 중요한 데이터를 처리하기 위하여

SSL/TLS를 적용하여 통신되는 패킷을 안전하게 암호화 처리할 수 있습니다.

 

공인인증서 : 공식기관에서 제공 --> 공식 도메인

▶ 사설인증서 : 개인이 만들어 내부용으로 사용 가능

 

◈ 웹 방화벽

  IPSec : 3계층에서 동작하는 보안

  ▶ SSL : 응용계층에서 동작하는 보안 

 

(1) 사설 SSL 인증서 설치 및 설정

# openssl 설치

apt install -y openssl

# Redhat 계열 리눅스의 경우 mod_ssl 을 추가 설치

 

# 웹서버 홈 디렉터리로 이동

cd /etc/apache2

# Redhat 계열의 경우 /etc/httpd

 

# 인증서용 디렉터리 생성

mkdir ssl

cd ssl

 

# 개인 키 생성

openssl genrsa -des3 -out server.key 2048

# 암호 두번 입력

키 생성이 완료되면 server.key 파일이 생성됩니다.

 

(2) 발급된 인증서 사인 요청

openssl req -new -key server.key -out server.csr

 

인증 사인 요청을 하면 인증을 위한 정보를 입력해야 합니다.

 

 

# server.key 백업

cp server.key server.key.origin

 

 

openssl rsa -in server.key.origin  -out server.key

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

 

(3) SSL 모듈 활성화 및 웹서버에 인증서 등록

# SSL 모듈 활성화

a2enmod ssl

# ssl 환경설정 수정

gedit /etc/apache2/sites-available/default-ssl.conf

# Redhat 계열의 경우 /etc/httpd/conf.d/ssl.conf

 

25라인 구문확인
        SSLEngine on

32-33라인 구문 수정
        SSLCertificateFile /etc/apache2/ssl/server.crt
        SSLCertificateKeyFile /etc/apache2/ssl/server.key

#        SSLCertificateFile /etc/httpd/ssl/server.crt
#        SSLCertificateKeyFile /etc/httpd/ssl/server.key

 

 

(4) 사이트 활성화

# ssl 모듈 활성화

a2enmod ssl

a2ensite default-ssl

# Redhat 계열의 경우 모듈 활성화는 생략

 

systemctl reload apache2

 

(5) 방화벽 설정

# 방화벽 설정

ufw allow 443/tcp

 

# 방화벽 재시작

ufw reload

 

 

 

(6) HTTPs 확인

이제 HTTPS 설정이 완료되었습니다.

 

https:// 를 이용해 웹 서버에 https로 접속할 수 있습니다.

하지만 공인인증을 받지 못한 사설인증 SSL이므로

웹 브라우저에서 경고를 표시합니다.

 

고급 -> 안전하지 않음으로 이동을 클릭하여 경고를 무시하고 접속할 수 있습니다.

 

 

 

HTTPS로 암호화된 패킷 확인

이제 다시 Wireshark로 전송되는 패킷을 확인하면

이전과 다른 프로토콜로 데이터가 전송이 되는것을 확인할 수 있습니다.

 

 

그리고 Stream을 캡쳐해 내용을 확인하면 암호화되어

내용을 알 수 없는 것을 확인할 수 있습니다.

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유