پروژه محقق نشده من شبکه 200 روتر MikroTik

پروژه محقق نشده من شبکه 200 روتر MikroTik

سلام به همه. این مقاله برای کسانی است که دستگاه های میکروتیک زیادی در ناوگان خود دارند و می خواهند حداکثر یکسان سازی را انجام دهند تا به هر دستگاه جداگانه متصل نشوند. در این مقاله پروژه ای را شرح خواهم داد که متاسفانه به دلیل عوامل انسانی به شرایط جنگی نرسید. به طور خلاصه: بیش از 200 روتر، راه اندازی سریع و آموزش کارکنان، یکپارچه سازی بر اساس منطقه، فیلتر کردن شبکه ها و هاست های خاص، امکان اضافه کردن آسان قوانین به همه دستگاه ها، ورود به سیستم و کنترل دسترسی.

آنچه در زیر توضیح داده شده است، تظاهر به یک مورد آماده نیست، اما امیدوارم هنگام برنامه ریزی شبکه های خود و به حداقل رساندن خطاها برای شما مفید باشد. شاید برخی نکات و راه حل ها به نظر شما کاملاً صحیح نباشد - اگر چنین است، در نظرات بنویسید. نقد در این صورت تجربه ای برای بیت المال مشترک خواهد بود. بنابراین، خواننده، نگاهی به نظرات بیندازید، شاید نویسنده اشتباه جدی کرده است - جامعه کمک خواهد کرد.

تعداد روترها 200-300 است که در شهرهای مختلف با کیفیت های مختلف اتصال به اینترنت پراکنده شده اند. لازم است همه چیز را به زیبایی انجام دهید و به طور واضح به مدیران محلی توضیح دهید که چگونه همه چیز کار می کند.

بنابراین، هر پروژه ای از کجا شروع می شود؟ البته با TK.

  1. سازماندهی طرح شبکه برای تمامی شعب با توجه به نیاز مشتری، تقسیم بندی شبکه (از 3 تا 20 شبکه در شعب بسته به تعداد دستگاه).
  2. راه اندازی دستگاه ها در هر شعبه. بررسی سرعت توان واقعی ارائه دهنده تحت شرایط عملیاتی مختلف.
  3. سازماندهی حفاظت از دستگاه، مدیریت لیست سفید، شناسایی خودکار حملات با لیست سیاه خودکار برای مدت زمان معین، به حداقل رساندن استفاده از ابزارهای فنی مختلف مورد استفاده برای رهگیری کنترل دسترسی و رد سرویس.
  4. سازماندهی اتصالات VPN ایمن با فیلتر شبکه با توجه به نیاز مشتری. حداقل 3 اتصال VPN از هر شعبه به مرکز.
  5. بر اساس نکات 1، 2. راه های بهینه برای ساخت VPN های مقاوم به خطا را انتخاب کنید. اگر به درستی توجیه شود، فناوری مسیریابی پویا می تواند توسط پیمانکار انتخاب شود.
  6. سازماندهی اولویت بندی ترافیک توسط پروتکل ها، پورت ها، هاست ها و سایر خدمات خاص مورد استفاده مشتری. (VOIP، هاست با خدمات مهم)
  7. سازماندهی نظارت و ثبت رویدادهای روتر برای پاسخگویی به کارکنان پشتیبانی فنی.

همانطور که می دانیم، در تعدادی از موارد مشخصات فنی بر اساس الزامات تهیه می شود. این الزامات را خودم بعد از گوش دادن به مشکلات اصلی تدوین کردم. او این احتمال را پذیرفت که شخص دیگری بتواند به این نکات رسیدگی کند.

