استونل چیه؟ برنامهای که میاد اطلاعات رد و بدل شده رو رمزنگاری میکنه.
اما به تنهایی هیچ کاربردی نداره و همیشه پشت سرش یه برنامه دیگه هست. یه جورایی میشه گفت مثل آپاچی میمونه و نقش گارسونی رو برعهده داره که دم در رستوران (پورت) به گوش ایستاده و همه درخواستها رو میگیره و پاس میده به برنامه پشت سری (سرآشپز) :) و بعد دوباره جواب (غذای دستپخت سرآشپز) رو بعد از اینکه رمزنگاری کرد! به دست مشری میرسونه و بنابراین وسط راه کسی متوجه نوع غذا نمیشه، اینکه پیتزاست و یا ساندویچ دیگه معلوم نیست!
حالا بریم سراغ یکی از برنامههای پشت سری و کاربردی اسکوئید! اسکوئید دو تا نقش مهم داره یکی به عنوان استفاده کش و دیگری پروکسی. حالا توی مورد ما قراره کاربر از طریق استونل درخواست خودش رو به صورت رمز شده بفرسته به سرور، درون سرور استونل درخواست کاربر و مشتری رو هدایت میکنه به سمت اسکوئید و اون هم سایت مورد درخواست کاربر رو باز میکنه روی سروری که دارید، و جواب رو تحویل استونل میده و در نهایت استونل هم جواب رو به صورت رمز شده به سمت کاربر هدایت میکنه :)
حالا که روند کار مشخص شد، میریم سراغ ریزه کاریها
تنظیمات سمت سرور
۱- تنظیمات مربوط به اسکوئید
با فرض اینکه centos نسخه شش دارید به ابتدای فایل تنظیمات اسکوئید خطوط یک تا شش زیر رو اضافه کنید
1 |
vi /etc/squid/squid.conf |
1 2 3 4 5 6 |
auth_param basic program /usr/lib64/squid/ncsa_auth /etc/squid/squid_passwd auth_param basic children 20 startup=10 idle=1 concurrency=5 auth_param basic realm Squid proxy–caching web server auth_param basic credentialsttl 2 hours acl ncsa_users proxy_auth REQUIRED http_access allow ncsa_users |
خط اول میگه آقای اسکوئید از سیستم احراز هویت ncsa استفاده کن، یوزرنیم و پسورد رو از هم از فایل squid_passwd بخون و چک کن که کاربر یوزر و پسوردش منطبق هست با یوزر و پسوردی که داخل این لیست موجوده؟
خط دوم تعداد پروسههایی رو نشون می ده که در زمان پروسه احراز هویت لازمه و این عدد اگه خیلی کم باشه زمانی که سرعت نت پایینه، مشکلساز میشه چون در سرعتای پایین پروسههای زیادی موقع وارد کردن پسورد باز میشه
خط سوم همون نوشته و آلارمی هست که کاربر هنگام استفاده خواهد دید :) به این صورت که برای اولین استفاده، کادری باز میشه و از کاربر یوزر و پسورد رو میپرسه، که همونجا این پیغام رو خواهد دید Squid proxy-caching web server
خط چهارم باعث میشه اسکوئید هر دو ساعت یوزر و پسورد رو از کاربر بپرسه و اینطوری اگر مثلا کاربری یوزر و پسوردش رو در کافی نت وارد کرده باشه، مشکل چندانی پیش نخواهد اومد.
خط پنجم باعث میشه اسکوئید هر یوزری رو که بدین روش لاگین کرد، یک برچسب ncsa_users بهش بچسبونه و توی خط آخر گفتیم هر کی این برچسب ncsa_users رو داشت اجازه دسترسی به وب رو داشته باشه!
حالا باید به روشی یوزرنیم و پسورد رو به صورت استاندارد و قابل فهمی وارد squid_passwd کنیم. برای اینکار از برنامه htpasswd استفاده میکنیم.
1 |
/usr/local/apache/bin/htpasswd –c /etc/squid/squid_passwd novid |
و برای اینکه برنامه اسکوئید بتونه به محتویات این فایل دسترسی داشته باشه دستور زیر رو بزنید.
1 |
chmod o+r /etc/squid/squid_passwd |
وقتی این دستور رو بزنید، برنامه ازتون پسوردِ کاربر novid رو میپرسه که باید دوبار وارد کنید و در نهایت خروجی در فایل squid_passwd نوشته میشه. و برای یوزرهای بعدی هم دیگه لازم نیست آرگومان سی رو وارد کنید چرا که فایل از نو ساخته میشه!
۲- تنظیمات مربوط به استونل
ابتدا فایل تنظیمات استونل رو با ادیتور دلخواهتون باز کنید.
1 |
vi /etc/stunnel/stunnel.conf |
اگه میبنید خیلی فایل شلوغ پلوقی هست، کل نوشتههای داخلش رو پاک کنید و فقط خط های زیر رو اضافه کنید بهش :)
1 2 3 4 5 6 7 8 9 |
cert = /etc/stunnel/stunnel.pem pid = /var/run/stunnel.pid setuid = root setgid = root output = /var/log/stunnel.log [squid] accept = 4948 connect = 127.0.0.1:3128 |
خط اول داریم کلیدی رو به استونل معرفی میکنیم که با اون کلید عمل رمز کردن اطلاعات رو انجام میده! این کلید رو توی مرحله بعد هم باید بسازیم و آدرس اون هم که مشخصه باید جایی باشه که توی اینجا مشخص کردیم.
خط accept میگه اقای اسکوئید به پورت ۴۹۴۸ گوش بده! و همه درخواستها روی این پورت رو هدایت کنه به پورت ۳۱۲۸ که پورت اسکوئید هست:)
نکته خیلی مهم اینه که کاربر میتونه مستقیم به پورت ۳۱۲۸ و اسکوئید هم وصل شه! که برای جلوگیری از این اتفاق با فایروال میتونید پورت ۳۱۲۸ رو مسدود کنید.
کلاینت (کاربر) باید پورت ۴۹۴۸ و آیپی سرور رو برای استفاده از استونل داشته باشه، می تونید از پورت ۸۰ نیز استفاده کنید و اینطوری دیگه توی بدترین شرایط دسترسی به نت رو خواهید داشت :)
اما مرحله آخر ساخت کلید، برای اینکار سه تا دستور زیر رو وارد میکنید تا کلید ساخته بشه و بعد هم سر جایی که باید منتقل بشه. میون پروسه ساخت باید کد کشور IR و اسم و نشون و یک سری مشخصات جنرال رو وارد کنید که با استفاده از اونها کلید ساخته میشه.
1 2 3 |
openssl genrsa –out privkey.pem 2048 openssl req –new –x509 –key privkey.pem –out cacert.pem –days 1095 cat privkey.pem cacert.pem >> /etc/stunnel/stunnel.pem |
مجوز کلید رو هم تغییر میدیم تا از دست خرابکاریهای احتمالی در امون باشه
1 |
chmod 0400 /etc/stunnel/stunnel.pem |
اگه همه چیز خوب پیش رفته باشه باید بشه با دو تا دستور زیر سرویسهای اسکوئید و استونل رو سمت سرور اجرا کرد.
1 2 |
stunnel /etc/stunnel/stunnel.conf /etc/init.d/squid restart |
و اما تنظیمات سمت کلاینت (کاربر)
کاربر اگر اپن سوزه باشه کافیه برنامه استونل رو نصب کنه و فایل رو بدین شکل تغییر بده
1 |
vi /etc/stunnel/stunnel.conf |
1 2 3 4 5 6 7 8 9 10 |
client = yes chroot = /var/lib/stunnel/ setuid = stunnel setgid = nogroup pid = /var/run/stunnel.pid [proxy] accept = 127.0.0.1:5050 connect = server_ip:4948 |
توی مرورگر و توی بخش پروکسی و http کاربر باید پورت ۱۲۷٫۰٫۰٫۱ و پورت ۵۰۵۰ رو وارد کنه. در اینصورت با وارد شدن به هر سایتی، یه کادر باز میشه و ازتون پسورد و یوزرنیم رو میپرسه.
Released under public domain
13 پاسخ به “با استونل، تونل امن بسازید”
راه سادهتر برای اینکه نشه از بیرون به squid وصل شد اینه که بری و بهش بگی فقط روی ۱۲۷.۰.۰.۱ گوش وایسا.
چون stunnel روی همین آدرس کار میکنه مشکلی براش پیش نمیاد.
یعنی بری و آدرس ۳۱۲۸ خالی رو تبدیل این :
۱۲۷٫۰٫۰٫۱:۳۱۲۸
اره فرود جان این هم میشه اما جالبه برای من یه پیغام خطایی میده :) نمی دونم یه خورده انگولک کاری داره فکر کنم
میگما نوید کاربر های ویندوز چی جوری میتونن وصل بشن؟ یا مثلا با اندروید؟ میشه آیا؟
برای ویندوز که سایتش بری برنامه داره، راحت میتونه وصل شه، دقیقا مشابه همین اپن سوزه شاید ساده تر حتی وصل میشن به سمت سرور :)
من رو آیپد راهش انداختم حتما اندروید هم میشه :ی احتمال داره حتی از استور و ایناش بتونی برنامه اماده پیدا کنی:ی
کلایت ویندوزیشو چه جوری میشه تنظیم کرد؟
داشتن که داره و دیدم چه جوری میشه راحش انداخت تنظیمات فایل کلانتش باید چه جوری باشه با همین تنظیمات سرور بالا؟ گواهی ها و.کلید رو باید کجا گذاشت توی کدوم فولدر
درضمن توی لینوکس دیگه گواهی وکلید رو نیازی نیست توی کلاینت هم قرار داده شه؟
برای ویندوز اینطوری تنظیم کنی حله :ی
client = yes
[proxy]
accept = 127.0.0.1:5050
connect = server_ip:4948
حل نیست میشه یاهو ایدی چیزی بدی من نمیتونم این روش رو ران کنم کمک میخوام
همینجا مشکل رو بگید ببینم چطوریه :) خودم ویندوز ندارم که تست کنم، شاید این روزا مشکل دار شده همه چی کار نکنه که طبیعیه
سلام و ممنون از سایت خوبتون
در ابتدا نوشته بودید که:
خط دوم تعداد پروسههایی رو نشون می ده که در زمان پروسه احراز هویت لازمه و این عدد اگه خیلی کم باشه زمانی که سرعت نت پایینه، مشکلساز میشه چون در سرعتای پایین پروسههای زیادی موقع وارد کردن پسورد باز میشه!!!
auth_param basic children 20 startup=10 idle=1 concurrency=5
حالا سوال بنده این هست که سرعت فعلی هم شامل این مورد میشه؟
و اینکه چه تغییراتی باید ایجاد بشه در خط دوم با توجه به این نوع سرعت؟
حتماً لازم نیست Authentication رو سمت Squid انجام بدید. برای هر کاربر یک گواهینامه امنیتی صادر کنید و سمت Stunnel چک کنید. (verify = 3 و لیست گواهینامهها در CAfile)
ممنون از این آموزش. من یه سرور با centos5 دارم که میخوام روش http پروکسی نصب کنم. نمیخوام پسورد هم داشته باشه. فقط میخوام ای پی و پورت رو به مرورگر بدم و بهش وصل بشه. امکانش هست راهنمایی کنین؟ الآن چند روزه دارم میگردم اما روش سالمی که کار کنه نیافتم :((
سلام . من یه سرور گرفتم گفتم روش تونل نصب هست ولی هرکار کردم نفهمیدم از کجا باید یوزر بسازم لطفا راهنمایی کنید