เคล็ดลับในการปกป้องเซิร์ฟเวอร์ Linux ของคุณจากการโจมตีภายนอก

ฉันเดาว่าคนที่ขับรถ เซิร์ฟเวอร์ Linux รู้และรู้เกี่ยวกับ ปฏิเสธโฮสท์ y Fail2ban. สำหรับผู้ที่ไม่รู้จักเขาฉันจะ อธิบาย เล็กน้อยเกี่ยวกับสองคนนี้ การใช้งาน.

John Fredy Perez เป็นหนึ่งใน ผู้ชนะ จากการแข่งขันประจำสัปดาห์ของเรา: «แบ่งปันสิ่งที่คุณรู้เกี่ยวกับ Linux«. ยินดีด้วย! กังวลเกี่ยวกับ มีส่วนร่วม และให้การสนับสนุนชุมชนเช่นเดียวกับจอห์น?

เราจะติดตั้งและกำหนดค่าแอปพลิเคชั่นทั้งสองนี้เพื่อหลีกเลี่ยงความปวดหัว ก่อนอื่นเราจะอธิบายว่าทั้งสองแอปพลิเคชันคืออะไรและมีหน้าที่อะไร:

Fail2Ban

เป็นเครื่องมือวิเคราะห์บันทึกที่ค้นหาความพยายามในการลงทะเบียนที่ล้มเหลวและบล็อก IP ที่เกิดจากความพยายามเหล่านี้ มีการแจกจ่ายภายใต้สิทธิ์การใช้งาน GNU และโดยทั่วไปจะทำงานกับทุกระบบที่เชื่อมต่อกับระบบควบคุมการโจมตีหรือไฟร์วอลล์ในพื้นที่

Fail2Ban มีการกำหนดค่าที่ยอดเยี่ยมและยังสามารถสร้างกฎสำหรับโปรแกรม
ของตัวเองหรือบุคคลที่สาม

ปฏิเสธโฮสท์

เป็นเครื่องมือรักษาความปลอดภัยที่เขียนด้วย python ที่ตรวจสอบบันทึกการเข้าถึงเซิร์ฟเวอร์เพื่อป้องกันการโจมตีแบบเดรัจฉานบนเซิร์ฟเวอร์เสมือน โปรแกรมทำงานโดยการห้ามที่อยู่ IP ที่มีความพยายามในการเชื่อมต่อที่ล้มเหลวเกินจำนวนที่กำหนด

แอปพลิเคชัน Linux เหล่านี้ - DenyHosts และ Fail2ban - สามารถใช้แยกกันหรือใช้ร่วมกันได้ ในกรณีของฉันฉันให้พวกเขาทั้งสองทำงานร่วมกัน

การติดตั้งและการกำหนดค่าของแต่ละรายการขึ้นอยู่กับการแจกจ่ายที่คุณใช้ โพสต์นี้มุ่งเน้นไปที่ CentOS 6.3 แม้ว่าความแตกต่างระหว่าง Distros อื่น ๆ จะไม่มีการทำเครื่องหมายมากนัก

ถ้าอย่างนั้นไปทำงาน

การติดตั้งและกำหนดค่า Fail2Ban

แอปพลิเคชันนี้สร้างกฎแบบไดนามิกในไฟร์วอลล์ของลินุกซ์เองและรับผิดชอบในการสร้างกฎที่ใช้งานจริงใน IpTables

การติดตั้ง

สำหรับการติดตั้ง:

ยำติดตั้ง fail2ban 

หากแพ็คเกจไม่ปรากฏขึ้นเราต้องเพิ่มที่เก็บที่จำเป็น:

รอบต่อนาที -Uvh http://mirror.metrocast.net/fedora/epel/6/i386/epel-release-6-7.noarch.rpm

ด้วยสิ่งนี้คุณควรเริ่มติดตั้งแอปพลิเคชันพร้อมกับการอ้างอิง

ตอนนี้เราต้องกำหนดค่า Fail2Ban เพื่อวิเคราะห์บันทึกที่เราต้องการและบล็อก
IP ของการส่งการแจ้งเตือนทางอีเมล สำหรับสิ่งนี้เราต้องแก้ไขไฟล์ jail.conf ที่เราพบใน / etc / fail2ban

cd / etc / fail2ban
นาโน jail.conf

ควรทำสิ่งต่อไปนี้ในไฟล์นี้:

  • Modify คือค่า bantime ค่านี้กำหนดเวลาเป็นวินาทีที่ IP ของผู้โจมตีจะถูกบล็อกโดยค่าเริ่มต้นจะมาใน 600 วินาที
  • ค้นหาค่าสูงสุดที่จะเป็นจำนวนครั้งที่ IP สามารถตรวจสอบสิทธิ์ล้มเหลวก่อนที่จะถูกบล็อก
  • เพิ่ม ip ของเราในพารามิเตอร์ Ignoreip ที่นี่แอปพลิเคชันจะละเว้น IP ที่ตรวจสอบสิทธิ์ของเราในพารามิเตอร์นั้น
[ค่าเริ่มต้น]
# "ignip" อาจเป็นที่อยู่ IP, CIDR mask หรือโฮสต์ DNS Fail2ban จะไม่
# ห้ามโฮสต์ที่ตรงกับที่อยู่ในรายการนี้ หลายที่อยู่ได้
# กำหนดโดยใช้ตัวคั่นช่องว่าง
ไม่สนใจ = 127.0.0.1

# "bantime" คือจำนวนวินาทีที่โฮสต์ถูกแบน
bantime = 600

