12 điểm bởi mirseo 2025-09-11 | 34 bình luận | Chia sẻ qua WhatsApp

Khi phát triển, đôi lúc vì lý do bảo mật mà có những nơi chỉ cho phép http/https tới một số trang nhất định, còn SSH hay RDP thì không được mở, nên mình đã làm ra thứ này.

Đây là một dự án tên là NotionSSH, khi nhập trong Notion kiểu như !(docker ps)

thì một chương trình Rust đơn giản chạy trên máy đang theo dõi trang đó sẽ thực thi lệnh bằng shell và trả về kết quả.

Hiện vẫn là phiên bản đầu nên có thể còn nhiều lỗi.
Mong mọi người dùng thử nhiều nhé!

34 bình luận

 
mirseo 2025-10-05

Xin lỗi vì đã phản hồi chậm!
Tôi thật sự rất áy náy. Dự án đầu tiên tôi phát triển một cách nghiêm túc với mục đích mã nguồn mở được chú ý thì là điều tốt, nhưng có lẽ vì nhận quá nhiều lời chỉ trích qua email cá nhân và nhiều SNS bên ngoài khác nên tôi đã cảm thấy sợ hãi.

Vì thế, tôi đã vội vàng chuyển dự án sang chế độ riêng tư trong 3 ngày. Tôi thật sự xin lỗi vì đã khiến mọi người thất vọng bởi quyết định nóng vội của mình.

Tôi sẽ xem đây là một trải nghiệm quý giá và sẽ tiếp tục cải thiện các dự án mã nguồn mở trong tương lai. Xin cảm ơn!!

 
seokzoo 2025-09-13

