My folder vip
76 subscribers
202 photos
82 videos
622 files
499 links
آرشیو یادگیری هک/امنیت

اینجا فولدر شخصی من برای یادگیری و ثبت مطالب Linux، Networking و Cyber Security است.

🔐 LPIC | Network+ | CEH | SANS
🐧 Linux & System Administration
🌐 Networking & Troubleshooting
💻 Python & Security Tools
🧪 Labs | CTF | Prac
Download Telegram
این مبحث یکی از مهم‌ترین بخش‌های CompTIA Network+ و همچنین مقدمه‌ای برای Security+ و SOC Analyst است.

=============

SIEM (Security Information and Event Management)
SIEM چیست؟
SIEM مخفف:
Security Information and Event Management
است.
SIEM یک سیستم مرکزی برای جمع‌آوری، ذخیره، تحلیل و مانیتورینگ لاگ‌ها و رویدادهای امنیتی است.
به زبان ساده:
Syslog فقط Logها را جمع می‌کند، اما SIEM آن‌ها را تحلیل می‌کند و حملات را تشخیص می‌دهد.


چرا SIEM استفاده می‌شود؟

فرض کنید یک شرکت دارای:

۵۰ سرور
۳۰ سوئیچ
۲۰ روتر
۱۰ فایروال
۱۰۰ کامپیوتر

باشد.

هر کدام روزانه هزاران Log تولید می‌کنند.

اگر مدیر بخواهد تک‌تک آن‌ها را بررسی کند تقریباً غیرممکن است.

اینجاست که SIEM وارد عمل می‌شود.


کار SIEM
Router
\
Firewall \
Server -----> SIEM ------> Security Analyst
Switch /
Windows /
Linux /
===========================
تمام Logها

↓

در SIEM ذخیره می‌شوند.

↓

تحلیل می‌شوند.

↓

اگر حمله‌ای تشخیص داده شود

↓

Alert تولید می‌شو


وظایف SIEM

✔️ جمع‌آوری Log
✔️ ذخیره Log
✔️ تحلیل Log
✔️ همبستگی رویدادها (Correlation)
✔️ تشخیص حملات
✔️ تولید Alert
✔️ گزارش‌گیری
✔️ داشبورد مدیریتی


=====================

SIM و SEM چیست؟

قبل از SIEM دو سیستم جداگانه وجود داشت.


SIM
Security Information Management
وظیفه:
ذخیره و مدیریت Logها
تمرکز روی:
نگهداری Log
گزارش‌گیری
جستجو
Audit
به عبارت دیگر:
SIM بیشتر برای ذخیره اطلاعات است.


SEM
Security Event Management
وظیفه:
تحلیل رویدادها به صورت لحظه‌ای
تمرکز روی:
تحلیل
Alert
Real-Time Monitoring
Incident Detection

=================

SIEM

ترکیب

SIM

SEM

است.

یعنی:

هم Log را ذخیره می‌کند

و هم آن را تحلیل می‌کند.


===============

False Positive (FP)
یعنی سیستم اشتباه فکر کند حمله رخ داده است.
در حالی که حمله‌ای وجود ندارد.

مثال :
کارمند شرکت
ده بار رمز را اشتباه وارد می‌کند
SIEM
فکر می‌کند
Brute Force
رخ داده است.
در صورتی که حمله‌ای وجود ندارد


True Positive (TP)

یعنی سیستم درست حمله را تشخیص داده است.

مثال :

یک Brute Force واقعی رخ می‌دهد.
SIEM
آن را شناسایی می‌کند.
↓
TP


================

False Negative (FN)

خیلی مهم
سیستم
حمله واقعی
را تشخیص نمی‌دهد.
بدترین حالت امنیتی است.
——————————————————————
True Negative (TN)

هیچ حمله‌ای وجود ندارد.
SIEM
هم چیزی گزارش نمی‌کند.


===================


| وضعیت واقعی     | نتیجه SIEM     | نام |
| --------------- | -------------- | --- |
| حمله وجود دارد | تشخیص داده شد | TP |
| حمله وجود دارد | تشخیص داده نشد | FN |
| حمله وجود ندارد | هشدار داده شد | FP |
| حمله وجود ندارد | هشدار نداد | TN |


نکته امتحانی

بهترین حالت
TP
و
TN
است.

=======================

Key Components of a SIEM System

اجزای اصلی SIEM

1- Log Collection

جمع‌آوری Log

از:
Router
Firewall
Windows
Linux
IDS
IPS
Antivirus


2- Log Normalization

تجهیزات مختلف
Logهای متفاوتی دارند.
SIEM
همه را
به یک فرمت استاندارد
تبدیل می‌کند.


3- Log Storage
ذخیره Log

برای:
چند ماه
چند سال


4- Correlation Engine ⭐️
مهم‌ترین بخش SIEM
Correlation
یعنی
ارتباط دادن چند Event
به یکدیگر.
مثلاً
Login Failed

↓

Login Failed

↓

Login Failed

↓

Firewall Alert

↓

SIEM

↓

Brute Force Attack

اگر هر Log را جدا ببینیم
حمله مشخص نیست.
اما کنار هم
حمله مشخص می‌شود.

5- Alerting

اگر حمله تشخیص داده شود

Alert

ارسال می‌شود.

مثلاً

Email
SMS
Dashboard



6- Dashboard
نمایش گرافیکی
وضعیت امنیت شبکه
—————————
7- Reporting
گزارش‌گیری

مثلاً

گزارش حملات
گزارش کاربران
گزارش Loginها
—————————-
8- Threat Intelligence

برخی SIEMها
اطلاعات حملات جدید
را از اینترنت دریافت می‌کنند.


==================

SIEM Workflow
مراحل کار SIEM
1

Log Generation

↓

2

Log Collection

↓

3

Normalization

↓

4

Storage

↓

5

Correlation

↓

6

Threat Detection

↓

7

Alert

↓

8

Incident Response

↓

9

Report



توضیح:

مرحله ۱
دستگاه‌ها Log تولید می‌کنند.

مرحله ۲

Logها جمع‌آوری می‌شوند.
مرحله ۳
فرمت Logها یکسان می‌شود.

مرحله ۴
ذخیره می‌شوند.

مرحله ۵
SIEM
رابطه بین Eventها را بررسی می‌کند.

مرحله ۶
حمله تشخیص داده می‌شود.

مرحله ۷
Alert ایجاد می‌شود.

مرحله ۸
کارشناس امنیت

بررسی می‌کند.

مرحله ۹
گزارش تهیه می‌شود.

====================
SIEM Tools

Splunk
محبوب‌ترین SIEM دنیا

ویژگی‌ها

✔️ بسیار قدرتمند
✔️ Search
✔️ Dashboard
✔️ Correlation
✔️ Enterprise



IBM QRadar
یکی از معروف‌ترین SIEMها
مناسب سازمان‌های بزرگ


Microsoft Sentinel
سرویس Cloud
مایکروسافت
بر پایه Azure

Graylog
رایگان
Open Source
بسیار محبوب

===================

تفاوت Syslog و SIEM

SIEM

جمع‌آوری + تحلیل
Alert هوشمند
Correlation دارد
Dashboard پیشرفته
تشخیص حمله

syslog

فقط جمع‌آوری Log
Alert محدود
Correlation ندارد
Dashboard ساده
ذخیره Log


===================================

نکات امتحانی Network+

SIEM

جمع‌آوری Log
تحلیل امنیتی
Correlation
Alert
Dashboard


SIM
ذخیره Log

SEM
تحلیل لحظه‌ای Event

SIEM
دو بخش SIM
SEM دارد

مهم‌ترین بخش SIEM
Correlation Engine

بهترین خروجی امنیتی
TP (True Positive)

بدترین حالت
FN (False Negative)

ابزارهای معروف:
Splunk
QRadar
Graylog
Microsoft Sentinel
Wazuh
ELK Stack
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Physical Security in Cybersecurity

==================

Physical Security in Cybersecurity
امنیت فیزیکی (Physical Security) چیست؟
Physical Security یعنی:
حفاظت از تجهیزات، ساختمان، اتاق سرور و افراد در برابر دسترسی فیزیکی غیرمجاز، سرقت، خرابکاری یا بلایای طبیعی.

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

============

اهداف Physical Security

