تنظیمات امنیتی

این بخش شامل تمامی تنظیمات و دستورات امنیتی در روتر سودار است که به شما کمک می‌کند شبکه خود را در برابر تهدیدات مختلف محافظت کنید.


مدیریت دسترسی و احراز هویت

بلاک کردن IP

با استفاده از دستورات زیر می توان تنظیم کرد اگر کاربری رمز عبور برای اتصال ssh اشتباه وارد کرد ip آن کاربر بلاک شود و نتواند ssh بزند

در مثال زیر اگر کاربر ۵ بار در مدت ۶۰ ثانیه رمز عبور ssh را اشتباه وارد کند به مدت 120 ثانیه بلاک خواهد شد .

soodar(config)# login block-for 120 attempts 5 within 60

توجه

اگر این تنظیم انجام نشود بصورت پیش اگر در مدت 60 ثانیه 5 بار لاگین ناموفق رخ دهد ip به مدت 600 ثانیه بلاک خواهد شد . در ضمن لاگین های موفق counter را صفر نمی کند یعنی اگر در بازه 60 ثانیه 4 بار لاگین ناموفق داشته باشد و سپس 1 لاگین موفق داشته باشد و سپس 1 لاگین ناموفق ، باز هم IP بلاک خواهد شد .

به کمک دستور زیر می توان ip های پلاک شده را unblock کرد.
می توانید با وارد کردن آدرس ip مورد نظر آن را unblock کنید یا با استفاده از گزینه all همه ip های بلاک شده را باز کنید .

soodar(config)# login unblock 
  A.B.C.D   Unban a blocked conenction
  X:X::X:X  IPv4 address of banned connection
  all       IPv6 address of banned connection

show login failure

می توانید تلاش های ناموفقی که برای لاگین کردن به روتر انجام شده است را مشاهده کنید . چه از طریق ssh و چه از طریق (پورت سریال)console . این اطلاعات فقط برای یک ماه اخیر نگهداری می شود البته در لاگ های ssh وجود دارد

soodar# show login failures 
admin	ssh:notty	192.168.1.30	Sun Jun 11 10:34
admin	ssh:notty	192.168.1.30	Sun Jun 11 10:34
admin	ssh:notty	192.168.1.30	Sun Jun 11 10:34
admin	ssh:notty	192.168.1.20	Wed Jun 7 10:43
admin	ssh:notty	192.168.1.30	Wed Jun 7 10:30
admin	ssh:notty	192.168.1.20	Tue Jun 6 15:14
iman	ssh:notty	192.168.1.20	Tue Jun 6 15:13
admin	ssh:notty	192.168.1.30	Thu Jun 1 08:17
admin	ssh:notty	192.168.1.30	Thu Jun 1 08:17
admin	ssh:notty	192.168.1.30	Thu Jun 1 08:17
admin	ssh:notty	192.168.1.30	Thu Jun 1 08:11
soodar# 

show user

کاربرانی در حال حاضر به روتر لاگین کرده اند را نمایش می دهد

soodar# sh user

       Number   Line      User    Peer Address        Session   
 ---------------------------------------------------------------
   *   0        SSH       admin   192.168.1.3:34718   c5        
       1        Console   admin       ---             c6        

clear line

می توانید یک کاربر را با شماره tty line آن که در دستور قبل مشخص است را از cli روتر بیرون کنید و ارتباط او با روتر قطع شود

soodar# clear line 1
[Ok]
informational-SOOSYS: session c6(0.0.0.0:0) terminated by user admin(192.168.1.3:34718)
soodar# 

مدیریت گذرواژه‌ها

SoodarOS توسط ۳ سطح گذرواژه محافظت می‌شود:

  1. گذرواژه دسترسی (Access password): برای ورود به روتر

  2. گذرواژه فعال‌سازی (Enable password): برای ورود به حالت enable

  3. گذرواژه پیکربندی (Config password): برای ورود به حالت config

گذرواژه دسترسی (Access Password)

این گذرواژه اصلی برای ورود با کاربر است. بدون داشتن گذرواژه دسترسی، هیچ کس نمی‌تواند به روتر دسترسی داشته باشد.

soodar# password

گذرواژه فعال‌سازی (Enable Password)

Admin را در حالت enable قرار می‌دهد. این گذرواژه هنگامی که admin دستور enable را صادر می‌کند، درخواست می‌شود.

تنظیم گذرواژه enable:

soodar(config)# enable password PASSWORD

غیرفعال کردن گذرواژه enable:

soodar(config)# no enable password