برای برآوردن این الزامات از چه ابزارهایی استفاده می شود:

  1. ELK stack (پس از مدتی مشخص شد که به جای logstash از fluentd استفاده می شود).
  2. پاسخگو برای سهولت مدیریت و اشتراک گذاری دسترسی، از AWX استفاده خواهیم کرد.
  3. GITLAB. اینجا نیازی به توضیح نیست. بدون کنترل نسخه تنظیمات ما کجا خواهیم بود؟
  4. پاورشل. یک اسکریپت ساده برای نسل اولیه پیکربندی وجود خواهد داشت.
  5. ویکی Doku، برای نوشتن اسناد و راهنماها. در این مورد از habr.com استفاده می کنیم.
  6. نظارت از طریق zabbix انجام خواهد شد. یک نمودار اتصال نیز برای درک کلی در آنجا ترسیم خواهد شد.

نقاط راه اندازی EFK

در مورد اولین نکته، من فقط به تشریح ایدئولوژی می پردازم که بر اساس آن شاخص ها ساخته می شوند. بسیاری وجود دارد
مقالات عالی در مورد راه اندازی و دریافت گزارش از دستگاه های اجرا کننده mikrotik.

به چند نکته می پردازم:

1. با توجه به نمودار، دریافت لاگ از مکان های مختلف و در پورت های مختلف قابل بررسی است. برای این کار از یک log aggregator استفاده می کنیم. ما همچنین می خواهیم برای همه روترها گرافیک جهانی با قابلیت اشتراک گذاری دسترسی ایجاد کنیم. سپس ایندکس ها را به صورت زیر می سازیم:

در اینجا یک قطعه از پیکربندی با fluentd است elasticsearch را تایپ کنید
logstash_format true
index_name mikrotiklogs.north
logstash_prefix mikrotiklogs.north
flush_interval 10 ثانیه
میزبان الاستیک: 9200
پورت 9200

به این ترتیب می‌توانیم روترها را با هم ترکیب کنیم و طبق نقشه قطعه‌سازی کنیم - mikrotiklogs.west، mikrotiklogs.south، mikrotiklogs.east. چرا آن را اینقدر پیچیده می کنید؟ ما می دانیم که 200 دستگاه یا بیشتر خواهیم داشت. شما نمی توانید همه چیز را پیگیری کنید. با نسخه 6.8 elasticsearch، تنظیمات امنیتی در دسترس ما هستند (بدون خرید مجوز)، به این ترتیب می‌توانیم حقوق مشاهده را بین کارمندان پشتیبانی فنی یا مدیران سیستم محلی توزیع کنیم.
جداول، نمودارها - در اینجا فقط باید موافقت کنید - یا از همان موارد استفاده کنید، یا هر کس آنچه را که برای او راحت است انجام می دهد.

2. با ورود به سیستم. اگر قوانین فایروال ورود به سیستم را فعال کنیم، نام ها را بدون فاصله ایجاد می کنیم. مشاهده می شود که با استفاده از یک کانفیگ ساده در fluentd می توانیم داده ها را فیلتر کرده و پنل های راحت بسازیم. تصویر زیر روتر خانه من است.

پروژه محقق نشده من شبکه 200 روتر MikroTik

3. با فضای اشغال شده و سیاهههای مربوط. به طور متوسط، با 1000 پیام در ساعت، لاگ ها 2-3 مگابایت در روز را اشغال می کنند، که می بینید، این مقدار زیاد نیست. Elasticsearch نسخه 7.5.

ANSIBLE.AWX

خوشبختانه ما یک ماژول آماده برای روترها داریم
من در مورد AWX اشاره کردم، اما دستورات زیر فقط در مورد ansible به شکل خالص آن هستند - فکر می کنم برای کسانی که با ansible کار کرده اند، استفاده از awx از طریق gui مشکلی نخواهد داشت.

صادقانه بگویم، قبل از این، من به راهنمای دیگری که در آن از ssh استفاده می کردند نگاه کردم، و همه آنها با زمان پاسخگویی و یک سری مشکلات دیگر مشکلات مختلفی داشتند. تکرار می‌کنم، به دعوا نرسید، این اطلاعات را به عنوان آزمایشی در نظر بگیرید که بیش از 20 روتر نیست.

باید از گواهی یا حساب کاربری استفاده کنیم. تصمیم با شماست، من برای گواهینامه هستم. چند نکته ظریف در مورد حقوق من حقوق نوشتن را می دهم - حداقل "تنظیم مجدد" کار نخواهد کرد.

