Published on

Mở port trên Internet: những việc cần nên làm để an toàn hơn

Authors

Bài viết nằm trong Serie Homelab 2024: /posts/homelab-2024


Môi trường Internet là một môi trường cực kì nguy hiểm, nơi các hacker hoạt động liên tục để tìm những lỗ hổng bị bỏ quên hoặc không được quan tâm để tiến hành xâm nhập.

Thời điểm hiện tại, việc các cơ quan vừa và nhỏ, các phòng trọ và hộ gia đình đã và đang mạnh dạng đầu tư vào hệ thống mạng tại gia nhằm cải thiện tốc độ và độ ổn định. Ngoài ra, các phần cứng server, máy tính cá nhân cấu hình cao đã dễ tiếp cận hơn rất nhiều, các dịch vụ homelab của chúng ta cũng là một trong những dịch vụ dễ bị tổn thương và dễ bị nhắm đến trong các cuộc tấn công này.

Các vấn đề bạn có thể gặp phải khi mở port ra Internet

Mình cũng nhận ra môi trường homelab, mạng cá nhân của doanh nghiệp/người dùng ở Việt Nam cũng đang đầy rẫy những sự vô tình này. Mặc dù đa số đều là vô tình nhưng các giá phải trả để khắc phục sự cố là vô cùng lớn. Những dịch vụ phổ biến dễ bị lộ bao gồm:

  • SMB/NAS/File share: rất nhiều studio ảnh, hộ gia đình thậm chí là doanh nghiệp lộ hoàn toàn các dữ liệu bằng cách này. Bằng cách vô tình cài đặt SMB không xác thực bằng username/password, toàn bộ hình ảnh, tài liệu bảo mật liên quan đến doanh nghiệp đều có thể bị truy cập.

true
true

  • Camera: dù đã xảy ra rất nhiều vấn nạn lộ những hình ảnh riêng tư thông qua camera IP, hiện tại mọi người đều có thể dễ dàng tìm thấy các camera đang được public ra Internet mà không có biện pháp bảo vệ nào. Bạn có thể nhấn vào hình để xem chi tiết.

true

  • SSH/Remote Desktop: các giao thức phổ biến mà người dùng hay sử dụng để truy cập vào các server từ xa. Thật sự việc mở port không gây ra vấn đề ngay lập tức, nhưng nếu có một lỗ hổng zero-day, các bạn sẽ cần vá lỗi hoặc server của bạn sẽ dễ bị tổn thương hơn.

  • Các thiết bị router, dịch vụ homelab: mình thấy rất nhiều bạn đang mở Internet cho rất nhiều thiết bị như Mikrotik (bao gồm cả Bandwidth test), pfSense, OpenWRT. Việc lâu lâu bạn thấy một người dùng nào đó bị đoán mật khẩu Mikrotik và phải NetInstall lại không phải là hiếm.

Ngoài ra các dịch vụ như Home Assistant, OpenHAB, cầu dao có Wifi, các tool điều khiển loa, đèn trong nhà. Tiện thì có tiện nhưng rất không nên làm vậy, vì bạn sẽ không biết người ngoài sẽ điều khiển được thứ gì đâu.

Bạn không nên mở port, thật sự là vậy

Tuấn biết đa số lí do các bạn mở port là để truy cập vào máy ở nhà, truy cập vào camera. Đồng ý là tiện dụng nhưng bạn cần cực kì cân nhắc các vấn đề các bạn có thể gặp phải qua các bài viết bên dưới:


Bạn có thể nhận ra đặc điểm chung của các vấn đề này là gì không?

Là không phải ứng dụng, không phải OS mà bạn dùng trực tiếp gây thiệt hại. Lỗ hổng zero-day luôn tồn tại cho đến khi được phát hiện và vá lỗi. Vấn đề ở đây là do chúng ta đưa các thiết bị này ra môi trường Internet để các hacker có thể tấn công mà không gặp bất kì trở ngại nào.

Nếu bạn chỉ đặt ứng dựng/thiết bị vào một mạng riêng, bạn đã có rất nhiều thời gian để đảm bảo thiết bị không bị hacker "ghé thăm" và tốn rất nhiều thời gian để khắc phục.

Các công cụ kiểm soát và bảo vệ nếu bạn thật sự cần truy cập từ xa

VPN

Luôn là cách giải quyết khá đơn giản và được rất nhiều người khuyên dùng. Tưởng tượng VPN là một mạng riêng của bạn, nhưng là mạng ảo do bạn quản lý. Bạn kết nối laptop, máy tính bàn, camera thông qua một ứng dụng của bên thứ ba là xong, các thiết bị đã có thể kết nối với nhau rồi đó.

Ví dụ máy tính công ty có thể được kết nối từ máy tính ở nhà bạn, từ máy tính ở nhà lại có thể kết nối được với smarthome của nhà ở dưới quê.

Nếu được cấu hình đúng và tốt, thì chỉ khi bạn connect được đến VPN thì mới có thể thật sự truy cập được vào dịch vụ. Kể cả hacker có truy cập vật lý bằng cách kết nối wifi hay cắm dây mạng thì cũng không thể nào truy cập được các dịch vụ này.

