Android không có quảng cáo. Sử dụng VPN và Không giới hạn để xóa quảng cáo khỏi các ứng dụng. - MTD SEC

MTD SEC

Chia Sẻ Để Thành Công

Home Top Ad

Post Top Ad

Thứ Tư, 7 tháng 8, 2019

Android không có quảng cáo. Sử dụng VPN và Không giới hạn để xóa quảng cáo khỏi các ứng dụng.


Gần đây, tôi đã mua một chiếc điện thoại Xiaomi và hài lòng với mọi thứ, ngoại trừ quảng cáo trong các ứng dụng có thương hiệu. Vâng, có một chức năng nên vô hiệu hóa nó, nhưng bạn hoàn toàn không thể thoát khỏi nó. Do đó, tôi gần như không sử dụng điện thoại để xem các trang web, bởi vì trong các trình duyệt di động, bạn hoàn toàn có thể cài đặt các trình chặn quảng cáo nhưng các apps thì không





Ai đó sẽ nói rằng quảng cáo giúp hỗ trợ các dự án miễn phí và có thể đây là một lần, nhưng bây giờ quảng cáo đang thu thập thông tin về bạn, thói quen của bạn, truy vấn tìm kiếm và hơn thế nữa: chỉ cần xem lưu lượng truy cập mà điện thoại của bạn tạo ra thời gian sử dụng bình thường. Tôi đã trang bị trình duyệt máy tính để bàn của mình với các plugin như NoScript và uBlock trong một thời gian dài, tôi gần như quên mất quảng cáo, nhưng điện thoại liên tục nhắc nhở tôi về nó.





Rơm rạ cuối cùng là tôi đã quyết định nghiên cứu lưu lượng của ứng dụng Xiaomi MiFit và tìm thấy các liên kết đến các tệp APK lạ trong các phản hồi của máy chủ (tôi sẽ không mô tả chúng, điều này nằm ngoài phạm vi của bài viết). Những người muốn có thể độc lập chặn các yêu cầu xấu, đặc biệt là khi họ đi qua HTTP thông thường.





Tôi không phải suy nghĩ lâu, đã có một máy chủ miễn phí với IP trắng trong tay. Tôi quyết định sử dụng nó để triển khai VPN, đồng thời thiết lập ở đó để chặn tất cả những gì không cần thiết - một lần cho tất cả các thiết bị được kết nối.





Giai đoạn chuẩn bị





Giả định rằng bạn đã có một máy chủ có địa chỉ IP công cộng nơi cài đặt Linux: trong trường hợp của tôi, đó là Ubuntu 16.10. Các ví dụ được trình bày sẽ hoạt động trên các bản phân phối Linux khác, với sự khác biệt là sẽ cần thiết để điều chỉnh việc cài đặt các gói cho trình quản lý gói của bạn.





Cài đặt OpenVPN





Có hai cách: 
+ đơn giản - sử dụng hình ảnh Docker được tạo sẵn (dành cho những người không muốn làm phiền và đào sâu vào cấu hình OpenVPN); 
+ phức tạp - với cài đặt thủ công và cấu hình của OpenVPN.





Chúng tôi sẽ xem xét cả hai lựa chọn và bắt đầu với một lựa chọn đơn giản.





Docker hình ảnh với OpenVPN





$ docker pull kylemanna/openvpn




Chúng tôi sẽ sử dụng nó. Đầu tiên chúng ta cần tạo một tệp cấu hình cho máy chủ VPN.





$ docker run -v /etc/openvpn:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn ovpn_genconfig -u udp://192.168.0.183




Ở đây giao thức trong đó lưu lượng và IP của máy chủ của bạn sẽ được lọc. Hãy nhìn vào cấu hình nhận được.





$ cat /etc/openvpn/openvpn.conf

server 192.168.255.0 255.255.255.0
verb 3
key /etc/openvpn/pki/private/192.168.0.183.key
ca /etc/openvpn/pki/ca.crt
cert /etc/openvpn/pki/issued/192.168.0.183.crt
dh /etc/openvpn/pki/dh.pem
tls-auth /etc/openvpn/pki/ta.key
key-direction 0
keepalive 10 60
persist-key
persist-tun

