Pi-hole | 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 เวอร์ชั่นล่าสุด https://xvlnw.com/topic/792 Sat, 26 Dec 2020 15:36:55 +0000 https://xvlnw.com/?p=792 เราสามารถอัพเดตตัวระบบ Pi-Hole ให้เป็นเวอร์ชั่นล่าสุด ผ่านทาง SSH Command Line ได้ครับ ง่ายมากๆ เลยหละ ว่างๆก็เข้ามาเช็คเวอร์ชั่นของเรากันด้วย ว่าเป็นอัพเดตใหม่ล่าสุดหรือยัง เพื่อเพิ่มความปลอดภัยและประสิทธิภาพในการทำงานของระบบ DNS Server ของเรานั่นเอง

The post การอัพเดต Pi-Hole เวอร์ชั่นล่าสุด first appeared on 1412.]]>
เราสามารถอัพเดตตัวระบบ Pi-Hole ให้เป็นเวอร์ชั่นล่าสุด ผ่านทาง SSH Command Line ได้ครับ

pihole -up

ง่ายมากๆ เลยหละ ว่างๆก็เข้ามาเช็คเวอร์ชั่นของเรากันด้วย ว่าเป็นอัพเดตใหม่ล่าสุดหรือยัง เพื่อเพิ่มความปลอดภัยและประสิทธิภาพในการทำงานของระบบ DNS Server ของเรานั่นเอง

The post การอัพเดต Pi-Hole เวอร์ชั่นล่าสุด 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.]]>
Pi-hole ตอนที่ 3: ติดตั้ง Pi-hole บน Docker https://xvlnw.com/topic/576 Wed, 26 Aug 2020 18:51:28 +0000 https://xvlnw.com/?p=576 หลังจากตอนที่แล้ว ที่เราได้ลองติดตั้ง Pi-hole บน CentOS 7 กันไปแล้ว เรามาดูวิธีการติดตั้ง Pi-hole บน Docker กันบ้างครับ มาเริ่มติดตั้ง Pi-hole บน Docker กันเลย.., ก่อนอื่นก็ต้องเตรียม Docker ให้พร้อม ซึ่งสำหรับผู้ที่เลือกวิธีการนี้ น่าจะมี Docker กันอยู่แล้ว ขอข้ามไปเลยนะครับ และเวอร์ชั่นที่ผมใช้ในก…

The post Pi-hole ตอนที่ 3: ติดตั้ง Pi-hole บน Docker first appeared on 1412.]]>
หลังจากตอนที่แล้ว ที่เราได้ลองติดตั้ง Pi-hole บน CentOS 7 กันไปแล้ว เรามาดูวิธีการติดตั้ง Pi-hole บน Docker กันบ้างครับ

มาเริ่มติดตั้ง Pi-hole บน Docker กันเลย.., ก่อนอื่นก็ต้องเตรียม Docker ให้พร้อม ซึ่งสำหรับผู้ที่เลือกวิธีการนี้ น่าจะมี Docker กันอยู่แล้ว ขอข้ามไปเลยนะครับ และเวอร์ชั่นที่ผมใช้ในการทดสอบติดตั้งจะเป็นเวอร์ชั่น Docker version 19.03.12, build 48a66213fe และ docker-compose version 1.26.2, build eefe0d31 นะครับ

เริ่มจากสร้างไฟล์ docker-compose.yml กันก่อนครับ

version: "3"

# More info at https://github.com/pi-hole/docker-pi-hole/ and https://docs.pi-hole.net/
services:
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "67:67/udp"
      - "80:80/tcp"
      - "443:443/tcp"
    environment:
      TZ: 'Asia/Bangkok'
      WEBPASSWORD: '@pi-hole-password-input-here'
    # Volumes store your data between container upgrades
    volumes:
      - './etc-pihole/:/etc/pihole/'
      - './etc-dnsmasq.d/:/etc/dnsmasq.d/'
    # Recommended but not required (DHCP needs NET_ADMIN)
    #   https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
    cap_add:
      - NET_ADMIN
    restart: unless-stopped