Bài viết về VPN Tuấn sẽ dành một bài viết riêng để chia sẻ về hai dịch vụ VPN mà Tuấn đang sử dụng nhé.

Router

Đường đi từ Internet vào đến network nhà bạn chắn chắn đều phải thông qua router, vì vậy bạn nên quản lý tất cả các port được mở trên đây. Tất cả các router từ router có sẵn của nhà mạng đến router chuyên dụng đều có các mục này, gọi dân dã là "mở port" hoặc NAT port ra Internet.

Về phía quản lý router, theo mình tuyệt đối không nên đặt server của bạn vào DMZ. Lúc này tất cả các port trên server dù vô tình hay cố ý đều được open ra Internet mà bạn không hay biết gì. Cách tốt nhất là xóa thiết bị của bạn khỏi cài đặt DMZ, và chỉ forward những port thật sự cần thiết phải mở ra để truy cập, ví dụ như HTTP (80), HTTPS (443), SSH (22), RDP (3389), các port của các dịch vụ VPN như IPSec, WireGuard.

Quan niệm của mình là tất cả những port, những website (từ homelab) được mở ra Internet đều phải có xác thực, ít nhất là Username và Password, Basic Auth. Nếu không có xác thực thì bạn phải chắc chắn các website và port mở ra không chứa bất kì thông tin nhạy cảm nào của network, của người dùng/thiết bị trong mạng và của riêng bạn.

Proxy: Cloudflare / Nginx

Một số bạn đang sử dụng các dịch vụ như trên để truy cập website thông qua tên miền.

Cloudflare là một ứng cử viên hàng đầu kể cả khi bạn là người dùng cá nhân, nhu cầu homelab, xem camera đơn giản. Kể cả với bản miễn phí 🔗, Cloudflare cung cấp công cụ Access (bây giờ là Zero Trust) 🔗 giúp bạn có thể xác thực người dùng thông qua tài khoản Google, Facebook hoặc email. Ngoài ra khi sử dụng Cloudflare Tunnel, bạn không cần phải NAT port ra internet nữa, lúc này bạn có thể truy cập SSH/RDP thông qua Cloudflare Tunnel an toàn hơn rất nhiều.

Với Nginx, bạn có thể bật xác thực theo lớp Private IP hoặc bằng Basic Auth là được.

Nmap

Nếu quản lý từ router là hướng nhìn của bạn từ bên trong mạng ra bên ngoài, thì sử dụng Nmap là một cái nhìn toàn diện hơn để đảm bảo rằng bạn đã tự review tất cả những cấu hình network của bạn ra Internet.

Nmap công cụ quét cổng (scan port) miễn phí và rất phổ biến, giúp bạn biết được bất kì một địa chỉ IP nào đang mở những port nào. Tất nhiên chúng ta sẽ chủ yếu scan những địa chỉ IP do chúng ta quản lý.

Cài đặt nmap khá đơn giản bằng cách lệnh phía dưới:

# MacOS
brew install nmap

# Debian/Ubuntu
apt install nmap

# CentOS/AlmaLinux/Rocky/Amazon Linux
dnf install nmap

Sau đó bạn có thể gọi lệnh nmap <IP-của-bạn> để nhận về kết quả. Mình lưu ý khi scan, các bạn nên sử dụng mạng 4G hoặc wifi công ty,... để đảm bảo bạn đang từ bên ngoài gọi vào, tránh các vấn đề firewall/Hairpin NAT có thể xảy ra làm sai lệch kết quả.

➜ nmap 171.226.239.18
Starting Nmap 7.95 ( https://nmap.org ) at 2024-08-09 13:37 +07
Nmap scan report for 171.226.239.18
Host is up (0.0035s latency).
Not shown: 998 closed tcp ports (conn-refused)
PORT         STATE        SERVICE
22/tcp       open         ssh
80/tcp       open         http

Có thể thấy rõ kết quả scan NMap của địa chỉ IP trên, mạng này đang mở hai port là SSH và HTTP. Bạn có thể setup và chạy lệnh này hàng ngày hoặc hàng tuần để đảm bảo mạng của bạn được review.

Ngoài ra, có thể dùng lệnh bên dưới để scan được kết quả chi tiết hơn.

nmap -p0- -v -A -T4 171.226.239.18

Shodan Monitor

Đây là công cụ tin dùng mà mình đã sử dụng để quét và đưa ra các bài viết cảnh báo về việc mọi người đang vô tình để lộ các ứng dụng quan trọng ra ngoài Internet.

true

Hơn thế nữa, Shodan Monitor đảm bảo bạn có thể nhận được thông tin quan trọng ngay khi service của bạn được/bị expose ra ngoài môi trường Internet. Bên dưới là một email thông báo về port Winbox trên Mikrotik của mình ngay hôm sau khi setup.

Dù là dịch vụ trả phí nhưng bạn có thể đợi deal Black Friday, chi phí bỏ ra rất xứng đáng với lợi ích mà bạn nhận được.