בירור - כללים בסיסים לאבטחת שרת לינוקס
-
@מאיר-הנאו זה שאלה שאוד קשה לענות עליה, הכל תלוי כמה אתה מוכן להפסיד מהנוחות בשביל האבטחה, ואני יסביר, אין מאובטח ממערכת הפעלה כבויה, אבל היא לא שימושית, ואין נוח ממערכת בלי סיסמא, אבל זה פירצת אבטחה.
כמו שהתחלתי, לענות על השאלה הזו מאוד קשה, זה תלוי ברמת ידע שלך וכו’, הדברים הפשוטים שצריך לדעתי לעשות כדי לאבטח את השרת בצורה בסיסית זה א. למזער את כמות התוכנות שרצות במערכת וכך להימנע מהסיכוי שיתגלו חורי אבטחה, ב. להצפין את המידע שעובר ברשת וכך להימנע מהתקפות MITM (על ידי שימוש בפרוטוקלים מאובטחים לדוג': ftp-sftp, Telnet-ssh, http-https ), ג. להימנע משיתוף חשבונות ולהקצות לכל משתמש user נפרד, ד. לא להשתמש ביוזר root, אלא להשתמש במשתמש עם הרשאות sudo. ה. להשתמש באימות דו שלבי (2fa) במערכות רגישות, ו. לוודא ששירותים לא רצים כרוט, ו. לתת למשתמשים במערכת רק את ההרשאות שנדרשות להם, ז. לגבות את הלוגים בשרת חיצוני, ח. להשתמש בחומת אש (Firewall), זה בגדול הדברים הכי פשוטים, כמובן שאין לדבר סוף וחברות גדולות ישכרו אנשי אבטחת מידע כדי לאבטח להם את השרתים, אבל אני מבין שאתה לא זקוק לזה.
(נ.ב. אני משער שאתה משתמש בשרת וירטואלי, אם אתה משתמש בשרת פיזי חשוב גם למנוע גישה אליו פיזית, כדי להימנע מניצול הרשאות root באמצעות Single User Mode, או כמובן להגביל את השימוש בSingle User Mode ע"י עריכת הקובץ וכד'). -
@nigun חומת אש ציינתי כבר בכלל ח, וזה לדעתי אכן אחד הדברים החשובים ביותר.
בנוגע למה שכתבת לא להשתמש בפרוטוקלי ברירת מחדל, אני לא רואה בזה עניין, ואני משתמש בברירת מחדל, אם תוכל להרחיב למה זה לא מומלץ אני ישמח.
אפשר להשתמש ב-port knocking כדי להישאר בפורט ברירת מחדל ורק ליצור שכבת הגנה נוספת (כמובן שזה לא תחליף לחומת אש, זה רק שכבה נוספת של הגנה) כדי לגשת לשירות (כלומר להגדיר בport knocking סדר פורטים מסויים שצריך לעבור כדי לתקשר עם הפורט ברירת מחדל).
לשנות לגמרי את הפורט ברירת מחדל לדעתי סתם מיותר.
(אגב, אני גם לא משתמש בport knocking, כי לדעתי זה שיטת אבטחה שפגומה מהיסוד, כי ברגע שהסדר פורטים נחשף, בין אם בניחוש, הדלפה, וכד' מאותו רקגע האבטחה לא שווה כלום, אני משתמש בSSH keys ולדעתי זה מספיק מאובטח בשבילי, אני טועה?) -
@יושב-אוהלים אמר בבירור - כללים בסיסים לאבטחת שרת לינוקס:
אפשר להשתמש ב-port knocking
לא הכרתי את השיטה
אבל זה נראה שזה סתם מגביל
כי אתה צריך להתקין knock על הקליינט ולהריץ את הסט בקשות הרצוי לפני ההתחברות.
מה רע ברשימה לבנה?
אם רוצים לממש פתיחה וסגירה של כתובת מבחוץ אפשר דרך כתובת פנימית בHTTP + סיסמה כל שהיא. -
@nigun אמר בבירור - כללים בסיסים לאבטחת שרת לינוקס:
מה רע ברשימה לבנה?
האמת שאתה צודק, זה מאוד פשוט, צריך רק לערוך את הקובץ hosts.allow, ואת הקובץ hosts.deny.
הבעיה מתחילה כשיש כמה משתמשים בשרת, שמשתמשים במחשב עם סינון כלשהוא, שהכתובת ip היא סטטית, ולא קבועה, ובכל חיבור מקבלים ip חדש.. -
-
@יושב-אוהלים
מסתבר שSSH מחזירSSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.4
לכל חיבור TCP וכך אפשר לדעת שמדובר בSSH עם חיבור ע"י nc או telnet
ואין דרך רשמית לבטל את זה (אפשר למחוק את הסטרינג מהקובץ הבינארי אבל לא נשמע רעיון טוב).אבל בדקתי עם השרת פרוקסי הזה
שיש לו פיצר שמנתב את התעבורה על פי הפרוטוקול
אז אם אני מגדיר{ "apps": { "layer4": { "servers": { "logstash_proxy": { "listen": [ "0.0.0.0:2222" ], "routes": [ { "match": [ { "ssh": {} } ], "handle": [ { "handler": "proxy", "upstreams": [ { "dial": [ "0.0.0.0:22" ] } ] } ] } ] } } } } }
אז חיבור עם nc לא מחזיר כלום
אבל חיבור עם SSH עובד מצויין
השרת פרוקסי הזה עדיין לא בגרסה 1.0 אז זה כנראה לא רעיון טוב לסמוך עליו בשביל פרודקשן. -
@יושב-אוהלים אמר בבירור - כללים בסיסים לאבטחת שרת לינוקס:
@nigun בהנחה ואני משנה את פורט ברירת המחדל, א"א לסרוק פורטים פתוחים באמצעות nmap כדי לאתר את הפורט שכן פתחתי במקום הברירת מחדל? (nmap --top-ports 30 my ip)
אם יש מתקפה שמכוונות נגדך, אתה צודק.
אבל יש הרבה מתקפות שרצות רק על הפורט ברירת מחדל, על רשימה של מיליוני IP'S כי זה 99% מהשרתים. -
@מאיר-הנאו יש לMariaDB כלי מובנה לגיבוי, mysqldump.
כדי לגבות מסד ספציפי תריץ את זה (את db_name כמובן תשנה בשם של המסד שלך):mysqldump -u root -p db_name > db_backup.sql
כדי לגבות את כל המסדי נתונים שיש בשרת תריץ:
mysqldump -u root -p --all-databases > all_db_backup.sql
(אם המסד כבד, אפשר לדחוס אותו עם gzip ע"י העברת הפלט של mysqldump לgzip, לדוגמא: gzip > db_backup.sql.gz)
אח"כ כדי לשחזר מסד ספציפי תריץ:
mysql -u root -p database_name < database_name.sql
וכדי לשחזר את כל המסדים תריץ:
mysql -u root -p < all-databases.sql
אם אתה מסתבך הכי פשוט זה לגבות עם phpMyAdmin, שיש לו ממשק אינטרנט ויזואלי, אבל כמו שאמרו זה נושא אחר, אני חושב שכדאי לפתוח לכך נושא חדש.