שאלה בדוק אם היציאה פתוחה או סגורה בשרת לינוקס?


כיצד ניתן לבדוק אם יציאה מקשיבה בשרת לינוקס?


175
2017-09-07 17:24




לא ברור מה אתה שואל. מה זאת אומרת "פתוח"? האם אתה מתכוון שרת כלשהו מקשיב על הנמל? או שאתה מתכוון שזה מותר על ידי חומת האש של המערכת? או מה? - David Schwartz
אני חושב נמל נחסם על השרת שלי רוצה לפתוח את החסימה / לפתוח אותו שוב. - James Anderson
netstat -an | grep PORTNUMBER | grep -i listen אם הפלט ריק, היציאה אינה בשימוש. - automatix


תשובות:


אתה יכול לבדוק אם תהליך מקשיב על יציאת TCP או UDP עם netstat -tuplen.

כדי לבדוק אם כמה יציאות נגישים מבחוץ (זה כנראה מה שאתה רוצה) אתה יכול להשתמש סורק יציאה כמו Nmap מ אחר מערכת. הפעלת Nmap על המארח אותו אתה רוצה לבדוק הוא די חסר תועלת עבור המטרה שלך.


159
2017-09-07 17:31



GNU netstat מכיר את הפרמטרים -t, -u, -p, -l, -e, ו -n. הודות לנתח מנתח זה יכול לבוא לידי ביטוי -tuplen. linux.die.net/man/8/netstat - joschi
וגם ה telnet הפקודה בדרך כלל תומך רק TCP, אז אתה יוצא מזל אם השירות שאתה רוצה לבדוק פועל על פרוטוקול אחר. - joschi
כן, הייתי באמצעות Windows ומכאן הבלבול. - Dexter
nc הוא (טוב) חלופה Telnet. הוא תומך UDP מדי. - Tsvetomir Dimitrov
השתמש בו עם sudo: sudo netstat -tuplen. זה ייתן לך תהליכים בבעלות לא רק אתה, אלא גם על ידי אחרים, ו, זה יהיה להדפיס פרטים נוספים (כמו PID / שם התוכנית) אם הם לא מוצגים כבר כמשתמש שאינו root. - John Red


הדרך המהירה ביותר לבדוק אם יציאת TCP פתוחה (כולל כל חומת אש של חומרה), היא להקליד ממחשב מרוחק (למשל שולחן העבודה):

telnet myserver.com 80

אשר ינסה לפתוח חיבור ליציאה 80 בשרת זה. אם אתה מקבל פסק זמן או להכחיש, היציאה אינה פתוחה :)


84
2017-09-07 17:33



אומר כי הוא אינו מזהה "telnet" כפקודה ... - James Anderson
"yum להתקין Telnet" כדי להתקין את חבילת הלקוח Telnet. - cjc
אומר: Telnet: התחבר לכתובת 82.165.148.224: החיבור נדחה - James Anderson
נכתב לעיל: if you get a time out or deny, the port is not open - Industrial
מה אם אין לך perms להתקין Telnet? האם יש עוד כלי סטנדרטי? - KC Baltz


אישור, לסיכום, יש לך שרת שאתה יכול להיכנס. אתה רוצה לראות אם משהו מקשיב על יציאה כלשהי. כשורש, הפעל:

netstat -nlp

זה יציג רשימה של תהליכים האזנה על יציאות TCP ו- UDP. ניתן לסרוק (או grep) אותו עבור התהליך שבו אתה מתעניין, ו / או את מספרי היציאה שאתה מצפה לראות.

אם התהליך שאתה מצפה הוא לא שם, אתה צריך להתחיל את התהליך ולבדוק netstat שוב. אם התהליך נמצא שם, אבל הוא מקשיב בממשק ובפורט שלא ציפית, אז יש בעיית תצורה (למשל, זה יכול להיות הקשבה, אבל רק על ממשק loopback, כך שתראה 127.0.0.1:3306 ו אין קווים אחרים עבור יציאה 3306, במקרה של תצורת ברירת המחדל עבור MySQL).