✔️ جلوگیری از ورود افراد غیرمجاز
✔️ حفاظت از تجهیزات
✔️ جلوگیری از سرقت
✔️ جلوگیری از خرابکاری (Sabotage)
✔️ محافظت در برابر آتش‌سوزی
✔️ محافظت در برابر سیل
✔️ محافظت در برابر قطع برق

=================

روش‌های امنیت فیزیکی
1) Door Lock
قفل‌های مکانیکی

2) Smart Lock
قفل هوشمند

3) Key Card
کارت ورود

4) RFID Card
کارت بدون تماس

5) Biometric
احراز هویت بیومتریک

مثل:
اثر انگشت
اسکن چشم
تشخیص چهره
کف دست

6) CCTV
دوربین مداربسته

کاربرد:
نظارت
ضبط تصاویر
بررسی رخدادها

7) Security Guard
نگهبان

8) Alarm System
سیستم هشدار

9) Motion Sensor
حسگر حرکت

10) Fire Suppression
سیستم اطفای حریق

مانند:
FM-200
Novec 1230
نکته: در اتاق سرور معمولاً از آب استفاده نمی‌شود، چون ممکن است به تجهیزات آسیب بزند.


11) Environmental Monitoring
بررسی:
دما
رطوبت
دود
نشت آب
=================

Multi-Layered Physical Security
یکی از مهم‌ترین مباحث امتحانی
به آن
Defense in Depth
هم می‌گویند.
یعنی به جای یک لایه امنیت، چندین لایه امنیتی کنار هم استفاده شوند.


مثال
خیابان

↓

حصار (Fence)

↓

نگهبان

↓

در ورودی

↓

کارت ورود

↓

دوربین

↓

اثر انگشت

↓

اتاق سرور

↓

رک

↓

قفل رک

↓

سرور

اگر یک لایه شکست بخورد
لایه بعدی
جلو مهاجم را می‌گیرد.

==============

UPS چیست؟

Uninterruptible Power Supply
منبع تغذیه بدون وقفه

وظیفه UPS

اگر برق شهر قطع شود
UPS
برق تجهیزات را برای مدت محدودی تأمین می‌کند.
———————————————
کاربرد
خاموش نشدن سرور
جلوگیری از از دست رفتن اطلاعات
فرصت برای خاموش کردن صحیح سیستم
جلوگیری از آسیب سخت‌افزار

نحوه کار
برق شهر

↓

UPS

↓

Server

اگر برق قطع شود
↓
باتری UPS
↓
برق را تأمین می‌کند.

============================

نکات حفظی Network+

Physical Security
حفاظت از تجهیزات و ساختمان
جلوگیری از سرقت و خرابکاری
——————————-
Multi-Layered Physical Security
چندین لایه امنیتی
Defense in Depth
——————————
UPS
Uninterruptible Power Supply
جلوگیری از خاموش شدن تجهیزات هنگام قطع برق
Online UPS بهترین نوع برای دیتاسنترها
——————————
مهم‌ترین کاربردهای SIEM

Centralized Log Collection
Event Correlation ⭐️
Threat Detection
Real-Time Monitoring
Alerting
Incident Response
Compliance Reporting
Digital Forensics
——————————————————————
۱۰ نکته‌ای که احتمال سؤال از آن‌ها زیاد است

Physical Security از تجهیزات در برابر تهدیدهای فیزیکی محافظت می‌کند.
Biometric شامل اثر انگشت، عنبیه و تشخیص چهره است.
CCTV برای نظارت و ثبت وقایع استفاده می‌شود.
Defense in Depth یعنی استفاده از چندین لایه امنیتی.
UPS هنگام قطع برق، برق موقت تجهیزات را تأمین می‌کند.
Online UPS مناسب‌ترین گزینه برای تجهیزات حساس و دیتاسنترها است.
Generator برای تأمین برق طولانی‌مدت استفاده می‌شود، اما جایگزین UPS نیست.
SIEM لاگ‌ها را جمع‌آوری، تحلیل و همبسته (Correlation) می‌کند.
Correlation مهم‌ترین قابلیت SIEM برای کشف حملات پیچیده است.
Threat Detection و Incident Response از مهم‌ترین کاربردهای SIEM در امنیت سایبری هستند.
Authentication and Access Control
===============

Authentication چیست؟
Authentication یعنی احراز هویت.
یعنی سیستم بررسی می‌کند آیا واقعاً همان شخصی هستی که ادعا می‌کنی یا خیر.
سؤال Authentication:
Who are you? (تو کی هستی؟)

مثال:
Username + Password
Fingerprint
Smart Card
OTP

=========

Authentication Factors

سه عامل اصلی احراز هویت:

1. Something You Know

چیزی که می‌دانی

Password
PIN


2. Something You Have

چیزی که داری

Smart Card
Token
Mobile OTP


3. Something You Are

چیزی که هستی

اثر انگشت
عنبیه
تشخیص چهره

============

MFA (Multi-Factor Authentication)
استفاده از دو یا چند عامل احراز هویت.
مثال:
Password + OTP
Password + Fingerprint
نکته امتحانی
دو Password مختلف، MFA نیست؛ چون هر دو از نوع Something You Know هستند.

================

CUPP (Common User Passwords Profiler)

ابزار ساخت Wordlist

در Kali Linux


کاربرد
از اطلاعات قربانی مانند:
نام
نام همسر
تاریخ تولد
شماره تلفن
نام حیوان خانگی
یک Wordlist تولید می‌کند.
مثال:
Ali123
Ali1375
Ali@123
Sara1375


هدف در آموزش

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

نکته امتحانی

راه مقابله:

Password Policy
Password پیچیده
MFA
============


Security Filtering
یعنی اجازه یا عدم اجازه دسترسی بر اساس قوانین امنیتی.
مثال:
Firewall فقط اجازه دهد:
HTTPS → Allowed

FTP → Block

یا در Active Directory:
فقط گروه IT اجازه ورود داشته باشد.

==============

ACL (Access Control List)
ACL مجموعه‌ای از قوانین است که مشخص می‌کند چه ترافیکی اجازه (Permit) یا عدم اجازه (Deny) دارد.

—————-

انواع ACL
Standard ACL

فقط Source IP را بررسی می‌کند.
—————————————————-
Extended ACL

بررسی می‌کند:

Source IP
Destination IP
Protocol
Port Number
نکته امتحانی

Extended ACL امنیت بیشتری دارد.

—————————-

Tunneling

ارسال یک Packet داخل Packet دیگر.

برای ایجاد ارتباط امن یا عبور از شبکه‌های مختلف.

مثال:

VPN
GRE
IPsec Tunnel


————————
Encryption

تبدیل اطلاعات قابل خواندن (Plaintext)

↓

اطلاعات رمز شده (Ciphertext)

———————

دو نوع
Symmetric

یک کلید برای رمزگذاری و رمزگشایی

مثال:

AES
——————————————————-
Asymmetric

دو کلید

Public Key
Private Key

مثال:

RSA


—————————————

Remote Access

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

نمونه‌ها:

SSH
VPN
RDP
VNC

=====================

Managing User Accounts & Passwords

مدیریت کاربران

شامل:

ایجاد کاربر
حذف کاربر
تغییر رمز
قفل کردن حساب
تعیین سطح دسترسی
Password Policy

====================

Password Policy

شامل:

حداقل طول رمز
پیچیدگی رمز
زمان انقضا
عدم استفاده مجدد
Lockout

==============

LDAP

Lightweight Directory Access Protocol

پروتکل دسترسی به Directory Service

معروف‌ترین مثال:

Microsoft Active Directory

کاربرد
Login کاربران
جستجوی کاربران
مدیریت کاربران
مدیریت گروه‌ها

===============

User Authentication Methods

روش‌های احراز هویت

Password
PIN
Smart Card
OTP
Certificate
Fingerprint
Face Recognition
Iris Scan

===========================

PKI (Public Key Infrastructure)
زیرساخت کلید عمومی

مدیریت:
Certificate
Public Key
Private Key

اجزا
CA (Certificate Authority)
Certificate
Public Key
Private Key
CRL

کاربرد:

HTTPS
SSL/TLS
VPN
Code Signing

———————————————-
Kerberos

پروتکل احراز هویت

مخصوص شبکه‌های Windows

ویژگی‌ها

Ticket Based
Mutual Authentication
جلوگیری از ارسال Password روی شبکه
پورت

TCP/UDP 88
————————————-
AAA