گذرواژه پیکربندی (Config Password)

زمانی که admin دستور configure را در خط فرمان وارد می‌کند تا وارد حالت config شود، درخواست می‌شود.

تنظیم گذرواژه config:

soodar(config)# enable config password PASSWORD

غیرفعال کردن گذرواژه config:

soodar(config)# no enable config password

بازنشانی گذرواژه دسترسی

در صورتی که گذرواژه دسترسی فراموش شد، برای تنظیم مجدد آن باید از ایمیج ریکاوری سودار استفاده کنید.

مراحل بازیابی:

  1. ایمیج ریکاوری را روی یک فلش به صورت bootable بنویسید

  2. فلش را به روتر متصل کنید

  3. روتر را از روی فلش بوت کنید

  4. بعد از بوت شدن، گزینه‌هایی برای ریست کردن مشاهده می‌کنید

  5. می‌توانید رمز عبور و همچنین تنظیمات روتر را ریست کنید

نکات مهم

  • با ریست کردن رمز عبور، رمز عبور شما به admin تغییر می‌کند

  • ریست کردن تنظیمات فقط تنظیمات روتری را به حالت پیش‌فرض برمی‌گرداند و تنظیمات سیستمی مانند رمز عبور کاربر، ساعت سیستم و کلیدها تغییر نمی‌کند

  • با ریست کردن تنظیمات، در اینترفیس ge0 (اولین اینترفیس روتر) IP به آدرس 192.168.1.55/24 تنظیم می‌شود

حداقل طول گذرواژه

برای مجبور کردن کاربران به تنظیم گذرواژه‌های قوی، admin می‌تواند حداقل طول برای گذرواژه‌ها را تنظیم کند.

اعمال حداقل طول گذرواژه:

soodar(config)# security passwords min-length 8

حذف محدودیت طول گذرواژه:

soodar(config)# no security passwords min-length

نکته

حداقل طول پیش‌فرض ۸ کاراکتر برای گذرواژه‌ها تنظیم شده است.

رمزنگاری گذرواژه

برای امنیت بیشتر، گذرواژه‌ها در فایل پیکربندی رمزنگاری می‌شوند.

soodar(config)# service password-encryption

نکته

این ویژگی به طور پیش‌فرض فعال است.


امنیت SSH

پیکربندی SSH Server

SSH server به طور پیش‌فرض فعال است و روی پورت 22 اجرا می‌شود.

بررسی وضعیت SSH:

soodar# show ip ssh
SSH Enabled - version 2.0
Authentication timeout: 120 secs; Authentication retries: 3
Server port: 22

تغییر پورت SSH

برای امنیت بیشتر می‌توانید پورت SSH را تغییر دهید:

soodar(config)# ip ssh port 2222
soodar(config)# write

محدوده پورت مجاز: 2000 تا 10000

احراز هویت با Public Key

برای امنیت بیشتر، می‌توانید از احراز هویت با کلید عمومی استفاده کنید:

soodar(config)# ip ssh pubkey-chain
soodar(conf-ssh-pubkey)# username admin
soodar(conf-ssh-pubkey-user)# key ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC7Z...
soodar(conf-ssh-pubkey-user)# exit
soodar(conf-ssh-pubkey)# exit
soodar(config)# write

مشاهده کلیدهای اضافه شده:

soodar# show ip ssh pubkey-chain
admin:
  1: kgxOYdwjBqPN90V2dLGOxwWSVrKQodgeZhjhaN0+NGc user@host (ssh-rsa)

محدود کردن دسترسی SSH با ACL

می‌توانید دسترسی SSH را به IP های خاص محدود کنید:

soodar(config)# access-list 10 permit 10.0.0.0 0.0.0.255
soodar(config)# access-list 10 deny any
soodar(config)# line vty 0 4
soodar(config-line)# access-class 10 in
soodar(config-line)# exit
soodar(config)# write

بهترین شیوه‌های امنیتی SSH

  1. استفاده از Strong Passwords: از گذرواژه‌های قوی استفاده کنید

  2. استفاده از پورت غیراستاندارد: پورت SSH را تغییر دهید

  3. محدود کردن دسترسی با ACL: فقط IP های مجاز را اجازه دهید

  4. استفاده از Public Key: به جای password از کلید عمومی استفاده کنید

  5. فعال‌سازی Logging: لاگ‌های SSH را فعال کنید


فیلترینگ ترافیک با ACL

Access Control List (ACL) یک مکانیزم قدرتمند برای کنترل و فیلتر کردن ترافیک شبکه است.

