You are on page 1of 150

REDHAT SERVER

HARDENING
(RH413)

BY: AHMED GAMIL


‫‪REDHAT SERVER HARDENING‬‬ ‫‪What is Server Hardening‬‬

‫هذا الكتاب بمثابة ‪ soft copy‬ل‪Redhat Server Hardening (RH413) course‬‬


‫الذي قام المهندس القدير ‪ /‬مصطفي حمودة بشرحه كأول ‪ advanced course‬يتم شرحه مجانا علي الـ ‪ youtube‬علي‬
‫هذا الـ ‪Link‬‬
‫‪http://www.youtube.com/playlist?list=PLjXWa5DiEKqtgBs9lwCM0B_aoa0puDjbp‬‬
‫باالضافة الي االستعانة ببعض مواقع االنترنت الموثوق بها لتوضيح بعض الموضوعات او التوسع في شرحها‬
‫ويتحدث ‪ redhat server hardening (RH413) course‬عن كيفية تأمين الـ ‪ linux servers‬وتقليل الثغرات التي قد‬
‫تسمح بعمل ‪ attack‬للـ ‪ system‬وكيفية معالجة الـ ‪system bugs‬‬
‫وهذا الكتاب مشروح باللغة العربية مع االبقاء علي المصطلحات االجنبية وااللفاظ الشائعة كما هي وذلك لتسهيل ربط‬
‫المعلومات النظرية بالواقع العملي‬
‫كما يحتوي علي الكثير من الصور لتيسير الفهم والتطبيق‪ ،‬وهذه الصور من واقع الـ ‪ LAB‬الخاص بي والذي قمت بإنشائه‬
‫لتطبيق الـ ‪ course‬عمليا‬

‫اسأل هللا ان يجعل عملي خالصا لوجهه الكريم‬


‫وال تنسونا من صالح دعائكم‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪1‬‬
REDHAT SERVER HARDENING What is Server Hardening

Contents
What is Server Hardening .......................................................................................................................5
Course Contents ......................................................................................................................................5
Security updates ......................................................................................................................................5
CVE: common vulnerability and exposure..........................................................................................6
National Vulnerability DB (NVD)..........................................................................................................7
Package Verification............................................................................................................................. 13
Package hashing .............................................................................................................................. 14
Package manager ............................................................................................................................ 16
Backporting ....................................................................................................................................... 20
File system encryption ..................................................................................................................... 21
Mount .................................................................................................................................................... 27
Mount options ................................................................................................................................... 29
nodev ............................................................................................................................................. 29
noexec ........................................................................................................................................... 29
nosuid............................................................................................................................................ 30
File system attributes ........................................................................................................................... 30
Normal attributes ............................................................................................................................. 30
File attributes .................................................................................................................................... 30
Extended attributes .......................................................................................................................... 32
User attributes .............................................................................................................................. 35
Security attributes ........................................................................................................................ 36
Trusted attributes ......................................................................................................................... 36
Extended attributes ...................................................................................................................... 36
Special permissions ............................................................................................................................. 37
File types ....................................................................................................................................... 37
Access permissions ...................................................................................................................... 37
Permissions types......................................................................................................................... 38
Find files with permissions .............................................................................................................. 40
Monitor file changes............................................................................................................................. 41
AIDE ....................................................................................................................................................... 41
AIDE files ........................................................................................................................................... 42
AIDE UASGE ...................................................................................................................................... 45
UMASK .................................................................................................................................................. 47

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 2


REDHAT SERVER HARDENING What is Server Hardening

ACL ........................................................................................................................................................ 49
AAA ........................................................................................................................................................ 51
PAM ....................................................................................................................................................... 52
What is PAM ? ................................................................................................................................... 52
How PAM works ? ............................................................................................................................. 53
Module interface/ PAM facility/Type .......................................................................................... 54
Control /policy .............................................................................................................................. 55
Module Name/Path ...................................................................................................................... 56
Module Arguments ....................................................................................................................... 57
Examples ....................................................................................................................................... 59
Password Aging .................................................................................................................................... 69
Securing GRUB ..................................................................................................................................... 74
Customizing RHEL6 .............................................................................................................................. 76
Login banners ................................................................................................................................... 76
Pre-login banner ........................................................................................................................... 76
Post-login banner ......................................................................................................................... 78
Instant messages ............................................................................................................................. 80
Wall Command ............................................................................................................................. 80
Write Command ............................................................................................................................ 81
Gnome login users ........................................................................................................................... 81
Gnome Power Button ....................................................................................................................... 86
Gnome Banner Message ................................................................................................................. 87
Authentication systems ........................................................................................................................ 88
IPA server .............................................................................................................................................. 89
Install ipa-server ............................................................................................................................... 90
Install ipa client ................................................................................................................................ 95
Uninstall ipa client or remove client from domain ......................................................................... 98
Using ipa server with GUI ................................................................................................................. 98
Adding new user ........................................................................................................................... 98
Adding hosts/clients .................................................................................................................. 102
Add group .................................................................................................................................... 103
Add user to group ....................................................................................................................... 104
Setting password policy ............................................................................................................. 106
Add new password policy ........................................................................................................... 107

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 3


REDHAT SERVER HARDENING What is Server Hardening

Using ipa server with CLI ................................................................................................................ 109


