حمله Syn Flood

حمله Syn Flood از دسته حمله هایی است که خیلی بی سر و صدا سرورتون را از دسترس خارج می کنه در نگاه اول هیچ نشانه ای نداره ، جز اینکه سرویستون دیگه جواب کاربران را نمی ده. برای اینکه بدونین چه شکلی کار می کنه اول باید بدنید three way handshaking در tcp چه شکلی کار می کنه. gif زیر که از wikipedia گرفتم را نگاه کنید

در شروع هر ارتباط tcp کلاینت برای شروع ارتباط یک بسته syn ارسال می کنه. سرور درجوابش یک syn/ack ارسال می کنه و کلاینت یک بسته ack بر می گردونه. زمانی که این سه بسته ردو بدل شد ارتباط به حالت establish می‌ره و کلاینت و سرور شروع به تبادل داده می کنند.

ادامه خواندن حمله Syn Flood

چالشهای مباحثه

قبل از این متن لطفا مطلب «اصل صحبت با انسان بالغ» را بخونید.

یکی از چالشهایی که در هنگام بحث پیش میاد، اینه که شروع می‌کنیم، به جای مطلب خود شخص طرف بحث را خطاب قرار می‌دیم و بهش برچسب می زنیم. یه برچسبی مثل «بی فکر» می تونه طرف مقابل را وارد فاز دفاعی کنه و دیگه مباحثه پیش نره.

حالا مشکل من خود این موضوع نیست. من با دونستن همین موضوع دفعات زیادی مرتکب این موضوع شدم و بحث به جای خوبی نرفت. دایم از خودم می پرسیدم با اینکه این موضوع را می دونم و می خوام اجرا کنم، نمی دونم چرا افسار کار از دستم خارج می شه .

متوجه چند تا موضوع اولیه شدم که من را از بحث منحرف کرد و کاری را کردم که نمی خواستم. ۱- طرف مقابلت خواسته یا ناخواسته اصلا قصد بحث نداره و نمی خواد چیزی را بشنوه و دایم خواسته اش را فریاد می زنه.
راه حل: خوب با چنین کسی اصلا جای مباحثه ای نیست. چون یه مباحثه دو طرف داره و طرف دوم شما اصلا قصد نداره مباحه کنه. باید دقت داشته باشید که ممکنه طرف مقابل این صحبت را بکنه که قصد صحبت داره ، ولی شما باید با قدرت موضوع را بپیچونی. 😉
۲- استفاده از موضوعات احساسی، توهمی به عنوان دلیل. این هم یکی از اون موضوعات که تو مباحثه نمی‌گنجه.  مثل «من دلم می‌گه این درسته» !!!!!!
به این موضوعات آگاه باشید و اولین مورد که دیدید دوری کنید، سر کار می رید… بد D:

پیدا کردن تاریخ ساخت فایل

شاید به این مشکل بر خورده باشید که زمانی که جستجو می کنید و دنبال دستوری برای پیدا کردن زمان تغییر و یا ساخت یک فایل می گردید، به دستور stat  می رسید. ولی این دستور یه مشکل داره.

$ stat linuxmotto.txt $ stat linuxmotto.txt
File: linuxmotto.txt
Size: 0         Blocks: 0          IO Block: 4096   regular empty file
Device: 15h/21d Inode: 492194      Links: 1
Access: (0644/-rw-r–r–)  Uid: ( 1000/  behrad)   Gid: ( 1000/  behrad)
Access: 2017-10-14 22:25:13.673825333 +0330
Modify: 2017-10-14 22:25:13.673825333 +0330
Change: 2017-10-14 22:25:13.673825333 +0330
Birth: –

همانطور که می‌بینید، این دستور سالهاست که زمان ساخت (Birth) را نشان نمی‌ده. این به دلیل این نیست که این زمان در فایل سیستم ذخیره نمی‌شه. بلکه دقیقا مشکل دستور stat است.
البته همه فایل سیستم ها از Creation time پشتیبانی نمی‌کنند. مانند XFS و در ضمن هر فایل سیستم ممکنه این مقدار را با اسامی مختلفی نگهداری کند

zfs → crtime
ext4 → crtime
btrfs → otime

برای اینکه بتونید زمان ساخت یک فایل را پیدا کنید، می تونید از دستور دیگری به نام debugfs استفاده کنید. debugfs دستور بسیار قدرتمندی برای بررسی یک فایل سیستم است. این دستور مربوط به فایل سیستم ext4 هست، و من نتونستم دستور معادلی برای btrfs پیدا کنم. اگه سراغ دارید ممنون می شم در کامنت معرفی کنید.

debugfs -R “stat /tmp/linuxmotto.txt” /dev/sda2 | grep crtime

ترافیک نداشتن ماشین KVM

