우분투 UFW 방화벽 설정하기 (+Docker 이슈)

CloudJun·2021년 4월 16일
0

나는백엔드

목록 보기
2/5
post-thumbnail

리눅스 서버를 세계에 던저둘 예정이라면 꼭 사용해야하는 방화벽입니다.

UFW란 iptables 방화벽 구성을 쉽게 설정해주는 편한 친구인데 우분투를 처음 설치하면 같이 깔려있지만 UFW는 기본적으로 비활성화 되어 있습니다. 사내 테스트 서버에 UFW 설정이 필요하여 이참에 한번 깔끔하게 정리해본 글을 공유합니다.

🐳 도커에서 UFW가 적용되지 않는 문제가 있어요.

Docker를 같이 사용하고 있다면 Docker에 UFW가 제대로 적용 안되고 접속이 되는 현상이 있을 수도 있다. Docker가 방화벽 룰을 무시하고 직접 IPtables를 건들이다보니 발생하는 문제로 다음과 같이 수정 하면 같이 적용 됩니다.

모든 국내 블로그에서는 iptables을 false로 바꿔버리라고 하던데 이러면 컨테이너 내부 IN Network가 동작하지 않습니다.

아래에 제가 적은 글을 참조하세요.
https://velog.io/@cloudjun/UFW-DOCKER-%EC%A0%9C%EB%8C%80%EB%A1%9C-%EB%B0%A9%ED%99%94%EB%B2%BD%EC%97%90-%EC%A0%81%EC%9A%A9%EB%90%98%EC%A7%80-%EC%95%8A%EB%8A%94-%EB%AC%B8%EC%A0%9C

이후 도커 서비스를 재실행하면 UFW룰에 함께 적용됩니다.

$ systemctl restart docker

👀 UFW 활성화 / 비활성화 / 상태 확인

$ sudo ufw enable //활성화
$ sudo ufw disable //비활성
$ sudo ufw status //상태 확인

status는 상태 확인 뿐만 아니라 지금 방화벽에 적용된 룰도 함께 확인 가능


🧐 전체 적용

기본 정책 확인 (전체 적용)

$ sudo ufw show raw // 기본 정책 확인
$ sudo ufw default deny // 기본 정책 차단 (들어오는 패킷 | 나가는 패킷 둘다 ) 
$ sudo ufw default allow // 기본 정책 허용 

UFW 허용 & 차단

$ sudo ufw allow 22 // 22번 포트를 전체 개방
$ sudo ufw allow 22/tcp //tcp 22번 포트를 개방
$ sudo ufw allow 22/udp // udp 22번 포트 개방 

$ sudo ufw deny 22 // 22번 포트를 전체 차단
$ sudo ufw deny 22/tcp // tcp 22번 포트를 차단 
$ sudo ufw deny 22/udp // udp 22번 포트를 차단

UFW 룰 삭제

$ sudo ufw delte deny 22 //22번 포트 룰을 전체 삭제 (tcp /udp 둘다)
$ sudo ufw delte deny 22/tcp //22번 TCP 룰을 삭제 

UFW 룰 삭제 - 더 꼼꼼히

$ sudo ufw status numbered // 정책 룰에 숫자를 붙일 수 있음

$ sudo ufw delete 1 // 룰 숫자에 따라 삭제

😎 개인 적용

특정 아이피만 허용

$ sudo ufw allow from 192.168.0.7 // 192.168.0.7 아이피에서는 모든 포트에 접근 가능
$ sudo ufw allow from 192.168.0.0/24 //192.168 대역을 가진 아이피에서 모두 접근 가능

allow 대신 deny 적용시 차단

특정 아이피 & 포트만 허용

192.168.0.7 아이피는 22번 포트만 접근

$ sudo ufw allow from 192.168.0.7 to any port 22

✌️ 추가적으로.

PING 거부하기

cmd 또는 터미널에서 ping 명령어로 서버를 체크하는 경우가 있는데 icmp를 거절 하게 설정 할 수 있다.

sudo nano /etc/ufw/before.rules

-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT 
-A ufw-before-input -p icmp --icmp-type source-quench -j ACCEPT 
-A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT 
-A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT 
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT
profile
짧고 굵게 살아가는 백엔드 개발자

1개의 댓글

comment-user-thumbnail
2021년 5월 16일

아주 잘 읽었습니다. 벨로그는 구독 기능이 없나봅니다?

답글 달기