UFW cho OpenVPN


17

Tôi muốn định cấu hình ufw (tường lửa không phức tạp) cho OpenVPN.

Kết nối chỉ được phép thông qua OpenVPN. Mọi thứ khác nên bị chặn. Vì vậy, nếu OpenVPN bị ngắt kết nối -> không có internet! Tôi tìm thấy kịch bản này trực tuyến và tôi muốn biết nếu nó đủ tốt. Hay tôi phải thêm nhiều quy tắc?

#!/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

Nguồn: http://pastebin.com/AUHh6KnV


Có vẻ ổn! Chỉ cần thử và xem nếu nó hoạt động, có bất kỳ vấn đề nào bạn luôn có thể vô hiệu hóa ufwbằng cách sử dụng sudo ufw disablevà loại bỏ tất cả các quy tắc tường lửa bằng cách sử dụng sudo ufw --force reset. Cái gì có thể đi sai? ;-)
ntninja

2
Tôi có thể tránh cho phép tất cả lưu lượng truy cập đến, vì điều đó một mình sẽ cho phép openvpn hoạt động.
JVE999

2
bạn phải luôn từ chối các kết nối đến theo mặc định ...
n00dl3

Kịch bản này rõ ràng được thực hiện cho mục đích chia sẻ tập tin. Từ chối các kết nối đến đánh bại mục đích. Nó cung cấp cho bạn hành vi "killswitch" của các ứng dụng VPN thương mại - không nhiều hơn, không ít hơn.
emk2203

@ emk2203 không, nó từ chối lưu lượng đến bên ngoài đường hầm.
berbt

Câu trả lời:


8

Cấu hình có thể hạn chế hơn

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

Vẫn đang cố gắng hiểu biệt ngữ tường lửa, nhưng theo giả thuyết bạn có muốn không cho phép sử dụng tun0như một phương tiện chặn các kết nối gửi đến từ VPN không? Như trong , ufw deny in on tun0?
Matt

@MattBorja nếu bạn ufw default deny incomingufw deny in on tun0, bạn sẽ không nhận được bất kỳ kết nối nào. Một số giao diện sẽ cho phép lưu lượng truy cập đến, trong trường hợp này chúng tôi muốn nó là VPN tun0.
berbt

Bạn nói đúng, bằng cách nào đó tôi đã không thấy điều đó. Bỏ qua :)
Matt

Trên thực tế, có vẻ như những gì tôi đã "đặt câu hỏi" là ufw allow in on tun0dòng.
Matt

7

Khuyến cáo mạnh mẽ là bạn KHÔNG sử dụng hai lệnh này :

ufw allow incoming
ufw default allow in on tun0

Cho phép đánh bại mục đích có tường lửa. Không chính xác là bạn cần "cho phép vào tun0" để nhận các gói trả về. Bạn chỉ muốn nhận các kết nối bạn yêu cầu, so với việc cho phép cả thế giới kết nối với bạn. Cho phép sẽ làm điều này. Kiểm tra cấu hình đề xuất dưới đây và xem.

Dưới đây là một ví dụ cho một loạt các lệnh UFW để sử dụng với tường lửa:

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

Kết quả ví dụ:

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

LƯU Ý: -Các giao diện của bạn có thể khác nhau, ví dụ: Ubuntu 16.12 sử dụng eno1 và wlp3s0b1. Sử dụng lệnh "ifconfig" để xem giao diện thực tế của bạn. -1197 UDP khá mặc định, nhưng bạn có thể cần thay đổi nó cho VPN của mình (ví dụ: 443 TCP). -Tôi thường xóa ipv6 (sudo ufw xóa 4, lặp lại x3)

Điều này làm gì: -Nó cho phép các kết nối ra ngoài thông qua đường hầm VPN, đồng thời chặn mọi thứ trừ đường hầm VPN và kết nối DNS trên ethernet / wifi. Cảnh báo dưới đây về vấn đề DNS.

Cảnh báo: Ví dụ này cho phép trên 53 đối với các yêu cầu DNS để openvpn (ví dụ: vpn.somevpnprovider.com) có thể yêu cầu địa chỉ IP và tạo kết nối. Sự đánh đổi là khả năng rò rỉ DNS. Sử dụng dnsleaktest.com để đảm bảo cài đặt VPN của bạn vượt qua các yêu cầu DNS của bạn. Đối với sự thận trọng / hoang tưởng, bỏ qua việc cho phép trên 53 và thay vào đó hãy tắt tường lửa của bạn để kết nối, sau đó bật lại sau khi đã kết nối. Vì lý do VPN của mình, tôi chọn không làm điều đó vì nhiều khả năng tôi sẽ quên hoàn toàn tường lửa (ví dụ: DNS sẽ bị rò rỉ nếu openvpn bị định cấu hình sai).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.