INPUT 체인에서 불필요한 UDP 트래픽을 모두 삭제하는 방법은 무엇입니까?

INPUT 체인에서 불필요한 UDP 트래픽을 모두 삭제하는 방법은 무엇입니까?

약 2주 전에 저는 TCP에서만 실행되는 Tor 릴레이를 실행하기 시작했습니다.

따라서 원치 않는 모든 UDP 패킷을 삭제하고 싶습니다.

하지만 실제로 필요한 것이 무엇인지는 모르겠습니다.

내 방화벽은 정상 작동 후 약 1일 후에 다음과 같이 보입니다.내 TCP 보호 규칙을 대신하여 댓글을 달거나 답변하지 않도록 주의하세요., 방금 개인적인 조사를 해봤습니다.

iptables -L -v --line-numbers

Chain INPUT (policy DROP 17862 packets, 1945K bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 DROP       icmp --  any    any     anywhere             anywhere             u32 ! "0x4&0x3fff=0x0" /* ICMP fragmented packets */
2        0     0 DROP       icmp --  any    any     anywhere             anywhere             length 1492:65535 /* ICMP oversized unfragmented packets */
3        1  1500 DROP       tcp  --  any    any     anywhere             anywhere             tcp flags:FIN,SYN,RST,PSH,ACK,URG/NONE /* NULL scan */
4        0     0 DROP       tcp  --  any    any     anywhere             anywhere             tcp flags:FIN,SYN,RST,PSH,ACK,URG/FIN,SYN,RST,PSH,ACK,URG /* Xmas scan */
5        0     0 DROP       tcp  --  any    any     anywhere             anywhere             tcp flags:FIN,SYN,RST,PSH,ACK,URG/FIN,PSH,URG /* stealth scan */
6        0     0 DROP       tcp  --  any    any     anywhere             anywhere             tcp flags:FIN,SYN,RST,PSH,ACK,URG/FIN,SYN,RST,ACK,URG /* pscan 1 */
7        0     0 DROP       tcp  --  any    any     anywhere             anywhere             tcp flags:FIN,SYN/FIN,SYN /* pscan 2 */
8        0     0 DROP       tcp  --  any    any     anywhere             anywhere             tcp flags:FIN,RST/FIN,RST /* pscan 3 */
9        2   104 DROP       tcp  --  any    any     anywhere             anywhere             tcp flags:SYN,RST/SYN,RST /* SYN-RST scan */
10       0     0 DROP       tcp  --  any    any     anywhere             anywhere             tcp flags:ACK,URG/URG /* URG scan */
11       0     0 DROP       tcp  --  any    any     anywhere             anywhere             tcp flags:FIN,SYN,RST,PSH,ACK,URG/FIN,SYN /* SYN-FIN scan */
12       0     0 DROP       tcp  --  any    any     anywhere             anywhere             tcp flags:FIN,SYN,RST,PSH,ACK,URG/FIN,PSH,URG /* nmap Xmas scan */
13       0     0 DROP       tcp  --  any    any     anywhere             anywhere             tcp flags:FIN,SYN,RST,PSH,ACK,URG/FIN /* FIN scan */
14       0     0 DROP       tcp  --  any    any     anywhere             anywhere             tcp flags:FIN,SYN,RST,PSH,ACK,URG/FIN,SYN,PSH,URG /* nmap-id scan */
15       0     0 DROP       all  -f  any    any     anywhere             anywhere             /* fragmented packets */
16    5049 1668K DROP       all  --  any    any     anywhere             anywhere             ctstate INVALID /* invalid packets */
17    1358  795K REJECT     tcp  --  any    any     anywhere             anywhere             ctstate NEW tcp flags:!FIN,SYN,RST,ACK/SYN /* new non-syn packets */ reject-with tcp-reset
18      52  2600 ACCEPT     all  --  lo     any     anywhere             anywhere             /* loopback: compulsory */
19    2588  303K ACCEPT     icmp --  any    any     anywhere             anywhere             icmp echo-request limit: avg 2/sec burst 5 /* ICMP: ping only */
20   15482  932K ACCEPT     tcp  --  any    any     anywhere             anywhere             ctstate NEW,ESTABLISHED tcp dpt:57329 /* SSH: global obfuscated */
21     97M   54G ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:9001 /* Tor: OR */
22   54303 4010K ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:9030 /* Tor: Dir */
23     95M   93G ACCEPT     all  --  any    any     anywhere             anywhere             ctstate RELATED,ESTABLISHED /* Tor: traffic */

Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 182M packets, 160G bytes)
num   pkts bytes target     prot opt in     out     source               destination         