تعریف ACL

soodar(config)# ip access-list SSH-FILTER
soodar(config-nacl)# 1 permit tcp 1.1.1.20/32 2.1.1.10/32 eq 22
soodar(config-nacl)# 2 deny tcp 1.1.1.10/32 2.1.1.10/32 eq 22
soodar(config-nacl)# permit any any

اعمال ACL روی اینترفیس

برای ترافیک ورودی:

soodar(config)# interface ge0
soodar(config-if)# ip access-group SSH-FILTER in

برای ترافیک خروجی:

soodar(config-if)# ip access-group SSH-FILTER out

ACL Stateful

در ACL stateful، نشست‌ها به صورت خودکار تشخیص داده می‌شوند و رول برگشت به صورت خودکار اضافه می‌شود:

soodar(config)# ip access-list STATEFUL-ACL
soodar(config-nacl)# permit tcp 1.1.1.10/32 2.1.1.10/32 eq 443 reflect
soodar(config-nacl)# permit tcp 1.2.1.10/32 2.1.1.10/32 eq 443 reflect

توجه

وقتی از رول‌های reflect استفاده می‌کنید، باید ACL را در اینترفیس در هر دو جهت in و out اعمال کنید.

ACL با نام سرویس

برای راحتی کار، می‌توانید از نام سرویس‌های پرکاربرد استفاده کنید:

soodar(config)# ip access-list WEB-FILTER
soodar(config-nacl)# deny tcp any any service http
soodar(config-nacl)# deny tcp any any service https
soodar(config-nacl)# permit any any

Port Security (امنیت پورت)

امنیت پورت یک ویژگی امنیتی در لایه 2 است که دسترسی به پورت‌های روتر را با کنترل و محدود کردن آدرس‌های MAC مجاز کنترل می‌کند.

فعال‌سازی Sticky MAC Address

soodar(config)# interface ge1
soodar(config-if)# port-security mac-address sticky

تعیین حداکثر تعداد MAC

soodar(config-if)# port-security maximum 3

تنظیم Script برای Violation

هنگام شناسایی تخلف امنیتی، می‌توانید یک script سفارشی را اجرا کنید:

soodar(config-if)# port-security violation script:portsec1

نکته

Script باید با فرمت script:name و بدون مسیر Linux تعریف شود. محتوای script باید دستورات Soodar باشد نه Bash.

نمایش وضعیت Port Security

soodar# show port-security interface ge1
soodar# show port-security address ge1

پاک کردن Violation

soodar# clear port-security violation ge1

uRPF (Unicast Reverse Path Forwarding)

uRPF مکانیزمی است به منظور جلوگیری از حملات جعل IP و یا همان IP Spoofing.

تنظیم uRPF

soodar(config)# interface ge0
soodar(config-if)# ip verify unicast source reachable-via rx

گزینه‌های موجود:

  • any: Source باید در جدول مسیریابی وجود داشته باشد (مهم نیست از کدام interface دریافت شود)

  • rx: Source باید در جدول مسیریابی موجود باشد و دقیقاً از همان interface که route داریم دریافت شود

توصیه

حالت rx امنیت بیشتری دارد و برای جلوگیری از IP Spoofing توصیه می‌شود.


Session Management

Session Timeout

می‌توان برای session هایی که به shell روتر ایجاد می‌شود timeout مشخص کرد:

soodar(config)# line vty
soodar(config-line)# exec-timeout 1 0

فرمت: exec-timeout <minutes> <seconds>

در مثال بالا، بعد از غیرفعال بودن نشست به مدت ۱ دقیقه، نشست به طور خودکار بسته خواهد شد.

نمایش کاربران متصل

soodar# show user

       Number   Line      User    Peer Address        Session   
 ---------------------------------------------------------------
   *   0        SSH       admin   192.168.1.3:34718   c5        
       1        Console   admin       ---             c6        

قطع اتصال کاربر

soodar# clear line 1

لاگ‌های امنیتی

فعال‌سازی Logging

soodar(config)# log syslog errors

تنظیم Log Server

soodar(config)# log syslog http://192.168.1.55 loki
soodar(config)# log syslog 192.168.1.55 port 3000 tcp
soodar(config)# log syslog 192.168.1.55 port 3100 udp

مشاهده لاگ‌های امنیتی

soodar# show log all
soodar# show log all follow
soodar# show logging | include SSH

Log Rotation

soodar(config)# log rotate max-file-size 10M
soodar(config)# log rotate max-files 10
soodar(config)# log rotate max-retention 30

