2013-01-31 1 views
4

"neta"그룹의 구성원을 제외한 모든 사용자에 대해 IP 1.2.3.4에 대한 액세스를 비활성화하려고합니다. 이것은 내가이 문제에 대해서만 만든 새로운 그룹입니다.iptables --gid-owner는 사용자의 주 그룹에만 적용됩니다.

이렇게하면 그룹 "neta"의 구성원 인 모든 사용자에 대해 1.2.3.4에 대한 액세스가 비활성화됩니다.

나는 사용자 xx가 있으며 그는 xx (기본 그룹) 및 neta 그룹의 회원입니다. 규칙을 다음과 같이 변경하는 경우 :

iptables -I OUTPUT -o eth0 -p tcp -d 1.2.3.4 -m owner \! --gid-owner xx -j REJECT 

사용자 xx를 제외한 모든 사용자는 1.2.3.4를 액세스 할 수 없습니다.

나는이 그룹 XX에 루트를 추가 :

usermod -a -G xx root 

하지만 루트 나는 모든 것이 예상대로 작동 규칙에 주요 사용자 그룹 (루트, XX)를 추가 여전히 IP.If에 액세스 할 수 없습니다.

난 그냥 확실하게 (거부 로그)이 규칙을 spliting 시도 :

iptables -A OUTPUT -o eth0 -p tcp -d 1.2.3.4 -m owner --gid-owner neta -j ACCEPT 
iptables -A OUTPUT -o eth0 -p tcp -d 1.2.3.4 -m limit --limit 2/s --limit-burst 10 -j LOG 
iptables -A OUTPUT -o eth0 -p tcp -d 1.2.3.4 -j REJECT 

을하지만 차이가 없습니다. 모든 것이 거부되고 있습니다.

다른 iptables 규칙은 없습니다.

[email protected]:~# iptables -nvL 
Chain INPUT (policy ACCEPT 19 packets, 1420 bytes) 
pkts bytes target  prot opt in  out  source    destination   

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) 
pkts bytes target  prot opt in  out  source    destination   

Chain OUTPUT (policy ACCEPT 10 packets, 1720 bytes) 
pkts bytes target  prot opt in  out  source    destination   
    0  0 ACCEPT  tcp -- *  eth0 0.0.0.0/0   1.2.3.4  owner GID match 1001 
    0  0 LOG  tcp -- *  eth0 0.0.0.0/0   1.2.3.4  limit: avg 2/sec burst 10 LOG flags 0 level 4 
    0  0 REJECT  tcp -- *  eth0 0.0.0.0/0   1.2.3.4  reject-with icmp-port-unreachable 

나는 (DIS) 할 수있을이 "NetA에서"그룹에서 사용자를 추가/제거하는 대신 모든 사용자의 iptables 규칙을 추가하여이 IP에 액세스 할 수 있도록합니다.

답변

3

좋아, 솔직하게 말해서 나는 이론에 대해 확신하는 리눅스와 iptables에 대해서는 거의 알지 못한다.하지만 VPN에 대해서도 똑같이하고 싶었다.

나는 경기가 패킷로부터 유래되는 과정을 사용하여 수행한다고 가정 리눅스 프로세스는 할당 된 사용자의 모든 그룹을하지 않는 대신 프로세스는 하나 UID 및 GID로 실행되는 .

즉,이 특정 그룹을 사용하여 명시 적으로 명령을 실행해야합니다. 그렇지 않으면 명령/프로세스가 사용자의 기본 그룹을 사용하여 실행됩니다.


이 글은 이런 가능성이 있는지를 알기위한 아이디어였습니다. 그룹 VPN을 사용하여 특정 IP 범위에 대한 액세스를 제한했습니다. 이것은 결코 효과가 없었습니다. 이제 다음 명령으로 테스트 해 보았습니다.

sg vpn -c "ssh [email protected]" 

그래서 제 이론이 정확 했길 바래요.

1

우분투 16.04.3 LTS 서버에서 정확한 문제가 발생했기 때문에 오래된 게시물이었습니다.

우분투가 구현 한 iptables 확장을 통해 netfilter는 현재 네트워크 패킷의 소유자를 검사하고 해당 사용자의 기본 그룹 ID 만 쿼리합니다. 더 깊이 파고 들지 않고 모든 그룹 멤버십을 얻습니다. 기본 그룹 만 --gid-owner 값과 비교됩니다.더 이상 보이지 않습니다.

OP가 수행하려는 작업은 사용자가 모든 관련 사용자 이름의 기본/기본 사용자 그룹을 "neta"로 변경 한 경우 작동합니다. 그런 다음 해당 사용자는 규칙에 따라 캡처됩니다.