การตั้งค่า fail2ban ส่ง log ให้กับ remote syslog server

จาก Wiki Opensource

บันทึกนี้ปรับปรุงล่าสุดเมื่อวันที่ 26-08-2559
ดูแลโดย WIBOON

  • ทดสอบกับ rsyslog เวอร์ชั่น 8.16.0
  • ในบางครั้งเราต้องการให้ server ของเรา ส่ง log ไปให้ Firewall เพื่อ block ด้วย


ตั้งค่า rsyslog ให้ส่ง log ที่มีคำว่า Ban ไปยัง remote syslog server
ขั้นตอน
1. แก้ไขให้ fail2ban ส่ง log ไปยัง syslog (/var/log/syslog) แทนค่า default เดิมที่เก็บ log ลงไฟล์ fail2ban.log
mama@ubuntu:~$ sudo vi /etc/fail2ban/fail2ban.conf
เดิม (ประมาณบรรทัดที่ 35)
logtarget = /var/log/fail2ban.log
เปลี่ยนเป็น

logtarget = SYSLOG


2. ตรวจสอบไฟล์ /etc/rsyslog.conf และ ไฟล์ /etc/rsyslog.d/50-default.conf
ใช้ค่าเดิม ไม่ได้แก้ไข

3. สร้างไฟล์เพิ่ม 1 ไฟล์ ชื่อ 99-remote.conf

mama@ubuntu:~$ cat /etc/rsyslog.d/99-remote.conf
:msg, regex, "fail2ban.actions.* Ban .*" @10.0.100.27


4. รีสตาร์ทและตรวจสอบ rsyslog

mama@ubuntu:~$ sudo systemctl restart rsyslog
mama@ubuntu:~$ sudo systemctl status rsyslog
rsyslog.service - System Logging Service
   Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset:
   Active: active (running) since Fri 2016-08-26 14:53:45 ICT; 5s ago



ตั้งค่า remote syslog server ให้รับ log ที่ส่งมาจาก IP และ port ที่กำหนด
สมมติว่า
remote syslog server มี IP คือ 10.0.100.27 จะรับ syslog จาก 10.0.100.23
ขั้นตอน
1. เปิด Port ที่ไฟล์ rsyslog.conf ที่ประมาณบรรทัดที่ 18
mama@ubuntu:~$ sudo vi /etc/rsyslog.conf
เดิม

#module(load="imudp")
#input(type="imudp" port="514")

แก้ไขเป็น

module(load="imudp")
input(type="imudp" port="514")


2. ตรวจสอบไฟล์ /etc/rsyslog.d/50-default.conf
ใช้ค่าเดิม

3. สร้างไฟล์เพิ่ม 1 ไฟล์ ชื่อ 99-fail2ban.conf
เพื่อให้รับ log แล้วนำไปใส่ในไฟล์ที่มีชื่อเปลี่ยนไปตามวันที่เกิด log

mama@ubuntu:~$ sudo vi /etc/rsyslog.d/99-fail2ban.conf
$template Remote,"/var/log/rsyslog/fail2ban-%fromhost-ip%/%$YEAR%-%$MONTH%-%$DAY%.log"
:fromhost-ip, isequal, "10.0.100.23" ?Remote

หรือ
หากจะเอาอย่างง่าย ลงไฟล์เดิมตลอด เช่น จะไว้ในชื่อ anyfail2ban.log

mama@ubuntu:~$ sudo vi /etc/rsyslog.d/99-fail2ban.conf
:fromhost-ip, isequal, "10.0.100.23" /var/log/rsyslog/anyfail2ban.log


4. รีสตาร์ทและตรวจสอบ rsyslog

mama@ubuntu:~$ sudo systemctl restart rsyslog
mama@ubuntu:~$ sudo systemctl status rsyslog
rsyslog.service - System Logging Service
   Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset:
   Active: active (running) since Fri 2016-08-26 14:53:45 ICT; 5s ago


5. ตรวจดูจะเห็นข้อมูล log เข้ามาเมื่อมีการ Ban IP เกิดขึ้นเท่านั้น

mama@ubuntu:~$ tail -f /var/log/rsyslog/fail2ban-10.0.100.23/2016-08-24.log
Aug 24 15:20:24 ubuntu fail2ban.actions[4607]: NOTICE [wp-login] Ban 10.0.100.20

หรือ

mama@ubuntu:~$ tail -f /var/log/rsyslog/anyfail2ban.log
Aug 24 15:20:24 ubuntu fail2ban.actions[4607]: NOTICE [wp-login] Ban 10.0.100.20


Reference:
rsyslog 8.18.0 documentation » Configuration
http://www.rsyslog.com/doc/v8-stable/configuration/filters.html
rsyslog configure sample
https://gist.github.com/kenshinx/054aaf9df0ad60727ae7