Add new user .............................................................................................................................. 112
Find existing user ....................................................................................................................... 113
Edit password policy ................................................................................................................... 114
Add new group ............................................................................................................................ 115
Search existing group ................................................................................................................ 115
Host based access control ............................................................................................................. 116
HBAC Rules ................................................................................................................................. 116
HBAC Service Groups ................................................................................................................. 122
HBAC Test ................................................................................................................................... 124
Rsyslog ............................................................................................................................................ 126
Install rsyslog on client and server ............................................................................................ 127
Configure client........................................................................................................................... 127
Configure Server ......................................................................................................................... 128
Test logging ................................................................................................................................. 129
Encrypting Syslog Traffic with TLS (SSL (................................................................................... 129
Summery ............................................................................................................................................. 140

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 4


REDHAT SERVER HARDENING What is Server Hardening

RH 413

REDHAT
SERVER HARDENING
What is Server Hardening
‫ بحيث‬vulnerabilities ‫ بشكل عام وتقليل ال‬how to secure your linux server ‫ عن‬course ‫يتحدث هذا الـ‬
‫ للعمل عليه‬users ‫ وال‬services ‫يصبح مناسب لجميع ال‬
‫ او غيرها‬oracle DB ‫ معين مثل‬application ‫ معينه او‬service ‫ لـ‬securing ‫ بعمل‬course ‫وال يتعلق هذا الـ‬
Course Contents
: ‫ تغطية العديد من المواضيع مثل‬course ‫سنحاول في هذا الـ‬
Security updates
Package verification
File system encryption
SUID, SGID
ACL
PAM
Iptables, firewall
Identity management (IDM)
Log management
Grub security
Audit
Key logging
Mounting options
Security updates
: security threads ‫ سنتحدث اوال عن ال‬security updates ‫قبل ان نتحدث عن ال‬
: ‫ الي نوعين‬security threads ‫يمكن تقسم ال‬
system ‫ للدخول علي الـ‬hacker ‫ يستخدمه الـ‬SW coding ‫ وهو خطأ في ال‬: vulnerability -1
‫ بالحصول علي معلومات تساعده في عمل الـ‬attacker ‫ يسمح للـ‬SW configuration ‫ هو خطأ في الـ‬: exposure -2
‫ التي تظهر في صفحات االنترنت‬apache ‫ مثل معلومات الـ‬، attack

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 5


‫‪REDHAT SERVER HARDENING‬‬ ‫‪Security updates‬‬

‫وكل شركة تقوم بعمل ‪ Updates‬لبرامجها لتفادي هذه الـ ‪ security threads‬وتضع لها ‪ standard name‬خاص بها‬
‫فمثال تقوم ‪ redhat‬بتسمية الـ ‪ updates‬بـ ”‪“FEDORA-EPEL-year of update-update no‬‬
‫او ”‪“RHSA--year of update-update no‬‬
‫بينما الـ ‪ standard names‬التي تضعها شركه ‪ Microsoft‬مثال لها شكل اخر‬
‫ولكن قامت احدي الهيئات االمريكية بعمل ‪ project‬مسئول عن تجميع هذه الـ ‪ updates‬من جميع الشركات ووضع ‪standard‬‬
‫‪ name‬موحد وهذا الـ ‪ project‬يسمى ‪CVE‬‬

‫‪CVE: common vulnerability and exposure‬‬

‫الـ ‪ CVE‬هو ‪ dictionary‬وليس ‪ DB‬يقوم بتسجيل ال ‪ security threads‬التي تم اكتشافها من جميع الشركات ويضع لها‬
‫‪ standard name‬ووصف مختصر ‪ ،‬ثم يقوم بارسالها الي العديد من الـ ‪ databases‬مثل الـ ‪National Vulnerability DB‬‬
‫)‪ (NVD‬بحيث تستطيع اي ‪ security tool‬الوصول اليها والحصول علي معلومات منها‬

‫وال ‪ CVE‬تصف ال ‪ SW mistake‬بالـ ‪ vulnerability‬اذا كان يسمح لل ‪ attacker‬بـ ‪:‬‬


‫‪ -1‬الدخول علي ال ‪ system‬مباشرة وتنفيذ اي ‪ command‬كـ ‪system user‬‬
‫‪ -2‬عمل ‪denial of service‬‬
‫‪ -3‬الحصول علي بيانات غير مصرح له بيها‬
‫كما انها تصف ال ‪ configuration‬الخاطئة بالـ ‪ exposure‬اذا كانت هذه االخطاء ال تسمح لل ‪ attacker‬باختراق ال ‪system‬‬
‫بشكل مباشر بل توفر له المعلومات فقط ‪:‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪6‬‬
REDHAT SERVER HARDENING Security updates

‫ او اخفاء ما يقوم به‬system ‫ بالحصول علي معلومات عن ال‬attacker ‫ تسمح لل‬-1


https://cve.mitre.org/about/terminology.html

National Vulnerability DB (NVD)


security checklists, ‫ مثل‬security information ‫ الخاصه بال‬databases ‫ للعديد من ال‬repository ‫هو‬
misconfigurations, product names, and impact

fix information, severity scores, and ‫ ثم تقوم بعمل‬CVE ‫ من ال‬security threads ‫ تحصل علي ال‬DBs ‫وهذه ال‬
impact ratings

http://nvd.nist.gov/about.cfm

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 7


‫‪REDHAT SERVER HARDENING‬‬ ‫‪Security updates‬‬

‫نعود مرة اخري الي ال ‪ ، Updates‬نستطيع تقسيم ال ‪ updates‬الي ‪ 3‬انواع ‪:‬‬


‫‪1- RHSA : RedHat Security Advisory‬‬
‫‪‬‬ ‫‪Critical Security Notice‬‬
‫خاصة بمشاكل ال ‪ unauthenticated remote access‬للوصول الي ال ‪ server‬او ‪ run script‬عليه‬
‫مثل مشكلة ال ‪ openssl‬الشهيرة التي تسمح للـ ‪ remote user‬ان يصل الي الـ ‪ memory‬ويحصل منها علي معلومات‬
‫‪‬‬ ‫‪Important Security Notice‬‬
‫خاصة بمشاكل الـ ‪ ، system availability‬مثل ان يقوم شخص بارسال ‪ requests‬كثيرة جدا الي ال ‪apache‬‬
‫‪ server‬فيؤدي ذلك الي استهالك ال ‪ memory‬وتوقف ال ‪server‬‬
‫كما انها تختص باي مشكلة تسمح للـ ‪ local user‬بالحصول علي صالحيات الـ ‪root‬‬
‫‪‬‬ ‫‪Moderate Security Notice‬‬
‫خاصة بالمشاكل التي يصعب علي ال ‪ attacker‬استغاللها او تحتاج الي ‪ expert attacker‬لكي يستطيع استخدامها‬
‫مثل معظم مشاكل الـ ‪java‬‬
‫‪‬‬ ‫‪Low Security Notice‬‬
‫خاصة بالمشاكل التي ال تسبب خطورة كبيرة علي الـ ‪ ، system‬وهذه المشاكل ال تحدث اال في ظروف نادرة‬

‫‪2- RHBA : RedHat Bug Advisory‬‬


‫وهي ‪ updates‬الصالح ال ‪ bugs‬الموجودة في ال ‪ application‬والتي تؤدي الي حدوث ‪ crash‬او ‪ wrong output‬نتيجة‬
‫مشاكل في ال ‪ source code‬او ال ‪design‬‬

‫‪3- RHEA : RedHat Enhancement Advisory‬‬


‫وهي ‪ Updates‬تضيف المزيد من ال ‪ features‬الي ال ‪ ، application‬ولكنها قد تقوم بتغيير الـ ‪ configuration file‬للـ‬
‫‪ service‬التي تقوم بتحديثها وقد يؤدي ذلك الي توقف ال ‪ service‬عن العمل‬

‫وللحصول علي ال ‪ security updates‬باستخدام ال ‪ yum‬يجب عمل ‪ install‬للـ ‪yum-plugin-security.noarch‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪8‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪Security updates‬‬

‫ونالحظ من الصورة السابقة ان ال ‪ loaded plugins‬ال تحتوي علي ‪ ، security‬لذلك يجب عمل ‪ install‬لها‬

‫وعند اضافة هذا ال ‪ plugin‬فيتم وضع ال ‪ config file‬الخاص به في ‪/etc/yum/pluginconf.d/‬‬

‫فتظهر كالتالي‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪9‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪Security updates‬‬

‫وكما نرى في الصورة السابقة انه تمت اضافة ال ‪security plugin‬‬


‫ونستطيع معرفة ال ‪ updates‬التي يحتاجها الـ ‪ system‬وانواعها عن طريق االمر‬
‫‪# yum updateinfo‬‬

‫فتظهر الـ ‪ updates‬المتاحة للـ ‪ system‬وهي ‪ 3 Security notice(s) :‬و )‪ 2 Bugfix notice(s‬و ‪1 Enhancement‬‬
‫)‪ ، notice(s‬وقد تختلف طريقة عرض الـ ‪ output‬باختالف الـ ‪distribution‬‬
‫ولعرض تفاصيل الـ ‪ updates‬نستخدم االمر ‪:‬‬
‫‪# yum updateinfo list‬‬

‫ولعرض مزيد من التفاصيل عن جميع الـ ‪ updates‬المتاحة‬


‫‪# yum updateinfo info‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪10‬‬
REDHAT SERVER HARDENING Security updates

Update ID ‫ معين باستخدام ال‬update ‫ولعرض تفاصيل عن‬


# yum updateinfo RHSA-2014:0919:R6-64

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 11


‫‪REDHAT SERVER HARDENING‬‬ ‫‪Security updates‬‬

‫ونالحظ ان الـ ”‪ update ID : “FEDORA-EPEL-2013-11585‬في ‪ fedora‬ويكون شكله "‪RHSA-2014:0919:R6-64‬‬


‫" في ‪ Redhat‬ويختلف عنه في ‪CVE‬‬
‫ويمكن استخدام الـ ‪ yum‬مع الـ ‪CVE ID‬‬
‫‪# yum updateinfo --cve= CVE-2014-1556‬‬

‫وهنا قام بعرض معلومات ال ‪ CVE‬ونوع ال ‪ updates‬المسئولة عنها‬


‫بينما اذا اردنا ان نعرض مزيد من التفاصيل عن الـ ‪ packages‬التي يتحدث عنها هذا الـ ‪ CVE‬فنقوم بتنفيذ االمر التالي ‪:‬‬
‫‪# yum updateinfo list --cve= CVE-2014-1556‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪12‬‬
REDHAT SERVER HARDENING Package Verification

security and bugfix and enhancement ‫“ فسوف يقوم بتحديث جميع االنواع‬yum update” ‫فاذا قمنا بتنفيذ االمر‬
: ‫) فنقوم بكتابة االمر‬critical, important, moderate, low ( ‫ فقط بجميع انواعها‬security update ‫اما اذا اردنا عمل‬
# yum update --security

: ‫ فنقوم بكتابة االمر‬Update ID ‫ باستخدام الـ‬update ‫اما اذا اردنا عمل‬


# yum update --advisory=RHSA-2014:0919:R6-64

Package Verification

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 13


‫‪REDHAT SERVER HARDENING‬‬ ‫‪Package Verification‬‬

‫الـ ‪ package verification‬تعني التأكد من صحة وسالمة أي ‪ package‬قبل ان اقوم بعمل ‪ Install‬لها والتأكد من مصدرها وال‬
‫يجب عمل ‪ install‬الي ‪ Package‬من اي مكان غير موثوق به‬

‫ولكن لماذا ؟‬
‫الن الـ ‪ rpm package‬تتكون من مجموعة من الـ ‪ scripts‬وقد يستطيع الـ ‪ hackers‬التالعب فيها او اضافة ‪ scripts‬ضارة‪،‬‬
‫وهذا يسبب خطر كبير علي الـ ‪ system‬وهذا يظهر كالتالي‬
‫‪# rpm --qp –scripts package_name.rpm‬‬

‫وكما نري ان الـ ‪ RPM package‬تتكون من مجموعة من الـ ‪ scritps‬التي يمكن ان تعمل قبل بداية الـ ‪ installation‬او الـ‬
‫‪ ، uninstallation‬ومن هنا تأتي اهمية الـ ‪package verification‬‬
‫وهناك طريقتين للتأكد من سالمة الـ ‪: packages‬‬
‫‪ -1‬باستخدام الـ ‪package hashing‬‬
‫‪ -2‬باستخدام الـ ‪package manager‬‬
‫‪Package hashing‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪14‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪Package Verification‬‬

‫كل ‪ file‬او ‪ package‬لها ‪ hash‬وهو عبارة عن ‪ checksum‬خاص به ‪ ،‬واي تغيير في هذا الـ ‪ file‬يؤدي الي تغيير الـ ‪،hash‬‬
‫وهناك اكثر من ‪ algorithm‬يستخدم لمعرفة الـ ‪ hash‬مثل ‪md5, sha‬‬
‫ولمعرفة الـ ‪ md5‬الي ‪ Package‬نستخدم االمر ‪:‬‬
‫‪# md5sum package_name‬‬

‫ولمعرفة الـ ‪ sha‬الي ‪ package‬نستخدم االمر ‪:‬‬


‫‪# sha512sum package_name‬‬

‫ولكن كيف نتأكد ان هذا الـ ‪ fingerpring‬الذي ظهر هو االصلي ؟‬


‫يجب ان نقارن بينه وبين الـ ‪ fingerpring‬االصلي القادم من الشركة اما عن طريق النظر او عن طريق االمر‬
‫‪# # md5sum -c md5_fingerpring‬‬

‫ولكن اذا اعدنا الـ ‪ file‬الي اصله مرة اخري سيعود الـ ‪ hash‬االصلي‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪15‬‬
REDHAT SERVER HARDENING Package Verification

Package manager
key ‫ مثل اسمها ووصف مختصر لها والـ‬Package ‫ وهي معلومات عن الـ‬metadata ‫ علي‬rpm ‫يحتوي كل‬
# rpm -qpi Package_name

redhat ‫ ومن هنا نجد ان‬، vendor ‫ الخاصه بالـ‬signature ‫ تحتوي علي الـ‬metadata ‫وكما نرى في الصورة السابقة الـ‬
،hashing ‫ والـ‬signature (public key) ‫ وهما الـ‬package verification ‫تستخدم طريقيتين لعمل الـ‬
md5sum.txt ‫ باسم‬redhat ‫ علي موقع‬Hashes ‫ تحدثنا عنه سابقا وعن كيفية التأكد من صحته وتوجد الـ‬Hashing ‫والـ‬
redhat site ‫“ اوعلي‬RPM-GPG-KEY-redhat-release” ‫ باسم‬installation CD ‫ يتوفر في الـ‬public key ‫بينما الـ‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 16


REDHAT SERVER HARDENING Package Verification

‫ومحتوياته هي‬

verification ‫ لعمل الـ‬admin ‫ للـ‬public key ‫ والـ‬Hash file ‫ تقوم بتوفير الـ‬redhat ‫اذا فإن‬
: ‫ نقوم ببعض الخطوات‬Public key ‫ عن طريق الـ‬packages ‫ للـ‬verification ‫ولكي نستطيع عمل‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 17


REDHAT SERVER HARDENING Package Verification

system ‫ علي الـ‬keys ‫ للـ‬import ‫ نقوم بعمل‬-1


CLI ‫ باستخدام الـ‬verification ‫ ثم نقوم بعمل‬-2

system ‫ الحالية في الـ‬imported keys ‫ولكن ما هي الـ‬


# rpm -qa gpg-pubkey

‫“ عند‬No Key” ‫ ورسالة‬warning ‫ وهذا هو سبب ظهور الـ‬، system ‫ في الـ‬imported keys ‫نالحظ هنا انه ال توجد‬
metadata ‫استعراض الـ‬

error ‫ يظهر هذا الـ‬package verification ‫او حتي عند محاولة عمل‬
# rpm –K package_name

Official CD ‫ من الـ‬keys ‫ للـ‬Import ‫لذا نقوم بعمل‬


rpm --import Path_to_key

‫ التي تم اضافتها مرة اخري‬keys ‫ثم نتأكد من‬


# rpm -qa gpg-pubkey

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 18


REDHAT SERVER HARDENING Package Verification

key ‫ولمعرفة تفاصيل الـ‬


# rpm -qi key_name

keys ‫ مرة اخرى بعد اضافة الـ‬verification ‫نقوم االن بعمل‬

warning ‫وسنالحظ اختفاء الـ‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 19


‫‪REDHAT SERVER HARDENING‬‬ ‫‪Package Verification‬‬

‫ولحذف ‪ imported key‬نستخدم االمر‬


‫‪# rpm -e gpg-pubkey-2fa658e0-45700c69‬‬

‫ومن الجدير بالذكر ان هذه الـ ‪ imported/trusted keys‬يتم تخزينها في‬


‫‪/var/lib/rpm‬‬

‫‪Backporting‬‬
‫سنتحدث االن عن جزء بسيط نظري وهو الـ ‪ backporting‬او الترقية‬
‫والـ ‪ backporting‬هو عمليه اصالح ‪ security problem‬موجود في اصدار سابق من الـ ‪, software‬ذلك باالستعانه باالصدار‬
‫االحدث منه‬
‫مثال ‪ :‬اذا كان لدي ‪ software V1‬يحتوي علي ‪ security vulnerability‬معينه ‪ ،‬ثم قام الـ ‪ software developers‬باصدار‬
‫النسخة ‪ software v2‬التي عالجت هذا الـ ‪security vulnerability‬‬
‫فيتم تطبيق جزء من الـ ‪ code‬الجديد والذي له يعالج هذه الـ ‪ security problem‬واضافتها الي الـ ‪ software‬القديم ‪ ،‬وهذا الجزء‬
‫يعرف بالـ ‪fix‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪20‬‬
REDHAT SERVER HARDENING Package Verification

‫ الموجودة في االصدار القديم بدون الحاجه الي تحديث الـ‬security problems ‫ انه يعالج الـ‬Backporting ‫ومن مميزات الـ‬
configuration files ‫ المستخدمه او الـ‬Modules ‫ قد ينتج عنه اختالف في الـ‬software ‫ حيث ان تحديث الـ‬software
‫ لبعض الـ‬install ‫ او عمل‬software version ‫ عمل تحديث للـ‬security issue ‫ولكن نادرا ما يتطلب اصالح هذا الـ‬
‫ لن يؤثر علي اي شيئ آخر‬update ‫ او هذا الـ‬packages ‫ االخري ولكن ذلك يتم بعد التأكد من ان هذه الـ‬packages
https://access.redhat.com/security/updates/backporting

File system encryption

‫ ؟‬file system encryption ‫ما هو الـ‬


key ‫ بـ‬partition ‫ او الـ‬file system ‫ للـ‬lock ‫هو‬

‫ ؟‬file system encryption ‫لماذا نقوم بعمل‬


forbidden access ‫ او الـ‬HDD ‫ في حالة سرقة الـ‬partition ‫للحفاظ علي محتويات الـ‬

‫ ؟‬file system encryption ‫كيف نقوم بعمل‬


‫ ويقوم ببعض الوظائف‬encrypted partition ‫ الي‬partition ‫ الذي يحول الـ‬luks (linux unified key setup) ‫باستخدام الـ‬
‫االخرى كما سنرى الحقا‬
virtual point ‫ والـ‬mount point ‫ولكن لنتحدث اوال عن الفرق بين الـ‬
‫ والتعامل معه‬device ‫ نستطيع منها الدخول علي الـ‬window ‫ هي‬Mount point ‫الـ‬
encrypted ‫ بعملها لكي يستخدمها في التاعمل مع الـ‬luks utility ‫ يقوم الـ‬virtual device ‫ هي بمثابة‬virtual point ‫بينما الـ‬
‫ لها‬mount point ‫ ولكي نستطيع استخدماها يجب عمل‬FS
:LVM ‫ تشبه الـ‬virtual point (virtual device) ‫والـ‬
LVM path: /dev/mapper/vg_pxeserver-lv_root and its mount point /
Virtual point path: /dev/mapper/mydata and its mount point /data/
‫ اال عن‬virtual device ‫ فال نستطيع ايضا استخدام الـ‬، mount point ‫ مباشرة اال عن طريق‬LVM ‫ومثلما ال نستطيع استخدام الـ‬
mount point ‫طريق‬

‫ ؟‬mapper (device mapper) ‫وما هي الـ‬


‫ والـ‬LVM ‫ مثل الـ‬virtual device (virtual point) ‫ علي‬block device ‫ لـ‬mapping ‫ يقوم بعمل‬kernel subsystem ‫هو‬
‫ الي الـ‬virtual device ‫ من الـ‬data ‫ وهو المسئول عن نقل الـ‬FS snapshot ‫ مثل‬features ‫ ويضيف له بعض الـ‬Raid
block device
http://en.wikipedia.org/wiki/Device_mapper
: ‫ واستخدامه يجب ان نقوم باالتي‬encrypted FS ‫اذا لكي نستطيع عمل‬
1- Format FS using luks
2- Create virtual point
3- Convert FS to ext4

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 21


REDHAT SERVER HARDENING Package Verification

4- Create mount point


5- Mount FS on boot
‫ عليه‬encryption ‫“ يصلح لتنفيذ الـ‬/dev/sdb1” ‫ جديد‬partition ‫لدينا االن‬

‫ له باستخدام االمر‬formatting ‫ نقوم االن بعمل‬-1


# cryptsetup luksFormat /dev/sdb1

encryption ‫ للـ‬Passphrase ‫ ويجب ان نضع‬، partition ‫ هذه الخطوة تقوم بمسح جميع محتويات الـ‬: ‫ملحوظة‬
: ‫ نستخدم االمر‬encrypted partition ‫ بعد تحويله الي‬partition ‫ولعرض معلومات الـ‬
# cryptsetup luksDump /dev/sdb1

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 22


REDHAT SERVER HARDENING Package Verification

‫ باستخدام االمر‬virtual point/device ‫ نقوم اآلن بعمل‬-2


# cryptsetup luksOpen /dev/sdb1 mydata

‫ تماما‬LVM ‫ مثل الـ‬/dev/mapper ‫ بداخل‬virtual device (mydata) ‫نجد هنا انه قام باضافة‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 23


REDHAT SERVER HARDENING Package Verification

)/dev/sdb1 ‫ ولننسى‬/dev/mapper/mydata ‫ (ومن االن سنتعامل مع الـ‬ext4 ‫ الي‬FS ‫ نقوم االن بتحويل الـ‬-3
# mkfs.ext4 /dev/mapper/mydata

device ‫ لنتمكن من التعامل مع هذه الـ‬mount point ‫ نقوم االن بعمل‬-4

FS ‫ ولكن قبل هذه الخطوة يجب ان نتحدث قليال عن الـ‬startup ‫ عند الـ‬FS ‫ للـ‬automount ‫ نقوم بعمل‬-5
encryption/decryption
‫ قمنا باستخدام االمر‬virtual device ‫عنتدما قمنا بعمل‬
# cryptsetup luksOpen /dev/sdb1 mydata
:‫ نقوم بتنفيذ االمر التالي‬virtual device ‫ واللغاء الـ‬، passphrase ‫وطلب منا ادخال الـ‬
# cryptsetup luksClose mydata

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 24


‫‪REDHAT SERVER HARDENING‬‬ ‫‪Package Verification‬‬

‫سنجد ان ‪ mydata‬قد اختفت والعادتها مرة اخرى فسنقوم بتنفيذ ‪ loksOpen‬وادخال الـ ‪passphrase‬‬
‫اذا فعند اغالق الـ ‪ server‬فسيتم الغاء الـ ‪ virtual device‬وعند اعادة تشغيلة مرة اخرى فيجب تنفيذ ‪ loksOpen‬وادخال الـ‬
‫‪ passphrase‬ثم عمل ‪، mount‬‬

‫اذا كيف نقوم بعمل ذلك ؟‬


‫نقوم باضافة بيانات الـ ‪ virtual device‬في ملف ‪ crypttab‬حتي يقوم الـ ‪ system‬بعمل الـ ‪ encryption‬اثناء الـ‬ ‫‪.i‬‬
‫‪startup‬‬
‫نقوم بعمل ‪ key‬يستخدمه الـ ‪ system‬لعمل الـ ‪ encryption‬اثناء الـ ‪startup‬‬ ‫‪.ii‬‬
‫نقوم بتعيير الـ ‪ key permission‬بحيث يكون ‪ accessable‬للـ ‪ root‬فقط‬ ‫‪.iii‬‬
‫نقوم باضافة الـ ‪ virtual device‬لملف الـ ‪fstab‬‬ ‫‪.iv‬‬
‫نقوم باضافة الـ ‪ key file‬الي الـ ‪ luks‬حتي يستطيع الـ ‪ system‬استخدامه‬ ‫‪.v‬‬

‫نضف في ملف الـ ‪ crypttab‬اسم الـ ‪ virtal device‬والـ ‪ block device‬والـ ‪ key file‬الذي سيستخدمه الـ ‪system‬‬ ‫‪-1‬‬
‫في عمل الـ ‪encryption‬‬

‫نقوم بعمل الـ ‪ key‬ويمكن ان يكون ملف عادي او صورة او اي شيء اخر‬ ‫‪-2‬‬

‫‪ -3‬نقوم بتعديل الـ ‪permissions‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪25‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪Package Verification‬‬

‫وأي تعديل علي الفايل محتويات الـ ‪ key file‬فلن يستطيع الـ ‪ system‬عمل ‪ mounting‬له اثناء الـ ‪ startup‬وسينتج عنه هذا الـ‬
‫‪error‬‬

‫واذا لم نقوم بتغيير الـ ‪ Permission‬فسوف يظهر هذا الـ ‪ warning‬اثناء الـ ‪reboot‬‬

‫‪ -4‬نقوم بالتعديل علي ملف الـ ‪fstab‬‬

‫‪ -5‬نقوم باضافة الـ ‪ key file‬الي الـ ‪ luks‬حتي يستطيع الـ ‪ system‬استخدامه‬
‫‪# cryptsetup luksAddKey /dev/sdb1 /etc/secret‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪26‬‬
REDHAT SERVER HARDENING Mount

startup ‫ اثناء الـ‬automount ‫ وعمل‬FS encryption ‫وبذلك نكون قد اتممنا عمل‬

Mount
‫ يستخدم لعمل‬mount ‫ فالـ‬، file system attributes ‫ كمدخل الي الموضوع التالي‬Mount ‫سنتحدث االن عن الـ‬
. file system option ‫ لـ‬enable/disable
‫ عن طريق االمر‬file system ‫ للـ‬mount ‫نستطيع عمل‬
# mount /dev/sda3 /work
: ‫ نستخدم االمر‬FS ‫ علي هذا الـ‬extended attributes ‫ او تفعيل الـ‬ACL option ‫ مع اضافة‬file syetsm ‫ لـ‬Mount ‫ولعمل‬
# mount /dev/sda3 /work –o acl
# mount /dev/sda3 /work –o user_xattr

: ‫ نستخدم االمر‬already mounted FS ‫ لـ‬option ‫والضافة هذا الـ‬


# mount –o remount,acl,user_xattr /work
: ‫ وهم‬mount ‫ تتعلق بالـ‬3 files ‫وهناك‬
/etc/mtab, /etc/fstab, /proc/mounts
‫ عند بداية‬system ‫ ويقوم الـ‬، mount options ‫ والـ‬mount point ‫ والـ‬devices ‫ يحتوي علي الـ‬file ‫ هو‬: /etc/fstab/
manual ‫ يكون‬file ‫ والتعديل على هذا الـ‬، ‫ وتنفيذه‬file ‫ بقراءة هذا الـ‬startup ‫الـ‬

file ‫“ فانه يقوم بالذهاب لهذا الـ‬mount” ‫ وعند كتابة االمر‬، mounted devices ‫ يحتوي علي الـ‬file ‫ هو‬: /etc/mtab/
‫وعرض محتوياته‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 27


‫‪REDHAT SERVER HARDENING‬‬ ‫‪Mount‬‬

‫ونجد انها متطايقة تماما مع الـ ‪mtab‬‬

‫واذا نظرنا الي اخر سطر في الصورة سنجد انه قد تم عمل ‪ Mount‬للـ ‪ /test‬بـ )‪rw permissions (default attributes‬‬
‫وهي تعتبر الـ )‪ ، default permissions (attributes‬وعند اضافة اي ‪ attributes‬الي الـ ‪ file system‬سنجده قد اضيف‬
‫بجانب الـ ‪rw attribute‬‬

‫وليس بالضرورة ان يكون الـ ‪ mtab‬والـ ‪ fstab‬متماثلين ‪ ،‬فعندما نقوم بعمل ‪ mount‬الي ‪ new device‬بعد تشغيل الـ‬
‫‪ machine‬فسوف تضاف تلقائيا في الـ ‪ mtab‬وليس في الـ ‪fstab‬‬
‫‪ : /proc/mounts/‬هو ‪ file‬يحتوي علي الـ ‪ mounted devices‬والـ ‪ mount options‬التي يستخدمها الـ ‪ kernel‬حاليا‪،‬‬
‫وهذه الـ ‪ data‬تعتبر ‪ duplicated‬من ملف ‪mtab‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪28‬‬
REDHAT SERVER HARDENING Mount

Mount options
. ‫ اليه‬features ‫ الضافة بعض الـ‬mount ‫ اثناء الـ‬file system ‫ تضاف الي‬options ‫ هي‬mount options ‫الـ‬
no dev, noexec, nosuid, user_attr,… : ‫مثل‬
nodev
file system ‫ تحت هذا الـ‬block device ‫ اي ال تقوم باضافة اي‬، no device ‫وتعني‬
‫ هو‬file ‫ وهذا الـ‬، sda ‫ باسم مثل‬file ‫ ويخصص له‬/dev ‫ يظهر تحت‬system ‫ جديد يضاف للـ‬device ‫ومن المعروف ان اي‬
device ‫الذي يسمح لي بالتعامل مع الـ‬
dev ‫ اخر غير‬file system ‫ جديد ان يضاف تحت اي‬device ‫وال يسمح الي‬
: ‫ اخر نستخدم االمر‬mount option ‫ او اي‬option ‫ مع اضافة هذا الـ‬FS ‫ للـ‬Mount ‫ولعمل‬
# mount –o remount,nodev /work
noexec
executable file ‫ هو الذي يقوم بتشغيل الـ‬root user ‫ من التشغيل حتي اذا كان الـ‬executable file ‫لمنع اي‬
: ‫ نستخدم االمر‬already mounted FS ‫ لـ‬option ‫والضافة هذا الـ‬
# mount –o remount,noexec /test

‫ مرة اخرى‬option ‫واللغاء هذا الـ‬


# mount -o remount,exec /test

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 29


REDHAT SERVER HARDENING File system attributes

nosuid
group ‫ او الـ‬owner ‫ بصالحيات الـ‬file ‫ من تشغيل‬user ‫لمنع اي‬

File system attributes


‫ تصف‬metadata ‫ تحتوي علي‬file systems ‫ وهذه الـ‬FAT, EXT, XFS, JFS ‫ مثل‬linux file systems ‫هناك العديد من الـ‬
‫ التي يدعمها‬Features ‫ وتحدد الـ‬file system ‫الـ‬
‫ مما يسمح باضافة المزيد‬file system ‫ الي هذا الـ‬attributes ‫ عن طريق اضافة المزيد من الـ‬Features ‫ويمكن زيادة هذه الـ‬
‫ التي بداخله‬files/dir ‫ علي الـ‬features ‫من الـ‬
: ‫ الي‬attributes ‫وتنقسم هذه الـ‬
normal attributes -1
file attributes -2
Extended attributes -3
Normal attributes
‫ او التي تظهر عند استخدام االمر‬permissions, owner, group, size, … ‫ مثل الـ‬inode ‫ المرتبطة بالـ‬attributes ‫هي الـ‬
file systems ‫ وتوجد في جميع انواع الـ‬، )rwx,d,..( ls –l
: ‫ نستخدم االمر‬Inode index ‫ الموجوده في الـ‬normal attributes ‫والستعراض الـ‬
# stat filename

File attributes
‫ اخرى تضاف الي الـ‬attributes ‫ وهي‬، extended file systems (ext2, ext3, ext4) ‫ علي الـ‬file attributes ‫تطبق الـ‬
‫ مثل الغاء عمليه حذف الملفات او التعديل عليها‬، security ‫ والـ‬control ‫ بهدف تحقيق المزيد من الـ‬files/directories
Package
e2fsprogs
Files
/usr/bin/chattr
/usr/bin/lsattr

lsattr ‫ نستخدم االمر‬attributes ‫ ولعرض الـ‬، attributes ‫ اضافة‬/‫ لتغيير‬chattr ‫ويستخدم االمر‬
‫ بالطريقة التالية‬attribute ‫ ونقوم باضافة الـ‬، overwrite ‫ فقط بدون‬file ‫ وهي تقوم باالضافة الي الـ‬append only ‫ وتعني‬-a
‫وكما نرى انه يمكن االضافة علي الملف‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 30


‫‪REDHAT SERVER HARDENING‬‬ ‫‪File system attributes‬‬

‫ولكن ال يمكن عمل ‪ overwrite‬له‬

‫‪ -i‬وتعني ‪ immutable‬وهي تقوم بمنع اي ‪ action‬يتم علي الـ ‪ file‬سواء ‪ delete‬او ‪ append‬او ‪modify‬‬
‫‪# chattr +i /test/script‬‬

‫ولن يمكن حذف الملف حتي بالـ ‪root user‬‬

‫ولحذف الملف يجب ان نلغي هذا الـ ‪ attribute‬اوال عن طريق‬


‫‪# chattr -i /test/script‬‬

‫‪ -j‬وتعني ‪ journaling‬والـ ‪ journaling‬تستخدم للحفاظ علي الـ ‪ data‬من الضياع في حالة االنقطاع المفاجئ للكهرباء او حدوث‬
‫اي مشكلة في الـ ‪ server‬وذلك عن طريق اضافة ‪ logs‬منفصلة للـ ‪ data‬التي يتم كتابتها علي الـ ‪ file system‬وهذه الـ ‪ logs‬هي‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪31‬‬
REDHAT SERVER HARDENING File system attributes

file system ‫ تجبر الـ‬attribute ‫ واضافة هذا الـ‬. corrupted data ‫ مرة اخري الستعادة الـ‬file system ‫التي يستخدمها الـ‬
file ‫ عند التعامل مع هذا الـ‬journaling ‫علي استخدام الـ‬
journaling ‫ يدعم الـ‬file system ‫وكما نرى في الصورة التالية ان الـ‬

file ‫ الي الـ‬attribute ‫ولكن يجب اضافة الـ‬


# chattr +j /test/script

attribute ‫ فاذا تم تطبيق هذا الـ‬dump command ‫ باستخدم الـ‬Backup ‫ وهي تستخدم في حالة عمل‬no dump ‫ وتعني‬-d
dump ‫ فسوف يتم استثناءه من عمليه الـ‬file ‫علي الـ‬
# chattr +d /test/script

‫ فعندما تقوم‬،‫ عند الكتابه عليه‬file system ‫ والـ‬RAM ‫ يتم بين الـ‬synchronization ‫ وهذا الـ‬no synchronous ‫ وتعني‬-s
‫ فستتم الكتابة‬file ‫ علي الـ‬attribute ‫ فاذا تم تطبيق هذا الـ‬، file ‫ ومنها الي الـ‬RAM ‫ تتم الكتابة اوال علي الـ‬، ‫بالكتابة علي ملف ما‬
RAM ‫ وتجاهل الـ‬file ‫مباشرة علي الـ‬
# chattr +s /test/script

Extended attributes
inode ‫ له‬object ‫ او اي‬files / directories ‫ للـ‬special type of metadata ‫ تضيف‬attributes ‫هي‬
extended ‫ يدعم الـ‬file system ‫ يجب اوال ان يكون الـ‬file system ‫ معين بداخل الـ‬file ‫ علي‬attribute ‫والضافة‬
ext2, ext3, ext4, XFS, JFS and reiserfs filesystemse ‫ مثل‬attributes
: ‫ هي‬extended attributes ‫وانواع الـ‬
user attributes -1
security attributes -2
trusted attributes -3
extended attributes -4

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 32


REDHAT SERVER HARDENING File system attributes

‫ التي تم عملها اثناء الـ‬partitions ‫ علي الـ‬enabled by default ‫ تكون‬extended attributes ‫ومن الجدير بالذكر ان الـ‬
‫ فيجب تفعيل الـ‬fdisk ‫ جديد باستخدام الـ‬partition ‫ في حين اننا اذا قمنا بعمل‬، )anaconda ‫ (عن طريق الـ‬installing OS
disabled by default ‫ عليه النه‬extended attributes
: ‫ بجب عمل عدة خطوات‬file /directory ‫ الي‬extended attribute ‫والضافة الـ‬
user_xattr option ‫ باضافة‬FS ‫ للـ‬mount ‫ نقوم بعمل‬-1
files/dir ‫ الي الـ‬extended attributes ‫ ثم نقوم باضافة الـ‬-2
getfattr, setfattr : ‫ هي‬extended attributes ‫ التي تستخدم مع الـ‬command ‫والـ‬
Package: attr (called user space application)
Files: /usr/bin/attr
/usr/bin/getfattr
/usr/bin/setfattr
: ‫ باستخدام االمر التالي‬extended attributes ‫ يدعم الـ‬file system ‫ نتأكد من ان الـ‬: ‫اوال‬
# tune2fs -l /dev/sdb2

enabled ‫ اصبحت‬ext_attr ‫ والـ‬mounted ‫ قد اصبح‬partition ‫وكما نرى ان الـ‬


extended ‫ وهذا يعني اننا لكي نقوم بتفعيل الـ‬none ‫ سنجده‬default mount option ‫ولكن اذا نظرنا جيدا للسطر الخاص بالـ‬
mount command ‫ في كل مرة الي الـ‬user_xattr option ‫ يجب ان نقوم باضافة‬partition ‫ علي هذا الـ‬attributes
‫ باحدى الطرق التالية‬automount ‫ولكي نقوم بالتغلب علي ذلك نقوم بعمل‬
fstab file ‫ في الـ‬option ‫ نضع الـ‬-1
‫ وذلك باستخدام االمر‬extended attributes ‫ الذي يقوم بتفعيل الـ‬tune2fs ‫ نستخدم االمر‬-2
# tune2fs -o user_xattr /dev/sdb2

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 33


REDHAT SERVER HARDENING File system attributes

user_xattr ‫ الي‬none ‫ قد تغيرت من‬Default mount options ‫حيث سنالحظ هنا ان الـ‬
# tune2fs -l /dev/sdb2

default option ‫ هو الـ‬extended attributes ‫ سيكون الـ‬Partition ‫ لهذا الـ‬mount ‫وبذلك فان اي‬
‫ نستخدم االمر‬Mount option ‫والزالة هذا الـ‬
# tune2fs -o ^user_xattr /dev/sdb2

‫ باستخدام االمر‬extended attributes ‫ نقوم باضافة الـ‬: ‫ثانيا‬


# setfattr -n user.comment -v "version 1" /test

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 34


REDHAT SERVER HARDENING File system attributes

‫ نستخدم االمر‬file ‫ الموجوده علي الـ‬extended attributes ‫والستعراض الـ‬


# getfattr /test/

‫ نستخدم االمر‬value ‫ بالـ‬attribute ‫ والظهار الـ‬، value ‫ قد ظهر ولكن بدون‬attribute ‫وكما نري ان اسم الـ‬
# getfattr -d /test/

‫او‬
# getfattr -n user.comment /test/

: ‫ نستخدم االمر‬attribute ‫واللغاء الـ‬


# setfattr -x user.comment /test

‫ بمزيد من التفصيل‬extended attributes ‫واالن لنتعرف علي انواع الـ‬


User attributes
‫ مثل‬file/directory ‫( عن الـ‬metadata) ‫ تسمح باضافة معلومات اخرى‬file/directory ‫ تطبق علي الـ‬attributes ‫هي‬
: ‫ مثال‬. comments, mime type, character set or encoding of a file
# setfattr -n user.creator -v "Ahmed Gamil" /test/

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 35


REDHAT SERVER HARDENING File system attributes

Security attributes
‫ بتطبيق‬modules ‫ بحيث تقوم هذه الـ‬selinux ‫ مثل الـ‬kernel ‫ موجوده في الـ‬security modules ‫ تستخدمها‬attributes ‫هي‬
‫ نستخدم االمر‬security attributes ‫ والستعراض الـ‬، files/folders ‫ علي الـ‬attributes ‫هذه الـ‬
# ls –Z /file
# setfattr -n security.linux -v "system_u:object_r:admin_home_t:s0" /test/

Trusted attributes
# setfattr -n trusted.md5sum -v f693f418636a0bd9659fbb1c4ce3f198 /test/script

Extended attributes

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 36


‫‪REDHAT SERVER HARDENING‬‬ ‫‪Special permissions‬‬

‫‪Special permissions‬‬
‫اآلن سنتذكر معا موضوع سابق وهو الـ ‪ ، permissions‬عند استعراض معلومات اي ‪ file‬باستخدام االمر ‪ ls‬سنجد التالي‬

‫‪File types‬‬

‫‪ :Character device‬هو الـ ‪ device‬الذي يتعامل مع الـ ‪ data‬بالـ ‪ character‬حيث ترسل الـ ‪ data‬وتستقبلها ‪character‬‬
‫‪ by character‬مثل الـ ‪CDROM, sound cards, printers‬‬
‫‪ :Block device‬هو الـ ‪ device‬الذي يتعامل مع ‪ block of data‬مثل الـ ‪hard disk, taps‬‬
‫‪ :Pipe device‬عند استخدام االمر ‪ pipe‬يقوم الـ ‪ system‬بتنفيذ االمر االول ووضع الناتج في ‪ file‬يطلق عليه ‪unnamed‬‬
‫‪ pipe‬ثم يأخذ منه الناتج وينفذ عليه االمر الثاني‪ .‬وهذا الـ ‪ file‬يسمي ‪ unnamed pipe‬الن الـ ‪ system‬هو الذي يقوم بانشائه‬
‫والتعامل معه في الـ ‪back ground‬‬
‫ويستطيع الـ ‪ user‬عمل ‪ pipe file‬لنفس الغرض ويعطي له اسم وبالتالي يسمي ‪ named pipe file‬ويتم ذلك باستخدام االمر‬
‫‪# mkfifo filename‬‬

‫ويمكن استخدام هذا الـ ‪ file‬كالتالي‬


‫& ‪# gzip -9 -c < my_pipe > out.gz‬‬
‫وهذا يعني ان اي يقوم بعمل ‪ zip‬الي شيئ يأتي علي الـ ‪ pipe file‬ويضعه في ‪out.gz‬‬
‫‪Access permissions‬‬
‫وانواع الـ ‪ access permissions‬هي ‪r, w,x‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪37‬‬
REDHAT SERVER HARDENING Special permissions

Permissions types
: permissions ‫هناك نوعين من الـ‬
read, write, execute ‫ مثل‬: normal permissions -1

SUID, SGID, STICKY BIT ‫ مثل‬: special permissions -2

file owner ‫ وكأنه الـ‬executable file ‫ للـ‬run ‫ بعمل‬User ‫ وهي تسمح للـ‬:SUID
file group owner ‫ في الـ‬member ‫ وكأنه‬executable file ‫ للـ‬run ‫ بعمل‬User ‫ وهي تسمح للـ‬:SGID
temp directory ‫ منه واشهر مثال له هو الـ‬file ‫ من حذف اي‬user ‫ لمنع اي‬directory ‫ تطبق علي الـ‬:Sticky bit

S=suid, T=stickybit  x permission ‫ اذا كانت بدون‬special permissions  capital letter ‫وتكون الـ‬
s=suid+x, t=stickybit+x  x permission ‫ اذا كان لها‬special permissions  small letter ‫وتكون الـ‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 38


REDHAT SERVER HARDENING Special permissions

: ‫ بطريقتين‬permissions ‫ويتم التعبير عن ال‬


permission read write execute SUID SGID Sticky bit
Symbolic r w x s/S s/S t/T
Numeric 4 2 1 4 2 1

SUID ‫والضافة‬
# chmod 4644 filename
SGID ‫والضافة‬
# chmod 2644 filename
StickyBit ‫والضافة‬
# chmod 1644 filename

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 39


REDHAT SERVER HARDENING Special permissions

Find files with permissions


‫ كالتالي‬find ‫ في امر‬exact permission ‫ معين فنكتب الـ‬permission ‫ له‬file ‫وللبحث عن‬
# find /bin/ -perm 4755

“-” ‫“ او‬/” ‫ اخرى نستخدم‬normal permissions ‫ معين وأي‬special permission ‫ تحتوي علي‬files ‫وللبحث عن اي‬
normal permissions ‫ بغض النظر عن الـ‬special permissions ‫“ للـ‬and” ‫“ لعمل‬-” ‫حيث تستخدم‬
normal permissions ‫ بغض النظر عن الـ‬special permissions ‫“ للـ‬or” ‫“ لعمل‬/” ‫و تستخدم‬
‫ ملفات‬4 ‫ اذا كان لدينا‬: ‫مثال‬
SUID ‫ يحتوي علي‬script
SGID ‫ يحتوي علي‬script1
StickyYBit ‫ يحتوي علي‬script2
SGID + SGID + StickyYBit ‫ يحتوي علي‬script3

‫" كالتالي‬-" ‫ الموجوده في الملف نستخدم‬permissions ‫ بغض النظر عن باقي الـ‬SUID+SGID ‫ يحتوي علي‬file ‫فللبحث عن اي‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 40


‫‪REDHAT SERVER HARDENING‬‬ ‫‪Monitor file changes‬‬

‫;\ ‪# find /test/ -perm -6000 -exec ls {} -l‬‬

‫وللبحث عن اي ‪ file‬يحتوي علي ‪ SUID‬او ‪ SGID‬او االثنين معا بغض النظر عن باقي الـ ‪ permissions‬الموجوده في الملف‬
‫نستخدم "‪ "/‬كالتالي‬
‫;\ ‪# find /test/ -perm /6000 -exec ls {} -l‬‬

‫‪Monitor file changes‬‬


‫من المفيد جدا متابعة التغيرات التي تحدث علي الـ ‪ system‬والتأكد من ان هذه التغيرات ليست نتيجة اي ‪ forign user‬او ‪forien‬‬
‫‪activity‬‬
‫ومن الـ ‪ tools‬الشهيرة التي تستخدم في عمل ‪ monitoring‬للـ ‪ system‬هم ‪ AIDE‬و ‪ ، SAMHAIN‬وهي تعتبر ‪host based‬‬
‫‪ tools‬وهناك ايضا ‪ network based tools‬مثل ‪ ، snort‬ولكننا سنتحدث االن عن ‪AIDE‬‬
‫‪AIDE‬‬
‫فكرة عمل ‪ AIDE‬تقوم علي الحصول علي ‪ screenshot‬من الـ ‪ file system‬التي تريد مراقبتها وتسجيلها في ‪ DB‬واي تغير‬
‫يحدث عليه يقوم ‪ AIDE‬بتسجيله‬

‫ولنتذكر كيفية استعراض معلومات الـ ‪package‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪41‬‬
REDHAT SERVER HARDENING AIDE

AIDE files
/etc/aide.conf ‫ في‬configuration file ‫ويوجد الـ‬
/var/log/aide ‫ في‬log file ‫وتوجد الـ‬
/var/lib/aide ‫ في‬DB ‫وتوجد الـ‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 42


REDHAT SERVER HARDENING AIDE

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 43


REDHAT SERVER HARDENING AIDE

2 DB file names ‫ ان هناك‬configuration file ‫نالحظ في الـ‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 44


‫‪REDHAT SERVER HARDENING‬‬ ‫‪AIDE‬‬

‫والفرق بين االثنين هو ان الـ ‪ aide.db.gz‬هي التي يستخدمها الـ ‪ AIDE‬ليضع فيها الـ ‪ ، first screenshot‬بينما الـ‬
‫‪ aide.db.new.gz‬هي ‪ DB‬اخري يقوم ‪ AIDE‬بعملها لوضع الـتغييرات فيها‬
‫‪AIDE UASGE‬‬
‫وللبدأ في عمل الـ ‪ monitoring‬نقوم باآلتي ‪:‬‬
‫‪ -1‬نقوم بعمل ‪ customization‬للـ ‪ config file‬ليقوم بعمل ‪ monitor‬للـ ‪ /etc‬فقط علي سبيل التجربة‬
‫‪ -2‬نقوم بعمل ‪new DB‬‬
‫‪ -3‬نقوم بتغيير اسم الـ ‪ BD‬الي االسم الموجود في الـ ‪config file‬‬
‫‪ -4‬ثم نقوم بالتعديل علي اي ملف في ‪/etc‬‬
‫‪ -5‬نتأكد من التعديل عن طريق ‪aide‬‬

‫‪ -1‬نقوم بعمل ‪ customization‬للـ ‪config file‬‬

‫‪create new DB manually -2‬‬


‫‪# aide --init‬‬

‫‪ -3‬الحظ انه قام بعمل ‪ create‬للـ ‪ BD‬باسم ”‪ “aide.db.new.gz‬وهو مختلف عن الـموجود في الـ ‪config file‬‬
‫”‪ “aide.db.gz‬لذلك نقوم بتغييره‬
‫‪# mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪45‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪AIDE‬‬

‫‪ -4‬نقوم باضافة ملف جديد الي ‪/etc‬‬

‫‪ -5‬نستخدم ‪ aide‬االن لمعرفة التغيرات التي تمت علي ‪ /etc‬باستخدام االمر‬


‫‪# aide -- check‬‬

‫مثال آخر‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪46‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪UMASK‬‬

‫وننتقل االن الي موضوع آخر‬


‫‪UMASK‬‬
‫تحدثنا سابقا عن الـ ‪ file permissions‬وذكرنا انها تتكون من ‪ ، r, w, x‬وعندما نقوم بعمل ‪ file‬جديد فانه يأخد الـ ‪default‬‬
‫‪. permissions‬‬
‫وسنجد ان اذا قام الـ ‪ root user‬بعمل ‪ file‬جديد فان الـ ‪ default permissions‬تكون ‪ 222‬او ‪rw r r‬‬

‫بينما اذا قام الـ ‪ normal user‬بعمل ‪ file‬جديد فان الـ ‪ default permissions‬تكون ‪ 222‬او ‪rw rw r‬‬

‫واذا قام الـ ‪ root user‬بعمل ‪ directory‬جديد فان الـ ‪ default permissions‬تكون ‪ 555‬او ‪rwx rx rx‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪47‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪UMASK‬‬

‫واذا قام الـ ‪ normal user‬بعمل ‪ directory‬جديد فان الـ ‪ default permissions‬تكون ‪ 775‬او ‪rwx rwx rx‬‬

‫اذا ما الذي يحدد هذه الـ ‪ default permissions‬؟‬


‫المسئول عن تحديد هذه الـ ‪ permissions‬هو الـ ‪ ، umask‬وكل ‪ Process‬لها ‪ mask‬خاص بها وتستطيع تغييرها بنفسها‬
‫باستخدام ‪ function‬معينه ‪ ،‬واي ‪ file‬ينتج من هذه الـ ‪ process‬يأخذ نفس الـ ‪Parent mask‬‬
‫ونقوم بتحديد الـ ‪ mask‬داخل الـ ‪ shell‬عن طريق االمر ”‪ “umask‬وعليه فان اي ‪ file‬نقوم بعمله من داخل الـ ‪ shell‬يأخذ هذا الـ‬
‫‪mask‬‬
‫ولمعرفة الـ ‪ Umask‬الموجود حاليا بشكل ‪ numeric‬نستخدم االمر‬
‫‪# umask‬‬ ‫‪‬‬ ‫‪show Numeric mode‬‬
‫‪# umask –S‬‬ ‫‪‬‬ ‫‪show Symbolic mode‬‬

‫ولكن كيف يتم حساب هذه القيمة ؟‬


‫نعلم جميعا ان اعلي ‪ permissions‬يمكن ان يحصل عليها ‪ file/dir‬هي ‪ 555‬او ““‪ ، ””rwx rwx rwx‬وللـ ‪ security‬نقوم بالغاء‬
‫الـ ”‪ “x permission‬من علي الـ ‪ ، files‬ولذلك يمكن اعتبار ان اعلي ‪ permissions‬نستطيع ان نعطيها للـ ‪ file‬هي ‪ 666‬او‬
‫“‪ ”rw rw rw‬وهذا للـ ‪ files‬فقط‬
‫وبالنسبة للـ ‪ directory‬فان الـ ”‪ “x permission‬تعني امكانية عمل ”‪ “cd or ls -l‬وهذا امر مسموح به لكن ال يمكن اعطاء ‪“w‬‬
‫”‪ permissions‬للـ ‪ others‬الن هذا يجعله ‪ Unsecure‬ويسمح الي شخص بالتعديل علي محتويات الـ ‪directory‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪48‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪ACL‬‬

‫والـ ‪ file‬الذي يحتوي على ‪ 666‬او “‪ ”rw rw rw‬يسمي ‪ world writable file‬وكذلك الـ ‪ directory‬الذي يحتوي علي ‪555‬‬
‫يسمى ‪ world writable directory‬اي ان اي شخص موجود علي الـ ‪ system‬يستطيع التعديل عليه وبذلك فهو يعتبر‬
‫‪unsecure‬‬
‫لذلك فان افضل ‪ permissions‬يمكن ان نعطيها للـ ‪ files/dirs.‬هي الموجوده بالجدول التالي‬
‫‪Permissions‬‬ ‫‪umask‬‬
‫‪Root user files‬‬ ‫‪644 / rw r r‬‬ ‫‪666 – 644 = 022‬‬
‫‪Normal user files‬‬ ‫‪664 / rw rw r‬‬ ‫‪666 – 664 = 002‬‬
‫‪Root user directory‬‬ ‫‪755 / rwx rx rx‬‬ ‫‪777 – 755 = 022‬‬
‫‪Normal user directory‬‬ ‫‪775 / rwx rwx rx‬‬ ‫‪777 – 775 = 002‬‬

‫وعليه فاننا نستخدم قيمة الـ ‪ Umask‬حتي يحصل اي ‪ new file/ new dir‬علي هذه الـ ‪ permissions‬تلقائيا‬
‫ولتغيير الـ ‪ umask‬في الـ ‪)temp( running shell‬‬
‫”‪# umask “value‬‬
‫ولكن هذه الـ ‪ value‬مؤقته وتعود الي القيمة السابقة اذا خرجنا من هذه الـ ‪ . shell‬وحتي تكون ‪ permanent‬يجب ان نضيفة في‬
‫الـ ‪ bashrc‬والـ ‪profile‬‬
‫ولنتذكر معا ان هناك ملفين‬
‫‪  /etc/bashrc‬التعديل علي هذا الملف يؤثر علي جميع ال ‪ users‬عدا الـ ‪root‬‬
‫‪  /etc/profile‬التعديل علي هذا الملف يؤثر علي الـ ‪ root user‬فقط‬

‫ولكل ‪ user‬ملفين في الـ ‪ home dir.‬الخاص به‬


‫‪  .bashrc‬التعديل علي هذا الملف يؤثر علي الـ ‪ user‬فقط ويتحاهل الـ ‪ value‬الموجودة في الـ ‪/etc/bashrc‬‬
‫‪  .bash_profile‬اضافة الـ ‪ umask‬في هذا الملف ليس له تأثير‬

‫‪ACL‬‬
‫هي ‪ utility‬تسمح باعطاء ‪ permission‬لـ ‪ User‬بعينه علي الـ ‪ file‬الن في الحالة العادية يجب ان يتم اضافة هذا الـ ‪ user‬في‬
‫‪ group‬لها ‪ permission‬علي هذا الـ ‪file‬‬
‫الستخدام هذه الـ ‪ feature‬يجب عمل ‪ mount‬للـ ‪ file system‬باستخدام ‪ACL option‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪49‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪ACL‬‬

‫وكما نرى ان الـ ‪ ، FS mounted with noacl‬لذلك يجب عمل التالي‬

‫ثم نقوم بعمل ‪ remount‬مرة اخرى‬

‫اختفاء الـ ‪ noacl‬يعني ان الـ ‪ FS‬اصبح يدعم الـ ‪ ، acl‬وللتأكد من ذلك‬

‫ثم نقوم باضافة هذا الـ ‪ Option‬في الـ ‪fstab‬‬


‫نقوم االن بالتعامل مع الـ ‪ . ACL‬والضافة ‪ ACL‬علي ‪file‬‬
‫‪# setfacl -m u:user_name:permission file_name‬‬
‫وللتأكد من وجود الـ ‪ ACL‬علي الـ ‪file‬‬
‫‪# getfacl file_name‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪50‬‬
REDHAT SERVER HARDENING AAA

‫ نستخدم االمر‬file ‫ من علي‬acl ‫والزالة الـ‬


# setfacl -x u:user_name file_name

ACL ‫ يطبق عليه الـ‬New file ‫ كامل بمحتوياته بحيث ان اي‬directory ‫ علي‬user ‫ لـ‬ACL ‫ولعمل‬
# setfacl -Rm d:u:user_name:rw directory_name

AAA

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 51


‫‪REDHAT SERVER HARDENING‬‬ ‫‪PAM‬‬

‫البعض منا سمع عن كلمة الـ ‪ . AAA‬فما هو الـ ‪ AAA‬؟‬


‫وهو ‪ security architecture‬يستخدم لمعرفة من الـ ‪ Users‬المسموح لهم باستخدام الـ ‪ services‬وبأي طريقة‪ ،‬وهو‬
‫‪ combination‬بين ‪ 3‬مصطلحات ‪ Authentication :‬و ‪ Authorization‬و ‪Accounting‬‬
‫ومن اشهر الـ ‪ protocols‬التي تستخدم في الـ ‪ AAA‬هو الـ ‪ radius‬و ‪Diameter‬‬
‫‪Authentication -1‬‬
‫هي عملية التأكد من وجود هذا الـ ‪ User‬في الـ ‪ system‬والدخول عليه بالـ ‪ credentials‬الصحيحة‬
‫‪Authorization -2‬‬
‫هي عملية التأكد من ان الـ ‪ user‬يمتلك صالحيات الدخول الي مكان ما او استخدام ‪ service‬معينه‬
‫‪Accounting -3‬‬
‫هي عملية ‪ tracking‬للـ ‪ user‬ومعرفة من فعل ماذا‬
‫واشهر مثال علي الـ ‪ AAA‬هو الـ ‪ . ADSL‬حيث يقوم الـ ‪ User‬بكتابة الـ ‪ account user/pass‬الخاصين به في الـ ‪.. router‬‬
‫فيقوم الـ ‪ AAA‬بالقيام بالتأكد منهم )‪(Authentication‬‬

‫ثم يبحث عن الـ ‪ account profile‬الذي يوضح طبيعة اشتراك الـ ‪ User‬هل هو ‪ static IP‬ام ‪ dynamic‬وما هي الخدمات‬
‫المسموح للـ ‪ User‬استخدامها )‪(Authorization‬‬

‫ثم يقوم بمتابعة استهالكه من االنترنت )‪(accounting‬‬


‫‪http://en.wikipedia.org/wiki/AAA_protocol‬‬
‫‪PAM‬‬
‫نعرف جميعا ان هناك ما يعرف بالـ ‪ ، password policy‬وهي الـ ‪ policy‬التي تطبق الختيار الـ ‪ password‬مثل وجود ارقام و‬
‫‪ capital letters‬و ‪special characters‬‬
‫كما يمكن عمل المزيد من الـ ‪ restrictions‬علي الـ ‪ system‬بحيث نمنع الدخول عليه خارج اوقات العمل الرسمية او نسمح‬
‫بالدخول فقط من ‪ server‬معين او لـ ‪ user‬معين‬
‫المسئول عن كل هذه الـ ‪ Policies‬هو الـ )‪PAM (pluggable authentication module‬‬
‫? ‪What is PAM‬‬
‫انه ليس ‪ authentication system‬ولكنه عبارة عن مجموعة من ‪ authentication modules‬التي تطبق علي الـ‬
‫‪ Users/services‬عن طريق الـ ‪rules‬‬
‫مع العلم بان الـ ‪ authentication systems‬هي الـ ‪ systems‬التي تحتوي علي الـ ‪ Users‬ومعلوماتهم مثل ‪:‬‬
‫‪/etc/passwd, /etc/shadow, /etc/gshadow, /etc/group -1‬‬
‫‪NIS -2‬‬
‫‪LDAP -3‬‬
‫‪Kerberos -4‬‬
‫‪IPA -5‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪52‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪PAM‬‬

‫مثال علي ذلك ‪:‬‬


‫اذا قمت بعمل ‪ New installation‬للـ ‪ fedora‬فلن تستطيع الدخول علي الـ ‪ GUI‬باستخدام الـ ‪ ،root user‬وتستطيع فقط باستخدام‬

‫الـ ‪ . Normal user‬لماذا ؟‬


‫الن هناك ‪ PAM rule‬تمنع الـ ‪ root user‬من الدخول علي الـ ‪ system‬عن طريق الـ ‪GUI‬‬

‫? ‪How PAM works‬‬


‫يعتمد الـ ‪ PAM‬في عمله علي الـ ‪ modules‬والـ ‪rules‬‬
‫توجد الـ ‪ rules‬والـ ‪ configuration file‬داخل الـ ‪ PAM files‬في المسار ”‪“/etc/pam.d‬‬

‫هذه الـ ‪ files‬عبارة عن الـ ‪ rules‬التي تطبق علي الـ ‪ users‬وهذه الـ ‪ files‬تنقسم الي نوعين ‪:‬‬
‫‪common files -1‬‬
‫وهي الـ ‪ rules‬التي تطبق علي جميع الـ ‪ users‬مثل ‪system-auth, password-auth, passwd‬‬

‫‪service specific files -2‬‬


‫هي الـ ‪ rules‬التي تستخدمها ‪ service‬معينه مثل ‪ gdm, sudo, sshd‬وأي ‪ service‬تضاف الي الـ ‪ system‬ولها‬
‫‪ special restrictions‬فانها تضيف الـ ‪ rules‬الخاصة بها في الـ ‪PAM‬‬
‫فالـ ‪ User‬عندما يدخل علي الـ ‪ system‬عن طريق الـ ‪ ssh‬فانه يطبق عليه الـ ‪ ، sshd rules‬وعندما يقوم باستخدام‬
‫‪ sudo command‬فانه يطبق عليه الـ ‪sudo rules‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪53‬‬
REDHAT SERVER HARDENING PAM

“succeed or failed” ‫ ولها قيمتين‬rule ‫وكل سطر يمثل‬


shared library ‫ الذي يستعرض الـ‬command : ldd ‫ نستخدم الـ‬، ‫ ام ال‬PAM ‫ تستخدم الـ‬service ‫ولمعرفة ما اذا كانت الـ‬
‫ فهي تدعمها‬service libraries ‫ موجوده من ضمن الـ‬PAM library ‫ فاذا وجدنا الـ‬، service ‫لكل‬
ldd /usr/sbin/sshd | grep -i pam

: ‫ كالتالي‬rules ‫ونجد ان صيغة كتابة الـ‬

: 4 columns ‫وهي تتكون من‬


module interface/ PAM facility/Type -1
control /policy -2
module name/path -3
module-arguments -4

Module interface/ PAM facility/Type


: 4 module interfaces ‫ او‬4 facilities ‫ علي‬PAM ‫ويحتوي الـ‬
auth (authentication) -1
user ID, group membership and resource limits ‫ مثل‬account credentials ‫تهتم بالـ‬ -

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 54


‫‪REDHAT SERVER HARDENING‬‬ ‫‪PAM‬‬

‫ثم تقوم بعمل ‪ authentication‬عن طريق مقارنة الـ ‪ login credentials‬مع الـ ‪user credentials‬‬ ‫‪-‬‬
‫الموجوده في الـ ‪system‬‬
‫‪Account (Account management) -2‬‬
‫تهتم بالـ ‪ non-authentication-related issues‬مثل الـ ‪ account expiration‬والـ ‪access‬‬ ‫‪-‬‬
‫‪ restrictions‬في يوم معين او حسب الـ ‪server load‬‬
‫‪session (Session management) -3‬‬
‫تهتم بالـ ‪ session tasks‬مثل ‪ session set-up‬و ‪ start/stop an SSH agent‬و ‪gdm (gnome‬‬ ‫‪-‬‬
‫‪display manager) access‬‬
‫تهتم بالـ ‪ services‬المسموح للـ ‪ User‬باستخدامها مثل الـ ‪ selinux‬والـ ‪ actions‬التي يستطيع الـ ‪ User‬فعلها‬ ‫‪-‬‬
‫داخل الـ ‪session‬‬
‫الـ ‪login/logout‬‬ ‫‪-‬‬
‫‪ Mounting‬للـ ‪user home directory‬‬ ‫‪-‬‬
‫‪Getting user mailbox‬‬ ‫‪-‬‬
‫‪password (Password management) -4‬‬
‫تهتم بالـ ‪ authentication changes‬مثل تغيير الـ ‪ password‬والـ ‪ Password policy‬والـ ‪password‬‬ ‫‪-‬‬
‫‪ageing‬‬

‫‪Control /policy‬‬
‫وهي تحدد الـ ‪ action‬الذي ستقوم به الـ ‪ PAM‬بناء علي النتيجة القادمة من الـ ‪ Module‬هل هي ‪ failed‬ام ‪،succeeded‬‬
‫وانواعها‪:‬‬
‫‪required -1‬‬
‫تعني ان نجاح هذه الـ ‪ rule‬هو امر ضروري ولكنه غير كافي لنجاح الـ ‪authentication‬‬ ‫‪-‬‬
‫هذه الـ ‪ rule‬اجبارية ويجب ان تكون نتيجتها ”‪“Success‬‬ ‫‪-‬‬
‫اذا كانت نتيجة الـ ‪ rule‬هي ‪ failure‬فسوف يقوم الـ ‪ PAM‬بتنفيذ باقي الـ ‪ rules‬وتصبح نتيجة الـ‬ ‫‪-‬‬
‫‪ authentication‬النهائية ‪failure‬‬
‫اما اذا كانت نتيجة الـ ‪ rule‬هي ‪ success‬فسوف يقوم الـ ‪ PAM‬بتنفيذ باقي الـ ‪ ، rules‬فاذا لم يكن هناك اي‬ ‫‪-‬‬
‫‪ failure‬فسوف تكون نتيجة الـ ‪ authentication‬النهائية هي ‪success‬‬
‫‪requisite -2‬‬
‫تعني ان نجاح هذه الـ ‪ rule‬هو امر ضروري وكافي لنجاح الـ ‪authentication‬‬ ‫‪-‬‬
‫هذه الـ ‪ rule‬اجبارية ويجب ان تكون نتيجتها ”‪“Success‬‬ ‫‪-‬‬
‫اذا كانت نتيجة الـ ‪ rule‬هي ‪ failure‬فلن يقوم بتنفيذ باقي الـ ‪ rules‬وتصبح نتيجة الـ ‪ authentication‬النهائية‬ ‫‪-‬‬
‫‪failure‬‬
‫اذا كانت نتيجة الـ ‪ rule‬هي ‪ success‬فسوف يقوم الـ ‪ PAM‬بتنفيذ باقي الـ ‪rules‬‬ ‫‪-‬‬
‫‪sufficient -3‬‬
‫تعني ان نجاح هذه الـ ‪ rule‬هو امر غيرضروري ولكنه يكون كافي في حالة نجاحه‬ ‫‪-‬‬
‫اذا كانت نتيجة الـ ‪ rule‬هي ‪ success‬فلن يقوم بتنفيذ باقي الـ ‪ rules‬وتصبح نتيجة الـ ‪ authentication‬النهائية‬ ‫‪-‬‬
‫‪Success‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪55‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪PAM‬‬

‫اما اذا كانت نتيجة الـ ‪ rule‬هي ‪ failure‬فسوف يقوم الـ ‪ PAM‬بتنفيذ باقي الـ ‪rules‬‬ ‫‪-‬‬
‫‪optional -4‬‬
‫تعني ان نجاح هذه الـ ‪ rule‬هو امر غيرضروري وغير كافي‬ ‫‪-‬‬
‫نتيجة الـ ‪ rule‬سوف تؤثر علي نتيجة الـ ‪ authentication‬النهائية فقط‬ ‫‪-‬‬
‫‪include -5‬‬
‫هذه الـ ‪ rule‬تطلب استخدام بعض الـ ‪ rules‬الموجودة في ‪ files‬اخري ‪ ،‬وفي الغالب تستخدم مع الـ ‪“common‬‬ ‫‪-‬‬
‫”‪files‬‬
‫‪substack -6‬‬
‫تشبه ‪ include‬ولكنها ستؤثر علي النتيجة النهائية فقط‬ ‫‪-‬‬
‫غير كافي‬ ‫كافي‬ ‫غير ضروري‬ ‫ضروري‬ ‫الشرط‬
‫‪‬‬ ‫‪‬‬ ‫‪required‬‬
‫‪‬‬ ‫‪‬‬ ‫‪requisite‬‬
‫‪ ‬في حالة ‪success‬‬ ‫‪‬‬ ‫‪sufficient‬‬
‫‪‬‬ ‫‪‬‬ ‫‪optional‬‬
‫‪include‬‬
‫‪substack‬‬

‫‪Module Name/Path‬‬

‫اما الـ ‪ modules‬فهي ‪ functions‬تقوم بعمل ‪ check‬وكل ‪ module‬تقوم بعمل ‪ check‬لشيء معين‪ ،‬وبناء عليها تقوم الـ ‪rules‬‬
‫بعمل الـ ‪ actions‬مثل السماح للـ ‪ User‬بعمل ‪ Login‬او الـ ‪ services‬التي يستخدمها الـ ‪user‬‬
‫وتوجد الـ ‪ modules‬في المسار ”‪ “/lib64/security/‬في حالة ‪x64 arch‬‬
‫و في المسار ”‪ “/lib/security/‬في حالة ‪i368 arch‬‬

‫ولمعرفة وظيفة اي ‪ module‬نستخدم الـ ‪ man‬بدون اضافة ”‪ “so‬في نهاية الـ ‪ Module‬كالتالي‬
‫اذا كان اسم الـ ‪ Module‬هو ‪ pam_issue.so‬فنستخدم االمر‬
‫‪# man pam_issue‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪56‬‬
REDHAT SERVER HARDENING PAM

module ‫ مفيدة جدا عن كيفية استخدام الـ‬examples ‫ سنجد‬MAN page ‫وفي الـ‬

system ‫ الي الـ‬root ‫ غير الـ‬User ‫ التي تمنع دخول اي‬pam_nologin.so ‫ المستخدمه هي‬Modules ‫ومن اشهر الـ‬
GUI, SSH,. ‫ باستخدام العديد من الطرق سواء‬login ‫ من عمل‬User ‫ يستخدم لمنع الـ‬Module ‫وفي الصورة التالية نجد ان هذا الـ‬

/etc/nologin ‫ في حالة وجود ملف‬module ‫ويعمل هذا الـ‬


‫ المسخدمة هي‬Modules ‫ومن اشهر الـ‬
Module Usage
pam_succeed_if.so to test account characteristics
pam_tally2.so for failed login attempt
pam_cracklib.so to check the password complexity
pam_unix.so for traditional password authentication
pam_mkhomedir.so to create users home directory

Module Arguments

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 57


REDHAT SERVER HARDENING PAM

min length =3, ‫ قد تكون‬password policy ‫ مثل الـ‬check ‫ اثناء عمل الـ‬module ‫ التي يستخدمها الـ‬options ‫هي الـ‬
max length=9, capital letters = 2, small letters = 1

: ‫ شيوعا والتي قد نستخدمها في امثلتنا التالية هي كالتالي‬arguments ‫واكثر الـ‬


pam_succeed_if.so to test account characteristics
uid allowed uid

pam_tally2.so for failed login attempt


deny=n no of failed login for normal user, then lock the user
even_deny_root apply deny option to root user also
unlock_time=n sec unlook account after n sec

pam_cracklib.so to check the password complexity


retry=n no of password trials
minlen=n min no. of password
try_first_pass ask for current passwork before changing it
difok=n no of similar characters in the new password relative to the old one

pam_unix.so for traditional password authentication


remember=n no of password history that the pam will save to prevent user from using again
shadow encrypt password stored in opasswd file as shadow file
md5 type of encryption

pam_mkhomedir.so to create users home directory


skel=/etc/skel path to skel directory "will be explained later"
umask=0022 umask of new user files

pam_tally2.so
‫ حتي نستطيع عمل‬failed login attemps ‫ وهو المسئول عن عدد الـ‬pam_tally2 ‫ يسمى‬module ‫ علي‬PAM ‫يحتوي الـ‬
‫ مرات مثال‬3 ‫ اكثر من‬failed login ‫ يقوم بعمل‬user ‫ الي‬lock
binary file ‫ وهو‬، “/var/log/tallylog” ‫ في المسار‬log file ‫ ووضعها في‬login attemps ‫ بتسجيل عدد الـ‬PAM ‫ويقوم الـ‬
“pam_tally2” ‫ يسمى‬command ‫ ولكن نستطيع قراءته عن طريق‬، less ‫ او‬tail ‫ال نستطيع قراءته بالـ‬
# pam_tally2

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 58


‫‪REDHAT SERVER HARDENING‬‬ ‫‪PAM‬‬

‫والستخدام الـ ‪ pam_tally2‬نضع الـ ‪ rule‬في الملفين ”‪ “/etc/pam.d/password-auth‬و ‪“/etc/pam.d/system-‬‬


‫”‪auth‬‬

‫وفي هذه الحالة اذا قام الـ ‪ User‬بعمل ‪ failed login‬اكثر من ‪ 3‬مرات فسيتم عمل ‪ lock‬له ‪ ،‬ويجب االنتظار لمدة ‪ 62‬ثانية حتي‬
‫يتم عمل ‪ unlock‬او ويمكن عمل ‪ manual unlock‬عن طريق استخدام االمر‬
‫‪# pam_tally2 -- reset --user username‬‬

‫وبذلك يستطيع الـ ‪ User‬محاولة الدخول مرة اخرى علي الـ ‪system‬‬
‫اذا قام الـ ‪ server‬بعمل ‪ reboot‬ولم تنتهي مدة الـ ‪ unlock‬فان الـ ‪ User‬سيظل ‪ unlocked‬حتي تنتهي المدة علي الرغم من‬
‫عمل ‪ restart‬الن الـ ‪ latest failure time‬يكون مخفوظ في الـ ‪ tallylog file‬وليس في الـ ‪Memory‬‬

‫‪Examples‬‬
‫لنأخد االن امثلة علي الـ ‪PAM‬‬
‫‪Example 1: Control Service Access‬‬
‫لمنع الـ ‪ user‬معين من الدخول علي الـ ‪ system‬باستخدام ‪ ssh‬مثال او اي ‪ service‬اخري كالـ ‪ ftp‬نتبع االتي ‪:‬‬
‫توضح الصورة التالية ان الـ ”‪ normal user “ahmed‬يستطيع الدخول علي الـ ‪ system‬عن طريق الـ ‪ssh‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪59‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪PAM‬‬

‫ولمنع الـ ‪ User‬من الدخول علي الـ ‪ system‬عن طريق الـ ‪ ssh‬نستخدم ‪ ، pam_listfile module‬وسنجد في الـ ‪man page‬‬
‫ان وظيفتها هي ‪ allow/deny‬للـ ‪ services‬باالعتماد علي ‪additional file‬‬

‫وكذلك سنجد ايضا بعض الـ ‪ examples‬التي تشرح كيفية استخدامها‬

‫اذا لمنع الـ ‪ user‬من استخدام الـ ‪ ssh‬نقوم باضافة هذه الـ ‪ rule‬في الـ ‪ ssh PAM file‬ونعدل عليها لتتناسب مع الـ ‪ssh‬‬
‫‪ service‬كالتالي‬

‫ثم‬

‫ثم نضع اسم الـ ‪ User‬في ملف ‪/etc/pam_sshusers‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪60‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪PAM‬‬

‫نقوم االن بمحاولة عمل ‪ Login‬مرة اخرى ‪ ،‬سنجدها تفشل‬

‫وسنجد في الـ ‪ log file‬انه تم منع الـ ‪ user : ahmed‬من عمل ‪ login‬علي الـ ‪system‬‬

‫ملحوظة ‪ :‬يجب ان نعدل الـ ‪ permissions‬الموجوده علي الـ ‪ /etc/pam_sshusers‬وذلك للتغلب علي رسالة ‪world‬‬
‫‪writable file‬‬

‫وسيصبح شكل الـ ‪ log file‬كالتالي‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪61‬‬
REDHAT SERVER HARDENING PAM

Example 2 : Password Complexity


capital, small, no., ‫ علي‬Password ‫ بحيث تحتوي الـ‬password complexity ‫ سنتحكم في الـ‬example ‫في هذا الـ‬
Special characters
pam_cracklib ‫ هي‬password policy ‫ المسئول عن الـ‬module ‫والـ‬

‫ وعدد الـ‬capital ‫ وعدد الحروف الـ‬password ‫ عن طريق تحديد طول الـ‬password complexity ‫حيث نستطيع التحكم في الـ‬
special characters ‫ وعدد االرقام وعدد الـ‬small
minlen Min length min passwork length
lcredit lower-case a-z
ucredit upper-case A-Z
dcredit Digit/numeric 0-9
ocredit Other/non-alphanumeric @,_,……………..

‫ الحالية‬Password policy ‫ولمعرفة الـ‬

‫ او نعدل علي الموجودة‬rule ‫ ونضيف هذه الـ‬system-auth ‫ و الـ‬password-auth ‫نقوم االن بالذهاب الي‬
password requisite pam_cracklib.so try_first_pass retry=4 minlen=8

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 62


‫‪REDHAT SERVER HARDENING‬‬ ‫‪PAM‬‬

‫ثم نقوم االن بتجربة اضافة ‪ password‬من ‪ 5‬حروف فقط سنجد هذا الناتج‬

‫والنتيجة النهائية ان الـ ‪ User‬لم يستطيع بتغيير الـ ‪ Password‬بنفسه ‪ .‬ولكن يستطيع الـ ‪ root‬كسر هذه الـ ‪rules‬‬

‫‪Example 3: Login Limits‬‬


‫لوضع ‪ limits‬للـ ‪ User‬حتي ال يستطيع عمل ‪ Login‬علي الـ ‪ system‬من مكانين مختلفين في نفس الوقت او لتحديد مواعيد دخوله‬
‫علي الـ ‪ system‬وغيرها من الـ ‪ limits‬علي الـ ‪login‬‬
‫نستخدم في ذلك ‪pam_limits.so‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪63‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪PAM‬‬

‫ويستخدم هذه الـ ‪ module‬في العديد من الـ ‪ rules‬التي لها عالقة بالـ ‪ login‬والـ ‪authentication‬‬

‫ولكن كما نرى في الصورة فال يوجد اي ‪ options‬او ‪ arguments‬تكتب داخل الـ ‪ rule‬لعمل اي ‪ limitiation‬للـ ‪ ، User‬فاذا‬
‫دققنا النظر جيدا في الـ ‪ MAN page‬سنجد ان الـ ‪ module‬يستخدم ‪ /etc/security/limits.conf‬في عمل الـ ‪limitation‬‬

‫لذلك ففي هذه المرة لن نتعامل مع الـ ‪ PAM files‬ولكن سنتعامل ‪limits.conf‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪64‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪PAM‬‬

‫نضيف الـ ‪ rule‬المطلوبة في اخر الملف كما هو موجود بالجزء المظلل باللون االصفر ‪ ،‬حيث نطبق هذه الـ ‪ rule‬علي الـ ‪User :‬‬
‫‪ ، ahmed‬والحظ ان اسم الـ ‪ User‬ال يسبقه “@” الن “@” تعني تطبيق الـ ‪ rule‬علي الـ ‪group‬‬
‫ثم اخترنا نوع الـ ‪ item‬ليكون ”‪ “maxlogins‬وهذا الـ ‪ Item‬هو واحد من ‪ items‬عديدة موجوده في الـ ‪configuration file‬‬
‫ونختار عدد مرات الـ ‪ parallel logins‬المسموح بها للـ ‪ User‬وليكن "‪"2‬‬
‫نحاول الدخول االن اكثر من مرتين وسنجد ان في المرة الثالثة قام برفض الدخول‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪65‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪PAM‬‬

‫‪Example 4: Prevent Using Old Passwords‬‬


‫يستطيع الـ ‪ PAM‬منع الـ ‪ User‬من استخدام الـ ‪ passwords‬القديمة ‪ ،‬عن طريق تخزين الـ ‪ user passwords‬في ملف ثم‬
‫مقارنة هذه الـ ‪ Passwords‬في كل مرة يقوم الـ ‪ user‬بتغيير الـ ‪ password‬الخاصة به‪،‬‬
‫فمثال اذا طلبت من الـ ‪ Pam‬منع الـ ‪ User‬من استخدام اخر ‪ 2 passwords‬قام باستخدامهم قبل ذلك فسوف يقوم الـ ‪ pam‬بتخزين‬
‫‪ 2 passwords‬لهذا الـ ‪ ، User‬فاذا قام الـ ‪ user‬بتغيير الـ ‪ password‬واستخدم احد االثنين السابقين فسوف يرفض الـ ‪Pam‬‬
‫هذه الـ ‪ Password‬ويخرج له رسالة‬

‫ويتم ذلك باستخدام ‪: 2 modules‬‬


‫‪pam_unix.so -1‬‬
‫وهو المسئول عن تخزين الـ ‪ user passwords‬في ملف‬
‫‪/etc/security/opasswd‬‬
‫‪pam_cracklib.so -2‬‬
‫وهو الذي يقوم بمنع الـ ‪ User‬من استخدام الـ ‪ history passwords‬اعتمادا علي الـ ‪file :opasswd‬‬

‫وان لم يكن ملف الـ ‪ opasswd‬موجود فنستطيع عمله بحيث تكون الـ ‪ Permissions‬والـ ‪ Owner‬كما يلي‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪66‬‬
REDHAT SERVER HARDENING PAM

: ‫عمليا يتم ذلك عن طريق التعديل علي ملف‬


/etc/pam.d/system-auth
2 rules ‫واضافة الـ‬
password required pam_cracklib.so retry=3 minlen=3 difok=4
password sufficient pam_unix.so use_authtok md5 shadow remember=2
opasswd ‫ في ملف الـ‬passwords ‫ االولي هي المسئولة عن تخزين الـ‬rule ‫والـ‬
old passwords ‫ ال تتطابق مع الـ‬new user password ‫ الثانية هي المسئولة عن التأكد من ان الـ‬rule ‫والـ‬

‫ الول مرة‬password ‫ بعمل الـ‬user ‫وعندما يقوم الـ‬

‫ بهذا الـشكل‬opasswd ‫فيتم تخزينها في ملف الـ‬

‫ للمرة الثانية‬Password ‫ بتغيير الـ‬user ‫وعندما يقوم الـ‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 67


‫‪REDHAT SERVER HARDENING‬‬ ‫‪PAM‬‬

‫فيتم تخزينها بهذا الشكل‬

‫وعندما يقوم الـ ‪ user‬بتغيير الـ ‪ Password‬للمرة الثالثة واستخدام الـ ‪ password‬االولي التي تم استخدامها من قبل تظهر الرسالة‬
‫التالية‬

‫‪Useful links:‬‬
‫‪http://people.redhat.com/smcbrien/summit_2014/ToT-PAM-lab-handout.pdf‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪68‬‬
REDHAT SERVER HARDENING Password Aging

http://people.redhat.com/smcbrien/summit_2014/mcbrien_t_1040_Working_with_PAM.pdf

Password Aging

‫ وسوف نذكر به مرة اخرى‬RHCSA track ‫تحدثنا عن هذا الموضوع في الـ‬


‫ مثل الـ‬User ‫ للـ‬Password policy ‫ بتحديد الـ‬linux admin ‫ ويقوم الـ‬، password ‫ له‬system ‫ علي الـ‬user ‫كل‬
expiration date, inactive date, etc…..
‫ نستخدم االمر‬password aging ‫والستعراض الـ‬
# chage -l ali

‫ نستخدم االمر‬account expiration date ‫ولتغيير الـ‬


# chage -E YYYY-MM-DD user_name

‫ نستخدم االمر‬password ‫ علي تغيير الـ‬User ‫والجبار الـ‬


# chage -d 0 user_name

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 69


‫‪REDHAT SERVER HARDENING‬‬ ‫‪Password Aging‬‬

‫وعند محاولة الدخول علي الـ ‪ user‬مرة اخرى‬

‫ولكن هذه الـ ‪ policy‬تم وضعها لـ ‪ user‬واحد فقط ولم تطبق علي جميع الـ ‪،Users‬‬

‫اذا فكيف نقوم بتطبيقها علي جميع الـ ‪ Users‬؟‬


‫يتم ذلك باستخدام الـ ‪ ، /etc/login.defs‬وهذا الملف هو المسئول عن الـ ‪ User properties‬عند اضافته باستخدام ‪useradd‬‬
‫‪command‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪70‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪Password Aging‬‬

‫ملحوظة ‪ :‬من المعروف ان الـ ‪ user ID‬الي ‪ normal user‬تبدأ من ‪ 522‬الي ‪ 62222‬ولكن اذا قمنا بالتعديل علي قيمة‬
‫الـ ‪ UID_MIN‬لتكون مثال ‪ 2222‬فستبدأ الـ ‪ user ID‬الي ‪ new user‬من ‪2222‬‬
‫نقوم االن باضافة ‪ user‬قبل تعديل هذا الملف ‪ /etc/login.defs‬وبعده ونالحظ الفرق‬
‫الصورة التالية توضح الـ ‪ aging‬قبل تعديل الملف ‪/etc/login.defs‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪71‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪Password Aging‬‬

‫نقوم االن بتعديل الملف ‪ /etc/login.defs‬ليكون كالتالي‬

‫ونقوم االن باضافة ‪ User‬جديد‬

‫وللتعرف علي حالة الـ ‪ Password‬نستخدم االمر‬


‫‪# passwd –S user_name‬‬

‫ولعمل ‪ lock‬للـ ‪ user‬نستخدم االمر‬


‫‪# passwd -l user_name‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪72‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪Password Aging‬‬

‫ولعمل ‪ unlock‬للـ ‪ User‬نستخدم االمر‬


‫‪# passwd -u user_name‬‬

‫ولكن ماذا يحدث للـ ‪ User‬عندما نقوم بعمل ‪ Lock‬له ؟‬


‫نعلم جميعا ان الـ ‪ Password‬يتم تخزينها ‪ encrypted‬في الملف ‪ ، /etc/shadow‬وعند عمل ‪ lock‬للـ ‪ user‬فيتم اضافة ”!“‬
‫فبل الـ ‪ . hash‬اي انه يتم تغيير الـ ‪ hash‬فقط باضافة ”!“ وبالتالي فان الـ ‪ account‬يعتبر ‪. locked‬‬
‫فاذا نظرنا الي الـ ‪ password‬في الحالة العادية في ملف ‪ /etc/shadow‬فسنجد ان الـ ‪ column‬الثاني بهذا الشكل‬

‫وعند عمل ‪ unlock‬للـ ‪ User‬فيصبح شكل الـ ‪ hash‬كالتالي‬

‫ولعرض جميع الـ ‪ accounts‬سواء ‪ Local, ldap, NIS‬نستخدم االمر‬


‫‪# getent passwd‬‬

‫هناك امر خطير جدا قد يستغله اي ‪ hacker‬اذا نجح في الدخول علي الـ ‪ ، system‬فاذا قمنا بالتعديل علي ملف ‪/etc/passwd‬‬
‫واضفنا ‪ user‬جديد له نفس الـ ‪ root credentials‬مثل الـ …‪ uid, login shell, etc‬واختيار ‪ Password‬جديدة ووضعها في‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪73‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪Securing GRUB‬‬

‫‪ /etc/shadow‬فانه يستطيع بعد ذلك الدخول علي الـ ‪ system‬بهذا الـ ‪ user‬الوهمي والتعامل بع وكأنه ‪ ، root‬لذلك من‬
‫الضروري البحث بشكل دوري عن الـ ‪ uids‬المكررة ويمكن استخدام هذا الـ ‪command‬‬
‫‪# getent passwd | cut -d : -f3 | uniq -d‬‬

‫وعندما نقوم بالبحث عن الـ ‪ UIDs‬المتشابهه‬

‫‪Securing GRUB‬‬

‫لماذا نحتاج الي عمل ‪ securing‬للـ ‪ grub‬؟‬


‫نحتاج لذلك لحماية الـ ‪ grub‬والـ ‪ system‬من الكثير من االمور مثل ‪:‬‬
‫نمنع اي شخص من التعديل علي الـ ‪ boot parameter‬والدخول علي الـ ‪single user mode‬‬ ‫‪‬‬
‫نمنع اي شخص من استخدام ‪ ALT+CTRL+DEL‬التي تؤدي الي عمل ‪ restart‬للـ ‪system‬‬ ‫‪‬‬
‫وغيرها من االمور ‪ .‬ولكن سنتحدث هنا عن هذين االمرين ‪..‬‬
‫اوال ‪ :‬نستطيع منع اي شخص من التعديل علي الـ ‪ boot parameter‬والدخول علي الـ ‪ single user mode‬بطريقتين‪:‬‬
‫االولي باستخدام االمر‬
‫‪#grub-md5-crypt‬‬
‫الذي يقوم بعمل ‪ generate‬للـ ‪grub password‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪74‬‬
REDHAT SERVER HARDENING Securing GRUB

GRUB ‫ الي ملف الـ‬hashed password ‫ثم اضافة الـ‬

‫الطريقة الثانية باستخدام االمر‬


#grub-crypt

grub.conf ‫ ايضا الي‬Password ‫ثم اضافة الـ‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 75


‫‪REDHAT SERVER HARDENING‬‬ ‫‪Customizing RHEL6‬‬

‫فاذا قمنا بعمل ‪ restart‬وضغطنا ”‪ “e‬للتعديل عليه فلن يدخلنا الي الـ ‪ ، grub options‬لذلك يجب الضغط علي ”‪ “b‬حتي يطلب الـ‬
‫‪password‬‬

‫الثانية ‪ :‬نمنع اي شخص من استخدام ‪ ALT+CTRL+DEL‬التي تؤدي الي عمل ‪ restart‬للـ ‪ ، system‬وذلك عن طريق الملف‬
‫‪vim /etc/inittab  in RHEL5‬‬
‫‪/etc/init/control-alt-delete.conf  in RHEL6‬‬

‫نقوم بوضع ”‪ “#‬امام هذا السطر او تغييره كليا بـ ”‪ “/bin/true‬وهو ‪ command‬وظيفته اظهار نتيجة اي ‪ command‬بـ "‪"2‬‬
‫اي اظهار ان االمر تم تنفيذه بطريقة صحيحة ‪ ،‬مثلما يحدث في الـ ‪ scripting‬عند تنفيذ الـ ‪ script‬بشكل صحيح يكون الناتج ”‪“2‬‬
‫ثم نقوم باعادة قراءة ملفات الـ ‪ init‬عن طريق االمر‬
‫‪# init -q‬‬
‫فاذا قام احد االشخاص بالضغط على ‪ ALT+CTRL+DEL‬فلن يظهر له ‪ error‬ولن يحدث ‪ reboot‬للـ ‪system‬‬

‫‪Customizing RHEL6‬‬

‫سنتحدث االن عن كيفية عمل ‪ customization‬لشكل الـ ‪ OS‬وذلك باضافة بعض الـ ‪ warnings‬او اخفاء بعض‬
‫المعلومات عن الـ ‪ Users‬او الـ ‪. hackers‬‬
‫‪Login banners -1‬‬
‫‪GUI user names -2‬‬
‫‪Gnome power button -3‬‬

‫‪Login banners‬‬
‫الـ ‪ login banners‬هي الرسائل التي تظهر للـ ‪ users‬او االشخاص الذين يقومون بعمل ‪ Login‬علي الـ ‪ . system‬وهناك نوعين‬
‫من الـ ‪: banners‬‬
‫‪Pre-login banner‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪76‬‬
REDHAT SERVER HARDENING Customizing RHEL6

unauthorized users ‫ وهذه الـرسالة قد تكون رسالة تحذيرية للـ‬system ‫ قبل الدخول علي الـ‬user ‫وهي الرسالة التي تظهر للـ‬
: ‫مثل‬
#####################################################################
# #
# All connections are monitored and recorded #
# Disconnect IMMEDIATELY if you are not an authorized user! #
# #
#####################################################################

: ‫ نستخدم احد هذين الملفين‬banner ‫والضافة هذا الـ‬


/etc/issue )a
local login ‫يستخدم في الـ‬

‫ تلقائيا‬hostname ‫حيث يظهر الـ‬

‫ حيث ان‬، issue file ‫ كما هو موجود في الـ‬release ‫ سيظهر لنا الـ‬hostname ‫واذا قمنا بالضغط علي الـ‬
release number ‫“ تعني‬/r”
architecture ‫“ تعني‬/m” ‫والـ‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 77


‫‪REDHAT SERVER HARDENING‬‬ ‫‪Customizing RHEL6‬‬

‫‪/etc/issue.net )b‬‬
‫يستخدم في الـ ‪ remote login‬مثل الـ ‪ ssh, ftp‬باالضافة الي الـ ‪telnet‬‬
‫نقوم باضافة الـ ‪ warning message‬في هذا الملف‬ ‫‪‬‬
‫نذهب الي الـ ‪ ssh config file‬الموجود في المسار ”‪“/etc/ssh/sshd_config‬‬ ‫‪‬‬
‫نضيف الـ ‪ issue.net path‬في الـ ‪banner line‬‬ ‫‪‬‬
‫نقوم بعمل ‪ restart‬للـ ‪.ssh‬‬ ‫‪‬‬

