ส่ง SSH ผ่าน HTTPS
- การส่ง SSH ผ่าน HTTPS ต้องปรับทั้งฝั่งไคลเอนต์และเซิร์ฟเวอร์
- ในตัวอย่างการตั้งค่าไคลเอนต์ มีการตั้งค่า
ProxyCommand และ ServerAliveInterval ในไฟล์ ~/.ssh/config
- สคริปต์
~/.ssh/https-tunnel.bash ที่ใช้ จะส่งเมธอด CONNECT พร้อมเฮดเดอร์ และใช้ socat เพื่อสร้างการเชื่อมต่อ TLS
ตัวอย่างการตั้งค่าเซิร์ฟเวอร์
- ในการตั้งค่าเซิร์ฟเวอร์ HTTPS ของ Apache2 จะโหลด
proxy_connect_module และใช้คำสั่ง AllowCONNECT เพื่ออนุญาตให้ใช้เมธอด HTTP CONNECT กับปลายทางที่กำหนด
- ฝั่งเซิร์ฟเวอร์มีการตั้งค่าให้ใช้เมธอด
CONNECT ได้เฉพาะสำหรับโฮสต์ ssh-server ซึ่งเป็นปลายทางเดียวจาก https-server
ที่มา
- ระหว่างพักอยู่ในโรงพยาบาล ผู้เขียนต้องการทำงานระยะไกลผ่าน Wi-Fi ของโรงพยาบาลที่บล็อกการเชื่อมต่อเกือบทุกประเภท
- เครือข่ายของโรงพยาบาลอนุญาตเฉพาะการเชื่อมต่อ HTTP และ HTTPS เท่านั้น และบล็อก SSH อย่างสมบูรณ์
- จึงได้สำรวจวิธีการส่ง SSH ผ่าน HTTP หรือ HTTPS
วิธีที่เป็นไปได้
- โปรเจกต์
sslh สำหรับโฮสต์ร่วมกันทั้งโปรโตคอล SSH และ HTTPS บนพอร์ตเดียว แล้วกระจายไปยังปลายทางอย่างโปร่งใส
sslh ไม่ได้ห่อโปรโตคอลหนึ่งไว้ในอีกโปรโตคอลหนึ่ง แต่ใช้ฮิวริสติกหลายแบบเพื่อรีไดเร็กต์ไปยังแบ็กเอนด์จริง
- วิธีใช้คำสั่ง
ProxyCommand ของ openssh เพื่อห่อโปรโตคอล SSH ไว้อย่างสมบูรณ์ภายในอีกโปรโตคอลหนึ่ง
SSH over HTTP
- สำหรับการลองทำ SSH over HTTP แบบง่าย มีการตั้งค่า Apache2 ให้อนุญาตเมธอด
CONNECT สำหรับปลายทางเดียว ssh-server:22
- ฝั่งไคลเอนต์สามารถปรับได้อย่างง่ายดายด้วย
socat
- ใช้
ServerAliveInterval เพื่อไม่ให้การเชื่อมต่อ HTTP หลุดแม้อยู่ในสถานะว่าง
SSH over HTTPS
socat ไม่รองรับ HTTPS proxy แต่รองรับการห่อหุ้มด้วย TLS
- สามารถเขียนเมธอดที่อิงกับ
CONNECT ขึ้นเองได้ไม่ยาก
- ใช้สคริปต์
~/.ssh/https-tunnel.bash เพื่อทำ SSH over HTTPS tunneling
สรุป
- การมีอยู่ทั่วไปของ HTTPS ช่วยให้สามารถส่งข้อมูลผ่านอุปกรณ์ตัวกลางที่มีข้อจำกัดสูงได้
- เมธอด
CONNECT เป็นเทคนิคที่มีประโยชน์ในการห่อสตรีมเพย์โหลด TCP ไว้ในสตรีมโฮสต์ TLS
ServerAliveInterval ถูกใช้เพื่อคงการเชื่อมต่อไว้สำหรับชั้นการส่งข้อมูลที่ไม่เป็นมิตรกับการเชื่อมต่อที่ว่างอยู่
ความเห็นจาก GN⁺
- ประเด็นสำคัญที่สุดของบทความนี้คือการนำเสนอวิธีแก้ปัญหาอย่างสร้างสรรค์เพื่อให้สามารถเชื่อมต่อ SSH ได้แม้อยู่ในสภาพแวดล้อมเครือข่ายที่จำกัด
- วิธีผสาน SSH กับ HTTPS อาจน่าสนใจเป็นพิเศษสำหรับผู้ที่มีความรู้ด้านความปลอดภัยเครือข่าย
- การตั้งค่า
ProxyCommand และ ServerAliveInterval เพื่อหลบข้อจำกัดของเครือข่ายเป็นข้อมูลที่มีประโยชน์สำหรับผู้ดูแลเครือข่ายหรือผู้เชี่ยวชาญด้านความปลอดภัย
1 ความคิดเห็น
ความเห็นจาก Hacker News