터널 인터페이스에서 TCP 873을 허용한다고 해서 rsync가 OpenVPN을 통과하는 것도 아니고, 반대편이 모듈을 받아들이게 되는 것도 아닙니다. 터널은 내부 연결을 전달하며 그 프로토콜과 목적지 규칙은 그대로 유지됩니다. 따라서 첫 질문은 어느 포트를 여는가가 아니라 rsync가 어떤 종류의 연결을 만드는가입니다. 아래의 모든 내용은 터널이 이미 올라와 있고 내부 서비스만 아직 의심스럽다고 가정합니다.

rsync가 실제로 어떤 연결을 만드는지 판단하십시오

명령의 원격 인수는 보통 방화벽을 바꾸기 전에 그 질문에 답합니다. 이중 콜론이나 URL 스킴은 데몬을 선택하고, 호스트 이름 뒤의 단일 콜론은 원격 셸을 선택합니다. 문서의 예시가 아니라 실제로 실행하는 인수를 읽으십시오.

명시적 원격 셸 옵션은 전송을 위해 어떤 프로그램을 실행할지 rsync에 알려 주므로 답을 다시 바꿀 수 있습니다. 호스트 부분만이 아니라 상속된 래퍼 스크립트까지 포함해 명령줄 전체를 읽으십시오.

Remote argumentWhat it opens
rsync://vault.corp.internal/archive/rsync daemon, normally TCP 873
vault.corp.internal::archive/rsync daemon, normally TCP 873
[email protected]:/srv/archive/Remote shell, normally SSH on its configured port

데몬 모드: 바인드 주소, 모듈, 포트

데몬 구문에서 경로 세그먼트는 디스크의 디렉터리가 아니라 설정된 모듈을 가리킵니다. 모듈 암호는 연결이 수락된 뒤에야 확인되며, 모듈은 추가로 읽기 전용이거나 목록에서 숨겨질 수 있습니다. 오류를 읽을 때 이 순서가 중요한데, 거부된 연결과 거부된 모듈은 서로 다른 두 단계의 실패이기 때문입니다. 두 메시지 어느 것도 터널 자체에 대해 알려 주지 않습니다.

독립 데몬은 설정 파일에서 터널 주소에 고정할 수 있으며, 그러면 방화벽 규칙 없이도 공용 인터페이스에서 멀어집니다. 값은 데몬이 바인드할 때 존재해야 하며, 소켓으로 활성화되거나 inetd가 관리하는 리스너는 이를 완전히 무시할 수 있습니다.

address = 10.44.0.1
port = 873
[archive]
    path = /srv/archive
    read only = yes

그다음에는 공용 이름이 아니라 사설 주소로 시험하십시오. 공용 호스트 이름은 WAN 주소로 해석되어 다른 경로를 지나며, 한 대의 기계가 둘 다에 응답하더라도 마찬가지입니다.

rsync --list-only rsync://10.44.0.1/archive/

원격 셸 모드: SSH가 전송을 담당합니다

단일 콜론을 쓰면 rsync가 원격 셸 프로그램을 시작하고 그 채널 위에서 그 프로토콜을 사용하므로, 접근할 수 있는 서비스는 서버가 듣는 포트의 SSH뿐입니다. rsync 데몬은 결코 실행되지 않고 포트 873은 무관하며, 접근 결정은 SSH 계정 결정이 됩니다. 원격 경로는 그때 반대편 셸이 해석하는 실제 파일 시스템 경로입니다. 그래서 873을 겨냥한 방화벽 변경은 이 모드에 아무 효과가 없습니다.

그 설계에는 권한이 부여된 계정과 호스트 키 검증이 필요하며, SSH 자체의 인증 정책을 물려받습니다. 전송이 신뢰할 수 없는 네트워크를 가로질러야 할 때 종종 더 나은 선택인데, 암호화가 그것을 위해 만들어진 프로토콜에 속하기 때문입니다. 암호를 묻는 데몬은 같은 것이 아닙니다.

선택한 경로만 여십시오

모드가 정해지면 터널을 전달하는 하나의 인터페이스에서 하나의 내부 서비스만 허용하고, 규칙을 인터페이스, 원본 풀, 목적지 주소로 좁혀서 나중의 기본 거부 변경이 조용히 넓히지 못하게 하십시오. 그다음 규칙 순서를 검토하십시오. 체인에서 앞선 허용 규칙은 좁은 규칙을 장식으로 만들기 때문입니다.

데몬이 VPN 게이트웨이 자체가 아니라 그 뒤의 기계에서 실행된다면 게이트웨이에도 전달 경로가 필요하고 대상에는 자체 권한과 반환 경로가 필요합니다. 게이트웨이에서만 포트를 열면 연결이 수락된 뒤 아무 데도 가지 않습니다.

운영 환경에서 사용할 것과 같은 모드와 목적지로 클라이언트에서 검증하십시오. 성공적인 목록은 리스너, 경로, 규칙을 함께 증명하며, 시간 초과는 경로를 가리키고, 거부는 리스너를 가리킵니다.

ufw allow in on tun0 from 10.44.0.0/24 to 10.44.0.1 port 873 proto tcp
ss -ltnp | grep 873

관련 글