Ngoài ra còn có một remote desktop gateway tên là guacamole (https://guacamole.apache.org/)

 
mirseo 2025-10-05

Xin lỗi vì đã phản hồi muộn!
Trước đây tôi từng dùng cách đó, nhưng do đặc tính của VNC nên tốc độ chậm và bị ảnh hưởng khá nhiều bởi độ trễ.
Vì vậy tôi đã nghĩ ra một phương pháp thay thế mới và tạo ra nó, cảm ơn bạn!!

 
thinkpad 2025-09-12

2025 | Đã phát triển NotionSSH (2.0), một cầu nối SSH dựa trên Rust (https://github.com/mirseo/notionSSH) <- không còn được hỗ trợ và đã bị xóa

Có vẻ như bạn đã viết như vậy... Có lẽ sẽ tốt hơn nếu trả lời ở đây hoặc xóa bài news.

 
mirseo 2025-10-05

Xin lỗi vì đã phản hồi muộn!
Gần đây dự án này nhận khá nhiều góp ý về vấn đề bảo mật, nên tôi đã suy nghĩ rất nhiều về việc có nên tiếp tục công khai repository đó hay không,
và đã chuyển nó sang chế độ riêng tư mà không thông báo trước.
Tôi thật sự xin lỗi vì đã khiến mọi người thất vọng vì quyết định vội vàng của mình. Từ nay tôi sẽ cố gắng trở thành một nhà phát triển tiến bộ hơn. Cảm ơn mọi người.

Hiện tại tôi đang lên lịch cho các đợt phát triển tiếp theo và cũng đã chuyển lại sang chế độ công khai. Cảm ơn vì những ý kiến đóng góp tốt đẹp!!

 
crawler 2025-09-12

Vì đã có nhiều lập trình viên chia sẻ về bảo mật và các mẹo, và số bình luận cũng đã vượt quá 27, nên tôi nghĩ bài này không còn là bài viết của riêng mình nữa...

Nhưng nếu có nút xóa bài thì đúng là quyền tự do của chính chủ thôi nhỉ haha
Tôi chưa từng đăng bài nên cũng tò mò không biết có xóa được hay không

 
mirseo 2025-10-05

Xin lỗi vì đã phản hồi muộn!
Thực ra tôi đã cân nhắc xóa bài, nhưng có lẽ vì không tìm thấy nút xóa nên đã để đó…
Xin lỗi
Một khi mọi người đã cùng đưa ra ý kiến thì đó không còn chỉ là bài viết của riêng tôi nữa, vậy mà tôi đã tự quyết định quá vội vàng một mình

Và tôi đã rất sợ. Tôi chỉ mới bắt đầu tham gia cộng đồng này, nhưng liên tục nhận được góp ý qua nhiều nền tảng và email rằng dự án này có rủi ro bảo mật quá lớn... nên tinh thần tôi bị dao động rất nhiều. Xin lỗi

 
kaydash 2025-09-12

Tại sao không thể truy cập repository?

 
mirseo 2025-10-05

Xin lỗi vì phản hồi chậm!!
Gần đây có nhiều ý kiến chỉ ra các vấn đề bảo mật, nên trong lúc suy nghĩ rất nhiều về việc có nên tiếp tục công khai repository đó hay không,
tôi đã chuyển nó sang chế độ riêng tư mà không thông báo trước.
Tôi thật sự xin lỗi vì đã khiến mọi người thất vọng bởi quyết định vội vàng của mình. Từ nay tôi sẽ cố gắng trở thành một lập trình viên phát triển hơn nữa. Xin cảm ơn

 
cocofather 2025-09-12

Nếu SSH không hoạt động vì không thể mở cổng 22, thì cũng có cách đổi cổng SSH hoặc dùng Cloudflare Tunnel.

 
mirseo 2025-09-12

Đúng vậy! Nhưng nơi tôi làm việc chặn hẳn giao thức ssh bằng tường lửa nên mới vậy!
Tôi cũng đã thử Cf tunnel và tailscale, nhưng vì được nói là có thể vi phạm quy định nên tôi đang dùng shell bên ngoài cho an toàn :) ( Khi hỏi về quy định thì đội bảo mật của trường nói chỉ phê duyệt inbound/outbound cho http/https trên cổng 80, 443 )

 
mirseo 2025-09-12

Thực ra vẫn có thể xin phê duyệt, nhưng thủ tục rườm rà và các quy định liên quan khá phức tạp nên tôi đã làm theo cách này.

 
regentag 2025-09-12

Nếu tôi là đội bảo mật, chắc ngay khoảnh khắc biết đến cái này tôi sẽ chặn ngay...
Nếu đã có quy trình và có thể xin phê duyệt mà vẫn cố tình lách qua thì càng phải chặn hơn nữa.

 
kunggom 2025-09-12

Chúng tôi gọi đây là Shadow IT.

 
mirseo 2025-09-12

Đúng vậy, cũng có thể như thế thật.
Nhưng mục đích làm ra cái này vốn không phải để dùng thực tế, mà chủ yếu là vì mình nghĩ sẽ thú vị nếu có một thứ như thế này!

Vì vậy nên mình đã thử làm nó thành một side project!!

 
ifmkl 2025-09-11

Xét một cách chặt chẽ thì đây là RCE. Cực kỳ nguy hiểm. Chẳng phải cái này là không có bước xác thực nào vì mục đích bảo mật sao? Tức là agent chạy trên máy chủ sẽ định kỳ thực thi lệnh từ một trang bên ngoài. Mà lại mặc định tin tưởng tuyệt đối trang bên ngoài đó mà không hề xác thực. Dù có dùng Notion API đi nữa thì... ừm, vẫn nguy hiểm.

 
mirseo 2025-09-11

Đã bổ sung các thiết bị bảo mật!

  1. Xác minh CA - cấu hình 3 bước gồm 1. xác minh chuỗi chứng chỉ CA, 2. xác minh DoH DNS (cf, google), 3. ghim chứng chỉ (xác minh khóa công khai)

  2. Thêm ACL (bổ sung kiểm soát quyền sử dụng lệnh theo từng tài khoản dựa trên quyền email người dùng + bổ sung kiểm soát quyền theo nhóm)

  3. Mặc định chặn các lệnh không có trong Allow

 
mirseo 2025-09-11

Ừm.. thực ra là đúng vậy
Hiện tại vẫn là phiên bản đầu nên ở các phiên bản sau tôi đang định bổ sung tính năng chặn thực thi dựa trên tên tài khoản
(dùng tên tài khoản nhận từ NotionAPI và giới hạn các tài khoản có thể thực thi bằng biến môi trường hệ thống, đồng thời thêm lớp phân quyền!! )
Có lẽ trọng tâm sẽ là tăng cường bảo mật!!

 
skageektp 2025-09-11

Có một điều tôi chưa hiểu rõ nên muốn hỏi:

  1. Có phải máy tính từ xa sẽ định kỳ theo dõi Notion, đọc lệnh từ đó rồi thực thi không?
  2. Nếu đúng như vậy thì đây có phải là một dự án không liên quan đến SSH không...?
 
mirseo 2025-09-11

Ngoài ra, vì tôi nghĩ bản thân SSH hướng tới mục tiêu là truy cập shell an toàn, nên nếu dùng cách này thì chính việc truy cập shell cũng an toàn, và vì có cấu trúc ( máy chủ - máy chủ Notion - người dùng ) nên tôi đã gắn tên SSH cho nó!

 
mirseo 2025-09-11

Ừm... đúng là vậy. Thật ra ban đầu đây là một dự án dựa trên trao đổi khóa, nhưng trong quá trình phát triển tôi đã chuyển hướng sang để nó đọc bằng cách sử dụng trang Notion.
Vì cách yêu cầu người dùng trao đổi khóa rồi xác thực vừa khó triển khai, vừa không phù hợp với Notion.
(Phiên bản 1.0 giai đoạn đầu chưa công khai - phiên bản này dùng phương thức trao đổi khóa dành cho Discord, nhưng vì bất tiện nên cuối cùng chính tôi cũng không dùng nữa. Do đặc tính của mật khẩu nên cũng hơi không tiện nếu công khai trên Notion.)
Cảm ơn vì ý kiến rất hay! Có lẽ tên dự án cũng sẽ được đổi sau này.

 
beoks 2025-09-11

Đây là một dự án thú vị đấy, có lý do nào khiến bạn chọn Notion không?

 
mirseo 2025-09-11

Đúng vậy! Thực ra tôi nghe nói Notion được dùng rất nhiều trong công việc thực tế, và trong trường hợp của tôi, tôi dùng nó để tải dữ liệu lên và sắp xếp, nên đã chọn Notion.
Tôi cũng chọn dùng Notion vì Discord, email và Slack có vẻ sẽ bất tiện về mặt sử dụng API và trong môi trường màn hình theo dõi, đặc biệt ở phần hỗ trợ khối Code!

 
mirseo 2025-09-11

Ngoài ra, xét về việc chia sẻ kết quả thực thi và từ góc độ công ty, họ cũng chọn Notion — một công cụ thuận tiện cho cộng tác — để khi hỗ trợ các bộ phận như nhóm thiết kế, đội CNTT của công ty có thể nhanh chóng can thiệp giải quyết sự cố.

 
beoks 2025-09-11

Bạn cũng đã cân nhắc đến các trường hợp thực tế nhỉ. Tuy nhiên, với các kết nối như SSH thì một số chỉ có thể truy cập trong mạng nội bộ khép kín, nên không có kết nối Internet và vì vậy có lẽ sẽ không thể dùng Notion được T_T

 
mirseo 2025-09-11

Ôi… đúng là tôi đã không nghĩ tới chỗ đó.
Thật ra nếu là máy chủ mà bảo mật quan trọng thì có lẽ dùng cách như Tailscale sẽ an toàn hơn kiểu này!!
Cảm ơn bạn đã góp ý hay!!

 
mirseo 2025-09-11

Ơ... sáng nay trên đường đến trường mình đăng bằng điện thoại nên còn không biết là có cả lỗi gõ sai nữa.
Chúc mọi người một ngày thật tốt :)

 
geekapple 2025-09-11