ในส่วนของ WEBPASSWORD ให้เราตั้งค่ารหัสผ่าน admin ที่เราต้องการให้เรียบร้อย จากนั้นเราก็สั่ง docker-compose up -d ได้เลยครับ

docker-compose up -d
Creating pihole ... done

และลองดู Process ที่ Docker รันอยู่ว่ามี Contener ของเราหรือยัง?

docker ps
CONTAINER ID        IMAGE                  COMMAND             CREATED             STATUS                    PORTS                                                                                                  NAMES
88bf5bac5464        pihole/pihole:latest   "/s6-init"          36 seconds ago      Up 35 seconds (healthy)   0.0.0.0:53->53/udp, 0.0.0.0:53->53/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:67->67/udp   pihole

หากว่าเห็น Contener ของเรารันอยู่แบบนี้แล้ว ก็ลองเข้าใช้งาน IP/admin หรือหากติดตั้งใน localhost ก็ลองเข้าใช้งาน localhost/admin ก็จะเจอหน้า Pi-hole แล้วครับ

Install Pi-hole on Docker

Note: ถ้าใครเข้า localhost ไม่ได้ ให้เข้าผ่านทาง http://127.0.0.1/admin/ แทนนะครับ

The post Pi-hole ตอนที่ 3: ติดตั้ง Pi-hole บน Docker first appeared on 1412.]]>
Pi-hole ตอนที่ 2: ติดตั้ง Pi-hole บน CentOS 7 https://xvlnw.com/topic/574 Sat, 22 Aug 2020 18:25:51 +0000 https://xvlnw.com/?p=574 ก่อนอื่นต้องเตรียม CentOS 7 สำหรับติดตั้ง Pi-hole ก่อนนะครับ หากยังไม่มี สามารถดูบริการของทาง Cloudhost.in.th ได้ที่ลิงก์ https://cloudhost.in.th/vpshosting.html ที่เป็นบริการ Cloud VPS รองรับ CentOS 7 ครับ แต่สำหรับผู้ที่ถนัด Linux ตัวอื่นๆ Pi-hole ก็รองรับครับ แต่สำหรับบทความนี้ เราจะเลือกใช้งานเป…

The post Pi-hole ตอนที่ 2: ติดตั้ง Pi-hole บน CentOS 7 first appeared on 1412.]]>
ก่อนอื่นต้องเตรียม CentOS 7 สำหรับติดตั้ง Pi-hole ก่อนนะครับ หากยังไม่มี สามารถดูบริการของทาง Cloudhost.in.th ได้ที่ลิงก์ https://cloudhost.in.th/vpshosting.html ที่เป็นบริการ Cloud VPS รองรับ CentOS 7 ครับ แต่สำหรับผู้ที่ถนัด Linux ตัวอื่นๆ Pi-hole ก็รองรับครับ

Pi-hole OS Support

แต่สำหรับบทความนี้ เราจะเลือกใช้งานเป็น การติดตั้ง Pi-hole บน CentOS 7 x64 นะครับ หลังจากที่เราเตรียม OS พร้อมแล้วก็รันคำสั่งด้านล่างนี้ได้เลย

curl -sSL https://install.pi-hole.net | bash

ระบบจะทำการรันแบบออโต้ครับ ซึ่งจะได้หน้า Config ต่างๆตามรูปภาพดังต่อไปนี้

เป็นอันเสร็จสิ้น การติดตั้ง Pi-hole ไว้ใช้งานกันนะครับ ก็ลองเล่นเมนูต่างๆด้วยตัวเองดูก่อนได้ครับ ไม่ซับซ้อนมากเท่าไร เดี๋ยววิธีการใช้งานต่างๆจะแยกออกเป็นอีกบทความให้ครับ

The post Pi-hole ตอนที่ 2: ติดตั้ง Pi-hole บน CentOS 7 first appeared on 1412.]]>