코학의 개인 블로그

#2 Ubuntu 18.04 LTS 에서 방화벽 설정 및 실제 사용준비 본문

[개발자]DFR-웹언어/Ubunut 18.04

#2 Ubuntu 18.04 LTS 에서 방화벽 설정 및 실제 사용준비

KOHAK 2020. 12. 28. 23:46


안녕하세요, 저는 여러분들께 Ubuntu 18.04 LTS 운영체제에서 방화벽 설정 및 실제 사용준비 방법에 대해 설명할 [개발자]DFR의 코학입니다.

구축 중 문의사항이 생기면 댓글로 알려주세요.

 

[해당 게시글 환경]

OS: Ubuntu 18.04 LTS

Host: Linode Tokyo

 

이 게시글은 관리자인 상태로 진행했습니다.

참고한 블로그 [클릭]


1-1) ipv6 끄기

ipv6 설정

# vi /etc/sysctl.conf

맨 아래 내용을 추가해주세요.

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

설정파일 적용

# sysctl -p

적용되었는지 검사

# cat /proc/sys/net/ipv6/conf/all/disable_ipv6

1 이면 적용 된 상태이다.

 

1-2) 방화벽 설정

일단 시작하기전에는 나는 클라우드플레어를 사용중인데

이 게시글에서는 설정할 것은 클라우드플레어에서 오는 ip를 제외한 모든 ip를 접근거부하게 설정할 생각이다.

다운로드

# wget https://raw.githubusercontent.com/scriptzteam/CloudFlare-ONLY-IPs/master/install.sh

실행

# sh install.sh

loopback 허용

소프트웨어들이 localhost 어댑터와 통신이 되어야 하기때문에 필요합니다.

# iptables -A INPUT -i lo -j ACCEPT 

PING 차단

솔직히 이거는 차단하든 안하든 상관은 없는데 저는 차단합니다.

# iptables -A INPUT -p icmp -j DROP

INPUT과 FORWARD 차단

위에서 이미 기본적으로 설정은 다했습니다.

# iptables -P INPUT DROP
# iptables -P FORWARD DROP

확인

# iptables -nL

지금 상태로는 접속이 안될겁니다.

 

1-3)도메인 주소 준비하기

도메인을 준비하여 서버 IP랑 연결을 한다.

(지금 상태는 클라우드플레어만 접속허용이다.

 

2) 사용자 계정 생성

사용자 추가 - 보통 도메인의 앞단어를 사용합니다.

# adduser [도메인 앞주소]

비밀번호는 root랑 같게하면 편합니다.

 

디렉토리 생성

# su -l [유저이름]
# mkdir www
# exit

 

2-1) 무료 SSL 발급

 dhparam.pem 파일 생성

# openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

시간이 조금 오래 걸립니다.

 

인증서 발급

# letsencrypt certonly --webroot --webroot-path=/home/[사이트 앞주소]/www -d [사이트주소.com] -d [www.사이트주소.com]

 

3) 웹사이트 Nginx 환경설정파일 작성

환경설정파일 생성기를 만드신 분이 계십니다.[이분]

그분꺼를 이용할 예정입니다.

 

Nginx 환경설정 생성기

webmaster.cafe/tools/nginx-conf-generator/my-example-site.com.php

 

자신의 환경에 맞추어 입력하시면 됩니다. 

사용자 이름은 도메인 앞부분으로 해주시면 됩니다.

exsite.com이라면 exsite를 입력.

위치또한 도메인 앞부분을 해주세요.

 

그후 받은 내용을 저장해주세요.

# vi /etc/nginx/conf.d/[도메인주소].conf

4)php pool 파일 생성

PHP-FPM Pool 파일 생성

# vi /etc/php/7.4/fpm/pool.d/[도메인 앞부분].conf

밑부분을 수정하여 입력해주세요.

[[도메인 앞부분]]
user = [도메인 앞부분]
group = [도메인 앞부분]

listen = /run/php/[도메인 앞부분].sock
listen.owner = [도메인 앞부분]
listen.group = www-data

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35

php_admin_value[session.cookie_httponly] = 1
php_admin_value[session.use_strict_mode] = 1

; save std error to /var/log/php7.4-fpm.log
catch_workers_output = yes

; save slow process
slowlog = /var/log/php-fpm.[도메인 앞부분].slow.log
request_slowlog_timeout = 10

; php only timeout
php_admin_value[max_execution_time] = 30

; all timeout (php+mysql+exec+fopen+...) (use it carefully.)
;request_terminate_timeout = 90

;php_admin_value[post_max_size] = 25M
;php_admin_value[upload_max_filesize] = 25M

;php_admin_value[session.name] = "MY_SESSION_ID"
;php_value[session.save_path] = /home/[도메인 앞부분]/.php-session

;access.log = /var/log/php-fpm.[도메인 앞부분].access.log
;access.format = "%t %{REMOTE_ADDR}e \"%m %r%Q%q\" %s %f TIME:%{mili}dms MEM:%{kilo}MK CPU:%C%%"

;php_admin_flag[log_errors] = on
;php_admin_value[error_log] = /var/log/php-fpm.[도메인 앞부분].error.log

;php_admin_value[memory_limit] = 128M
;php_admin_value[max_input_time] = 90
;php_admin_value[max_input_vars] = 3000

nginx 및 php-fpm 재시작.

 

# service nginx reload
# service php7.4-fpm reload

 

이상 #2 방화벽 설정 및 실제 사용준비를 마침니다.

다음은 #3 여러가지 설치로 찾아 뵙겠습니다.

 

Comments