proto udp
## Rely on Docker to do port mapping, internally always 1194
port 1194
dev tun0
status /tmp/openvpn-status.log

user nobody
group nogroup
comp-lzo no

#### Route Configurations Below
route 192.168.254.0 255.255.255.0

#### Push Configurations Below
push "block-outside-dns"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
push "comp-lzo no"




Nếu bạn cần thay đổi cổng thay đổi nó trong tệp này, cũng như trong /etc/openvpn/ovpn_env.sh. Chúng tôi tiến hành việc tạo chứng chỉ ssl, tls





$ docker run -v /etc/openvpn:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn ovpn_initpki




Một mật khẩu sẽ được yêu cầu để tạo khóa ủy quyền chứng chỉ













Bây giờ, chứng chỉ và khóa máy chủ được tạo, các khóa giao thức Diffie-Hellman, cũng như chữ ký HMAC để xác minh tính toàn vẹn của TLS.









Sau đó chúng ta phải thêm người dùng. Điều này thật dễ dàng.





$ docker run -v /etc/openvpn:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn easyrsa build-client-full CLIENTNAME nopass




Vì CLIENTNAMEtôi sẽ sử dụng tên máy chủ của mình (sau này bạn sẽ tìm hiểu lý do tại sao điều này là cần thiết). tôi tạo chứng chỉ cho người dùng user-pc, tôi sẽ ngay lập tức được yêu cầu chỉ ra mật khẩu cho chứng chỉ. Chứng chỉ đã sẵn sàng, nhưng chúng ta cần lấy tệp cấu hình cho OpenVPN. tôi thực hiện lệnh sau.





$ docker run -v /etc/openvpn:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn ovpn_getclient user-pc > /root/user-pc.ovpn




tôi nhìn vào kết quả.





$ cat /root/user-pc.ovpn

client
nobind
dev tun
remote-cert-tls server

remote 192.168.0.183 1194 udp

<key>
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
</key>
<cert>
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
</cert>
<ca>
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
</ca>
key-direction 1
<tls-auth>
#
## 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
...
-----END OpenVPN Static key V1-----
</tls-auth>

redirect-gateway def1




Các khóa ở định dạng Base64 được cố ý xóa khỏi đầu ra để giảm nội dung của nó. Đó là: chạy OpenVPN trong chế độ daemon.





$ docker run -v /etc/openvpn:/etc/openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN kylemanna/openvpn




Về phía khách hàng, tôi đang cố gắng kết nối.





sudo openvpn --config user-pc.ovpn




Nếu mọi thứ đều ổn, thì ở cuối log, bạn sẽ thấy một dòng chữ Initialization Sequence Completedvà trong danh sách các giao diện, nó sẽ xuất hiện tun0với địa chỉ IP từ mạng con 192.168.255.0/24. Đối với mục đích của tôi, điều này là khá đủ, bạn chỉ cần thêm lệnh để khởi động container để tự động tải và đi đến phần có cài đặt DNS.





Cấu hình thủ công của OpenVPN





Tùy chọn thứ hai là cấu hình OpenVPN hoàn toàn thủ công. Hãy đi các bước.





1 . Cài đặt OpenVPN.





$ sudo apt install -y openvpn




2 . Tải về dễ dàng rsa.





$ sudo git clone https://github.com/OpenVPN/easy-rsa.git /etc/openvpn/easy-rsa




3 . tôi đặt các biến cho easy-rsa trong tệp /etc/openvpn/easy-rsa/easyrsa3/vars, phần còn lại là tùy chọn. Các tập tin /etc/openvpn/easy-rsa/easyrsa3/vars.example chứa một danh sách đầy đủ các biến có sẵn, nhưng điều này là đủ cho tôi.





set_var EASYRSA_KEY_SIZE    2048
set_var EASYRSA_CA_EXPIRE 3650
set_var EASYRSA_CERT_EXPIRE 3650




4 . Khởi tạo PKI.