مدتی هست که دیگه از اسکریپت های فایروال خودم استفاده نمی کنم. روی Debian Base ها که ufw باب شده و روی Redhat Base ها هم Firewall-cmd استفاده می شه. برای همین نیازی نیست که از اسکریپت‌های خودم استفاده کنم.
حالا همین موضوع دردسر شده و گهگاهی یادم می ره که این ابزارها rule های پیشفرضی دارند که جلوی همه چی را می بندند.

مشکل
ترافیک به دست ماشین KVM نمی رسه، ولی ping داره

راه حل
نیاز هست که برای ترافیک ورودی و خروجی بر روی Host ای که ماشین مجازی نصبه دو تا rule یکی برای ترافیک ورودی و یکی برای ترافیک خروجی در FORWARD Chain تعریف کنید. برای این کار باید توی فایل  etc/ufw/before.rules/  در قسمت rule های FORWARD اضافه کنید. این کار باعث می شه که هر دفعه سرور را restart می کنید، این rule ها هم اعمال بشه.

-A ufw-before-forward -p ip -s 172.17.120.55/24 -j ACCEPT
-A ufw-before-forward -p ip -d 172.17.120.55/24 -j ACCEPT

و یک بار هم اجرا کنید، تا در همین لحظه هم اعمال بشند

iptables -A ufw-before-forward -p ip -s 172.17.120.55/24 -j ACCEPT
iptables -A ufw-before-forward -p ip -d 172.17.120.55/24 -j ACCEPT

تغییر نام database بر روی mariadb

شاید برای شما هم پیش بیاد که بخواین که نام دیتابیس را تغییر بدید. خوب اگه از phpmyadmin استفاده می‌کنید که اون خودش براتون این کار را می کنه. ولی اگه خودتون می خواید از طریق خط فرمان این کار را انجام بدید، باید بدونید که دستوری برای این کار نداریم!

پس برای انجام این کار باید چی کار کرد. یک راه حل اولیه اینه که یک دیتابیس جدید با اسم مورد نظر بسازید، از دیتا بیس قبلی backup بگیرید و بعد در دیتابیس جدید restore کنید.

mysqldump -u username -p -v olddatabase > olddbdump.sql
mysqladmin -u username -p create newdatabase
mysql -u username -p newdatabase < olddbdump.sql

اگه بخوایم یه کم بار I/O را کم کنیم می تونیم از ترفند زیر استفاده کنیم (من از stackoverflow پیدا کردم)

mysqladmin -u username -p create newdatabase
mysqldump -u username -v olddatabase -p | mysql -u username -p -D newdatabase

اگه از Innodb برای دیتابیس استفاده می‌کنید، یه روش کم بار تر هم می تونید استفاده کنید. دیتابیس جدید با اسم جدید بسازید و بعد table هاتون را rename کنید.

RENAME TABLE old_db.table TO new_db.table;

برای اینکه همه table ها را یکجا rename کنید از حلقه while یا for می تونید استفاده کنید

mysql -u username -ppassword old_db -sNe ‘show tables’ | while read table; \
do mysql -u username -ppassword -sNe “rename table old_db.$table to new_db.$table”; done

 

استفاده از Pacemaker به عنوان Cluster Manager

در حال طراحی و انتقال سرویس به سمت کلاستر هستم. تصمیم دارم که از Pacemaker به عنوان Cluster Manager استفاده کنم.

دیشب بین دوستان یه صحب کوتاه داشتم و آرش نظرش این بود که لزومی هم نداره از pacemaker و استکش نیست و استفاده مجزی از corosync کفایت می کنه و کارت را راه می اندازه.

خیلی دلم می خواست نظر دوستان دیگر را هم که در این مورد تجربه دارند بدونم.

سوال اصلی اینه: شما برای cluster manger از چه stack ای استفاده می کنید؟ تجربه و دلیل استفاده تون یا هر نظر خوب و بدی دارید ممنون می شم در میون بزارید.

مشکل پارتیشن boot با فرمت btrfs و kernel panic

در اوبونتو ۱۶٫۰۴ یک باگ وجود داره که زمانی که شما boot را از فرمت btrfs انتخاب می کنید، در برخی از دفعات بوت با kernel panic مواجه می شید. این موضوع شاید تو توزیع‌های دیگه هم باشه (من فرصت آزمایش روی بقیه را نداشتم).

شرح مشکل

مشکل اینه که اگه boot روی btrfs باشه و این فایل سیستم در زمان بود دچار مشکل بشه، حتی یه مشکل ساده مثل unclean بسته شدن، دیگه initrd نمی تونه بارگذاری بشه و در نتیجه دچار kernel panic می شه..

راه حل

تا اطلاع ثانوی پوشه boot را در پارتیشن جدایی در نظر بگیرید و از همان فرمت های قدیمی از دسته ext ها استفاده کنید.