تونل‌های امن (IPSec و Wireguard)

IPSec

IPSec مجموعه‌ای از پروتکل‌ها برای ایمن‌سازی ارتباطات شبکه‌ای در لایه اینترنت است.

مثال پیکربندی IPSec با PSK:

soodar(config)# crypto ikev2 proposal IKE-PROPOSAL
soodar(c/crypto/ikev2/proposal/IKE-PROPOSAL)# encryption aes-256
soodar(c/crypto/ikev2/proposal/IKE-PROPOSAL)# integrity sha-256
soodar(c/crypto/ikev2/proposal/IKE-PROPOSAL)# group 20
soodar(c/crypto/ikev2/proposal/IKE-PROPOSAL)# exit

soodar(config)# crypto ikev2 keyring KEYRING-1
soodar(c/crypto/ikev2/keyring/KEYRING-1)# peer REMOTE
soodar(c/crypto/ikev2/keyring/KEYRING-1/peer/REMOTE)# address 200.1.2.2
soodar(c/crypto/ikev2/keyring/KEYRING-1/peer/REMOTE)# identity address 222.2.2.2
soodar(c/crypto/ikev2/keyring/KEYRING-1/peer/REMOTE)# pre-shared-key mysecret123
soodar(c/crypto/ikev2/keyring/KEYRING-1/peer/REMOTE)# exit
soodar(c/crypto/ikev2/keyring/KEYRING-1)# exit

soodar(config)# crypto ikev2 profile VPN
soodar(c/crypto/ikev2/profile/VPN)# identity local address 222.1.1.1
soodar(c/crypto/ikev2/profile/VPN)# match identity remote address 222.2.2.2
soodar(c/crypto/ikev2/profile/VPN)# keyring local KEYRING-1
soodar(c/crypto/ikev2/profile/VPN)# proposal IKE-PROPOSAL
soodar(c/crypto/ikev2/profile/VPN)# exit

soodar(config)# crypto ipsec transform-set IPSEC-TS esp hmac sha-256 cipher aes-256
soodar(c/crypto/trans/IPSEC-TS)# mode transport
soodar(c/crypto/trans/IPSEC-TS)# exit

soodar(config)# crypto ipsec profile IPSEC-PROFILE
soodar(ipsec-profile)# set transform-set IPSEC-TS
soodar(ipsec-profile)# set ikev2-profile VPN
soodar(ipsec-profile)# exit

soodar(config)# interface tunnel10
soodar(config-if)# tunnel source 200.1.2.1
soodar(config-if)# tunnel destination 200.1.2.2
soodar(config-if)# tunnel protection ipsec profile IPSEC-PROFILE
soodar(config-if)# ip address 10.0.0.1/24
soodar(config-if)# exit
soodar(config)# write

بررسی وضعیت IPSec:

soodar# show crypto ikev2 sa
soodar# show crypto ipsec sa

Wireguard

Wireguard یک پروتکل VPN مدرن و سریع است.

مثال پیکربندی Wireguard:

soodar(config)# interface wireguard wg0
soodar(config-if)# private-key <PRIVATE_KEY&gt;
soodar(config-if)# listen-port 51820
soodar(config-if)# address 10.0.0.1/24
soodar(config-if)# peer REMOTE-PEER
soodar(config-if-peer)# public-key <PUBLIC_KEY&gt;
soodar(config-if-peer)# allowed-ips 10.0.0.2/32
soodar(config-if-peer)# endpoint 200.1.2.2:51820
soodar(config-if-peer)# exit
soodar(config-if)# exit
soodar(config)# write

PKI (Public Key Infrastructure)

ایجاد کلید RSA

soodar(config)# crypto key generate rsa label soodar-key modulus 2048

ایجاد Trustpoint

soodar(config)# crypto pki trustpoint soodar-cert
soodar(ca-trustpoint)# rsakeypair soodar-key
soodar(ca-trustpoint)# subject-name C=IR, O=Soodar, CN=soodar.local.net
soodar(ca-trustpoint)# subject-alt-name soodar.local.net
soodar(ca-trustpoint)# exit

احراز هویت CA

soodar(config)# crypto pki authenticate soodar-cert

ایجاد CSR

soodar(config)# crypto pki enroll soodar-cert

وارد کردن گواهینامه

soodar(config)# crypto pki import soodar-cert certificate

نمایش گواهینامه

soodar# show crypto pki certificate soodar-cert

سرویس‌های امنیتی سیستم

Fail2Ban

Fail2Ban سرویسی است که به صورت خودکار IP های مشکوک را بلاک می‌کند.