Hồi trước khi nghịch hack qua Hacker School, người ta nói web shell là một lỗ hổng bảo mật cực lớn mà......
Giờ lại còn shell trên Notion nữa thì chắc người phụ trách bảo mật ngất xỉu mất thôi

 
mirseo 2025-09-11

Aha... tính năng tiện lợi thì cũng đi kèm với những đánh đổi tương ứng.. (...)
Ừm.. có khi nó cũng hoạt động giống như một web shell vậy
Dù vậy, về mặt bảo mật thì vẫn có lưu log.. nếu có log được ghi lại thì có lẽ cũng có thể phát hiện được chăng..?

Có vẻ cũng có thể bị dùng như web shell, mà tôi đã không biết điều đó
Cảm ơn bạn đã cho biết!!

 
t7vonn 2025-09-11

!(rm -rf /)

 
mirseo 2025-09-11

Trong phiên bản mới nhất, chúng tôi đã bổ sung các tính năng bảo mật!
ACL đã được thêm vào, nên trong cấu hình bảo mật, các lệnh như rm sẽ bị chặn theo mặc định!

 
mirseo 2025-09-11

Ái chà... cái này có lẽ phải giới hạn quyền hạn rồi nhỉ..?
Có khi ở phiên bản tiếp theo sẽ cần thêm SecureConfig...
Cảm ơn bạn đã báo nhé!!

 
cgl00 2025-09-11

Ý tưởng khá thú vị nhỉ haha
https://crates.io/crates/iroh-ssh/0.1.1 cũng có thứ như thế này

 
mirseo 2025-09-11

Ồ... thú vị thật đấy?! Xem cái này xong chắc tôi phải cải tiến thêm mới được
Phiên bản tôi đang nghĩ tới là thử thêm tính năng P2P vào notionSSH,
đúng lúc bạn giới thiệu một thứ hay quá, cảm ơn nhé :)