알아두면 편리한 nginx, certbot, ufw 커맨드들
한번 설정해두면 바꿀 일이 많이 없어서 자주 사용하지는 않지만, 그렇기 때문에 더더욱 정리해두면 다음에 필요할 때 다시 찾아보지 않아도 바로 쓸 수 있는 nginx, certbot, ufw 커맨드들을 정리해보았다.
기준은 Ubuntu 서버.
nginx
nginx는 기본적으로 /etc/nginx/sites-available
과 /etc/nginx/sites-enabled
로 구성되어있다. site-available
에 우선 각 도메인에 대한 서버 블록 관련 설정 파일들을 저장해두고 그걸 활성화 할땐 해당 설정 파일을 sites-enabled
쪽에 링크를 만들어주는 방식이다.
예를 들어 도메인이 example.com이라고 가정하면 우선 /etc/nginx/sites-available/example.com
에 설정 파일을 생성. 해당 도메인에 대한 웹 서버를 활성화 하고 싶으면 다음 커맨드로 링크를 만들어준다.
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
해당 웹 서버를 비활성화 하고 싶으면 링크를 해제
sudo unlink /etc/nginx/sites-enabled/example.com
설정파일 검증 및 적용
서버 블록 설정 파일에 에러가 없는지는 다음 커맨드로 확인 가능하다.
sudo nginx -t
문제가 없으면 Nginx를 reload해서 적용
sudo nginx -s reload
Reverse Proxy용 서버 블록 템플릿
server {
server_name service1.mydomain.com;
access_log /var/log/nginx/service1.log;
error_log /var/log/nginx/service1-error.log error;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://<host_ip>:<port>;
proxy_redirect off;
}
}
certbot
이제 ssl 통신은 선택이 아닌 필수이다. 무료로 Let's Encrypt를 통해 SSL 인증서를 발급 및 적용할 수 있게 도와주는게 certbot이다.
설치
certbot을 설치하기 위해서는 다음 커맨드를 실행한다.
sudo apt install snapd
sudo snap install --classic certbot
인증서 발급 및 적용
nginx를 웹서버로 사용하고 있는 경우 기본적인 웹 서버 설정만 nginx 서버 블록에 써주고 인증서 관련된 부분은 certbot에 맡기면 편하다. 예전에는 일일이 nginx 서버에 ssl 관련 부분을 손수 기재해야 했지만 이젠 certbot이 자동으로 해준다.
발급 및 nginx 적용은 다음 커맨드.
sudo certbot --nginx -d <도메인명>
인증서 자체는 90일동안 유효한데, 갱신도 알아서 해준다. 이젠 cronjob을 설정해주지 않아도 갱신까지 알아서 해주니 얼마나 편한가.
http 접속 차단 및 자동 https로 전환해주는 서버 블록 설정도 자동으로 nginx 서버 블록에 추가해준다.
인증서 삭제
인증서를 삭제하고 싶을 땐 다음 커맨드.
sudo certbot delete
그러면 certbot으로 발급/설치 한 인증서 목록이 나온다. 삭제하고 싶은 인증서 번호를 입력하고 엔터하면 인증서가 삭제 된다.
ufw
방화벽 설치는 서버 보안을 위해서 해두는 것이 좋다. ufw를 이용해서 간단하게 설정이 가능하다.
ufw를 활성화 하면 기본 설정으로는 열어두지 않은 포트에 대한 접속은 모두 막히게 된다.
방화벽 룰 추가
모든 IP에서 해당 포트에 대한 접속을 허용하고 싶은 경우에는 다음 커맨드. 예를 들어 일반적으로 ssh 접속에 사용되는 22번 포트에 대한 접속을 허용하고 싶은 경우
sudo ufw allow 22
tcp 접속에만 허용하고 싶은 경우
sudo ufw allow 22/tcp
upd 접속에만 허용하고 싶은 경우
sudo ufw allow 22/udp
특정 IP만 허용하고 싶은 경우. 예를 들어 내부망에서만 ssh 접속을 허용하고 싶고 내부망의 DHCP 서버가 192.168.1.0인 경우
sudo ufw allow from 192.168.1.0/24 to any port 22
방화벽 활성화
sudo ufw enable
방화벽 룰 및 상태 확인
sudo ufw status numbered
방화벽 룰 삭제
상태 확인 커맨드로 확인 된 각 룰의 번호를 참조하여 아래 커맨드 실행
sudo ufw delete <룰번호>
서버 관련 설정을 바꾸거나 추가 할 때 자주 사용되는 커맨드들을 필요할 때 바로 참조하기 위해서 정리해보았다. 다른 분들에게도 도움이 되었으면 하는 바람이다.