این سناریو رو در نظر بگیرید که قرار یک سیستم لینوکس رو تبدیل به روتر کنید ، اما روتری که به جای تونل VPN ، ترافیکش رو میخواد روی یک سرویس vmess یا vless یا کلا یک سرور پروکسی دیگه بفرسته!
کاری به این ندارم که برای اینکه لینوکس ما بخواد نقش روتر رو بازی کنه ، باید توی iptable تغییرات بدیم ، اینو برید سرچ کنید چیز خاصی نداره
نکته ی صحبت ما اینه که چجوری ترافیک های ورودی به اینترفیس رو ، روت کنیم به یک پروکسی سرور روی همون لینوکس ؟!
شاید سوال بشه براتون که ، خب وقتی مثلا بیایم پکیج v2ray رو ، روی لینوکسمون نصب کنیم همین اتفاق میوفته ، اما جواب خیر هست ، شما تا زمانی که تعیین نکنید که ترافیک از پروکسی رد بشه ، تمامی ترافیک لینوکس شما به صورت پیش فرض از گیتوی خارج میشه (یا اگر VPN زدید ، از تونل VPN خارج میشه)
پس راهکار چیه؟
یک ابزار عالی برای انتقال تمام ترافیک به سمت پروکسی سرور شما ، با این ابزار ، انگار اومدید مثلا v2ray خودتون رو که روش یک کانفیگ vmess انداختید ، تبدیل به یک گیتوی کردید ، و تمام ترافیک شما به سمت این پروکسی منتقل میشه.
بدرد وقت هایی میخوره که روتر ندارید ، ولی امکان نصب و کانفیگ یک سیستم لینوکسی رو دارید.
حالا اگر اون کانفیگ iptable رو انجام بدید ، آدرس IP این لینوکس رو به عنوان گیتوی به سیستم های دیگه میدید ، و بقیه داستان که دیگه مشخصه پیش میاد.
نمونه ی کانفیگ tun2socks
نکته :
کانال تلگرام IT Guys
کاری به این ندارم که برای اینکه لینوکس ما بخواد نقش روتر رو بازی کنه ، باید توی iptable تغییرات بدیم ، اینو برید سرچ کنید چیز خاصی نداره
نکته ی صحبت ما اینه که چجوری ترافیک های ورودی به اینترفیس رو ، روت کنیم به یک پروکسی سرور روی همون لینوکس ؟!
شاید سوال بشه براتون که ، خب وقتی مثلا بیایم پکیج v2ray رو ، روی لینوکسمون نصب کنیم همین اتفاق میوفته ، اما جواب خیر هست ، شما تا زمانی که تعیین نکنید که ترافیک از پروکسی رد بشه ، تمامی ترافیک لینوکس شما به صورت پیش فرض از گیتوی خارج میشه (یا اگر VPN زدید ، از تونل VPN خارج میشه)
پس راهکار چیه؟
tun2socks
یک ابزار عالی برای انتقال تمام ترافیک به سمت پروکسی سرور شما ، با این ابزار ، انگار اومدید مثلا v2ray خودتون رو که روش یک کانفیگ vmess انداختید ، تبدیل به یک گیتوی کردید ، و تمام ترافیک شما به سمت این پروکسی منتقل میشه.
بدرد وقت هایی میخوره که روتر ندارید ، ولی امکان نصب و کانفیگ یک سیستم لینوکسی رو دارید.
حالا اگر اون کانفیگ iptable رو انجام بدید ، آدرس IP این لینوکس رو به عنوان گیتوی به سیستم های دیگه میدید ، و بقیه داستان که دیگه مشخصه پیش میاد.
tun2socks --netif-ipaddr 10.0.0.2 --netif-netmask 255.255.255.0 --socks-server-addr 127.0.0.1:1080 --tun-device tun0
نمونه ی کانفیگ tun2socks
نکته :
ICMP cannot be "proxied" by any proxies, it would be simply replied by tun2socks
کانال تلگرام IT Guys
👍7
در سرورهای اوبونتو تنظیمات کارت شبکه به عهدهی netplan هستش. اما تو بعضی مواقع مخصوصاً سیستمهایی که دسکتاپ دارن یا کسانی که با محیط گرافیکی کار میکنن، استفاده از NetworkManager راحتتره
برای اینکه netplan رو طوری تنظیم کنیم که از NetworkManager استفاده کنه، مراحل زیر رو انجام بده:👇
-------------
1. اول فایل کانفیگ netplan رو باز کن. معمولاً توی مسیر /etc/netplan/ یه فایل YAML هست، مثلاً:
2. حالا توی اون فایل، مقدار renderer رو برابر NetworkManager بذار. مثلاً:
3. بعدش فایل رو ذخیره کن و از نتپلن بخواه که تنظیمات جدید رو اعمال کنه:
از این به بعد، مدیریت شبکه به جای systemd-networkd یا networkd، به NetworkManager سپرده میشه. حالا میتونی با ابزارهایی مثل nmcli یا محیط گرافیکی شبکه رو مدیریت کنی.👌
کانال تلگرام IT Guys
برای اینکه netplan رو طوری تنظیم کنیم که از NetworkManager استفاده کنه، مراحل زیر رو انجام بده:👇
-------------
1. اول فایل کانفیگ netplan رو باز کن. معمولاً توی مسیر /etc/netplan/ یه فایل YAML هست، مثلاً:
sudo nano /etc/netplan/01-netcfg.yaml2. حالا توی اون فایل، مقدار renderer رو برابر NetworkManager بذار. مثلاً:
network:
version: 2
renderer: NetworkManager3. بعدش فایل رو ذخیره کن و از نتپلن بخواه که تنظیمات جدید رو اعمال کنه:
sudo netplan apply از این به بعد، مدیریت شبکه به جای systemd-networkd یا networkd، به NetworkManager سپرده میشه. حالا میتونی با ابزارهایی مثل nmcli یا محیط گرافیکی شبکه رو مدیریت کنی.👌
کانال تلگرام IT Guys
👍8
This media is not supported in your browser
VIEW IN TELEGRAM
ما از صفر شروع کردیم👊
کانال تلگرام IT Guys
کانال تلگرام IT Guys
❤8
کتاب زیر ذره بین📕🔍
Docker Deep Dive - Chapter 1 Episode 5
خب توی قسمت قبلی رسیدی به این که چجوری یک ایمیج رو از هاب بگیریم ، یه نکته هم در مورد مشکل احتمالی توی دریافت ایمیج گفتم ، اینم گفتم که هنوز توی بخش Ops هستیم🥱
حالا که ایمیج رو گرفتیم ، چجوری کانتینر رو بسازیم ؟؟
توی داکر جهت ایجاد یک کانتینر بر پایه ی اون ایمیجی که گرفتیم باید از دستور زیر استفاده کنیم :
وقتی این دستور رو بزنید ، متوجه میشید که محیط خط فرمان شما تغییر کرده ، و انگار وارد یک محیط دیگری شیدید ، چجوری؟
مثلا تا الان بخش پرامپت شما بوده :
root@it_guys:
حالا شده :
root@321dfg456dfg:/#
چرا؟ چون شما وارد کانتینری شدید که الان ساختید📦
چجوری ؟ با آپشن -it که توی دستور زدید این اتفاق افتاد ، ینی گفتید که میخوام با کانتینر به صورت interactive تعامل داشته باشم و اتچ شدید به کانتینر . حالا اگر داخل کانتینر دستور زیر رو بزنید :
لیست پروسس هایی که الان داخل کانتینر درحال اجرا هست رو بهتون نمایش میده :
تحلیل این خروجی این هست که شما موقعی که داشتید کانتینر رو ایجاد میکردید ، بهش فرمان دادید که پروسس /bin/bash رو اجرا کن ، وهمینطور که میبینید کانتینر هیچ وظیفه ی دیگه ای جز اجرا کردن این پروسس نداره ، بعدش هم رفتیم داخلش و دستور نمایش پروسس هارو زدیم ps -elf و یک پروسس دیگه داخلش اجرا کردیم
اگر بخواید از کانتینر خارج بشید بدون اینکه پروسس رو داخلش kill کنید ، از کلید های ترکیبی ctrl + pq استفاده کنید ، درواقع شما دی اتچ کردید خودتون رو .
برای اینکه بخواید لیست کانتینر های ایجاد شده رو هم ببینید ( اون هایی که الان up هستند ):
#بررسی_کتاب
کانال تلگرام IT Guys
Docker Deep Dive - Chapter 1 Episode 5
خب توی قسمت قبلی رسیدی به این که چجوری یک ایمیج رو از هاب بگیریم ، یه نکته هم در مورد مشکل احتمالی توی دریافت ایمیج گفتم ، اینم گفتم که هنوز توی بخش Ops هستیم🥱
حالا که ایمیج رو گرفتیم ، چجوری کانتینر رو بسازیم ؟؟
نکته ، شاید بنظر برسه که خیلی کلی داره توضیح داده میشه ، اما به روند کتاب اعتماد کنید ، بعدا لایه ها و ساختار کلی رو کتاب توضیح میده😉
توی داکر جهت ایجاد یک کانتینر بر پایه ی اون ایمیجی که گرفتیم باید از دستور زیر استفاده کنیم :
docker run -it ubuntu:latest /bin/bash
وقتی این دستور رو بزنید ، متوجه میشید که محیط خط فرمان شما تغییر کرده ، و انگار وارد یک محیط دیگری شیدید ، چجوری؟
مثلا تا الان بخش پرامپت شما بوده :
root@it_guys:
حالا شده :
root@321dfg456dfg:/#
چرا؟ چون شما وارد کانتینری شدید که الان ساختید📦
چجوری ؟ با آپشن -it که توی دستور زدید این اتفاق افتاد ، ینی گفتید که میخوام با کانتینر به صورت interactive تعامل داشته باشم و اتچ شدید به کانتینر . حالا اگر داخل کانتینر دستور زیر رو بزنید :
root@321dfg456dfg:/# ps -elf
لیست پروسس هایی که الان داخل کانتینر درحال اجرا هست رو بهتون نمایش میده :
4 S root 1 0 0 - 4560 - 09:00 pts/0 /bin/bash
0 S root 9 1 0 - 8606 - 09:00 pts/0 ps -elf
تحلیل این خروجی این هست که شما موقعی که داشتید کانتینر رو ایجاد میکردید ، بهش فرمان دادید که پروسس /bin/bash رو اجرا کن ، وهمینطور که میبینید کانتینر هیچ وظیفه ی دیگه ای جز اجرا کردن این پروسس نداره ، بعدش هم رفتیم داخلش و دستور نمایش پروسس هارو زدیم ps -elf و یک پروسس دیگه داخلش اجرا کردیم
نکته ی مهم ، یک کانتینر تنها تا زمانی زنده هست که پروسسی داخلش درحال اجرا باشه
اگر بخواید از کانتینر خارج بشید بدون اینکه پروسس رو داخلش kill کنید ، از کلید های ترکیبی ctrl + pq استفاده کنید ، درواقع شما دی اتچ کردید خودتون رو .
برای اینکه بخواید لیست کانتینر های ایجاد شده رو هم ببینید ( اون هایی که الان up هستند ):
docker container ls
#بررسی_کتاب
کانال تلگرام IT Guys
👍7
فرق بین su و - su تو لینوکس چیه؟🤔
وقتی میزنی
فقط کاربر به root تغییر میکنه، ولی محیط (environment) کاربر قبلی حفظ میشه؛ یعنی متغیرهایی مثل PATH, HOME, و SHELL تغییر نمیکنن.
اما با
انگار واقعا به صورت لاگینشده وارد root شدی. محیط کاملاً به root تغییر میکنه، طوری که انگار از اول با root وارد شدی.
--------
حالا اصن چرا یه همچین چیزی وجود داره وقتی محیط عوض نمیشه ولی کاربر عوض میشه چه فایدهای داره؟🧐
این موضوع مهمه چون مثلاً وقتی میخوای python3 اجرا کنی، اگه با su وارد شده باشی، ممکنه هنوز به نسخهی یوزر قبلیت ارجاع بده. ولی با su - مسیر به
یا مسیر اصلی root میره.
پس اگه میخوای سریع یه دستور مدیریتی بزنی و نمیخوای محیطت عوض شه، su کفایت میکنه.
ولی برای اجرای ابزارهای سیستمی با محیط کامل و درست، همیشه از su - استفاده کن. 👊😉
کانال تلگرام IT Guys
وقتی میزنی
suفقط کاربر به root تغییر میکنه، ولی محیط (environment) کاربر قبلی حفظ میشه؛ یعنی متغیرهایی مثل PATH, HOME, و SHELL تغییر نمیکنن.
اما با
su - انگار واقعا به صورت لاگینشده وارد root شدی. محیط کاملاً به root تغییر میکنه، طوری که انگار از اول با root وارد شدی.
--------
حالا اصن چرا یه همچین چیزی وجود داره وقتی محیط عوض نمیشه ولی کاربر عوض میشه چه فایدهای داره؟🧐
این موضوع مهمه چون مثلاً وقتی میخوای python3 اجرا کنی، اگه با su وارد شده باشی، ممکنه هنوز به نسخهی یوزر قبلیت ارجاع بده. ولی با su - مسیر به
/usr/bin/python3یا مسیر اصلی root میره.
پس اگه میخوای سریع یه دستور مدیریتی بزنی و نمیخوای محیطت عوض شه، su کفایت میکنه.
ولی برای اجرای ابزارهای سیستمی با محیط کامل و درست، همیشه از su - استفاده کن. 👊😉
کانال تلگرام IT Guys
👍10❤1
Forwarded from KALI
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from KALI
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from The Chaos
SQL Injection HandBook.pdf
6.3 MB
✏️ مقاله ترجمه شده
SQL Injection HandBook
🪧کانال ما :
The Chaos
#SQL_Injection #OWASP #CyberSecurity #Article
SQL Injection HandBook
🪧کانال ما :
The Chaos
#SQL_Injection #OWASP #CyberSecurity #Article
👍5
اگر با certbot سرتیفیکیت گرفتید با دستور زیر ببینید چقدر تا زمان انقضا مونده:
کانال تلگرام IT Guys
sudo certbot certificates
کانال تلگرام IT Guys
👍6
Milad Mahmoodian
اگه میخوای لیست تمام یوزر هایی که عضو گروه Sudo هستند رو پیدا کنی : getent group sudo | cut -d: -f4
جهت حذف یک یوزر خاص :
اول بهتره یوزر لاگ اوت کنه یا اگر نبود ، تمام پروسس هایی که اجرا کرده رو ببندیم :
بعدش برای حذف یوزر از گروه sudo :
و در نهایت جهت حذف یوزر :
و حذف یوزر با دایرکتوری او :
جهت بررسی اینکه کاربر وجود دارد یا خیر :
کانال تلگرام IT Guys
اول بهتره یوزر لاگ اوت کنه یا اگر نبود ، تمام پروسس هایی که اجرا کرده رو ببندیم :
sudo pkill -u "USERNAME"
بعدش برای حذف یوزر از گروه sudo :
sudo deluser "USERNAME" sudo
و در نهایت جهت حذف یوزر :
sudo deluser "USERNAME"
و حذف یوزر با دایرکتوری او :
sudo deluser --remove-home "USERNAME"
جهت بررسی اینکه کاربر وجود دارد یا خیر :
id "USERNAME"
کانال تلگرام IT Guys
👍11
Forwarded from KALI
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from KALI
Please open Telegram to view this post
VIEW IN TELEGRAM
جهت بررسی IP Public توی محیط CLI :
curl https://checkip.amazonaws.com
👍7
apt update && apt -y install shadowsocks-libev
cat | tee /etc/shadowsocks-libev/config.json <<EOF
{
"server":["0.0.0.0", "::"],
"mode":"tcp_and_udp",
"server_port":9723,
"local_port":1080,
"password":"AJTEemKqxSFjUZSamYXtJMVc",
"timeout":86400,
"method":"chacha20-ietf-poly1305"
}
EOF
systemctl enable shadowsocks-libev --now
👾کانال تلگرام IT Guys
👍6
تاحالا چیزی در مورد Capability تو لینوکس شنیدین؟
توی لینوکس ، اجرا شدن هر چیزی نیازمنده داشتن Capability مربوط به اون کاریه که میخواد انجام بده ، مثلا چی؟
مثلا ping که یک موضوع ساده ای هست ، برای اینکه اجرا بشه ، باید بتونه یک سوکت خام ایجاد کنه ، باز کردن یک سوکت خام ؛ نیازمنده داشتن Capability مربوطه هست که اسمش :
حالا بعد از داشتن این Capability ، بحث مالکیت فایل میاد وسط ، چرا؟ چون اگر فایل یا پروسسی Capability مربوطه رو داشته باشه ، آیا هر کاربرای میتونه اجراش کنه؟ نه ، فقط مالک میتونه اون فایل رو اجرا کنه ، اون فایل با توجه به Capability که بدست آورده میتونه کارش رو انجام بده .
حالا چرا این Capability بوجود اومد؟
قدیما ، یا شما کاربر root بودی ، یا non-root ، اگر root بودی که هیچی ، بحثی روی این نیست.
اما اگر کاربر عادی بودی ، جهت اجرای برنامه ها یا پکیج ها نیاز به دسترسی کامل root داشتی ، حتی زمانی که یک برنامه ی ساده میخوای اجرا کنی ، و فقط ممکنه بخواد مثل ping یک سوکت خام باز کنه ، اون وقتی دسترسی root میدادی ؛ در واقع به اون پروسس ، یک عالمه دسترسی های دیگه هم میدادی که اصلا بهشون نیاز نداشت .
اینجا بود که Capabilities اومد گفت:
"به جای اینکه کل برنامه رو root کنیم، فقط اون دسترسیای که لازم داره رو بدیم بهش!"
مثلاً به یه برنامه فقط CAP_NET_BIND_SERVICE بدیم، که بتونه پورت 80 رو باز کنه، ولی نتونه فایلهای مهم رو پاک کنه یا پسوردها رو بخونه.
خلاصه گفتم اما اگه جالب بود براتون توضیحات مفصلی توی مقاله ای که اینجا لینکش کردم هست که میتونید بخونید و یه لول توی بحث کارکردن با لینوکس عمیق تر بشید ، چون نکته ی مهمیه که خودم تازه فهمیدم ، و در صورتی که درست نتونیم برنامه ای رو از لحاظ سطح دسترسی پیکربندی کنیم ؛ مهاجم میاد دنبال برنامه هایی میگرده که با سطح دسترسی root ایجاد شدن ، و دنبال نقطه ضعف توی ساختار اون برنامه میگرده ، اگر پیدا کرد نفوذ میکنه ، و حالا با اون برنامه هر اقدامی رو انجام بده ، به عنوان یک دسترسی root همه چی انجام میشه .
کانال تلگرام IT Guys
توی لینوکس ، اجرا شدن هر چیزی نیازمنده داشتن Capability مربوط به اون کاریه که میخواد انجام بده ، مثلا چی؟
مثلا ping که یک موضوع ساده ای هست ، برای اینکه اجرا بشه ، باید بتونه یک سوکت خام ایجاد کنه ، باز کردن یک سوکت خام ؛ نیازمنده داشتن Capability مربوطه هست که اسمش :
CAP_NET_RAW
حالا بعد از داشتن این Capability ، بحث مالکیت فایل میاد وسط ، چرا؟ چون اگر فایل یا پروسسی Capability مربوطه رو داشته باشه ، آیا هر کاربرای میتونه اجراش کنه؟ نه ، فقط مالک میتونه اون فایل رو اجرا کنه ، اون فایل با توجه به Capability که بدست آورده میتونه کارش رو انجام بده .
حالا چرا این Capability بوجود اومد؟
قدیما ، یا شما کاربر root بودی ، یا non-root ، اگر root بودی که هیچی ، بحثی روی این نیست.
اما اگر کاربر عادی بودی ، جهت اجرای برنامه ها یا پکیج ها نیاز به دسترسی کامل root داشتی ، حتی زمانی که یک برنامه ی ساده میخوای اجرا کنی ، و فقط ممکنه بخواد مثل ping یک سوکت خام باز کنه ، اون وقتی دسترسی root میدادی ؛ در واقع به اون پروسس ، یک عالمه دسترسی های دیگه هم میدادی که اصلا بهشون نیاز نداشت .
اینجا بود که Capabilities اومد گفت:
"به جای اینکه کل برنامه رو root کنیم، فقط اون دسترسیای که لازم داره رو بدیم بهش!"
مثلاً به یه برنامه فقط CAP_NET_BIND_SERVICE بدیم، که بتونه پورت 80 رو باز کنه، ولی نتونه فایلهای مهم رو پاک کنه یا پسوردها رو بخونه.
خلاصه گفتم اما اگه جالب بود براتون توضیحات مفصلی توی مقاله ای که اینجا لینکش کردم هست که میتونید بخونید و یه لول توی بحث کارکردن با لینوکس عمیق تر بشید ، چون نکته ی مهمیه که خودم تازه فهمیدم ، و در صورتی که درست نتونیم برنامه ای رو از لحاظ سطح دسترسی پیکربندی کنیم ؛ مهاجم میاد دنبال برنامه هایی میگرده که با سطح دسترسی root ایجاد شدن ، و دنبال نقطه ضعف توی ساختار اون برنامه میگرده ، اگر پیدا کرد نفوذ میکنه ، و حالا با اون برنامه هر اقدامی رو انجام بده ، به عنوان یک دسترسی root همه چی انجام میشه .
کانال تلگرام IT Guys
👍10❤2
Before capabilities, we only had the binary system of privileged and non-privileged processes and for the purpose of performing permission checks, traditional UNIX implementations distinguish two categories of processes: privileged processes that referred as superuser or root and unprivileged processes (whose effective UID is nonzero).
کانال تلگرام IT Guys
کانال تلگرام IT Guys
👍8
اگه اومدی یوزر توی لینوکس درست کردی ولی بهش دایرکتوری ندادی ، کامند های زیر رو بزن
1- ساخت دایرکتوری هوم
2- دادن مالکیت به کاربر
3- کپی فایلهای اسکلت
حالا ان کارارو کردی ، اما با اون کاربر وارد شدی ولی دیدی پرامپتت فقط یک $ ساده هست ، به احتمال زیاد شما روی Shell = /bin/sh هستید
امکانات /bin/bash رو نداره
اگر بخوای شل بره روی bash
بعد یکبار یوزرت رو لاگ اوت کن و دوباره وارد شو
👾کانال تلگرام IT Guys
1- ساخت دایرکتوری هوم
sudo mkdir /home/itguys
2- دادن مالکیت به کاربر
sudo chown itguys /home/itguys
3- کپی فایلهای اسکلت
sudo cp -r /etc/skel/. /home/itguys/
sudo chown -R itguys /home/itguys/
حالا ان کارارو کردی ، اما با اون کاربر وارد شدی ولی دیدی پرامپتت فقط یک $ ساده هست ، به احتمال زیاد شما روی Shell = /bin/sh هستید
امکانات /bin/bash رو نداره
اگر بخوای شل بره روی bash
chsh -s /bin/bash
بعد یکبار یوزرت رو لاگ اوت کن و دوباره وارد شو
👾کانال تلگرام IT Guys
❤8👍3