‫نقوم بالدخول علي الـ ‪ system‬عن طريق الـ ‪ ssh‬سنرى الـ ‪warning message‬‬ ‫‪‬‬

‫‪Post-login banner‬‬
‫وهي الرسالة التي تظهر للـ ‪ user‬بعد الدخول علي الـ ‪ system‬وهذه الرسالة قد تكون رسالة ترحيبية او تعليمات او مواصفات الـ‬
‫‪ server‬مثل ‪:‬‬
‫‪#####################################################################‬‬
‫‪#‬‬ ‫‪#‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪78‬‬
REDHAT SERVER HARDENING Customizing RHEL6

# You are logged in to the system #


# All connections are monitored and recorded #
# #
#####################################################################

file ‫ مباشرة في الـ‬message ‫“ ونقوم باضافة الـ‬/etc/motd” ‫ هو‬banner ‫والملف المسئول عن هذا الـ‬

‫ التالي‬link ‫ كما في الـ‬escape codes ‫ مثل ”@“ وبعض الـ‬special characters ‫يمكن استخدام بعض الـ‬
http://www.cyberciti.biz/faq/howto-change-login-message/

“.hushlogin” ‫ عن طريق عمل ملف باسم‬post-login banner ‫ اخفاء الـ‬normal user ‫يستطيع الـ‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 79


