برای غیر فعال کردن فایل سیستمهای بدون کاربرد در Oracle Linux و جلوگیری از فعال شدن آنها در هنگام بوت، میتوانید از دستورات زیر استفاده کنید:
دستور Bash:
این دستورات با استفاده از modprobe
ویژگیهای ماژولهای لینوکس را برای این فایل سیستمها غیرفعال میکنند. برای اطمینان از اینکه این تنظیمات پس از راهاندازی مجدد سیستم نیز حفظ شوند، آنها را در فایل /etc/modprobe.d/blacklist.conf
اضافه کنید:
echo "install cramfs /bin/true" >> /etc/modprobe.d/blacklist.conf
echo "install freevxfs /bin/true" >> /etc/modprobe.d/blacklist.conf
echo "install jffs2 /bin/true" >> /etc/modprobe.d/blacklist.conf
echo "install hfs /bin/true" >> /etc/modprobe.d/blacklist.conf
echo "install hfsplus /bin/true" >> /etc/modprobe.d/blacklist.conf
echo "install squashfs /bin/true" >> /etc/modprobe.d/blacklist.conf
echo "install udf /bin/true" >> /etc/modprobe.d/blacklist.conf
echo "install autofs /bin/true" >> /etc/modprobe.d/blacklist.conf
دستور Ansible:
یک playbook Ansible برای انجام همین تغییرات میتواند به شکل زیر نوشته شود:
---
- name: Disable Unused Filesystems
hosts: all
become: yes
tasks:
- name: Disable filesystems
lineinfile:
path: /etc/modprobe.d/blacklist.conf
line: "install {{ item }} /bin/true"
create: yes
loop:
- cramfs
- freevxfs
- jffs2
- hfs
- hfsplus
- squashfs
- udf
- autofs
توضیح عملکرد:
این دستورات با جلوگیری از بارگذاری ماژولهای نامبرده شده در هنگام بوت، امکان استفاده از این فایل سیستمها را مسدود میکنند. این کار به افزایش امنیت سیستم کمک میکند چرا که دسترسی به فایل سیستمهایی که ممکن است مورد استفاده قرار نگیرند و یا از نظر امنیتی آسیبپذیر باشند را محدود میکند.
تناقض با Oracle 19.23:
معمولاً Oracle Database نیازی به این فایل سیستمها ندارد، مگر اینکه بخواهید از قابلیتهای خاصی استفاده کنید که به این فایل سیستمها وابسته باشد. بنابراین، این تغییر معمولاً با نصب Oracle 19.23 تناقضی ایجاد نمیکند. توصیه میشود در صورت نیاز به این فایل سیستمها در محیطهای خاص، از غیرفعال کردن آنها اجتناب شود.
مطلب شماره دو: ایجاد ساختاری مستقل و افزایش امنیت دایرکتوریها
این مطلب شامل روشهایی است برای افزایش امنیت دایرکتوریهای مهم در سیستمهای لینوکس که برای نگهداری اطلاعات موقت، دادههای کاربری و دادههای سیستمهای مجازی استفاده میشوند.
# فایل /etc/fstab را قبل از تغییر بکاپ بگیرید
cp /etc/fstab /etc/fstab.bak
# بررسی و جایگزینی تنظیمات fstab با استفاده از sed
sed -i.bak '/\/home/ s/defaults/defaults,nodev,nosuid,noexec/' /etc/fstab
sed -i.bak '/\/tmp/ s/defaults/defaults,nodev,nosuid,noexec/' /etc/fstab
sed -i.bak '/\/var/ s/defaults/defaults,nodev,nosuid,noexec/' /etc/fstab
sed -i.bak '/\/dev\/shm/ s/defaults/defaults,nodev,nosuid,noexec/' /etc/fstab
# اعمال تغییرات
mount -o remount /tmp
mount -o remount /home
mount -o remount /var
mount -o remount /dev/shm
Ansible:
- hosts: all
become: yes
tasks:
- name: Backup fstab file
copy:
src: /etc/fstab
dest: /etc/fstab.bak
owner: root
group: root
mode: '0644'
- name: Ensure fstab entries are secure
lineinfile:
path: /etc/fstab
regexp: '^UUID={{ item.uuid }}'
line: 'UUID={{ item.uuid }} {{ item.mount_point }} xfs defaults,nodev,nosuid,noexec 0 0'
backrefs: yes
loop:
- { uuid: "a93e9e3f-2fb0-4cca-bf35-49aa227488c1", mount_point: "/home" }
- { uuid: "3bef1024-d3f3-4172-be49-bc8f33547653", mount_point: "/tmp" }
- { uuid: "e6a4c74b-4d40-4499-9cee-33543079dc6b", mount_point: "/var" }
- { uuid: "b1572be2-66df-44fe-ac8b-4da878a4dfed", mount_point: "/u01" } # if /u01 needs specific options, add them here
- name: Remount filesystems for changes to take effect
shell: mount -o remount {{ item.mount_point }}
loop:
- { mount_point: "/home" }
- { mount_point: "/tmp" }
- { mount_point: "/var" }
- { mount_point: "/dev/shm" }
برای فعال کردن بیت کنترلی Stickybit بر روی دایرکتوریهای نوشتنی مثل /tmp
، میتوانید از دستور زیر در Bash استفاده کنید:
# فعال کردن Stickybit برای دایرکتوری /tmp
chmod +t /tmp
Ansible:
- hosts: all
become: yes
tasks:
- name: Ensure sticky bit is set on /tmp
file:
path: /tmp
mode: '1777'
state: directory
توضیحات:
- ایجاد Partition مستقل: ایجاد پارتیشنهای مجزا برای
/tmp
,/var
, و/home
به منظور جلوگیری از تداخل دادهها و افزایش امنیت سیستم عامل. - فعالسازی Nodev: جلوگیری از ساخت دستگاههای مخصوص در این دایرکتوریها.
- فعالسازی Nosuid: جلوگیری از اجرای برنامههایی با بیت SUID/SGID که میتوانند امنیت سیستم را به خطر اندازند.
- فعالسازی Noexec: جلوگیری از اجرای اسکریپتها در دایرکتوریهای که برای نگهداری فایلهای موقتی استفاده میشوند.
- فعالسازی Sticky Bit: جلوگیری از حذف یا تغییر فایلها توسط کاربران دیگر در دایرکتوریهای مشترک مانند
/tmp
.
ملاحظات Oracle:
- Noexec: به دلیل استفاده برخی از اسکریپتهای Oracle از
/tmp
برای اجرا، فعالسازیnoexec
ممکن است برخی از فعالیتهای نصب و راهاندازی Oracle را مختل کند. برای اجتناب از این مشکل، امکان دارد بخواهید این گزینه را برای/tmp
فعال نکنید. - Nosuid وNodev: این گزینهها معمولاً تأثیر مستقیمی بر روی عملکرد Oracle ندارند مگر اینکه Oracle به طور خاص نیاز به دسترسی به دستگاهها یا اجرای برنامههای SUID/SGID داشته باشد. این موارد در محیطهای پیشفرض نادر هستند.
اطمینان حاصل کنید که پس از اعمال این تغییرات، تستهای مناسبی را برای تأیید عملکرد صحیح Oracle انجام دهید. این شامل اجرای اسکریپتهایی است که ممکن است به طور موقت فایلها را در دایرکتوریهای تحت تأثیر قرار دهند و تست عملکردی برای بررسی تأثیرات این تنظیمات بر عملکرد سیستم.
در مورد sticky note ، این دستورات chmod +t /tmp
بیت Sticky را فعال میکند، که اطمینان حاصل میکند فایلها و دایرکتوریها در /tmp
تنها توسط مالکان فایل و روت قابل حذف هستند. این یک تدبیر امنیتی است برای جلوگیری از حذف یا تغییر فایلهای موقت توسط کاربران دیگر.
برای مورد سوم که مربوط به مدیریت و بهروزرسانی سیستم عامل است، دستورات و پیکربندیهای زیر را میتوانید اجرا کنید:
دستورات Bash:
بروزرسانی Kernel:
dnf update kernel
این دستور Kernel سیستم را به آخرین نسخه موجود در repository های معتبر که در توزیع استفاده میشود، بهروزرسانی میکند.
dnf update --security
این دستور تمام پچهای امنیتی موجود برای بستههای نصب شده در سیستم را بهروزرسانی میکند.
تأیید اصالت با GPG Key: GPG key بهطور خودکار در حین نصب بستهها استفاده میشود، ولی شما میتوانید صحت کلیدها را با دستور زیر بررسی کنید:
gpg --verify <filename>
دستورات Ansible:
بروزرسانی Kernel و پچهای امنیتی:
- name: Update Kernel and apply security patches
ansible.builtin.yum:
name: "*"
state: latest
security: yes
تأیید اصالت GPG: اطمینان از این که gpgcheck
در فایلهای تنظیمی Yum فعال است:
- name: Ensure GPG check is enabled for all repositories
ansible.builtin.lineinfile:
path: "/etc/yum.repos.d/{{ item }}"
regexp: '^gpgcheck=0'
line: 'gpgcheck=1'
state: present
with_fileglob:
- /etc/yum.repos.d/*.repo
توضیحات:
-
بروزرسانی Kernel و پچهای امنیتی: اطمینان حاصل میکنید که تمامی آسیبپذیریهای شناخته شده بهسرعت برطرف شوند و سیستم به روز باقی بماند.
-
استفاده از Repository های معتبر: این کار از نصب نرمافزارهای نامطمئن جلوگیری میکند و به اطمینان از امنیت سیستم کمک میکند.
-
GPG Key: تأیید اصالت بستهها با استفاده از GPG کلیدها اطمینان از منبع معتبر بستههای نصبی را فراهم میکند.
تضادهای احتمالی با Oracle 19.23:
بروزرسانی Kernel میتواند در صورتی که نیاز به تستهای سازگاری ویژه برای نسخههای خاص از نرمافزار Oracle داشته باشید، نیاز به دقت بیشتری دارد. بنابراین، پیش از اجرای بروزرسانیهای بزرگ، تستهای لازم را بر روی محیطهای تست انجام دهید.
مراقبت از فایلهای حساس به منظور جلوگیری از سوءاستفاده
توضیحات جامع
حفاظت از فایلهای حساس یکی از جنبههای کلیدی امنیت سیستم است. این شامل چندین اقدام امنیتی است:
-
محدودسازی دسترسی به CoreDump و Soft Variables: CoreDump فایلهایی هستند که حاوی اطلاعاتی در مورد وضعیت یک برنامه هستند که هنگام خطا متوقف شدهاند. Soft Variables شامل تنظیمات محیطی هستند که میتوانند حاوی اطلاعات حساس باشند.
-
استفاده از ابزارهای File Integrity Check مانند AIDE: این ابزارها برای تشخیص تغییرات در فایلها استفاده میشوند، که میتواند نشاندهنده تلاشهای نفوذ و تغییر غیرمجاز باشد.
-
فعالسازی ویژگیهای Anti-Exploitation مانند ASLR (Address Space Layout Randomization): ASLR یک تکنیک امنیتی است که به صورت تصادفی آدرسهای حافظه تخصیص یافته به دادهها و کد برنامه را مرتب میکند تا جلوی حملات مبتنی بر حافظه را بگیرد.
اسکریپت Bash
محدود کردن دسترسی به CoreDump:
echo '* hard core 0' >> /etc/security/limits.conf
echo 'fs.suid_dumpable = 0' > /etc/sysctl.d/99-sysctl.conf
sysctl -p /etc/sysctl.d/99-sysctl.conf
نصب و راهاندازی AIDE:
dnf install aide -y
aide --init
mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
فعالسازی ASLR:
echo 'kernel.randomize_va_space = 2' > /etc/sysctl.d/99-sysctl.conf
sysctl -p /etc/sysctl.d/99-sysctl.conf
Ansible Playbook
- hosts: all
become: yes
tasks:
- name: Limit core dump size
lineinfile:
path: /etc/security/limits.conf
line: '* hard core 0'
- name: Disable SUID dumping and enable ASLR
sysctl:
name: "{{ item.name }}"
value: "{{ item.value }}"
state: present
loop:
- { name: 'fs.suid_dumpable', value: '0' }
- { name: 'kernel.randomize_va_space', value: '2' }
- name: Install AIDE and initialize database
block:
- name: Install AIDE
yum:
name: aide
state: present
- name: Initialize AIDE database
command: aide --init
- name: Move AIDE database into place
command: mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
مغایرتهای احتمالی با نصب Oracle 19.23
CoreDump: محدود کردن CoreDumpها میتواند در تشخیص خطاهای داخلی Oracle تأثیر بگذارد، زیرا برخی از ابزارهای تشخیصی Oracle ممکن است به این فایلها برای تجزیه و تحلیل نیاز داشته باشند.
ASLR: فعالسازی ASLR میتواند برخی از ماژولهای کاربردی Oracle را که به آدرسدهی حافظه مشخص نیاز دارند، تحت تأثیر قرار دهد.
File Integrity Checks: استفاده مستمر از AIDE ممکن است بر عملکرد سیستم تأثیر بگذارد، به ویژه در سیستمهای با ترافیک داده بالا مانند دیتابیسهای Oracle.
تنظیمات امن Boot
توضیحات جامع
تنظیمات امن بوت اطمینان حاصل میکنند که فرایند بوت سیستم مطابق با استانداردهای امنیتی صورت گیرد و جلوی دسترسیهای غیرمجاز به سیستم در زمان بوت گرفته شود.
- قراردادن رمز عبور بر روی Boot Loader: این کار مانع از دسترسی غیرمجاز به تنظیمات بوت و تغییر آنها میشود.
- فعالسازی Authentication در Single User Mode: اطمینان حاصل میکند که تنها کاربران مجاز میتوانند در حالت تک کاربری به سیستم دسترسی پیدا کنند.
- غیرفعال کردن Interactive Boot: جلوگیری از اینکه کاربران در زمان بوت بتوانند به سرویسهای خاصی دسترسی داشته باشند.
- تأمین امنیت فایل
/etc/grub.conf
: اطمینان حاصل میشود که تنها کاربر root قادر به دسترسی یا تغییر این فایل است.
اسکریپت Bash
# قرار دادن رمز عبور بر روی GRUB
grub2-setpassword
# غیرفعال کردن Interactive Boot
sed -i 's/PROMPT=yes/PROMPT=no/g' /etc/sysconfig/init
# تنظیم مالکیت و دسترسیهای /etc/grub.conf
chown root:root /etc/grub.d/10_linux
chmod 600 /etc/grub.d/10_linux
Ansible Playbook
- hosts: all
become: yes
tasks:
- name: Set GRUB password
command: grub2-setpassword
- name: Disable Interactive Boot
lineinfile:
path: /etc/sysconfig/init
regexp: '^PROMPT=yes'
line: 'PROMPT=no'
- name: Secure /etc/grub.d/10_linux
file:
path: /etc/grub.d/10_linux
owner: root
group: root
mode: '0600'
مغایرتهای احتمالی با نصب Oracle 19.23
-
قرار دادن رمز عبور بر روی Boot Loader:
- مغایرت: برخی از فرایندهای خودکار Oracle، مانند اسکریپتهای راهاندازی خودکار در زمان بوت، ممکن است نیاز به دسترسی بدون مداخله کاربر به GRUB داشته باشند. قرار دادن رمز عبور میتواند این فرایندها را مختل کند زیرا نیازمند ورود دستی رمز عبور در هر بوت خواهد بود.
- مثال: فرض کنید Oracle برای بالا بردن خدمات خود در هنگام بوت سرور، به تغییرات در منوی GRUB نیاز دارد. با قفل کردن GRUB، این تنظیمات باید به صورت دستی و با ورود رمز عبور انجام شود، که ممکن است باعث تاخیر در راهاندازی خودکار سرویسها شود.
-
فعال نمودن Authentication در زمان Single User Mode:
- مغایرت: در مواقعی که به تعمیر و نگهداری اضطراری Oracle در محیطهای تولیدی نیاز است، فعال بودن Authentication میتواند دسترسی سریع به سیستم را محدود کند. این ممکن است در شرایط بحرانی، که زمان بسیار مهم است، به تاخیر افتادن رفع خطا را به دنبال داشته باشد.
- مثال: اگر سیستم دچار اختلال شده و نیاز به راهاندازی مجدد در حالت تک کاربری باشد تا خطاها برطرف شوند، نیاز به Authentication میتواند ورود به سیستم را دشوار سازد، به خصوص اگر اطلاعات ورود از دست رفته باشند یا در دسترس نباشند.
-
غیرفعال کردن Interactive Boot:
- مغایرت: برخی از نصبهای Oracle ممکن است نیازمند تعاملات کاربری در زمان بوت برای پیکربندی دقیق خدمات باشند. غیرفعال کردن Interactive Boot میتواند این گزینهها را حذف کند و به این ترتیب نصب یا راهاندازی مجدد خدمات را دشوار سازد.
- مثال: در حین بوت، ممکن است نیاز باشد تا تنظیمات شبکه یا پارامترهای حیاتی Oracle از طریق منوی بوت تنظیم شوند. با غیرفعال کردن بوت تعاملی، این تنظیمات باید قبلی به طور کامل و دقیق تنظیم شده باشند، که در صورت نیاز به تغییرات سریع، ممکن است باعث تاخیر در پروسه راهاندازی یا خطای بوت شود.
-
محدودسازی دسترسی به فایل
/etc/grub.d/10_linux
:- مغایرت: محدود کردن دسترسی به این فایل میتواند تغییرات مورد نیاز در پیکربندی بوت که ممکن است برای بهینهسازی عملکرد Oracle لازم باشد، را دشوار کند. این کار ممکن است بر روی برخی اسکریپتهای نصب و پیکربندی که به صورت خودکار توسط Oracle اجرا میشوند تأثیر بگذارد.
- مثال: Oracle ممکن است نیاز به افزودن پارامترهای خاص به GRUB داشته باشد تا تنظیمات مربوط به عملکرد یا امنیت بهینهسازی شوند. محدودیتها در دسترسی به فایل
10_linux
میتواند این تغییرات را محدود کند، مگر اینکه به صورت دستی توسط کاربر root اعمال شوند، که این امر میتواند خطاهای بشری را افزایش دهد و روند بهینهسازی را کُند کند.
این مثالها به شما کمک میکنند تا تصمیمگیری در مورد اعمال تنظیمات امنیتی در حین نصب و پیکربندی Oracle را با دقت بیشتری انجام دهید، و اطمینان حاصل کنید که این تنظیمات به بهترین شکل ممکن و با حفظ تعادل بین امنیت و قابلیتهای عملیاتی انجام شوند.
فعالسازی و پیکربندی امن SELinux یا AppArmor
توضیحات:
SELinux (Security-Enhanced Linux) و AppArmor هر دو ابزارهایی هستند که به منظور ارتقای امنیت سیستمهای لینوکسی با استفاده از سیاستهای دسترسی مجبوری (Mandatory Access Control - MAC) به کار میروند. SELinux با سه حالت: Enforcing, Permissive و Disabled اجرا میشود، در حالی که AppArmor به صورت فعال یا غیرفعال تنظیم میشود. این سیاستها به ادمینها این امکان را میدهند که کنترل دقیقتری بر دسترسیها و مجوزهای برنامهها و خدمات داشته باشند.
Bash Script:
# فعال کردن SELinux
sed -i 's/^SELINUX=.*$/SELINUX=enforcing/' /etc/selinux/config
# تنظیم حالت SELinux به Targeted
sed -i 's/^SELINUXTYPE=.*$/SELINUXTYPE=targeted/' /etc/selinux/config
# غیرفعال کردن SETroubleshoot و mcstrans
systemctl disable setroubleshoot.service
systemctl disable mcstrans.service
Ansible Script:
- hosts: all
tasks:
- name: Set SELinux to enforcing
selinux:
policy: targeted
state: enforcing
- name: Disable services not needed for Oracle compatibility
systemd:
name: "{{ item }}"
enabled: no
state: stopped
loop:
- setroubleshoot
- mcstrans
مغایرت احتمالی با نصب Oracle 19.23:
SELinux ممکن است باعث ایجاد محدودیتهایی برای برخی از فعالیتهای Oracle شود که نیاز به دسترسیهای خاصی به فایلها، شبکه یا سایر منابع دارند. به ویژه در مواردی که Oracle نیاز به برقراری ارتباطات شبکهای یا دسترسی به فایلهای خاص دارد، SELinux میتواند این دسترسیها را محدود کند و نیاز به تنظیم دقیق دارد.
مثال از مغایرت:
تعارض با Oracle RAC: Oracle RAC و برخی سرویسهای دیگر Oracle ممکن است نیاز به دسترسیهای گستردهتر به سیستم فایل و شبکه داشته باشند که SELinux میتواند آنها را مسدود کند. برای مثال، تلاش برای برقراری IPC بین نودهای مختلف در محیط RAC ممکن است توسط SELinux به عنوان یک رفتار مشکوک شناسایی و مسدود شود.
مورد: نکات Command Line Warning Banners
توضیحات:
بنرهای هشدار دهنده خط فرمان (Command Line Warning Banners) برای نمایش پیامهای امنیتی مهم در هنگام ورود کاربران به سیستم استفاده میشوند. این پیامها میتوانند شامل اخطارهای قانونی برای ممانعت از دسترسیهای غیرمجاز باشند. پاکسازی و حذف متغیرهای نظیر \r
, \v
, \m
, و \s
از این فایلها مانع از اجرای دستورات نامطلوب در زمان نمایش بنر میشود، که میتواند به عنوان یک آسیبپذیری امنیتی عمل کند.
Bash Script:
# پاکسازی متغیرهای خاص از فایلهای بنر
sed -i 's/\\[rvmns]//g' /etc/issue
sed -i 's/\\[rvmns]//g' /etc/issue.net
sed -i 's/\\[rvmns]//g' /etc/motd
# تنظیم مالکیت و دسترسیها
chown root:root /etc/issue /etc/issue.net /etc/motd
chmod 644 /etc/issue /etc/issue.net /etc/motd
Ansible Script:
- hosts: all
tasks:
- name: Clean up special characters in warning banners
replace:
path: "{{ item }}"
regexp: '\\\\[rvmns]'
replace: ''
with_items:
- /etc/issue
- /etc/issue.net
- /etc/motd
- name: Set ownership and permissions for banner files
file:
path: "{{ item }}"
owner: root
group: root
mode: '0644'
with_items:
- /etc/issue
- /etc/issue.net
- /etc/motd
مغایرت احتمالی با نصب Oracle 19.23:
این تنظیمات معمولاً بر نصب و عملیات اوراکل تأثیری ندارند، زیرا تغییرات فقط بر نمایش پیامهای ورود به سیستم تأثیر میگذارد و به فایلهای اجرایی یا پیکربندی دیتابیس که توسط Oracle استفاده میشوند ارتباطی ندارد. با این حال، اطمینان حاصل کنید که پیامهای بنر شامل هیچ دستورالعمل یا اطلاعاتی نیست که ممکن است توسط کاربران در ارتباط با دیتابیس استفاده شود و سبب سردرگمی یا اشتباهاتی گردد.
مورد: فعال بودن سرویسهای مورد نیاز مربوط به inetd
توضیحات:
سرویسهای inetd
معمولاً برای مدیریت سرویسهای شبکهای استفاده میشوند که به صورت دورهای نیاز به فعالیت دارند و نیازی به اجرای دائمی ندارند. این سرویسها شامل سرویسهایی میشوند که میتوانند برای برقراری اتصالات شبکهای مورد استفاده قرار گیرند یا برای فعالیتهای خاصی مانند ترانسفر فایل یا چاپ به صورت شبکهای استفاده شوند. بسیاری از این سرویسها دیگر مدرن نیستند و ممکن است امنیت پایینتری داشته باشند، لذا توصیه میشود تنها در صورت نیاز فعال شوند.
Bash Script
این اسکریپت Bash قبل از تلاش برای غیرفعال کردن هر سرویس، چک میکند که آیا سرویس نصب شده است و در دسترس قرار دارد:
#!/bin/bash
# چک کردن و غیرفعال کردن سرویسهای inetd غیرضروری
services=("chargen-dgram" "chargen-stream" "daytime-dgram" "daytime-stream" "discard-dgram" "discard-stream" "echo-dgram" "echo-stream" "time-dgram" "time-stream" "talk" "tftp" "xinetd" "openbsd-inetd")
for service in "${services[@]}"; do
if systemctl is-enabled --quiet $service; then
echo "Disabling $service..."
systemctl stop $service
systemctl disable $service
else
echo "$service is not installed or already disabled."
fi
done
Ansible Playbook
این playbook Ansible همان کارکرد Bash Script را دارد ولی در فرمت Ansible انجام میشود، با اضافه کردن بررسی وجود سرویس قبل از اقدام به غیرفعال کردن:
---
- hosts: all
become: yes
tasks:
- name: Check if inetd related services are enabled and disable them
block:
- name: Check if {{ item }} service is enabled
systemd:
name: "{{ item }}"
enabled: no
register: service_status
- name: Disable {{ item }} service
systemd:
name: "{{ item }}"
state: stopped
enabled: no
when: service_status.changed
loop:
- chargen-dgram
- chargen-stream
- daytime-dgram
- daytime-stream
- discard-dgram
- discard-stream
- echo-dgram
- echo-stream
- time-dgram
- time-stream
- talk
- tftp
- xinetd
- openbsd-inetd
ignore_errors: yes
مغایرت احتمالی با نصب اوراکل
غیرفعال کردن این سرویسها به طور کلی تأثیر منفی بر روی نصب یا عملکرد اوراکل نخواهد داشت، مگر اینکه به خصوص برای مقاصد خاصی از این سرویسها استفاده شود. بهتر است قبل از غیرفعال سازی، تأیید شود که هیچ یک از این سرویسها به طور خاص برای امکانات و ویژگیهای اوراکل مورد نیاز نیستند.
عدم استفاده از سرویسهای Remote که از لحاظ امنیتی دارای مشکلاتی هستند.
این تنظیمات به غیرفعال کردن سرویسهایی میپردازد که به دلیل مشکلات امنیتی شناخته شده، بهتر است در محیطهای تولیدی استفاده نشوند. این سرویسها شامل Rsh، Telnet و Rlogin هستند که تمامی آنها از رمزنگاری نامناسب یا فاقد رمزنگاری هستند و احتمال سوء استفاده از آنها بالا میرود.
Bash Script
این اسکریپت Bash وجود و وضعیت فعال بودن سرویسهای ریموت ناامن را بررسی میکند و در صورت فعال بودن، آنها را غیرفعال میکند.
#!/bin/bash
# غیرفعال کردن سرویسهای ریموت ناامن
services=("rsh.socket" "telnet.socket" "rlogin.socket")
for service in "${services[@]}"; do
if systemctl is-enabled --quiet $service; then
echo "Disabling $service..."
systemctl stop $service
systemctl disable $service
else
echo "$service is not installed or already disabled."
fi
done
Ansible Playbook
این playbook در Ansible، سرویسهای ناامن را بررسی و غیرفعال میکند:
---
- hosts: all
become: yes
tasks:
- name: Check if insecure remote services are enabled and disable them
block:
- name: Check if {{ item }} service is enabled
systemd:
name: "{{ item }}"
enabled: no
register: service_status
- name: Disable {{ item }} service
systemd:
name: "{{ item }}"
state: stopped
enabled: no
when: service_status.changed
loop:
- rsh
- rsh-server
- telnet
- telnet-server
- rlogin
ignore_errors: yes
مغایرت احتمالی با نصب Oracle 19.23:
این سرویسها به طور کلی برای نصب و عملکرد Oracle مورد نیاز نیستند و غیرفعال کردن آنها نباید مشکلی ایجاد کند. اما در موارد خاصی ممکن است برای عملیات تعمیر و نگهداری یا برای برنامههای قدیمی که نیاز به دسترسی به این سرویسها دارند استفاده شوند. به همین دلیل، پیش از غیرفعال کردن این سرویسها، اطمینان حاصل کنید که هیچ وابستگی حیاتی به این سرویسها وجود ندارد.
پیشنهاد:
به جای استفاده از این سرویسهای ناامن، از SSH استفاده کنید که از رمزنگاری برای محافظت از اطلاعات استفاده میکند.
مورد: غیرفعالسازی سرویسهای غیرضروری Server/Client
توضیحات:
در محیطهای امن، تنها سرویسهایی باید فعال باشند که به صورت عملیاتی و مورد نیاز هستند. سرویسهای اضافی میتوانند مسیرهای حمله و آسیبپذیریهای بیشتری را ایجاد کنند. سرویسهایی مانند X-Window، Avahi، CUPS، DHCP، DNS، FTP، DoveCot، و Squid (HTTP Proxy Server) ممکن است در سرورهایی که برای دیتابیس یا برنامههای خاصی استفاده میشوند، ضروری نباشند و میتوانند به عنوان نقاط ضعف امنیتی عمل کنند. بنابراین، در صورت عدم نیاز، این سرویسها باید حذف یا غیرفعال شوند.
Bash Script
این اسکریپت Bash، سرویسهای غیرضروری را بررسی و در صورت وجود غیرفعال میکند:
#!/bin/bash
# غیرفعال کردن سرویسهای غیرضروری Server/Client
services=("xorg-x11-server-Xorg" "avahi-daemon" "cups" "dhcpd" "named" "vsftpd" "dovecot" "squid")
for service in "${services[@]}"; do
if systemctl is-enabled --quiet $service; then
echo "Disabling $service..."
systemctl stop $service
systemctl disable $service
else
echo "$service is not installed or already disabled."
fi
done
Ansible Playbook
این playbook Ansible، سرویسهای غیرضروری را بررسی و در صورت وجود غیرفعال میکند:
---
- hosts: all
become: yes
tasks:
- name: Check if unnecessary server/client services are enabled and disable them
block:
- name: Check if {{ item }} service is enabled
systemd:
name: "{{ item }}"
enabled: no
register: service_status
- name: Disable {{ item }} service
systemd:
name: "{{ item }}"
state: stopped
enabled: no
when: service_status.changed
loop:
- xorg-x11-server-Xorg
- avahi-daemon
- cups
- dhcpd
- named
- vsftpd
- dovecot
- squid
ignore_errors: yes
مغایرت احتمالی با نصب Oracle 19.23:
غیرفعال کردن این سرویسها معمولاً بر نصب و عملکرد Oracle تأثیری ندارد، زیرا Oracle به طور پیشفرض نیازی به این سرویسها ندارد. با این حال، در برخی موارد خاص مانند استفاده از CUPS برای چاپ گزارشات یا DHCP و DNS برای تنظیمات شبکهای، ممکن است این سرویسها ضروری باشند. در این موارد، پیش از غیرفعالسازی، باید بررسیهای لازم انجام شود تا از عملکرد صحیح سرویسهای حیاتی اطمینان حاصل شود.
پیشنهاد:
به جای فعال نگه داشتن سرویسهای غیرضروری، سرویسهای ضروری را به حداقل برسانید و از روشهای امن مانند SSH برای دسترسی و مدیریت سیستم استفاده کنید. این کار به کاهش سطح حمله و افزایش امنیت کلی سیستم کمک میکند.
مورد: استفاده از سرویس NTP (Network Time Protocol)
توضیحات:
همگامسازی دقیق ساعت سیستمهای کامپیوتری برای جلوگیری از اختلافات زمانی و مشکلات احتمالی در برنامههای کاربردی و پروتکلهای امنیتی ضروری است. سرویس NTP (Network Time Protocol) به سیستمها کمک میکند تا زمان خود را با سرورهای زمانی معتبر همگامسازی کنند. در سیستمهای مدرن، chrony
به عنوان یک جایگزین بهینه برای ntpd
استفاده میشود که دقت بالاتر و سرعت همگامسازی بیشتری دارد. برای اطمینان از همگامسازی صحیح زمانی، توصیه میشود که سرویس chrony
را پیکربندی و فعال کنید.
تنظیمات chrony
فایل پیکربندی
فایل اصلی پیکربندی chrony
در مسیر /etc/chrony.conf
قرار دارد. باید اطمینان حاصل شود که سرورهای NTP معتبر در این فایل مشخص شدهاند.
Bash Script
این اسکریپت Bash، نصب و پیکربندی chrony
را بررسی کرده و در صورت عدم وجود، آن را نصب و تنظیم میکند:
#!/bin/bash
# نصب و پیکربندی chrony
if ! rpm -q chrony &> /dev/null; then
echo "Installing chrony..."
dnf install -y chrony
fi
echo "Configuring chrony..."
cat <<EOL > /etc/chrony.conf
server time1.google.com iburst
server time2.google.com iburst
server time3.google.com iburst
server time4.google.com iburst
driftfile /var/lib/chrony/drift
rtcsync
logdir /var/log/chrony
EOL
echo "Starting and enabling chrony..."
systemctl start chronyd
systemctl enable chronyd
echo "Chrony configuration completed."
Ansible Playbook
این playbook Ansible، سرویس chrony
را نصب و پیکربندی میکند:
---
- hosts: all
become: yes
tasks:
- name: Install chrony
package:
name: chrony
state: present
- name: Configure chrony
copy:
dest: /etc/chrony.conf
content: |
server time1.google.com iburst
server time2.google.com iburst
server time3.google.com iburst
server time4.google.com iburst
driftfile /var/lib/chrony/drift
rtcsync
logdir /var/log/chrony
- name: Start and enable chronyd service
systemd:
name: chronyd
state: started
enabled: yes
مغایرت احتمالی با نصب Oracle 19.23:
به طور کلی، استفاده از chrony
و تنظیم دقیق زمان بر روی سرورها تأثیر منفی بر نصب یا عملکرد Oracle ندارد. در حقیقت، همگامسازی دقیق زمانی میتواند به جلوگیری از مشکلات احتمالی مانند عدم همخوانی زمانی در لاگها یا اشکالات زمانی در فرآیندهای توزیع شده کمک کند. بنابراین، تنظیم صحیح chrony
و اطمینان از همگامسازی زمانی منظم و دقیق توصیه میشود.
مورد: امن سازی پیکربندی سرویس Crond
توضیحات:
سرویس cron
در سیستمهای لینوکسی برای اجرای خودکار وظایف برنامهریزی شده استفاده میشود. این سرویس میتواند خطرات امنیتی ایجاد کند اگر به درستی پیکربندی نشده باشد، زیرا دسترسی به تنظیمات cron
میتواند به کاربران غیرمجاز اجازه دهد تا وظایف دلخواه خود را اجرا کنند. بنابراین، لازم است که دسترسی به فایلهای پیکربندی cron
محدود شود و تنها کاربران مجاز اجازه استفاده از آن را داشته باشند.
اقدامات:
- مالکیت فایلها: مالکیت تمامی فایلهای مربوط به
cron
باید بهroot:root
باشد. - دسترسی به فایلها: دسترسی به این فایلها باید فقط برای کاربر root مجاز باشد.
- فایلهای allow و deny: تنظیم فایلهای
cron.allow
وat.allow
برای محدود کردن کاربران مجاز به استفاده ازcron
.
Bash Script
این اسکریپت Bash تنظیمات مورد نظر را برای پیکربندی امن cron
انجام میدهد:
#!/bin/bash
# تنظیم مالکیت و دسترسی فایلهای مربوط به cron
# لیست فایلهای مربوط به cron
files=("/etc/crontab" "/etc/cron.allow" "/etc/at.allow" "/etc/cron.weekly" "/etc/cron.monthly" "/etc/cron.d" "/etc/cron.hourly" "/etc/cron.daily")
# تنظیم مالکیت و دسترسی
for file in "${files[@]}"; do
if [ -e "$file" ]; then
echo "Setting ownership and permissions for $file"
chown root:root "$file"
chmod 600 "$file"
else
echo "$file does not exist."
fi
done
# مشخص کردن کاربران مجاز برای استفاده از cron
echo "oracle" > /etc/cron.allow
Ansible Playbook
این playbook Ansible تنظیمات امن مربوط به cron
را انجام میدهد:
---
- hosts: all
become: yes
tasks:
- name: Set ownership and permissions for cron files
file:
path: "{{ item }}"
owner: root
group: root
mode: '0600'
state: touch
loop:
- /etc/crontab
- /etc/cron.allow
- /etc/at.allow
- /etc/cron.weekly
- /etc/cron.monthly
- /etc/cron.d
- /etc/cron.hourly
- /etc/cron.daily
- name: Specify allowed users for cron
copy:
dest: /etc/cron.allow
content: |
oracle
مغایرت احتمالی با نصب Oracle 19.23:
این تنظیمات معمولاً مغایرتی با نصب و عملکرد Oracle ندارند. با این حال، در صورت استفاده از وظایف زمانبندی شده (Scheduled Tasks) برای مدیریت دیتابیس یا وظایف مربوط به نگهداری سیستم که به دسترسی به فایلهای cron نیاز دارند، باید مطمئن شوید که دسترسی مناسب به این فایلها و تنظیمات فراهم است. اگر کاربر Oracle یا کاربر دیگری نیاز به استفاده از cron
دارد، باید نام کاربر به /etc/cron.allow
اضافه شود تا از مشکلات دسترسی جلوگیری شود.
مورد: امنسازی پیکربندی سرویس SSH
توضیحات:
SSH (Secure Shell) یک پروتکل شبکهای امن است که برای ورود به سیستمهای راه دور و اجرای دستورات از راه دور استفاده میشود. به دلیل ماهیت حساس این سرویس، پیکربندی امنیتی مناسب آن ضروری است. در اینجا توضیحاتی درباره هر یک از تنظیمات امنیتی مورد نیاز ارائه میشود:
-
SSH Protocol v.2: نسخه 2 پروتکل SSH امنیت بیشتری نسبت به نسخه 1 ارائه میدهد. نسخه 1 مستعد مشکلات امنیتی و آسیبپذیریهای شناخته شده است.
-
مالکیت و دسترسی به فایلهای پیکربندی SSH: فایلهای پیکربندی SSH، مانند
sshd_config
، باید توسط کاربر root مالکیت شوند و دسترسی به آنها محدود به کاربر root باشد. این امر از تغییرات غیرمجاز در پیکربندی جلوگیری میکند. -
SSH MaxAuthTries: این پارامتر تعداد دفعات مجاز برای تلاش ناموفق ورود به سیستم را تعیین میکند. مقدار کمتر از 4 توصیه میشود تا از حملات brute-force جلوگیری شود. مقدار پیشفرض این پارامتر 6 است.
-
SSH IgnoreRhosts: این گزینه باید فعال باشد تا فایلهای
~/.rhosts
و/etc/hosts.equiv
نادیده گرفته شوند و از احراز هویت بر اساس این فایلها جلوگیری شود. -
غیرفعال کردن ویژگیهای SSH:
- SSH X11: غیرفعال کردن فورواردینگ X11 برای جلوگیری از حملات مبتنی بر X11.
- SSH HostbasedAuthentication: غیرفعال کردن این گزینه برای جلوگیری از احراز هویت مبتنی بر میزبان.
- SSH root login: غیرفعال کردن ورود مستقیم به root برای افزایش امنیت.
- SSH PermitEmptyPasswords: غیرفعال کردن این گزینه برای جلوگیری از ورود با کلمات عبور خالی.
- SSH PermitUserEnvirnment: غیرفعال کردن این گزینه برای جلوگیری از تنظیمات محیطی توسط کاربر که میتواند برای اجرای حملات مورد استفاده قرار گیرد.
-
SSH LoginGraceTime: تعیین مدت زمانی که کاربر مجاز است برای ورود به سیستم تلاش کند. پیشنهاد میشود این زمان به 60 ثانیه یا کمتر کاهش یابد.
-
SSH Idle Time Out: تعیین مدت زمانی که اتصال SSH بدون فعالیت باقی میماند قبل از اینکه به طور خودکار قطع شود. این تنظیم از اتصالات طولانی مدت بدون استفاده جلوگیری میکند.
Bash Script
این اسکریپت Bash تنظیمات امنیتی را برای سرویس SSH پیکربندی میکند:
#!/bin/bash
# تنظیمات امنیتی SSH
# تنظیم پروتکل SSH به نسخه 2
echo "Protocol 2" >> /etc/ssh/sshd_config
# مالکیت و دسترسی به فایلهای پیکربندی SSH
chown root:root /etc/ssh/sshd_config
chmod 600 /etc/ssh/sshd_config
# تنظیمات امنیتی SSH
sed -i 's/^MaxAuthTries.*/MaxAuthTries 4/' /etc/ssh/sshd_config
sed -i 's/^IgnoreRhosts.*/IgnoreRhosts yes/' /etc/ssh/sshd_config
sed -i 's/^X11Forwarding yes/X11Forwarding no/' /etc/ssh/sshd_config
sed -i 's/^HostbasedAuthentication.*/HostbasedAuthentication no/' /etc/ssh/sshd_config
sed -i 's/^PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i 's/^PermitEmptyPasswords.*/PermitEmptyPasswords no/' /etc/ssh/sshd_config
sed -i 's/^PermitUserEnvironment.*/PermitUserEnvironment no/' /etc/ssh/sshd_config
sed -i 's/^LoginGraceTime.*/LoginGraceTime 60/' /etc/ssh/sshd_config
echo "ClientAliveInterval 300" >> /etc/ssh/sshd_config
echo "ClientAliveCountMax 0" >> /etc/ssh/sshd_config
# ریاستارت کردن سرویس SSH برای اعمال تغییرات
systemctl restart sshd
Ansible Playbook
این playbook Ansible تنظیمات امنیتی SSH را پیکربندی میکند:
مغایرت احتمالی با نصب Oracle 19.23:
این تنظیمات امنیتی SSH به طور کلی نباید با نصب یا عملکرد Oracle مغایرتی داشته باشد. با این حال، اگر نیاز به دسترسی SSH با استفاده از root
دارید یا از X11Forwarding
برای دسترسی گرافیکی استفاده میکنید، باید تنظیمات مربوطه را تغییر دهید. علاوه بر این، اطمینان حاصل کنید که تمامی کاربران و تنظیمات مورد نیاز برای عملیاتهای نگهداری و مدیریت پایگاه داده به درستی تنظیم شدهاند تا از مشکلات دسترسی جلوگیری شود.
امنسازی تنظیمات شبکه برای سرور
توضیحات:
برای محافظت از سیستم در برابر تهدیدات شبکه، باید برخی از ویژگیهای ناامن شبکه غیرفعال شده و ویژگیهای امن فعال شوند. این تنظیمات به جلوگیری از سوءاستفادههای رایج مانند حملات ICMP Redirect و Spoofing کمک میکند. همچنین، فعالسازی ویژگیهایی مانند TCP SYN Cookies
به جلوگیری از حملات DoS کمک میکند. در صورتی که از IPv6 استفاده نمیشود، بهتر است آن را غیرفعال کنید تا از بروز مسائل امنیتی مرتبط جلوگیری شود.
اقدامات:
-
غیرفعال کردن برخی ویژگیهای شبکه:
- Source Routed Packet: این ویژگی به مهاجمین اجازه میدهد که مسیریابی بستهها را کنترل کنند.
- ICMP Redirect: این ویژگی میتواند توسط مهاجمین برای تغییر مسیر ترافیک استفاده شود.
- Secure ICMP Redirect: نسخه امنتری از ICMP Redirect است اما همچنان ممکن است ناامن باشد.
-
فعال کردن برخی ویژگیهای شبکه:
- Ignore کردن Broadcast ICMP: جلوگیری از پاسخ به پیامهای ICMP Broadcast.
- Ignore کردن Bogus ICMP Response: جلوگیری از پاسخ به پاسخهای جعلی ICMP.
- لاگگیری از Suspicious Packet: ثبت بستههای مشکوک برای تحلیل بیشتر.
- Reverse Path Filtering: این ویژگی بررسی میکند که آیا مسیر بازگشتی برای یک بسته وجود دارد یا نه، که به جلوگیری از Spoofing کمک میکند.
- TCP SYN Cookies: استفاده از کوکیها برای حفاظت در برابر حملات SYN flood.
-
غیرفعال کردن IPv6: اگر از IPv6 استفاده نمیکنید، بهتر است آن را غیرفعال کنید.
Bash Script
این اسکریپت Bash تنظیمات امنیتی شبکه را پیکربندی میکند:
#!/bin/bash
# غیرفعال کردن برخی ویژگیهای شبکه
echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route
echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
echo "0" > /proc/sys/net/ipv4/conf/all/secure_redirects
# فعال کردن برخی ویژگیهای شبکه
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo "1" > /proc/sys/net/ipv4/conf/all/log_martians
echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
# غیرفعال کردن IPv6
echo "1" > /proc/sys/net/ipv6/conf/all/disable_ipv6
# اضافه کردن تنظیمات به sysctl.conf برای پایدار ماندن بعد از ریبوت
cat <<EOL >> /etc/sysctl.conf
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_syncookies = 1
net.ipv6.conf.all.disable_ipv6 = 1
EOL
# اعمال تغییرات
sysctl -p
Ansible Playbook
این playbook Ansible تنظیمات امنیتی شبکه را پیکربندی میکند:
---
- hosts: all
become: yes
tasks:
- name: Set sysctl parameters
sysctl:
name: "{{ item.name }}"
value: "{{ item.value }}"
state: present
reload: yes
loop:
- { name: 'net.ipv4.conf.all.accept_source_route', value: '0' }
- { name: 'net.ipv4.conf.all.accept_redirects', value: '0' }
- { name: 'net.ipv4.conf.all.secure_redirects', value: '0' }
- { name: 'net.ipv4.icmp_echo_ignore_broadcasts', value: '1' }
- { name: 'net.ipv4.icmp_ignore_bogus_error_responses', value: '1' }
- { name: 'net.ipv4.conf.all.log_martians', value: '1' }
- { name: 'net.ipv4.conf.all.rp_filter', value: '1' }
- { name: 'net.ipv4.tcp_syncookies', value: '1' }
- { name: 'net.ipv6.conf.all.disable_ipv6', value: '1' }
- name: Reload sysctl
command: sysctl -p
مغایرت احتمالی با نصب Oracle 19.23:
این تنظیمات ممکن است تأثیری بر عملکرد Oracle نداشته باشد، اما باید دقت کرد که در صورت استفاده از شبکههای IPv6، غیرفعال کردن آن میتواند منجر به مشکلاتی شود. همچنین، تنظیمات مربوط به لاگگیری از بستههای مشکوک ممکن است مقدار زیادی لاگ تولید کند که باید مدیریت شود تا از پر شدن دیسک جلوگیری شود. اطمینان حاصل کنید که تنظیمات شبکه با پیکربندیهای شبکهای که برای محیط Oracle در نظر گرفتهاید، سازگار است و تأثیری بر اتصال به دیتابیسها ندارد.
تنظیم و پیکربندی Firewall
توضیحات:
فایروال یکی از مهمترین ابزارهای امنیتی است که برای محافظت از سیستم در برابر حملات و دسترسیهای غیرمجاز به کار میرود. با تنظیم قوانین فایروال، میتوان به صورت دقیق مشخص کرد که چه ترافیکی مجاز به ورود یا خروج از سیستم است. در این تنظیمات، قوانین فایروال به گونهای تنظیم میشود که به طور پیشفرض تمامی ترافیک ورودی، خروجی و فوروارد شده مسدود شود و فقط پورتهای مشخصی (مانند پورت 1521 برای Oracle و پورت 22 برای SSH) باز بمانند.
اقدامات:
- نصب و فعالسازی فایروال: اطمینان حاصل کنید که فایروال نصب و فعال است.
- تنظیمات پیشفرض فایروال:
- INPUT Policy: به صورت پیشفرض ترافیک ورودی را مسدود کند.
- OUTPUT Policy: به صورت پیشفرض ترافیک خروجی را مسدود کند.
- FORWARD Policy: به صورت پیشفرض ترافیک فوروارد شده را مسدود کند.
- تنظیمات Loopback Interface: تنها اجازه به ترافیک LoopBack داده شود.
- تنظیم پورتهای مجاز: باز کردن پورتهای مورد نیاز (1521 برای Oracle و 22 برای SSH).
- پیکربندی برای اتصالات New OutBound و Established Connection: اطمینان از اینکه اتصالات خروجی و اتصالات موجود میتوانند به درستی برقرار شوند.
Bash Script
این اسکریپت Bash قوانین فایروال را پیکربندی میکند:
#!/bin/bash
# نصب و فعالسازی firewalld
dnf install -y firewalld
systemctl enable firewalld
systemctl start firewalld
# تنظیمات پیشفرض برای پالیسیهای ورودی، خروجی و فوروارد
firewall-cmd --set-default-zone=block
# فعالسازی پالیسیهای پیشفرض
firewall-cmd --zone=block --add-interface=lo --permanent
firewall-cmd --zone=block --add-rich-rule='rule family="ipv4" source address="127.0.0.1/8" accept' --permanent
firewall-cmd --zone=block --add-rich-rule='rule family="ipv6" source address="::1" accept' --permanent
# باز کردن پورتهای مورد نیاز
firewall-cmd --zone=block --add-port=1521/tcp --permanent
firewall-cmd --zone=block --add-port=22/tcp --permanent
# اعمال تغییرات
firewall-cmd --reload
Ansible Playbook
این playbook Ansible تنظیمات فایروال را پیکربندی میکند:
---
- hosts: all
become: yes
tasks:
- name: Install firewalld
dnf:
name: firewalld
state: present
- name: Enable and start firewalld
systemd:
name: firewalld
enabled: yes
state: started
- name: Set default zone to block
command: firewall-cmd --set-default-zone=block
- name: Allow loopback interface
firewalld:
zone: block
interface: lo
permanent: yes
state: enabled
- name: Allow loopback traffic IPv4
firewalld:
zone: block
rich_rule: 'rule family="ipv4" source address="127.0.0.1/8" accept'
permanent: yes
- name: Allow loopback traffic IPv6
firewalld:
zone: block
rich_rule: 'rule family="ipv6" source address="::1" accept'
permanent: yes
- name: Open port 1521 for Oracle
firewalld:
zone: block
port: 1521/tcp
permanent: yes
state: enabled
- name: Open port 22 for SSH
firewalld:
zone: block
port: 22/tcp
permanent: yes
state: enabled
- name: Reload firewalld
command: firewall-cmd --reload
مغایرت احتمالی با نصب Oracle 19.23:
پورتهای مورد نیاز: مطمئن شوید که تمامی پورتهای مورد نیاز برای Oracle Database (مانند پورتهای مربوط به Listener، Data Guard، OEM و غیره) باز هستند. در غیر این صورت، ممکن است اتصال به دیتابیس یا سرویسهای وابسته دچار مشکل شود.
ترافیک خروجی و ارتباط با سرویسهای خارجی: اگر دیتابیس یا سرور نیاز به ارتباط با سرویسهای خارجی دارد، باید مطمئن شوید که ترافیک خروجی مرتبط مجاز باشد. به عنوان مثال، برای استفاده از Oracle Cloud، ممکن است نیاز به باز کردن پورتهای خاصی باشد.
قوانین Loopback: در صورتی که نیاز به استفاده از آدرسهای خاصی در ارتباطات داخلی دارید، مطمئن شوید که این آدرسها به درستی مجاز شدهاند.
پیکربندی ابزارهای ثبت رویداد (Logging Configuration)
توضیحات:
پیکربندی صحیح ابزارهای ثبت رویداد (logging) برای مانیتورینگ فعالیتها و شناسایی فعالیتهای مشکوک یا غیرمجاز ضروری است. این ابزارها لاگهای سیستم عامل و نرمافزارهای مختلف را جمعآوری میکنند و برای تحلیل به یک سیستم مدیریت اطلاعات و رخدادهای امنیتی (SIEM) ارسال میکنند. جمعآوری لاگها باید به صورت مداوم (24/7) انجام شود و در صورت بروز مشکل در جمعآوری لاگها، بلافاصله به مدیر شبکه اطلاع داده شود.
اقدامات:
- نصب و پیکربندی ابزارهای لاگگیری: از ابزارهای استانداردی مانند
rsyslog
یاsyslog-ng
برای جمعآوری لاگها استفاده کنید. این ابزارها باید به گونهای پیکربندی شوند که لاگهای سیستم را به صورت مرکزی جمعآوری و به SIEM ارسال کنند. - اطلاعرسانی در صورت از کار افتادن جمعآوری لاگها: در صورت بروز هرگونه مشکل در جمعآوری لاگها، به مدیر شبکه یا تیم امنیتی اطلاع داده شود.
- فعالسازی جمعآوری لاگها به صورت 24/7: اطمینان حاصل کنید که سیستم لاگگیری همیشه فعال است و هیچ لاگی از دست نمیرود.
Bash Script
این اسکریپت Bash ابزار rsyslog
را پیکربندی میکند تا لاگها را به یک سرور مرکزی ارسال کند:
#!/bin/bash
# نصب rsyslog
dnf install -y rsyslog
# فعالسازی و شروع rsyslog
systemctl enable rsyslog
systemctl start rsyslog
# پیکربندی ارسال لاگها به سرور مرکزی
cat <<EOL >> /etc/rsyslog.conf
# ارسال تمامی لاگها به سرور مرکزی SIEM
*.* @central-siem-server:514
EOL
# تنظیم ارسال ایمیل در صورت بروز مشکل
cat <<EOL >> /etc/rsyslog.d/alert.conf
# ارسال ایمیل در صورت بروز مشکل در rsyslog
:msg, contains, "rsyslogd" /var/log/rsyslog/error.log
& mail -s "Rsyslog Error"
EOL
# اعمال تغییرات
systemctl restart rsyslog
Ansible Playbook
این playbook Ansible ابزار rsyslog
را برای جمعآوری لاگها پیکربندی میکند:
---
- hosts: all
become: yes
tasks:
- name: Install rsyslog
dnf:
name: rsyslog
state: present
- name: Enable and start rsyslog
systemd:
name: rsyslog
enabled: yes
state: started
- name: Configure rsyslog to send logs to central SIEM server
lineinfile:
path: /etc/rsyslog.conf
line: "*.* @central-siem-server:514"
state: present
- name: Configure rsyslog to send email on errors
copy:
dest: /etc/rsyslog.d/alert.conf
content: |
:msg, contains, "rsyslogd" /var/log/rsyslog/error.log
& mail -s "Rsyslog Error"
- name: Restart rsyslog
systemd:
name: rsyslog
state: restarted
مغایرت احتمالی با نصب Oracle 19.23:
بار کاری اضافی: جمعآوری و ارسال لاگها میتواند بار اضافی روی سیستم ایجاد کند که ممکن است بر عملکرد اوراکل تأثیر بگذارد. این موضوع به خصوص در سیستمهایی با ترافیک لاگ بالا اهمیت دارد.
امنیت اطلاعات: اطمینان حاصل کنید که لاگهای حساس (مثل اطلاعات لاگین و لاگهای امنیتی) به درستی محافظت میشوند و به طور امن ارسال میشوند.
زمانبندی ارسال لاگها: مطمئن شوید که تنظیمات زمانبندی برای ارسال لاگها با سیاستهای امنیتی و عملکردی سازگار است و در صورت بروز مشکل، بلافاصله اقدام به رفع آن کنید.
پیکربندی Auditd در لینوکس
توضیحات:
Auditd یک ابزار امنیتی است که فعالیتهای سیستم را در سطح کرنل رصد و ثبت میکند. این ابزار میتواند فعالیتهای مربوط به تغییرات فایلها، کاربران، گروهها و تنظیمات سیستم را ثبت کند. اطلاعات ثبت شده میتواند برای تحلیلهای امنیتی و شناسایی حملات استفاده شود. برای جلوگیری از از دست رفتن اطلاعات مهم، Auditd باید به درستی پیکربندی شود و ظرفیت مخزن لاگها تنظیم گردد. همچنین، لاگهای ثبت شده باید به گونهای پیکربندی شوند که به راحتی قابل خواندن و تحلیل باشند.
اجرای اسکریپت Bash:
این اسکریپت Bash برای فعالسازی Auditd و پیکربندی آن جهت ثبت تغییرات مهم در سیستم استفاده میشود:
#!/bin/bash
# نصب auditd
dnf install -y audit
# فعالسازی و شروع auditd
systemctl enable auditd
systemctl start auditd
# تنظیم ظرفیت مخزن audit
sed -i 's/^max_log_file = .*/max_log_file = 50/' /etc/audit/auditd.conf
sed -i 's/^num_logs = .*/num_logs = 5/' /etc/audit/auditd.conf
# پیکربندی قوانین audit برای رویدادهای مهم
cat <<EOL > /etc/audit/rules.d/audit.rules
-w /etc/localtime -p wa -k time-change
-w /etc/group -p wa -k identity
-w /etc/passwd -p wa -k identity
-w /etc/gshadow -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/security/opasswd -p wa -k identity
-w /etc/issue -p wa -k system-locale
-w /etc/issue.net -p wa -k system-locale
-w /etc/hosts -p wa -k system-locale
-w /etc/sysconfig/network -p wa -k system-locale
-a always,exit -F arch=b64 -S adjtimex -S settimeofday -S clock_settime -k time-change
-a always,exit -F arch=b64 -S fchmod -S fchmodat -S fchown -S fchownat -S chmod -S chown -S lchown -k perm_mod
-a always,exit -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -k delete
EOL
# اعمال تغییرات
service auditd restart
اجرای Playbook Ansible:
این playbook Ansible برای نصب و پیکربندی Auditd به منظور مانیتورینگ و ثبت رویدادهای مهم استفاده میشود:
---
- hosts: all
become: yes
tasks:
- name: Install auditd
dnf:
name: audit
state: present
- name: Enable and start auditd
systemd:
name: auditd
enabled: yes
state: started
- name: Set audit log file size and number of logs
lineinfile:
path: /etc/audit/auditd.conf
regexp: '^max_log_file = .*'
line: 'max_log_file = 50'
notify: restart auditd
- name: Set number of audit log files
lineinfile:
path: /etc/audit/auditd.conf
regexp: '^num_logs = .*'
line: 'num_logs = 5'
notify: restart auditd
- name: Configure audit rules
copy:
dest: /etc/audit/rules.d/audit.rules
content: |
-w /etc/localtime -p wa -k time-change
-w /etc/group -p wa -k identity
-w /etc/passwd -p wa -k identity
-w /etc/gshadow -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/security/opasswd -p wa -k identity
-w /etc/issue -p wa -k system-locale
-w /etc/issue.net -p wa -k system-locale
-w /etc/hosts -p wa -k system-locale
-w /etc/sysconfig/network -p wa -k system-locale
-a always,exit -F arch=b64 -S adjtimex -S settimeofday -S clock_settime -k time-change
-a always,exit -F arch=b64 -S fchmod -S fchmodat -S fchown -S fchownat -S chmod -S chown -S lchown -k perm_mod
-a always,exit -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -k delete
notify: restart auditd
handlers:
- name: restart auditd
systemd:
name: auditd
state: restarted
مغایرت احتمالی با نصب Oracle 19.23:
بار اضافی بر روی سیستم: فعال بودن Auditd و ثبت مداوم رویدادها میتواند منجر به افزایش بار بر روی سیستم شود، به ویژه در سرورهایی که بار سنگین دارند. این موضوع ممکن است بر عملکرد Oracle Database تأثیر بگذارد.
حساسیت به تغییرات فایلها: Auditd میتواند به تغییرات در فایلهای سیستم حساس باشد. اگر فایلهای مهم سیستم یا تنظیمات امنیتی توسط اوراکل تغییر کنند، ممکن است این تغییرات به عنوان رویدادهای مشکوک ثبت شوند.
نیاز به تنظیم دقیق: پیکربندی دقیق قوانین Auditd برای جلوگیری از ثبت بیش از حد اطلاعات و تولید گزارشهای غیرضروری ضروری است. این موضوع به ویژه در سیستمهایی که دادههای زیادی تولید میکنند مهم است.
الزامات حساب دسترسی و تنظیمات امنیتی
توضیحات:
تنظیمات امنیتی مربوط به حسابهای کاربری و مدیریت آنها از اهمیت بالایی برخوردار است. این تنظیمات شامل استفاده از سامانههای مدیریت یکپارچه حسابهای کاربران مانند Active Directory، تنظیمات دقیق رمز عبور، و جلوگیری از دسترسیهای غیرمجاز به سیستم میباشد. استفاده از SHA-512 به عنوان الگوریتم هش برای رمز عبورها توصیه میشود، و همچنین جلوگیری از دسترسی مستقیم به حسابهای سیستمی با استفاده از /sbin/nologin
ضروری است.
اجرای اسکریپت Bash:
#!/bin/bash
# جلوگیری از دسترسی interactive به system account ها
for user in `awk -F: '$3 < 1000 {print $1}' /etc/passwd`; do
if [[ "$user" != "root" ]]; then
usermod -s /sbin/nologin $user
fi
done
# تنظیم هش رمز عبور به SHA-512
authconfig --passalgo=sha512 --update
# تنظیم umask به 027 برای کاربران
echo "umask 027" >> /etc/profile
echo "umask 027" >> /etc/bashrc
# اطمینان از اینکه Password Field خالی نیست
awk -F: '($2 == "") {print $1 " does not have a password set"}' /etc/shadow
اجرای Playbook Ansible:
---
- hosts: all
become: yes
tasks:
- name: Set shell to /sbin/nologin for system accounts
user:
name: "{{ item }}"
shell: /sbin/nologin
loop: "{{ lookup('ansible.builtin.pwgroup', 'x:*:1000', wantlist=True, separator=':').split(':')[0].split('\n') }}"
when: item != "root"
- name: Ensure password hashing algorithm is SHA-512
command: authconfig --passalgo=sha512 --update
- name: Set default umask to 027
lineinfile:
path: "{{ item }}"
line: "umask 027"
loop:
- /etc/profile
- /etc/bashrc
- name: Check for empty password fields
shell: awk -F: '($2 == "") {print $1 " does not have a password set"}' /etc/shadow
register: empty_passwords
failed_when: empty_passwords.stdout != ""
ignore_errors: yes
changed_when: false
مغایرت احتمالی با نصب Oracle 19.23 و مثالهای مرتبط
-
Active Directory Integration:
- مثال: اگر سیستم به Active Directory متصل شده و احراز هویت کاربران اوراکل نیز از طریق این سیستم انجام شود، هرگونه تغییر یا مشکل در Active Directory میتواند بر دسترسی کاربران به دیتابیس تاثیر بگذارد. برای مثال، اگر یک کاربر به اشتباه از Active Directory حذف شود، دسترسی او به اوراکل نیز قطع خواهد شد.
-
User Shell Restrictions:
- مثال: اگر یک حساب کاربری سیستمی مانند
oracle
یاgrid
با استفاده از/sbin/nologin
محدود شود، این حسابها قادر به اجرای دستورات اجرایی نخواهند بود. این موضوع میتواند مشکلاتی را در زمان نگهداری یا اجرای دستورات مدیریتی ایجاد کند. برای مثال، اگر نیاز به اجرای دستوراتsqlplus
یاrman
توسط این حسابها باشد، محدود کردن دسترسی interactive میتواند این فرآیندها را مختل کند.
- مثال: اگر یک حساب کاربری سیستمی مانند
-
Password Policy:
- مثال: اگر سیاستهای رمز عبور با سیاستهای امنیتی اوراکل تداخل داشته باشد، ممکن است کاربران اوراکل نتوانند به درستی وارد سیستم شوند. به عنوان مثال، اگر اوراکل نیاز به یک سیاست رمز عبور خاص داشته باشد که با تنظیمات SHA-512 مطابقت نداشته باشد، کاربران ممکن است نتوانند به دیتابیس وارد شوند یا ممکن است مجبور به تغییر رمز عبورهای خود شوند که میتواند در عملکرد روزانه آنها اختلال ایجاد کند.
این مثالها نشان میدهند که چگونه تنظیمات امنیتی سیستم عامل میتوانند بر عملکرد و دسترسیهای اوراکل تاثیر بگذارند و به همین دلیل مهم است که تنظیمات امنیتی با دقت مورد بررسی و ارزیابی قرار گیرند.
مجوزهای فایل های تایید هویت
توضیحات:
فایلهای تایید هویت شامل passwd
، group
، shadow
و gshadow
اطلاعات مهمی مانند نام کاربران، گروهها و رمزهای عبور هششده را نگهداری میکنند. تنظیم مجوزهای دسترسی این فایلها به درستی از دسترسی غیرمجاز به این اطلاعات حیاتی جلوگیری میکند. همچنین، فایلها و دایرکتوریهایی که به صورت ungrouped یا unowned هستند، باید شناسایی و اصلاح شوند، زیرا ممکن است نقطه ضعفی برای حملات احتمالی باشند.
اجرای اسکریپت Bash:
#!/bin/bash
# تنظیم مالکیت و مجوزهای فایلهای تایید هویت
chown root:root /etc/passwd /etc/group /etc/shadow /etc/gshadow
chown root:root /etc/passwd- /etc/group- /etc/shadow- /etc/gshadow-
chmod 644 /etc/passwd /etc/group
chmod 600 /etc/shadow /etc/gshadow
# شناسایی فایلها و دایرکتوریهای ungrouped و unowned
find / -nogroup -o -nouser
اجرای Playbook Ansible:
---
- hosts: all
become: yes
tasks:
- name: Set ownership of authentication files to root:root
file:
path: "{{ item }}"
owner: root
group: root
loop:
- /etc/passwd
- /etc/group
- /etc/shadow
- /etc/gshadow
- /etc/passwd-
- /etc/group-
- /etc/shadow-
- /etc/gshadow-
- name: Set correct permissions for authentication files
file:
path: "{{ item.path }}"
mode: "{{ item.mode }}"
loop:
- { path: "/etc/passwd", mode: "0644" }
- { path: "/etc/group", mode: "0644" }
- { path: "/etc/shadow", mode: "0600" }
- { path: "/etc/gshadow", mode: "0600" }
- name: Find files and directories without group or owner
command: find / -nogroup -o -nouser
register: unowned_files
- name: Display unowned files
debug:
var: unowned_files.stdout_lines
مغایرت احتمالی با نصب Oracle 19.23:
-
مشکل در احراز هویت کاربران:
- مثال: اگر مجوزهای فایلهای
passwd
وshadow
به درستی تنظیم نشده باشد، ممکن است دسترسی به سیستم برای کاربران محدود شود. این موضوع میتواند در فرآیندهای خودکار اوراکل مانند اجرای اسکریپتها یا فرآیندهای پسزمینه مشکلاتی ایجاد کند.
- مثال: اگر مجوزهای فایلهای
-
مشکلات مرتبط با فایلهای unowned:
- مثال: فایلهای unowned و ungrouped میتوانند نشانهای از مشکلات امنیتی باشند. اگر این فایلها مربوط به اوراکل باشند و دسترسی به آنها از دست رفته باشد، ممکن است مشکلاتی در دسترسی به دادهها یا فایلهای تنظیمات ایجاد شود.
این تنظیمات باید به دقت انجام شوند تا از هرگونه اختلال در عملیات روزانه و دسترسی به سیستم جلوگیری شود.
تنظیمات امنیتی مربوط به USER و GROUP
توضیحات:
تنظیمات امنیتی کاربران و گروهها به منظور جلوگیری از دسترسیهای غیرمجاز و سوءاستفادهها بسیار مهم است. این تنظیمات شامل بررسی فایلهای سیستم برای اطمینان از عدم وجود خطاها و انحرافات امنیتی مانند UID و GID تکراری، وجود کاربرانی با سطح دسترسی بالا (مانند root
) و پیکربندی نامناسب متغیر PATH میباشد.
اجرای اسکریپت Bash:
#!/bin/bash
# بررسی عدم وجود + در فایلهای passwd، shadow و group
grep '^\+:' /etc/passwd /etc/shadow /etc/group && echo "خطا: '+' در فایلهای passwd، shadow یا group وجود دارد."
# بررسی اینکه فقط root دارای uid با مقدار 0 باشد
awk -F: '($3 == "0" && $1 != "root") {print "کاربر غیرمجاز با UID 0:", $1}' /etc/passwd
# بررسی اینکه Default Group برای Root Account دارای مقدار 0 باشد
awk -F: '($1 == "root" && $4 != "0") {print "گروه پیشفرض root مقدار نادرست دارد."}' /etc/passwd
# بررسی عدم وجود dot یا Writable Directory در PATH مورد استفاده توسط Root
echo $PATH | tr ":" "\n" | grep -E '(^$|^\.$|^.*\/\.$|^.*\/\.\.$)' && echo "خطا: PATH شامل دایرکتوریهای نوشتنی یا نامعتبر است."
# بررسی اینکه هر کاربر مالک Home Directory خودش باشد
awk -F: '{print $1 ":" $6}' /etc/passwd | while IFS=: read -r user dir; do
if [ -d "$dir" ] && [ ! -O "$dir" ]; then
echo "کاربر $user مالک Home Directory خود نیست."
fi
done
# بررسی گروههای موجود در passwd در group هم موجود باشد
awk -F: '{print $4}' /etc/passwd | sort -u | while read -r gid; do
if ! grep -q ":$gid:" /etc/group; then
echo "گروه با GID $gid در /etc/group وجود ندارد."
fi
done
# بررسی عدم وجود فایلهای .forward، .rhosts، .netrc در Home Directory کاربران
for user in $(awk -F: '{print $1}' /etc/passwd); do
home=$(eval echo ~$user)
for file in .forward .rhosts .netrc; do
if [ -e "$home/$file" ]; then
echo "کاربر $user فایل $file دارد."
fi
done
done
# بررسی عدم وجود UID و User Name تکراری، GID و Group Name تکراری
awk -F: '{print $3}' /etc/passwd | sort | uniq -d && echo "خطا: UID تکراری وجود دارد."
awk -F: '{print $1}' /etc/passwd | sort | uniq -d && echo "خطا: نام کاربر تکراری وجود دارد."
awk -F: '{print $3}' /etc/group | sort | uniq -d && echo "خطا: GID تکراری وجود دارد."
awk -F: '{print $1}' /etc/group | sort | uniq -d && echo "خطا: نام گروه تکراری وجود دارد."
اجرای Playbook Ansible:
---
- hosts: all
become: yes
tasks:
- name: Check for '+' in passwd, shadow, and group files
shell: grep '^\+:' /etc/passwd /etc/shadow /etc/group
register: plus_entries
- name: Check for non-root users with UID 0
shell: awk -F: '($3 == "0" && $1 != "root") {print "کاربر غیرمجاز با UID 0:", $1}' /etc/passwd
register: uid_zero_users
- name: Check for dot or writable directories in root's PATH
shell: echo $PATH | tr ":" "\n" | grep -E '(^$|^\.$|^.*\/\.$|^.*\/\.\.$)'
register: path_issues
- name: Check if each user owns their Home Directory
shell: |
awk -F: '{print $1 ":" $6}' /etc/passwd | while IFS=: read -r user dir; do
if [ -d "$dir" ] && [ ! -O "$dir" ]; then
echo "کاربر $user مالک Home Directory خود نیست."
fi
done
register: home_ownership_issues
- name: Check for missing groups in /etc/group
shell: awk -F: '{print $4}' /etc/passwd | sort -u | while read -r gid; do
if ! grep -q ":$gid:" /etc/group; then
echo "گروه با GID $gid در /etc/group وجود ندارد."
fi
done
register: missing_groups
- name: Check for prohibited files in Home Directories
shell: |
for user in $(awk -F: '{print $1}' /etc/passwd); do
home=$(eval echo ~$user)
for file in .forward .rhosts .netrc; do
if [ -e "$home/$file" ]; then
echo "کاربر $user فایل $file دارد."
fi
done
done
register: prohibited_files
- name: Check for duplicate UIDs, User Names, GIDs, and Group Names
shell: |
awk -F: '{print $3}' /etc/passwd | sort | uniq -d && echo "خطا: UID تکراری وجود دارد."
awk -F: '{print $1}' /etc/passwd | sort | uniq -d && echo "خطا: نام کاربر تکراری وجود دارد."
awk -F: '{print $3}' /etc/group | sort | uniq -d && echo "خطا: GID تکراری وجود دارد."
awk -F: '{print $1}' /etc/group | sort | uniq -d && echo "خطا: نام گروه تکراری وجود دارد."
register: duplicates
مغایرت احتمالی با نصب Oracle 19.23:
فایلهای .forward
, .rhosts
, .netrc
:
مثال: وجود این فایلها در Home Directory کاربر oracle
ممکن است برای عملکردهای خاص اوراکل مورد نیاز باشد، مانند ارسال ایمیلهای خودکار یا دسترسی به سیستمهای دیگر. حذف این فایلها میتواند باعث از دست رفتن این قابلیتها شود.
بررسی UID و GID تکراری:
مثال: اگر کاربران سیستم عامل اوراکل با UID یا GID تکراری تعریف شده باشند، ممکن است دسترسی به فایلها و دایرکتوریها نادرست اعمال شود و منجر به مشکلات امنیتی یا دسترسی غیرمجاز گردد.
بررسی مالکیت Home Directory:
مثال: اگر مالکیت Home Directory به اشتباه تنظیم شده باشد، کاربران ممکن است نتوانند به فایلهای خود دسترسی داشته باشند یا عملیاتهای حیاتی مانند نصب پچها یا بهروزرسانیها را انجام دهند.