Authentication
تو کی هستی؟
Authorization
چه کاری اجازه داری انجام دهی؟
Accounting
چه کارهایی انجام دادی؟

مثال

کاربر Login می‌کند.

↓

Authentication

↓

دسترسی فقط به پوشه مالی

↓

Authorization

↓

ثبت فعالیت‌ها

↓

Accounting


===================

Web Services

سرویس‌هایی که از طریق HTTP/HTTPS ارائه می‌شوند.

مثال:

REST API
SOAP

———————————-


Unified Voice Services

سرویس‌های تلفنی مبتنی بر IP

مثال:

VoIP
IP Phone
SIP

—————————-
Network Control

کنترل دسترسی کاربران و دستگاه‌ها به شبکه.

نمونه:

NAC
ACL
Firewall

——————————
NAC (Network Access Control)

کنترل دسترسی به شبکه

قبل از ورود دستگاه به شبکه بررسی می‌کند:

آنتی‌ویروس نصب است؟
سیستم به‌روز است؟
سیستم آلوده نیست؟

اگر شرایط مناسب باشد:

اجازه ورود می‌دهد.

==========================

DAC

Discretionary Access Control
مالک فایل تعیین می‌کند چه کسی دسترسی داشته باشد.

مثال:
Windows NTFS

ضعف:
اگر مالک اشتباه مجوز بدهد امنیت کاهش می‌یابد.

——————

MAC

Mandatory Access Control
دسترسی توسط سیستم و بر اساس سطح امنیت تعیین می‌شود.
کاربر نمی‌تواند مجوز را تغییر دهد.

مثال:
سیستم‌های نظامی

مزیت
بیشترین امنیت

————————————-

RBAC

Role Based Access Control
دسترسی بر اساس نقش

مثلاً:

HR
IT
Manager

——————————-

ABAC

Attribute Based Access Control
بر اساس ویژگی‌ها

مانند:

زمان
مکان
دپارتمان
نوع دستگاه
—————

| مدل  | بر اساس   |
| ---- | --------- |
| DAC | مالک |
| MAC | سطح امنیت |
| RBAC | نقش |
| ABAC | ویژگی‌ها |



=====================

SSO (Single Sign-On)

یک بار Login

↓

دسترسی به چندین سرویس

مثال:

ورود به حساب Microsoft و استفاده از Outlook، Teams و OneDrive بدون ورود مجدد.

====================

DLP (Data Loss Prevention)
جلوگیری از نشت اطلاعات


انواع
Network DLP
کنترل اطلاعات داخل شبکه

Endpoint DLP
کنترل اطلاعات روی کامپیوتر کاربران

Cloud DLP
کنترل اطلاعات داخل سرویس‌های ابری


==================

MDM (Mobile Device Management)
مدیریت دستگاه‌های موبایل

امکانات:

نصب برنامه
حذف برنامه
قفل دستگاه
پاک کردن اطلاعات از راه دور
اعمال Policy

===================

Patch Management
مدیریت به‌روزرسانی‌ها

مراحل:
شناسایی Patch
تست
نصب
بررسی
مستندسازی

هدف:
رفع آسیب‌پذیری‌ها

===================

Security Awareness
آموزش امنیت به کاربران

مثال:
تشخیص ایمیل Phishing
استفاده از رمز قوی
گزارش رخدادها
استفاده از MFA

=================

Security Policies
مجموعه قوانین امنیتی سازمان

نمونه‌ها:
Password Policy
Acceptable Use Policy (AUP)
Remote Access Policy
Backup Policy
Incident Response Policy

===================

Security Procedures
مراحل اجرایی انجام کار

مثال:
مراحل تغییر رمز عبور

=================

Security Standards
استانداردهای فنی

مثال:

ISO 27001
NIST
PCI-DSS

===============

Hashes in Authentication
Hash تابعی است که اطلاعات را به یک مقدار ثابت تبدیل می‌کند.
Password

↓

Hash Function

↓

Hash


ویژگی‌ها

یک‌طرفه (One-way)
غیرقابل بازیابی
طول خروجی ثابت

کاربرد

ذخیره Password
به جای ذخیره رمز واقعی

——————
الگوریتم‌ها:

MD5
قدیمی
امن نیست.

SHA-1
قدیمی
امروزه توصیه نمی‌شود.

SHA-256
پرکاربرد
امن‌تر

bcrypt
مناسب ذخیره Password

Argon2
جدیدترین و امن‌ترین گزینه برای ذخیره رمز عبور


================

نکات امتحانی مهم
Authentication = «چه کسی هستی؟»
Authorization = «چه کاری مجاز به انجام آن هستی؟»
Accounting = «چه کارهایی انجام دادی؟»
MFA باید از دو عامل متفاوت استفاده کند.
Kerberos از Ticket استفاده می‌کند و رمز عبور را روی شبکه ارسال نمی‌کند.
LDAP برای دسترسی و مدیریت سرویس‌های دایرکتوری مانند Active Directory استفاده می‌شود.
NAC قبل از اتصال دستگاه، وضعیت امنیتی آن را بررسی می‌کند.
SSO تجربه کاربر را بهتر می‌کند، اما در صورت سرقت حساب، دسترسی به چند سرویس با همان حساب ممکن است؛ بنابراین معمولاً همراه با MFA استفاده می‌شود.
برای ذخیره رمز عبور، bcrypt و Argon2 از گزینه‌های مناسب هستند و MD5 و SHA-1 دیگر برای این کاربرد توصیه نمی‌شوند.
Network Discovery
Network Discovery چیست؟

====================

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

قبل از اینکه مدیر شبکه یا کارشناس امنیت بتواند از شبکه محافظت کند یا تست نفوذ انجام دهد، باید بداند:
چه دستگاه‌هایی داخل شبکه هستند؟
چه IPهایی فعال هستند؟
چه پورت‌هایی باز هستند؟
چه سیستم‌عاملی استفاده می‌کنند؟
چه سرویس‌هایی اجرا می‌شوند؟
به این مرحله Network Discovery می‌گویند.

==================

اهداف Network Discovery

✔️ پیدا کردن دستگاه‌های فعال (Live Hosts)

✔️ شناسایی پورت‌های باز

✔️ شناسایی سرویس‌ها

✔️ شناسایی سیستم‌عامل

✔️ شناسایی نسخه سرویس‌ها

✔️ تهیه نقشه شبکه (Network Mapping)

=======================
Nmap چیست؟
Network Mapper


محبوب‌ترین ابزار دنیا

برای
Network Discovery
Port Scanning
Host Discovery
Service Detection
OS Detection
است.
———————————————-
کاربردهای Nmap

✔️ پیدا کردن دستگاه‌های شبکه
✔️ پیدا کردن پورت‌های باز
✔️ شناسایی سیستم‌عامل
✔️ شناسایی نسخه سرویس
✔️ بررسی امنیت شبکه
✔️ تست Firewall
✔️ کشف آسیب‌پذیری (با NSE)

———————————
مهم‌ترین قابلیت‌های Nmap
1) Host Discovery
پیدا کردن دستگاه‌های روشن
مثال
nmap 192.168.1.0/24

فقط دستگاه‌های فعال را نشان می‌دهد.

———————————-

2) Port Scanning
اسکن Portها
مثلاً
nmap 192.168.1.10

خروجی
22 SSH

80 HTTP

443 HTTPS



وضعیت Portها

Open
پورت باز است.
سرویس اجرا می‌شود.

Closed
پورت بسته است.
اما دستگاه روشن است.

Filtered
Firewall
اجازه پاسخ نمی‌دهد.

Unfiltered
قابل دسترسی است
اما وضعیت دقیق مشخص نیست.

Open|Filtered
تشخیص دقیق ممکن نیست.

Closed|Filtered
وضعیت دقیق مشخص نیست.

—————————————

3) Service Detection
شناسایی سرویس‌ها
nmap -sV 192.168.1.10

مثال
80 Apache 2.4

22 OpenSSH

3306 MySQL


————————————-
4) OS Detection
تشخیص سیستم عامل
nmap -O 192.168.1.10

مثلاً
Linux

Windows

Cisco IOS



—————

Aggressive Scan
nmap -A 192.168.1.10

انجام می‌دهد:
OS Detection
Version Detection
Traceroute
Script Scan

———————————————-

SYN Scan ⭐️
nmap -sS

محبوب‌ترین نوع Scan
به آن
Half Open Scan
نیز می‌گویند.