هیچ مشکلی در تولید، کپی و وارد کردن گواهی وجود ندارد:

فهرست دستورات مختصرروی کامپیوتر شما
ssh-keygen -t RSA، به سوالات پاسخ دهید، کلید را ذخیره کنید.
کپی در mikrotik:
کلیدهای ssh کاربر وارد کردن public-key-file=id_mtx.pub user=ansible
ابتدا باید یک حساب کاربری ایجاد کنید و حقوقی را به آن اختصاص دهید.
بررسی اتصال با استفاده از گواهی
ssh -p 49475 -i /keys/mtx [ایمیل محافظت شده]

ثبت نام vi /etc/ansible/hosts
MT01 ansible_network_os=روترها ansible_ssh_port=49475 ansible_ssh_user= ansible
MT02 ansible_network_os=روترها ansible_ssh_port=49475 ansible_ssh_user= ansible
MT03 ansible_network_os=روترها ansible_ssh_port=49475 ansible_ssh_user= ansible
MT04 ansible_network_os=روترها ansible_ssh_port=49475 ansible_ssh_user= ansible

خوب، یک نمونه کتاب بازی: - نام: add_work_sites
میزبان: testmt
سریال: 1
اتصال: network_cli
remote_user: mikrotik.west
collect_facts: بله
وظایف:
- نام: افزودن Work_sites
routeros_command:
دستورات:
— /ip firewall address-list add address=gov.ru list=work_sites comment=Ticket665436_Ochen_nado
— /ip firewall address-list add address=habr.com list=work_sites comment=for_habr

همانطور که از پیکربندی بالا می بینید، ایجاد کتاب های بازی خود کار دشواری نیست. کافی است به cli mikrotik خوب مسلط شوید. بیایید موقعیتی را تصور کنیم که در آن باید لیست آدرس را با داده های خاص در همه روترها حذف کنید، سپس:

پیدا کنید و حذف کنید/ip firewal address-list remove [find where list="gov.ru"]

من عمداً کل لیست فایروال را در اینجا وارد نکردم زیرا ... برای هر پروژه فردی خواهد بود. اما یک چیز را با اطمینان می توانم بگویم، فقط از لیست آدرس استفاده کنید.

طبق گفته GITLAB همه چیز روشن است. به این نکته نمی پردازم. همه چیز برای وظایف فردی، قالب ها، کنترل کننده ها زیبا است.

PowerShell با

3 فایل در اینجا وجود خواهد داشت. چرا پاورشل؟ شما می توانید هر ابزاری را برای ایجاد تنظیمات انتخاب کنید، هر چه برای شما راحت تر است. در این مورد، همه ویندوز را روی رایانه شخصی خود دارند، پس چرا وقتی powershell راحت تر است، این کار را در bash انجام دهید. کدام یک راحت تر است؟

خود فیلمنامه (ساده و قابل فهم):[cmdletBinding()] Param(
[Parameter(Mandatory=$true)] [string]$EXTERNALIPADDDRESS،
[Parameter(Mandatory=$true)] [string]$EXTERNALIPROUTE،
[Parameter(Mandatory=$true)] [string]$BWorknets,
[Parameter(Mandatory=$true)] [string]$CWorknets,
[Parameter(Mandatory=$true)] [string]$BVoipNets,
[Parameter(Mandatory=$true)] [string]$CVoipNets,
[Parameter(Mandatory=$true)] [string]$CClientss,
[Parameter(Mandatory=$true)] [string]$BVPNWORKs,
[Parameter(Mandatory=$true)] [string]$CVPNWORKs,
[Parameter(Mandatory=$true)] [string]$BVPNCLIENTSs,
[Parameter(Mandatory=$true)] [string]$cVPNCLIENTSs,
[Parameter(Mandatory=$true)] [string]$NAMEROUTER،
[Parameter(Mandatory=$true)] [string]$ServerCertificates,
[Parameter(Mandatory=$true)] [string]$infile,
[Parameter(Mandatory=$true)] [string]$outfile
)

