개발/Linux

Linux - SSL

잇(IT) 2022. 4. 4. 22:48
728x90

- 이번 포스팅은 SSL에 대해 알아볼 것이다. SSL은 웹사이트와 브라우저 사이(또는 두 서버 사이)에 전송되는 데이터를 암호화하여 인터넷 연결을 보호하기 위한 표준 기술이다. 즉 암호화 기반 인터넷 보안 프로토콜이다. SSL를 사용하는 웹사이트는 URL에 HTTP 대신 'HTTPS'를 사용한다. SSL의 경우 SSL의 인증서가 있는 사이트만 실행 할 수 있다. SSL 인증서는 웹사이트나 애플리케이션 서버가 웹에 저장하고 표시한다. 

 

1. 개인키를 만든다

2. 개인키를 이용하여 인증 요청서를 만든다.

3. 개인키와 인증 요청서를 가지고 인증서를 만들어 낸다.

 


- linux

 

- ssl을 사용하기 위해 해당 패키지를 설치한다. openssl

 

- 개인키를 우선 만든다. openssl genrsa -out ca.key 2048, 

  genrsa는 암호화 방식을 뜻하고, -out은 내보낼 곳을 지정한다.

 

- 다음과 같이 개인키가 생성된 것을 확인 할 수 있다.

 

- 다음으로 인증 요청서를 만든다. 인증 요청서는 인증서를 만들 때만 필요하다.

 

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

  req : 요청

  -new : 새로운 요청

  -key : 어떤 키를 사용할 것인가

  -out : 내보낼 곳을 지정한다.

 

  다음과 같이 ca.key를 가지고 ca.csr 인증 요청서를 생성한다.

  아래 인증 요청서에 들어갈 여러가지 정보를 입력한다.

 

- 인증 요청서가 생성된 것을 확인 할 수 있다.

 

- 개인키와 인증 요청서를 가지고 인증서를 생성 할 것이다.

 

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

  x509 : 인증서의 표준 방식

  -days : 인증서의 유효기간

  -in : 인증 요청서명 기입

  -signkey : 개인키명 기입

  

- 인증서도 마찬가지로 제대로 생성되었는지 확인한다.

 

- 개인키와 인증서는 지정된 경로가 있기 때문에 해당 경로로 복사해서 넣어준다.

개인키 : /etc/pki/tls/private/

인증서 : /etc/pki/tls/certs/

 

- 인증서가 필요한 서버에 전부 지정된 경로로 인증서 및 개인키를 복사 해준다.


- Windows

 

- wireshark라는 패킷 캡쳐 프로그램을 이용하여 패킷의 흐름 및 SSL이 적용되었는지 확인 해 볼 것이다.

 

https://www.wireshark.org/

 

Wireshark · Go Deep.

What is SharkFest? SharkFest™, launched in 2008, is a series of annual educational conferences staged in various parts of the globe and focused on sharing knowledge, experience and best practices among the Wireshark® developer and user communities. Shar

www.wireshark.org

 

- 다음과 같이 wireshark를 설치해준다.

 

- 처음 wireshark를 실행시키게 되면 다음과 같이 현재 연결되어 있는 네트워크를 선택 할 수 있다.

 

- FTP 클라이언트에 해당하는 FileZilla 프로그램을 이용하여 파일을 주고 받아 볼 것이다.

 

- 해당 사진 파일을 주고 받아 볼 것이다.

 

- windows 환경 -> 리눅스 ftp 서버로 파일을 전송한다.

 

- wireshark 프로그램을 통해 파일이 전송에 대한 패킷 흐름을 확인 할 수 있다. 10.0.0.13 서버와 10.0.0.111 서버가 통신을 한 것을 알 수 있다.

 

- 프레임, 이더넷 , IP, TCP의 데이터 값들을 확인 할 수 있다.

 

- 또한 다음과 같이 TCP Stream이라는 TCP 흐름 추적이 가능한 기능이 있다.

 

- 파란색은 서버의 응답 빨간색은 클라이언트의 요청을 뜻한다. 다음과 같이 서버와 클라이언트가 요청과 응답을 주고 받은 것을 알 수 있다.

 

- 계속되는 패킷이 업데이트 되기 때문에 편의를 위해 wireshark를 멈추고 현재까지의 패킷 흐름을 저장한다.

  또 파일을 저장할 때 tcpdump 형식으로 파일을 저장하게 되면 추후에 리눅스에 내장된 패킷 흐름 확인 프로그램에서도 사용 할 수 있다.

 

ftp-data를 확인하기 위해 해당 이름을 작성하여 검색한다.

- 여러 패킷 중 하나를 선택하게 되면 데이터가 보이게 되고 해당 데이터를 위와 같이 데이터를 Raw 형식 즉 원시 데이터로 변경하고 저장한다.

 

https://mh-nexus.de/en/hxd/

 

HxD - Freeware Hex Editor and Disk Editor | mh-nexus

HxD - Freeware Hex Editor and Disk Editor HxD is a carefully designed and fast hex editor which, additionally to raw disk editing and modifying of main memory (RAM), handles files of any size. The easy to use interface offers features such as searching and

mh-nexus.de