===============
جدول طلایی امتحان
دستور
کاربرد
nmap <IP>
اسکن معمولی
nmap -sn
Host Discovery (بدون اسکن پورت)
nmap -sS
SYN Scan (Half Open)
nmap -sT
TCP Connect Scan
nmap -sU
UDP Scan
nmap -sV
تشخیص سرویس و نسخه
nmap -O
تشخیص سیستم‌عامل
nmap -A
اسکن پیشرفته (OS + Version + Scripts + Traceroute)
nmap -p 80
اسکن یک پورت
nmap -p 22,80,443
اسکن چند پورت
nmap -p-
اسکن همه پورت‌ها
nmap --script vuln
اجرای اسکریپت‌های بررسی آسیب‌پذیری
👍2
خب اموزش نتورک پلاس رو تموم کردیم

پس میریم سراغ دوره LPIC 1
مقدمه Lpic 1 ( intro)

=======

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

قسمت دو

Linux در اصل یک Kernel (هسته سیستم‌عامل) است که توسط Linus Torvalds توسعه داده شد.
Kernel به‌تنهایی برای ساخت یک سیستم‌عامل کامل کافی نبود و به ابزارها و برنامه‌های دیگری نیاز داشت.
بسیاری از این ابزارهای پایه در پروژه GNU توسعه داده شده بودند.
ترکیب GNU + Linux باعث شکل‌گیری سیستم‌هایی شد که معمولاً به آن‌ها GNU/Linux می‌گوییم.
خلاصه:
GNU = ابزارها و برنامه‌های پایه
+
Linux = Kernel
↓
GNU/Linux

مثلاً Debian، Ubuntu و AlmaLinux توزیع‌های GNU/Linux هستند.

وبسایت های مهم

دانلود کرنل لینوکس
kernel.org
پروژه گنو
GNU.ORG
—————————
کامند زیر
uname -a
اطلاعات Kernel را نمایش می‌دهد

=============

قسمت سوم

برای تست و تمرین بهتر است یک محیط مجازی (Virtual Lab) داشته باشیم تا در صورت خرابی، به سیستم اصلی آسیب نرسد.
نرم‌افزارهای معروف مجازی‌سازی:
VMware Workstation
Oracle VirtualBox

در این دوره از VMware Workstation برای ساخت ماشین‌های مجازی استفاده می‌کنیم.
——————————————-

توزیع‌های مختلف Linux 🐧
در این دوره بیشتر با دو خانواده کار می‌کنیم:
1. خانواده Red Hat
AlmaLinux
RHEL
Fedora
دانلود AlmaLinux: AlmaLinux
2. خانواده Debian
Debian
Ubuntu
Kali Linux
دانلود Debian: Debian
در ادامه دوره بیشتر تمرکز ما روی AlmaLinux و Debian خواهد بود.


================

قسمت چهارم - نصب ماشین مجازی


Custom → آخرین نسخه Workstation
Installer Disk → گزینه Use ISO
Operating System → Linux → AlmaLinux
نام VM و محل ذخیره فایل‌ها را انتخاب کنید.
CPU و RAM را متناسب با سیستم خود انتخاب کنید.
هنگام نصب می‌توانید منابع بیشتری اختصاص دهید تا نصب سریع‌تر انجام شود.
Network: روی NAT
I/O Controller: گزینه پیش‌فرض LSI Logic
Virtual Disk: SATA
Disk: گزینه Create a new virtual disk
Disk Size / Partition: به مقدار دلخواه و متناسب با نیاز VM انتخاب کنید.
در پایان تنظیمات را بررسی و Finish کنید.

===================


قسمت پنجم نصب AlmaLinux

Language: روی English بگذارید.
Time & Date: منطقه زمانی را تنظیم کنید.
Keyboard: English (US)
Installation Destination: فقط هارد موردنظر را انتخاب کنید.
Software Selection: حالت Server
Network & Host Name: کارت شبکه را ON کنید و در صورت نیاز Hostname را تنظیم کنید.
Root Password: رمز Root را تعیین کنید.
User Creation: یک کاربر معمولی هم بسازید.
تنظیمات نصب را یک‌بار بررسی کنید و سپس Begin Installation را بزنید.
بعد از اتمام نصب، Reboot کنید و ISO را جدا کنید.
بعد از نصب
برای بررسی و انجام آپدیت‌ها:
dnf update

برای خاموش کردن سیستم:
halt -p



Snapshot
قبل از تغییرات مهم در ماشین مجازی می‌توانید Snapshot بگیرید تا در صورت خراب شدن تنظیمات، سیستم را به همان نقطه برگردانید.

====================

قسمت ششم نصب Debian

Language: English
Location: Iran
Keyboard: English (US)
Hostname: دست نزنید
Domain Name: خالی بگذارید
Root Password: رمز دلخواه
User: یک کاربر معمولی بسازید
Partitioning:
Guided — use entire disk
All files in one partition
Disk: دیسک موردنظر را انتخاب کنید
Write changes to disk: ابتدا No برای بررسی؛ بعد از اطمینان Yes
Package Manager: تنظیمات پیش‌فرض مناسب است
Mirror: در صورت وجود، Iran
Proxy: خالی
Package Usage Survey: No
Software Selection:
SSH server ✅
Standard system utilities ✅
Desktop Environment ❌
GRUB: Yes
GRUB Location: خود دیسک، مثلاً /dev/sda
نصب را تمام کنید و Reboot بزنید.

======================
قسمت هفتم — اتصال به سرور لینوکس از ویندوز 🐧

در لینوکس برای دیدن IP:
ip a

در Windows CMD ابتدا IP را Ping کنید:
ping YOUR_IP

سپس با SSH متصل شوید:
ssh root@YOUR_IP

رمز Root را وارد کنید تا وارد سرور شوید.
==========================

قسمت هفتم - قسمت آخر INTRO : اتصال به سرور لینوکس از ویندوز

در لینوکس برای دیدن IP:
ip a

در Windows CMD ابتدا IP را Ping کنید:
ping YOUR_IP

سپس با SSH متصل شوید:
ssh root@YOUR_IP

رمز Root را وارد کنید تا وارد سرور شوید.

====================

حتی اگر Debian یا AlmaLinux را با محیط گرافیکی (GUI) نصب کرده باشید، باز هم می‌توانید با SSH به آن وصل شوید. ✅

تفاوت فقط این است که:
اگر GUI نصب باشد:
محیط دسکتاپ دارید + می‌توانید SSH هم استفاده کنید.

نسخه Server/Minimal:
محیط گرافیکی ندارید و بیشتر با Terminal کار می‌کنید؛ SSH هم می‌تواند فعال باشد.

نکته مهم این است که SSH به داشتن یا نداشتن GUI وابسته نیست؛ باید سرویس SSH روی سیستم نصب و فعال باشد.

مثلاً در Debian:
systemctl status ssh

و در AlmaLinux معمولاً:
systemctl status sshd

پس انتخاب Server را به این دلیل انجام دادیم که برای دوره LPIC و مدیریت سرور، محیط بدون GUI سبک‌تر و مناسب‌تر است.
👏1
فصل اول دوره الپیک
===============================

قسمت اول
—————————
Terminal چیست؟
Terminal محیطی برای ارتباط و کار با سیستم‌عامل لینوکس است که از طریق آن می‌توانیم دستورات را اجرا و سیستم را مدیریت کنیم.
—————————
Shell چیست؟
Shell یک رابط بین کاربر و Kernel است که دستورات کاربر را دریافت، تفسیر و اجرا می‌کند
—————————
Bash چیست؟
Bash (Bourne Again Shell) یکی از معروف‌ترین Shellهای لینوکس است و علاوه بر اجرای دستورات، امکان Shell Scripting را هم فراهم می‌کند.
—————————
انواع Shell
bash
sh
csh / tcsh
ksh
zsh
fish
—————————
Bash Script چیست؟
فایلی شامل مجموعه‌ای از دستورات Bash است که می‌توان آن‌ها را به‌صورت خودکار و پشت‌سرهم اجرا کرد.
مثلاً:
#!/bin/bash
echo "Hello Linux"

—————————
Command چیست؟
Command یا دستور، فرمانی است که به Shell می‌دهیم تا یک عملیات مشخص را انجام دهد.
مثلاً:
ls

برای نمایش فایل‌ها و پوشه‌ها.
pwd

برای نمایش مسیر فعلی.
whoami

