راهنمای جامع ممیزی و سخت‌سازی لینوکس با Lynis ۳.۱.۵ — از امتیاز ۵۶ به ۸۵+

آموزش عملی ممیزی امنیتی سرورهای لینوکس با Lynis ۳.۱.۵ — از نصب و اسکن اولیه تا سخت‌سازی SSH، auditd، sysctl و رساندن Hardening Index از ۵۶ به ۸۵+. با نمونه‌کدهای آماده و اتوماسیون Ansible.

سخت‌سازی لینوکس با Lynis ۳.۱.۵ — راهنمای ۲۰۲۶

مقدمه: چرا ممیزی امنیتی دوره‌ای سرورها حیاتی است؟

یه سؤال ساده: آخرین بار کِی یه اسکن امنیتی جدی روی سرورهای لینوکسی‌تان اجرا کردید؟ اگه جوابتون «نمی‌دونم» یا «هیچ‌وقت» هست، تنها نیستید — ولی باید بدونید که دارید روی لبه تیغ راه می‌رید.

طبق آمار سال ۲۰۲۶، تعداد آسیب‌پذیری‌های شناخته‌شده هسته لینوکس از ۵٬۵۰۰ مورد در سال ۲۰۲۵ فراتر رفته — یعنی روزانه ۸ تا ۹ CVE جدید فقط برای کرنل. حالا این رو ضرب کنید در بسته‌های نرم‌افزاری، سرویس‌های شبکه و تنظیمات سیستم‌عامل. نتیجه؟ سطح حمله‌ای که هر روز بزرگ‌تر میشه.

مشکل اصلی اینجاست: بیشتر مدیران سیستم فایروال رو تنظیم می‌کنن، SSH رو سخت می‌کنن و فکر می‌کنن کارشون تموم شده. من خودم سال‌ها همین اشتباه رو می‌کردم. ولی واقعیت اینه که سخت‌سازی یک فرآیند مداوم هست، نه یک کار یکباره. تنظیمات پیش‌فرض بیشتر توزیع‌های لینوکس برای راحتی استفاده بهینه شدن، نه برای امنیت. سیاست‌های رمز عبور ضعیف، سرویس‌های غیرضروری فعال، مجوزهای فایل‌سیستم سهل‌انگارانه و پارامترهای هسته بدون تنظیم — اینها همه نقاط ضعفی هستن که یه مهاجم باتجربه ظرف چند دقیقه پیداشون می‌کنه.

اینجاست که Lynis وارد میشه.

Lynis یه ابزار متن‌باز و قدرتمنده که سرورتان رو از بالا تا پایین اسکن می‌کنه، نقاط ضعف رو شناسایی می‌کنه و دقیقاً بهتون میگه چه کاری انجام بدید تا امنیت سیستم رو بالا ببرید. توی این راهنما قراره از صفر شروع کنیم: نصب Lynis، اجرای اسکن، درک نتایج و مهم‌تر از همه، اجرای عملی سخت‌سازی تا امتیاز Hardening Index رو از ۵۰ و خُرده‌ای به ۸۵ به بالا برسونیم.

Lynis چیست و چرا بهترین ابزار ممیزی امنیتی لینوکس است؟

Lynis یک ابزار ممیزی امنیتی متن‌باز و رایگان هست که از سال ۲۰۰۷ توسط شرکت CISOfy توسعه داده میشه. این ابزار مستقیماً روی سیستم میزبان اجرا میشه (host-based) و بیش از ۳۰۰ تست امنیتی مختلف رو انجام میده — از بررسی تنظیمات هسته و سرویس‌ها گرفته تا مجوزهای فایل، تنظیمات شبکه، رمزنگاری و انطباق با استانداردها.

آخرین نسخه پایدار در زمان نوشتن این مقاله Lynis 3.1.5 هست که پشتیبانی از OpenWrt، شناسایی آنتی‌ویروس Bitdefender روی لینوکس و بهبودهایی در شناسایی توزیع‌ها (مثل openSUSE Tumbleweed-Slowroll) رو اضافه کرده.

چرا Lynis و نه ابزارهای دیگه؟