REDHAT SERVER HARDENING Customizing RHEL6

Instant messages
‫ عن طريق اوامر بسيطة‬users ‫“ الي الـ‬instant messages” ‫ ارسال رسائل فورية‬user ‫كما يستطيع الـ‬
Wall Command

# wall filename
: ‫ كالتالي‬logged users ‫ الي جميع الـ‬filename ‫ يقوم بارسال محتويات الملف‬wall ‫االمر‬

User ‫ الخاص بالـ‬login shell ‫ علي الـ‬message ‫فتظهر فورا محتويات الملف‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 80


‫‪REDHAT SERVER HARDENING‬‬ ‫‪Customizing RHEL6‬‬

‫‪Write Command‬‬
‫‪# write username‬‬
‫االمر ‪ write‬يقوم بارسال ‪ instant messages‬الي الـ ‪ ،user‬وهو يختلف عن االمر ‪ wall‬في انه ال يرسل محتويات الملف وانما‬
‫يرسل ما يكتبه الـ ‪ root‬علي الـ ‪terminal‬‬

‫وتظهر مباشرة عند الـ ‪User‬‬

‫كما يمكن اختيار الـ ‪ terminal‬التي سيتم ارسال الـ ‪ Instant message‬عليها‬
‫]‪# write username [ttyn‬‬
‫‪Gnome login users‬‬

