OpenBSD의 pf: 특정 사용자에 대한 네트워크 액세스(ssh 제외)를 비활성화합니다.

OpenBSD의 pf: 특정 사용자에 대한 네트워크 액세스(ssh 제외)를 비활성화합니다.

OpenBSD의 기본 방화벽을 사용하는 경우 한 가지만 제외하고 일반 사용자의 모든 네트워크 액세스를 비활성화하도록 방화벽을 어떻게 수정합니까? 무작위 호스트에서 사용자에게 SSH를 연결하고 싶습니다!

예를 들어, 사용자가 "wget ​​google.com"을 원할 경우 방화벽 권한이 없어야 합니다. scp를 통해 임의의 컴퓨터에서 사용자에게 무언가를 복사하려면 방화벽에서 이를 허용해야 합니다. 사용자가 다른 호스트에 SSH로 연결하려는 경우 액세스 권한이 없어야 합니다.

답변1

내 생각엔 당신이 auhpf를 찾고 있는 것 같아요.

http://www.openbsd.org/faq/pf/authpf.html

Authpf(8)는 게이트웨이를 인증하는 데 사용되는 사용자 셸입니다. 인증 게이트웨이는 게이트웨이가 트래픽을 허용하기 전에 사용자가 먼저 게이트웨이에 자신을 인증해야 한다는 점을 제외하면 일반 네트워크 게이트웨이(라우터라고도 함)와 같습니다. 사용자 쉘이 /usr/sbin/authpf로 설정되고(즉, 사용자 쉘을 ksh(1), csh(1) 등으로 설정하는 대신) 사용자가 SSH를 사용하여 로그인하면 authpf는 활성 쉘을 사용합니다. pf(4) 규칙 세트 - 사용자의 트래픽이 필터를 통과하거나 네트워크 주소 변환 또는 리디렉션을 사용하여 변환됩니다. 사용자가 로그오프하거나 세션 연결이 끊어지면 authpf는 사용자에 대해 로드된 모든 규칙을 삭제하고 사용자가 연 모든 상태 저장 연결을 종료합니다. 따라서 사용자는 SSH 세션을 열어둔 경우에만 게이트웨이를 통해 트래픽을 전달할 수 있습니다.

# macros
wifi_if = "wi0"
ext_if  = "fxp0"
dns_servers = "{ 10.0.1.56, 10.0.2.56 }"

table <authpf_users> persist

# filter
block drop all

pass out quick on $ext_if inet proto { tcp, udp, icmp } \
   from { $wifi_if:network, $ext_if }

pass in quick on $wifi_if inet proto tcp \
   from $wifi_if:network to $wifi_if port ssh

pass in quick on $wifi_if inet proto { tcp, udp } \
   from <authpf_users> to $dns_servers port domain

anchor "authpf/*" in on $wifi_if

답변2

나는 당신에게 일반적인 계획을 제시할 수 없으며 다른 사람이 세부 사항을 채워주기를 바랍니다.

다음을 수행해야 할 것 같습니다.

  1. 만들다chroot
  2. 어떤 식으로든 허용됨단 하나그것과 인터페이스합니다.
  3. 그럼 봐패킷 큐잉해당 인터페이스에 대해 또는 해당 인터페이스에 대한 pf 규칙을 작성하십시오.

솔직히 FreeBSD 감옥을 사용하는 것이 더 쉬울 것이라고 생각하지만 아마도 그런 옵션이 없을 것입니다.

이것은 좋은 대답은 아닐 수도 있지만, 이것이 여러분에게 올바른 방향을 제시해주기를 바랍니다. 댓글로 포스팅하려고 했는데 너무 길어지네요.

답변3

방화벽은 일반적으로 네트워크 패킷을 확인합니다. 그들은 패킷이 어디서 오는지 볼 수 있지만, 패킷 검사를 통해 밝혀지지 않는 한 누가 패킷을 담당하는지 알 수 없습니다.

모든 사람에 대해 모든 것을 잠그는 것으로 시작한 다음 필요에 따라 인증된 액세스를 추가할 수 있습니다. 예를 들어, 모든 외부 웹 요청이 통과해야 하는 인증된 프록시를 통해.

관련 정보