חומת האש באובונטו
-
ברצוני לחסום כל מי שניגש לשרת שלי לכתובת שמראים על בוטים וכדומה.
בדקתי את הפקודהsudo ufw status
ואני מקבל בתגובהStatus: inactive
.
ברצוני להבין למה הוא מכובה, ומה הסיכון בלפתוח אותו, ואיך אוכל לדעת שאני לא חוסם את עצמי שאם אני יפעיל את חומת האש אזי פורט 22 לא ייחסם לי לרשת שלי.
אציין מדובר בשרת EC2 של AWS.
עד היום ניהלתי את חומת האש כלפי מתן גישה לפורט 22 וכדומה על ידי שהם חסומים בחומת האש בקונסולה של אמזון, והחרגתי את כתובות הIP שלי שתהיינה פתוחות.
אך פורט 80 ו 443 פתוחים שם לחלוטין, ולמיטב הבנתי זה בלאגן לחסום שם כתובות ספציפיות, ולכן אני חושב שאת זה אני אמור לתת לשרת עצמו לעשות.
תודה -
@חוקר נדמה לי שהיא באמת לא מאופשרת בברירת מחדל.
לפני שאתה מפעיל אתה מאפשר את הSSH ככה:sudo ufw allow ssh
אם יש לך גם nginx תכתוב גם
sudo ufw allow 'nginx full'
(הssh זה שירות מוכר ע"י הufw כי הוא מוגדר בקובץ תחת התיקיה
/etc/ufw/applications.d
).אם אין הודעת שגיאה בפקודות הנ"ל,
אתה מפעיל אותו מיידית ונדמה לי שאין בזה חשש, ככה אני עושה בכל השרתים שלי. -
אל תשכח שהסדר של הרולים (rules)
קובע, כך שאפילו אם פתוח SSH
אם יש לך rule אחריו שסוגר אותו
הוא יחסם -
@upsilon01 הוא לא צריך לזכור את זה כי הוא לא הולך לעשות שום רול חסימה.
-
@dovid אמר בחומת האש באובונטו:
כי החומת אש זה רק לתעבורה מבחוץ (תמיד localhost:3306 יעבוד),
זה ברור, אני מדבר על גישה מבחוץ, ברגע שהפורט נפתח מדוקר זה נפתח גם מבחוץ למרות שההגדרה היא רשימה לבנה
-
מה היא צורת העבודה הנכונה בזה?
אם כל הצורך שלי הוא לא לכל הפורטים, כי זה כבר חסום לי מהפיירוול של AWS, אלא ס"ה לפורט 80 ו 443 לחסום כתובות שאני מזהה שהם רובוטים.
מה מומלץ?
לעשות פקודה של
sudo ufw default allow incoming
ואח"כ לעשות לכל כתובת שזהיתי כרובוט לעשות
sudo ufw deny from 255.255.255.255
יייתכן כאן מכשול כלשהו או צורך עבודה לא טובה? -
@חוקר אם כל הפורטים חסומים עם חומת אש חיצונית אז למה להתעסק עם ufw?
כלומר, למיטב הבנתי, אמרת שיש שלך באמזון חומת אש מעל השרת - כלומר השרת הוא לא הראוטר עצמו, אז לכאורה החומת אש בו היא שלב שני, ואם פתחת רק 80 ו443 אז מה העניין להתעסק בעוד חסימות בשרת עצמו?
עריכה,
אני רואה שאתה מדבר באמת על העניין הזה, לחסום שלב שני אחרי ש80&443 פתוח.
אז באמת אתה צריך לעשות כמו שכתבת.
אתה יכול לציין גם פורט ספציפי בפקודה ufw deny, אבל זה לא חשוב כי ממילא יש לך עניין לחסום הכל מאותה כתובת. -
@שמואל4 אמר בחומת האש באובונטו:
@חוקר אם כל הפורטים חסומים עם חומת אש חיצונית אז למה להתעסק עם ufw?
כלומר, למיטב הבנתי, אמרת שיש שלך באמזון חומת אש מעל השרת - כלומר השרת הוא לא הראוטר עצמו, אז לכאורה החומת אש בו היא שלב שני, ואם פתחת רק 80 ו443 אז מה העניין להתעסק בעוד חסימות בשרת עצמו?
כי אין שם פיתרון קליל לחסימת כתובות ספציפיות מ 80/443.
אני רוצה שכל פעם שזיהיתי איזה שרת שמנסה לגשת לכתובות כ admin וכו' שסתם חופרים באתר שאחסום אותם לגשת לשרת -
@חוקר ערכתי את ההודעה למעלה.
אולי יהיה לך יותר נוח לעשות את רשימת החסימה ברמת הnginx:
https://docs.nginx.com/nginx/admin-guide/security-controls/controlling-access-proxied-tcp/ -
עוד פתרון בנוסף לזה, לעשות include בתוך הserver הרלוונטי וככה לדחוף לקובץ רק שורות של "deny 192.168;"
include /etc/nginx/blockips.conf;
בסגנון של:
server { listen 80; include /etc/nginx/blockips.conf; root...; }
זה גם צריך לעבוד.
ואז אפילו אתה יכול ליצור קובץ bash שאתה פונה אליו כל פעם להוספת כתובת, שהוא יעשה:
echo "deny $1;" >> /etc/nginx/blockips.conf; nginx -s reload;
-
@חוקר תוכנת fail2ban נועדת לשימושים כאלו. היא מזהה בלוגים תבניות גישה שאתה מגדיר וחוסמת את ה-IP של הבקשה. היא תוכנה מאוד גמישה עם המון אפשרות של התאמה אישית.
@חוקר אמר בחומת האש באובונטו:
יייתכן כאן מכשול כלשהו או צורך עבודה לא טובה?
אני לא רואה בעיה, (חוץ מזה שזה ידני.)
-
@שמואל4 אמר בחומת האש באובונטו:
ואז אפילו אתה יכול ליצור קובץ bash שאתה פונה אליו כל פעם להוספת כתובת, שהוא יעשה:
echo "deny $1;" >> /etc/nginx/blockips.conf; nginx -s reload; -
@yossiz אמר בחומת האש באובונטו:
@חוקר היה כדאי אולי לפתוח נושא חדש לזה... התשובה היא:
echo "deny x.x.x.x" | sudo tee /etc/nginx/blockips.conf > /dev/null
ההסבר אולי אני אכתוב בהזדמנות אחרת
הבעיה שזה דורס את הקובץ במקום להוסיף בסופו.
צריך פשוט להוסיף את הדגל של -aecho "deny x.x.x.x" | sudo tee -a /etc/nginx/blockips.conf > /dev/null