برای نمایش کاربر فعلی.
👏1
فصل اول دوره الپیک
===============================

قسمت دوم — آدرس‌دهی در لینوکس 🐧

——————
pwd

مخفف Print Working Directory است و مسیر کامل پوشه‌ای که در حال حاضر داخل آن هستیم را نمایش می‌دهد.
pwd

مثال:
/home/alireza

یعنی در حال حاضر داخل مسیر /home/alireza قرار داریم.

=====================

قسمت سوم —فرمان های مقدماتی بخش اول 🐧
——————

uname
نمایش نام سیستم‌عامل.
uname


uname -a

نمایش اطلاعات کامل سیستم و Kernel.
uname -a


uname --help

نمایش راهنمای دستور uname.
uname --help


—————-

cd
— تغییر مسیر
cd /

رفتن به مسیر ریشه /
cd ..

رفتن یک پوشه به عقب.
cd -

برگشتن به مسیر قبلی.
———————
ls — نمایش فایل‌ها و پوشه‌ها
ls

نمایش فایل‌ها و پوشه‌های مسیر فعلی.
ls -a

نمایش تمام فایل‌ها، حتی فایل‌های مخفی.

=====================

قسمت چهارم —فرمان های مقدماتی بخش دوم 🐧
——————

همه‌چیز در لینوکس فایل است؛ حتی Deviceها و بسیاری از منابع سیستم به‌صورت فایل نمایش داده می‌شوند.
————-

Built-in چیست؟
دستورهایی که داخل خود Shell وجود دارند و نیازی به فایل اجرایی جداگانه ندارند.
مثال:
cd
type


—————-

more و less
برای نمایش محتوای فایل به‌صورت صفحه‌به‌صفحه:
more file.txt
less file.txt

less امکانات بیشتری برای جست‌وجو و حرکت دارد.

—————-
head

نمایش ابتدای فایل:
head file.txt

نمایش تعداد مشخصی خط:
head -n 5 file.txt


—————-
tail

نمایش انتهای فایل:
tail file.txt

نمایش تعداد مشخصی خط:
tail -n 5 file.txt


—————-
cat

نمایش محتوای فایل:
cat file.txt

نمایش همراه با شماره خط:
cat -n file.txt


—————-
type

مشخص می‌کند یک Command از چه نوعی است:
type cd
type ls

مثلاً ممکن است نشان دهد cd یک Shell Built-in است.

=====================

قسمت پنجم —ایجاد یک فایل 🐧
——————

echo
برای چاپ متن در Terminal:
echo "hello"

نمایش همه موارد موجود در مسیر با *:
echo *


————————
علامت >
برای Redirect کردن خروجی به داخل فایل استفاده می‌شود.
echo "alireza" > test

اگر فایل وجود نداشته باشد، ساخته می‌شود؛ اگر وجود داشته باشد، محتوای قبلی پاک و جایگزین می‌شود.
——————————
touch
برای ایجاد فایل خالی:
touch test

مثلاً:
touch test.txt

فایل test.txt ساخته می‌شود.

حالا با دستور زیر مثلا alireza زیر فایل test ساخته میشود
echo "alireza" > test
👏4
قسمت ششم — متغیرها 🐧
——————————

Variable محلی برای نگهداری اطلاعات در Shell است؛ مثل متن، عدد یا مسیر.

env
نمایش متغیرهای محیطی:
env


-------------
echo

نمایش مقدار یک متغیر:
echo $HOME
echo $SHELL

$HOME → مسیر Home کاربر
$SHELL → Shell پیش‌فرض کاربر

——————————
SHLVL

تعداد سطح‌های Shell فعلی را نشان می‌دهد:
echo $SHLVL


---------------
export

یک متغیر را به Environment Variable تبدیل می‌کند تا Shellهای فرزند نیز آن را داشته باشند:
export NAME=Alireza

به‌صورت پیش‌فرض متغیرهای ساخته‌شده در Shell Local هستند؛ با export به محیط فرزند منتقل می‌شوند.
PS1
ظاهر Prompt ترمینال را مشخص می‌کند:
echo $PS1


------------------
PATH

مسیرهایی را مشخص می‌کند که Shell برای پیدا کردن دستورات در آن‌ها جست‌وجو می‌کند:
echo $PATH

مثلاً وقتی می‌نویسیم:
ls

Shell مسیرهای موجود در PATH را برای پیدا کردن دستور ls بررسی می‌کند.

====================

قسمت هفتم — لاگ فعالیت شما 🐧

—————

history
نمایش دستورهایی که قبلاً اجرا کرده‌ایم:
history

اجرای یک دستور از History

مثلاً:
!343

دستور شماره 343 را دوباره اجرا می‌کند.

نکته
اگر قبل از یک Command یک Space بگذارید، در History ذخیره نمی‌شود؛ البته این رفتار به تنظیم HISTCONTROL بستگی دارد.

———————————-
$HISTFILE
مشخص می‌کند History در کدام فایل ذخیره شود:
echo $HISTFILE

معمولاً:
~/.bash_history


------------------
history -c

پاک کردن History فعلی Shell:
history -c



history -r

خواندن History از فایل:
history -r



history -w

نوشتن History فعلی در فایل:
history -w



.bash_history

فایل معمول ذخیره History مربوط به Bash است:
~/.bash_history

نکته:

history
برای مدیریت History داخل Shell است و

.bash_history
معمولاً محل ذخیره دائمی آن روی دیسک است.


====================

قسمت هشتم — کمک گرفتن 🐧

—————

-h
در بسیاری از دستورات، -h برای نمایش Help کوتاه استفاده می‌شود:
ls -h

البته -h در همه دستورات معنی یکسانی ندارد؛ مثلاً در ls معمولاً خروجی را خواناتر می‌کند.
————————
--help
روش عمومی‌تر برای گرفتن راهنمای دستور:
ls --help

معمولاً Syntax، Optionها و کاربرد دستور را نمایش می‌دهد.
————————
man
مخفف Manual است و مستندات کامل یک دستور را نمایش می‌دهد:
man ls

داخل man می‌توانی:
↑ ↓ → حرکت
/word → جست‌وجو
n → نتیجه بعدی
q → خروج
man man
راهنمای خود دستور man:
man man

man -k
برای جست‌وجوی کلمه در عنوان و توضیحات Manualها:
man -k passwd

دستورهای مرتبط با passwd را پیدا می‌کند.
————————
echo $?
نمایش Exit Status آخرین دستور اجراشده:
echo $?

معمولاً:
0     → موفق
1+ → خطا / وضعیت غیرموفق

مثال:
ls
echo $?

اگر ls با موفقیت اجرا شود، معمولاً 0 می‌بینیم.

====================
❤1👏1
قسمت نهم — ویرایشگر فایل های متنی 🐧

—————

در لینوکس برای ایجاد و ویرایش فایل‌های متنی از Editorها استفاده می‌کنیم.
vi
ویرایشگر استاندارد و قدیمی لینوکس:
vi test.txt

دو حالت مهم دارد:
Command Mode → اجرای دستورات
Insert Mode → نوشتن متن
ورود به حالت نوشتن:
i

خروج:
Esc

ذخیره و خروج:
:wq

خروج بدون ذخیره:
:q!


---------------
vim

نسخه پیشرفته‌تر vi با امکانات بیشتر:
vim test.txt

در سرورها و محیط‌های حرفه‌ای بسیار پرکاربرد است.

—————————-
nano
ویرایشگر ساده‌تر و مناسب افراد تازه‌کار:
nano test.txt

در پایین صفحه میانبرها نمایش داده می‌شوند.
Ctrl + O → ذخیره
Ctrl + X → خروج
Ctrl + W → جست‌وجو
برای LPIC باید حداقل vi/vim را بلد باشیم، چون ممکن است روی سرور فقط همین Editor در دسترس باشد.


=====================

قسمت دهم — شروع کار با vi 🐧

—————
vi سه حالت اصلی دارد:
1. Command Mode
حالت پیش‌فرض برای اجرای دستورات و حرکت داخل فایل.
vi test.txt

h → چپ
j → پایین
k → بالا
l → راست
0 → ابتدای خط
$ → انتهای خط
gg → ابتدای فایل
G → انتهای فایل
dd → حذف خط
yy → کپی خط
p → Paste
u → Undo
Ctrl + r → Redo
/text → جست‌وجو
n → نتیجه بعدی
x → حذف یک کاراکتر
2. Insert Mode
برای نوشتن و ویرایش متن.
از Command Mode:
i → نوشتن از محل فعلی
a → نوشتن بعد از کاراکتر فعلی
o → ایجاد خط جدید زیر خط فعلی
O → ایجاد خط جدید بالای خط فعلی

