Preventing thwart SSH attacks with DenyHosts

Posted In Security - By Tum. On Monday, March 14th, 2011 With 0 Comments

Restricting SSH Access Attempts Using DenyHosts

Restricting SSH Access Attempts Using DenyHosts

หลังจากที่เครื่อง server เข้าสู่ internet ไม่นานก็จะมีพวกมือดีต่างๆมาลอง login เข้าระบบด้วยโปรโตโคล ssh กันอย่างไม่ขาดสาย ซึ่งถ้าระบบเราไม่ได้มีการป้องกันไม่ให้ ssh ไม่อนุญาติให้ user root ทำการ Login ได้และ password ก็ยังแสนง่ายอีก ก็คงต้องเตรียมใจได้เลยว่าอีกไม่กี่วันต้องโดนใครสักคนเข้าสู่ระบบเราได้แน่ๆ เพราะผมเคยลองมาแล้ว ลองเซ็ตเล่นๆแล้วใช้ password ง่ายๆ ผ่านไปวันกว่าๆ ไปดูที่ log พบว่ามีใครบางคนเข้าสู่ระบบเราได้แล้ว

หลักการของพวกมือดีนี้โดยส่วนมากจะใช้วิธี brust force เป็นหลัก นั้นก็คือการเดาไปเรื่อยๆจนกว่าจะจอนั้นเอง แต่ใช่ว่าจะสักแต่ว่าเดาอย่างเดียว โดยมาก password จะเอามาจากคำศัพท์ต่างๆ และ user ก็พวกชื่อคนหรือพวกชื่อ user ในระบบพวกชื่อเช่น bin, cyrus, nagios, postgres เป็นต้น

เอาละครับมาเข้าเรื่องกันเลยดีกว่า ในบทความนี้ผมจะมาแนะนำการป้องกันการโจมตีการเหล่า hacker ที่ใช้วิธีการ brust force ทั้งหลายด้วยการติดตั้ง DenyHosts ซึ่งโปรแกรมนี้นี้จะทำหน้าที่ในการ block IP ของผู้ไม่ประสงค์ดีเหล่านี้ โดยการเข้าไปอ่าน log ไฟล์ของ sshd แล้วก็ตรวจสอบว่า IP ใดมีความพยายามที่จะ login เข้าสู่ระบบแต่ไม่สำเร็จตามจำนวนครั้งที่เรากำหนด ก็จะ block IP นั้นด้วย TCP Wrapper หรือ เพิ่มข้อมูลเข้าไปที่ /etc/hosts.deny นั้นเอง

วิธีการติดตั้งจะขอพูดถึงแต่ Red Hat และ Centos โดยวิธีการติดตั้งและตั้งค่ามีดังต่อไปนี้

  1. ติดตั้ง rpmforge repo ก่อนเพื่อที่จะสามารถใช้ yum ในการ Install ได้

    Red Hat Enterprise 5 64bit

    Red Hat Enterprise 5 32bit

    Red Hat Enterprise 6 64bit

    Red Hat Enterprise 6 32bit

  2. หลังจากติดตั้ง rpmforge ไปเรียบร้อยแล้ว ก็มาถึงขั้นตอนการติดตั้ง DenyHosts ใช้คำสั่ง

  3. เมื่อ Install denyhosts เสร็จเรียบร้อยก็สามารถใช้งานได้เลยโดยไม่ต้องแก้ไขอะไร แต่ถ้าต้องการให้ระบบส่ง report ไปเมื่อมีการ Block ip เพิ่มหรือมีการเข้าสู่ระบบที่น่าสงสัย ก็แก้ไขไฟล์ configure denyhosts.cfg ด้วยคำสั่ง

    แก้ไขค่า ADMIN_EMAIL ให้เป็น email ที่เราต้องการให้ส่ง report แต่ถ้าไม่ต้องการรายงานก็ให้เว้นว่างเอาไว้ได้เลย

    ตัวอย่างการตั้งค่าสำหรับ Red Hat Enterprise และ CentOS

  4. หลังจากแก้ไขค่า configure เสร็จแล้วให้ใช้คำสั่ง chkconfig เพื่อให้ service DenyHosts start ในตอนบูตเครื่อง

  5. Start service DenyHosts ด้วยคำสั่ง

  6. เมื่อ start service DenyHosts เสร็จแล้วให้ลองไปตรวจสอบดูที่ไฟล์ /etc/hosts.deny ดูครับ จะมีการ block sshd ใน IP ต่างๆที่ได้มีการพยายามลอง login เข้าสู่ระบบเราซึ่งการเริ่มใช้งานครั้งแรก DenyHosts จะเข้าไปอ่านไฟล์ /var/log/secure ทั้งหมดและไล่ block ย้อนหลังให้ด้วย

    ตัวอย่างการแจ้ง report ทางเมล์

    DenyHosts Mail Alert

Leave a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

*