- 원시 코드를 16진수로 해석 가능하게 하는 프로그램이다. 위에서 저장한 원시코드 파일을 해석하기 위해 설치해준다.

 

- 위와 같이 hex edit 파일을 설치하고 실행 시켜준다.

 

- 위에서 원시 코드로 변형한 파일을 hex edit 프로그램에 드래그해서 집어 넣는다. 

 

- 다음과 같이 데이터가 들어간 것을 확인한 뒤

 

- 확장자를 png로 변경하여 저장해준다.

 

- 저장한 파일을 확인하게 되면 다음과 같이 위에 우리가 전송한 파일을 확인 할 수 있다.


- 위에서 생성한 인증서를 가지고 FTP를 암호화 하는 작업을 해볼 것이다.

ssl_enable=YES : 인증서 사용 여부

  rsa_cert_file=/etc/pki/tls/certs/ca.crt : 인증서 경로 지정

  rsa_private_key_file=/etc/pki/tls/private/ca.key : 개인키 경로 지정

  ssl_tlsv1=YES : ssl_tls 버전을 설정

 

- filezilla를 재실행 한 다음 연결을 해보면 다음과 같이 인증서를 통한 서버 접속을 확인하는 화면을 볼 수 있다.

  종단간 신뢰성 확보가 안된다. -> 사설 인증서이기 때문이다. 인증서의 내용은 나오며 암호화가 안되진 않는다. 신뢰성 확보만 힘들뿐이다.

 

- 위에서 주고 받았던 사진 파일을 이름을 변경하여 똑같이 windows -> 리눅스 ftp 서버로 전송한다.

TCP Stream​을 확인해보면 이전에는 서버와 클라이언트의 요청 응답 내용을 확인 할  수 있었지만 현재는 인증서를 통해 암호화 되었기 때문에 확인 할 수 없는 것을 볼 수 있다.


- HTTP, WEB에서의 인증서 사용

- 위의 사진 파일을 사용할 것이다.


https://insoobaik.tistory.com/101

 

Linux - HTTP

- 이번 포스팅은 리눅스에서 HTTP 설정에 대해 알아 볼 것이다. 리눅스에서 웹 서버 설정을 하여 웹 페이지를 만드는 작업을 해볼 것이다. 4. HTTP yum install -y httpd - http 패키지를 설치한다. rpm -qa htt.

insoobaik.tistory.com


- HTTP, WEB 작업이 되어있는 리눅스 서버에 해당 이미지 파일을 전송한다.

- 리눅스에서 생성한 웹 페이지 설정 파일에 해당 이미지 파일을 추가해준다.

 

- 웹 페이로 이동하게 되면 다음과 같이 이미지 파일이 뜨는 것을 확인할 수 있다.

 

- FTP에서와 마찬가지로 HTTP 또한 검색을 통해 HTTP의 패킷 흐름만 볼 수 있고 확인해보면 다음과 같이 HTTP 서버와 클라이언트가 요청과 응답을 주고 받은 것을 확인 할 수 있다.

 

- HTTP의 경우 원시 데이터 해석 필요없이 주고 받은 패킷에 포함되어 있는 이미지 파일을 바로 저장해서 확인하게 되면 다음과 같이 이미지 파일을 볼 수 있다.


- HTTP, WEB 인증서를 통한 암호화 작업

- ssl을 사용하기 위해 HTTP 서버가 설치된 리눅스 서버에 전부 mod_ssl 패키지를 설치해준다.

- ssl 설정과 관련된 파일 /etc/httpd/conf.d/ssl.conf 파일에서 인증서 사용을 위한 설정을 몇가지 수정해준다.

- 인증서 파일 경로, 개인키 파일 경로를 지정해준다. 이전에 사용자가 직접 키를 생성하고 인증서 및 개인키를 저장한 경로를 지정해주면 된다.

- 변경된 설정을 저장하고 적용하기 위해 시스템 재시작 및 ssl을 WEB에서 사용하기 위해 해당 방화벽을 열어준다. 참고로 443은 HTTPS에 해당하는 포트이고 HTTPS는 인증서를 통한 인증을 통해 접속 할 수 있다.

 

- 나머지 HTTP 서버가 존재하는 리눅스 서버도 똑같이 작업해준다.

 

- 사설 인증서는 신뢰성이 없기 때문에 해당 웹페이지가 이용자가 안전하지 않음을 인지하고 있음을 확인하는 버튼을 클릭해야 해당 웹 페이지로 이동 할 수 있다.

  위와 같이 https를 통한 웹 페이지 접근도 가능한 것을 확인 할 수 있다.

 

- HTTP 또한 TCP Stream을 통해 패킷 데이터를 확인해보면 다음과 같이 암호화 되어 내용을 알 수 없는 형태로 바뀐 것을 볼 수 있다.

728x90

'개발 > Linux' 카테고리의 다른 글

Linux - DNS (windows - 설정 확인)  (0) 2022.04.07
Linux - HTTP  (0) 2022.04.07
Linux - SSH (개인키, 공개키 2)  (0) 2022.04.04
Linux - MAC 필터링  (0) 2022.03.30
Linux - DHCP (IP주소 예약 기능)  (0) 2022.03.30