spoofing을 src == dst 이렇게 한 경우, 테스트

doraq의 이미지

IP spoofing 에 관해 테스트 중입니다.

환경은 이렇습니다.

1. PC + Ubuntu(virtual box)

2. target board(android 9.0)

target에는 wifi hotspot이 있어서(유선은 없습니다) 켜두고 윈도우PC에서 wifi로 target의 hotspot에
연결하면 Ubuntu와 target 사이에 192.168.5.x 망 으로 연결됩니다.

Ubuntu에서:
hping3 192.168.5.1 -S -a 192.168.5.1
위와같이 src IP를 dst와 같게 spoofing 하여 target(192.168.5.1)으로 쏩니다.

target에서:
iptables -N LOGTEST
iptables -A LOGTEST -j LOG --log-prefix "[firewall]"
iptables -A INPUT -j LOGTEST
(모든 INPUT 패킷을 다 로그에 남겨라) 해놓고,

또한
tcpdump -nni wlan0
이렇게 관찰하면, spoofing한 패킷이 tcpdump상에서는 유입되는게 보입니다.
(tcpdump는 INPUT체인 보다 더 전단계인건 알고있습니다)
그러나 iptables log에는 모든게 다 로깅되어야 하는데 src가 192.168.5.1 인것은 안보입니다.

그래서 spoofing을 src = 192.168.5.99 이렇게 해보면 iptables log에 나옵니다.

즉, src == dst 인것만 iptables 에 아무 조치도 안했음에도 INPUT 체인을 통과하지 못하고 있습니다.

왜 이럴까요? 어느놈이 저 패킷을 거르는 걸까요?
윈도우 방화벽에서 거르나 싶어서 방화벽도 꺼봤으나, 마찬가지고
target에도 저 로깅하는 rule 외엔 어떠한 iptables 룰도 더 이상 없는거도 확인했습니다.

src IP가 될수없는 알려진 IP대역들 은 kernel어디선가 자동으로 처리해버리는 걸까요?

일단 이유를 알고 싶구요.
이단으로는, src=dst 인 패킷을 거르는 iptables rule을 추가후 그게 먹힌다는걸 보여주는
테스트 과정을 만들어야하는데, 문제네요.

도와주세요

익명 사용자의 이미지

말씀하신것을 보았을 때에는 일단 nat테이블의 PREROUTING 체인에서 packet count가 늘어나는지 확인할 필요가 있어 보입니다.

익명 사용자의 이미지

이런것들의 설정이 필요하지 않을까요?

http://faq.hostway.co.kr/Linux_ETC/7986

ap4200의 이미지

리눅스 커널에 fib_validate_source 함수가 있는데, 해당 함수는 source IP address를 검사해요
source IP가 잘못된 경우 패킷을 조용히 DROP해요.
해당 함수는 당연히 라우팅 루틴에서 수행되기 때문에 INPUT hook으로 가기전에 패킷을 버려요
그래서 INPUT chain에서는 확인하실 수 없어요
iptables -t raw -I PREROUTING -s 192.168.5.1로 하면 보일거에요
taw 테이블의 PREROUTING hook은 L3 라우팅이 수행되기 전에 수행되기 때문에 원하는 LOG가 잡혀요.
그리고, rpfilter(reverse path filter)기능에 대해서도 한번 확인해보세요
sysctl net.ipv4.conf.<인터페이스 이름>.rp_filter

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.