# โฮสต์ถูกแบนหากสร้าง "maxretry" ในช่วง "findtime" ล่าสุด
# วินาที
findtime = 600

# "maxretry" คือจำนวนความล้มเหลวก่อนที่โฮสต์จะถูกแบน
maxretry = 3

ตัวอย่างวิธีการดูมีดังนี้:

ไม่สนใจ = 127.0.0.1 190.25.242.75 192.168.1.0/24
bantime = 800
maxretry = 2

กำหนดค่า Fail2Ban และ SSH

หากต้องการค้นหาความพยายามในการเข้าสู่ระบบ SSH ที่ล้มเหลวเราจะแก้ไขไฟล์จนกว่าจะมีลักษณะดังต่อไปนี้:

[ssh-iptables] 
เปิดใช้งาน = จริง
ตัวกรอง = sshd
action = iptables [name = SSH, port = 22, protocol = tcp] sendmail-whois [name = SSH, dest=FredySnake@outlook.com, sender = fail2ban @ localhost] logpath = / var / log / secure # นี่คือ บันทึกที่จะแยกวิเคราะห์ fail2ban
maxretry = 3 # IP ใด ๆ ที่มีความพยายามล้มเหลวสามครั้งขึ้นไปจะถูกบล็อก
bantime = 86400 # เวลาห้าม 24 ชั่วโมงแสดงเป็นวินาที

อย่าลืมว่าหากคุณแก้ไขพอร์ตที่ SSH รับฟังคุณต้องแก้ไขพารามิเตอร์พอร์ตด้วย

แอปพลิเคชันนี้ไม่เพียง แต่ใช้งานได้สำหรับการเข้าถึงโดยไม่ได้รับอนุญาตใน SSH เท่านั้น แต่ยังใช้กับ apache เพื่ออ่านบันทึก Asterisk เป็นต้น

การติดตั้งและการกำหนดค่า DenyHOSTS

การดำเนินการจะขึ้นอยู่กับการใช้ไฟล์ /etc/hosts.deny นั่นคือในการบล็อกที่อยู่ของโฮสต์ที่ "โจมตี" สร้างรายการโฮสต์ที่ถูกปฏิเสธ

การติดตั้งจากที่เก็บสามารถรับได้ด้วยคำสั่งต่อไปนี้:

ยำติดตั้ง denhosts 

ไฟล์คอนฟิกูเรชันอยู่ใน /etc/denyhosts.conf

ก่อนที่จะดำเนินการต่อเนื่องจากในฐานะมนุษย์เราสามารถทำผิดพลาดและทำ "Layer 8" ตามปกติเมื่อเข้าถึงบริการใด ๆ และปิดกั้นตัวเอง เพื่อหลีกเลี่ยงสิ่งนั้นเราแก้ไขไฟล์ /etc/hosts.allow และเพิ่ม IP ของเครื่องที่เราไม่ต้องการถูก จำกัด เนื่องจากการเข้าถึงล้มเหลว

แก้ไขไฟล์ปฏิเสธhosts.conf

เพื่อไม่ให้ไปไกลในการตั้งค่าในไฟล์นี้เราจะแก้ไขและยกเลิกการแสดงความคิดเห็นบางพารามิเตอร์เท่านั้น เหล่านี้คือ:

SYNC_SERVER = http://xmlrpc.denyhosts.net:9911
SYNC_INTERVAL = 1 ชม
SYNC_UPLOAD = ใช่
SYNC_DOWNLOAD = ใช่
SYNC_ดาวน์โหลด_THRESHOLD = 3
SYNC_DOWNLOAD_RESILIENCY = 5 ชม

ดังนั้นเราจะปล่อยให้การกำหนดค่าเป็นค่าเริ่มต้น แต่มีความปลอดภัยที่ดีเยี่ยมต่อการโจมตี SSH

นาโน /etc/hosts.allow

ตัวอย่าง:

sshd:127.0.0.1 
sshd:192.168.1.10
sshd: 192.168.0. *

หลังจากนี้เราจะเริ่มบริการใหม่:

/etc/init.d/denyhosts เริ่มต้นใหม่

ด้วยเหตุนี้เราจึงให้สิทธิ์ IP ช่วง IP และแน่นอนสำหรับอินเทอร์เฟซแบบย้อนกลับของเรา สิ่งที่ฉันไม่ได้ลอง - ดังนั้นฉันจึงไม่รู้ว่ามันใช้ได้ - คือการเพิ่ม DNS ลงในไฟล์นี้ นั่นคือด้วยบริการเช่น DynDNS ถ้าฉันทำฉันจะบอกคุณว่ามันเป็นอย่างไร

ด้วยตัวเลือกและการปรับเปลี่ยนบางอย่างเราจะตรวจสอบให้แน่ใจด้วยว่าหลังจากระยะเวลาที่เราระบุในการกำหนดค่า DenyHOSTS ที่อยู่ที่จัดเก็บไว้จะถูกล้างและจะได้รับการอัปเดตด้วยรายการอื่น ๆ ที่สร้างโดยผู้อื่นหากเราระบุว่าให้สิทธิ์ในการเข้าถึง เซิร์ฟเวอร์ของ DenyHOSTS

ในการล้างแอดเดรสที่เก็บไว้เป็นครั้งคราวตามที่กำหนดค่าไว้ daemon ต้องรันด้วยพารามิเตอร์ –purge:

/etc/init.d/denyhosts เริ่ม --purge

นอกจากนี้เราต้องรวมไว้ที่จุดเริ่มต้นของระบบ:

chkconfig ปฏิเสธโฮสต์บน

แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา