একটি স্থানীয় বন্দর থেকে অন্য একটি টানেল তৈরির সহজ উপায়?


76

আমার কাছে একটি ডেভলপমেন্ট সার্ভার রয়েছে, যা কেবলমাত্র 127.0.0.1:8000 থেকে অ্যাক্সেসযোগ্য, 192.168.1.x: 8000 নয়। দ্রুত হ্যাক হিসাবে, অন্য কোনও বন্দরে শোনার জন্য কিছু সেট করার একটি উপায় আছে (বলুন, 8001) যাতে স্থানীয় নেটওয়ার্ক থেকে আমি 192.168.1.x: 8001 সংযোগ করতে পারি এবং এটি ক্লায়েন্ট এবং 127.0 এর মধ্যে ট্র্যাফিকটি সুড়ঙ্গ করবে would .0.1: 8000?


উত্তর:


44

Ssh ব্যবহার করা সবচেয়ে সহজ সমাধান।

ssh -g -L 8001: লোকালহোস্ট: 8000 -f -N user@remote-server.com

এই remote-server.com বন্দর 8000. উপর স্থানীয় হোস্ট ঠিকানাতে আপনার ওয়ার্কস্টেশন স্থানীয় পোর্ট 8001 সম্মুখে
-gমানে আমার ওয়ার্কস্টেশন পোর্ট 8001 সাথে সংযোগ স্থাপনের জন্য আমার নেটওয়ার্কে অন্যান্য ক্লায়েন্টদের অনুমতি দেয়। অন্যথায় আপনার ওয়ার্কস্টেশনে কেবল স্থানীয় ক্লায়েন্টরা ফরওয়ার্ড পোর্টের সাথে সংযোগ করতে পারে।
-Nমানে আমি যা করছি তা হ'ল বন্দরগুলি ফরোয়ার্ড করা, শেল শুরু করবেন না।
-fএকটি সফল এসএসএইচ সংযোগ এবং লগ ইন পরে পটভূমিতে কাঁটাচামচ মানে।
পোর্ট 8001 অনেক সংযোগের জন্য খোলা থাকবে, যতক্ষণ না এসএসএস মারা বা খুন হয়। যদি আপনি উইন্ডোজে থেকে থাকেন তবে চমৎকার এসএসএইচ ক্লায়েন্ট পিটিটিও এটি করতে পারে। স্থানীয় পোর্ট এবং লোকালহোস্ট: 8000 এবং গন্তব্য হিসাবে 8001 ব্যবহার করুন এবং সেটিংসে স্থানীয় পোর্ট ফরওয়ার্ডিং যুক্ত করুন। পুটিটির সাথে সফল সংযোগের পরে আপনি এটি যুক্ত করতে পারেন।


4
কি করে user@remote-server.com? এটি অবশ্যই পোর্ট ফরওয়ার্ডিংয়ের জন্য অবিবাহিত রয়েছে, তবে এই আর্গুমেন্টটি থাকা ssh ম্যান্ডেটগুলি আরও বেশি করে, এটি সেখানে সংযোগ দেওয়ার চেষ্টা করে। এবং আউটপুটগুলির হোস্টনেম করার জন্য এই বেহুদা বিকল্পটি স্থাপন করার পরে …port 22: Connection refused (না, আমি 22 বন্দরটি ব্যবহার করি নি) । আমি যদি কিছু মিস করি না তবে কমান্ডটি পরিষ্কারভাবে কাজ করে না।
হাই-এঞ্জেল

@ হাই-অ্যাঞ্জেল user@remote-server.comএকটি উদাহরণ এবং আপনার এটি আক্ষরিকভাবে নেওয়া উচিত নয়। আপনি যে কম্পিউটারটি সংযোগ করতে চান তার নাম এবং এই কম্পিউটারে আপনার ব্যবহারকারীর নাম দিয়ে আপনাকে এটি প্রতিস্থাপন করতে হবে। এসএসএস সংযোগ স্থাপনের জন্য এই তথ্য প্রয়োজন। Ssh সংযোগ স্থাপনের পরে কেবল পোর্টগুলি এই সংযোগের মাধ্যমে ফরোয়ার্ড করা যেতে পারে।
পাইওটর ডব্রোগোস্ট

আপনি বন্দর বুট থেকে পাওয়া হতে চান তারপর একটি systemd হল পরিষেবাতে "autossh" দেখুন উপরে পদ্ধতি ব্যবহার করে - everythingcli.org/ssh-tunnelling-for-fun-and-profit-autossh
রিচার্ড হলিস

আমি "সংযোগ অস্বীকার" পেয়েছি get এবং আমি এখনও বুঝতে পারি না যে যখন কোনও এসএসএইচ সংযোগ জড়িত না হয় তখন কেন ইউজার @ রেমোট-server.com যুক্তিটির প্রয়োজন হয় (-এন অনুসারে)। কেবল প্যাকেটগুলি ফরোয়ার্ড করা উচিত।
আলেকজান্ডার টেলর

2
@ আলেকজান্ডার টেলর এর -Nঅর্থ এই নয় যে এসএসএইচ সংযোগ নেই। এর সহজ অর্থ do not execute a remote command( ম্যান পৃষ্ঠাটি দেখুন )। <user>@<host>কারণ এই যুক্তি, প্রয়োজনীয় করে একটি ssh সংযোগ খুলুন <host>(যা ওপি মামলার জন্য হবে localhost), এবং আকাঙ্ক্ষিত বন্দর সম্মুখে মাধ্যমে যে, SSH টানেল। এটি ওপির সমস্যার এক সমাধান তবে সহজ নয় not SSH ব্যবহার না করেই স্থানীয় হোস্টের ফরোয়ার্ড করার জন্য, আপনাকে ব্যবহার করতে পারেন socatবা netcatStephaneChazelas এবং না-একটি-ইউজার এর উত্তর হিসাবে

94

সঙ্গে socatসার্ভারে:

socat tcp-listen:8001,reuseaddr,fork tcp:localhost:8000

ডিফল্টরূপে, socatমেশিনের যে কোনও আইপিভি 4 বা আইপিভি 6 ঠিকানা (সমর্থিত হলে) তে টিসিপি পোর্ট 8001 শুনবে। আপনি এটিকে প্রতিস্থাপন tcp-listenকরে tcp4-listenবা এর দ্বারা tcp6-listenবা একটি নির্দিষ্ট স্থানীয় ঠিকানায় আইপিভি 4/6 এ সীমাবদ্ধ করতে পারেন ,bind=that-address

সংযোগ সকেট আপনাকে প্রক্সি করার সেটির একই, আপনি জায়গায় কোন এড্রেস ব্যবহার করতে পারেন localhost, এবং প্রতিস্থাপন tcpসঙ্গে tcp4বা tcp6আপনি IPv4- র বা IPv6, ঠিকানায় ঠিকানা রেজল্যুশন সীমিত করতে চাই।

নোট করুন যে 8000 পোর্টে সার্ভার শোনার জন্য, সংযোগটি প্রক্সি থেকে আগত হিসাবে উপস্থিত হবে (এর ক্ষেত্রে localhost, এটি হবে localhost), মূল ক্লায়েন্টের নয়। আপনি ব্যবহার করতে প্রয়োজন চাই DNAT পন্থা (কিন্তু যা সুপারইউজার পারমিশন প্রয়োজন) সার্ভার ক্লায়েন্টের কে বলিতে পাবে জন্য।


1
ধন্যবাদ, এটি দুর্দান্ত কারণ যেহেতু আপনার কোনও স্থানীয় এসএস সার্ভার চালু নেই।
jontro

আমি কি একই পোর্ট কিন্তু ভিন্ন ঠিকানা ব্যবহার করতে পারি?
আমোস

@ আমোস, সম্পাদনা দেখুন।
স্টাফেন চেজেলাস

কেবল নির্দিষ্ট আইপি থেকে ট্র্যাফিক ফরোয়ার্ড করা কি সম্ভব হবে?
ফেট

1
@Phate দেখুন socat বলুন একটি একক IP ঠিকানা থেকে সংযোগ শোনার জন্য (এবং rangeএবং tcpwrapবিকল্প socatman পৃষ্ঠা)।
স্টাফেন চেজেলাস

46

প্রচলিত ব্যবহার করা ncসহজ সমাধান:

nc -l -p 8001 -c "nc 127.0.0.1 8000"

এই সংস্করণটি ncহল netcat-traditionalউবুন্টু উপর প্যাকেজ। (আপনাকে update-alternativesফোন করতে হবে বা কল করতে হবে nc.traditional))

মনে রাখবেন যে ssh এর বিপরীতে এটি এনক্রিপ্ট করা হয়নি। যদি আপনি এটি কোনও হোস্টের বাইরে ব্যবহার করেন তবে তা মনে রাখবেন।


2
সমান কেউ জানেন netcat-openbsd?
শ্রীধর সারনোবাত

2
জন্য এনালগ netcatসংস্করণ যা মধ্যে অন্তর্ভুক্ত করা হয় busybox: nc -v -lk -p 8001 -e /usr/bin/nc 127.0.0.1 8000। (
প্যারামগুলির

2
কাজ করা হচ্ছে, তবে ncপ্রথম দূরবর্তী সংযোগের পরে কমান্ডটি শেষ হবে। -kআপনার এটি চালিয়ে রাখা প্রয়োজন হলে যুক্ত করুন ।
সোপালাজো ডি অ্যারিরেজ

আমি এই ত্রুটিটি পাচ্ছি: nc: cannot use -p and -lসেন্টোস 6.4 এ on এখানে কি কাজ আছে?
নিক প্রেদে

আমি এই সমাধানটি এসএসএসের চেয়ে বেশি পছন্দ করি কারণ এটি রুট হিসাবে ব্যবহার করা সহজ করে তোলে যখন স্থানীয়ভাবে কোনও সুবিধাযুক্ত বন্দরটি ফরোয়ার্ড করা দরকার।
খ্রিস্টান

24

লিনাক্স এবং ওএস এক্সে ডিফল্টরূপে ওপেনবিএসডি নেটক্যাট উপলব্ধ is

ওএসএক্স:

mkfifo a
mkfifo b
nc 127.0.0.1 8000 < b > a &
nc -l 8001 < a > b &

লিনাক্স:

mkfifo backpipe
nc -l 12345 0<backpipe | nc www.google.com 80 1>backpipe

একটি বিকল্প যা ওএস এক্স ব্যাশে কাজ করে তা হ'ল দ্বিদলীয় পাইপ ব্যবহার করা । এটি অন্যান্য ইউনিক্সগুলিতে কাজ করতে পারে:

nc 127.0.0.1 8000 <&1 | nc -l 8001 >&0

আমি প্রথমে খেয়াল করিনি যে আপনি ওপেনবিএস নেট নেট ব্যবহার করছেন। এটি একটি উবুন্টু প্যাকেজ থেকে অন্য নেটক্যাট ইনস্টল করার চেয়ে ভাল।
রবার্টআর

ওপেনবিএসডি উদাহরণ উবুন্টু 15.04 এ ব্যর্থ হয়েছে। শেল পুনর্নির্দেশগুলির সাথে, নেটক্যাট ss -tanবা শোনা হিসাবে শুনতে পোর্টটি খুলতে ব্যর্থ netstat -tan
জাস্টিন সি 0

⁺¹। এফটিআর: বিকল্প উপায় উবুন্টুতে কাজ করে
হাই-অ্যাঞ্জেল

আমি আপনার সমাধান বুঝতে পারি না। তুমি কি এটা ব্যাখ্যা করতে পারবে?
Trismegistos

@trismegistos এই উদাহরণগুলিতে নেটক্যাট শ্রোতা এবং ক্লায়েন্ট কিছু অংশীদারি ফাইলগুলিতে ইনপুট পুনঃনির্দেশ করে (প্রথমে প্রথমে mkfifo পাইপ..প্রথম), এবং সেই ভাগ করা ফাইলগুলিকে তাদের ইনপুট / আউটপুটের উত্স / গন্তব্য হিসাবে ব্যবহার করুন, কার্যকরভাবে একটি টানেল তৈরি করে। সাধারণত ক্লায়েন্ট / শ্রোতা ব্যবহার করা হয়, কিন্তু কিছু কৌশল ক্লায়েন্ট + + ক্লায়েন্ট / শ্রোতা + + listener- ব্যবহার wiki.securityweekly.com/... এবং slideshare.net/amiable_indian/secrets-of-top-pentesters অবশ্যই পাঠ্য হয়।
5ek 18

4

একটি বরাত দিয়ে ডেভিড Spillett এর উত্তর ServerFault উপর

রিনেট্ডের কাজটি করা উচিত, এবং এর জন্য একটি উইন্ডোজ বাইনারি http://www.boutell.com/rinetd/ থেকে পাওয়া যেতে পারে (যে কেউ লিনাক্সের অধীনে একই জিনিস খুঁজছেন, রিনেট্ড প্রায় প্রতিটি ডিসট্রোর স্ট্যান্ডার্ড সংগ্রহস্থানে রয়েছে সুতরাং "অ্যাপেট-গিন ইনস্টল রিনেটড" বা "ইয়াম ইনস্টল রিনেটড" বা অনুরূপ) এর সাথে ইনস্টল করা যেতে পারে)

এটি একটি সাধারণ বাইনারি যা বিন্যাসে একটি কনফিগারেশন ফাইল নেয়

bindaddress bindport connectaddress connectport

উদাহরণ স্বরূপ:

192.168.1.1 8001 127.0.0.1 8000

অথবা

0.0.0.0 8001 127.0.0.1 8000

আপনি যদি সমস্ত ইন্টারফেসে ইনকামিং পোর্টটি আবদ্ধ করতে চান।


3
iptables -t nat -A PREROUTING -p tcp --dport <origin-port> -j REDIRECT --to-port <destination-port>

service iptables save
service iptables restart

সংযোগ দেওয়ার চেষ্টা করার পরে dport, যেমনটি nc -v localhost 2345পেয়েছি, আমি পাচ্ছি Connection refused। আমি আইপ্যাটেবলগুলিতে খুব ভাল নই, তবে আমি অনুমান করি ডিপোর্টের একটি শ্রবণ অ্যাপ্লিকেশন থাকতে হবে।
হাই-এঞ্জেল

গন্তব্য পোর্টের চেয়ে যদি মূল-বন্দরটি বিভিন্ন ইন্টারফেসে থাকে তবে কী হবে?
ত্রিসমেজিস্টোস

0

মার্ক এ এর উত্তরের ভিত্তিতে , এটি আমার ম্যাকের জন্য কাজ করার জন্য আমাকে একটি ছোট ঝাঁকুনি দিতে হয়েছিল (কমপক্ষে ম্যাকোস মোজভেভ সংস্করণ 10.14.4 এ)

mkfifo a
mkfifo b
nc 127.0.0.1 8000 < b > a &
nc -l 8001 < a > b &
printf "" > a

এই মুদ্রণ বিবৃতিটি গুরুত্বপূর্ণ বলে মনে হচ্ছে। অন্যথায় 8000 পোর্টের সাথে সংযোগ স্থাপনের জন্য নেটকাট কমান্ডটি আসলে কখনও সংযোগ করার চেষ্টা করবে না এবং 8001 বন্দরটিতে নেটক্যাট কমান্ডটি বাস্তবে কখনই 8001 পোর্টে শুনতে পাবে না f সংযোগ প্রত্যাখ্যাত.

আমার ধারনা হ'ল নেটকেটকে অবশ্যই কোনও স্টকেট ক্রিয়াকলাপ করার আগে স্ট্যান্ডিনে (সম্ভবত এটি কোনও কারণে এটি পড়ার চেষ্টা করা উচিত) ব্লক করা উচিত। যেমন, ফিফটিও এ প্রিন্টফেট বিবৃতি না লিখে নেটকাট কমান্ড 8001 বন্দরে পোর্টে কখনই শুনতে শুরু করবে না।

দ্রষ্টব্য: আমি মার্কের পোস্টে একটি উত্তর রেখে দিতাম, তবে আমার সুনাম এখনও নেই।


0

সার্ভারে দুটি ইউডিপি পোর্ট টানেল করার এটি একটি নতুন উপায়: https://github.com/9crk/udpeer

udpeer 8001 8002

পরীক্ষা করার জন্য:

nc -u xxxx.com 8001
nc -u xxxx.com 8002
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.