.onion là gì ?
.onion là tên miền ảo cấp cao nhất 4 được tạo ra bởi nhóm phát triển Tor 1 dành cho các dịch vụ ẩn với bên ngoài. Vì tên miền.onion không phải là tên miền hợp lệ trong DNS nên các tên miền này chỉ có thể truy cập được khi máy tính đã kết nối với mạng Tor. Các máy chủ chạy tên miền.onion rất khó để phát hiện ra. Sử dụng tên miền.onion giúp người truy cập và chủ máy chủ sử dụng tên miền khó bị phát hiện.
Vậy tên miền .onion khác các domain thông thường thế nào?
Các domain thông thường chúng ta vẫn hay sử dụng như .com, .vn, .org,… được ban hành bởi Internet Corporation for Assigned Names and Numbers (ICANN). Có hàng ngàn domain khác nhau, nhưng không phải mọi người đều sử dụng chúng (như .apple). Người dùng phải gửi đề xuất tới ICANN để đăng ký một domain và subdomain. Thường thì sẽ có các chi phí đi kèm và phí duy trì domain.
Trong khi đó các địa chỉ.onion được tạo ra dựa trên khóa công khai khi dịch vụ ẩn được tạo ra, gồm 16 ký tự gồm các ký tự bất kì trong bảng ký tự. Tor trên dịch vụ ẩn sẽ lấy 18 bit đầu trong mã nhận dạng được mã hóa bằng SHA-512 rồi đem mã hóa qua base32 để tạo ra địa chỉ.
(Video demo)
Bài viết này sẽ hướng dẫn cho bạn cách triển khai một hệ thống webserver Nginx + MariaDB + PHP + TOR để chạy các web trên mạng TOR, Là một mạng ẩn danh với dạng website DarkWeb, DeepWeb
I. Cài đặt Ubuntu
Tại bài này, ta sẽ sử dụng Ubuntu server 22.04 LTS. Các bản như 16 18 20.04 đều tương tự. Ko như các hướng dẫn khác trên mạng, tip này mình đã test chạy ok với TOR rồi nhé.
II. Cài đặt Nginx
Đầu tiên thì cần phải Gỡ Apache2 được cài sẵn trên Ubuntuservice apache2 stop
— dừngapt-get remove apache2*
— xóawhereis apache2
— xác đinh thư mục apache2rm -rf /etc/apache2
— xóa thư mục apache2
apt-get update && apt-get upgrade -y
apt-get install nano net-tools wget zip unzip -y
Cài đặt Nginx:
apt-get install nginx -y
Trên Ubuntu 22.04, Nginx được cấu hình bắt đầu chạy khi cài đặt.
Nếu tường lửa ufw đang chạy, thì bạn cần phải cho phép kết nối với Nginx. Nginx tự đăng ký với ufw khi cài đặt. Do đó việc thực hiện trở nên đơn giản hơn.
apt install ufw
Cho phép lưu lượng truy cập trên cổng 80.
ufw allow 'Nginx HTTP'
Kiểm tra phiên bản nginx:
nginx -v
nginx version: nginx/1.17.10 (Ubuntu)
Truy cập IP máy chủ trên trình duyệt ta sẽ thấy như sau:
nếu còn hiển thị file index của apache2 thì vào xóa file index ở /var/www/html
III. Cài đặt hệ quản trị cơ sở dữ liệu
Trên thực tế với LEMP, bạn có thể sử dụng mysql hoặc mariadb đều được, bài này mình sẽ hướng dẫn với mariadb.
Trước khi cài đặt, ta sẽ gỡ phiên bản hiện tại của MariaDB trên máy để cài đặt mới.
Gỡ MariaDB hiện tại trên Ubuntu:
apt-get remove mariadb-server
Ở đây mình sử dụng MariaDB làm máy chủ cơ sở dữ liệu. Để cài đặt bạn sử dụng lệnh sau:
root@ubuntu:~# apt-get install mariadb-server mariadb-client -y
Cài xong bạn kiểm tra dịch vụ cũng như bật khởi động cùng hệ thống.
root@ubuntu:~# systemctl enable mariadb
#Bật khởi động
root@ubuntu:~# systemctl start mariadb
#Khởi động dịch vụ
root@ubuntu:~# systemctl status mariadb
#Kiểm tra dịch vụ
● mariadb.service - MariaDB 10.6.7 database serverLoaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)Active: active (running) since Fri 2022-05-13 15:09:50 +07; 4min 28s agoDocs: man:mariadbd(8)https://mariadb.com/kb/en/library/systemd/Main PID: 3220 (mariadbd)Status: "Taking your SQL requests now..."Tasks: 8 (limit: 1034)Memory: 60.1MCPU: 575msCGroup: /system.slice/mariadb.service└─3220 /usr/sbin/mariadbd
Cấu hình MariaDB
Chạy lệnh dưới để bắt đầu và mới đầu thì chưa có password nên nhấn Enter khi nó hỏi password nhé
root@ubuntu:~# mysql_secure_installation
Switch to unix_socket authentication [Y/n] nChange the root password? [Y/n] y #Thay đổi mật khẩu root mariaDBNew password: # Nhập mật khẩu vào nhé, nó sẽ không hiển thị ******* nhưng cứ nhập bình thường rồi nhấn EnterRe-enter new password:Remove anonymous users? [Y/n] yDisallow root login remotely? [Y/n] yRemove test database and access to it? [Y/n] yReload privilege tables now? [Y/n] y
Kiểm tra phiên bản MariaDB
root@ubuntu:~# mariadb --version
mariadb Ver 15.1 Distrib 10.6.7-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapper
IV. Cài đặt PHP
Không giống với Apache, Nginx không tích hợp hỗ trợ xử lý các tệp PHP. Vì vậy, ta cài đặt một ứng dụng riêng biệt để xử lý các tệp PHP. Chẳng hạn như PHP FPM (fastCGI process manager
)
Nếu bạn muốn cài một bản php nào đó thì có thể thay lại số phiên bản cho phù hợp. Ví dụ:
apt install php7.4-fpm php7.4-common php7.4-mbstring php7.4-xmlrpc php7.4-soap php7.4-gd php7.4-xml php7.4-intl php7.4-mysql php7.4-cli php7.4-zip php7.4-curl
Kiểm tra phiên bản php
php -v
PHP 7.4.3 (cli) (built: Mar 26 2020 20:24:23) ( NTS )Copyright (c) The PHP GroupZend Engine v3.4.0, Copyright (c) Zend Technologieswith Zend OPcache v7.4.3, Copyright (c), by Zend Technologies
Ta sẽ thấy phiên bản php sau khi cài là 7.4.3 nếu bạn cài php7
Bây giờ ta đã cài đặt đủ các thành phần của LEMP stack. Nhưng vẫn cần phải thực hiện một số thay đổi về cấu hình để yêu cầu Nginx sử dụng PHP để xử lý nội dung.
Chú ý thay lại phần tô đỏ nhé.
Mở thư mục: /etc/nginx/sites-available/
nano /etc/nginx/sites-available/default
Xóa hết nội dung trong file này và thay lại nội dung dưới: (nhớ chỉnh lại phiên bản php7.4 cho đúng nhé)
server { listen 80 default_server; listen [::]:80 default_server; root /home/html; index index.php index.html index.htm index.nginx-debian.html; server_name _; location / { # try_files $uri $uri/ =404; try_files $uri $uri/ /index.php?$args; } location ~ /.ht { deny all; } location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; }}
Trong đó:
listen
: Xác định cổng Nginx lắng nghe. Trong trường hợp này là cổng 80 (mặc định của HTTP)root
: Xác định gốc lưu trữ các tệp của trang webindex
: thứ tự ưu tiên các file cấu hình, nếu chúng tồn tạiserver_name
: Xác định khối máy chủ nào được sử dụng. Nó trỏ đến tên miền hoặc IP public của bạnlocation /
: Kiểm tra sự tồn tại của các tệp khớp vớiuri
. Nếu nginx không thể tìm thấy tệp thích hợp, nó sẽ trả về 404location ~ .php$
: Khai báo nơi xử lý PHP bằng cách trỏ Nginx vào tệp cấu hìnhfastcgi-php.conf
và tệpphp7.4-fpm.sock
location ~ /.ht
: Xử lí các tệp.htaccess
mà Nginx không xử lí. Bằng cáchdeny all
chỉ thị, nếu bất kì tệp.htaccess
xảy ra để tìm đường vào tài liệu gốc thì chúng sẽ không được phục vụ cho khách truy cập.
Kiểm tra xem file cấu hình mới có lỗi gì không:
nginx -t
Nếu không có lỗi gì sẽ có thông báo tương tự như sau.
nginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful
Nếu có lỗi thì sẽ có thông báo lỗi.
Reload Nginx:
systemctl reload nginx
Toàn bộ source code mình muốn nó sẽ chạy ở thư mục /home/html/
thì mình tạo thêm thư mục bằng cách chạy lệnh này:
mkdir /home/html
cp /var/www/html/index.nginx-debian.html /home/html/index.nginx-debian.html
Tạo file info.php
để check phiên bản ở /home/html/
nano /home/html/info.php
Thêm vào nội dung sau:
<?php phpinfo();?>
Dùng trình duyệt gõ vào thanh URL
<ip vps>/info.php
Khi xuất hiện màn hình tương tự như hình có nghĩa là đã cài PHP thành công.
Sau khi cài đặt xong, bạn nên xóa file info.php
, vì nó có thể cho người dùng trái phép một số gợi ý về cấu hình của trang web và giúp họ cố gắng đột nhập.
rm-rf /home/html/info.php
Nêu ko truy cập được thì: systemctl reload nginx
và thử lại. Như vậy là đã cài và cấu hình web server nginx để chạy được các mã nguồn được rồi.
V. Cài đặt TOR và Cấu hình để chạy được trên mạng TOR
Chỉnh sửa file /etc/nginx/sites-available/default
giống như phía dưới để chạy được với TOR nhé.
server { listen 127.0.0.1:80 default_server; root /home/html; index index.php index.html index.htm index.nginx-debian.html; server_name 127.0.0.1; # chỉnh phiên bản php lại cho phù hợp location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; } location / { # try_files $uri $uri/ =404; # try_files $uri $uri/ /forums/index.php?$args; # WordPress Permalinks nếu mã nguồn bạn để trong thư mục forums sub-folder thì bật dòng này nhá try_files $uri $uri/ /index.php?$args; allow 127.0.0.1; deny all; }}
Sau đó lưu lại .
Các bạn mở tiếp file : nano /etc/nginx/nginx.conf
rồi thêm đoạn mã sau vào trong block http
server_name_in_redirect off;server_tokens off;port_in_redirect off;
Lưu lại và khởi động lại Nginx bằng lệnh sau : systemctl restart nginx
Cài đặt và cấu hình Tor bằng lệnh dưới: (Hoặc tham khảo thêm ở bài viết này: https://support.torproject.org/apt/)
apt install apt-transport-tor -y
Sau đó, chạy lsb_release -c
hoặc cat /etc/debian_version
để kiểm tra phiên bản Hệ điều hành. Thay thế <DISTRIBUTION> bằng tên mã Hệ điều hành của bạn.
# For the stable version.deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] tor://apow7mjfryruh65chtdydfmqfpj5btws7nbocgtaovhvezgccyjazpqd.onion/torproject.org <DISTRIBUTION> main# For the unstable version.deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] tor://apow7mjfryruh65chtdydfmqfpj5btws7nbocgtaovhvezgccyjazpqd.onion/torproject.org tor-nightly-main-<DISTRIBUTION> main
Ubuntu 20.04 thì sẽ có dạng: focal
hoặc bullseye/sid
nhưng bạn cứ kiểm tra cho chính xác nhé!
Ví dụ trên Ubuntu 22.04 của mình là bookworm/sid và mình thay lại như dưới:
# For the stable version.deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] tor://apow7mjfryruh65chtdydfmqfpj5btws7nbocgtaovhvezgccyjazpqd.onion/torproject.org bookworm/sid main# For the unstable version.deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] tor://apow7mjfryruh65chtdydfmqfpj5btws7nbocgtaovhvezgccyjazpqd.onion/torproject.org tor-nightly-main-bookworm/sid main
và bạn cần thêm mấy dòng trên vào nano /etc/apt/sources.list
— thư mục WinSCP: /etc/apt/
hoặc một tệp mới trong nano /etc/apt/sources.list.d/sources.list
Thêm khóa gpg được sử dụng để ký các gói bằng cách chạy lệnh sau tại dấu nhắc lệnh của bạn:
wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null
Cài đặt keyring tor và tor debian
Bây giờ hãy làm mới các nguồn của bạn và cố gắng cài đặt khóa tor và tor debian:
# apt update
# apt install tor deb.torproject.org-keyring
Sau khi đã cài đặt xong Tor rồi thì chúng ta sẽ tiến hành cấu hình để run 1 dịch vụ ẩn Tor
Các bạn cần sao lưu file cấu hình tor mặc định để phòng khi cần phục hồi còn có cái mà dùng bằng lệnh sau:
cp /etc/tor/torrc /etc/tor/torrc.backup
— Thư mục WinSCP: /etc/tor/
Sau đó mở file cấu hình bằng lệnh sau : nano /etc/tor/torrc
chép mấy dòng bên dưới và dán vào trên cùng của file và lưu lại
HiddenServiceDir /var/lib/tor/hidden_service/HiddenServicePort 80 127.0.0.1:80
Mặc định các dịch vụ ẩn của tor, replay…đều không hoạt động, để kích hoạt chúng các bạn cần xóa bỏ dấu # ở các tùy chọn mình cần bật giống như trên.
Lưu lại và khởi động lại Tor bằng lệnh sau : service tor restart
Có 2 tập tin được tạo bởi Tor trong thu mục này: /var/lib/tor/hidden_service/
Đầu tiên là một tập tin hostname (tên máy chủ). Mở nó lên để lấy địa chỉ .onion của bạn bằng lệnh dưới:cat /var/lib/tor/hidden_service/hostname
Tên miền .onion của mình là: vicoqlxclxrgcfgqtrg2uzubkn6v2aeyi4brj54uh3iuauq4hreridid.onion
Đó chính là địa chỉ để người khác truy cập vào website ở mạng Tor của bạn. Bây giờ thì vào bằng tên miền trên chứ không còn sử dụng được ipVPS nữa nhé.
Một tập tin khác chứa khóa riêng tư (private key). Mở nó lên và bạn sẽ thấy chúng gần giống như key SSH …Đó là một chuỗi mã hóa, với hai tệp này, bạn có thể di chuyển máy chủ của mình sang một máy chủ mới nếu cần thiết. Sao chép các tập tin này và giữ chúng an toàn nhá.
VI. Quản lý Database
Tạo Database
Bạn hãy truy cập vào mysql và tạo database mới cho website.
mysql -u root
CREATE DATABASE database_web1;
CREATE USER 'user_web1'@'localhost' IDENTIFIED BY 'PasssWord12345678';
GRANT ALL PRIVILEGES ON database_web1.* TO 'user_web1'@'localhost';
hoặc tạo database bằng vài lệnh đơn giản như sau:
# mysql -u root
# mysql -u root -p
- Tạo Database
MariaDB [(none)]>CREATE DATABASE tendb;
- Tạo User
MariaDB [(none)]>CREATE USER 'tenbuser'@'localhost' IDENTIFIED BY 'Password12345678';
- Gán quyền User Database
MariaDB [(none)]>GRANT ALL PRIVILEGES ON tendb.* TO 'tenbuser'@'localhost';
- Reload all the privileges
MariaDB [(none)]>FLUSH PRIVILEGES;
- Show Database
MariaDB [(none)]>show databases;
Sau khi upload mã nguồn vào thư mục /home/html thì nhứ chmod lại nhé
chown -Rf nginx:nginx /home/html/
chown -Rf www-data.www-data /home/html/
==============restore domain
Sao lưu các file trong thư mục hidden_service domain cũ: /var/lib/tor/hidden_service
Qua Server mới và xóa các file trong rm -rf /var/lib/tor/hidden_service
–cẩn thận khi chạy lệnh này nhá.
Chép file trong thư mục đã sao lưu trên vào /var/lib/tor/hidden_service ở Server mới
Khởi động lại tor bằng lệnh: /etc/init.d/tor restart
Và sau đó, nó sẽ tạo một url TOR và tệp keyfile mới cho dịch vụ của bạn, nó sẽ không đụng đến các tệp web của bạn.
==============Tạo tên miền Onion mới
Nếu bạn muốn tạo một tên miền mới thì xóa hết file trong /var/lib/tor/hidden_service
Khởi động lại tor: /etc/init.d/tor restart
Reload nginx: systemctl reload nginx
Khởi động lại vps luôn: reboot
Và sau đó, nó sẽ tạo một url TOR và tệp keyfile mới cho dịch vụ của bạn, nó sẽ không đụng đến các tệp web của bạn.
Vậy là xong. Chúc bạn thành công!
M dành mấy tiếng để test + viết bài nên leech đi đâu nhớ ghi nguồn nè: https://hoanggiangnam.com/lemp-tor