$ cd /etc/openvpn/easy-rsa/easyrsa3 && ./easyrsa init-pki




5 . Thành lập một tls. Chỉ định mật khẩu và Tên login.





$ ./easyrsa build-ca




6 . Tạo khóa máy chủ. Ở mọi nơi tôi sử dụng tên máy chủ làm Tên chung để tạo chứng chỉ.





$ ./easyrsa build-server-full vpnserver nopass




7 . Tạo khóa client





$ ./easyrsa build-client-full user-pc nopass




8 . Tùy chọn: nếu bạn cần tạo khóa Diffie-Hellman và TLS.





$ ./easyrsa gen-dh
$ openvpn --genkey --secret /etc/openvpn/easy-rsa/easyrsa3/pki/ta.key




Điều này hoàn thành việc tạo chứng chỉ, tiến hành viết cấu hình cho máy chủ VPN /etc/openvpn/server.conf:





local 192.168.0.183

port 3333

mode server

proto udp

dev tun

ca /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt
cert /etc/openvpn/easy-rsa/easyrsa3/pki/issued/vpnserver.crt

key /etc/openvpn/easy-rsa/easyrsa3/pki/private/vpnserver.key
dh /etc/openvpn/easy-rsa/easyrsa3/pki/dh.pem

server 10.8.0.0 255.255.255.0

push "route 10.8.0.0 255.255.255.0"

push "redirect-gateway def1 bypass-dhcp"

push "dhcp-option DNS 10.8.0.1"

client-to-client

comp-lzo

keepalive 10 120

persist-key
persist-tun

log openvpn.log

verb 0
mute 20




Ưu điểm của việc cài đặt OpenVPN từ kho lưu trữ là nó cũng đăng ký như một dịch vụ trong systemctl. Hãy sửa nó để làm việc với cấu hình của chúng tôi.





$ systemctl cat openvpn.service

## /lib/systemd/system/openvpn.service
## This service is actually a systemd target,
## but we are using a service since targets cannot be reloaded.

[Unit]
Description=OpenVPN service
After=network.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/true
ExecReload=/bin/true
WorkingDirectory=/etc/openvpn

[Install]
WantedBy=multi-user.target




Nhận được đường dẫn đến tệp, tôi sẽ sửa đổi một chút theo nhu cầu của tôi.





## /lib/systemd/system/openvpn.service
## This service is actually a systemd target,
## but we are using a service since targets cannot be reloaded.

[Unit]
Description=OpenVPN service
After=network.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/sbin/openvpn --config server.conf --daemon
ExecReload=/usr/sbin/openvpn --config server.conf --daemon
WorkingDirectory=/etc/openvpn
RestartSec=5s
Restart=on-failure

[Install]
WantedBy=multi-user.target




tôi bắt đầu dịch vụ.





$ sudo systemctl enable openvpn.service && sudo systemctl start openvpn.service




Và kiểm tra lỗi.





$ journalctl -uxe openvpn.service




Trong ví dụ cuối cùng với Docker, chúng tôi đã có cơ hội nhận cấu hình máy client với một lệnh. Đã đến lúc viết kịch bản cho việc này.





#!/bin/bash

USERNAME=$1
EASYRSA_PKI="/etc/openvpn/easy-rsa/easyrsa3/pki"

echo "
client
nobind
dev tun
remote 192.168.0.183 3333
proto udp
comp-lzo yes
auth-nocache
script-security 2
persist-key
persist-tun"

echo "<key>
$(cat ${EASYRSA_PKI}/private/${USERNAME}.key)
</key>

<cert>
$(openssl x509 -in ${EASYRSA_PKI}/issued/${USERNAME}.crt)
</cert>

<ca>
$(cat $EASYRSA_PKI/ca.crt)
</ca>
"




Tôi không thấy sự cần thiết phải mô tả nó: mọi thứ đều giống nhau ở đây, nhưng để biết chi tiết bạn có thể xem





man openvpn




Bây giờ chúng ta đã có máy chủ VPN sẵn sàng và kết nối máy khách được định cấu hình, đã đến lúc bắt đầu định cấu hình máy chủ DNS.





