Dante는 접근을 두 번 확인합니다. 클라이언트 규칙이 들어오는 출발지를 받아들이고 SOCKS 규칙이 요청한 목적지와 명령을 허용합니다. 이 Dante 1.4.4 예제는 클라이언트 하나가 관리 중인 목적지 하나의 443 포트에 접근하도록 허용합니다.

서비스 실행 계정과 주소

설치 과정에서 제공되지 않았다면 전용 저권한 계정을 만듭니다:

sudo useradd --system --no-create-home --shell /usr/sbin/nologin danteproxy

아래는 높은 번호의 포트를 사용하고 출발지 허용 목록을 적용하는 구성이므로 두 실행 계정 모두 이 계정을 쓸 수 있습니다. 암호 인증이나 특권 기능을 쓰려면 해당 설정을 다시 검토해야 합니다. 사용 전에 문서용 예시 주소를 모두 바꾸세요.

logoutput: stderr
internal: 192.0.2.10 port = 1080
external: 192.0.2.10
clientmethod: none
socksmethod: none
user.privileged: danteproxy
user.unprivileged: danteproxy

client pass {
    from: 198.51.100.27/32 to: 192.0.2.10/32 port = 1080
    log: connect error
}

socks pass {
    from: 198.51.100.27/32 to: 203.0.113.20/32 port = 443
    command: connect
    log: connect error
}

internal은 클라이언트 쪽 리스너를, external은 외부로 나갈 주소를 선택합니다. 네트워크 인터페이스가 하나인 서버는 할당된 같은 주소를 양쪽에 쓸 수 있습니다. 적절한 경우 인터페이스 이름도 가능하지만 어떤 주소로 확장되는지 확인하세요.

이 정책이 허용하는 것

첫 규칙은 지정한 출발지를 리스너에 받아들입니다. 둘째 규칙은 지정한 대상에 CONNECT만 허용합니다. 일치하지 않는 요청은 BIND와 UDP ASSOCIATE를 포함해 계속 차단됩니다.

method 설정은 사용자 이름 인증을 제공하지 않습니다. 접근은 좁게 지정한 출발지 규칙과 해당 네트워크 경계에 의존합니다. 그 출발지가 허가된 클라이언트를 식별할 수 있을 때만 적합한 구성입니다.

sockd -V -f /path/to/sockd.conf

일부 배포판에서는 실행 파일 이름이 danted입니다. 서비스를 시작하기 전에 설치된 명령으로 설정을 확인하세요. 방화벽에도 같은 출발지 제한을 적용한 뒤 허용한 대상과 거부되어야 할 관리 중인 대상 모두를 시험합니다.

관련 글