วิธีการแก้ไขปัญหานี้ ผมจะเลือกใช้งานตัว 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: xxxThe post Pi-Hole Block pizzaseo.com DNS Flood Attack first appeared on 1412.]]>
pihole -up
ง่ายมากๆ เลยหละ ว่างๆก็เข้ามาเช็คเวอร์ชั่นของเรากันด้วย ว่าเป็นอัพเดตใหม่ล่าสุดหรือยัง เพื่อเพิ่มความปลอดภัยและประสิทธิภาพในการทำงานของระบบ DNS Server ของเรานั่นเอง
The post การอัพเดต Pi-Hole เวอร์ชั่นล่าสุด first appeared on 1412.]]>เริ่มต้น ก็ให้เราเข้าสู่ระบบ /admin กันก่อนเลย จากนั้นเราจะเห็น Admin Dashboard อันสวยงามของ Pi-hole เรามาเริ่มกันเลย
ไปที่ Settings > DNS > คลิกเปิดใช้ use DNSSEC (DNSSEC คืออะไร?) และในตัวอย่าง จะมีการเปิดใช้งาน Upstream DNS Servers เพิ่มเติมสำหรับ DNS IPv6 ด้วย
ไปที่ Group Management > Adlist ในหน้านี้ เราจะสามารถเพิ่มรายโดเมนที่ต้องการ Block เพิ่มได้ ซึ่งค่า Default จะมีมาให้ด้วยกัน 4 URLs ตามรูปภาพ แนะนำให้ดู Lists ที่ต้องการเพิ่มได้จากลิงก์ https://firebog.net ซึ่งจะมีทั้ง Suspicious, Advertising, Tracking & Telemetry, และ Malicious หรือหากต้องการ Search หา Blacklist ด้วยตังเอง สามารถใช้คำค้น “Pi-hole blocklist” ค้นหาใน Google ได้เช่นกันครับ
หลังจากที่เราเพิ่ม List ที่ต้องการแล้ว ให้รันคำสั่ง pihole -g เพื่ออัพเดต List ลงฐานข้อมูลทุกๆครั้งนะครับ โดยสามารถคลิกที่ “online” ที่อยู่ด้านบนของ List เพื่อรันคำสั่งผ่านหน้า Admin Dashboard ได้เลย
สำหรับผู้ที่ติดตั้ง 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 เลยครับ..
The post Pi-hole ตอนที่ 4: การตั้งค่า Pi-hole Block 1 ล้าน Domain Blacklist first appeared on 1412.]]>มาเริ่มติดตั้ง 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 แล้วครับ
Note: ถ้าใครเข้า localhost ไม่ได้ ให้เข้าผ่านทาง http://127.0.0.1/admin/ แทนนะครับ
The post Pi-hole ตอนที่ 3: ติดตั้ง Pi-hole บน Docker first appeared on 1412.]]>แต่สำหรับบทความนี้ เราจะเลือกใช้งานเป็น การติดตั้ง Pi-hole บน CentOS 7 x64 นะครับ หลังจากที่เราเตรียม OS พร้อมแล้วก็รันคำสั่งด้านล่างนี้ได้เลย
curl -sSL https://install.pi-hole.net | bash
ระบบจะทำการรันแบบออโต้ครับ ซึ่งจะได้หน้า Config ต่างๆตามรูปภาพดังต่อไปนี้
เป็นอันเสร็จสิ้น การติดตั้ง Pi-hole ไว้ใช้งานกันนะครับ ก็ลองเล่นเมนูต่างๆด้วยตัวเองดูก่อนได้ครับ ไม่ซับซ้อนมากเท่าไร เดี๋ยววิธีการใช้งานต่างๆจะแยกออกเป็นอีกบทความให้ครับ