그룹 외부의 사용자가 인터페이스를 사용하는 것을 금지하는 다음과 같은 규칙이 있습니다 fullnetwork
.
iptables -I OUTPUT -o eth+ -m owner \! --gid-owner fullnetwork -j REJECT
외부 사용자가 로컬 네트워크를 사용하도록 허용하는 방법은 무엇입니까 fullnetwork
?
나는 이것을 시도했지만 성공하지 못했습니다.
ipset create local hash:net
ipset add local 192.168.0.0/16
ipset add local 172.16.0.0/16
ipset add local 10.0.0.0/8
iptables -I OUTPUT -o eth+ -m owner \! --gid-owner fullnetwork -j REJECT
iptables -I OUTPUT -o eth+ -m owner \! --gid-owner fullnetwork -m set --match-set local src -j ACCEPT
답변1
필요한 기능이 추가되었습니다.iptables>= 1.8.4그리고커널 5.3 정도(그리고 전혀 사용할 수 없습니다nftables): 또한 일치함다시 채우다현재(기본) 그룹뿐만 아니라 그룹:--suppl-groups
:
--suppl-groups
--gid-owner
프로세스의 보조 그룹 중에서 지정된 그룹도 검사하도록 합니다 .
이 옵션이 없고 그룹을 직접 사용하지 않는 경우(예: 를 사용하여) sg fullnetwork
다음 명령을 사용할 수도 있습니다.
iptables -I OUTPUT -o eth+ -m owner \! --gid-owner fullnetwork -j REJECT
게시된 효과를 얻을 수 없습니다. fullnetwork
보충 그룹 목록에 있는 이 그룹의 사용자만 네트워크를 사용할 수 없습니다.
따라서 이 일치를 수행하고 필요에 따라 다른 사용자를 거부하려면 다음 예를 사용해야 합니다.
iptables -I OUTPUT -o eth+ -m owner ! --gid-owner fullnetwork --suppl-groups -j REJECT
일관성을 유지하려면 예외에 예외를 추가하는 것이 허용되는 규칙이 되어서는 안 됩니다 fullnetwork
. 그렇지 않으면 향후 규칙에 추가 제한 사항이 추가되는 경우 사용자는 특정 LAN에 대한 액세스만 허용된 사용자보다 로컬 네트워크에 대한 액세스 권한이 줄어들 수 있습니다. 대신 규칙을 함께 그룹화하고 ACCEPT 결정을 사용하지 않고 RETURN 결정으로 거부를 피하고 단일 REJECT 결정으로 끝나는 사용자 체인을 만듭니다. 앞의 두 개를 교체하세요.iptables규칙:
iptables -N reject_non_allowed_on_eth
iptables -A reject_non_allowed_on_eth -m owner --gid-owner fullnetwork --suppl-groups -j RETURN
iptables -A reject_non_allowed_on_eth -m set --match-set local dst -j RETURN
iptables -A reject_non_allowed_on_eth -j REJECT
iptables -I OUTPUT -o eth+ -j reject_non_allowed_on_eth
이는 다음과 같이 읽을 수 있습니다.
이더넷 인터페이스를 사용하는 경우,
fullnetwork
그룹 이라면 나가주세요- 사설 LAN에 도달하면 종료
- 남은 것은 승인되지 않습니다. 거부하세요.
나머지 패킷을 추가로 필터링하기 위해 나중에 더 많은 규칙을 추가할 수 있습니다.
또 다른 변경 사항도 확인하세요. 경쟁이 시작되었습니다.목적지( dst
) 대신에원천( src
) 시스템에 이 범위의 주소가 있으면 무엇이든 액세스할 수 있습니다. 방사~에서주소는 출처와 일치하면 항상 허용되나, 의도한 것은 아닌 것으로 보입니다.