저에게는 아마도 DHCP 패킷이 떠오르는데, 저는 그것에 대해 아는 바가 별로 없어서...

저는 개인적으로 네트워킹 작업을 하지 않기 때문에 혹시 도움을 주실 수 있는 분이 계시다면 감사하겠습니다. 감사해요.


편집하다:

  • #1: 내 서버는DHCP 클라이언트.

  • #2: 방금 ICMP 정책을 REJECT(reject-with)로 변경했습니다.ICMP 관리 금지), 그리고 (다시 시작한 후) 정적 임대를 받는 서버에는 영향을 미치지 않습니다.

답변1

모든 DHCP 클라이언트는 DHCP 서버에서 실제 IP 주소를 얻을 때까지 소스 주소(일반적으로 허용되지 않음)로 0.0.0.0이 포함된 패킷을 보내야 하기 때문에 Linux에서 RAW 소켓을 사용해야 합니다.

부작용으로 iptables 필터를 완전히 우회합니다.만약에필터링을 수행하는 시스템에서 DHCP 클라이언트를 실행합니다. 시스템이 다른 호스트에 대한 브리지 또는 라우터 역할을 하지 않는 경우 DHCP에 대한 UDP 요구 사항을 무시할 수 있습니다.

그러나 참고 사항이거나 다른 방화벽 솔루션을 사용하는 경우: DHCP 클라이언트인 경우 포트 68에서 들어오는 UDP 패킷을 수락해야 합니다. 이론적으로 이러한 패킷의 소스 포트 번호는 67이어야 합니다. DHCP 서버는 IP 주소를 ping하려고 할 수도 있습니다.

DHCP를 사용할 때 주의할 점은 유효한 IP 주소가 없어도 로컬 네트워크의 브로드캐스트 주소나 255.255.255.255를 대상 주소로 사용하여 패킷이 도착할 수 있다는 것입니다. 초기 DHCP 임대를 획득한 후 갱신은 일반 유니캐스트로 이루어질 수 있습니다.

DHCP 서버인 경우 들어오는 UDP 패킷에 대해 포트 67을 허용해야 합니다.

UDP의 또 다른 가능한 사용자는 DNS입니다. 속도를 향상시키기 위해 UDP를 사용하여 DNS 쿼리를 보낼 수 있으며, 응답이 너무 커서 단일 UDP 패킷에 맞지 않는 경우 DNS 서버는 속성이 추가된 UDP 패킷에 맞는 만큼 많은 응답을 보냅니다. 완전한 답변을 원하시면 TCP를 통해 쿼리를 다시 제출하십시오."

NTP(Network Time Protocol)도 UDP(포트 번호 123)를 사용합니다. 메시지 내용이 본질적으로 "이 패킷이 전송되었을 때 시간은 xx:xx:xx.xxxxxx...였습니다. 내가 알 수 있는 만큼 정확합니다."인 경우 핸드셰이크 및 잠재적인 재전송과 함께 TCP를 사용하는 것은 의미가 없습니다. 전송 중에 시간 신호가 손실된 경우 이전 신호의 재전송을 요청하지 않고 대신 새 신호를 요청(또는 대기)합니다.

관련 정보