Get-Content $infile | Foreach-Object {$_.Replace("EXTERNIP", $EXTERNALIPADDRESS)} |
Foreach-Object {$_.Replace("EXTROUTE", $EXTERNALIPROUTE)} |
Foreach-Object {$_.Replace("BWorknet", $BWorknets)} |
Foreach-Object {$_.Replace("CWorknet", $CWorknets)} |
Foreach-Object {$_.Replace("BVoipNet", $BVoipNets)} |
Foreach-Object {$_.Replace("CVoipNet", $CVoipNets)} |
Foreach-Object {$_.Replace("CClients", $CClientss)} |
Foreach-Object {$_.Replace("BVPNWORK", $BVPNWORKs)} |
Foreach-Object {$_.Replace("CVPNWORK", $CVPNWORKs)} |
Foreach-Object {$_.Replace("BVPNCLIENTS", $BVPNCLIENTSs)} |
Foreach-Object {$_.Replace("CVPNCLIENTS", $cVPNCLIENTSs)} |
Foreach-Object {$_.Replace("MYNAMERROUTER", $NAMEROUTER)} |
Foreach-Object {$_.Replace("ServerCertificate", $ServerCertificates)} | Set-Content $outfile

لطفا مرا ببخشید، من نمی توانم همه قوانین را پست کنم زیرا ... خیلی زیبا نخواهد بود شما می توانید قوانین را خودتان با هدایت بهترین شیوه ها تنظیم کنید.

به عنوان مثال، در اینجا لیستی از پیوندهایی است که من دنبال کردم:wiki.mikrotik.com/wiki/Manual:Securing_Your_Router
wiki.mikrotik.com/wiki/Manual: IP / فایروال / فیلتر
wiki.mikrotik.com/wiki/Manual:OSPF-نمونه ها
wiki.mikrotik.com/wiki/Drop_port_scanners
wiki.mikrotik.com/wiki/Manual: Winbox
wiki.mikrotik.com/wiki/Manual:Upgrading_RouterOS
wiki.mikrotik.com/wiki/Manual:IP/Fasttrack - در اینجا باید بدانید که وقتی fasttrack فعال است، اولویت بندی ترافیک و قوانین شکل دهی کار نخواهد کرد - برای دستگاه های ضعیف مفید است.

نمادهای متغیرها:شبکه های زیر به عنوان مثال در نظر گرفته شده است:
192.168.0.0/24 شبکه کاری
172.22.4.0/24 شبکه VOIP
شبکه 10.0.0.0/24 برای مشتریان بدون دسترسی به شبکه محلی
192.168.255.0/24 شبکه VPN برای شعب بزرگ
172.19.255.0/24 شبکه VPN برای کوچک

آدرس شبکه از 4 عدد اعشاری به ترتیب ABCD تشکیل شده است، جایگزینی بر اساس همان اصل کار می کند، اگر در هنگام راه اندازی B بخواهد، به این معنی است که باید عدد 192.168.0.0 را برای شبکه 24/0 و برای C وارد کنید. = 0.
$EXTERNALIPADDDRESS - آدرس اختصاصی از ارائه دهنده.
$EXTERNALIPROUTE - مسیر پیش فرض به شبکه 0.0.0.0/0
$BWorknets - شبکه کار، در مثال ما 168 خواهد بود
$CWorknets - شبکه کاری، در مثال ما 0 خواهد بود
$BVoipNets - شبکه VOIP در مثال ما در اینجا 22
$CVoipNets - شبکه VOIP در مثال ما در اینجا 4
$CClientss - شبکه برای مشتریان - فقط دسترسی به اینترنت، در مورد ما اینجا 0
$BVPNWORKs - شبکه VPN برای شاخه های بزرگ، در مثال 20 ما
$CVPNWORKs - شبکه VPN برای شاخه های بزرگ، در مثال ما 255
$BVPNCLIENTS - شبکه VPN برای شاخه های کوچک، به معنی 19
$CVPNCLIENTS - شبکه VPN برای شاخه های کوچک به معنی 255
$NAMEROUTER - نام روتر
$ServerCertificate - نام گواهی که قبلاً وارد کرده اید
$infile - مسیر فایلی را که پیکربندی را از آن می خوانیم مشخص کنید، به عنوان مثال D:config.txt (ترجیحاً مسیر انگلیسی بدون نقل قول و فاصله)
$outfile - مسیر ذخیره آن را مشخص کنید، برای مثال D:MT-test.txt

