Pi-hole ตั้งค่า Blacklist | 1412 https://xvlnw.com I'm on my way Tue, 15 Jun 2021 08:49:04 +0000 th hourly 1 https://wordpress.org/?v=5.5.13 Pi-Hole Block pizzaseo.com DNS Flood Attack https://xvlnw.com/topic/859 Sat, 12 Jun 2021 09:14:41 +0000 https://xvlnw.com/?p=859 หลังจากที่มีการเขียนเล่าเรื่อง Pi-Hole ระบบจัดการ DNS แบบส่วนตัวไปหลายๆตอน และใช้งานจริง ทางผมก็พบว่า มีการ DNS Query Attack pizzaseo.com เข้ามายัง Pi-Hole ที่เปิดใช้งานอยู่ ก็หาวิธีการ Block อยู่หลายวิธี เพราะว่ามีการยิง DNS Query เข้ามาเยอะมากๆ จากหลายๆ IP เลยทีเดียว เรียกได้ว่าเป็นล้านๆ Query ต่อ…

The post Pi-Hole Block pizzaseo.com DNS Flood Attack first appeared on 1412.]]>
หลังจากที่มีการเขียนเล่าเรื่อง Pi-Hole ระบบจัดการ DNS แบบส่วนตัวไปหลายๆตอน และใช้งานจริง ทางผมก็พบว่า มีการ DNS Query Attack pizzaseo.com เข้ามายัง Pi-Hole ที่เปิดใช้งานอยู่ ก็หาวิธีการ Block อยู่หลายวิธี เพราะว่ามีการยิง DNS Query เข้ามาเยอะมากๆ จากหลายๆ IP เลยทีเดียว เรียกได้ว่าเป็นล้านๆ Query ต่อวัน ทำให้ Log บวม จนทำให้ DNS ล่มในที่สุด

วิธีการแก้ไขปัญหานี้ ผมจะเลือกใช้งานตัว Fail2ban และ CSF เข้ามาช่วย โดยทำการติดตั้ง Fail2ban และ CSF ให้เรียบร้อย ตามที่ OS ของท่านใช้งานอยู่นะครับ สำหรับ CentOS สามารถใช้คำสั่งนี้ได้เลยครับ

yum install fail2ban
systemctl enable fail2ban

cd /usr/src/
wget https://download.configserver.com/csf.tgz
tar -xzf csf.tgz
cd csf
sh install.sh

หลังจาก Service ต่างๆพร้อมแล้ว ให้ทำการแก้ไขไฟล์ csf.conf สำหรับ Fail2ban

nano /etc/fail2ban/action.d/csf.conf

# Input in file csf.conf

# Fail2Ban configuration file
# http://configserver.com/cp/csf.html
#
# Note: CSF doesn't play nicely with other actions. It has been observed to
# remove bans created by other iptables based actions. If you are going to use
# this action, use it for all of your jails.
#
# DON'T MIX CSF and other IPTABLES based actions

[Definition]

actionstart = 
actionstop = 
actioncheck = 
actionban = csf --deny <ip> "banned by Fail2Ban <name>"
actionunban = csf --denyrm <ip>

[Init]

# Name used in CSF configuration
#
name = default

# DEV NOTES:
#
# based on apf.conf by Mark McKinstry

ทำการเพิ่ม Rule ของ DNS Query สำหรับโดเมน pizzaseo.com ที่มีการยิง DNS Query เข้ามา แล้วก็แบนมันซะ

nano /etc/fail2ban/filter.d/pihole-bad.conf
# Add to file pi-hole-bad.conf
[INCLUDES]
before = common.conf
[Definition]
_daemon = dnsmasq
failregex = .*query.*pizzaseo.com from <HOST>
ignoreregex =

nano /etc/fail2ban/jail.local
# Append in file jail.local
[pihole-bad]
enabled = true
port     = 53
action   = %(banaction)s[name=%(__name__)s-tcp, port="%(port)s", protocol="tcp", chain="%(chain)s", actname=%(banaction)s-tcp]
           %(banaction)s[name=%(__name__)s-udp, port="%(port)s", protocol="udp", chain="%(chain)s", actname=%(banaction)s-udp]
logpath = /var/log/pihole.log
findtime = 60
maxretry = 1
bantime = 86400
banaction = csf

เมื่อตั้งค่าเสร็จเรียบร้อย ก็ทำการ Restart Fail2ban และตรวจสอบสถานะการทำงานของระบบ

systemctl restart fail2ban
systemctl status fail2ban
fail2ban-client status pihole-bad
Status for the jail: pihole-bad
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     1211
|  `- File list:        /var/log/pihole.log
`- Actions
   |- Currently banned: 7
   |- Total banned:     7
   `- Banned IP list:   73.133.181.197 47.152.202.28 47.150.161.174 172.74.3.46
78.108.216.207 72.202.137.151 47.204.23.134

อัพเดต: หลังจากที่ได้นำเอา Fail2Ban เข้ามาช่วย Block DNS Flood Attack ผลปรากฏว่า ผ่านไปประมาณ 2 วัน ทำการ Block ไปมากกว่า 834 IP Address สุดยอดจริงๆ

Status for the jail: pihole-bad
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     6714
|  `- File list:        /var/log/pihole.log
`- Actions
   |- Currently banned: 297
   |- Total banned:     834
   `- Banned IP list: xxx