Biên dịch DNS





tải về bản Unbound





$ git clone https://github.com/NLnetLabs/unbound.git /opt/unbound
$ sudo apt install -y protobuf-c-compiler libevent-dev libssl-dev libsodium-dev libfstrm-dev




Bây giờ bạn có thể bắt đầu biên dịch.





$ cd /opt/unbound
$ ./configure \
--prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--sbindir=/usr/bin \
--disable-rpath \
--enable-dnscrypt \
--enable-dnstap \
--enable-pie \
--enable-relro-now \
--enable-subnet \
--enable-tfo-client \
--enable-tfo-server \
--with-conf-file=/etc/unbound/unbound.conf \
--with-pidfile=/run/unbound.pid \
--with-rootkey-file=/etc/trusted-key.key \
--with-libevent
$ make
$ sudo make install




Ở đây tôi chỉ ra:





  • đường dẫn chuẩn đến tệp cấu hình; --with-conf-file
  • kích hoạt hỗ trợ dnssec; --enable-dnscrypt
  • đường dẫn đến tệp với các khóa đáng tin cậy; --with-rootkey-file
  • kích hoạt hỗ trợ dnstap. --enable-dnstap




Sau khi build thành công, chúng ta cần thêm một vài cấu hình. Đầu tiên, tạo một người dùng.





$ sudo useradd -s /bin/false -d /etc/unbound unbound




Thứ hai, chạy service





/lib/systemd/system/unbound.service




. Nội dung của nó sẽ như thế này





## /lib/systemd/system/unbound.service
[Unit]
Description=Unbound DNS Resolver
Wants=nss-lookup.target
Before=network-online.target nss-lookup.target
After=network.target

[Service]
ExecStart=/usr/bin/unbound
ExecReload=/bin/kill -HUP $MAINPID
Restart=always

[Install]
WantedBy=multi-user.target




Thêm neo vào





tmpfiles.d
$ echo 'C /etc/unbound/trusted-key.key - - - - /etc/trusted-key.key' > /usr/lib/tmpfiles.d/unbound.conf




Cấu hình DNS qua TLS
DoT sẽ thêm quyền riêng tư và bảo vệ chống giả mạo. Dưới đây là một tập tin cấu hình ví dụ





/etc/unbound/unbound.conf





server:
interface: 0.0.0.0
interface: ::0
use-syslog: yes
do-daemonize: no
username: "unbound"
num-threads: 2
verbosity: 2

access-control: 0.0.0.0/0 refuse
access-control: ::0/0 refuse

access-control: 127.0.0.1 allow
access-control: ::1 allow
access-control: 10.8.0.0/24 allow

hide-identity: yes
hide-version: yes

private-address: 127.0.0.1
private-address: ::1
# Сеть VPN
private-address: 10.8.0.0/24
private-address: fe80::/24

directory: "/etc/unbound"
trust-anchor-file: trusted-key.key
tls-cert-bundle: /etc/ssl/certs/ca-certificates.crt
cache-max-ttl: 86400
cache-min-ttl: 3600
include: /etc/unbound/local.d/*.conf

forward-zone:
name: "."
forward-tls-upstream: yes
## Cloudflare DNS
forward-addr: 1.1.1.1@853#cloudflare-dns.com
forward-addr: 1.0.0.1@853#cloudflare-dns.com
## IPv6 Cloudflare DNS over TLS
forward-addr: 2606:4700:4700::1111@853#cloudflare-dns.com
forward-addr: 2606:4700:4700::1001@853#cloudflare-dns.com

remote-control:
control-enable: yes
# Разрешаем запросы только из локальной сети
control-interface: 127.0.0.1
control-interface: ::1
control-port: 8953
control-use-cert: no




Các cấu hình đã sẵn sàng! Tạo một tệp chính /etc/unbound/trusted-key.key





kích hoạt DNSSEC





$ sudo unbound-anchor -a /etc/unbound/trusted-key.key









Liên kết với NetworkManager






Không có nhận xét nào:

Đăng nhận xét

Post Top Ad