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

SSL(TLS) Certificate File Extentions

همه sysadmin ها مطمئنا تا به حال حداقل یک بار مجبور به پیکربندی SSL یا TLS برای یکی از سرویس های وب یا میل شده اند. این موضوع به دلیل اینکه در طول یک پروژه یا کار خیلی کم پیش میاد، اکثر ما سطحی از کنارش می گذریم و خیلی کنجکاو نمی‌شیم که مفاهیم پایه اش را در بیاریم و یا خیلی ریز وارد جزییاتش بشیم. اکثر مواقع فقط انجامش می دیم میره.

خوب توی این مستند تصمیم دارم انواع پسوند‌هایی که برای فایل‌های کلید و Certificate امون انتخاب می کنیم و همینطور چند تا فرمتش را معرفی کنم.

ادامه خواندن SSL(TLS) Certificate File Extentions

فهرست مطالعه برای System Administrator ها – نسخه ۲

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

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

ادامه خواندن فهرست مطالعه برای System Administrator ها – نسخه ۲

راهنمای خرید سخت افزار – Memory

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

ادامه خواندن راهنمای خرید سخت افزار – Memory

حمله 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