همیشه برای بعضی از کاربران سؤالاتی مطرح است که از کدام برنامه برای log گیری شبکه استفاده نمایند. تا زمانی که این خواسته کاربران مشخص نباشد این سؤال بدون جواب باقی میماند.
خوب مسلماً برنامههای زیادی با کاربردهای زیادی هستند انواع monitoring شبکه را داریم که هریک بنا به رسته خود مورد بحث قرار میگیرد و باز در بحث sniffing تقسیمبندی های متفاوتی همانند log گیری حجم اطالاعات شبکه، capture کردن دادهها، ابزاری برای برنامهسازی و غیره موجودند که همزمان با زمان و پروتکلها تغییر میکنند.
اما چرا tcpdump ؟ زمانی که کاربری بخواهد در مورد packet ها تحقیق کند باید آنها capture کرده و حال یا از آنها log گرفته و این log مهم است و یا کار با یک grep حل میشود. سؤالی که مطرح میشود این است که wireshark نیز همین کار را انجام میدهد چرا از آن استفاده نشود؟ مسلماً یک کاربر شبکه همزمان بر روی چندین سرور باید برود که هیچ کنسول گرافیکی وجود ندارد و بقیه قضیا… اما اگر در مورد کاربرد wireshark میخواهید بپرسید در برنامهسازی به شدت کاربرد دارد.
ادامه خواندن مقدمهای بر tcpdump
نصب و راه اندازی فایرول PF در FreeBSD (شماره اول)
دراین قسمت ابتدا به مقدمات نصب در FreeBSD میپردازیم. FreeBSD همانند گنو/لینوکس نمیباشد که یکسری pf-iconپیشفرضها در کرنلش وجود داشته باشد. نه تنها کرنلش بلکه خود سیستمعامل آن نیز یک سیستمعامل لخت محسوب میشود. بدین جهت برای هر کاری باید مقدماتی را در خود سیستمعامل آماده سازی نمود.البته ناگفته نماند در این شماره کمی از مقدمات PF نیز گفته خواهد شد.
سؤالی که ممکن است پیش بیاید این است که چرا در خود OpenBSD نصب نکردیم. جواب این سؤال را بهتر است با تعریف خود community آن ارایه کنم: OpenBSD یک community حمایت کننده از پروژههایی همانند OpenSSH، LibreSSL، OpenSMTPD ، OpenBGPD، OpenIKED و mandoc میباشد. درواقع مکانی برای رشد و کمک به نرمافزار آزاد در مقیاس بزرگ میباشد.
ادامه خواندن نصب و راه اندازی فایرول PF در FreeBSD (شماره اول)
systemd در دبیان (شماره نهایی)
در شماره پیش با مفاهیم systemd آشنا شدیم. حداقلهایی برای ذهنیت اولیه کار با systemd آماده شد تا با Systemd-on-fedoraمفاهیمی مثل performance ، مهاجرت بدنه اصلی گنو/لینوکس (کل فرآیند بوت) و غیره آشنا باشد. اما چیزی که در دنیای واقعی بدان نیاز دارد دستوراتی است که بعد از درک پایه مفاهیم اصلی بدان ضرورتاً نیازمند است. در این شماره سعی شده است تا مستقل از دیسترو بدان اشاره شود. در SysV هر چیزی برای خودش رشد کرده بود و تحت لوای فرآیند خاصی نبود ولی در systemd همانطور که در شماره پیشین بدان اشاره شد، همه چیز در فرآیند بوت تحت لوای systemd میباشد، ضرورت آنهم صرفاً یکپارچگی بوده تا به سرعت بالاتری رسد. بهتر است این متن را در ۳ قسمت توضیح دهیم:
ادامه خواندن systemd در دبیان (شماره نهایی)
ماژول ip_conntrack
اصولاً باب شده تا sysadmin ها از پیکربندیهای لایه ۴ استفاده نمایند که این موضوع در کل کار قشنگی نیست. هرزگاهی باید از لایههای پایینتر استفاده نمود و یا مشکلاتی را حل کرد که پایینتر از لایه ۴ باید حل شوند.(مدل ۴ لایهای) یک مثال بارز این جریان دایرکتیو MaxKeepAliveRequests آپاچی میباشد که اگر به آن پارامتر 0 دهیم بدان معنیست که بینهایت connection را بپیذیر و اگر عددی دیگر دهیم مقدار connection مربوطه است. فرض کنید شما به آن 0 پاس کردید یا نه اصلاً شما وب سرور نیستید. شما daemon هستید که شرکت شما آن را نوشته و مثلاً به دو پورت ۱۸۵۰۰ , ۱۸۵۰۱ گوش فرا میدهد. و هیچ پورت دیگری هم باز ندارید و سرویسی را در حال اجرا نگذاشتهاید. ادامه خواندن ماژول ip_conntrack
grep در محتوای متغیرهای محیطی کل سیستم با یک اسکریپت ساده
بگذارید کمی مقدمه چینی کنم تا به اصل قضیه برسم و اسکریپت مربوطه رو که حتی یک grep هم نداره توضیح بدم. تمام پراسسها در دایرکتوری /proc دارای یک دایرکتوری هستند با نام PID خودشون، که خیلی از منابع اون پراسس در اون داریکتوری ذخیره میشن. اگر برای اون پراسس حداقل یک متغیر محیطی ایجاد شده باشه، در همون دایرکتوری فایلی با نام environ ایجاد میشه. به مثال زیر توجه کنید، این مثال در مورد PID فرمان bash هست که کلی متغیر داره:
1 |
XDG_VTNR=7ORBIT_SOCKETDIR=/tmp/orbit-mohsenSSH_AGENT_PID=1861XDG_SESSION_ID=1TERMINATOR_UUID=urn:uuid:9f556e84-4e5d-4987-baca-c7462d88eaddSHELL=/bin/bashTERM=xtermWINDOWID=12582915USER=rootLS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:SSH_AUTH_SOCK=/tmp/ssh-07uwLKkYBGkz/agent.1818USERNAME=mohsenPAGER=mostPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binDESKTOP_SESSION=awesomePWD=/home/mohsenLANG=en_US.UTF-8GDM_LANG=en_US.UTF-8GDMSESSION=awesomeSHLVL=1XDG_SEAT=seat0HOME=/root_JAVA_AWT_WM_NONREPARENTING=1LOGNAME=rootXDG_SESSION_DESKTOP=awesomeDBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-pP6Bq1NhOn,guid=e3731706c3c73c553bd1638a5519c1d1WINDOWPATH=7DISPLAY=:0XDG_RUNTIME_DIR=/run/user/1000XAUTHORITY=/var/run/gdm3/auth-for-mohsen-hZ2pPq/databaseCOLORTERM=gnome-terminal_=/bin/suLANGUAGE=en_US:enMAIL=/var/mail/rootroot@debian:/home |
این هم از اسکریپت زیر:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#!/bin/bash # --value PATTERN -o PS_COMMAND_OPTIONS ##########investagiting argumens ###################### function help(){ echo "Usage: -h: help --help: help --velue PATTERN : specify a patern for looking for (mandatory) -o PS_COMMAND_OPTIONS: specifying a set of options for process management (mandatory)" } #############arg_process########################################## if [ "$1" = "--value" -a "$3" != "-o" -o "$1" != "--value" -a "$3" = "-o" -o ! $# -eq 4 ]; then help; exit; fi; ################################# for i in `ls -d /proc/*[0-9]*`; do number_of_used=`cat $i/environ 2> /dev/null | xargs -0 |awk -v e_v2=$2 'BEGIN{}{for (i = 0; i < NF; i++) print $i}' |awk -F= '{print $2}' |awk -v e_patt=$2 '{for (i = 0 ; i<NF; i++){if (match($1,e_patt)) num++;} }END{print num;}'` if [ ! -z $number_of_used ]; then echo -------------------Number of variables: $number_of_used------------------------------------------------------------------------------------------------------------------------- pid=`echo $i |awk -F/ '{print $3}'` header=`echo $4 |sed 's/,/ /g' ` echo $header ps_content=`ps --no-headers -p $pid -o $4 2> /dev/null` if [ $? -ne 0 ]; then help exit fi; echo $ps_content fi; done; |
برای استفاده از آن میتوان از عبارت زیر استفاده کرد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
root@debian:/home/mohsen/codes/grepenv# ./grepenv.sh --value mohsen -o cmd,user -------------------Number of variables: 3------------------------------------------------------------------------------------------------------------------------- cmd user /lib/systemd/systemd --user mohsen -------------------Number of variables: 8------------------------------------------------------------------------------------------------------------------------- cmd user awesome mohsen -------------------Number of variables: 7------------------------------------------------------------------------------------------------------------------------- cmd user /usr/bin/ssh-agent /usr/bin mohsen -------------------Number of variables: 8------------------------------------------------------------------------------------------------------------------------- cmd user /usr/bin/dbus-launch --exit mohsen -------------------Number of variables: 8------------------------------------------------------------------------------------------------------------------------- cmd user /usr/bin/dbus-daemon --fork mohsen -------------------Number of variables: 8------------------------------------------------------------------------------------------------------------------------- cmd user /usr/bin/python /usr/bin/te mohsen -------------------Number of variables: 5------------------------------------------------------------------------------------------------------------------------- cmd user /usr/lib/x86_64-linux-gnu/g mohsen -------------------Number of variables: 5------------------------------------------------------------------------------------------------------------------------- cmd user /usr/lib/gvfs/gvfsd mohsen -------------------Number of variables: 5------------------------------------------------------------------------------------------------------------------------- cmd user /usr/lib/gvfs/gvfsd-fuse /r mohsen -------------------Number of variables: 9------------------------------------------------------------------------------------------------------------------------- cmd user gnome-pty-helper mohsen -------------------Number of variables: 7------------------------------------------------------------------------------------------------------------------------- cmd user /bin/bash mohsen -------------------Number of variables: 7------------------------------------------------------------------------------------------------------------------------- cmd user su root -------------------Number of variables: 4------------------------------------------------------------------------------------------------------------------------- cmd user bash root -------------------Number of variables: 8------------------------------------------------------------------------------------------------------------------------- cmd user iceweasel mohsen -------------------Number of variables: 5------------------------------------------------------------------------------------------------------------------------- cmd user /usr/lib/at-spi2-core/at-sp mohsen -------------------Number of variables: 4------------------------------------------------------------------------------------------------------------------------- cmd user /opt/zebedee-2.4.1A/zebedee root -------------------Number of variables: 9------------------------------------------------------------------------------------------------------------------------- cmd user /usr/bin/pulseaudio --start mohsen -------------------Number of variables: 8------------------------------------------------------------------------------------------------------------------------- cmd user /usr/lib/chromium/chrome-sa mohsen -------------------Number of variables: 8------------------------------------------------------------------------------------------------------------------------- cmd user /opt/Telegram/Telegram mohsen -------------------Number of variables: 8------------------------------------------------------------------------------------------------------------------------- cmd user /usr/bin/python /usr/bin/zi mohsen -------------------Number of variables: 8------------------------------------------------------------------------------------------------------------------------- cmd user /usr/bin/python /usr/bin/zi mohsen -------------------Number of variables: 8------------------------------------------------------------------------------------------------------------------------- cmd user /usr/lib/libreoffice/progra mohsen -------------------Number of variables: 8------------------------------------------------------------------------------------------------------------------------- cmd user /usr/lib/libreoffice/progra mohsen -------------------Number of variables: 4------------------------------------------------------------------------------------------------------------------------- cmd user /bin/bash ./grepenv.sh --va root |
پارامتر اول یک عبارت برای جستجو میگیرد و پارامتر دوم همان option ها در فرمان ps هستند که برای شما نمایش داده شوند.
درواقع این فرمان در کل سیستم میگردد و این عبارت را در کل متغیرهای محیطی جسجتو میکند و اما چه برگرداند:
۱. پراسس هایی که آن را استفاده کردهاند.
۲. تعداد استفاده آن پراسسها از این عبارت.
نکته: کد ساده است و شما خود میتوانید آن را به دلخواه و نیاز خود تغییر دهید.
تمرین: برای چگونگی استفاده این اسکریپت برای پارامتر value– نام کاربری خود را پاس نمایید.
systemd در دبیان (شماره اول)
در April سال ۲۰۱۲ تشکل دبیان قبول کرد که به طور رسمی از systemd استفاده نماید. اولین Systemd-on-fedoraمرحله استفاده آن، فقط از دایمون systemd-logind در پاییز ۲۰۱۳ بود تا اینکه بالاخره در April سال ۲۰۱۴ به طور رسمی SysV جای خود بر روی مخزن unstable دبیان به systemd داد و قول دبیان مبنی بر این است که نسخه بعدی آن با کد jessie به طور کامل با systemd سازگار است.
در بالا ذکر شد مهاجرت به صورت فرآیندی(مرحلهای) صورت گرفته است. اما چرا بعضی از توزیعها منجمله دبیان زمانی که میخواهند یک مهاجرت سنگین در سطح low level انجام دهند احتیاط میکنند؟ بگذارید گزاره اصلی را پیشرفت systemd بگیریم.
systemd بر خلاف سیستمهای boot دیگر همانند Upstart یا SysV به شدت بر روی کل سیستم تأثیر میگذارد از جمله نقاطی که میتوان نام برد، کرنل، udev، D-Bus، ارتباطات شبکه و علی الخصوص اینکه بدلیل اینکه systemd یک سیستم بوت میباشد باید کل process های سیستم را مدیریت کند.
ادامه خواندن systemd در دبیان (شماره اول)