من به دلایل واضح آدرس های موجود در نمونه ها را عمدا تغییر داده ام.

من نکته مربوط به تشخیص حملات و رفتار غیرعادی را از دست دادم - این سزاوار یک مقاله جداگانه است. اما شایان ذکر است که در این دسته می‌توانید از مقادیر داده‌های نظارتی Zabbix + داده‌های curl پردازش شده از elasticsearch استفاده کنید.

به چه نکاتی باید توجه کرد:

  1. طرح شبکه بهتر است بلافاصله آن را به صورت خوانا بنویسید. اکسل کافی خواهد بود. متأسفانه، من اغلب می بینم که شبکه ها بر اساس اصل "یک شعبه جدید ظاهر شده است، اینجا / 24 برای شما" ساخته شده اند. هیچ‌کس نمی‌داند که چه تعداد دستگاه در یک مکان معین انتظار می‌رود یا اینکه آیا رشد بیشتری وجود خواهد داشت. به عنوان مثال، یک فروشگاه کوچک افتتاح شد که در ابتدا مشخص بود که دستگاه بیش از 10 نخواهد بود، چرا /24 را اختصاص دهید؟ برای شاخه های بزرگ، برعکس، آنها /24 را اختصاص می دهند و 500 دستگاه وجود دارد - می توانید به سادگی یک شبکه اضافه کنید، اما می خواهید همه چیز را یکباره فکر کنید.
  2. قوانین فیلترینگ اگر پروژه فرض کند که جداسازی شبکه ها و حداکثر تقسیم بندی وجود خواهد داشت. بهترین شیوه ها در طول زمان تغییر می کنند. قبلاً یک شبکه رایانه شخصی و یک شبکه چاپگر تقسیم شده بودند، اما اکنون تقسیم نکردن این شبکه ها کاملاً طبیعی است. ارزش آن را دارد که از عقل سلیم استفاده کنید و زیرشبکه های زیادی را در جایی که به آنها نیاز ندارید ایجاد نکنید و همه دستگاه ها را در یک شبکه ترکیب نکنید.
  3. تنظیمات "طلایی" در همه روترها. آن ها اگر در مورد برنامه ای تصمیم گرفته اید. ارزش آن را دارد که همه چیز را فوراً پیش بینی کنید و سعی کنید مطمئن شوید که همه تنظیمات یکسان هستند - فقط لیست آدرس و آدرس های IP متفاوت است. در صورت بروز مشکل، زمان رفع اشکال کمتر خواهد شد.
  4. اهمیت مسائل سازمانی کمتر از مسائل فنی نیست. اغلب کارمندان تنبل این توصیه ها را "به صورت دستی" و بدون استفاده از تنظیمات و اسکریپت های آماده انجام می دهند که در نهایت منجر به مشکلاتی می شود.

با مسیریابی پویا OSPF با تقسیم منطقه استفاده شد. اما این یک میز آزمایش است؛ تنظیم چنین چیزهایی در شرایط جنگی جالب تر است.

امیدوارم هیچکس از اینکه تنظیمات روتر را پست نکردم ناراحت نشود. من فکر می کنم که پیوندها کافی خواهد بود و سپس همه چیز به نیازها بستگی دارد. و البته آزمایشات، آزمایشات بیشتری مورد نیاز است.

آرزو می کنم همه در سال جدید پروژه های خود را محقق کنند. ممکن است دسترسی اعطا شده با شما باشد!!!

منبع: www.habr.com

اضافه کردن نظر