(SO에서 이동)
SIP 서버를 보호하는 iptables가 있습니다. 내가 특별히 열었던 IP를 제외한 모든 IP를 차단하며 거의 모든 사람에게 효과적입니다. 화이트리스트에없는 많은 IP 주소에서 테스트를 마쳤으며 모두 정상적으로 삭제되었습니다.
그러나 나는 iptables 규칙을 우회 할 수있는 것처럼 보이는 “해커”를 선택했습니다. 그의 조사 초대는 그것을 통해 이루어지고, 나는 그것이 어떻게, 또는 심지어 그것이 가능했는지 전혀 모른다. 10 년 동안 나는 이것을 본 적이 없다.
나는 그것이 내가 한 일이라고 생각하지만 그것을 볼 수는 없습니다.
iptables는 다음과 같이 생성됩니다 (MYIP는 최상위에 정의 됨).
iptables -F
iptables -X
iptables -N ALLOWEDSIP
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -d $MYIP --dport 22 -j ACCEPT
iptables -t filter -A INPUT -j ALLOWEDSIP
# This is my white list.
iptables -A ALLOWEDSIP -j RETURN
이제 ALLOWEDSIP에 NOTHING이 있으면 할 수있는 SSH 만 있으면됩니다. 전화를 걸면 모두 삭제됩니다. 그러나 wireshark는 이것을 보여줍니다 (내 IP가 수정되었습니다).
89.163.146.25 -> x.x.x.x SIP/SDP 805 Request: INVITE sip:521088972597572280@x.x.x.x |
x.x.x.x -> 89.163.146.25 SIP 417 Status: 100 Giving a try |
x.x.x.x -> 89.163.146.25 SIP 875 Status: 407 Proxy Authentication Required |
그의 전화는 내 스위치를 쳤고 결국 ACL에 의해 거부되었지만 결코 거기에 도착해서는 안됩니다. 다른 것은 통과되지 않습니다. 머리를 뽑아 누구 알아?
완전성을 위해 iptables -L의 결과는 다음과 같습니다.
# iptables -L --line-numbers -v
Chain INPUT (policy DROP 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 10 640 ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
2 0 0 ACCEPT all -- lo any anywhere anywhere
3 0 0 ACCEPT tcp -- any any anywhere <redacted>.com tcp dpt:6928
4 0 0 ALLOWEDSIP all -- any any anywhere anywhere
Chain FORWARD (policy DROP 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 6 packets, 544 bytes)
num pkts bytes target prot opt in out source destination
Chain ALLOWEDSIP (1 references)
num pkts bytes target prot opt in out source destination
1 0 0 RETURN all -- any any anywhere anywhere
편집 : 방금 wireshark에서 이것을 보았습니다. 그들은 다른 방식으로 확립 된 다음 확립 된 규칙을 따르는 것과 같이 끔찍한 일을하고있을 수 있습니까? 아마 그들은 관련의 구멍에서 놀고 있습니까?
89.163.146.25 -> <redacted> RTCP 806 Source port: tag-pm Destination port: sip
편집 2 : UDP가 핵심입니다. TCP 만 수신하도록 OpenSIPS를 설정하면 문제가 사라지는 것 같습니다. “tag-pm”메시지를 더 많이 보내지 만 더 이상 시도하지 않습니다. 패킷이 opensip에 도달하는 이유를 설명하지 않습니다. iptables가 먼저 중지해야합니다. 내가 여기서 잘못한 것을 알고 싶습니다.
편집 3 : 관련을 제거하면 응답을 중지하므로 그와 관련이 있습니다. 그러나 나는 관련이 필요하다고 생각합니다. 해결 방법에 대한 팁이 있습니까?
답변
어떻게 작동 할 수 있는지에 대한 유일하게 그럴듯한 설명은 문제가되는 UDP 데이터 그램이 어떻게 든 전달된다는 것 --state ESTABLISHED,RELATED
입니다.
UDP가 상태 비 저장 프로토콜이라는 점을 감안할 때 state
모듈이 효과적으로 추적하고 있는지 의심 됩니다.
문제를 해결하기 위해 상태 확인을 TCP 프로토콜로 제한합니다.
-A INPUT -m tcp -m state -p tcp --state ESTABLISHED,RELATED -j ACCEPT`
ALLOWEDSIP
UDP 프로토콜을 사용하여 사전 필터 를 수행하십시오 (대상 포트를 사용하는 것이 좋습니다).
iptables -t filter -A INPUT -m udp -p udp --dport 5060 -j ALLOWEDSIP
답변
당신은 nullroute 수 있습니다. 이것은 iptables를 우회해야합니다.
route add 89.163.146.25 gw 127.0.0.1 lo
확인해 봐
netstat -nr
또는
route -n