Linux에서 iptables를 사용하여 LAN의 특정 사용자에 대한 인터넷 액세스를 제한하는 방법


11

LAN에 A와 B라는 두 명의 사용자가 있다고 가정 해 봅시다. iptables 규칙을 사용하고 재부팅 후에도 여전히 유효하도록 규칙을 저장하여 사용자 A를 인터넷 액세스에서 제한하는 방법은 무엇입니까? 또한 어느 시점에서 해당 사용자에게 액세스 권한을 부여하고 싶다고 가정하십시오. 다시 활성화하려면 어떻게합니까? Ubuntu Linux 10.04를 사용하고 있습니다. 로컬 ssh 로그인을 사용하여 컴퓨터에 자주 로그인 할 때 누군가 명령 줄에서 수행하는 방법을 보여 주면 좋을 것입니다.

답변:


17

사용자 A와 B가 관리자 인 동일한 Linux 시스템을 사용한다고 가정합니다. (질문에서 완전히 명확하지는 않습니다. A와 B에 자신의 컴퓨터가 관리자 인 경우 완전히 다른 문제입니다.)

다음 명령은 uid 1234를 가진 사용자가 인터페이스에서 패킷을 보내지 못하게합니다 eth0.

iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner 1234 -j DROP

도구에 대한 기본적인 지식을 얻으려면 Ubuntu iptables 안내서 를 읽는 것이 좋습니다 (mangle 테이블과 같은 고급 기능에 대해서는 맨 페이지를 참조하십시오).

setuid 루트이기 때문에 사용자는 여전히 ping을 실행할 수 있지만 다른 것은 할 수 없습니다. 다른 사용자가 해당 프록시를 시작한 경우에도 사용자는 여전히 로컬 프록시에 연결할 수 있습니다.

이 규칙을 제거하려면 -D위의 명령에 추가하십시오 .

규칙을 영구적으로 만들려면에 규칙을 추가하십시오 /etc/network/if-up.d/my-user-restrictions(실행 스크립트가로 시작됨 #!/bin/sh). 또는 사용 iptables-save하십시오 (자세한 내용은 Ubuntu iptables 안내서 를 참조하십시오).


대단히 감사합니다. 그리고 네 가정은 사실입니다. 귀하의 답변과 언급 된 우분투 가이드에 따르면 제한된 사용자 ssh 액세스 권한을 부여하려는 경우 올바른 작업 방법 (때로는 ssh를 통해 그의 계정을 사용하여 로그인하고 싶습니다) : iptables -t mangle -A OUTPUT- o eth0 -m 소유자 --uid-owner 1234 -p tcp --dport ssh -j ACCEPT iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner 1234 -j DROP 나는 규칙을 언급 된 파일과 일이 잘 작동하는 것 같습니다.
Marwan Tanager

@Marwan 나는 그것이 옳다고 생각합니다. ssh 액세스를 허용하면 ssh가 다른 프로토콜을 사소하게 터널링 할 수 있으므로 거의 모든 것을 허용합니다.
Gilles 'SO- 악마 그만'

0

나는 이것을 위해 iptables를 사용하지 않을 것입니다.

A와 B가 고정 IP ClientA 및 ClientB와 연결되어 있다고 가정합니다. 귀하의 인터넷 프록시가 ServerI (우분투 서버입니까?)라고 가정합니다.

따라서 ClientA에서 ServerI로 거부 / 삭제 라우팅 항목을 추가합니다.

우분투를 사용하지 않으므로 해당 설정을 영구적으로 유지하는 데 사용할 구성 파일 (재부팅 생존)을 알 수 없습니다.

누군가가 그 세부 사항을 추가 할 수 있습니까?

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.