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

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

LAN에 A와 B라는 두 명의 사용자가 있다고 가정합니다. iptables 규칙을 사용하여 사용자 A의 인터넷 액세스를 제한하고 재부팅 후에도 유효한 상태로 유지되도록 규칙을 저장하는 방법입니다. 또한 특정 시점에 이 사용자에게 액세스 권한을 부여하고 싶다면 어떻게 다시 활성화합니까? 우분투 리눅스 10.04를 사용하고 있습니다. 나는 종종 내 컴퓨터에 로그인하기 위해 로컬 SSH 로그인을 사용하기 때문에 누군가 명령줄에서 이 작업을 수행하는 방법을 알려줄 수 있다면 좋을 것입니다.

답변1

나는 사용자 A와 B가 당신이 관리자인 동일한 Linux 시스템을 사용하고 있다고 가정합니다. (질문에서 완전히 명확하지 않습니다. A와 B가 모두 자신의 컴퓨터를 가지고 있고 관리자라면 완전히 다른 질문입니다.)

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

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

나는 독서를 추천한다우분투 iptables 가이드기본적으로 도구에 익숙해지십시오(그리고 맹글 테이블과 같은 고급 내용은 매뉴얼 페이지를 참조하십시오).

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

이 규칙을 제거하려면 -D위 명령에 추가하세요.

규칙을 영구적으로 만들려면 규칙을 에 추가합니다 /etc/network/if-up.d/my-user-restrictions( 로 시작하는 실행 가능한 스크립트로 만듭니다 #!/bin/sh). 또는 다음을 사용하십시오 iptables-save(참조우분투 iptables 가이드더 많은 정보를 알고 싶다면).

답변2

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

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

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

저는 Ubuntu를 사용하지 않으므로 이 설정을 영구적으로 만드는 데 사용할 구성 파일을 알려드릴 수 없습니다(재부팅 후에도 유지됨).

누군가가 이 세부정보를 추가할 수 있을까요?

답변3

만약에방화벽설정의 일부로 직접 규칙을 사용하여 특정 사용자의 네트워크 액세스를 차단할 수 있습니다.:

/etc/firewalld/direct.xml
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
<?xml version="1.0" encoding="utf-8"?>
<direct>
  <chain ipv="ipv4" 
         table="filter" 
         chain="restrict_user_ipv4"/>
  <rule ipv="ipv4" 
        table="filter" 
        chain="OUTPUT" 
        priority="1">-m owner --uid-owner user -j restrict_user_ipv4</rule>
  <rule ipv="ipv4" 
        table="filter" 
        chain="restrict_user_ipv4" 
        priority="3">-j DROP</rule>
  <chain ipv="ipv6" 
         table="filter" 
         chain="restrict_user_ipv6"/>
  <rule ipv="ipv6" 
        table="filter" 
        chain="OUTPUT" 
        priority="1">-m owner --uid-owner user -j restrict_user_ipv6</rule>
  <rule ipv="ipv6" 
        table="filter" 
        chain="restrict_user_ipv6" 
        priority="3">-j DROP</rule>
</direct>

새로고침하는 것을 잊지 마세요

# firewall-cmd --reload

인용하다

관련 정보