‫عند عمل ‪ login‬علي الـ ‪ server‬تظهر امامنا اسماء الـ ‪ Users‬الموجودين علي الـ ‪ ، system‬ولمزيد من الـ ‪ security‬يفضل‬
‫اخفاء هذه الـ ‪info‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪81‬‬
REDHAT SERVER HARDENING Customizing RHEL6

“gconf-editor” ‫ تسمى‬Utility ‫ نقوم باستخدام‬usernames ‫والخفاء هذه الـ‬

‫ بطريقتين‬utility ‫ويمكن استخدام هذه الـ‬


: GUI -1
“gconf-editor” ‫عن طريق االمر‬ .a
# gconf-editor

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 82


REDHAT SERVER HARDENING Customizing RHEL6

‫“ فتظهر شاشة جديدة بنفس الشكل‬New Defaults Window” ‫“ ثم‬Find” ‫ ثم نختار‬.b

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 83


‫‪REDHAT SERVER HARDENING‬‬ ‫‪Customizing RHEL6‬‬

‫ومن هذه الشاشة الجديدة نختار ”‪ “Edit‬ثم ”‪ “Find‬فتظهر شاشة البحث عن الـ ‪ parameters‬التي نريد‬ ‫‪.c‬‬
‫التعامل معها‬
‫‪ .d‬علي سبيل المثال نكتب ”‪ “disable‬في خانة البحث‬

‫فتظهر لنا جميع الـ ‪ Parameters‬التي يمكن عمل ”‪ “disable‬لها‬ ‫‪.e‬‬


‫نختار ”‪ “disable_user_list‬من الجزء االسفل من الشاشة‬ ‫‪.f‬‬
‫ثم نضغط علي الـ ‪ checkbox‬الخاص بها في الجزء االيمن‬ ‫‪.g‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪84‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪Customizing RHEL6‬‬

‫‪ .h‬ثم نقوم بعمل ”‪ “Close Window‬ثم ”‪“Quite‬‬

‫نقوم االن بالتأكد من النتيجة عن طريق عمل ‪ relogin‬علي الـ ‪ server‬سنجد ان الـ ‪ user names‬قد اختفت‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪85‬‬
REDHAT SERVER HARDENING Customizing RHEL6

‫ ولكن هذه الطريقة صعبة نوعا ما‬xml ‫ عن طريق ملف الـ‬-2

Gnome Power Button


server ‫ للـ‬restart ‫ بعمل‬user ‫ ممكن يسمح الي‬login ‫ في شاشة الـ‬power button ‫ هو وجود‬security risks ‫ايضا من الـ‬
unauthorized ‫حتي وان كان‬

‫“ ولكن مع الفارق باننا سوف نقوم باختيار‬gconf-editor” ‫ السابقة‬utility ‫ نستخدم نفس الـ‬Power button ‫والخفاء الـ‬
“disable_restart_button” ‫“ اخر وهو‬parameter”

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 86


REDHAT SERVER HARDENING Customizing RHEL6

‫ قد اختفت‬power button ‫ سنجد ان الـ‬server ‫ علي الـ‬relogin ‫وللتأكد من النتيجة نقوم بعمل‬

Gnome Banner Message

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 87


REDHAT SERVER HARDENING Authentication systems

system ‫ علي الـ‬relogin ‫نقوم االن بعمل‬

Parameters ‫كما يمكن اضافة او اخفاء العديد والعديد من الـ‬

Authentication systems

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 88


REDHAT SERVER HARDENING IPA server

