[DA] Address already in use: make_sock: could not bind to address 0.0.0.0:80

ลูกค้าปลุกมากลางดึก :026: นอนไม่หลับเลยเอามาเล่าสู่กันฟังครับ

ลูกค้าโทรมาแจ้งว่าหน้าเว็บทั้งหมดบนเครื่อง ไม่สามารถเข้าใช้งานได้

เข้าไปเช็คดู พอสั่ง start httpd จะขึ้น error ว่า
(98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down

สาเหตุน่าจะเกิดจากมีการใช้งาน port 80 อยู่แล้ว จึงไม่สามารถ start httpd ซึ่งใช้งาน port เดียวกันได้

วิธีแก้ไข

  1. netstat -ln | grep :80 ดูพบว่ามี perl script รันบน port80 อยู่
  2. kill -9 [pid ของ pl]
  3. find -name *.pl ไล่เช็คว่ามี perl อะไรแปลกๆอยู่บ้าง
  4. rm -rf [perlนั้นๆ]
  5. /etc/init.d/httpd start ดูสามารถใช้งานได้เรียบร้อย

เดาว่าน่าจะโดนมาจาก FTP เข้ามาวางไฟล์ -> สั่งรัน .pl -> ลบไฟล์ออก หรือไม่ก็อาจเป็นช่องโหว่ของ DA เพราะลูกค้าไม่ได้ update version มานานมาก
สุดท้ายเลยเปลี่ยน pass FTP + Update DA ไปเรียบร้อยครับ

จบแล้ว ฝันดีทุกท่าน :5c745924:

ขอบคุณมากครับ ขอเก็บเป็นประสบการณ์ด้วย

ขอบคุณที่แชร์ครับ

อีกวิธีนึง compile ปิด cgi หรือ ปิด cgi ไม่ให้ user ใช้ครับ
ทั้งนี้สำหรับ user ที่จะใช้ ค่อยเปิดให้ใช้ได้ครับ