특정 사용자에 대한 네트워킹 비활성화

특정 사용자에 대한 네트워킹 비활성화

저는 라이브로 실행될 Ubuntu/Mint 배포판에서 작업하고 있습니다. 관리, 인터넷 및 보안의 세 가지 일반 그룹에 속하는 여러 계정이 있습니다.

  • 관리자분명히 무엇이든 할 수 있는 권한이 있습니다.
  • 인터넷계정은 인터넷을 사용하기 위한 것입니다.

다른 계정은보안계정. 어떠한 경우에도 인터넷, 프린터, 블루투스, WiFi 장치 등의 네트워킹은 허용되지 않습니다.

제가 하고 싶은 일은 커널에서 네트워크 드라이버를 제거하는 것입니다. 하지만 이렇게 하면 인터넷이 필요한 계정이 비활성화됩니다.

이러한 보안 계정에 대해 인터넷을 비활성화하는 가장 낮은 수준의 방법은 무엇입니까? 내가 찾고 있어요연결이 불가능하다솔루션.

답변1

iptables( ) 로 하면 됩니다 ip6tables.

재부팅까지

터미널에서 규칙을 추가하십시오.iptables

sudo iptables -A OUTPUT -p all -m owner --uid-owner username -j DROP
sudo ip6tables -A OUTPUT -p all -m owner --uid-owner username -j DROP

어디사용자 이름인터넷 연결을 비활성화하려는 사용자입니다. 파일을 저장하고 종료합니다.

그러면 지정된 사용자가 생성한 모든 나가는 패키지가 자동으로 삭제된다는 규칙이 iptables( )에 추가됩니다.ip6tables

전체 그룹에 대해 동일한 작업을 수행하려면 을 --uid username사용하는 대신 --gid-owner groupname전체 사용자 그룹에 대해 동일한 효과를 얻을 것을 제안합니다.

예를 들어 그룹이 security인터넷에 액세스하는 것을 방지하려면 명령은 다음과 같습니다.

sudo iptables -A OUTPUT -p all -m owner --gid-owner security -j DROP
sudo ip6tables -A OUTPUT -p all -m owner --gid-owner security -j DROP

영구적인

규칙을 영구적으로 만들려면 에서 스크립트를 생성하고 /etc/network/if-up.d/필요한 줄을 추가한 후 실행 가능하게 만들 수 있습니다.

옵션으로 iptables-save( ip6tables-save)를 사용하여 현재 규칙을 저장하고 부팅 시 복원합니다.

현재 iptables규칙 저장

sudo iptables-save > /etc/iptables_rules
sudo ip6tables-save > /etc/ip6tables_rules

즐겨 사용하는 텍스트 편집기로 열고 /etc/rc.local파일 끝에 추가

/sbin/iptables-restore < /etc/iptables_rules
/sbin/ip6tables-restore < /etc/ip6tables_rules

그러면 부팅할 때마다 저장된 규칙이 복원됩니다. 주의하세요.IPv4 연결만 차단한 사용자는 계속해서 인터넷에 연결할 수 있습니다.

더 많은 정보와 더 많은 iptables옵션을 알아보려면 해당 웹사이트를 참조하세요.맨페이지.

답변2

Bruno의 솔루션은 훌륭합니다. 아마도 최고의 독립형 솔루션이라고 생각합니다.

생각할 수 있는 또 다른 옵션은 별도의 시스템에 방화벽/프록시를 인터넷 게이트웨이로 설정하여 사용자별 인증을 제공하는 연결만 허용하는 것입니다. 추가 보호를 위해 두 가지를 함께 사용할 수 있습니다.

답변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

참고자료

관련 정보