Kali에서 iptables로 방화벽 설정하기

LinuxBeginner
지금 연습하기

소개

방화벽 규칙은 필요한 서비스를 유지하면서 의도한 접근 경계를 만들 때만 유용합니다. 기본 ACCEPT 정책 아래에 허용 규칙을 추가하는 것만으로는 누군가 제한되었다고 입증할 수 없습니다.

이 실습은 전용 Kali 서비스와 연습 클라이언트 두 개를 제공합니다. 초기 접근을 확인하고 Kali에 순서가 있는 출발지 기반 규칙을 적용하고 연습 정책을 저장 및 복원한 뒤 두 클라이언트 경로를 테스트합니다.

접근 제한 전에 교육용 네트워크 관찰하기

이 단계에서는 제공된 두 클라이언트의 관점에서 테스트하고 교육용 서비스를 보호하는 방화벽을 확인합니다.

실습은 VM 안에 작은 전용 네트워크를 제공합니다. Kali 교육 서비스는 172.30.77.10:8080에 있습니다. 허용할 클라이언트는 172.30.77.20, 차단할 클라이언트는 172.30.77.30을 사용합니다. 처음에는 둘 다 접근 가능합니다. 이는 공개 대상이 아니라 연습 네트워크 주소입니다.

처음 열린 Ubuntu 호스트 Terminal에서 시작하세요. 준비된 training-client 명령어는 지정된 연습 클라이언트에서 요청합니다. 호스트에서 실행되며 방화벽 관리는 Kali 안에서 수행합니다. 공유 작업 공간을 선택하세요.

cd /home/labex/project

허용할 클라이언트의 초기 HTTP 상태를 저장하세요.

training-client allowed > allowed-before.txt
cat allowed-before.txt

상태 줄에는 200 OK가 있어야 합니다. 다른 클라이언트의 초기 접근을 기록하세요.

training-client blocked > blocked-before.txt
cat blocked-before.txt

이 결과도 200 OK를 보고해야 합니다. 이름은 차단할 클라이언트를 나타내며 초기 상태를 뜻하지 않습니다.

이제 Kali에 들어가 방화벽을 확인하세요.

kali

Iptables는 체인에서 패킷 필터링 규칙을 평가합니다. INPUT은 이 환경으로 향하는 패킷을, OUTPUT은 로컬에서 생성한 패킷을, FORWARD는 라우팅되는 패킷을 처리합니다. -L INPUT은 입력 체인을 나열하고, -n은 주소와 포트를 숫자로 유지하며, -v는 카운터를 포함합니다.

sudo iptables -L INPUT -n -v

연습 체인의 초기 정책은 ACCEPT입니다. 체인 정책은 패킷의 처리를 이미 결정한 규칙이 없을 때 적용됩니다. 이 실습은 기본 정책과 호스트 방화벽을 그대로 두면서 전용 서비스의 좁은 규칙을 추가합니다.

순서가 있는 서비스 정책 적용 및 저장하기

이 단계에서는 같은 서비스에 대해 다른 연습 네트워크 출발지를 거부하기 전에 할당된 클라이언트를 허용합니다.

Kali 안에 머무르세요. -A INPUT은 입력 체인에 규칙을 추가하고, -p tcp는 TCP와 일치시키며, -s는 출발지 주소와 일치시킵니다. --dport는 목적지 포트를 선택하고 -j는 동작을 선택합니다. 좁은 허용 규칙을 먼저 추가하세요.

sudo iptables -A INPUT -p tcp -s 172.30.77.20 --dport 8080 -j ACCEPT

다음으로 전용 연습 서브넷의 다른 출발지에서 같은 포트로 오는 트래픽을 거부하세요. /24 접두사는 172.30.77.0 네트워크 범위를 식별합니다.

sudo iptables -A INPUT -p tcp -s 172.30.77.0/24 --dport 8080 -j REJECT

규칙은 순서대로 평가됩니다. 허용된 출발지는 평가를 끝내는 첫 ACCEPT 규칙과 일치하며 다른 연습 클라이언트는 뒤의 REJECT 규칙에 도달합니다. 순서를 바꾸면 허용 클라이언트도 거부됩니다. 다른 포트와 출발지는 변경하지 않은 기본 정책을 계속 따릅니다.

규칙 순서와 카운터를 표시하세요. --line-numbers는 각 규칙의 위치를 포함합니다.

sudo iptables -L INPUT -n -v --line-numbers

첫 규칙은 할당된 클라이언트의 TCP 8080을 허용하고 뒤 규칙은 해당 서비스의 나머지 연습 서브넷 트래픽을 거부해야 합니다.

iptables-save는 활성 규칙을 복원할 수 있는 형식으로 출력합니다. 연습 설정을 공유 작업 공간에 저장하세요.

sudo iptables-save > /home/labex/project/training.rules

셸의 < 연산자는 파일을 명령어의 표준 입력으로 제공합니다. iptables-restore는 저장된 설정을 읽습니다. 여기서는 방금 저장한 연습 규칙을 정확히 복원합니다.

sudo iptables-restore < /home/labex/project/training.rules

이는 전용 Kali 네트워크 환경에서만 작동합니다. 좁은 서비스 제한을 위해 호스트 방화벽을 비우거나 기본 정책을 교체하지 마세요.

허용 및 거부된 클라이언트 접근 검증하기

이 단계에서는 두 클라이언트 출발지에서 정책을 테스트하고 교육 서비스가 계속 사용 가능함을 확인합니다.

제공된 클라이언트 관점을 사용하도록 Kali에서 Ubuntu 호스트 Terminal로 돌아오세요.

exit

호스트 프롬프트에는 labex가 표시됩니다. 허용된 클라이언트의 새 결과를 기록하세요.

training-client allowed > /home/labex/project/allowed-after.txt
cat /home/labex/project/allowed-after.txt

여전히 200 OK를 보고해야 합니다.

의도적으로 차단한 클라이언트이므로 다음 명령어는 연결 거부나 다른 연결 오류로 실패하는 것이 정상입니다. 이 의도한 실패 후에도 계속 진행하세요.

training-client blocked

차단 클라이언트의 요청 실패는 허용 경로가 여전히 작동할 때만 의미가 있습니다. 웹 서비스를 중지하면 양쪽 경로가 모두 깨지므로 필요한 정책을 입증하지 못합니다.

Kali로 돌아가 테스트 후 카운터를 확인하세요.

kali
sudo iptables -L INPUT -n -v --line-numbers

관련 규칙 카운터가 증가해야 합니다. 규칙 텍스트뿐 아니라 실제 트래픽 동작을 확인했으며 연습 내내 LabEx 호스트 Terminal은 사용 가능한 상태입니다.

요약

체인 정책을 살펴보고 서비스 하나에 순서가 있는 출발지 기반 규칙을 추가하고 연습 설정을 저장 및 복원하고 두 클라이언트에서 실제 접근을 테스트했습니다. 허용된 출발지와 서비스는 사용 가능하게 유지되었고 지정된 출발지는 거부되었습니다.