클라이언트가 요청한 MAC을 받으시겠습니까?

클라이언트가 요청한 MAC을 받으시겠습니까?

저는 20개의 Raspberry Pi(클라이언트)와 1개의 서버로 구성된 네트워크를 보유하고 있습니다. 클라이언트 요청의 MAC을 확인하고 싶은데 가능한가요?

또한 고객이 알지 못하는(그리고 눈에 띄지 않는) 것일 수도 있습니까?

참고: 제 목적은 고객이 가짜/모조품인지 확인하는 것입니다. NB2: VPN 옵션이 실행 중입니다. 하지만 여전히 MAC을 확인하고 싶습니다.

답변1

귀하의 서버는 Linux 호스트입니까?

클라이언트 화이트리스트가 있는 경우 iptables특정 입력 포트에서만 해당 클라이언트의 요청을 수락할 수 있습니다. dmesg에서 불량 클라이언트의 요청을 기록할 수도 있습니다.

다음 스크립트는 MACCHECK승인된 3개의 MAC에서 패킷을 수락하고 로깅을 통해 다른 패킷을 삭제하는 체인을 정의합니다. 그런 다음 INPUT체인의 모든 tcp/80 또는 tcp/443 패킷을 MACCHECK.

iptables -N MACCHECK
iptables -A MACCHECK -m mac --mac-source xx:xx:xx:xx:xx:xx -j ACCEPT
iptables -A MACCHECK -m mac --mac-source yy:yy:yy:yy:yy:yy -j ACCEPT
iptables -A MACCHECK -m mac --mac-source zz:zz:zz:zz:zz:zz -j ACCEPT
iptables -A MACCHECK -m limit --limit 3/hour -j LOG --log-prefix "Bad host: "
iptables -A MACCHECK -j DROP
iptables -A INPUT -p tcp -m tcp --dport 80 -j MACCHECK   # Checking all HTTP requests
iptables -A INPUT -p tcp -m tcp --dport 443 -j MACCHECK  # Checking all HTTPS requests

모든 클라이언트는 서버와 동일한 네트워크에 있어야 합니다.

답변2

만약 있다면직접Raspberry Pi와 클라이언트 간의 연결, 즉 라우팅 없음그리고둘 다 같은부분, 이것은 가능하다. 예를 들어 ARP 확인을 사용하면 됩니다 arp <client_ip_address>.

답변3

클라이언트의 MAC는 클라이언트가 동일한 네트워크 세그먼트에 있는 경우에만 확인할 수 있습니다(예: 사이에 라우터가 없음(스위치도 괜찮음)). Traceroute를 사용하면 이를 확인할 수 있습니다. traceroute 192.0.2.1장치 중 하나의 주소가 192.0.2.1인 서버에서 실행 중인 경우 대상인 단일 홉만 보고해야 합니다.나샤의그리고야에가시의대답은 이를 수행하는 방법을 설명합니다.

그러나 가능하더라도 MAC은 쉽게 위조될 수 있으므로 MAC 확인은 실제로 보안을 제공하지 않습니다. 대부분의 이더넷 장치는 소프트웨어에서 MAC를 설정할 수 있습니다.

하드웨어 장치를 식별하는 데에는 기본적으로 암호화라는 한 가지 방법이 있습니다. 저장하다개인 키개인 키를 소유하고 있음을 증명하기 위해 인증 작업을 수행하게 합니다.

분명히 웹 애플리케이션을 사용하고 있으므로 이를 위한 도구가 있습니다.TLS 클라이언트 인증서. HTTPS 프로토콜을 사용하고 클라이언트가 개인 키를 사용하여 웹 서버에 인증하도록 합니다.

그러나 이 VPN을 어떻게 사용하느냐에 따라 유사한 기능을 제공할 수도 있고 제공하지 않을 수도 있습니다.

관련 정보