วิธีปิดกั้นการเข้าถึงอินเทอร์เน็ตไปยังบางโปรแกรมบน Linux


20

เมื่อเร็ว ๆ นี้ฉันพบปัญหาในการ จำกัด การเข้าถึงอินเทอร์เน็ตเฉพาะบางโปรแกรม ใครช่วยแนะนำวิธีที่ดีในการทำเช่นนั้นโดยไม่ต้องใช้ซอฟต์แวร์ใด ๆ โดยเฉพาะ?

คำตอบ:


31

ทางออกสำหรับฉันเกิดขึ้นตรงไปตรงมา

  1. สร้างตรวจสอบกลุ่มใหม่ ; เพิ่มผู้ใช้ที่ต้องการในกลุ่มนี้:
    • สร้าง: groupadd no-internet
    • ตรวจสอบ: grep no-internet /etc/group
    • เพิ่มผู้ใช้: useradd -g no-internet username

      หมายเหตุ: หากคุณกำลังแก้ไขผู้ใช้ที่มีอยู่แล้วคุณควรรัน: usermod -a -G no-internet userName ตรวจสอบด้วย:sudo groups userName

  2. สร้างสคริปต์ในเส้นทางของคุณและทำให้มันปฏิบัติการได้:
    • สร้าง: nano /home/username/.local/bin/no-internet
    • ปฏิบัติการ: chmod 755 /home/username/.local/bin/no-internet
    • เนื้อหา: #!/bin/bash
                    sg no-internet "$@"

  3. เพิ่มกฎ iptablesสำหรับการทิ้งกิจกรรมเครือข่ายสำหรับกลุ่มที่ไม่มีอินเทอร์เน็ต :
    • iptables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP

      หมายเหตุ: อย่าลืมที่จะทำให้การเปลี่ยนแปลงอย่างถาวรดังนั้นมันจะถูกนำไปใช้โดยอัตโนมัติหลังจากรีบูต ขึ้นอยู่กับการกระจาย Linux ของคุณ


   4. ตรวจสอบตัวอย่างเช่นบน Firefox โดยเรียกใช้:

  • no-internet "firefox"

ในกรณีที่คุณต้องการยกเว้นและอนุญาตให้โปรแกรมเข้าถึงเครือข่ายท้องถิ่น :

  • iptables -A OUTPUT -m owner --gid-owner no-internet -d 192.168.1.0/24 -j ACCEPT
  • iptables -A OUTPUT -m owner --gid-owner no-internet -d 127.0.0.0/8 -j ACCEPT
  • iptables -A OUTPUT -m owner --gid-owner no-internet -j DROP

หมายเหตุ:ในกรณีที่วางไข่กฎจะถูกเก็บรักษาไว้ ตัวอย่างเช่นหากคุณเรียกใช้โปรแกรมที่ไม่มีกฎอินเทอร์เน็ตและโปรแกรมนั้นจะเปิดหน้าต่างเบราว์เซอร์ก็จะยังคงใช้กฎดังกล่าว


2
หมายเหตุเล็กน้อย Ilia: โฆษณา 1: - เพื่อแก้ไขผู้ใช้ที่มีอยู่: usermod -a -G groupName ชื่อผู้ใช้ - ตรวจสอบกับ: กลุ่ม sudo ชื่อผู้ใช้โฆษณา 3: - ฉันมีกฎจำนวนมากใน iptables แล้วตำแหน่งของกฎใหม่เป็นสิ่งสำคัญ . ควรเป็นกฎข้อแรกใน chain OUTPUT ดังนั้นฉันใช้ insert: iptables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP เพื่ออนุญาตการเข้าถึง LAN: ตรวจสอบให้แน่ใจว่ากฎ ACCEPT อยู่เหนือกฎ DENY ทำงานเหมือนจับใจ ใช้มันเป็นตัวอย่างใน Wifiguard Prog ตรวจสอบ wlan สำหรับอุปกรณ์ที่ไม่รู้จัก แต่ "โทรศัพท์กลับบ้าน" ทุกครั้งที่เริ่มต้น

สคริปต์จะส่งคำสั่งเท่านั้น หากคุณลองเรียกใช้โปรแกรมโดยใช้พารามิเตอร์คุณควรใช้ "$ @" แทนที่จะเป็น "$ 1" ด้วยเหตุผลบางอย่างฉันต้องเก็บไว้ชั่วคราวในตัวแปรเพื่อให้ทุบตีประมวลผลอย่างถูกต้อง: cmd = "$ @"; sg no-internet "$ {cmd}"
58

ใช้ "nointernet" แทน "no-internet" ไม่ว่าด้วยเหตุผลใดก็ตาม Ubuntu 14.04 จะไม่สามารถจัดการกับเส้นประได้เมื่อคุณพยายามใช้ sg หรือ chgrp (มันจะถามรหัสผ่านจากนั้นก็ล้มเหลว)

1
ยกเลิกการแชร์ -n YourAppToBlock> ใช้ "nointernet" แทน "no-internet" อาจจะเป็น 'ไม่ \\ - อินเทอร์เน็ต'
SarK0Y

ฉันพยายามอธิบาย แต่สำหรับฉันหลังจากเพิ่มฉันไปที่ "ไม่มีอินเทอร์เน็ต" และตั้งค่าตาราง IP ฉันไม่สามารถเชื่อมต่ออินเทอร์เน็ตได้อีกต่อไป (มีและไม่มีสคริปต์ทุบตีไม่มีอินเทอร์เน็ต)
Viatorus
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.