بررسی وضعیت Fail2Ban:

soodar# show system service status fail2ban

SNMP Security

برای امنیت SNMP، از کاربران با احراز هویت استفاده کنید:

soodar(config)# agentx
soodar(config)# snmp-server user USER auth sha PASSWORD priv aes PRIV_PASSWORD

بهترین شیوه‌های امنیتی

1. مدیریت گذرواژه‌ها

  • ✅ استفاده از گذرواژه‌های قوی (حداقل ۸ کاراکتر)

  • ✅ تغییر دوره‌ای گذرواژه‌ها

  • ✅ استفاده از گذرواژه‌های متفاوت برای سطوح مختلف

  • ✅ فعال‌سازی رمزنگاری گذرواژه

2. امنیت SSH

  • ✅ استفاده از Public Key Authentication

  • ✅ تغییر پورت SSH از 22

  • ✅ محدود کردن دسترسی با ACL

  • ✅ فعال‌سازی Logging

3. فیلترینگ ترافیک

  • ✅ استفاده از ACL برای محدود کردن دسترسی

  • ✅ استفاده از uRPF برای جلوگیری از IP Spoofing

  • ✅ استفاده از Port Security برای کنترل دسترسی در لایه 2

4. نظارت و لاگ‌گیری

  • ✅ فعال‌سازی Logging برای تمام رویدادهای امنیتی

  • ✅ ارسال لاگ‌ها به سرور مرکزی

  • ✅ بررسی منظم لاگ‌های ورود ناموفق

  • ✅ تنظیم Log Rotation

5. تونل‌های امن

  • ✅ استفاده از IPSec برای Site-to-Site VPN

  • ✅ استفاده از Wireguard برای VPN های سریع

  • ✅ استفاده از گواهینامه‌های دیجیتال (PKI) به جای PSK

6. مدیریت Session

  • ✅ تنظیم Session Timeout مناسب

  • ✅ نظارت بر کاربران متصل

  • ✅ قطع اتصال کاربران غیرفعال


دستورات مرجع سریع

مدیریت دسترسی

دستور

کاربرد

login block-for <time> attempts <count> within <window>

بلاک کردن IP پس از تلاش‌های ناموفق

login unblock <ip|all>

باز کردن بلاک IP

show login failures

نمایش تلاش‌های ورود ناموفق

show user

نمایش کاربران متصل

clear line <number>

قطع اتصال کاربر

مدیریت گذرواژه

دستور

کاربرد

password

تغییر گذرواژه دسترسی

enable password <PASSWORD>

تنظیم گذرواژه enable

enable config password <PASSWORD>

تنظیم گذرواژه config

security passwords min-length <LENGTH>

تنظیم حداقل طول گذرواژه

service password-encryption

فعال‌سازی رمزنگاری گذرواژه

امنیت SSH

دستور

کاربرد

show ip ssh

نمایش وضعیت SSH

ip ssh port <PORT>

تغییر پورت SSH

ip ssh pubkey-chain

مدیریت Public Keys

show ip ssh pubkey-chain

نمایش Public Keys

فیلترینگ

دستور

کاربرد

ip access-list <NAME>

ایجاد ACL

ip access-group <NAME> [in|out]

اعمال ACL روی interface

ip verify unicast source reachable-via [any|rx]

فعال‌سازی uRPF

Port Security

دستور

کاربرد

port-security mac-address sticky

فعال‌سازی Sticky MAC

port-security maximum <1-100>

تعیین حداکثر تعداد MAC

port-security violation script:<name>

تنظیم Script برای Violation

show port-security interface [IF]

نمایش وضعیت Port Security

clear port-security violation <IF>

پاک کردن Violation

Session Management

دستور

کاربرد

line vty

ورود به حالت پیکربندی VTY

exec-timeout <min> <sec>

تنظیم Session Timeout


خلاصه

با استفاده از تنظیمات امنیتی ارائه شده در این بخش، می‌توانید:

محافظت در برابر حملات با بلاک کردن IP های مشکوک
کنترل دسترسی با مدیریت گذرواژه‌ها و SSH
فیلترینگ ترافیک با ACL و uRPF
امنیت لایه 2 با Port Security
تونل‌های امن با IPSec و Wireguard
نظارت و لاگ‌گیری برای تشخیص و تحلیل تهدیدات

با رعایت بهترین شیوه‌های امنیتی و پیکربندی صحیح، می‌توانید یک زیرساخت امن و پایدار برای شبکه خود ایجاد کنید.