먼저 이 작업을 해보게된건 일을 하면서 test를 하기 위하여 작업을 하게되었다.
물론 누가 하라고 시킨건 아니지만.. 성격상 뜯어봐야한다..
하지만 원래 의도한 테스트는 두가지 문제점에 의해 포기하게 되었다.
1. 600개가 넘는 동적 ip 사용을 하여 조회
2. 이 ip들이 언제 바뀌는지 알 수가 없고, cron으로 주기성 크롤링, 방화벽 등록, 해제 등의 작업을 하기에는 리스크가 너무 크다.
서버 스펙
ubuntu 20.04
Standard B2s(2개 vcpu, 4GiB 메모리)
이전 학원에서 프로젝트를 할때는 GCP(구글클라우드)에서 바로 보안규칙 등을 설정하고 반영을 했었는데, AZURE로 사용하려니 뭐가 생각보다 복잡했다.
그리고 사내 관리자가 별도로 있어서 내가 조회할 수 있는 권한이 제한적이었다.
따라서 서버내부에서 설정을 하기로 하였다.
구글링을 하다보니 sshd 설정을 하면 특정 ip만 허용할 수 있다고 했다. 밥먹듯 ssh 접속하면서 왜 눈떠놓고 제대로 보질 못하니
minimin2님의 블로그를 보고 참고하였다.
sudo vi /etc/hosts.allow
sshd : 192.168.0.1 과 같이 허용하고 싶은 여러 ip주소를 기입해놓았다.
sudo vi /etc/hosts.deny
거부하는 IP를 추가
sshd : ALL로 모두 추가하였다.

접속 거부.
내 ip를 ipfonfig \all로 확인했었는데 제대로 확인 안해서 다른걸 입력해버렸고, 접속이 끊겼더니 접속이 안됐다.
하지만 나에겐 혹시나 모를 이런 상황을 대비하여 떠놓은 스냅샷이 있었지.
결국 UFW로 내가 원하던 작업을 진행했다.
우분투에서는 ufw로 설정을 해줄 수 있다고 한다.
그래서 ubuntu firewall인가? 했는데 Uncomplicated Firewall였다. 역시 사람은 배워야한다.. (어디가서 우분투 파이어월... 이라고 할뻔?)
sudo ufw enable 방화벽 설정 가능하게 하기
테스트용으로 사용중인 mysql과 postgresql를 등록했다.


이렇게 했을경우 모든 ip에서 다 접속이 가능하다.
따라서 기존 세팅을 거부해준다.
sudo ufw default deny
이후 확인해봤는데 여전히 모든 포트가 다있다.
sudo ufw status verbose
하나씩 지워준다.

3.1먼저 해당 포트설정의 번호를 확인
sudo ufw status numbered

sudo ufw delete 1
1번을 계속 지워준다. 여러개 한번에 지워지지가 않았다.
그래서 계속 status 조회하면서 지워줬다.

sudo ufw allow from <허용할 ip주소 > to any port 3306
로 3306 그리고 5432포트를 허용해주었다.
끝.
원하던 설정이 되었음을 의도한 서비스에서 db 조회가 안되는 것을 보고 확인할 수 있었다.
하지만.... 해당 서버 유동 ip 어떻게 해결하지.. 그냥 서비스에서 제공하는 공식 게이트웨이 프로그램을 써서 데이터 전송하는 수 밖에 없는 것 같다..