단일 IP 주소로부터의 연결을 수신하도록 socat에 지시

단일 IP 주소로부터의 연결을 수신하도록 socat에 지시
socat TCP-LISTEN:22,fork TCP:192.168.0.15:5900

socat포트 22는 원격 IP 주소 8.8.8.8에 의해서만 신뢰되며 다른 IP 주소로부터의 연결을 허용해서는 안 된다는 것을 어떻게 알 수 있습니까 ? 이것은 Linux 서버에 있습니다.

답변1

rangesocat 수신 주소에 옵션을 추가 할 수 있습니다 .

socat TCP-LISTEN:22,fork,range=8.8.8.8/32 TCP:192.168.0.15:5900

또는 tcpwrap=vnc_forward옵션을 추가하고 이에 대한 전역 규칙을 정의 할 수 있습니다.vnc_forward다음에 따른 서비스호스트 액세스(5).

socat이렇게 하면 연결이 도착하는 것을 막지 는 못하지만 socat8.8.8.8에서 연결되지 않은 경우 해당 연결을 무시하고 경고를 표시합니다.

답변2

socat이 localhost에서만 수신하도록 하는 것과 같은 것이 나에게 효과적이었습니다.

socat TCP-LISTEN:22,fork,bind=127.0.0.1 TCP:192.168.0.15:5900

그래서 이것을 시도해 볼 수 있습니다.

socat TCP-LISTEN:22,fork,bind=8.8.8.8 TCP:192.168.0.15:5900

답변3

대부분의 사람들은 이를 위해 방화벽을 사용합니다. 포트 22의 트래픽 제한을 살펴보세요 iptables.

iptables -I INPUT -p tcp '!' -s 8.8.8.8 --dport 22 -j REJECT

또는 방화벽이 이미 제한적인 경우 하나의 주소만 허용합니다.

iptables -A INPUT -p tcp -s 8.8.8.8 --dport 22 -j ACCEPT

이는 iptables 방화벽의 전체 구성이 아니므로 위 구성을 사용하기 전에 먼저 올바른 구성을 설정해야 합니다.

답변4

주요 목표가 보안이고 클라이언트 시스템을 제어하는 ​​경우 SSL 터널을 통해 socat 서버에 연결하는 것이 더 안전한 옵션이므로 서버가 연결을 수락하기 전에 클라이언트 인증서를 확인할 수 있습니다.

나는 최근에 공동 클라이언트/서버 설정을 보호하기 위해 이 작업을 수행했습니다.

이 튜토리얼에서는 설정을 명확하게 설명합니다.

http://www.dest-unreach.org/socat/doc/socat-openssltunnel.html

지침과 다른 점 중 하나는 클라이언트 SSL 라이브러리가 로그잼 패치로 인해 기본적으로 서버 키를 거부해야 한다는 것입니다.

모든 것이 작동하도록 하려면 다음을 서버 PEM에 추가하세요.

openssl dhparam 2048 >> "$FILENAME".pem

이 키 기반 교환 메커니즘은 IP 기반 인증을 통해 호스트를 인증할 때 더 권위가 있습니다.

관련 정보