אם התהליך הוא מעלה, וזה מקשיב על הנמל שאתה מצפה, אתה יכול לנסות להפעיל "Telnet" לאותו יציאה מ- Macbook שלך במשרד / הביתה, למשל,

 telnet xxxxxxxxxxxx.co.uk 443

זה יהיה לבדוק אם (בהנחה יציאות סטנדרטי) כי יש שרת אינטרנט מוגדר עבור SSL. שים לב כי בדיקה זו באמצעות Telnet רק הולך לעבוד אם התהליך הוא מקשיב על יציאת TCP. אם זה יציאת UDP, אתה יכול גם לנסות עם כל לקוח אתה הולך להשתמש כדי להתחבר אליו. (אני רואה שהשתמשת בנמל 224. זה masqdialer, ואין לי מושג מה זה).

אם השירות נמצא שם, אבל אתה לא יכול להגיע אליו מבחוץ, אז יש חומת אש חוסמת אותך. במקרה זה, הפעל:

 iptables -L -n

פעולה זו תציג את כל כללי חומת האש כפי שהוגדרו במערכת שלך. אתה יכול לכתוב את זה, אבל, בדרך כלל, אם אתה לא מאפשר הכל על שרשרת INPUT, סביר להניח שאתה צריך לאפשר במפורש תנועה ביציאה המדוברת:

 iptables -I INPUT -p tcp --dport 224 -j ACCEPT

או משהו כזה. אל תפעיל את פקודות חומת האש שלך בעיוורון על סמך מה שאדם זר סיפר לך באינטרנט. חשבו על מה שאתם עושים.

אם חומת האש שלך על הקופסה מאפשרת את התנועה הרצויה, ייתכן שחברת האחסון שלך מפעילה חומת אש (לדוגמה, הם מאפשרים רק SSH (22 / tcp), HTTP (80 / tcp) ו- HTTPS (443 / tcp) ומניעת כל תנועה נכנסת אחרת). במקרה זה, יהיה עליך לפתוח כרטיס התמיכה שלהם כדי לפתור בעיה זו, אם כי אני מניח שיש משהו cPanel שלך אשר עשוי לאפשר את זה.


23
2017-09-07 20:01



אתה יכול pls להוסיף כיצד לבטל את הפקודה iptables -I? תודה!! - Evgeny
"iptables -D" ואחריו כל מה שהיה לך אחרי "I" בפקודה המקורית. בעיקרון, לחפש את התיעוד. - cjc


אני משתמש משולבת של netstatו lsofYou

netstat -an | grep <portnumber>
lsof -i:<portnumber>

כדי לראות אם היציאה נמצאת בשימוש, ומה נעשה בה שימוש.


8
2018-03-28 19:32



שום דבר לא מתבקש עם או בלי sudo - Dheeraj Thedijje
@DheerajThedijje - אז כי היציאה אינה פתוחה - warren
כן זה לא היה, יש לי את זה. - Dheeraj Thedijje


אם אתה מחובר למערכת והוא יכול להריץ פקודה כשורש אז אתה יכול לבדוק את הפלט של iptables

iptables -L -vn

זה יפרט את כללי חומת האש ואילו יציאות הן יעד פתוח ACCEPT וכל יעד יציאות סגור באופן מפורש REJECT.


7
2017-09-07 17:57



ואם יש לך firewalld, זה פשוט יותר firewall-cmd --query-port=port/protocol, למשל firewall-cmd --query-port=80/tcp. - Agostino


lsof -i :ssh יהיה רשימה של כל התהליכים עם יציאת ssh פתוח, הן הקשבה וחיבורים פעילים.


5
2018-01-25 21:45



קידומת sudo אם הוא אינו מחזיר פלט כלשהו. - Elijah Lynn