بایگانی دسته: مدیریت سیستم

حمله Syn Flood

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

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

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

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

شاید به این مشکل بر خورده باشید که زمانی که جستجو می کنید و دنبال دستوری برای پیدا کردن زمان تغییر و یا ساخت یک فایل می گردید، به دستور 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 ها استفاده کنید.

حذف آی پی اول سیستم

شاید این مشکل براتون پیش آمده باشه که چندین آدرس آی پی روی یک اینترفیس داشته باشید. کارت شبکه یک آی پی اصلی می گیره و بقیه را به عنوان secondary می شناسه.

# ip address show dev enp0s31f6
۲: enp0s31f6: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether c8:5b:76:81:bc:90 brd ff:ff:ff:ff:ff:ff
inet 192.168.13.1/24 scope global enp0s31f6
valid_lft forever preferred_lft forever
inet 192.168.13.10/24 scope global secondary enp0s31f6
valid_lft forever preferred_lft forever

اگه تصمیم بگیرید آی پی اول را با دستور زیر حذف کنید، بقیه آی پی ها هم حذف می شوند:

ip address delete 192.168.13.1/24 dev enp0s31f6

برای جلوگیری از این کار کافیه مقدار promote_secondaries برابر یک قرار بدید

echo 1 > /proc/sys/net/ipv4/conf/eth0/promote_secondaries

و یا

sysctl net.ipv4.conf.eth0.promote_secondaries=1

تفاوت auto و allow-hotplug در فایل interfaces

سالهاست این allow-hotplug را توی تنظیمات پیشفرض دبیان می بینم و تنبلی مانع می شد که یک بار برای همیشه تفاوت اصلی و فاحش allow-hotplug با auto را در بیارم. تنها کاری که کردم اینه که به فراموشی سپردمش و فرض کردم نیست 😉

یه اتفاق خوب باعث شد، بالاخره از صندوق خونه بکشمش بیرون. یکی لیست پستی دبیان بود و یکی به روز رسانی manual فایل interfaces.

ادامه خواندن تفاوت auto و allow-hotplug در فایل interfaces

مشکل fetchmail و offlineimap با gmail

در تلاش بودم با fetchmail و یا offlineimap از اکانت Gmail بک آپ بگیرم. ولی گویا به خاطر سیستم پیچیده Gmail که بخشی از آن شامل Web login هست متصل شدن از طریق این دو ابزار به سرویس imap برای gmail امکان پذیر نیست.

این موضوع را FAQ پروژه fetchmail هم تایید می کنه (مطالعه در اینجا). ولی به هر حال یه کم شک دارم که واقعا راه حلی در خط فرمان وجود نداشته باشه. برای همین اگه کسی در این موضوع تجربه و پیشنهادی داره ممنون می شم، کامنت بزاره.

فایل کانفیگ هر دو نرم افزار هم می زارم که هم اگه کسی به دردش خورد استفاده کنه هم اگه مشکلی دیدید به من بگید

ادامه خواندن مشکل fetchmail و offlineimap با gmail

فهرست مطالعه برای System Administrator ها

مدتها بود که دلم می خواست که یه فهرست مطالعه (Reading List) برای System adminstrator ها و Network Administrator ها در حد تجربه خود بنویسم. هی عقب می افتاد. امروز اولین پستش را میخوام بزنم.

چند نکته و ویژگی در مورد این لیست هست:
۱- در برخی تجربه‌ها در این سالها متوجه شدم که باید خیلی قبل تر مطلبی را می خوندم و یا باید می دونستم، ولی چیزی در موردش نمی دونم. برای همین به این لیست اضافه کردم
۲- این لیست یک تلاش کوچیک برای آکادمیک کردن مسیر رشد و یادگیری یک مدیر سیستم یا System Administrator است.
۳- تصمیم دارم این لیست را تاجایی پیش ببرم که شبیه یک دوره لیسانس سه سال یک نفر را پر کنه و یک نفر بتونه سه سال آموزش خودشو برای ورود و یا پیشرفت در بازار کار برنامه ریزی کنه.
۴- شروع لیست با کتاب‌های فارسی است. شاید انتقاد خیلی‌ها را به همراه داشته باشه، ولی من معتقدم یادگیری پایه‌ها، مبانی و اصطلاحات یک تخصص با زبان مادری کار و پیشرفت را خیلی تسهیل می‌کنه. البته مطمئنا در یک جایی به بعد مطالعه ترجمه ها دیگر کارایی لازم را نداره و مطمئنا در ادامه تغیریبا همه کتابها انگلیسی خواهد بود.
۵- این لیست برای هنرستانی‌های رشته کامپیوتر و کاردانی و کارشناسی کامپیوتر مناسب است.
۶- سعی می‌کنم تاجایی که امکان داره دلیل پیشنهاد مطالعه هر کتاب و توانایی هایی که بعد از اون باید بدست بیارید را مطرح کنم

فهرست اول
هدف: آشنایی با مفاهیم، اصطلاحات و ابزارهای پایه در شبکه

۱- اصول طراحی شبکه های کامپیوتری – احسان ملکیان
یکی از بهترین کتاب‌ها است که دید خوبی در مورد انواع شبکه بهتون می‌ده. برای شروع کتاب خیلی خوبیه

۲- اصول مهندسی اینترنت – احسان ملکیان
در این کتاب از لایه های شبکه، پروتکل ها و سرویس ها صحبت شده. ولی تاکید من تو مطالعه این کتاب برای اینه که جزو معدود کتابهایی هست که مفهوم سرویس را می‌تونه برای یک تازه کار روشن کنه و توضیحات خوبی داره

۳- نفوذگری در شبکه و روشهای مقابله – احسان ملکیان
یکی از کتابهای خوب فارسی هست که یک تازه کار را با زبان فنی امنیت آشنا می‌کنه.

این سه کتاب تئوری،  ذهن شما را برای مطالعه عمیق‌تر آماده می کنه. یکی موانع یادگیری آشنا نبودن به کلمات و اصطلاحات، دقیقا جایی که کلمه مهمی را شما در کتاب یا مقاله ای نمی فهمید، جایی هست که از اونجا به بعد مطلب نمی گیرید و بد می گیرید 😉

فهرست را بعدا ادامه می دیم …