، ‫ ومعلوماتهم‬Users ‫ وذكرنا بعض انواعها وذكرنا ان وظيفتها هي تخزين الـ‬authentication systems ‫تحدثنا سابقا عن الـ‬
‫ ومن هنا‬، ‫ ومعلوماتهم علي جميع االجهزة‬users ‫ فلن نستطيع وضع جميع الـ‬Users ‫ولكن اذا كان لدينا عدد كبير من االجهزة والـ‬
(CAS) central authentication systems ‫ظهرت الـ‬
‫ بعمل‬application/user/server ‫ واحد فقط بيحث يقوم اي‬server ‫ توضع علي‬authentication system ‫وهي‬
: ‫ ومن امثلته‬. ‫ عن طريقه‬authentication
1- NIS :
authentication ‫ لعمل الـ‬clients ‫ والـ‬server ‫ بين الـ‬passwords ‫ كوسيلة لنقل الـ‬NIS ‫ بعمل‬SUN ‫قامت شركة‬
plain text ‫ كـ‬passwords ‫ النه ينقل الـ‬unsecured ‫ولكنه‬
2- LDAP :
User ‫ والعديد من المعلومات االخري التي تخص الـ‬passwords ‫ يسمح بتخزين الـ‬LDAP protocol ‫ بعمل‬IBM ‫قامت شركة‬
Extensible (can change hierarchy) ‫لذلك فهو‬
Developed to be DB ‫ لذلك اليمكن استخدامه كـ حيث انه‬، ‫ويمكن القراءة منه بشكل سريع جدا ولكن الكتابة عليه تكون بطيئة‬
single write, many read
unsecure (plain text) ‫ ايضا‬password ‫كما ينقل الـ‬
389-ds (open ‫ ثم قامت بعمل‬RedHat directory server (closed source) ‫ بتطويره واصدار‬REDHAT ‫قامت شركة‬
source by redhat)
user interface ‫ ووضعت له‬certificate authority server ‫ و‬dns ‫ والـ‬ntp ‫ والـ‬Kerberos ‫ثم قامت بدمجه مع الـ‬
IPA ‫ او الـ‬IDM ‫واصدرت الـ‬
activr directory ‫ واصادر الـ‬Kerberos ‫ ودمجه مع الـ‬LDAP ‫ بتطوير الـ‬MICROSOFT ‫كما قامت شركة‬
1- LDAPS :
ssl ‫ظهر بعد ظهور الـ‬
secure ‫ بطريقة‬password ‫ينقل الـ‬
2- Kerberos
tickets ‫ ولكنه يستخدم الـ‬authentication ‫ لعمل‬user/password ‫ قوي جدا ال يستخدم الـ‬authentication system ‫هو‬
‫لعمل ذلك‬
‫ الخاصه به‬implementations ‫ في الـ‬versions ‫ علي هذه الـ‬linux ‫ لذلك يعتمد الـ‬free ‫ بتطويره وجعلته‬MIT ‫قامت‬
3- IPA
Contain LDAP, Kerberos, NTP and DNS
IPA server
LDAP, Kerberos, NTP, DNS ‫ بين‬combination ‫ وهو‬central authentication server ‫ للـ‬implementation ‫هو‬
, certification server (pki), apache tomcat

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 89


REDHAT SERVER HARDENING IPA server

‫ بعمل‬Linux machines ‫ حيث تقوم الـ‬WIN ‫ و‬Linux ‫ التي تحتوي علي‬environments ‫ ايضا في الـ‬server ‫ويستخدم هذا الـ‬
authentication ‫ بعمل‬WIN machines ‫ وتقوم الـ‬IPA server ‫ من الـ‬policies ‫ والحصول علي الـ‬authentication ‫الـ‬
Active directory ‫ من الـ‬policies ‫والحصول علي الـ‬
machines ‫ بين الـ‬usernames ‫ وهذا يؤدي الي عدم تكرار الـ‬Active Directory ‫ بالتواصل مع الـ‬IPA server ‫ويقوم الـ‬
‫المختلفة‬
users ‫ للـ‬authentication ‫ هي عمل الـ‬Kerberos ‫ووظيفة الـ‬
ipa server contents ‫ وغيرها من الـ‬groups ‫ والـ‬clients ‫ والـ‬users ‫ يتعامل مع الـ‬direcotory server (ldap) ‫بينما الـ‬
‫ حتي يستطيع التحكم بهم‬objects ‫ حيث يتعامل مع جميع ما سبق كـ‬، password policy ‫وهو المسئول عن التعديل على الـ‬
: ‫اذا فسنقوم االن بعمل‬
install ipa-server -1
ipa server ‫ من الت‬authentication ‫ بعمل‬client ‫ نسمح للـ‬-2
policies ‫ والـ‬ipa server ‫ التعامل مع الـ‬-3
Install ipa-server

redhat recommendation ‫ وذلك حسب‬NetworkManager ‫ للـ‬disable ‫ يجب عمل‬installation ‫قبل الـ‬

IPA server package ‫ للـ‬Install ‫لعمل‬


#yum install ipa-server

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 90


REDHAT SERVER HARDENING IPA server

389-ds (LDAP), ‫ لها هي‬install ‫ بعمل‬IPA server ‫ التي سيقوم الـ‬dependances Packages ‫سنجد ان من ضمن الـ‬
‫ وغيرها‬Apache tomcat, kerbors

IPA-server-install ‫ يسمى‬script ‫ عن طريق‬IPA server ‫ للـ‬install & configure ‫نقوم االن بعمل‬
# ipa-server-install

“/var/log/ipaserver-install.log” ‫ يتم وضعها في‬installation logs ‫الحظ ان الـ‬


‫ لـ‬Install ‫ايضا الحظ من الصورة التالية انه سيقوم بعمل‬
CA certificate .a
Directory Server .b
Kerberos .c
httpd .d
: ‫فيطلب بعض المعلومات مثل‬
small letters ‫ وتكتب‬network ‫ الموجوده علي نفس الـ‬machines ‫ وتعني الـ‬dns terminology ‫ هو‬DOMAIN_NAME

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 91


REDHAT SERVER HARDENING IPA server

capital letters ‫ لكنه يكتب‬domain name ‫ وتعني الـ‬kerberos terminology ‫ هو‬REALM_NAME


LDAP admin password ‫ وهو الـ‬DM_PASSWORD
optional ‫ وهو‬8 characters ‫ وال يقل عن‬Kerberos master password ‫ هو الـ‬MASTER_PASSWORD
kerberos admin password ‫ هو الـ‬ADMIN_PASSWORD
IPA server FQDN ‫ هو الـ‬HOST_NAME
IPA server IP address ‫ هو الـ‬IP_ADDRESS
“--unattended” ‫ نفسه حتي ال يطلبها مرة اخرى ولكن يجب اضافة‬command ‫ويمكن كتابه هذه المعلومات في الـ‬
# ipa-server-install --realm=REALM_NAME --domain=DOMAIN_NAME --master-
password=MASTER_PASSWORD --ds-password=DM_PASSWORD --admin-
password=ADMIN_PASSWORD --hostname=HOST_NAME --ip-address=IP_ADDRESS --no-ntp --
unattended

DNS zone ‫ لـ‬create ‫ كما يقوم بعمل‬، ‫ اخري‬parameters ‫ الي‬prompt ‫ بدون‬Install ‫فيقوم بعمل‬

‫ بعض التعليمات التي يجب ان نأخذها في االعتبار‬installation ‫وسنجد في نهاية الـ‬

firewall ‫ علي الـ‬prots ‫نقوم االن بفتح هذه الـ‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 92


REDHAT SERVER HARDENING IPA server

# system-config-firewall

iptables rule ‫ ثم نقوم باستعراص الـ‬، iptables ‫ للـ‬restart ‫ثم نقوم بعمل‬

ipa-server web interface ‫نقوم االن بالدخول علي الـ‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 93


REDHAT SERVER HARDENING IPA server

https://server_ip/ipa/ui

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 94


REDHAT SERVER HARDENING IPA server

ID = 318800000 ‫ له‬ipa server ‫ للـ‬admin user ‫وكما نرى في الصورة السابقة ان الـ‬
“/etc/passwd” ‫ لذلك فلن تجده في ملف‬، ldap user ‫ وال‬normal user ‫ وليس‬kerberos user ‫ هو‬admin user ‫والـ‬
“getent” ‫واال باستخدام‬

“id” ‫ولكن نستطيع عرض معلومات عنه باستخدام‬

web interface ‫ التي يمكن عملها من الـ‬functions ‫ تقوم بنفس الـ‬cli admin tools ‫ علي‬ipa server ‫كما يحتوي الـ‬
Install ipa client
ipa-client ‫ للـ‬install ‫ حيث سنقوم بعمل‬، client ‫سنتعامل االن مع الـ‬
# yum install ipa-client
configuration ‫ثم نقوم بعمل‬
# ipa-client-install --domain=DOMAIN --server=SERVER --realm=REALM_NAME --
principal=PRINCIPAL --password=PASSWORD –mkhomedir --no-ntp --unattended
ipa server ‫ في الـ‬configured ‫ الـ‬user name ‫ هو الـ‬principal
principal password ‫ هو الـ‬password
machine ‫ علي الـ‬first login ‫ عند الـ‬User ‫ للـ‬home dir ‫ يقوم بعمل‬mkhomedir

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 95


REDHAT SERVER HARDENING IPA server

‫ كما نرى من الـ‬Kerberos ‫ مثل الـ‬ipa server ‫ من الـ‬configuration ‫ لبعض الـ‬retrieve ‫ونجد هنا انه قام بعمل‬
configuration file

ldap ‫وايضا الـ‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 96


REDHAT SERVER HARDENING IPA server

ca certificate ‫ايضا الـ‬

“id” ‫ عن طريق االمر‬ipa server ‫ الموجوده في الـ‬accounts ‫كما نستطيع معرفة الـ‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 97


REDHAT SERVER HARDENING IPA server

‫ قد‬client ‫ وهذا يعني ان الـ‬، ‫“ الذي وضحناه سابقا‬id” ‫ وله نفس الـ‬ipa server ‫ هو الموجود في الـ‬admin account ‫وهذا الـ‬
system/normal user ‫ ليس‬account ‫ وللتأكد من ان هذا الـ‬، ipa server ‫ من الـ‬account ‫حصل علي معلومات هذا الـ‬
ldap account ‫وليس‬

Uninstall ipa client or remove client from domain


: ‫ بخطوتين‬domain ‫ من الـ‬client ‫ الـ‬remove ‫ او‬ipa client ‫ للـ‬uninstall ‫نقوم بعمل‬
1- uninstall the client
# ipa-client-install --uninstall
2- Delete ca.cert file
ca.cert file ‫ للـ‬delete ‫نقوم بعمل‬
# rm -rf /etc/ipa/ca.crt

ipa ‫ علي‬client ‫ فاذا اردنا اضافة الـ‬،domain ‫ الموجوده في هذا الـ‬ipa server ‫ هي الخاصه بالـ‬certificate ‫الن هذه الـ‬
‫ القديم‬ca.cert ‫ نتيجة وجود الـ‬client installation ‫ اثناء الـ‬fail ‫ اخر فسوف يحدث‬domain ‫ اخر موجود في‬server
Using ipa server with GUI

Adding new user

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 98


‫‪REDHAT SERVER HARDENING‬‬ ‫‪IPA server‬‬

‫عندما يقوم الـ ‪ user1‬بالدخول علي الـ ‪ account‬الخاص به‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪99‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪IPA server‬‬

‫نجد في الصورة االولي انه ‪:‬‬


‫‪ -1‬اجبرنا علي تغيير الـ ‪ password‬عند الـ ‪login‬‬
‫‪ -2‬قام بتطبيق الـ ‪ password policy‬حيث انه ‪:‬‬
‫رفض الـ ‪ password‬االولي النها كانت سهلة التخمين ويمكن بسهولك عمل ‪ dictionary attack‬لها‬ ‫‪.a‬‬
‫‪ .b‬رفض الـ ‪ Password‬الثانية النها اقل من ‪8 characters‬‬
‫وضع ‪ aging‬للـ ‪account‬‬ ‫‪.c‬‬
‫‪ -3‬الـ ‪ Login shel‬هي الـ ‪ shell‬وليست الـ ‪bash‬‬
‫‪ -4‬قام باضافة ‪ home dir‬جديد للـ ‪ User‬علي الـ ‪ipa server‬‬
‫وتظهر جميع هذه الـ ‪ configuration‬في الـ ‪ user identity‬الموجوده في الـ ‪ipa server‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪100‬‬
REDHAT SERVER HARDENING IPA server

“-- ‫ نتيجة وجود الـ‬home directory ‫ والـ‬login shell ‫ وقام باضافة الـ‬، ‫ باضافتها بنفسه تلقائيا‬ipa server ‫وهذه البيانات قام الـ‬
page ‫ من نفس الـ‬login shell ‫ كما يمكن تغيير الـ‬، Installation ‫ اثناء الـ‬argument ‫ كـ‬mkhomedir”

‫ ؟‬user ‫ للـ‬home directory ‫ بعمل‬ipa server ‫ولكن كيف يقوم الـ‬


: Modules ‫ واستخدام احد الـ‬pam ‫يقوم بذلك عن طريق التعديل علي الـ‬
pam_mkhomedir.so -1
pam_oddjob_mkhomedir.so ‫ او‬-2
‫“ و‬/etc/pam.d/password-auth” ‫ الي‬pam rules ‫ الي الـ‬module : pam_mkhomedir.so ‫ اضافة الـ‬: ‫اوال‬
“/etc/pam.d/system-auth”
“session required pam_mkhomedir.so skel=/etc/skel/ umask=0022”

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 101


REDHAT SERVER HARDENING IPA server

files ‫ فهناك بعض الـ‬new user ‫ ووظيفته تظهر عند اضافة‬skeleton directory ‫ يسمى‬direcroty ‫ هو‬/etc/skel ‫حيث الـ‬
‫ ويقوم‬files ‫ يحتوي علي هذه الـ‬skel directory ‫ والـ‬، ‫ الخاص به‬home directory ‫االساسية التي يجب ان توضع في الـ‬
new user home directory ‫بنسخها الي الـ‬

: ‫ملحوظة‬

‫ بطريقة‬rule ‫ لها ثم اضافة الـ‬install ‫“ فيمكن عمل‬/lib64/security” ‫ موجوده في السار‬module ‫وان لم تكن هذه الـ‬
manual
# yum install -y pam_mkhomedir.so

“/etc/pam.d/password-auth” ‫ الي‬pam rules ‫ الي الـ‬module : pam_oddjob_mkhomedir.so ‫ اضافة الـ‬: ‫ثانيا‬


“/etc/pam.d/system-auth” ‫و‬
“session optional pam_oddjob_mkhomedir.so
‫ له كالتالي‬install ‫وان لم يكن موجود فيمكن عمل‬
###### install oddjob-mkhomedir #######
# yum install -y oddjob-mkhomedir
# chkconfig oddjobd on
# service oddjobd start
###### update our authentication mechanism #######
# authconfig --enablemkhomedir --update
https://www.dalemacartney.com/2012/07/30/auto-creation-of-user-home-directories-in-linux/
‫ فان لم يجده فانه يقوم‬، user home dir ‫ علي الـ‬check ‫ بعمل‬module ‫ يقوم هذا الـ‬Login ‫ بعمل‬User ‫وبذلك عندما يقوم الـ‬
‫بعمله‬
Adding hosts/clients

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 102


REDHAT SERVER HARDENING IPA server

identity management ‫ يضاف تلقائيا الي الـ‬ipa-client-install ‫ عن طريق الـ‬domain ‫ يتم اضافته للـ‬new client ‫اي‬
web interface

‫ عليه‬roles ‫ واضافة‬groups ‫ له واضافته الي‬editing ‫ويمكن عمل‬

Add group

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 103


REDHAT SERVER HARDENING IPA server

Add user to group


‫ لها‬user ‫ التي نريد اضافة الـ‬group ‫ نختار الـ‬-1

User ‫ نختار الـ‬-2

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 104


‫‪REDHAT SERVER HARDENING‬‬ ‫‪IPA server‬‬

‫وللتأكد من اضافه الـ ‪ User‬بنجاح نذهب الي الـ ‪User‬‬

‫ثم نضغط علي اسم الـ ‪ User‬ونختار ‪user groups‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪105‬‬
REDHAT SERVER HARDENING IPA server

group ‫ الي الـ‬user ‫فسنجد انه تمت اضافة الـ‬


Setting password policy

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 106


‫‪REDHAT SERVER HARDENING‬‬ ‫‪IPA server‬‬

‫وكما نرى في الصورة السابقة نستطيع التعديل علي الـ ‪ password policy‬واضافة اكثر من ‪ policy‬ونستطيع تطبيق الـ ‪policy‬‬
‫علي ‪ groups‬محددة‬
‫والـ ‪ history size‬تعني عدد الـ ‪ Passwords‬التي يحفظها الـ ‪ ipa server‬لكي يمنع الـ ‪ User‬من استخدامها‪ ،‬فاذا كان الـ‬
‫‪ history size = 2‬فسوف يقوم الـ ‪ ipa server‬بحفظ اخر ‪ 2 passwords‬قام الـ ‪ User‬باستخدامهم ويمنعه من استخدامهم مرة‬
‫اخرى‬
‫مثال ‪:‬اذا قام الـ ‪ User‬بوضع ‪ password = P@ss1‬الول مرة فسوف يقوم الـ ‪ ipa server‬بحفظها‬
‫وعندما يقوم الـ ‪ User‬بتغيير الـ ‪ Password‬مرة ثانيه الي ‪ P@ss2‬فسوف يقوم الـ ‪ ipa server‬بحفظها ايضا‬
‫وعندما يقوم الـ ‪ User‬بتغيير الـ ‪ Password‬مرة ثالثة فلن يستطيع استخدام اي من الـ ‪ 2 passwords‬السابقتين ويجب عليه‬
‫استخدام ‪ password‬مختلفة عن اللذان قام الـ ‪ ipa server‬بتخزينهم ‪ ،‬وبالتالي فلن يستطيع الـ ‪ User‬استخدام ‪ P@ss1‬وال‬
‫‪ P@ss2‬وليستخدم مثال ‪ P@ss3‬وسوف يحفظها الـ ‪ ipa server‬بدال من ‪p@ss1‬‬
‫وعندما يقوم الـ ‪ User‬بتغيير الـ ‪ Password‬مرة رابعه فلن يستطيع استخدام ‪ P@ss2‬وال ‪P@ss3‬‬
‫‪Add new password policy‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪107‬‬
REDHAT SERVER HARDENING IPA server

password policy ‫ الي الـ‬group ‫نقوم باضافة الـ‬

Password policy ‫ للـ‬edit ‫نقوم بعمل‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 108


REDHAT SERVER HARDENING IPA server

policy password ‫ نستعرض الـ‬، group ‫ الموجودين في الـ‬Users ‫ الجديدة علي الـ‬password policy ‫وللتأكد من تطبيق الـ‬
‫ الجديدة‬policy ‫ سنجدها تغيرت الي الـ‬user ‫الخاصه بالـ‬

Using ipa server with CLI

‫ كالتالي‬ipa admin tools ‫ عن طريق‬CLI ‫ من خالل الـ‬ipa server ‫يمكن ان نتعامل مع الـ‬
1- Install ipa admin tools
# yum install ipa-admintools.x86_64

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 109


‫‪REDHAT SERVER HARDENING‬‬ ‫‪IPA server‬‬

‫‪2- Use ipa server admin user‬‬


‫يجب ان ننتبه الي ان المسئول عن اجراء اي تعديالت علي الـ ‪ password policy‬هو الـ ‪ admin‬الخاص بالـ ‪ ipa server‬وليس‬
‫الـ ‪ root user‬الخاص بالـ ‪physical server‬‬
‫فاذا قمنا بمحاولة تغيير الـ ‪ password policy‬باستخدام الـ ‪ root user‬فسوف يظهر لنا هذا الـ ‪error‬‬

‫ولكي نستخدم الـ ‪ admin user‬الخاص بالـ ‪ ipa server‬يجب الحصول علي ‪ ticket‬من الـ ‪ Kerberos‬ويتم ذلك عن طريق‬
‫‪# kinit admin‬‬

‫ملحوظة ‪ :‬يمكن تنفيذ هذه الخطوة او الحصول علي الـ ‪ admin ticket‬من اي ‪ Machine‬سواء كانت من الـ ‪ipa‬‬
‫‪ server machine‬او من ‪ipa client machine‬‬
‫ولعرض الـ ‪ tickets‬الممنوحة للـ ‪Users‬‬
‫‪# klist‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪110‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪IPA server‬‬

‫ويتم تخزين هذه الـ ‪ tkt‬باسم ”_‪ “krb5cc‬في ”‪“/tmp‬‬

‫وبعد االنتهاء من اجراء التعديالت يجب حذف الـ ‪ tkt‬من علي الـ ‪ machine‬حتي ال يستخدمها اي شخص اخر‬
‫‪# kdestroy‬‬

‫كما يمكن التحكم في الـ ‪ tkt expiration time‬من الـ ‪ GUI‬او من الـ ‪CLI‬‬

‫او‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪111‬‬
REDHAT SERVER HARDENING IPA server

Kerberos ‫ للـ‬restart ‫ يجب عمل‬CLI ‫ او الـ‬GUI ‫وفي كال الحالتين‬


https://access.redhat.com/documentation/en-
US/Red_Hat_Enterprise_Linux/6/html/Identity_Management_Guide/kerb-policies.html
# service krb5kdc restart

‫ الجديدة‬tkt ‫ على الـ‬new life time ‫وسوف تطبق الـ‬

Add new user


admin tkt ‫بعد الحصول علي الـ‬
# ipa user-add ahmed --first “first_name” --last “last_name”
OR
# ipa user-add ahmed --first “first_name” --last “last_name” --password

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 112


REDHAT SERVER HARDENING IPA server

User ‫تم اضافة الـ‬

Find existing user

# ipa user-find ahmed

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 113


REDHAT SERVER HARDENING IPA server

Edit password policy


password policy ‫ في الـ‬character classes ‫التعديل علي الـ‬
# ipa pwpolicy-mod --minclasses=2

‫ يمكن ان تتكون منها‬4 classes ‫ فهناك‬، password ‫ التي تتكون منها الـ‬characters ‫ هي نوع الـ‬character classes ‫والـ‬
: ‫ وهي بالترتيب‬password ‫الـ‬
1- Lowercase letters
2- Uppercase letters ()
3- Numbers (0-9)
4- Special characters (“_” and “-“ etc)
‫ يجب ان تكون‬Password ‫ فهذا يعني ان الـ‬1 ‫ لتكون‬password policy ‫ في الـ‬character classes ‫فاذا فمنا بتعديل الـ‬
‫ فقط‬lower letters
capital letters ‫ و‬lower letters ‫ يجب ان تحتوي على‬Password ‫ فهذا يعني ان الـ‬character classes = 2 ‫اذا كانت الـ‬
capital letters ‫ و‬lower letters ‫ يجب ان تحتوي على‬Password ‫ فهذا يعني ان الـ‬character classes = 3 ‫اذا كانت الـ‬
numbers ‫و‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 114


