در این پست به آموزش نحوه hardening سیستم عامل centos 7 می پردازیم.
برای دیدن لیست آموزش های لینوکس مانند نصب centos 7 به اینجا مراجعه کنید.
hardening چیست ؟
زمانی که ما یک سیستم عامل را نصب می کنبم , آن بصورت کاملا basic و پیش پا افتاده نصب می شود و کلی رخنه های امنیتی در آن وجود دارد که با عمل hardening می توانیم جلوی این رخنه های امنتی را بگیریم.
برای hardening سیستم عامل centos 7 به ترتیب زیر عمل می کنیم
این مقاله را در سه قسمت برای شما عزیزان ارائه میکنیم
۱- امن کردن mount point ها
برای این کار ابتدا باید آپشن noexec را برای هر کدام از Mount point ها در فایل /etc/fstab فعال کنیم. برای این منظور فایل /etc/fstab را باز میکنیم و بصورت زیر ویرایش میکنیم.
#
# /etc/fstab
# Created by anaconda on Sat Oct 11 14:28:47 2014
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk’
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/lg_os-lv_root / xfs defaults 1 1
UUID=d73c5d22-75ed-416e-aad2-8c1bb1dfc713 /boot ext4 defaults,nosuid,noexec,nodev 1 2
/dev/mapper/lg_data-lv_home /home xfs defaults 1 2
/dev/mapper/lg_os-lv_tmp /tmp xfs defaults,nosuid,noexec,nodev 1 2
/dev/mapper/lg_os-lv_var /var xfs defaults,nosuid 1 2
/dev/mapper/lg_os-lv_var_tmp /var/tmp xfs defaults,nosuid,noexec,nodev 1 2
/dev/mapper/lg_os-lv_var_tmp /var/log xfs defaults,nosuid,noexec,nodev 1 2
/dev/mapper/lg_os-lv_var_tmp /var/log/audit xfs defaults,nosuid,noexec,nodev 1 2
/dev/mapper/lg_data-lv_var_www /var/www xfs defaults,nosuid,noexec,nodev 1 2
/dev/mapper/lg_data-lv_swap swap swap defaults 0 0
۲- نصب و تنظیم NTP
در بیشتر مواقع مشکلات امنیتی برای سرویس و سیستم عامل ما بهاطر عدم هماهنگ بودن زمان محلی آن با واقعیا می باشد . برای مثال گاهی اوقات سرور و سیستم عامل centos 7 ما در تهران نصب شده است ولی ساعت و مخل آن newyork آمریکا میباشد . برای این کار بترتیب NTP را نصب میکنیم و سپس سیستم عامل centos 7 را تنظیم میکنیم که زمان خود را از یک سرور اینترنتی یا حتی NTP خودمان بگیرد.
در زیر مثالی برای این مورد آورده شده است.
yum install ntp ntpdate
chkconfig ntpd on
ntpdate pool.ntp.org
/etc/init.d/ntpd start
۳- جلو گیری از اتصال Flash توسط کاربران
یکی از مواردی که همیشه برای یک سیستم عانل موارد امنیتی ایجاد میکند اتصال Flash به سرور است . برای جلوگیری از این مورد باید این دسترسی را از کاربر بگیریم. در زیر مثالی برای این مورد آورده شده است
echo “install usb-storage /bin/false” > /etc/modprobe.d/usb-storage.conf
۴- ایمن کردن پسوردها در سیستم عامل centos 7
بعد از نصب سیستم عامل centos 7 بصورت پیش فرض این سیستم عامل از لحاظ تنظیمات مقادر پیچیدگی , نوع و … کلمه عبور بسیار ضعیف میباشد که ما باید آنها را بسته به سلیقه خودمان تغییراتی در آن دهیم.
در زیر مثالی از این تغییرات که باید در فایل /etc/security/pwquality.conf داده شود را آورده ایم.
# Configuration for systemwide password quality limits
# Defaults:
#
# Number of characters in the new password that must not be present in the
# old password.
difok = 5
#
# Minimum acceptable size for the new password (plus one if
# credits are not disabled which is the default). (See pam_cracklib manual.)
# Cannot be set to lower value than 6.
minlen = 14
#
# The maximum credit for having digits in the new password. If less than 0
# it is the minimum number of digits in the new password.
dcredit = 1
#
# The maximum credit for having uppercase characters in the new password.
# If less than 0 it is the minimum number of uppercase characters in the new
# password.
ucredit = 1
#
# The maximum credit for having lowercase characters in the new password.
# If less than 0 it is the minimum number of lowercase characters in the new
# password.
lcredit = 1
#
# The maximum credit for having other characters in the new password.
# If less than 0 it is the minimum number of other characters in the new
# password.
ocredit = 1
#
# The minimum number of required classes of characters for the new
# password (digits, uppercase, lowercase, others).
minclass = 4
#
# The maximum number of allowed consecutive same characters in the new password.
# The check is disabled if the value is 0.
maxrepeat = 3
#
# The maximum number of allowed consecutive characters of the same class in the
# new password.
# The check is disabled if the value is 0.
maxclassrepeat = 3
#
# Whether to check for the words from the passwd entry GECOS string of the user.
# The check is enabled if the value is not 0.
gecoscheck = 1
#
# Path to the cracklib dictionaries. Default is to use the cracklib default.
# dictpath =
۵- ایمن کردن فایل /etc/login.defs
برای این منظور فایل /etc/login.defs را بصورت زیر ویرایش میکنیم
PASS_MIN_LEN 14
PASS_MIN_DAYS 1
PASS_MAX_DAYS 60.
۶- تنظیم اعلان آخرین ورود و دسترسی در centos 7
برای این منظور خط زیر را به فایل /etc/pam.d/system-auth اضافه میکنیم
session required pam_lastlog.so showfailed
۷- تنظبم تعداد باری که میشود پسورد را اشتباه وارد کرد
برای این منظور فایلی که در مرحله قبل گفتیم را باز میکنیم و عبارت retry را در مقایل جمله pam_pwquality.so بسته به نیاز خود تعییر میدهیم.
۸- تنظیم تعداد بار استفاده از یک پسورد در دفعات متوالی
برای اینکه کاربر نتواند از یک پسورد پشت سر هم استفاده کند باید تنظیماتی را انجام دهیم.
در زیر نمونه ای از این تغییرات را آورده ایم
vi /etc/pam.d/password-auth
auth [default=die] pam_faillock.so authfail deny=3 unlock_time=604800 fail_interval=900
auth required pam_faillock.so authsucc deny=3 unlock_time=604800 fail_interval=900
password sufficient pam_unix.so existing_options remember=24
۹- بررسی دسترسی فایل /boot/grub2/grub.cfg
مقدار دسترسی فایل /boot/grub2/grub.cfg باید برابر ۶۰۰ باشد برای چک کردن آن باید دستور زیر را اجرا کنیم
sudo chmod 600/boot/grub2/grub.cfg
۱۰- گذاشتن کلمه عبور برای grub
گاهی اوقات یک نفوذگر برای اینکه به سیستم عامل شما دسترسی داشته باشد مواردی که هنگام بوت شدن سیستم عامل استفاده میشود را دستکاری مکند تا دترسی های نا متعارفی را برای خود بدست آورد . برای این منظور بهتر است روی grub پسورد بگذاریم.
برای این منظور به مسیر /etc/grub.d میرویم و دستور زیر را اجرا میکنیم
grub2-mkpasswd-pbkdf2
۱۱- گذاشتن پسورد برای حالت single user
برای این منظور خط زیر را به فایل /etc/sysconfig/init اضافه میکنیم
SINGLE=/sbin/sulogin
۱۲- غیر فعال کردن ctrl+alt+del
از آنجایی که با زدن ctrl+alt+del سیستم عامل reboot می شود باید آن را غیر فعال کرد برای این منظور بصورت زیر عمل میکنیم
vi /etc/init/control-alt-delete.conf
بعد خط زیر را به خط بعدیش تغییر میدهیم
exec /sbin/shutdown -r now “Control-Alt-Delete pressed”
exec /usr/bin/logger -p security.info “Control-Alt-Delete pressed”
۱۳- غیر فعال کردن zeroconf networking
زمانی که سیستم عامل نتواند از DHCP ای پی بگیرد یک رنج ۱۶۹٫۲۵۴٫۰٫۰ بصورت اتوماتیک میگیرد برای جلوگیری از این منظور بصورت زیر عمل میکنیم
echo “NOZEROCONF=yes” >> /etc/sysconfig/network
۱۴- غیرفعال کردن پشتیبانی از IPv6
برای این منظور بصورت زیر عمل میکنیم
echo “options ipv6 disable=1” >> /etc/modprobe.d/disabled.conf
۱۵- غیر فعال کردن IPv6 روی اینترفیس
برای این منظور فایل /etc/sysconfig/network را بصورت زیر ویرایش میکنیم
NETWORKING_IPV6=no
IPV6INIT=no
۱۶- ایمن سازی لاگین کاربر root
کاربر root فقط باید از نزدیک بتواند در سیستم لاگین کند . برای این منظور بصورت زیر عمل میکنیم
echo “tty1” > /etc/securetty
chmod 700 /root