เทคนิคป้องกันไม่ให้เหล่า Hacker เข้าเว็บผ่าน "ip/~user/" แต่ลูกค้ายังเข้าได้ปกติ

พอดีนึกวิธีปิดการเข้าเว็บผ่าน ip/~user ได้ แต่ยังยอมให้ลูกค้าเข้าได้ปกติโดยใช้ port อื่น ที่ไม่ใช่ port 80 ครับ
วิธีนี้ พอกันเหล่า Hacker ที่ขี้เกียจได้ [B][COLOR=#ff0000]แต่ไม่สามารถกันได้อย่างถาวร[/COLOR][/B] เหมือนการ disable ip/~user ตรงๆ เลยแต่ขอเอามาแชร์ครับ เพราะมันง่ายและไม่ต้องยุ่งกับ apache เป็นความสามารถของ Nginx ล้วนๆ

คนที่สามารถทำวิธีนี้ได้คือใช้ Nginx เป็น Web server หรือใช้เป็น Proxy นะครับ กรณีของผมคือใช้ Nginx เป็น Proxy กรองสิ่งต่างๆ แล้วค่อยวิ่งไป apache อีกที
วิธีทำก็คือจะเพิ่ม config ให้ nginx นิดหน่อยดังนี้ครับ

ปกติไฟล์ nginx.conf ที่เราต้องหาๆ และแก้ไขจะอยู่ประมาณนี้ครับ มือใหม่ก็สังเกต สีนะครับ

------------------------------------------------------------------------------

server [B][COLOR=#ff0000]{[/COLOR][/B]
listen xxx.xxx.xxx.xxx:9012;
server_name server.hostname.com;
location / [B][COLOR=#0000cd]{[/COLOR][/B]
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
[B][COLOR=#0000cd]}[/COLOR][/B]
[B][COLOR=#ff0000]}[/COLOR][/B]

------------------------------------------------------------------------------

เมื่อหาของตัวเองเจอกันแล้วก็เพิ่มค่า config เข้าไปใหม่ ให้กลายเป็นแบบนี้ครับ

------------------------------------------------------------------------------

[COLOR=#008000][B]## New for user
server {
listen xxx.xxx.xxx.xxx:9012;
server_name server.hostname.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}[/B][/COLOR]

default server

server [B][COLOR=#ff0000]{[/COLOR][/B]
listen xxx.xxx.xxx.xxx:80;
server_name server.hostname.com;
location / [B][COLOR=#0000cd]{[/COLOR][/B]
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
[B][COLOR=#0000cd]}[/COLOR][/B]
[COLOR=#008000][B]## Block ip/~user
location /~ { return 403; }[/B][/COLOR]
[B][COLOR=#ff0000]}[/COLOR][/B]

------------------------------------------------------------------------------

ผมเพิ่มอะไรไปบ้าง อาจ งงๆ ดูตามสีนะครับ
อธิบาย นิดหนึ่ง ว่าทำไรไปบ้างสำหรับมือใหม่นะครับ

  1. listen proxy server ขึ้นมาใหม่ผ่าน port 9012 เพื่อให้ลูกค้าใช้งาน ip/~user ได้โดยจะผ่าน port 9012 เช่น http://11.11.11.11:9012/~user
  2. ทำการ block url ที่ต้องใช้อักษร ~ (ตัวหนอน) เพื่อไม่ให้ Hacker เข้าเว็บผ่าน port 80 แล้วใช้ ip/~user ได้

เสร็จแล้วก็ลอง restart nginx ดูครับ เช็คดูว่ามันทำงานตาม 2 ข้อหรือเปล่า

ปล. วิธีนี้พึ่งลองทำเมื่อ 2 นาที ที่แล้ว ไม่รับประกันว่าจะมีผลข้างเคียงอะไรหรือเปล่า รอลูกค้าแจ้งอย่างเดียว --" พลาดตรงไหนก็ขออภัยด้วยครับ

มีผลแน่ครับ
ถ้าลูกค้ามีการเขียนโปรแกรมเพื่อ allow ip บาง ip สำหรับหน้าบางหน้า หรือระบบบางระบบ
ก่อนที่จะทำน่าจะทำกับเครื่องทดสอบ หรือ สอบถามลูกค้าก่อนนะครับ

ที่ผมเคยโดนคือ ใช้ squid เพื่อลดแบนวิด
ผลคือ โปรแกรม backup ไม่ทำงานเพราะ มีการตรวจสอบว่า มีการพยามเข้ามา dir สำหรับ backup จาก ip 127.0.0.1 (dir นี้จะ lcok เฉพาะ บาง ip เท่านั้นที่เข้าถึงได้)

เอ เคสข้างบนคือใช้ nginx อยู่แล้วไม่ใช่เหรอครับ อีกอย่างถ้าใช้ nginx ก็มักจะลง rpaf ไว้แล้ว ดังนั้นปัญหา ip ที่ว่ามาไม่น่ามีผลเลยนะครับ

ส่วนที่ จขกท. แนะนำมา คงต้องบอกว่าที่แฮคกันนี่มันไม่ใช่บอทครับ ดังนั้นถ้าแฮคเกอร์รู้ว่าคุณใช้พอร์ตอะไร ก็โดนสอยร่วงได้ทันทีเหมือนกันครับ

พวกที่ hack กันทีเป็นพัน ๆ เวบแบบนี้ ใช้โปรแกรมครับ ดังนั้นแค่เปลี่ยน port ก็ช่วยได้เยอะ (จนกว่า hacker จะเขียนเพิ่มให้รองรับ)