REDHAT SERVER HARDENING IPA server

capital letters ‫ و‬lower letters ‫ يجب ان تحتوي على‬Password ‫ فهذا يعني ان الـ‬character classes = 4 ‫اذا كانت الـ‬
special characters ‫ و‬numbers ‫و‬

Add new group

# ipa group-add group_name --desc "group description"

group ‫تم اضافة الـ‬

Search existing group

# ipa group-find "group_name"

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 115


REDHAT SERVER HARDENING IPA server

Host based access control


‫ وبأي طريقة‬host ‫ علي الـ‬access ‫ المسموح له بعمل‬user ‫ تعني من هو الـ‬host based access control (HBAC) ‫الـ‬
CLI ‫ والـ‬GUI ‫ وسنتعامل معه ايضا بالـ‬،(ssh, ftp, ….)
HBAC Rules
GUI ‫ باستخدام الـ‬rules ‫سنقوم االن باضافة‬

‫ وتحتوي علي‬enabled ‫“ وهي‬allow_all” ‫ باسم‬rule ‫نالحظ هنا ان هناك‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 116


‫‪REDHAT SERVER HARDENING‬‬ ‫‪IPA server‬‬

‫وهذا يعني ان هذه الـ ‪ rule‬تسمح لجميع الـ ‪users‬‬


‫وفي حالة استخدام الـ ‪ CLI‬فنستطيع استعراض الـ ‪ rules‬عن طريق االمر‬
‫‪# ipa hbacrule-find‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪117‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪IPA server‬‬

‫واذا اردنا عمل ‪ restriction‬علي ‪ User‬معين حتي ال يدخل علي ‪ host‬معين او ال يستخدم ‪ service‬معينه فيجب عمل ‪disable‬‬
‫لهذه الـ ‪ rule : allow_all‬واضافة ‪ rule‬جديدة‬
‫فمثال اذا اردنا منع الـ ‪ User : ahmed‬من الدخول علي ”‪ “client.lab.com‬فسوف نقوم باالتي ‪:‬‬
‫‪disable “allow_all” rule -1‬‬
‫‪ -2‬نقوم بعمل ‪ new rule‬بـ ‪ description‬تصف وضيفتها‬
‫‪ -3‬نقوم باضافة جميع الـ ‪ users‬باستثناء الـ ‪ahmed‬‬
‫‪ -4‬نقوم باضافة الـ ‪host : client.lab.com‬‬
‫اوال ‪ :‬نقوم بعمل ‪ disable‬للـ ‪“allow_all” rule‬‬

‫او من داخل الـ ‪rule‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪118‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪IPA server‬‬

‫وتظهر بالشكل التالي في حالة استخدام الـ ‪CLI‬‬

‫ثانيا‪ :‬نقوم باضافة الـ ‪ rule‬الجديدة‬

‫ثم نقوم بتحديد مواصفات الـ ‪ rule‬باضافة الـ ‪rule description‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪119‬‬
REDHAT SERVER HARDENING IPA server

‫ فقط‬allowed users ‫ثم نضيف الـ‬

excluded ‫ عدا الـ‬hosts ‫ علي جميع الـ‬access ‫ سيكون لهم‬users ‫ الن ذلك يعني ان جميع الـ‬client ‫ثم نضيف جميع الـ‬
user : ahmed

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 120


‫‪REDHAT SERVER HARDENING‬‬ ‫‪IPA server‬‬

‫ثم نضيف الـ ‪ services‬المسموح بعمل ‪ access‬عن طريقها او نختار ”‪ “any service‬في حالة السماح باستخدام جميع الـ‬
‫‪services‬‬

‫وظهور عالمة ‪ undo‬بجانب االختيار تعني انه يجب الضغط علي ”‪ “update button‬لكي يتم تفعيل هذا االختيار بينما اذا لم‬
‫تظهر فهذا يعني انك ال تحتاج الي ذلك وسوف يتم تخزين االختيارات بشكل تلقائى‬
‫وباستعراض الـ ‪ rules‬االن سيظهر التالي ‪:‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪121‬‬
REDHAT SERVER HARDENING IPA server

‫“ فسيظهر التالي‬client.lab.com” ‫ بمحاولة الدخول علي‬user : ahmed ‫عندما يقوم الـ‬

logs ‫واذا استعرضنا الـ‬


# tailf /var/log/secure

HBAC Service Groups


‫ علي‬service ‫ لكل‬select ‫ بحيث نستخدمها مباشرة بدال من عمل‬users ‫ ونخصصها للـ‬group of services ‫كما يمكن عمل‬
user ‫ لكل‬rule ‫حدة او عمل‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 122


REDHAT SERVER HARDENING IPA server

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 123


‫‪REDHAT SERVER HARDENING‬‬ ‫‪IPA server‬‬

‫‪HBAC Test‬‬
‫كما يمكن عمل ‪ test‬للـ ‪ rule‬قبل تطبيقها وذلك عن طريق‬
‫اختيار الـ ‪ User‬المراد عمل ‪ test‬عليه واختبار الـ ‪ rule‬الخاصه به‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪124‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪IPA server‬‬

‫ثم اختيار الـ ‪ host‬الذي سيطبق عليه الـ ‪test‬‬

‫ثم اختيار الـ ‪ service‬التي سيستخدمها الـ ‪ user‬في الدخول علي الـ ‪host‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪125‬‬
‫‪REDHAT SERVER HARDENING‬‬ ‫‪IPA server‬‬

‫ثم اختيار الـ ‪ rule‬التي ستطبق علي الـ ‪ user‬وهذا يعني انه اذا طبقت هذه الـ ‪ rule‬علي هذا الـ ‪ user : ahmed‬الذي يحاول عمل‬
‫‪ access‬علي ‪ host : client.lab.com‬باستخدام الـ ‪ sshd‬فهل سينجح في عمل ‪ access‬ام ال‬

‫‪Rsyslog‬‬
‫الـ ‪ rsyslog‬هو تطوير للـ ‪ syslog‬القديم الذي كان ‪:‬‬
‫‪unsecured‬‬ ‫‪-1‬‬
‫‪ -2‬يستخدم الـ ‪ tcp‬فقط‪.‬‬
‫ولكن الـ ‪ rsyslog‬اصبح ‪:‬‬
‫‪secured -1‬‬
‫‪ -2‬ويمكن ان يستخدم الـ ‪ssl‬‬
‫‪ -3‬ويستطيع ان يستخدم الـ ‪ tcp‬والـ ‪udp‬‬
‫‪ -4‬وتم اضافة ‪ Plugins‬عليه تسمح له بعمل ‪ rules‬علي الـ ‪ logs‬بحيث يستطيع ان يرسل ‪ logs‬معينه الي ‪ clients‬معينه‬
‫‪ -5‬كما انه ‪ integrated‬مع الـ ‪DB‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪126‬‬
REDHAT SERVER HARDENING IPA server

logs ‫ لتسهيل قراءة الـ‬user interface ‫ وله‬-6


: ‫ سنقوم بعده خطوات‬ssl ‫ يدعم الـ‬rsyslog server and server ‫ولعمل‬
server ‫ والـ‬client ‫ علي كل من الـ‬rsyslog package ‫ للـ‬install ‫ نقوم بعمل‬-1
log server ‫ الي الـ‬logs ‫ بحيث يرسل جميع الـ‬rules ‫ واضافة‬client ‫ للـ‬configuration ‫ نقوم بعمل‬-2
tcp ‫ والـ‬udp ‫ بحيث بتعامل مع الـ‬server ‫ للـ‬configuration ‫ نقوم بعمل‬-3
‫ جيدا‬log server ‫ نقوم بالتأكد من عمل الـ‬-4
server ‫ علي الـ‬ssl ‫ للـ‬setting ‫ ثم نقوم بعمل‬-5
Setting up the CA .a
Generating Machine Certificates .b
Setting up the Central Server .c
Setting up syslog Clients .d
Setting up the UDP syslog relay .e
Wrapping it all up .f
Frequently seen Error Messages .g

Install rsyslog on client and server


# yum install rsyslog

Configure client
# vim /etc/rsyslog.conf

‫ كالتالي‬rule ‫ثم نقوم باضافة الـ‬


@log_server ‫ تكون الصيغة‬udp ‫في حالة استخدام الـ‬
@@log_server ‫ تكون الصيغة‬tcp ‫وفي حالة استخدام الـ‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 127


REDHAT SERVER HARDENING IPA server

service ‫ للـ‬redtart ‫ثم نقوم بعمل‬


# service rsyslog restart
Configure Server
tcp, udp modules ‫“ من الـ‬#” ‫ نقوم بازالة الـ‬configuration file ‫في الـ‬

firewall ‫ في الـ‬port 514 ‫ثم نقوم بفتح الـ‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 128


REDHAT SERVER HARDENING IPA server

service ‫ للـ‬restart ‫ثم نقوم بعمل‬


# service rsyslog restart

