/dev/null
Открыть в Telegram
| دستمو گذاشتم رو این کار ، قلبمو گذاشتم. | هر new ای را delete ای ست و پس از آن null کردنی (:
Больше323
Подписчики
Нет данных24 часа
+37 дней
+230 день
Архив постов
323
💭HSTS چیه .
🔥 هدف: HSTS برای محافظت از وبسایتها در برابر حملات MITM(man-in-the-middle)
طراحی شده است، مانند حملات کاهش پروتکل و سرقت cookie. با اجباری کردن استفاده از HTTPS، اطمینان حاصل میکند که تمام ارتباطات بین browser و server رمزگذاری شده است.( ssl handshake)
زمانی که یک مرورگر هدر HSTS را از یک server دریافت میکند، این دستور را برای یک دوره مشخص (که با دستور max-age تعیین میشود) به خاطر میسپارد. در این مدت، اگر کاربر سعی کند به سایت از طریق HTTP دسترسی پیدا کند، مرورگر بهطور خودکار درخواست را به HTTPS تبدیل میکند.
Strict-Transport-Security: max-age=31536000; includeSubDomains ;preload- max-age زمان (به ثانیه) را مشخص میکند که مرورگر باید به یاد داشته باشد که HTTPS را اجباری کند. - includeSubDomains نشان میدهد که HSTS باید به تمام زیر دامنههای سایت نیز اعمال شود. - preload میگه که کاربر حتی اگر قبلا هم با HTTPS وارد نشده بود باید HSTS رخ بده و HTTP رو تبدیل کنه به HTTPS . برای استفاده از HSTS باید در وب سرور خود ذخیره کنیم :
<VirtualHost *:443>
ServerName yourdomain.com
SSLEngine on
SSLCertificateFile /path/to/yourdomain.crt
SSLCertificateKeyFile /path/to/yourdomain.key
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</VirtualHost>
خب حالا یه نکته ای که هست باید قبل از استفاده از HSTS گواهی ssl وب سرور امضا شده باشد :
1. انتخاب نوع گواهی SSL
قبل از هر چیز، باید نوع گواهی SSL مورد نیاز خود را انتخاب کنید. انواع رایج گواهیها عبارتند از:
- DV (Domain Validation): تأیید هویت دامنه. سریعترین و ارزانترین نوع گواهی.
- OV (Organization Validation): تأیید هویت سازمان. نیاز به تأیید هویت سازمان دارد.
- EV (Extended Validation): تأیید هویت گسترده. بالاترین سطح تأیید هویت و امنیت.
2. انتخاب یک مرکز صدور گواهی (CA)
مرکز صدور گواهی (CA) را انتخاب کنید. برخی از گزینههای رایج شامل:
- Let's Encrypt (رایگان)
- DigiCert
- Comodo
- GlobalSign
3. ایجاد یک درخواست گواهی (CSR)
برای دریافت گواهی SSL، باید یک درخواست گواهی (CSR) ایجاد کنید. این کار معمولاً از طریق وب سرور انجام میشود. مراحل ایجاد CSR :
openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key
اطلاعات مورد نیاز را وارد کنید (مانند نام دامنه، نام سازمان و غیره).
4.ارسال CSR به CA
پس از ایجاد CSR، آن را به مرکز صدور گواهی ارسال کنید. این کار معمولاً از طریق وبسایت CA انجام میشود. شما باید اطلاعات مربوط به دامنه و سازمان خود را نیز ارائه دهید.
5.تأیید هویت
CA هویت شما و دامنهتان را تأیید میکند. این فرآیند ممکن است شامل ارسال ایمیل به آدرسهای ثبت شده دامنه یا تأیید اطلاعات سازمان باشد.
6. دریافت گواهی SSL
پس از تأیید هویت، CA گواهی SSL را صادر میکند و آن را به شما ارسال میکند. این گواهی معمولاً شامل یک فایل با پسوند .crt است.
نصب گواهی :
<VirtualHost *:443>
ServerName yourdomain.com
SSLEngine on
SSLCertificateFile /path/to/yourdomain.crt
SSLCertificateKeyFile /path/to/yourdomain.key
</VirtualHost>
#HSTS323
💭انواع احراز هویت در web applications :
احراز هویت با نام کاربری و رمز عبور :
این روش رایجترین نوع احراز هویت است که کاربران با وارد کردن نام کاربری و رمز عبور خود به وب اپلیکیشن دسترسی پیدا میکنند
احراز هویت دو مرحلهای (2FA):
این روش شامل دو مرحله برای تأیید هویت کاربر است. معمولاً پس از وارد کردن نام کاربری و رمز عبور، کاربر باید یک کد تأیید که به تلفن همراه یا ایمیل او ارسال میشود را وارد کند.
احراز هویت مبتنی بر توکن : (Token-Based Authentication) یکی از روشهای محبوب و امن برای تأیید هویت کاربران در وب اپلیکیشنها و APIها است. در این روش، پس از ورود موفق کاربر، یک توکن به او داده میشود که میتواند برای دسترسی به منابع مختلف استفاده شود
احراز هویت اجتماعی:
این روش به کاربران اجازه میدهد تا با استفاده از حسابهای کاربری خود در شبکههای اجتماعی (مانند فیسبوک، گوگل و توییتر) وارد وب اپلیکیشن شوند
احراز هویت بیومتریک:
این روش شامل استفاده از ویژگیهای بیومتریک مانند اثر انگشت، تشخیص چهره یا صدا برای تأیید هویت کاربر است.
>> برای اطلاعات بیشتر :
https://www.baeldung.com/cs/authentication-web-apps
مراحل احراز هویت مبتنی بر توکن (Token-Based Authentication) :
1️⃣ورود کاربر: کاربر با وارد کردن نام کاربری و رمز عبور خود به سرور درخواست میفرستد
2️⃣تأیید هویت: سرور اطلاعات کاربر را بررسی میکند. اگر اطلاعات صحیح باشد، سرور یک توکن تولید میکند
3️⃣ارسال توکن: توکن تولید شده به کاربر ارسال میشود. این توکن معمولاً به صورت یک رشته متنی (مانند JWT - JSON Web Token) است.
4️⃣استفاده از توکن: کاربر میتواند این توکن را در درخواستهای بعدی خود به سرور ارسال کند. معمولاً توکن در هدر HTTP (به عنوان مثال، در هدر Authorization) ارسال میشود.
>> در مورد هدر های HTTP قبلا توضیح دادم !
5️⃣تأیید توکن: سرور توکن را بررسی میکند تا مطمئن شود که معتبر و غیر منقضی است. اگر توکن معتبر باشد، سرور به درخواست کاربر پاسخ میدهد
رایج ترین نوع احراز هویت از طریق توکن :
یکی از انها JWT (JSON Web Token):
یکی از رایجترین انواع توکنها است که شامل سه بخش (Header، Payload و Signature) است و میتواند اطلاعاتی مانند شناسه کاربر و زمان انقضا را در خود داشته باشد.
>> در مورد Payload و signature بعدا بیشتر توضیح میدم
حالا JWT از الگوریتم های مختلفی استفاده میکنه که پرکاربرد ترین اون ها :
HS256 , RS256
الگوریتم HS256 چیست؟
HS256 یک الگوریتم امضای متقارن هست. در رمزنگاری متقارن، هم برای امضا و هم برای تأیید توکن از یک کلید استفاده میشه که بهش private key میگیم ( تعریف الگوریتم متقارن ) .
الگوریتم RS256 چیست؟
RS256، یک الگوریتم امضای نامتقارن هست. برخلاف HS256، از یک جفت کلید استفاده میکنه ، یک private key برای امضای توکن و یک public key مربوطه برای تأیید اون( تعریف الگوریتم نامتقارن ) .این امر RS256 را برای سناریوهایی که طرفهای امضا و تأیید موجودیتهای متفاوتی هستن، مانند سیستمهای توزیعشده یا زمانی که توکنها در سرویسهای مختلف به اشتراک گذاشته میشه، ایمنتر میکنه.
برای استفاده از private key و public key داریم:
// sign token with private key
jwt.sign(payload, prvkey, {
expiresIn: exp,
algorithm: 'RS256',
});
// verify token with public key
jwt.verify(token, pubkey, { algorithms: ['RS256'] })
#jwt323
💭SSL or TLS
🔥پروتکل SSL (Secure Sockets Layer) یا نسخه جدیدتر آن، TLS (Transport Layer Security)، پروتکلی است که به طور گسترده برای ایجاد ارتباطات امن بین کاربران و سرورها استفاده میشود. SSL دو قابلیت مهم را فراهم میکند:
1)رمزنگاری دوطرفه : یعنی اطلاعاتی که بین کاربر و سرور رد و بدل میشود بهصورت رمزنگاریشده ارسال و دریافت میشود. این باعث میشود که اگر شخص ثالثی بخواهد در میانهی راه اطلاعات را شنود کند، بهخاطر رمزنگاری، نتواند محتوای اطلاعات را بخواند یا اگر دسترسی پیدا کرد با یک سری حروف نامعلوم رو به رو شود. 2) حفظ یکپارچگی اطلاعات : این پروتکل همچنین تضمین میکند که دادههایی که بین کاربر و سرور منتقل میشود، در مسیر دستکاری نشدهاند. اگر در جریان انتقال دادهها، تغییرات غیرمجاز انجام شود، SSL این تغییرات را شناسایی میکند و به کاربر هشدار میدهد. 3) ایجاد نهایی پکتها : بعد از اینکه مرورگر کاربر درخواست را ساخت، بستهی نهایی توسط پروتکلهای شبکه در سیستم کاربر تولید و سپس به سرور ارسال میشود. بستههای ارسالی شامل اطلاعات رمزنگاری شده هستند که فقط سرور مقصد میتواند آنها را بازگشایی و بررسی کند. این ارتباط بهصورت مستقیم و امن بین کاربر و سرور انجام میشود. نقش ابزارهایی مثل Burp Suite در حملات MITM: برپ سوییت یکی از ابزارهای معروف برای انجام حملات "Man in the Middle" (MITM) است. در این حالت، به جای ارتباط مستقیم با سرور، ترافیک از طریق Burp Suite عبور داده میشود. Burp به عنوان یک واسطه بین کاربر و سرور عمل میکند. قابلیت ها :
قابلیت Traffic Inspection: برپ میتواند ترافیک رمزنگاریشده SSL را باز کند و به کاربر اجازه دهد محتوای درخواستها و پاسخها را مشاهده کند. این کار با استفاده از یک گواهی SSL تقلبی که Burp Suite ایجاد میکند، انجام میشود. کاربر یا مرورگر باید این گواهی را بپذیرد تا Burp بتواند به ترافیک دسترسی پیدا کند. قابلیت Traffic Modification: علاوه بر مشاهده ترافیک، Burp این امکان را فراهم میکند که کاربر بتواند محتوای بستهها را تغییر دهد. مثلاً میتوان درخواستهایی که به سرور ارسال میشود یا پاسخهایی که از سرور دریافت میشود را دستکاری کرد.مراحل دقیق عملیات MITM با Burp:
ابتدا، ارتباط از مرورگر کاربر به Burp Suite برقرار میشود، بهجای اینکه مستقیم به سرور متصل شود. برپ بستهها را از مرورگر دریافت میکند و بهطور موقت رمزنگاری را باز میکند (Decrypt). این کار با استفاده از گواهی جعلی SSL که قبلاً نصب شده است، امکانپذیر است. سپس کاربر میتواند بسته را مشاهده یا تغییر دهد. در نهایت، Burp Suite دوباره بسته را رمزنگاری کرده و به سرور اصلی ارسال میکند.》این عملیات به ما امکان بازبینی و دستکاری ترافیک در یک ارتباط امن را میدهد، در حالی که برای کاربر یا سرور تفاوتی در ظاهر ارتباط مشاهده نمیشود.
323
گوگل بهتون رایگان یه شل دبیان بیس میده که 5 گیگ هم حافظه داره روش داکر، گیت، پایتون و پی اچ پی و ... هم از قبل نصب کرده
یه ادیتور هم داره
shell.cloud.google.com
323
💭از browser تا web server :
🔥وقتی شما روی URL یا همون لینک کلیک میکنید چه اتفاقی می افته؟
>وب سرور چیکار میکنه❓️ سرو میکنه اطلاعات رو توسط پروتکل Http !شما برای وارد شدن به یک وب سایت و دسترسی به محتوای آن نیاز به ip اون وب سایت یا سرور دارین . ولی ما برای هر وب سایت یا سرور فقط دامین اون ها ( مثل google.com) رو بلدیم خب حالا باید چیکار کرد ❓️ اینجا DNS به کمک ما میاد ! چیکار میکنه ؟ دی ان اس (DNS ) مثل یک دفترچه تلفن تو خودش نگه میداره که مثلا ip گوگل ، 216.239.38.120 هس و یا مثلا example.com , آی پیش ۱.۲.۳.۴ هس (مثلا)
>هر سرور یک name server داره که DNS server ها به صورت زنجیره ای وصل هستن به اون ها و ip سرور رو برای ما میگیرن.
گفتیم برای ارتباط بین دو سیستم نیاز به دو ip و دو port داریم ! پس ip DNS و ip name server کجاست ؟ ip DNS : ~. resolve.conf در فایلی به اسم ip name server: وقتی که ما دامین میخریم همون جا ست میکنیم که ip name server چی باشه !خب پس متوجه شدیم میشه ip سرور ها و وب سایت های مختلف رو توسط DNS بررسی کرد . حالا ip رو گرفتیم بعدش چی میشه ؟ حالا توسط پروتکل ip/tcp/http یک request http به وب سرور میزنیم و یک response http توسط وب سرور دریافت میکنیم !
(نکته : این ip که ما میگیریم ip خود سایت یا وب سرور نیست بلکه ip CDN هست که بعدا میگم راجبش )طبق این پروتکل(TCP) ، سه مرحله باید طی بشه که browser و web server به هم متصل بشن :
3_way handshake : مرحله اول : syn هست که browser یک بسته اولیه برای web server میفرسته که چک کنه در این بین پروتکل رمزنگاری چک شده یا اینکه بسته به صورت کامل رسیده به مقصد یا نه مرحله دوم : syn / ack در این مرحله web server تایید خودش رو برای درست رسیدن بسته انجام میده مرحله سوم : ack در این مرحله browser تایید میکنه که تاییدیه web server بدست آوردهخب در response که دریافت میکنیم پکت های html , javascript, css , .. هست که توسط render و javascript interpreter مرورگر تبدیل به data های قابل درک میشوند! #network
323
💭ریموت شدن به سرور با ssh
🔥اس اس اچ (ssh) یه پروتکل رمزنگاری شده است که برای ارتباط بین دستگاه ها درون شبکه کاربرد دارد به ویژه برای کنترل و دسترسی به سرورها از راه دور (remote )
برای کانکت شدن به یک سرور باید هویت تایید شود که به دو روش پرتکرار انجام میشود :
1️⃣ اولین روش قرار دادن یک username و password برای سرور است .
sudo adduser <new_username>بعد از اجرای این command از شما یک پسورد میخواهد و تمام. 2️⃣ روش دوم از امنیت بالاتر برخوردار است. این روش یک جفت کلید که شامل private key و public key هست احراز هویت یشود.
ssh-keygen -t rsa (or dsa , ..)نکته : در اینجا rsa , dsa , .. روش های رمز نگاری هستند. بعد از اجرا از شما یک private key و یک public key میخواهد.
ssh <username>@<hostname>حالا وقتی ssh بزنیم به یه server از ما اون public key که انتخاب کردیم رو میخواد!! حالا هر سروری که بسازید و بخواهید به آن ssh بزنید یک public key میخواهد که باید آن را حفظ باشید برای اینکه با یک پسورد به تمام سرورها متصل بشوید میتوانید از private key استفاده کنید. با اجرا این command:
ssh-copy-ip <username>@<hostname>نکته : در اینجا فایل public باید به اسم id_rsa.pub و private باید به اسم id_rsa باشد در غیر اینصورت باید ssh-copy-ip ، include کرد . ❓️کجا میتونم فایل ها رو ببینم
/home/user/.ssh❓️از کجا بفهمم private key من در سرور ذخیره شده و دیگه نیازی به public key نیست :
1) ssh <username>@<hostname> 2) cd ~.ssh 3) cat authorized_key❓️و حالا اینکه از کجا بفهمیم یه سرور هایی رو میتونیم از private key استفاده کنیم باید بهتون بگم که تویه همون مسیر home/user/.ssh یه فایلی هست به اسم known_hosts که توش هر سروری که بشه باهاش private key زد رو نشون میده . 💡 الان دیگه به راحتی میشه به سرور دسترسی پیدا کرد و و حتی data انتقال داد که بعداً روشش رو بهتون میگم. #network #linux
323
💭client vs server !
🔥کلاینت کیه ؟ سرور چیه ؟
در شبکه به دریافت کننده اطلاعات client میگویند و به ارسال کننده اطلاعات server میگویند.
#network
323
💭TCP or UDP :
🔥تعریفهای زیادی درباره این دو پروتکل است ولی به صورت خلاصه :
TCP
دقت بالاتر ولی سرعت انتقال داده کمتر دارد.
UDP
دقت پایینتر و سرعت بالاتر دارد.
< میشه دقت رو اینطوری گفت که TCP هر Data که میفرسته چک یکنه که با موفقیت ارسال شده یا نه ولی UDP بعد Data هایی که فرستاد چک میکنه کدام رفته و کدام ارور خورده
#network
323
OSI layers 💭
🔥یک مدل بصری که شامل 7 لایه شبکه است
> پروتکل(protocol) چیست : به قوانین ارتباط بین سیستمها و ماشینها میگن !
> آی پی (ip) : یک internet address هست !
>پورت (port) : به عنوان نقطه اتصالی برای ورود به یک سیستم یا سرور است. به عنوان مثال در شرکتهای بزرگ یک تلفن چند داخلی دارد و هر داخلی به یک بخش متصل میشود آن داخلیها را میتوان به عنوان port در نظر گرفت !
> برای connect شدن 2 سیستم در شبکه نیاز به دو ip و دو port داریم !
لایه 7 : شامل پروتکل http , ftp , https , ...
لایه 6 : پروتکل ssl
لایه 5 : zip
لایه 4 : TCP یا UDP
لایه 3 : send ip
لایه 2 : send mac address
لایه 1 : physical layer ( اطلاعات به صورت باینری در شبکه انتقال مییابد)
#network
Уже доступно! Исследование Telegram 2025 — ключевые инсайты года 
