بعضی وقتها لازم داریم که درخواست های DNS هم امن باشند
درخواست های DNS چند تا قابلیت بد دارند:
قابل شنود هستند
جواب آنها قابل تغییر هستند
مثلا روی سیستم خودتون بیاید سعی کنید IP دامنه fb.com رو با دستور dig یا nslookup بگیرید
من اینجوری این کار رو انجام میدم
dig fb.com
میبینید IP سرور فیلترینگ رو میاره (همون پیوندها)
10.10.34.35
حالا سعی کنید از سرور گوگل بپرسید IP سایت fb.com چی هست
dig @8.8.8.8 fb.com
این هم که اشتباه میگه
حالا وقتی فیلترینگ ایران میتونه این کار رو به سادگی انجام بده، پس یه هکر چی؟
اون هم یقینا میتونه به سادگی این کار رو انجام بده
اگر انجام بده چی میشه؟
اگر یک هکر بتونه اطلاعات دریافتی کلاینت های ما از DNS سرور رو تغییر بده، یعنی عمق فاجعه، میتونه سایت های مشابه سایت هایی که کاربران ما بهشون دسترسی دارند رو درست کنه و فیشینگ و بقیه موارد...
خب راه حلی که بشه جلوی این کار رو گرفت چی هست؟
ما از راه های مختلفی میتونیم استفاده کنیم
یکی از این راهها این هست که DNS سرور داخل شبکه خودمون باشه
یکی دیگه این هست از یه سرور واسط و یک تانل برای امن کردن درخواست های DNS استفاده کنیم
از اونجایی که عشق من تانل های SSH هست، در ادامه این مقاله میخوام سریع یک تانل SSH و یک شبه DNS سرور درست کنم
اول روی لوکال و روی سرور، screen رو نصب کنید
apt install screen
yum install screen
dnf install screen
بعد دستور socat رو در هردو سمت نصب کنید
apt install socat
dnf install socat
yum install socat
داخل سرور یک screen درست کنید
screen -s DNS
حالا داخل اسکرین با دستور socat یک پورت TCP با پورت ۵۳۰۰ درست می کنیم و متصل میکنیم به DNS سرور اصلی (به عنوان مثال اینجا 8.8.8.8 رو گذاشتم)
socat tcp4-listen:5300,reuseaddr,fork UDP:8.8.8.8:53
حالا از روی لوکال یک تانل به سرور می زنیم و پورت 5300 رو به لوکال bind می کنیم:
ssh user@server-ip-address -L 5300:127.0.0.1:5300
با زدن دستور قبل پورت ۵۳۰۰ سرور به ۵۳۰۰ لوکال بایند (bind) میشه
میتونیم تانل رو هم داخل اسکرین بذاریم
حالا یک اسکرین برای dns باز میکنیم
screen -s DNS
و با دستور socat میایم یک پورت UDP راه میندازیم و متصلش میکنیم به پورت ۵۳۰۰ لوکال
socat udf4-listen:53,reuseaddr,fork tcp:localhost:5300
حالا اگر بیایم و دوباره با دستور dig از لوکال خودمون آی پی fb.com رو کوئری بگیریم، میبینیم IP درست رو بر میگردونه اینبار
dig @127.0.0.1 fb.com
برای اینکه بتونید از این DNS سرور استفاده کنید باید دقت داشته باشید که حتما 127.0.0.1 رو توی فایل resolv.conf مشخص کنید
vim /etc/resolv.conf
nameserver 127.0.0.1
دقت داشته باشید چیزی که گفتم برای دورزدن فیلترینگ نیست و توقع نداشته باشید بعد از اجرای دستورات بالا سایت فیس بوک براتون باز بشه
این مقاله کوتاه صرفا جهت ایمن کردن ارتباطات DNS از طریق تانل SSH بود ;)