기존의 패킷포워딩은 단순히 순방향의 IP테이블 정보만을 비교하여 수행되었으나, Reverse Path Forwarding (RPF)은 패킷이 왔던 역방향의 IP테이블도 함께 비교하여 만일 비정상적인 방향에서 패킷이 왔다면 이를 drop시킨다. 실제로 해커들이 DoS Attack등을 하기 위해 패킷을 injection할때 자신을 은폐하기 위하여 대개 IP주소를 조작해서 (IP Spoofing) 패킷에 싣게 되는데, RPF가 활성화된 라우터는 이러한 비정상적인 패킷을 감지하여 조기에 차단한다. RPF를 활성화시키기 위해서 리눅스에서는 다음과 같은 명령어를 실행시킨다.
# sysctl -w net.ipv4.conf.default.rp_filter=1
# sysctl -w net.ipv4.conf.all.rp_filter=1
# sysctl -w net.ipv4.conf.wlan0.rp_filter=1
# sysctl -w net.ipv4.conf.eth0.rp_filter=1
RPF가 과연 제대로 활성화되었는지 확인하기 위해서는 IP주소를 조작한 패킷을 보내서 테스트할 필요가 있다. 리눅스에서는 Mausezahn이라는 traffic generator 프로그램이 있는데, 이 프로그램을 통해 보내는 패킷을 쉽게 조작할 수 있다. 예를 들어,
# mz wlan0 -t ip -A rand -B x.x.x.x "hello"
를 실행시키면 wlan0 디바이스를 통해 x.x.x.x의 주소로 "hello"라는 payload를 싣고 랜덤한 IP주소를 소스로 하여 패킷을 보낼 수 있다. 하지만 어디까지나 내부네트워크에서 실험용도로만 사용해야 하며, 실제 외부서버를 공격하는데 사용하면 형사처벌을 당할 수 있다.
rp_filter 옵션은 symmetric 라우팅의 경우에만 유효하며, IPsec등과 같은 보안체계 suite와 함께 사용시 문제를 일으킬 수 있는 것으로 알려져 있다.
# sysctl -w net.ipv4.conf.default.rp_filter=1
# sysctl -w net.ipv4.conf.all.rp_filter=1
# sysctl -w net.ipv4.conf.wlan0.rp_filter=1
# sysctl -w net.ipv4.conf.eth0.rp_filter=1
RPF가 과연 제대로 활성화되었는지 확인하기 위해서는 IP주소를 조작한 패킷을 보내서 테스트할 필요가 있다. 리눅스에서는 Mausezahn이라는 traffic generator 프로그램이 있는데, 이 프로그램을 통해 보내는 패킷을 쉽게 조작할 수 있다. 예를 들어,
# mz wlan0 -t ip -A rand -B x.x.x.x "hello"
를 실행시키면 wlan0 디바이스를 통해 x.x.x.x의 주소로 "hello"라는 payload를 싣고 랜덤한 IP주소를 소스로 하여 패킷을 보낼 수 있다. 하지만 어디까지나 내부네트워크에서 실험용도로만 사용해야 하며, 실제 외부서버를 공격하는데 사용하면 형사처벌을 당할 수 있다.
rp_filter 옵션은 symmetric 라우팅의 경우에만 유효하며, IPsec등과 같은 보안체계 suite와 함께 사용시 문제를 일으킬 수 있는 것으로 알려져 있다.
덧글|신고