بیاید یه مقایسه سریع داشته باشیم:

  • Lynis در مقابل Nessus: ابزار Nessus یه اسکنر آسیب‌پذیری شبکه‌ای هست — از بیرون سیستم رو اسکن می‌کنه و تجاری هم هست. Lynis میزبان‌محور هست، یعنی از داخل سیستم عمیق‌تر بررسی می‌کنه و رایگانه.
  • Lynis در مقابل OpenSCAP: هر دو ابزار ممیزی هستن، ولی OpenSCAP بیشتر روی انطباق با استانداردهای خاص (مثل SCAP و NIST) تمرکز داره و نیاز به پروفایل‌های XCCDF داره. Lynis ماژولار و فرصت‌طلبانه عمل می‌کنه — هر چیزی رو که پیدا کنه تست می‌کنه.
  • Lynis در مقابل OpenVAS: ابزار OpenVAS (که الان GVM نام داره) یه اسکنر آسیب‌پذیری شبکه‌ای هست، مشابه Nessus ولی متن‌باز. هدفش متفاوته — اسکن شبکه در مقابل ممیزی میزبان.

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

نصب Lynis ۳.۱.۵ — سه روش مختلف

Lynis تقریباً هیچ وابستگی نداره و نصبش خیلی ساده‌ست. سه روش داریم:

روش ۱: نصب از مخزن رسمی CISOfy (توصیه‌شده)

مخازن توزیع‌ها معمولاً نسخه قدیمی‌تری دارن. برای دسترسی به آخرین نسخه، از مخزن رسمی استفاده کنید:

# Debian / Ubuntu
sudo apt install apt-transport-https ca-certificates
curl -fsSL https://packages.cisofy.com/keys/cisofy-software-public.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/cisofy-software-public.gpg
echo "deb [arch=amd64,arm64 signed-by=/etc/apt/trusted.gpg.d/cisofy-software-public.gpg] https://packages.cisofy.com/community/lynis/deb/ stable main" | sudo tee /etc/apt/sources.list.d/cisofy-lynis.list
sudo apt update
sudo apt install lynis

# RHEL / CentOS / AlmaLinux / Fedora
cat <<EOF | sudo tee /etc/yum.repos.d/cisofy-lynis.repo
[cisofy-lynis]
name=CISOfy Lynis Repository
baseurl=https://packages.cisofy.com/community/lynis/rpm/
gpgcheck=1
gpgkey=https://packages.cisofy.com/keys/cisofy-software-rpms-public.key
enabled=1
EOF
sudo dnf install lynis

روش ۲: نصب از مخزن توزیع

سریع‌ترین روش، ولی ممکنه نسخه قدیمی‌تری نصب بشه:

# Debian / Ubuntu
sudo apt update && sudo apt install lynis

# RHEL / Fedora
sudo dnf install lynis

# Arch Linux
sudo pacman -S lynis

روش ۳: دانلود مستقیم از GitHub

این روش نیازی به نصب نداره — مستقیم از مخزن GitHub اجرا می‌کنید:

git clone https://github.com/CISOfy/lynis.git
cd lynis
sudo ./lynis audit system

بعد از نصب، نسخه رو بررسی کنید:

lynis --version
# خروجی مورد انتظار: 3.1.5

اجرای اولین اسکن امنیتی

خب، بریم سراغ اصل ماجرا. اسکن کامل سیستم با یه دستور ساده شروع میشه:

sudo lynis audit system

نکته مهم: حتماً با sudo اجرا کنید. اگه بدون دسترسی root اجرا کنید، Lynis خیلی از تست‌های مهم (مثل بررسی تنظیمات هسته، مجوزهای فایل‌سیستم و سرویس‌ها) رو رد می‌کنه و امتیاز نهایی‌تان واقعی نیست. یه‌بار خودم این اشتباه رو کردم و کلی وقت تلف شد تا فهمیدم چرا نتایج ناقصه!

اگه می‌خواید اسکن بدون توقف اجرا بشه (مثلاً برای خودکارسازی):

sudo lynis audit system -Q

یا اگه فقط می‌خواید یه گروه خاص از تست‌ها رو اجرا کنید:

# فقط تست‌های مربوط به SSH
sudo lynis audit system --tests-from-group ssh

# فقط تست‌های فایروال و شبکه
sudo lynis audit system --tests-from-group firewalls networking

اسکن کامل معمولاً بین ۱ تا ۵ دقیقه طول می‌کشه، بسته به اینکه چقدر نرم‌افزار روی سیستم نصب باشه.