برای برگشت به Command Mode:
Esc

3. Ex Mode
برای ذخیره، خروج و دستورات مدیریتی فایل.
ابتدا : بزنید:
:w      ذخیره
:q خروج
:wq ذخیره و خروج
:q! خروج بدون ذخیره
:w! ذخیره اجباری
:x ذخیره و خروج

دستورات مهم‌تر vi
dw      حذف یک کلمه
D حذف از محل فعلی تا انتهای خط
dG حذف تا انتهای فایل
cw تغییر یک کلمه
cc تغییر کل خط
C تغییر تا انتهای خط
r جایگزینی یک کاراکتر
R ورود به حالت Replace
J چسباندن خط بعدی به خط فعلی
. تکرار آخرین دستور

نکته مهم
برای خروج از هر حالت و برگشت به Command Mode:
Esc

پس ترتیب اصلی را این‌طور به خاطر بسپار:
Command Mode → i → Insert Mode → Esc → Command Mode → : → Ex Mode


=====================

قسمت یازدهم — شروع کار با nano 🐧

—————

nano یک ویرایشگر متنی ساده و مناسب برای ویرایش فایل‌ها در لینوکس است.
باز کردن یا ایجاد فایل
nano test.txt

دستورات مهم Nano
Ctrl + O → ذخیره فایل
Ctrl + X → خروج
Ctrl + W → جست‌وجو
Ctrl + K → حذف/بریدن یک خط
Ctrl + U → برگرداندن خط Cut شده
Ctrl + G → نمایش راهنما
Ctrl + C → نمایش موقعیت Cursor
Ctrl + _ → رفتن به شماره خط مشخص
Alt + U → Undo
Alt + E → Redo
ذخیره و خروج
بعد از ویرایش:
Ctrl + O
Enter
Ctrl + X

یعنی:
Save → تأیید نام فایل → Exit

=====================
👍1👏1
قسمت دوازدهم — پردازش فایل ها 🐧

—————
. فرمان cat

دستور cat مخفف Concatenate است و برای نمایش، ترکیب و ایجاد فایل‌های متنی استفاده می‌شود.
نمایش محتویات فایل
cat alireza1

مثلاً:
ali
reza
linux

—————-
نمایش چند فایل پشت سر هم
cat alireza1 alireza2

محتوای alireza1 و سپس alireza2 نمایش داده می‌شود.
—————-

ترکیب دو فایل در فایل جدید
cat alireza1 alireza2 > alireza3

یعنی:
alireza1 + alireza2 → alireza3

مثلاً:
cat file1.txt file2.txt > file3.txt

⚠️ اگر alireza3 از قبل وجود داشته باشد، محتوای قبلی آن پاک و جایگزین می‌شود.
—————-
نمایش فایل جدید
cat alireza3

—————-
اضافه کردن به انتهای فایل
برای اضافه کردن محتوا بدون پاک کردن محتوای قبلی:
cat alireza1 alireza2 >> alireza3

تفاوت:
>

جایگزین می‌کند.
>>

به انتهای فایل اضافه می‌کند.

—————-
نمایش شماره خطوط
cat -n alireza1

مثلاً:
1  ali
2 reza
3 linux

—————-
گزینه‌های مهم cat:
cat -n file

شماره‌گذاری خطوط
cat -b file

شماره‌گذاری خطوط غیرخالی
cat -A file

نمایش کاراکترهای مخفی

=—————————=

فرمان paste
دستور paste فایل‌ها را خط‌به‌خط کنار یکدیگر قرار می‌دهد.
فرض کنیم:
alireza1
Ali
Reza
Hassan

alireza2
20
25
30

حالا:
paste alireza1 alireza2

خروجی:
Ali     20
Reza 25
Hassan 30

یعنی برخلاف cat که فایل‌ها را پشت سر هم قرار
—————-
ذخیره خروجی
paste alireza1 alireza2 > alireza4

بعد:
cat alireza4


——————
تغییر جداکننده
به‌صورت پیش‌فرض جداکننده Tab است.
می‌توانیم با -d جداکننده تعیین کنیم:
paste -d ',' alireza1 alireza2

خروجی:
Ali,20
Reza,25
Hassan,30

مثلاً برای ::
paste -d ':' alireza1 alireza2

———————

فرمان od

od مخفف Octal Dump است.
برای مشاهده محتوای فایل به شکل عددی و مخصوصاً بررسی داده‌های باینری استفاده می‌شود.
od alireza1

محتوای فایل را به صورت اعداد اکتال نمایش می‌دهد.
—————-
نمایش Hexadecimal
od -x alireza1

گزینه -x داده‌ها را به صورت Hexadecimal نمایش می‌دهد.
مثلاً:
0000000 6c41 0a69 6572

—————-
نمایش ASCII
od -c alireza1

کاراکترها را نمایش می‌دهد.
نمایش Hex + ASCII
یکی از حالت‌های کاربردی:
od -Ax -tx1z alireza1

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

=—————————=

فرمان split
split برای تقسیم کردن یک فایل بزرگ به چند فایل کوچک‌تر استفاده می‌شود.
مثلاً:
split alireza.txt

به صورت پیش‌فرض فایل را به بخش‌هایی تقسیم می‌کند.
فایل‌هایی شبیه:
xaa
xab
xac
xad

ساخته می‌شوند.
——————
تقسیم بر اساس تعداد خطوط
مثلاً هر فایل حداکثر 100 خط داشته باشد:
split -l 100 alireza.txt

یا:
split --lines=100 alireza.txt


————————

تعیین Prefix
به‌صورت پیش‌فرض نام فایل‌ها با x شروع می‌شود.
می‌توانیم خودمان Prefix تعیین کنیم:
split -l 100 alireza.txt part_

خروجی:
part_aa
part_ab
part_ac

———————-

تقسیم بر اساس حجم
مثلاً هر قسمت 1MB:
split -b 1M alireza.txt

یا:
split --bytes=1M alireza.txt

مثلاً 500KB:
split -b 500K alireza.txt


———————-

تقسیم به تعداد مشخص فایل
با -n:
split -n 5 alireza.txt

فایل را به 5 قسمت تقسیم می‌کند.

—————————-

ترکیب دوباره فایل‌های split شده
اگر فایل‌ها:
xaa
xab
xac

باشند:
cat xaa xab xac > original.txt

یا:
cat xa* > original.txt


=——————————=

5. فرمان sort
sort برای مرتب کردن خطوط فایل استفاده می‌شود.
مثلاً:
cat names.txt

Reza
Ali
Hassan
Mohammad

حالا:
sort names.txt

خروجی:
Ali
Hassan
Mohammad
Reza

——————

مرتب‌سازی برعکس
sort -r names.txt


فرض کنیم:
100
20
5
30

اگر بزنیم:
sort numbers.txt

ممکن است ترتیب لغوی بگیریم:
100
20
30
5

برای مرتب‌سازی عددی:
sort -n numbers.txt

نتیجه:
5
20
30
100


—————-

حذف خطوط تکراری هنگام Sort
sort -u names.txt

u یعنی Unique.

=—————————-=

فرمان uniq
uniq خطوط تکراری را حذف می‌کند.
مثلاً:
Ali
Ali
Reza
Reza
Reza
Hassan

اجرای:
uniq names.txt

نتیجه:
Ali
Reza
Hassan

⚠️ نکته بسیار مهم LPIC:
uniq فقط تکرارهای پشت سر هم را حذف می‌کند.
مثلاً:
Ali
Reza
Ali

با:
uniq file

هیچ Aliای حذف نمی‌شود.

برای حذف تمام موارد تکراری:
sort file | uniq

یا کوتاه‌تر:
sort -u file

تعداد تکرارها
uniq -c names.txt

مثلاً:
2 Ali
3 Reza
1 Hassan

فقط خطوط تکراری
uniq -d names.txt
👏1
فرمان ln
ln برای ایجاد Link بین فایل‌ها استفاده می‌شود.
دو نوع اصلی Link داریم:
Hard Link
Symbolic Link

Hard Link
ln alireza.txt backup.txt

حالا دو نام برای یک داده داریم:
alireza.txt
backup.txt
↓
همان inode

