Simple is IT, 누구나 보고 누구나 깨닫는 IT

웹 서버의 보안구성 https settings 본문

Simple is IT/Server

웹 서버의 보안구성 https settings

currenjin 2020. 5. 7. 10:16

SSL 모듈을 이용해 https 구성하기

yum install httpd -y, httpd 설치 (모듈에 대한 설정을 하기 위함)

( /var/www/html/ : Default Path, httpd.conf DocumentRoot의 경로로 지정되어있다. )

#Server Token

- Http Header를 구성

/etc/httpd/conf/httpd.conf

ServerTokens Prod // Header에서 가장 적은 정보만 알려줄 수 있도록

systemctl restart httpd

netcat을 이용해 GET

Header 부분 최소한의 정보만을 보여주는걸 알 수 있다.

process 확인해보기

web 접속 후

netstat -anlp | grep :8

ESTABLISHED로 연결 확인

-> 해당 연결이 자동으로 끊기게 하려면 Timout 설정을 하면 된다.

# httpd를 실행하게 될 때 리눅스의 옛날 버전 같은 경우는 root로 실행하게 된다

-> 문제가 발생하면 일반 사용자가 Root의 권한으로 서버를 다루는 불상사가 생김

/etc/httpd/conf/httpd.conf에서 해당 설정을 해준다.

아래와 같이 다른 계정으로 실행할 수 있도록 결정한다.

<Directory "경로">

Options FollowSymLinks // 심볼릭 링크를 허용한다. (보안에 취약)

AllowOverride None // AccessFileName에 지정된 파일을 액세스 인증파일로 인식하지 않는다. (제한적)

AllowOverride Fileinfo // AccessFileName 지시자에 대한 명시한 파일에 대하여 제어하는 지시자 사용을 허용한다.

AllowOverride Limit // AccessFileName 지시자에 대한 명시한 파일에 대하여 호스트 접근의 여부를 결정한다.

</Directory>

ex) /var/www/html/a 에 대해 지시자 허용을 한 후

touch /var/www/html/a/.htaccess

추가 : deny from all

/var/www/html/a 디렉토리에 접근을 하게되면

다음과 같이 경로에 대한 파일들이 나타나게 된다.

이때, /var/www/html/a/

Options FollowSymLinks 옵션을 추가해준다음 접속을 해보면

위와 같이 차단내용이 출력된다.

AccessFileName .config

특정 파일에게만 접근을 제어하기 위해선 해당 파일 내용에

이런 내용을 추가해준다.

마찬가지로 차단내용이 출력되는 모습

HTTP의 암호화

암호화의 기본

암호문 : 평문을 암호화 해 변형한 메시지

- 알고리즘 : 평문을 암호문으로 만드는 과정

복호화 : 암호문을 평문으로 변형한 메시지

- 알고리즘 : 암호문을 평문으로 환원하는 과정

암/복호화 Key

: 암호화나 복호화에 필요한 추가 정보 (Key가 없으면 암호문을 복호화 할 수 없도록 하기 위함)

대칭키 (관용키, 블록암호시스템 : DES, AES 등)

: 암호화 키 = 복호화 키

비대칭키 (공개키, RSA, ECC 등)

: 암호화 키 != 복호화 키

(Public Key로 잠그면 무조건 Private Key로 열림 또는 그 반대, MITM 공격에 취약)

PKI

공개키를 기관같은 곳에서 인증해주는 제도 (RootCA, CA 등)

HTTPS 구성 실습

yum install openssl mod_ssl -y

openssl version

openssl req -x509(양식) -nodes -days 365(유효기간) -newkey rsa:2048(방식) -keyout ~/webserver.key -out ~/webserver.crt

각 요구조건에 맞게 설정해준 후

cd ~/

ls

cd /usr/lib64/httpd/modules/

ls

후에 /etc/httpd/conf.d/ssl.conf 파일이 생겨 해당 파일을 설정해준다.

#100 SSLCertificateFile [Crt 경로 지정]

#107 SSLCertificateKeyFile [Key 경로 지정]

systemctl restart httpd

netstat -anlp | grep :443

https://[IP]

접속 가능

정식 기관에서 인증해준 인증서가 아니기에 나타나는 문구

ssl 설정 과정에서 셋팅했던 인증서의 모습들이 나온다.

해당 아이피로 들어오는 사용자는 https로 Redirect

/etc/httpd/conf/httpd.conf

<VirtualHost [IP주소 : PortNumber]>

DocumentRoot /var/www/html/a

Redirect / https://[IP]/

</VirtualHost>

/etc/httpd/conf/ssl.conf

<VirtualHost _default_:443>

DocumentRoot "/var/www/html/a"

systemctl restart httpd

포트들도 모두 열려있는 것을 확인할 수 있다.



Comments