درک خروجی و شاخص سخت‌سازی (Hardening Index)

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

شاخص سخت‌سازی (Hardening Index)

این عدد بین ۰ تا ۱۰۰ هست و نشون میده سیستم شما چقدر سخت‌سازی شده. معمولاً یه سرور Ubuntu یا Debian تازه نصب‌شده امتیازی بین ۵۰ تا ۶۲ می‌گیره. هدف ما رسوندن این عدد به ۸۵+ هست.

Lynis security scan details:

  Hardening index : 56 [###########         ]
  Tests performed : 268
  Plugins enabled : 2

اولین بار که این عدد رو دیدم، صادقانه یکم ناامید شدم. ولی نگران نباشید — با چند تغییر هدفمند، خیلی سریع بالا میره.

هشدارها (Warnings)

هشدارها بحرانی‌ترین مسائل هستن و باید فوری رسیدگی بشن:

Warnings (3):
  ----------------------------
  ! Found one or more vulnerable packages. [PKGS-7392]
  ! Reboot of system is most likely needed [KRNL-5830]
  ! No password set for single mode [AUTH-9308]

پیشنهادها (Suggestions)

اینها اقداماتی هستن که امنیت رو بهبود میدن ولی بحرانی نیستن. هر پیشنهاد یه شناسه تست (Test ID) داره که می‌تونید جزئیات بیشتری ازش بگیرید:

# دیدن جزئیات یه پیشنهاد خاص
sudo lynis show details SSH-7408

فایل‌های گزارش

Lynis دو فایل مهم تولید می‌کنه:

  • /var/log/lynis.log — جزئیات کامل فنی اسکن
  • /var/log/lynis-report.dat — خلاصه ساختاریافته نتایج

برای استخراج سریع پیشنهادها از فایل گزارش:

grep "^suggestion" /var/log/lynis-report.dat | sed 's/suggestion\[\]=//' | sort

سخت‌سازی عملی: از امتیاز ۵۶ به ۸۵+

خب، رسیدیم به بخش اصلی. الان قراره قدم‌به‌قدم تغییراتی اعمال کنیم که امتیاز Lynis رو به‌شکل محسوسی بالا ببره. هر بخش رو با تأثیر تقریبی‌اش روی امتیاز مشخص کردم تا بدونید وقتتان رو کجا بذارید.

۱. سخت‌سازی SSH (تأثیر: +۵ تا +۸ امتیاز)

SSH معمولاً اولین جایی هست که Lynis کلی پیشنهاد برای بهبودش داره. فایل /etc/ssh/sshd_config رو ویرایش کنید:

# تنظیمات امنیتی SSH — ویرایش /etc/ssh/sshd_config

# غیرفعال کردن ورود root
PermitRootLogin no

# فقط پروتکل ۲
Protocol 2

# محدود کردن تلاش‌های احراز هویت
MaxAuthTries 3
MaxSessions 3

# غیرفعال کردن رمز عبور خالی
PermitEmptyPasswords no

# فعال کردن احراز هویت کلید عمومی
PubkeyAuthentication yes

# غیرفعال کردن X11 Forwarding
X11Forwarding no

# غیرفعال کردن فورواردینگ TCP و Agent
AllowTcpForwarding no
AllowAgentForwarding no

# تنظیم فاصله زمانی keepalive
ClientAliveInterval 300
ClientAliveCountMax 2

# استفاده از الگوریتم‌های رمزنگاری قوی
Ciphers [email protected],[email protected],[email protected]
MACs [email protected],[email protected]
KexAlgorithms [email protected],curve25519-sha256,[email protected]

# تنظیم بنر هشدار
Banner /etc/issue.net

# محدود کردن لاگین به کاربران خاص
AllowUsers deployer admin

# ثبت سطح بالای لاگ
LogLevel VERBOSE

بعد از ذخیره، سرویس SSH رو ری‌استارت کنید:

sudo sshd -t && sudo systemctl restart sshd

هشدار جدی: قبل از ری‌استارت SSH، حتماً مطمئن بشید که یه جلسه SSH دیگه باز دارید یا دسترسی کنسول فیزیکی/IPMI دارید. اشتباه در تنظیمات SSH می‌تونه دسترسی‌تان رو کامل قطع کنه — و من چند مدیر سیستم رو می‌شناسم که این درس رو به سخت‌ترین شکل ممکن یاد گرفتن!

۲. فعال‌سازی و پیکربندی auditd (تأثیر: +۴ تا +۶ امتیاز)

سیستم حسابرسی لینوکس (auditd) رویدادهای امنیتی مهم رو ثبت می‌کنه. Lynis نبود auditd رو به‌عنوان یه نقص جدی گزارش می‌کنه:

# نصب auditd
sudo apt install auditd audispd-plugins    # Debian/Ubuntu
sudo dnf install audit                      # RHEL/Fedora

# فعال‌سازی سرویس
sudo systemctl enable auditd
sudo systemctl start auditd

حالا قوانین حسابرسی پایه رو اضافه کنید. فایل /etc/audit/rules.d/hardening.rules رو بسازید:

# نظارت بر تغییرات فایل‌های حساس
-w /etc/passwd -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/gshadow -p wa -k identity
-w /etc/sudoers -p wa -k sudoers
-w /etc/sudoers.d/ -p wa -k sudoers

# نظارت بر تنظیمات SSH
-w /etc/ssh/sshd_config -p wa -k sshd_config

# نظارت بر تغییرات زمان سیستم
-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time-change
-a always,exit -F arch=b64 -S clock_settime -k time-change
-w /etc/localtime -p wa -k time-change

# نظارت بر عملیات mount
-a always,exit -F arch=b64 -S mount -F auid>=1000 -F auid!=4294967295 -k mounts

# نظارت بر حذف فایل
-a always,exit -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete

# غیرقابل تغییر کردن قوانین (باید آخرین قانون باشد)
-e 2

قوانین رو بارگذاری کنید:

sudo augenrules --load
sudo auditctl -l    # بررسی قوانین فعال

۳. تنظیمات sysctl برای امنیت هسته (تأثیر: +۵ تا +۷ امتیاز)

این بخش شاید به نظر خسته‌کننده بیاد، ولی تأثیرش واقعاً زیاده. پارامترهای هسته لینوکس تأثیر مستقیم روی امنیت دارن. فایل /etc/sysctl.d/99-security-hardening.conf رو بسازید:

# === حفاظت شبکه ===

# غیرفعال کردن IP forwarding (اگه روتر نیست)
net.ipv4.ip_forward = 0
net.ipv6.conf.all.forwarding = 0

# فعال کردن حفاظت SYN flood
net.ipv4.tcp_syncookies = 1

# غیرفعال کردن ارسال ICMP redirect
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

# نادیده گرفتن ICMP redirect
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0

# فعال کردن بررسی آدرس مبدأ (RP filter)
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# ثبت بسته‌های مشکوک Martian
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1

# نادیده گرفتن broadcast ping
net.ipv4.icmp_echo_ignore_broadcasts = 1

# نادیده گرفتن پیام‌های ICMP خطادار
net.ipv4.icmp_ignore_bogus_error_responses = 1

# غیرفعال کردن source routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
net.ipv6.conf.default.accept_source_route = 0

# === حفاظت هسته ===

# فعال کردن ASLR
kernel.randomize_va_space = 2

# محدود کردن دسترسی به dmesg
kernel.dmesg_restrict = 1

# محدود کردن دسترسی به آدرس‌های هسته
kernel.kptr_restrict = 2

# غیرفعال کردن SysRq (به جز sync و reboot)
kernel.sysrq = 4

# محدود کردن core dump
fs.suid_dumpable = 0

# محدود کردن ptrace
kernel.yama.ptrace_scope = 2

اعمال تنظیمات:

sudo sysctl --system

۴. سیاست‌های رمز عبور (تأثیر: +۳ تا +۵ امتیاز)

تنظیمات پیش‌فرض رمز عبور معمولاً خیلی سهل‌انگارانه هستن. اصلاحش خیلی سریعه:

# ویرایش /etc/login.defs
sudo sed -i 's/^PASS_MAX_DAYS.*/PASS_MAX_DAYS   90/' /etc/login.defs
sudo sed -i 's/^PASS_MIN_DAYS.*/PASS_MIN_DAYS   1/' /etc/login.defs
sudo sed -i 's/^PASS_WARN_AGE.*/PASS_WARN_AGE   14/' /etc/login.defs

# تنظیم umask پیش‌فرض امن‌تر
sudo sed -i 's/^UMASK.*/UMASK           027/' /etc/login.defs

همچنین ماژول PAM رو برای اعمال پیچیدگی رمز عبور نصب و پیکربندی کنید:

# نصب ماژول کیفیت رمز عبور
sudo apt install libpam-pwquality    # Debian/Ubuntu
sudo dnf install pam_pwquality       # RHEL/Fedora

فایل /etc/security/pwquality.conf رو ویرایش کنید:

# حداقل طول رمز عبور
minlen = 12
# حداقل تعداد کلاس‌های کاراکتر مختلف
minclass = 3
# حداکثر تکرار کاراکتر متوالی
maxrepeat = 3
# عدم استفاده از نام کاربری در رمز عبور
usercheck = 1
# اعمال بررسی دیکشنری
dictcheck = 1

۵. فعال‌سازی و پیکربندی فایروال (تأثیر: +۳ تا +۴ امتیاز)

اگه فایروال فعال نباشه، Lynis جدی‌ترین هشدارها رو میده. اگه قبلاً nftables رو تنظیم نکردید (که ما در مقاله قبلی توضیح دادیم)، حداقل UFW رو فعال کنید:

# فعال‌سازی UFW با قوانین پایه
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw enable

# بررسی وضعیت
sudo ufw status verbose

۶. نصب و پیکربندی ابزارهای تکمیلی (تأثیر: +۳ تا +۵ امتیاز)

Lynis وجود بعضی ابزارهای امنیتی رو بررسی می‌کنه و نبودشون امتیاز رو پایین میاره. نصب اینها ساده‌ست و تأثیرشون فوریه:

# نصب ابزارهای مورد انتظار Lynis
sudo apt install \
  apt-show-versions \
  libpam-tmpdir \
  needrestart \
  fail2ban \
  acct \
  sysstat \
  apt-listchanges \
  debsums            # Debian/Ubuntu

# فعال‌سازی fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

# فعال‌سازی حسابداری فرآیندها
sudo systemctl enable acct
sudo systemctl start acct

۷. تنظیمات مجوز فایل‌سیستم (تأثیر: +۲ تا +۳ امتیاز)

# تنظیم مجوز فایل‌های حساس
sudo chmod 600 /etc/crontab
sudo chmod 600 /etc/ssh/sshd_config
sudo chmod 700 /etc/cron.d
sudo chmod 700 /etc/cron.daily
sudo chmod 700 /etc/cron.hourly
sudo chmod 700 /etc/cron.weekly
sudo chmod 700 /etc/cron.monthly

# تنظیم مالکیت صحیح
sudo chown root:root /etc/crontab
sudo chown root:root /etc/ssh/sshd_config

۸. غیرفعال کردن سرویس‌ها و پروتکل‌های غیرضروری (تأثیر: +۲ تا +۳ امتیاز)

# غیرفعال کردن پروتکل‌های قدیمی و غیرضروری
echo "install dccp /bin/true" | sudo tee /etc/modprobe.d/disable-dccp.conf
echo "install sctp /bin/true" | sudo tee /etc/modprobe.d/disable-sctp.conf
echo "install rds /bin/true" | sudo tee /etc/modprobe.d/disable-rds.conf
echo "install tipc /bin/true" | sudo tee /etc/modprobe.d/disable-tipc.conf

# غیرفعال کردن USB storage (در صورت عدم نیاز)
echo "install usb-storage /bin/true" | sudo tee /etc/modprobe.d/disable-usb-storage.conf

اجرای مجدد اسکن و بررسی نتایج

بعد از اعمال تمام تغییرات بالا، وقتشه دوباره Lynis رو اجرا کنیم و نتیجه رو ببینیم:

sudo lynis audit system -Q

اگه همه مراحل رو درست انجام داده باشید، باید شاخص سخت‌سازی رو در محدوده ۸۲ تا ۸۸ ببینید — بسته به توزیع و نرم‌افزارهای نصب‌شده. خیلی فرق می‌کنه با اون ۵۶ اولیه، نه؟

Lynis security scan details:

  Hardening index : 85 [#################   ]
  Tests performed : 275
  Plugins enabled : 2

  Warnings  : 0
  Suggestions : 12

نکته مهم: رسیدن به امتیاز ۱۰۰ نه عملی هست و نه لزوماً هدف خوبی. بعضی پیشنهادها (مثل حذف gcc) ممکنه با نیازهای واقعی سرور شما تداخل داشته باشن. هدف واقعی رفع تمام هشدارها و رسیدن به بالای ۸۰ هست — اینو از تجربه میگم.

اتوماسیون ممیزی با Cron و ارسال گزارش

ممیزی امنیتی نباید فقط یک‌بار اجرا بشه. بیاید یه cron job تنظیم کنیم که هفته‌ای یکبار اسکن انجام بده و گزارش رو ایمیل کنه:

# ایجاد اسکریپت ممیزی خودکار
sudo tee /usr/local/bin/lynis-weekly-audit.sh <<'SCRIPT'
#!/bin/bash
REPORT_DATE=$(date +%Y-%m-%d)
REPORT_DIR="/var/log/lynis/reports"
mkdir -p "$REPORT_DIR"

# اجرای اسکن
lynis audit system --quiet --cronjob > "$REPORT_DIR/lynis-$REPORT_DATE.log" 2>&1

# استخراج امتیاز
SCORE=$(grep "Hardening index" "$REPORT_DIR/lynis-$REPORT_DATE.log" | awk '{print $4}')
WARNINGS=$(grep -c "Warning" "$REPORT_DIR/lynis-$REPORT_DATE.log")

# ارسال خلاصه (اگه mailutils نصب باشه)
echo "Lynis Audit Report - $REPORT_DATE
Score: $SCORE
Warnings: $WARNINGS
Full report: $REPORT_DIR/lynis-$REPORT_DATE.log" | mail -s "Lynis Weekly Audit: Score $SCORE" [email protected]
SCRIPT

sudo chmod +x /usr/local/bin/lynis-weekly-audit.sh

اضافه کردن به crontab:

# اجرا هر یکشنبه ساعت ۳ صبح
echo "0 3 * * 0 root /usr/local/bin/lynis-weekly-audit.sh" | sudo tee /etc/cron.d/lynis-weekly

یکپارچه‌سازی با Ansible برای سخت‌سازی خودکار

اگه چندین سرور دارید، سخت‌سازی دستی هرکدوم واقعاً عملی نیست. با Ansible می‌تونید کل فرآیند رو خودکار کنید. نقش devsec.os_hardening از Ansible Galaxy دقیقاً برای همین کاره:

# نصب نقش‌های سخت‌سازی
ansible-galaxy install devsec.os_hardening
ansible-galaxy install devsec.ssh_hardening

یه playbook ساده برای سخت‌سازی:

# hardening-playbook.yml
---
- hosts: all
  become: yes
  roles:
    - devsec.os_hardening
    - devsec.ssh_hardening
  tasks:
    - name: Install Lynis
      apt:
        name: lynis
        state: present
      when: ansible_os_family == "Debian"

    - name: Run Lynis audit
      command: lynis audit system --quiet --cronjob
      register: lynis_result
      changed_when: false

    - name: Extract hardening score
      shell: grep "Hardening index" /var/log/lynis.log | tail -1
      register: lynis_score
      changed_when: false

    - name: Display score
      debug:
        msg: "{{ lynis_score.stdout }}"

اجرا:

ansible-playbook -i inventory.ini hardening-playbook.yml

ترکیب Lynis با OpenSCAP برای انطباق کامل

Lynis برای سخت‌سازی عمومی عالیه، ولی اگه نیاز به انطباق با استانداردهای خاص مثل CIS Benchmarks یا PCI-DSS دارید، ترکیبش با OpenSCAP بهترین نتیجه رو میده.

# نصب OpenSCAP
sudo apt install openscap-scanner scap-security-guide    # Debian/Ubuntu
sudo dnf install openscap-scanner scap-security-guide     # RHEL/Fedora

# اجرای اسکن CIS Benchmark
# مسیر پروفایل‌ها بسته به توزیع فرق می‌کنه
sudo oscap xccdf eval \
  --profile xccdf_org.ssgproject.content_profile_cis_level1_server \
  --results /tmp/cis-results.xml \
  --report /tmp/cis-report.html \
  /usr/share/xml/scap/ssg/content/ssg-ubuntu2204-ds.xml

تحقیقات سال ۲۰۲۶ نشون داده که ترکیب Lynis + OpenSCAP + اتوماسیون با Ansible، انطباق OpenSCAP رو از ۳۹.۷ به ۷۱.۸ و انطباق قوانین سفارشی رو از ۳۹.۳ به ۸۳.۶ درصد افزایش میده. به زبان ساده، این ترکیب سه‌گانه یه چرخه بسته سخت‌سازی ایجاد می‌کنه: Lynis نقاط ضعف عمومی رو پیدا می‌کنه، OpenSCAP انطباق با استانداردها رو بررسی می‌کنه و Ansible اصلاحات رو خودکار اعمال می‌کنه.

پروفایل‌های سفارشی Lynis

برای محیط‌های خاص، می‌تونید یه پروفایل سفارشی بسازید تا Lynis دقیقاً مطابق نیازهای شما عمل کنه. فایل /etc/lynis/custom.prf رو بسازید:

# پروفایل سفارشی Lynis

# رد کردن تست‌های نامربوط (مثلاً برای سرور بدون واسط گرافیکی)
skip-test=SNAP-7901
skip-test=SNAP-7902

# تعریف حداقل امتیاز قابل‌قبول
min-hardening-index=80

# فعال کردن تست‌های خاص
test-from-group=ssh
test-from-group=authentication
test-from-group=storage
test-from-group=firewalls

# تنظیم سطح لاگ
log-level=info

اجرا با پروفایل سفارشی:

sudo lynis audit system --profile /etc/lynis/custom.prf

سؤالات متداول

آیا اجرای Lynis روی سرور تولیدی امن هست؟

بله، کاملاً. Lynis فقط خواندنی (read-only) عمل می‌کنه و هیچ تغییری روی سیستم اعمال نمی‌کنه. هیچ سرویسی رو ری‌استارت نمی‌کنه، هیچ فایلی رو تغییر نمی‌ده و هیچ بار اضافی قابل‌توجهی روی سیستم ایجاد نمی‌کنه. می‌تونید با خیال راحت حتی روی سرورهای تولیدی پرترافیک اجراش کنید.

تفاوت Lynis رایگان با Lynis Enterprise چیه؟

نسخه رایگان (Community) تمام قابلیت‌های اسکن و ممیزی رو داره. نسخه Enterprise مدیریت مرکزی چندین سرور، داشبورد گرافیکی، قطعه‌کدهای سخت‌سازی آماده (hardening snippets)، گزارش‌دهی پیشرفته و پلاگین‌های اضافی رو اضافه می‌کنه. برای یک تا چند سرور، نسخه رایگان کاملاً کافیه.

هر چند وقت یکبار باید اسکن Lynis رو اجرا کنم؟

حداقل هفته‌ای یکبار با cron job خودکار. بعد از هر تغییر مهم در تنظیمات سرور یا نصب نرم‌افزار جدید هم باید اسکن اجرا بشه. در محیط‌های حساس (مالی، بهداشتی)، اسکن روزانه توصیه میشه.

آیا امتیاز Lynis بالای ۹۰ ضروری هست؟

نه لزوماً. امتیاز بالای ۸۰ نشون‌دهنده سطح خوبی از سخت‌سازی هست. مهم‌تر از عدد، نداشتن هشدار (Warning) هست. یه سرور با امتیاز ۷۸ و صفر هشدار، امن‌تر از سرور با امتیاز ۸۵ و سه هشدار حل‌نشده‌ست. روی رفع هشدارها تمرکز کنید، نه صرفاً بالا بردن عدد.

آیا Lynis جایگزین اسکنر آسیب‌پذیری شبکه‌ای مثل Nessus یا OpenVAS میشه؟

خیر. Lynis یه ابزار ممیزی میزبان‌محور هست و تنظیمات داخلی سیستم رو بررسی می‌کنه. اسکنرهای شبکه‌ای مثل Nessus و OpenVAS سیستم رو از بیرون اسکن می‌کنن و آسیب‌پذیری‌های سرویس‌های در دسترس از شبکه رو پیدا می‌کنن. بهترین رویکرد استفاده از هر دو نوع ابزار به‌صورت مکمل هست.

درباره نویسنده Editorial Team

Our team of expert writers and editors.