สมมติฐาน:
เซิร์ฟเวอร์:
- ฉันมีเซิร์ฟเวอร์ Debian Squeeze ที่สามารถออกสู่อินเทอร์เน็ตสาธารณะด้วยที่อยู่ IPv4 แบบคงที่
- ฉันมีสิทธิ์เข้าถึงแบบไม่ จำกัด เพื่อแก้ไขซอฟต์แวร์บนเซิร์ฟเวอร์
- เซิร์ฟเวอร์สามารถฟังพอร์ตต่าง ๆ ตั้งกฎของไฟร์วอลล์ใหม่โดยทั่วไปไม่มีข้อ จำกัด เกี่ยวกับสิ่งที่เซิร์ฟเวอร์สามารถทำได้
ลูกค้า:
- ฉันสามารถเรียกใช้โปรแกรม Firefox, Java, โปรแกรม .NET และบาง executables พื้นเมืองที่ไม่จำเป็นต้องมีการเข้าถึงผู้ดูแลระบบบนของท้องถิ่นระบบ (กล็อคลงสก์ท็อป Windows ด้วยสิทธิผู้ดูแลระบบไม่ได้)
- ฉันสามารถติดตั้ง Addons ลงใน Firefox ได้
- ฉันสามารถฟังพอร์ตใดก็ได้บน
localhost
อินเทอร์เฟซแบบวนรอบ ( ) ดังนั้นโปรแกรมดังกล่าวสามารถผูกกับพอร์ตท้องถิ่นและดำเนินการเครือข่าย I / O โดยพลการโดยไม่ต้องผ่านพร็อกซี - การเข้าถึงอินเทอร์เน็ตสาธารณะทั้งหมดจะถูกกำหนดเส้นทางผ่านพร็อกซี HTTP ที่ จำกัด ซึ่งบล็อกเว็บไซต์จำนวนมากและทำการตรวจสอบสถานะอย่างระมัดระวัง บนพอร์ต 80 อนุญาตเฉพาะ HTTP (ไม่มี TLS / SSL) บนพอร์ต 443 อนุญาตให้
CONNECT
ใช้ SSL / TLS ตามโฮสต์ระยะไกลซึ่งไม่ได้ถูกบล็อกโดยชื่อโดเมน / ที่อยู่ IP - พร็อกซี HTTP ที่ จำกัดไม่ได้ทำการตรวจสอบแพ็คเก็ตในระดับลึกของการเชื่อมต่อ TLS ซึ่งได้รับอนุญาตผ่านพร็อกซีและจะไม่ดำเนินการ Man ในการโจมตีระดับกลางในการเชื่อมต่อเหล่านั้น
- เซิร์ฟเวอร์ที่กล่าวถึงข้างต้นที่ฉันเข้าถึงไม่ได้ถูกบล็อกโดยพรอกซี
เป้าหมาย:
ฉันต้องการที่จะเส้นทางทั้งหมด HTTP และ HTTPS คำขอปล่อยออกมาโดย Firefox, ผ่านเซิร์ฟเวอร์ดังกล่าวข้างต้นผ่าน SSL / TLS
หมายเหตุอื่น ๆ เกี่ยวกับ "เป้าหมาย":
- แม้ว่าไซต์ปลายทาง (ตัวอย่างเช่น
http://superuser.com
) ไม่ได้ใช้ SSL / TLS กับเซิร์ฟเวอร์ของฉันฉันยังคงต้องการใช้ SSL / TLS จากไคลเอนต์ของฉันไปยังเซิร์ฟเวอร์ของฉันและให้เซิร์ฟเวอร์ของฉันทำการร้องขอ HTTP - ไม่ว่าจะเข้ารหัสหรือไม่ - - ไปยังปลายทางที่ต้องการ - ฉันไม่สนใจว่าเซิร์ฟเวอร์ของฉันดูที่ปริมาณการใช้งาน SSL "ชัดเจน" ในคำอื่น ๆ ที่ฉันไม่จำเป็นต้องมีการเข้ารหัสเต็มรูปแบบ end-to-end SSL
https://google.com
จากลูกค้าท้องถิ่นของฉันทุกทางกับเซิร์ฟเวอร์ระยะไกลถ้าเซิร์ฟเวอร์ระยะไกลจะถูกเข้าถึงได้โดยเช่น กล่าวอีกอย่างก็คือฉันไว้วางใจเซิร์ฟเวอร์เพื่อรักษาความลับของข้อมูล - ฉันยินดีที่จะติดตั้งซอฟต์แวร์หรือส่วนเสริมของ Firefox ที่ไม่ต้องการสิทธิ์ผู้ดูแลระบบและสามารถทำงานบน Windows 7 แบบ 32 บิต
- ซอฟต์แวร์โอเพ่นซอร์สเป็นที่ต้องการมากกว่ากรรมสิทธิ์และฟรีแวร์เป็นที่ต้องการมากกว่าซอฟต์แวร์ที่ต้องการค่าธรรมเนียมใบอนุญาต
- ซอฟต์แวร์ที่มีอยู่เป็นที่ต้องการมากกว่าที่จะใช้รหัสซอฟต์แวร์ใหม่แม้ว่าฉันยินดีที่จะเขียนรหัสหากเป็นวิธีเดียว
ฉันกำลังมองหา "ทางออก" ที่อธิบายอย่างหลวม ๆ ซึ่งอธิบาย:
- ลูกค้าต้องการซอฟต์แวร์อะไรบ้าง? หากมีแพ็กเกจซอฟต์แวร์เฉพาะที่คุณรับรู้ให้ตั้งชื่อมัน มิฉะนั้นอธิบายสิ่งที่ซอฟต์แวร์ของลูกค้าจะต้องทำ
- จำเป็นต้องใช้ซอฟต์แวร์ใดบนเซิร์ฟเวอร์ หากมีแพ็กเกจซอฟต์แวร์เฉพาะที่คุณรับรู้ให้ตั้งชื่อมัน มิฉะนั้นอธิบายสิ่งที่ซอฟต์แวร์เซิร์ฟเวอร์จะต้องทำ
- หากคุณตั้งชื่อแพคเกจซอฟต์แวร์เฉพาะด้านบนให้อธิบายว่าพารามิเตอร์การกำหนดค่าใดที่จำเป็นสำหรับการตั้งค่าเพื่อให้บรรลุเป้าหมาย
- หากมีเหตุผลบางอย่างที่คุณเชื่อว่านี่เป็นไปไม่ได้อธิบายว่าทำไม
สิ่งที่ฉันพยายามที่ไม่ทำงาน
- การติดตั้ง
squid
บนเซิร์ฟเวอร์ของฉันฉันพยายามตั้งค่าพร็อกซี HTTP มาตรฐานของตัวเองบนเซิร์ฟเวอร์ของฉัน สิ่งนี้ไม่ได้ผลเพราะเมื่อฉันขอเว็บไซต์ใน Firefox ผ่าน HTTP ปกติFirefox จะพยายามเข้าถึงเซิร์ฟเวอร์ของฉันผ่าน HTTP ปกติด้วยเช่นกัน! สิ่งนี้ไม่สามารถทำได้เนื่องจากพร็อกซีในเครือข่ายท้องถิ่นของฉันสามารถตรวจสอบและ / หรือบล็อกทราฟฟิก HTTP ปกติระหว่างไคลเอนต์ของฉันและเซิร์ฟเวอร์ได้ - VPNs ใช้งานไม่ได้แม้แต่ OpenVPN ผ่าน TLS ที่ฟังพอร์ต 443 เพราะฉันไม่มีสิทธิ์ในคอมพิวเตอร์ที่จะติดตั้ง
tun
อะแดปเตอร์เครือข่ายที่สามารถทำการกำหนดเส้นทางเลเยอร์ 3 ได้ฉันไม่สามารถกำหนดเส้นทางเลเยอร์ 2 ได้ (เช่นtap
) กล่าวโดยย่อ: ฉันต้องการสิทธิ์ของผู้ดูแลระบบในการติดตั้ง OpenVPN และแม้ว่าฉันจะมีสิทธิ์ของผู้ดูแลระบบเหล่านั้นเป็นการชั่วคราว บริษัท ก็คงจะไม่ยินดีหากพวกเขาพบว่ามีการติดตั้ง โปรแกรม Java หรือ. NET นั้นสังเกตเห็นได้น้อยกว่ามากโดยเฉพาะเมื่อไม่ได้ติดตั้งใน Add / Remove Programs และไม่มีองค์ประกอบเคอร์เนลไดรเวอร์เช่น OpenVPN
socat
สิทธิ์ผู้ดูแลระบบบนกล่องไคลเอนต์ Windows