اگر یکی را حذف کنیم، داده تا زمانی که لینک دیگری وجود دارد باقی می‌ماند.

—————————

Symbolic Link
با -s:
ln -s alireza.txt shortcut.txt

ساختار:
shortcut.txt → alireza.txt

برای دیدن:
ls -l

مثلاً:
shortcut.txt -> alireza.txt

تفاوت مهم
ln file hard

Hard Link
ln -s file soft


——————————

فرمان less
برای مشاهده فایل‌های بزرگ استفاده می‌شود.
less /var/log/syslog

برخلاف cat لازم نیست کل فایل را یک‌جا روی صفحه نمایش دهد.
کلیدهای مهم:
Space       صفحه بعد
b صفحه قبل
↑ یک خط بالا
↓ یک خط پایین
g ابتدای فایل
G انتهای فایل
q خروج
/word جستجو
n نتیجه بعدی جستجو
N نتیجه قبلی

مثلاً:
less /var/log/syslog

بعد:
/ssh

برای پیدا کردن ssh.

———————————-

فرمان more
مشابه less است:
more file.txt

برای حرکت:
Space       صفحه بعد
Enter یک خط جلو
q خروج

تفاوت معروف:
less
امکانات بیشتری دارد و معمولاً انتخاب بهتری برای مشاهده فایل‌های بزرگ است.


—————————————

فرمان head
برای نمایش ابتدای فایل استفاده می‌شود.
head file.txt

به‌صورت پیش‌فرض 10 خط اول را نمایش می‌دهد.
نمایش 5 خط اول
head -n 5 file.txt

یا:
head -5 file.txt

نمایش تعداد بایت
head -c 20 file.txt

20 بایت اول را نمایش می‌دهد.

——————————-


فرمان tail
برعکس head، انتهای فایل را نمایش می‌دهد.
tail file.txt

10 خط آخر را نمایش می‌دهد.
5 خط آخر
tail -n 5 file.txt


———————————

⭐️ دستورات مهمی که برای LPIC-1 باید مسلط باشی
cat
cat -n
paste
paste -d
od
od -x
split
split -l
split -b
split -n
sort
sort -n
sort -r
sort -u
uniq
uniq -c
uniq -d
ln
ln -s
less
more
head
tail
tail -f

و از همه مهم‌تر، ترکیب این دستورات با | و > و >> است؛ چون در مباحث بعدی LPIC مرتب با آنها کار خواهیم کرد.
👏2
مهم‌ترین کاربرد tail در مدیریت سرور 🔥
گزینه -f:
tail -f /var/log/syslog

یعنی فایل را زنده دنبال کن.
هر چیزی که به انتهای فایل اضافه شود، بلافاصله نمایش داده می‌شود.
این برای مشاهده Live Log بسیار مهم است.
مثلاً:
tail -f /var/log/auth.log

برای مشاهده لحظه‌ای لاگ‌های احراز هویت.
خروج:
Ctrl + C
👏1
ترکیب دستورات 🔥
قدرت واقعی این دستورات زمانی مشخص می‌شود که آنها را با Pipe (|) ترکیب کنیم.
مثلاً:
cat names.txt | sort | uniq

یعنی:
cat
↓
خواندن فایل
↓
sort
↓
مرتب کردن
↓
uniq
↓
حذف تکراری‌ها

یا:
sort names.txt | uniq -c

تعداد تکرار هر نام را نشان می‌دهد.
👏1
یک مثال واقعی‌تر
فرض کن لاگ SSH داریم:
cat /var/log/auth.log | grep "Failed" | sort | uniq -c

این زنجیره:
auth.log
↓
پیدا کردن Failed
↓
مرتب کردن
↓
شمردن موارد تکراری

برای Linux Administration و Security بسیار مهم است.
👏2
قسمت سیزدهم — خلاصه کردن فایل ها 🐧

——————

wc
برای شمارش خط، کلمه و کاراکتر/بایت فایل استفاده می‌شود:
wc ali

فقط تعداد خطوط:
wc -l ali

——————————————
cut

برای جدا کردن بخش‌هایی از هر خط استفاده می‌شود.
مثلاً فایل /etc/passwd با : جدا شده است:
cut -d ":" -f 1-7 /etc/passwd

ذخیره خروجی در فایل:
cut -d ":" -f 1-7 /etc/passwd > user_shell

-d → مشخص کردن جداکننده
-f → انتخاب Field

————————

md5sum
برای تولید MD5 Hash فایل:
md5sum alireza


-----
sha256sum

برای تولید SHA-256 Hash:
sha256sum alireza


----------
sha512sum

برای تولید SHA-512 Hash:
sha512sum alireza

Hash برای بررسی Integrity فایل کاربرد دارد؛ اگر محتوای فایل تغییر کند، Hash آن نیز تغییر می‌کند.


==================

قسمت چهاردهم — جستجو با فرمان grep 🐧

——————
خط (Line) چیست؟
در فایل‌های متنی، هر بخش از متن که با Enter از بخش بعدی جدا شود، یک Line محسوب می‌شود.

grep چیست؟
grep برای جستجو و پیدا کردن متن، کلمه یا الگو (Pattern) داخل فایل‌ها و خروجی دستورات استفاده می‌شود.
ساختار کلی:
grep [option] "pattern" file

مثال‌های ساده

جستجوی یک کلمه در فایل:
grep "root" /etc/passwd


جستجوی بدون حساسیت به حروف بزرگ و کوچک:
grep -i "root" /etc/passwd


نمایش شماره خط:
grep -n "root" /etc/passwd


جستجوی چند کلمه:
grep -E "root|admin|user" /etc/passwd


جستجو در خروجی یک Command

با Pipe:
ps aux | grep ssh

یعنی خروجی ps aux را به grep می‌دهیم تا فقط خطوط مربوط به ssh نمایش داده شوند.

مدل‌های مهم جستجو با grep

1. جستجوی معمولی
grep "linux" file.txt


2. جستجوی معکوس —
-v
خطوطی که شامل کلمه نیستند:
grep -v "linux" file.txt


3. جستجوی بدون حساسیت —
-i
grep -i "Linux" file.txt


4. نمایش شماره خط —
-n
grep -n "linux" file.txt


5. جستجوی کلمه کامل —
-w
grep -w "root" /etc/passwd

مثلاً root را پیدا می‌کند ولی root123 را Match نمی‌کند.

6. جستجوی بازگشتی — -r
جستجو داخل پوشه و زیرپوشه‌ها:
grep -r "password" /etc/


7. نمایش تعداد Matchها — -c
grep -c "root" /etc/passwd


ترکیب چند Option
grep -in "error" logfile

یعنی:
-i → حساس نبودن به حروف
-n → نمایش شماره خط
"error" → عبارت جستجو
logfile → فایل موردنظر

نکته مهم

grep فقط برای جستجوی یک کلمه نیست؛ می‌توانیم با Regular Expression (Regex) الگوهای پیچیده‌تر هم جستجو کنیم.
مثلاً:
grep -E "^[0-9]+" file.txt

خط‌هایی را پیدا می‌کند که با یک یا چند عدد شروع می‌شوند.
=======================
❤1👏1
قسمت پانزدهم — redirect 🐧

stdin
— ورودی استاندارد
معمولاً ورودی از Keyboard گرفته می‌شود.
cat

هر چیزی تایپ کنید، cat دریافت و نمایش می‌دهد. برای پایان:
Ctrl + D

stdout — خروجی استاندارد
خروجی عادی برنامه در Terminal نمایش داده می‌شود:
ls

stderr — خطای استاندارد
پیغام‌های خطا از stderr خارج می‌شوند:
ls /abc

Redirection با >
خروجی stdout را داخل فایل می‌فرستد.
echo "hello" > test.txt

اگر فایل وجود داشته باشد، محتوای قبلی جایگزین می‌شود.

>> — اضافه کردن به فایل
echo "hello" >> test.txt

محتوای جدید به انتهای فایل اضافه می‌شود.

< — گرفتن ورودی از فایل
cat < test.txt

یعنی محتوای test.txt به‌عنوان stdin وارد cat می‌شود.
مثال:
tr " " ":" < no

تمام Spaceهای ورودی را به : تبدیل می‌کند.

2> — انتقال خطا
شماره stderr برابر 2 است:
ls /abc 2> error.txt

خروجی خطا داخل error.txt ذخیره می‌شود.