The post Pi-Hole Block pizzaseo.com DNS Flood Attack first appeared on 1412.]]>
Pi-hole ตอนที่ 4: การตั้งค่า Pi-hole Block 1 ล้าน Domain Blacklist https://xvlnw.com/topic/622 Mon, 07 Sep 2020 10:08:46 +0000 https://xvlnw.com/?p=622 สำหรับท่านที่ติดตั้ง Pi-hole พร้อมแล้ว เรามาดูวิธีการตั้งค่าเพิ่มเติมจากค่า Default หรือค่าที่ติดตั้งมาตั้งแต่แรกกันนะครับ สำหรับใครที่ยังไม่มี Pi-hole สามารถอ่านบทความก่อนหน้าได้ครับ เริ่มต้น ก็ให้เราเข้าสู่ระบบ /admin กันก่อนเลย จากนั้นเราจะเห็น Admin Dashboard อันสวยงามของ Pi-hole เรามาเริ่มกันเล…

The post Pi-hole ตอนที่ 4: การตั้งค่า Pi-hole Block 1 ล้าน Domain Blacklist first appeared on 1412.]]>
สำหรับท่านที่ติดตั้ง Pi-hole พร้อมแล้ว เรามาดูวิธีการตั้งค่าเพิ่มเติมจากค่า Default หรือค่าที่ติดตั้งมาตั้งแต่แรกกันนะครับ สำหรับใครที่ยังไม่มี Pi-hole สามารถอ่านบทความก่อนหน้าได้ครับ

เริ่มต้น ก็ให้เราเข้าสู่ระบบ /admin กันก่อนเลย จากนั้นเราจะเห็น Admin Dashboard อันสวยงามของ Pi-hole เรามาเริ่มกันเลย

Pi-hole Admin Dashboard

ไปที่ Settings > DNS > คลิกเปิดใช้ use DNSSEC (DNSSEC คืออะไร?) และในตัวอย่าง จะมีการเปิดใช้งาน Upstream DNS Servers เพิ่มเติมสำหรับ DNS IPv6 ด้วย

Pi-hole use DNSSEC

ไปที่ Group Management > Adlist ในหน้านี้ เราจะสามารถเพิ่มรายโดเมนที่ต้องการ Block เพิ่มได้ ซึ่งค่า Default จะมีมาให้ด้วยกัน 4 URLs ตามรูปภาพ แนะนำให้ดู Lists ที่ต้องการเพิ่มได้จากลิงก์ https://firebog.net ซึ่งจะมีทั้ง Suspicious, Advertising, Tracking & Telemetry, และ Malicious หรือหากต้องการ Search หา Blacklist ด้วยตังเอง สามารถใช้คำค้น “Pi-hole blocklist” ค้นหาใน Google ได้เช่นกันครับ

Pi-hole Adlist group management

หลังจากที่เราเพิ่ม List ที่ต้องการแล้ว ให้รันคำสั่ง pihole -g เพื่ออัพเดต List ลงฐานข้อมูลทุกๆครั้งนะครับ โดยสามารถคลิกที่ “online” ที่อยู่ด้านบนของ List เพื่อรันคำสั่งผ่านหน้า Admin Dashboard ได้เลย

การอัพเดต Blacklist จาก Firebog ลง Pi-hole แบบอัตโนมัติ

สำหรับผู้ที่ติดตั้ง Pi-hole ผ่านทาง Docker: สามารถใช้ images ตัวนี้ที่มี Build-in ตัวระบบอัพเดตเข้ามาแล้ว โดยการสร้างไฟล์ docker-compose.yml ดังนี้

version: "3"

services:
  pihole:
    container_name: pihole
    image: jacklul/pihole:latest
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "67:67/udp"
      - "80:80/tcp"
      - "443:443/tcp"
    environment:
      TZ: 'Asia/Bangkok'
      WEBPASSWORD: '@Pass1234'
    volumes:
      - './etc-pihole/:/etc/pihole/'
      - './etc-dnsmasq.d/:/etc/dnsmasq.d/'
      - './etc-pihole-updatelists/:/etc/pihole-updatelists/'
    dns:
      - 127.0.0.1
      - 1.1.1.2
    cap_add:
      - NET_ADMIN
    restart: unless-stopped

หลังจากติดตั้งเสร็จ ให้แก้ไขไฟล์ etc-pihole-updatelists/pihole-updatelists.conf เพิ่ม ADLISTS_URL ที่ต้องการ เช่น หากต้องการ Block ทั้งหมดเลย ก็ใช้ URL https://v.firebog.net/hosts/lists.php?type=all ได้เลยครับ จากนั้นทำการรันดึงรายการโดเมนครั้งแรกด้วยคำสั่ง docker exec -it pihole pihole-updatelists แล้วต่อไป Cron จะรันให้เองครับ หรือหากต้องการแก้ไขเวลาที่รัน Cron สามารถแก้ไขไฟล์ crontab ในโฟเดอร์เดียวกัน

สำหรับผู้ที่ติดตั้ง Pi-hole ลงใน Linux: ให้ทำการติดตั้งตัว pihole-updatelists ได้ด้วยคำสั่งนี้ครับ

wget -O - https://raw.githubusercontent.com/jacklul/pihole-updatelists/master/install.sh | sudo bash

ส่วนวิธีการตั้งค่าต่างๆเหมือนกันกับในส่วนของการใช้งาน Docker เลยครับ..

Pi-hole Block 1 Milion Domain Backlist
The post Pi-hole ตอนที่ 4: การตั้งค่า Pi-hole Block 1 ล้าน Domain Blacklist first appeared on 1412.]]>