Test logging
custom log ‫ الرسال‬logging command ‫نقوم باستخدام‬
# logger -i test server
“/var/log/message” ‫ في الـ‬log server ‫ قد وصلت الي الـ‬log ‫سنجد ان هذه الـ‬
Encrypting Syslog Traffic with TLS (SSL(
log server ‫ مع الـ‬TLS ‫ الذي يدعم استخدام الـ‬plugin ‫تتم هذه الخطوة علي عدة مراحل ولكن اوال يجب اضافة الـ‬
# yum install rsyslog-gnutls

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 129


REDHAT SERVER HARDENING IPA server

TLS tools ‫ للـ‬install ‫ثم نقوم بعمل‬


# yum install gnutls-utils

Setting up the CA
‫ الخاص‬key ‫ بالـ‬certificate ‫ الي‬sign ‫ وبالتالي سنستطيع عمل‬verisign ‫ مثل شركة‬CA server ‫في هذه الخطوة سنقوم بعمل‬
rsyslog server ‫ علي نفس الـ‬server ‫ وسنقوم بعمل هذا الـ‬، CA ‫بالـ‬
: ‫ كما يلي‬certificate authority ‫نقوم االن بعمل الـ‬
private key ‫ للـ‬generate ‫ نقوم بعمل‬-1
# certtool --generate-privkey --outfile ca-key.pem

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 130


‫‪REDHAT SERVER HARDENING‬‬ ‫‪IPA server‬‬

‫الحظ ان الـ ‪ ca-key.pem‬لها ‪ permission : 400‬حتي ال يستطيع اي احد االطالع عليها ‪ ،‬فان لم تكن كذلك فيجب تغييرها الي‬
‫‪400‬‬

‫‪ -2‬ثم نقوم بعمل ‪ (self-signed) CA certificate‬الذي سنعطيه للـ ‪client‬‬


‫‪# certtool --generate-self-signed --load-privkey ca-key.pem --outfile ca.pem‬‬

‫ثم نقوم باالجابة علي االسئلة التي يطلبها ‪ ،‬وتوجد ‪ sample‬من هذه االسئلة وكيفية االجابة عليها في‬
‫‪/usr/share/doc/rsyslog-5.8.10/tls_cert_ca.html‬‬

‫والحظ انه عندما يسأل عن نوع هذه الـ ‪ certificate‬هل هي ‪ authority‬ام ال ‪ ،‬ستكون االجابة هي نعم الننا نقوم االن بعمل ‪CA‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪131‬‬
REDHAT SERVER HARDENING IPA server

‫ اخرى‬certificates ‫ لـ‬sign ‫ ستستخدم في عمل‬certificate ‫وان هذه الـ‬

ca.pem ‫وبذلك تم عمل الـ‬

Generating Machine Certificates


: ‫ عن طريق‬rsyslog server ‫ للـ‬certificate ‫سنقوم االن بعمل‬
server ‫ خاصه بالـ‬private key ‫ عمل‬-1
# certtool --generate-privkey --outfile key.pem --bits 2048

CA ‫ لتقديمها الي الـ‬certification request ‫ عمل‬-2


# certtool --generate-request --load-privkey key.pem --outfile request.pem

hostname ‫ هو الـ‬Common name ‫ يجب ان يكون الـ‬: ‫ملحوظة‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 132


REDHAT SERVER HARDENING IPA server

‫ سنجد انها تحتوي علي المعلومات التي ادخلناها سابقا‬request ‫واذا استعرضنا محتويات الـ‬

CA ‫ عن طريق الـ‬rsyslog server ‫ الخاص بالـ‬key ‫ للـ‬sign ‫ نقوم االن بعمل‬-3


# certtool --generate-certificate --load-request request.pem --outfile cert.pem --load-ca-certificate
ca.pem --load-ca-privkey ca-key.pem
‫ هي‬certificate request ‫ حيث ان‬cert.pem ‫ باسم‬certificate ‫ للـ‬genetare ‫ يقوم بعمل‬command ‫وهذا الـ‬
ca- ‫ هو‬signing ‫ الذي سيستخدم لعمل‬private key ‫ والـ‬ca.pem ‫ التي سيستخدمها هي‬CA certificate ‫ والـ‬request.pem
key.pem

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 133


‫‪REDHAT SERVER HARDENING‬‬ ‫‪IPA server‬‬

‫تم االن عمل ‪cert.pem‬‬

‫نقوم االن بمسح الـ ‪certificate signing request‬‬

‫ومن االفضل تغيير اسم الـ ‪ certificate‬والـ ‪ key‬الي اسم له عالقة بالـ ‪server‬‬

‫‪ -4‬نقوم االن بوضع كل ‪ file‬في المكان المناسب له في الـ ‪server‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪134‬‬
REDHAT SERVER HARDENING IPA server

# cp ca.pem /etc/pki/tls/certs/
# cp rsyslog-cert.pem /etc/pki/tls/certs/
# cp rsyslog-key.pem /etc/pki/tls/private/
‫ نقوم بعمل‬certificates ‫ لهم عن باقي الـ‬security context ‫اذا كان هناك اختالف في الـ‬
# restorecon -v -R /etc/pki

Setting up the Central log Server


rsyslog server ‫ المناسبة حتي يستطيع الـ‬configuration ‫ نقوم االن بعمل الـ‬keys ‫ والـ‬certificate ‫بعد ان قمنا بعمل الـ‬
-: ‫استخدامهم‬
TLS driver ‫ للـ‬load ‫ نقوم بعمل‬-
$DefaultNetstreamDriver gtls
pem files ‫ثم نقوم باضافة اماكن الـ‬
$DefaultNetstreamDriverCAFile /etc/pki/tls/certs/ca.pem
$DefaultNetstreamDriverCertFile /etc/pki/tls/certs/rsyslog-cert.pem
$DefaultNetstreamDriverKeyFile /etc/pki/tls/private/rsyslog-key.pem
‫ فقط نضيف‬TLS mode ‫ في الـ‬server ‫وحتي يعمل الـ‬
$InputTCPServerStreamDriverMode
anon(anonymous) ‫ ويمكن تغييرها الي‬authentication mode : x509 ‫ثم نجعل الـ‬
$InputTCPServerStreamDriverAuthMode x509/name
‫ وذلك باضافة‬domain : lab.com ‫ في الـ‬server ‫ تأتي من اي‬message ‫ بقبول اي‬server ‫ثم نقوم بالسماح للـ‬
$InputTCPServerStreamDriverPermittedPeer *.lab.com
domain ‫ حتي وان كان خارج الـ‬client ‫ من اي‬logs ‫ويمكن الغاء هذا السطر في حالة الرغبة في استقبال الـ‬
12514 ‫ وهو‬secure mode ‫ في الـ‬incoming logs ‫ الذي سيستقبل عليه الـ‬TCP port ‫ثم نقوم باختيار الـ‬
$InputTCPServerRun 10514 # start up listener at port 10514

‫ وال يجب‬، customized port ‫ وانما هو‬rsyslog ‫ الذي يعمل عليه الـ‬default port ‫ هو ليس الـ‬port 10514 ‫وللعلم فان الـ‬
‫ االن‬rsyslog ‫ الذي يستخدمه الـ‬port ‫ لذا لنرى ما هو الـ‬، ‫ في هذا االمر‬selinux ‫ان نتجاهل الـ‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 135


‫‪REDHAT SERVER HARDENING‬‬ ‫‪IPA server‬‬

‫وهنا يظهر ان الـ ‪ selinux‬تسمح للـ ‪ rsyslog‬باستخدام الـ ‪ port : 6514‬لذا يجب تغييره الي ‪ 12514‬عن طريق‬
‫‪# semanage port -a -t syslogd_port_t -p tcp 10514‬‬

‫وللتأكد من اضافة الـ ‪Port‬‬

‫ثم نقوم بالتعديل علي الـ ‪firewall rules‬‬


‫ثم نقوم بعمل ‪ restart‬للـ ‪service‬‬

‫وسيظهر ذلك ايضا في الـ ‪Logs‬‬

‫اما اذا لم نقوم بتنفيذ الـ ‪ semanage command‬واضافة الـ ‪ port 10514‬فسيظهر هذا الـ ‪ error‬عند عمل ‪ restart‬للـ‬
‫‪rsyslog service‬‬

‫ويمكن االستعانه بالـ ‪ documentation‬ايضا لتسهيل هذه الخطوات واالطالع علي الـ ‪samples‬‬
‫‪/usr/share/doc/rsyslog-5.8.10/tls_cert_machine.html‬‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪136‬‬
REDHAT SERVER HARDENING IPA server

/usr/share/doc/rsyslog-5.8.10/tls_cert_server.html

Setting up syslog Clients


‫ وهذه الـ‬، secure ‫ بشكل‬syslog server ‫ لكي يتمكن من التعامل مع الـ‬client ‫ البسيطة والخاصة بالـ‬setting ‫هناك بعض الـ‬
‫ الذي ستعامل من خالله‬Port ‫ والـ‬، ‫ والتي قمنا بعملها مسبقا‬certificate authority ‫ الخاصه بالـ‬certificate ‫ هي الـ‬setting
server ‫مع الـ‬
rsyslog-gnutls package ‫ للـ‬Install ‫ويجب ان تقوم بعمل‬
client ‫ الي الـ‬server ‫ من الـ‬certificate ‫ نقوم االن بارسال الـ‬-1

security context ‫ والتأكد من الـ‬client ‫ ثم نقوم بالذهاب الي الـ‬-2

server ‫ مثلما هي موجوده في الـ‬client configuration file ‫ الي الـ‬TLS parameters ‫ثم نقوم باضافة الـ‬
$DefaultNetstreamDriver gtls
$DefaultNetstreamDriverCAFile /etc/pki/tls/certs/ca.pem
$ActionSendStreamDriverAuthMode x509/name
$ActionSendStreamDriverPermittedPeer central.example.net
$ActionSendStreamDriverMode 1 # run driver in TLS-only mode
server ‫ عليه الي الـ‬logs ‫ الذي سيقوم بارسال الـ‬port : 10514 ‫ثم نقوم باضافة الـ‬

port 10514 ‫ باستخدام الـ‬rsyslog ‫ لكي تسمح للـ‬selinux ‫ثم نعدل الـ‬
# semanage port -a -t syslogd_port_t -p tcp 10514

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 137


‫‪REDHAT SERVER HARDENING‬‬ ‫‪IPA server‬‬

‫ثم نقوم بعمل ‪ restart‬للـ ‪ rsyslog‬والتأكد من عدم وجود ‪errors‬‬

‫نقوم االن باختبار الـ ‪logging‬‬

‫وننهي بذلك الحديث عن الـ ‪rsyslog‬‬


‫يتبقي فقط ‪ 2 topics‬وهم الـ ‪ Auditing‬والـ ‪ firewall‬فسوف يتم ان شاء هللا اضافتهم عقب العودة لتكملة الـ ‪ course‬مرة‬
‫اخرى‬

‫‪AHMED GAMIL -‬‬ ‫‪LNKD.IN/D6QEGWN‬‬ ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ ‫‪138‬‬
REDHAT SERVER HARDENING Useful Links

Useful Links
benchmarcks ‫ والـ‬hardening ‫ الهامة التي تتحدث عن الـ‬links ‫فيما يلي بعض الـ‬
https://access.redhat.com/documentation/en-
US/Red_Hat_Enterprise_Linux/6/html/Security_Guide/index.html
https://benchmarks.cisecurity.org/
https://benchmarks.cisecurity.org/tools2/linux/CIS_Red_Hat_Enterprise_Linux_6_Benchmark_v1
.3.0.pdf
https://benchmarks.cisecurity.org/tools2/linux/CIS_Red_Hat_Enterprise_Linux_7_Benchmark_v1
.0.0.pdf

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 139


REDHAT SERVER HARDENING Summery

Summery

Security Updates
yum-plugin-security.noarch ‫ للـ‬install ‫ يجب عمل‬yum ‫ باستخدام ال‬security updates ‫للحصول علي ال‬
# yum search yum-plugin-security
system ‫ التي يحتاجها الـ‬updates ‫لمعرفة ال‬
# yum updateinfo
: ‫ نستخدم االمر‬updates ‫ولعرض تفاصيل الـ‬
# yum updateinfo list
‫ المتاحة‬updates ‫لعرض مزيد من التفاصيل عن جميع الـ‬
# yum updateinfo info
redhat update ID ‫ معين باستخدام الـ‬update ‫ولعرض تفاصيل عن‬
# yum updateinfo RHSA-2014:0919:R6-64
CVE ID ‫ معين باستخدام الـ‬update ‫ولعرض تفاصيل عن‬
# yum updateinfo --cve=CVE-2014-1556
: CVE ID ‫ نستخدم ال‬CVE ‫ التي يتحدث عنها الـ‬packages ‫لعرض مزيد من التفاصيل عن الـ‬
# yum updateinfo list --cve=CVE-2014-1556
:)critical, important, moderate, low( ‫ فقط بجميع انواعها‬security update ‫لعمل‬
# yum update --security
: ‫ فنقوم بكتابة االمر‬Update ID ‫ باستخدام الـ‬update ‫لعمل‬
# yum update --advisory=RHSA-2014:0919:R6-64

Package Verification
package scripts ‫الستعراض الـ‬
# rpm --qp –scripts package_name.rpm
: ‫ نستخدم االمر‬Package ‫ الي‬md5 ‫لمعرفة الـ‬
# md5sum package_name
: ‫ نستخدم االمر‬package ‫ الي‬sha ‫لمعرفة الـ‬
# sha512sum package_name
:‫ االصلي‬fingerpring ‫ وبين الـ‬Package fingerpring ‫للمقارنة بين الـ‬
# # md5sum -c md5_fingerpring
package ‫ الخاصة بالـ‬metadata ‫لعرض الـ‬
# rpm -qpi Package_name
system ‫ الحالية في الـ‬imported keys ‫لعرض الـ‬
# rpm -qa gpg-pubkey
Official CD ‫ من الـ‬keys ‫ للـ‬Import ‫لعمل‬
rpm --import Path_to_key

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 140


REDHAT SERVER HARDENING Summery

key ‫ولمعرفة تفاصيل الـ‬


# rpm -qi key_name
‫ نستخدم االمر‬imported key ‫ولحذف‬
# rpm -e gpg-pubkey-2fa658e0-45700c69
package verification ‫لعمل‬
# rpm –K package_name
‫ يتم تخزينها في‬imported/trusted keys ‫الـ‬
/var/lib/rpm

File system encryption


partition ‫ للـ‬formatting ‫لعمل‬
# cryptsetup luksFormat /dev/sdb1
encrypted partition ‫ بعد تحويله الي‬partition ‫لعرض معلومات الـ‬
# cryptsetup luksDump /dev/sdb1
encrypted file system ‫ للـ‬virtual point/device ‫الضافة‬
# cryptsetup luksOpen /dev/sdb1 mydata
:virtual device ‫اللغاء الـ‬
# cryptsetup luksClose mydata
luks ‫ الي الـ‬key file ‫الضافة الـ‬
# cryptsetup luksAddKey /dev/sdb1 /etc/secret
Mount

‫ عن طريق االمر‬file system ‫ للـ‬mount ‫نستطيع عمل‬


# mount /dev/sda3 /work
: ‫ نستخدم االمر‬FS ‫ علي الـ‬extended attributes ‫ او تفعيل الـ‬ACL option ‫ مع اضافة‬file syetsm ‫ لـ‬Mount ‫ولعمل‬
# mount /dev/sda3 /work –o acl
# mount /dev/sda3 /work –o user_xattr
: ‫ نستخدم االمر‬FS ‫ علي الـ‬extended attributes ‫ لتفعيل الـ‬already mounted FS ‫ لـ‬user_xattr option ‫والضافة الـ‬
# mount –o remount,acl,user_xattr /work
:nodev ‫ نستخدم‬file system ‫ علي الـ‬new devices ‫لمنع اضافة‬
nodev
# mount –o remount,nodev /work
:noexec ‫ نستخدم‬file system ‫ علي الـ‬executable file ‫لمنع تشغيل اي‬
# mount –o remount,noexec /test
‫ مرة اخرى‬option ‫واللغاء هذا الـ‬
# mount -o remount,exec /test
:noexec ‫ نستخدم‬file system ‫ علي الـ‬suid ‫لمنع استخدام الـ‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 141


REDHAT SERVER HARDENING Summery

# mount -o remount,nosuid /test

File system attributes


Normal attribute
: ‫ نستخدم االمر‬Inode index ‫ الموجوده في الـ‬normal attributes ‫الستعراض الـ‬
# stat filename

File attribute
‫ نستخدم االمر‬file  append only ‫حتي يصبح الـ‬
# chattr +a /test/script
‫ نستخدم االمر‬file  immutable ‫حتي يصبح الـ‬
# chattr +i /test/script
‫ اوال عن طريق‬attribute ‫لحذف الملف يجب ان نلغي هذا الـ‬
# chattr -i /test/script
‫ نستخدم االمر‬journaling ‫حتي يسمح بالـ‬
# chattr +j /test/script
dump ‫ولمنع الـ‬
# chattr +d /test/script
synchronization ‫واللغاء الـ‬
# chattr +s /test/script

Extended attributes
: ‫ باستخدام االمر التالي‬extended attributes ‫ يدعم الـ‬file system ‫للتأكد من ان الـ‬
# tune2fs -l /dev/sdb2
file system ‫ علي الـ‬extended attribute ‫لتفعيل الـ‬
# tune2fs -o user_xattr /dev/sdb2
‫ نستخدم االمر‬file system ‫ علي الـ‬extended attributes ‫اللغاء استخدام الـ‬
# tune2fs -o ^user_xattr /dev/sdb2
‫ باستخدام االمر‬extended attributes ‫نقوم باضافة الـ‬
# setfattr -n user.comment -v "version 1" /test
‫ نستخدم االمر‬value ‫ ولكن بدون‬file ‫ الموجوده علي الـ‬extended attributes ‫والستعراض الـ‬
# getfattr /test/
‫ نستخدم االمر‬value ‫ بالـ‬attribute ‫والظهار الـ‬
# getfattr -d /test/
‫ نستخدم االمر‬value ‫ معين بالـ‬attribute ‫والظهار‬
# getfattr -n user.comment /test/
: ‫ نستخدم االمر‬attribute ‫واللغاء الـ‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 142


REDHAT SERVER HARDENING Summery

# setfattr -x user.comment /test


‫ نستخدم االمر‬user attributes ‫الستعراض الـ‬
# setfattr -n user.creator -v "Ahmed Gamil" /test/
‫ نستخدم االمر‬security attributes ‫الستعراض الـ‬
# setfattr -n security.linux -v "system_u:object_r:admin_home_t:s0" /test/
‫ نستخدم االمر‬trusted attributes ‫الستعراض الـ‬
# setfattr -n trusted.md5sum -v f693f418636a0bd9659fbb1c4ce3f198 /test/script

Special permissions
‫ نستخدم االمر‬pipe file ‫لعمل‬
# mkfifo filename
‫ كالتالي‬file ‫ويمكن استخدام هذا الـ‬
# gzip -9 -c < my_pipe > out.gz &

Access permissions
SUID ‫الضافة‬
# chmod 4644 filename
SGID ‫الضافة‬
# chmod 2644 filename
StickyBit ‫الضافة‬
# chmod 1644 filename

Find files with permissions


‫ كالتالي‬find ‫ في امر‬exact permission ‫ معين فنكتب الـ‬permission ‫ له‬file ‫للبحث عن‬
# find /bin/ -perm 4755
‫" كالتالي‬-" ‫ الموجوده في الملف نستخدم‬permissions ‫ بغض النظر عن باقي الـ‬SUID+SGID ‫ يحتوي علي‬file ‫للبحث عن اي‬
# find /test/ -perm -6000 -exec ls {} -l \;
‫ الموجوده في الملف‬permissions ‫ او االثنين معا بغض النظر عن باقي الـ‬SGID ‫ او‬SUID ‫ يحتوي علي‬file ‫للبحث عن اي‬
‫" كالتالي‬/" ‫نستخدم‬
# find /test/ -perm /6000 -exec ls {} -l \;

Monitor file changes with AIDE


‫ جديدة‬new DB ‫لعمل‬
# aide --init
‫لمعرفة التغيرات التي تمت‬
# aide --check
UMASK

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 143


REDHAT SERVER HARDENING Summery

‫ نستخدم االمر‬numeric ‫ الموجود حاليا بشكل‬Umask ‫لمعرفة الـ‬


# umask  show Numeric mode
‫ نستخدم االمر‬Symbolic ‫ الموجود حاليا بشكل‬Umask ‫لمعرفة الـ‬
# umask –S  show Symbolic mode
)temp( running shell ‫ في الـ‬umask ‫لتغيير الـ‬
# umask “value”
profile ‫ والـ‬bashrc ‫ يجب ان نضيفة في الـ‬permanent ‫وحتي تكون‬
root ‫ عدا الـ‬users ‫ التعديل علي هذا الملف يؤثر علي جميع ال‬ /etc/bashrc
‫ فقط‬root user ‫ التعديل علي هذا الملف يؤثر علي الـ‬ /etc/profile
/etc/bashrc ‫ الموجودة في الـ‬value ‫ فقط ويتحاهل الـ‬user ‫ التعديل علي هذا الملف يؤثر علي الـ‬ .bashrc
‫ في هذا الملف ليس له تأثير‬umask ‫ اضافة الـ‬ .bash_profile
ACL
file ‫ علي‬ACL ‫الضافة‬
# setfacl -m u:user_name:permission file_name
file ‫ علي الـ‬ACL ‫وللتأكد من وجود الـ‬
# getfacl file_name
‫ نستخدم االمر‬file ‫ من علي‬acl ‫الزالة الـ‬
# setfacl -x u:user_name file_name
ACL ‫ يطبق عليه الـ‬New file ‫ كامل بمحتوياته بحيث ان اي‬directory ‫ علي‬user ‫ لـ‬ACL ‫ولعمل‬
PAM
# setfacl -Rm d:u:user_name:rw directory_name
PAM library ‫ تستخدم الـ‬service ‫ ومعرفة ما اذا كانت الـ‬service ‫ لكل‬shared library ‫الستعراض الـ‬
ldd /usr/sbin/sshd | grep -i pam
so ‫ بدون‬module ‫ نستخدم اسم الـ‬. module ‫ للـ‬MAN page ‫لعرض الـ‬
# man pam_issue
‫ نستخدم االمر‬tallylog file ‫لقراءة الـ‬
# pam_tally2
user ‫ للـ‬manual unlock ‫لعمل‬
# pam_tally2 -- reset --user username

Password Aging
‫ نستخدم االمر‬user ‫ الي‬password aging ‫والستعراض الـ‬
# chage -l ali
‫ نستخدم االمر‬account expiration date ‫ولتغيير الـ‬
# chage -E YYYY-MM-DD user_name
‫ نستخدم االمر‬password ‫ علي تغيير الـ‬User ‫والجبار الـ‬
# chage -d 0 user_name

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 144


REDHAT SERVER HARDENING Summery

/etc/login.defs ‫ نستخدم الملف‬Users ‫ علي جميع الـ‬password policy ‫تطبيق الـ‬


‫ نستخدم االمر‬Password ‫للتعرف علي حالة الـ‬
# passwd –S user_name
‫ نستخدم االمر‬user ‫ للـ‬lock ‫ولعمل‬
# passwd -l user_name
‫ نستخدم االمر‬User ‫ للـ‬unlock ‫ولعمل‬
# passwd -u user_name
‫ نستخدم االمر‬Local, ldap, NIS ‫ سواء‬accounts ‫ولعرض جميع الـ‬
# getent passwd
command ‫ المكررة يمكن استخدام هذا الـ‬uids ‫للبحث عن الـ‬
# getent passwd | cut -d : -f3 | uniq -d

Securing GRUB
grub password ‫ للـ‬generate ‫لعمل‬
#grub-md5-crypt
GRUB ‫ الي ملف الـ‬hashed password ‫ثم اضافة الـ‬
‫او باستخدام االمر‬
#grub-crypt
grub.conf ‫ ايضا الي‬Password ‫ثم اضافة الـ‬

‫ عن طريق الملف‬ALT+CTRL+DEL ‫لمنع اي شخص من استخدام‬


vim /etc/inittab  in RHEL5
/etc/init/control-alt-delete.conf  in RHEL6
‫ عن طريق االمر‬init ‫العادة قراءة ملفات الـ‬
# init -q

Customizing RHEL6
Instant messages
logged users ‫ الي جميع الـ‬filename ‫ارسال محتويات الملف‬
# wall filename
‫ في انه ال يرسل محتويات الملف وانما يرسل ما يكتبه الـ‬wall ‫ وهو يختلف عن االمر‬،user ‫ الي الـ‬instant messages ‫ارسال‬
User ‫ وتظهر مباشرة عند الـ‬terminal ‫ علي الـ‬root
# write username
‫ عليها‬Instant message ‫ التي سيتم ارسال الـ‬terminal ‫يمكن اختيار الـ‬
# write username [ttyn]
Hide Gnome login users and Gnome Banner Message
login ‫ من شاشة الـ‬usernames ‫الخفاء الـ‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 145


REDHAT SERVER HARDENING Summery

# gconf-editor
Authentication systems
IPA server
IPA server package ‫ للـ‬Install ‫لعمل‬
#yum install ipa-server
IPA-server-install ‫ يسمى‬script ‫ عن طريق‬IPA server ‫ للـ‬install & configure ‫لعمل‬
# ipa-server-install
‫او‬
# ipa-server-install --realm=REALM_NAME --domain=DOMAIN_NAME --master-
password=MASTER_PASSWORD --ds-password=DM_PASSWORD --admin-
password=ADMIN_PASSWORD --hostname=HOST_NAME --ip-address=IP_ADDRESS --no-ntp --
unattended
ipa-server web interface ‫للدخول علي الـ‬
https://server_ip/ipa/ui
ipa-client ‫ للـ‬install ‫لعمل‬
# yum install ipa-client
ipa client ‫ للـ‬configuration ‫لعمل‬
# ipa-client-install --domain=DOMAIN --server=SERVER --realm=REALM_NAME --
principal=PRINCIPAL --password=PASSWORD –mkhomedir --no-ntp --unattended
client ‫ للـ‬uninstall ‫لعمل‬
# ipa-client-install --uninstall
# rm -rf /etc/ipa/ca.crt
‫ فنقوم بعمل االتي‬automatic ‫ بشكل‬user ‫ للـ‬home directory ‫ بعمل‬ipa server ‫اذا لم يقوم الـ‬
# yum install -y pam_mkhomedir.so
vim /etc/pam.d/system-auth /etc/pam.d/password-auth
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
‫او‬
###### install oddjob-mkhomedir #######
# yum install -y oddjob-mkhomedir
# chkconfig oddjobd on
# service oddjobd start
###### update our authentication mechanism #######
# authconfig --enablemkhomedir –update
vim /etc/pam.d/system-auth /etc/pam.d/password-auth
session optional pam_oddjob_mkhomedir.so

Using ipa server with CLI

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 146


REDHAT SERVER HARDENING Summery

ipa admin tools ‫ عن طريق‬CLI ‫ من خالل الـ‬ipa server ‫يمكن ان نتعامل مع الـ‬
# yum install ipa-admintools.x86_64
kerberos ‫ من الـ‬ticket ‫للحصول علي‬
# kinit admin
Users ‫ الممنوحة للـ‬tickets ‫لعرض الـ‬
# klist
machine ‫ من علي الـ‬tkt ‫لحذف الـ‬
# kdestroy
kerberos ‫ للـ‬restart ‫لعمل‬
# service krb5kdc restart
new user ‫الضافة‬
# ipa user-add ahmed --first “first_name” --last “last_name”
OR
# ipa user-add ahmed --first “first_name” --last “last_name” --password
existing user ‫للبحث عن‬
# ipa user-find ahmed
password policy ‫للتعديل علي الـ‬
# ipa pwpolicy-mod --minclasses=2
new group ‫الضافة‬
# ipa group-add group_name --desc "group description"
existing group ‫للبحث عن‬
# ipa group-find "group_name"
Host based access control
rules ‫الستعراض الـ‬
# ipa hbacrule-find
Rsyslog
server ‫ والـ‬client ‫ علي‬rsyslog ‫ للـ‬Install ‫لعمل‬
# yum install rsyslog
client ‫ للـ‬Configuration ‫عمل‬
# vim /etc/rsyslog.conf

service ‫ للـ‬redtart ‫ثم نقوم بعمل‬


# service rsyslog restart
custom log ‫ الرسال‬logging command ‫الستخدام‬
# logger -i test server
“/var/log/message” ‫ في الـ‬logs ‫توجد الـ‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 147


REDHAT SERVER HARDENING Summery

Encrypting Syslog Traffic with TLS (SSL(


log server ‫ مع الـ‬TLS ‫ الذي يدعم استخدام الـ‬plugin ‫اوال يجب اضافة الـ‬
# yum install rsyslog-gnutls
TLS tools ‫ للـ‬install ‫عمل‬
# yum install gnutls-utils

Setting up the CA
private key ‫ للـ‬generate ‫عمل‬
# certtool --generate-privkey --outfile ca-key.pem
client ‫( الذي سنعطيه للـ‬self-signed) CA certificate ‫عمل‬
# certtool --generate-self-signed --load-privkey ca-key.pem --outfile ca.pem
‫ من هذه االسئلة وكيفية االجابة عليها في‬sample ‫ توجد‬، ‫لالجابة علي االسئلة التي يطلبها‬
/usr/share/doc/rsyslog-5.8.10/tls_cert_ca.html

Generating Machine Certificates


server ‫ خاصه بالـ‬private key ‫لعمل‬
# certtool --generate-privkey --outfile key.pem --bits 2048
CA ‫ لتقديمها الي الـ‬certification request ‫لعمل‬
# certtool --generate-request --load-privkey key.pem --outfile request.pem
CA ‫ عن طريق الـ‬rsyslog server ‫ الخاص بالـ‬key ‫ للـ‬sign ‫عمل‬
# certtool --generate-certificate --load-request request.pem --outfile cert.pem --load-ca-certificate
ca.pem --load-ca-privkey ca-key.pem
security context ‫التعديل الـ‬
# restorecon -v -R /etc/pki

Setting up the Central log Server


: configuration file ‫في الـ‬
TLS driver ‫ للـ‬load ‫عمل‬
$DefaultNetstreamDriver gtls
pem files ‫ثم اضافة اماكن الـ‬
$DefaultNetstreamDriverCAFile /etc/pki/tls/certs/ca.pem
$DefaultNetstreamDriverCertFile /etc/pki/tls/certs/rsyslog-cert.pem
$DefaultNetstreamDriverKeyFile /etc/pki/tls/private/rsyslog-key.pem
‫ فقط نضيف‬TLS mode ‫ في الـ‬server ‫حتي يعمل الـ‬
$InputTCPServerStreamDriverMode
anon(anonymous) ‫ ويمكن تغييرها الي‬authentication mode : x509 ‫ثم نجعل الـ‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 148


REDHAT SERVER HARDENING Summery

$InputTCPServerStreamDriverAuthMode x509/name
‫ وذلك باضافة‬domain : lab.com ‫ في الـ‬server ‫ تأتي من اي‬message ‫ بقبول اي‬server ‫ثم نقوم بالسماح للـ‬
$InputTCPServerStreamDriverPermittedPeer *.lab.com
domain ‫ حتي وان كان خارج الـ‬client ‫ من اي‬logs ‫ويمكن الغاء هذا السطر في حالة الرغبة في استقبال الـ‬
12514 ‫ وهو‬secure mode ‫ في الـ‬incoming logs ‫ الذي سيستقبل عليه الـ‬TCP port ‫ثم نقوم باختيار الـ‬
$InputTCPServerRun 10514 # start up listener at port 10514
‫ عن طريق‬12514 ‫ الي‬selinux ‫ في الـ‬port ‫يجب تغيير الـ‬
# semanage port -a -t syslogd_port_t -p tcp 10514
samples ‫ ايضا لتسهيل هذه الخطوات واالطالع علي الـ‬documentation ‫يمكن االستعانه بالـ‬
/usr/share/doc/rsyslog-5.8.10/tls_cert_machine.html
/usr/share/doc/rsyslog-5.8.10/tls_cert_server.html

Setting up syslog Clients


client ‫ الي الـ‬server ‫ من الـ‬certificate ‫نقوم االن بارسال الـ‬
security context ‫ والتأكد من الـ‬client ‫ثم نقوم بالذهاب الي الـ‬
server ‫ مثلما هي موجوده في الـ‬client configuration file ‫ الي الـ‬TLS parameters ‫ثم نقوم باضافة الـ‬
$DefaultNetstreamDriver gtls
$DefaultNetstreamDriverCAFile /etc/pki/tls/certs/ca.pem
$ActionSendStreamDriverAuthMode x509/name
$ActionSendStreamDriverPermittedPeer central.example.net
$ActionSendStreamDriverMode 1 # run driver in TLS-only mode
server ‫ عليه الي الـ‬logs ‫ الذي سيقوم بارسال الـ‬port : 10514 ‫ثم نقوم باضافة الـ‬
port 10514 ‫ باستخدام الـ‬rsyslog ‫ لكي تسمح للـ‬selinux ‫ثم نعدل الـ‬
# semanage port -a -t syslogd_port_t -p tcp 10514
errors ‫ والتأكد من عدم وجود‬rsyslog ‫ للـ‬restart ‫ثم نقوم بعمل‬

AHMED GAMIL - LNKD.IN/D6QEGWN ‫ال تنسون ـ ـ ـا من صال ـ ـ ـح دعائكـ ـ ـ ـ ـ ـم‬ 149

You might also like