2>> — اضافه کردن خطا
ls /abc 2>> error.txt

خطا را به انتهای فایل اضافه می‌کند.

1> — انتقال stdout
شماره stdout برابر 1 است:
ls 1> output.txt

معادل این است:
ls > output.txt

انتقال stdout و stderr همزمان
روش رایج:
command > output.txt 2> error.txt

یا در Bash:
command &> all.txt

یعنی خروجی عادی و خطا هر دو داخل یک فایل می‌روند.

اضافه کردن stdout و stderr به یک فایل
command >> all.txt 2>&1

اینجا:
stdout → all.txt
stderr → stdout → all.txt

ترتیب مهم است.

2>&1 چیست؟
یعنی:
stderr
را به همان جایی بفرست که

stdout
می‌رود.

مثلاً:
command > output.txt 2>&1

هم خروجی معمولی و هم خطا داخل output.txt ذخیره می‌شوند.

&> در Bash
روش کوتاه‌تر:
command &> output.txt

هر دو مورد را Redirect می‌کند:
stdout + stderr → output.txt

/dev/null
یک فایل ویژه است که هر چیزی داخل آن Redirect شود، دور ریخته می‌شود.
command > /dev/null

فقط خروجی عادی حذف می‌شود.
برای حذف خطا:
command 2> /dev/null

برای حذف هر دو:
command &> /dev/null

این مورد در مدیریت سرور و اسکریپت‌نویسی خیلی مهم است.

=============================

قسمت شانزدهم — pipe 🐧
————————

قسمت شانزدهم — Pipe 🐧
Pipe (|) برای انتقال خروجی یک دستور به‌عنوان ورودی دستور بعدی استفاده می‌شود.
ساختار:
command1 | command2

یعنی:
command1 → stdout → | → stdin → command2

مثال‌های ساده
نمایش فایل‌ها و جستجوی یک مورد:
ls | grep "test"

نمایش پردازش‌های مربوط به SSH:
ps aux | grep ssh

شمارش تعداد فایل‌ها:
ls | wc -l

نمایش کاربران دارای Shell خاص:
cat /etc/passwd | grep "/bin/bash"

چند Pipe پشت سر هم
می‌توانیم چند دستور را به هم متصل کنیم:
cat /etc/passwd | grep "/bin/bash" | cut -d ":" -f 1

اینجا:
cat
↓
grep
↓
cut

یعنی ابتدا فایل خوانده می‌شود، سپس خطوط موردنظر پیدا می‌شوند و در نهایت فقط Field اول نمایش داده می‌شود.
Pipe با > ترکیب می‌شود
ps aux | grep ssh > ssh.txt

خروجی grep داخل فایل ssh.txt ذخیره می‌شود.

تفاوت Pipe و Redirection
command > file

خروجی را به فایل می‌فرستد.
command1 | command2

خروجی دستور اول را به ورودی دستور دوم می‌دهد.

نکته مهم
Pipe معمولاً روی stdout کار می‌کند؛ یعنی خروجی استاندارد را به stdin دستور بعدی منتقل می‌کند.

stdin  →  0
stdout → 1
stderr → 2

مثال کاربردی LPIC:
cat /etc/passwd | grep root | cut -d ":" -f 1

خروجی هر مرحله وارد مرحله بعدی می‌شود.

================

قسمت هفدهم — sed 🐧
————

sed (Stream Editor) برای جستجو، حذف، جایگزینی و ویرایش متن در فایل‌ها استفاده می‌شود؛ بدون اینکه لازم باشد فایل را با Editor باز کنیم.
جایگزینی متن
sed 's/unix/linux/' file.txt

اولین unix در هر خط را به linux تبدیل می‌کند.
جایگزینی همه موارد در هر خط
sed 's/unix/linux/g' file.txt

g یعنی همه موارد.
جایگزینی و ذخیره تغییرات در فایل
sed -i 's/unix/linux/g' file.txt

-i یعنی تغییرات مستقیماً داخل فایل اعمال شود.
حذف یک خط
مثلاً حذف خط سوم:
sed '3d' file.txt

حذف چند خط
sed '2,5d' file.txt

خطوط ۲ تا ۵ را حذف می‌کند.
نمایش یک خط خاص
sed -n '5p' file.txt

فقط خط پنجم را نمایش می‌دهد.
نمایش محدوده‌ای از خطوط
sed -n '2,5p' file.txt

خطوط ۲ تا ۵ را نمایش می‌دهد.
اضافه کردن متن
قبل از خط سوم:
sed '3i\Hello' file.txt

بعد از خط سوم:
sed '3a\Hello' file.txt

مثال جذاب 🔥
فرض کنید فایل این باشد:
unix is great
unix is free
unix is powerful

با:
sed -i 's/unix/Linux/g' file.txt

تبدیل می‌شود به:
Linux is great
Linux is free
Linux is powerful

خلاصه دستورات مهم
s   → جایگزینی
g → همه موارد
-i → اعمال تغییر روی فایل
d → حذف
p → نمایش
-n → جلوگیری از نمایش خودکار
i → اضافه کردن قبل از خط
a → اضافه کردن بعد از خط

نکته LPIC: یکی از مهم‌ترین کاربردهای sed، ویرایش سریع فایل‌های کانفیگ و استفاده در Shell Script است.

================
👏1
قسمت هیجدهم - کار با xargs
—————————

xargs
خروجی یک دستور را می‌گیرد و به‌عنوان Argument به دستور دیگری می‌دهد.
ساختار کلی:
command | xargs [options] command

دستورات و Optionهای مهم xargs
-n → تعداد Argument در هر اجرا:
echo "1 2 3 4 5" | xargs -n 2 echo

هر بار ۲ Argument به echo می‌دهد.
-I → مشخص کردن محل قرارگیری Argument:
echo "ali reza" | xargs -n 1 -I {} echo "Hello {}"

{} با مقدار ورودی جایگزین می‌شود.
-d → مشخص کردن جداکننده:
echo "ali:reza:amir" | xargs -d ":" echo

-0 → دریافت ورودی با Null Separator؛ معمولاً همراه find -print0 برای نام فایل‌های دارای فاصله:
find . -type f -print0 | xargs -0 ls

-a → خواندن ورودی از فایل:
xargs -a users.txt echo

-r → اگر ورودی خالی بود، دستور را اجرا نکن:
cat empty.txt | xargs -r echo

-t → قبل از اجرا، دستور ساخته‌شده را نمایش بده:
echo "file1 file2" | xargs -t rm

-p → قبل از اجرای هر دستور تأیید می‌گیرد:
echo "file1 file2" | xargs -p rm

-L → تعداد خطوط ورودی در هر اجرا:
printf "ali\nreza\namir\n" | xargs -L 1 echo

-P → اجرای موازی چند Process:
cat urls.txt | xargs -n 1 -P 4 ping -c 1

یعنی حداکثر ۴ کار همزمان اجرا می‌شوند.
-s → حداکثر اندازه Command ساخته‌شده:
echo "1 2 3" | xargs -s 20 echo

-E → مشخص کردن رشته پایان ورودی:
echo "1 2 STOP 3 4" | xargs -E STOP echo

🔥 مثال مهم: حذف هزاران فایل
find /tmp -type f -name "*.log" -print0 | xargs -0 rm

یا اگر می‌خواهی با هر فایل جداگانه اجرا شود:
find /tmp -type f -name "*.log" -print0 | xargs -0 -n 1 rm

ترکیب‌های خیلی کاربردی
find . -type f -name "*.txt" -print0 | xargs -0 wc -l

تعداد خطوط فایل‌های TXT.
find . -type f -name "*.log" -print0 | xargs -0 -P 4 gzip

فشرده‌سازی موازی با ۴ Process.
خلاصه برای حفظ کردن
-n   تعداد Argument در هر اجرا
-I جایگزین کردن Argument
-d تعیین جداکننده
-0 ورودی Null-separated
-a خواندن از فایل
-r اجرا نکردن در ورودی خالی
-t نمایش دستور قبل از اجرا
-p تأیید قبل از اجرا
-L تعداد خطوط در هر اجرا
-P اجرای موازی
-s محدودیت اندازه Command
-E تعیین پایان ورودی

مهم‌ترین ترکیب LPIC:
find + xargs -0 مخصوصاً برای کار با تعداد زیادی فایل و نام فایل‌های دارای فاصله بسیار کاربردی است.
👏1