UFW สำหรับ OpenVPN


17

ฉันต้องการกำหนดค่า ufw (ไฟร์วอลล์ที่ไม่ซับซ้อน) สำหรับ OpenVPN

การเชื่อมต่อได้รับอนุญาตผ่าน OpenVPN เท่านั้น ทุกอย่างอื่นควรถูกบล็อก ดังนั้นหาก OpenVPN ถูกตัดการเชื่อมต่อ -> ไม่มีอินเทอร์เน็ต! ฉันพบสคริปต์นี้ออนไลน์และฉันต้องการทราบว่าดีหรือไม่ หรือฉันจะต้องเพิ่มกฎเพิ่มเติมหรือไม่

#!/bin/bash
###########################################
#          Created by Thomas Butz         #
#   E-Mail: btom1990(at)googlemail.com    #
#  Feel free to copy & share this script  #
###########################################

# Adapt this value to your config!
VPN_DST_PORT=3478

# Don't change anything beyond this point
###########################################

# Check for root priviliges
if [[ $EUID -ne 0 ]]; then
   printf "Please run as root:\nsudo %s\n" "${0}"
   exit 1
fi


# Reset the ufw config
ufw --force reset

# let all incoming traffic pass
ufw default allow incoming
# and block outgoing by default
ufw default deny outgoing

# Every communiction via VPN is considered to be safe
ufw allow out on tun0

# Don't block the creation of the VPN tunnel
ufw allow out $VPN_DST_PORT
# Don't block DNS queries
ufw allow out 53

# Allow local IPv4 connections
ufw allow out to 10.0.0.0/8
ufw allow out to 172.16.0.0/12
ufw allow out to 192.168.0.0/16
# Allow IPv4 local multicasts
ufw allow out to 224.0.0.0/24
ufw allow out to 239.0.0.0/8

# Allow local IPv6 connections
ufw allow out to fe80::/64
# Allow IPv6 link-local multicasts
ufw allow out to ff01::/16
# Allow IPv6 site-local multicasts
ufw allow out to ff02::/16
ufw allow out to ff05::/16

# Enable the firewall
ufw enable

ที่มา: http://pastebin.com/AUHh6KnV


ดูดี! เพียงแค่พยายามและดูว่าการทำงานก็มีปัญหาใด ๆ คุณสามารถปิดการใช้งานufwการใช้และลบกฎไฟร์วอลล์ทั้งหมดที่ใช้sudo ufw disable sudo ufw --force resetสิ่งที่อาจจะผิดไป? ;-)
ntninja

2
ฉันอาจหลีกเลี่ยงการอนุญาตให้ทราฟฟิกที่เข้ามาทั้งหมดเป็นอย่างนั้นจะอนุญาตให้ openvpn ทำงานได้
JVE999

2
คุณควรปฏิเสธการเชื่อมต่อขาเข้าตามค่าเริ่มต้นเสมอ ...
n00dl3

สคริปต์นี้ทำขึ้นอย่างชัดเจนเพื่อจุดประสงค์ในการแชร์ไฟล์ การปฏิเสธการเชื่อมต่อขาเข้าเอาชนะวัตถุประสงค์ มันให้พฤติกรรม "killswitch" ของแอปพลิเคชั่น VPN เชิงพาณิชย์ - ไม่มากไม่น้อยไปกว่านี้
emk2203

@ emk2203 ไม่มันจะปฏิเสธทราฟฟิกที่เข้ามานอกอุโมงค์
berbt

คำตอบ:


8

การกำหนดค่าอาจมีข้อ จำกัด มากขึ้น

ufw --force reset

ufw default deny incoming # Use the VPN tunnel for all traffic
ufw default deny outgoing

ufw allow out on tun0
ufw allow in on tun0

ufw allow out $port/$protocol # e.g. 1234/udp, depending on your OpenVPN client config

# Prefer resolved hosts to connect to your VPN, enable only if your VPN provider doesn't give you that option
#ufw allow out 53

# Allow local IPv4 connections, enable as needed, set specific IPs or tighter subnet masks if possible
#ufw allow out to 10.0.0.0/8
#ufw allow out to 172.16.0.0/12
#ufw allow out to 192.168.0.0/16
# Allow IPv4 local multicasts
#ufw allow out to 224.0.0.0/24
#ufw allow out to 239.0.0.0/8
# Allow local IPv6 connections
#ufw allow out to fe80::/64
# Allow IPv6 link-local multicasts
#ufw allow out to ff01::/16
# Allow IPv6 site-local multicasts
#ufw allow out to ff02::/16
#ufw allow out to ff05::/16

# Enable the firewall
ufw enable

