데비안 계열(유부투, 라즈비안)의 기본 방화벽은 ufw 입니다.
방화벽 설정은 포트 또는 아이피 단위로 허용, 거부를 설정 할 수 있습니다.
라즈베리 파이에 패키지 관리자 apt-get로 ufw 방화벽을 설치합니다.
sudo apt-get install ufw
설치 후 ufw는 비활성화인 상태이므로 활성화 시키도록 합니다.
sudo ufw enable
비활성화는 ufw disable 입니다.
sudo ufw disable
방화벽 설정 상태를 볼까요?
처음이면 아무것도 없어야 되는데 이라이더는 이미 설정한 값들이 보입니다.
sudo ufw status verbose Status: active Logging: on (low) Default: deny (incoming), allow (outgoing) New profiles: skip To Action From -- ------ ---- Anywhere ALLOW IN 아이피 21 ALLOW IN Anywhere 22 ALLOW IN Anywhere 3306/tcp ALLOW IN Anywhere 21 ALLOW IN Anywhere (v6) 22 ALLOW IN Anywhere (v6) 3306/tcp ALLOW IN Anywhere (v6)
ufw 의 기본룰은
들어오는 패킷은 전부 거부(inbound deny), 나가는 패킷은 전부 허용(outbound allow) 입니다.
기본 룰을 확인해 볼까요?
sudo ufw show raw
엄청 복잡하게 나옵니다.
알아보고 힘들고 간단하게 보고 싶으면 sudo ufw status verbose 명령으로 확인하세요
기본 정책의 inbound deny 정책이 맘에 안들 겁니다.
그래서 기본 정책을 차단 시킵니다.
sudo ufw default deny
반대로 기본 정책을 허용하려면 sudo ufw default allow 합니다.
어떤 포트를 열어야 될지 알아보고 위해 현재 열려 있는 포트를 확인해봅니다.
netstat -nap | grep LISTEN
방화벽 허용은 ufw allow 이고 거부는 ufw deny 입니다.
이제 방화벽에 특정 포트를 허용하는 명령입니다.
sudo ufw allow /
21번 포트를 허용해볼까요? (tcp/udp 모두 허용합니다)
sudo ufw allow 21
21번 포트의 tcp만 허용해볼까요?
sudo ufw allow 21/tcp
21번 포트의 udp만 허용해볼까요?
sudo ufw allow 21/udp
거부 명령은 allow 를 deny 로 바꾸면 됩니다.
sudo ufw deny 21/udp
서비스 포트 번호를 모르겠다면 서비스로 등록도 가능합니다.
sudo ufw
서비스 네임을 확인하는 명령입니다.
less /etc/services
특정 아이피(IP) 192.168.1.2를 허가하고 싶으면
sudo ufw allow from 192.168.1.2
특정 아이피(IP)의 tcp, 21 포트를 허가하고 싶으면
sudo ufw allow from 192.168.1.2 to any port 21 proto tcp
특정 아이피(IP)의 모든 프로토콜, 21 포트를 허가하고 싶으면
sudo ufw allow from 192.168.1.2 to any port 21
등록한 룰을 잘못 입력했다면 삭제합니다.
sudo ufw delete allow 21/tcp
이외에도 파일을 직접 편집하는 방법도 있습니다.
vi 에디터로 적은 이유는 vi 사용법을 모르는 사람은 함부로 건들지 말라는 뜻입니다.
sudo vi /etc/ufw/before.rules