ยังคงพยายามที่จะเข้าใจศัพท์แสงของไฟร์วอลล์ แต่คุณจะไม่ต้องการอนุญาตให้tun0ใช้เป็นวิธีปิดกั้นการเชื่อมต่อขาเข้าจาก VPN หรือไม่ เช่นเดียวกับในufw deny in on tun0?
แมตต์

@MattBorja ถ้าคุณufw default deny incomingและufw deny in on tun0คุณจะไม่ได้รับการเชื่อมต่อเข้ามา อินเตอร์เฟซที่บางคนจะช่วยให้การจราจรขาเข้าในกรณีนี้เราอยากให้มันเป็นของ tun0VPN
berbt

คุณพูดถูกฉันไม่เห็นด้วยซ้ำ ไม่สนใจ :)
แมตต์

ที่จริงแล้วดูเหมือนว่าสิ่งที่ฉัน "ถาม" เป็นufw allow in on tun0บรรทัด
แมตต์

7

คำแนะนำที่ดีคือคุณไม่ได้ใช้สองคำสั่งนี้ :

ufw allow incoming
ufw default allow in on tun0

การยอมแพ้ในวัตถุประสงค์ของการมีไฟร์วอลล์ ไม่ถูกต้องที่คุณต้องการ "อนุญาตให้ใช้ใน tun0" เพื่อรับแพ็กเก็ตส่งคืน คุณต้องการได้รับการเชื่อมต่อที่คุณขอเทียบกับการอนุญาตให้ทั้งโลกเชื่อมต่อกับคุณ การอนุญาตให้ทำได้จะทำเช่นนี้ ทดสอบการกำหนดค่าที่เสนอด้านล่างและดู

นี่คือตัวอย่างสำหรับชุดคำสั่ง UFW สำหรับใช้กับไฟร์วอลล์:

sudo ufw enable
sudo ufw --force reset
sudo ufw default deny incoming
sudo ufw default deny outgoing
sudo ufw allow out on tun0
sudo ufw allow out on eth0 to any port 53,1197 proto udp
sudo ufw allow out on wlan0 to any port 53,1197 proto udp
sudo ufw status verbose

ตัวอย่างผลลัพธ์:

Status: active
Logging: on (low)
Default: deny (incoming), deny (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
Anywhere                   ALLOW OUT   Anywhere on tun0          
53,1197/udp                ALLOW OUT   Anywhere on eth0
53,1197/udp                ALLOW OUT   Anywhere on wlan0
Anywhere (v6)              ALLOW OUT   Anywhere (v6) on tun0
53,1197/udp (v6)           ALLOW OUT   Anywhere (v6) on eth0
53,1197/udp (v6)           ALLOW OUT   Anywhere (v6) on wlan0

หมายเหตุ: - อินเตอร์เฟสของคุณอาจแตกต่างกันเช่น ubuntu 16.12 ใช้ eno1 และ wlp3s0b1 ใช้คำสั่ง "ifconfig" เพื่อดูอินเตอร์เฟสจริงของคุณ -1197 UDP เป็นค่าเริ่มต้นพอสมควร แต่คุณอาจต้องเปลี่ยนเป็น VPN ของคุณ (เช่น 443 TCP) - ฉันมักจะลบ ipv6 (sudo ufw ลบ 4, ทำซ้ำ x3)

สิ่งนี้ทำอะไร: - อนุญาตการเชื่อมต่อขาออกผ่านอุโมงค์ VPN ในขณะที่บล็อกทุกอย่างยกเว้นช่องสัญญาณ VPN และการเชื่อมต่อ DNS บน ethernet / wifi คำเตือนด้านล่างเกี่ยวกับปัญหา DNS

คำเตือน: ตัวอย่างนี้อนุญาตให้ใช้ 53 คำร้องขอ DNS เพื่อให้ openvpn (เช่น vpn.somevpnprovider.com) สามารถร้องขอที่อยู่ IP และทำการเชื่อมต่อ การแลกเปลี่ยนเป็นโอกาสที่จะเกิดการรั่วไหลของ DNS ใช้ dnsleaktest.com เพื่อให้แน่ใจว่าการตั้งค่า VPN ของคุณเป็นไปตามคำขอ DNS ของคุณ สำหรับข้อควรระวัง / หวาดระแวงให้ข้ามการเปิดใช้งานใน 53 และสลับไฟร์วอลล์ของคุณเพื่อเชื่อมต่อจากนั้นกลับมาเชื่อมต่ออีกครั้ง สำหรับเหตุผล VPN ของฉันฉันเลือกที่จะไม่ทำเช่นนั้นเนื่องจากมีโอกาสมากขึ้นที่ฉันจะลืมไฟร์วอลล์ทั้งหมด (เช่น DNS จะรั่วอย่างไรก็ตามหาก openvpn ถูกกำหนดค่าผิดพลาด)

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