เทคนิคการจับตายพวกชอบแอบล๊อกอินเข้า Centos/Linux Server

เทคนิคการจับตายพวกชอบแอบล๊อกอินเข้า Centos/Linux Server

DenyHosts 1 เทคนิคการจับตายพวกชอบแอบล๊อกอินเข้า CentOS/Linux Server เคยลองดูข้อมูลในไฟล์ /var/log/secure มั๊ยครับ ไฟล์นี้จะเก็บข้อมูลทุกอย่างถ้ามีความพยายามจะล๊อกอินเข้าเครื่อง CentOS ด้วย Secure Shell ทั้งล๊อกอินส าเร็จและไม่ส าเร็จ ลองดูตัวอย่างข้างล่างนี้ครับ Mar 17 14:55:46 supercall sshd[4727]: Failed password for root from 218.207.158.7 port 46665 ssh2 Mar 17 14:55:46 supercall sshd[4728]: Received disconnect from 218.207.158.7: 11: Bye Bye Mar 17 14:55:47 supercall sshd[4729]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=218.20 จะเห็นว่ามีคนพยายามที่จะล๊อกอินเข้ามาด้วย root มาจาก 218.207.158.7 ด้วย ssh2 ถ้าเราตั้งพาสเวอร์ด root ให้ง่ายต่อการเดาหล่ะก็ เสร็จเขาครับ เขาจะเข้ามาเป็น root และก็จะท าอะไรเครื่อง CentOS ของเราก็ได้ ก็ไม่จ าเป็นว่าเขาจะพยายามเข้ามาเป็น root นะครับ เขา อาจจะพยายามล๊อกอินเข้ามาด้วยยูสเซอร์อะไรก็ได้ วิธีป้องกันที่ผมชอบใช้มีอยู่ 2 วิธีครับ คือ ปิดไม่ให้ใช้ root ล๊อกอินเข้าทาง SSH (ใช้ยูสเซอร์อื่นแทน แล้วใช้ค าสั่ง su - root เมื่อต้องการเป็น root) และใช้โปรแกรม DenyHosts ล๊อกไอพีต้นทางไว้เลย ถ้าเข้ามาผิดเงื่อนไขก็จะเอาไอพีนั้นไปใส่ไว้ในไฟล์ /etc/hosts.deny ผลก็คือไอพี นั้นจะเข้ามาเครื่องเราไม่ได้อีก เราไม่ต้องท าเองครับโปรแกรม DenyHosts ท าให้ เว็บไซต์โปรแกรม DenyHosts http://denyhosts.sourceforge.net วิธีการติดตั้งและใช้งานโปรแกรม DenyHosts โปรแกรม DenyHosts ใช้ Python ด้วยนะครับ มีให้ดาวน์โหลดทั้งแบบ RPM และ Source Code ถ้าเลือกแบบ RPM ต้องเช็คว่าในเครื่องเรา ติดตั้ง Python เวอร์ชั่นอะไรแล้วเลือกดาวน์โหลดให้ตรง เช็คเวอร์ชั่น Python python -V 1. ดาวน์โหลด DenyHosts 2.6 ส าหรับ Python 2.3 http://downloads.sourceforge.net/project/denyhosts/denyhosts/2.6/DenyHosts-2.6-python2.3.noarch.rpm?use_mirror=nchc ส าหรับ Python 2.4 wget http://downloads.sourceforge.net/project/denyhosts/denyhosts/2.6/DenyHosts-2.6-python2.4.noarch.rpm?use_mirror=nchc ส าหรับ Python 2.5 wget http://downloads.sourceforge.net/project/denyhosts/denyhosts/2.6/DenyHosts-2.6-python2.5.rpm?use_mirror=nchc บทความโดย คุณหนุ่ย แห่งเว็บ www.voip4share.com DenyHosts 2 และนี่ส าหรับท่านที่จะสร้าง RPM เอง wget http://downloads.sourceforge.net/project/denyhosts/denyhosts/2.6/DenyHosts-2.6-1.src.rpm?use_mirror=nchc และถ้าต้องการจะคอมไพล์เอง wget http://downloads.sourceforge.net/project/denyhosts/denyhosts/2.6/DenyHosts-2.6.tar.gz?use_mirror=nchc 2. ติดตั้ง DenyHosts เครื่องผมเป็น Python 2.4 โค้ด: เลือกทั้งหมด rpm -ivh DenyHosts-2.6-python2.4.noarch.rpm ไฟล์และไดเร็คตอรี่ที่เกี่ยวข้อง ไฟล์ /usr/bin/denyhosts.py ไดเร็คตอรี่ /usr/share/denyhosts 3. สร้างไฟล์คอนฟิก โค้ด: เลือกทั้งหมด cd /ust/share/denyhosts cp denyhosts.cfg-dist denyhosts.cfg ไฟล์ denyhosts.cfg เป็นไฟล์คอนฟิกของ DenyHosts ครับ รายละเอียดทั้งหมดผมขอยกไว้ไปอยู่ตอนท้ายบทความ 4. ท าให้ DenyHosts ท างานในโหมด Daemon cp daemon-control-dist daemon-control แก้ไขบรรทัดต่อไปนี้ (ถ้าไฟล์เหล่านี้ไม่ได้อยู่ในต าแหน่งดีฟอลท์) ถ้าติดตั้งจาก RPM จะเป็นดีฟอลท์อยู่แล้วครับ จึงไม่ต้องแก้ไขอะไรในไฟล์นี้ DENYHOSTS_BIN = "/usr/bin/denyhosts.py" DENYHOSTS_LOCK = "/var/lock/subsys/denyhosts" DENYHOSTS_CFG = "/usr/share/denyhosts/denyhosts.cfg" PYTHON_BIN = "/usr/bin/env python" เปลี่ยน Onwer และ Permission chown root daemon-control chmod 700 daemon-control บทความโดย คุณหนุ่ย แห่งเว็บ www.voip4share.com DenyHosts 3 5. ทดสอบรัน DenyHosts แบบ Daemon ./daemon-control start ถ้ารันได้ส าเร็จ จะมีข้อความแบบนี้ starting DenyHosts: /usr/bin/env python /usr/bin/denyhosts.py --daemon --config=/usr/share/denyhosts/denyhosts.cfg โปรแกรมจะไปดูที่ไฟล์ /var/log/secure และจะเอารายชื่อ IP Address ที่พยายามจะล๊อกอินเข้า CentOS แต่ไม่ส าเร็จไปไว้ในไฟล์ /etc/hosts.deny และไฟล์ /usr/share/denyhosts/data/hosts-restricted และจะมีไดเร็คตอรี่ /usr/share/denyhosts/data ถูกสร้างขึ้นมา แสดงว่าเรารัน DenyHosts แบบ Daemon ได้ 6. ท าให้ DenyHosts รันทุกครั้งที่เปิดเครื่อง cd /etc/init.d ln -s /usr/share/denyhosts/daemon-control denyhosts chkconfig --level 35 denyhosts on มารู้จักกับไฟล์ต่างๆในไดเร็คตอรี่ /usr/share/denyhosts/data และหน้าที่ของมัน 1. ไฟล์ hosts เป็นรายชื่อ IP Address ที่พยายามล๊อกอินเข้ามาในวันที่และเวลาที่ระบุ ทั้งที่ล๊อกอินส าเร็จและไม่ส าเร็จ 66.18.176.160:4:Thu Mar 18 10:20:00 2010 67.52.158.237:265:Thu Mar 18 10:19:59 2010 2. ไฟล์ hosts-restricted เป็นรายชื่อ IP Address ที่ถูกน าไปใส่ไว้ในไฟล์ /etc/hosts.deny 3. ไฟล์ hosts-root เป็นรายชื่อ IP Address ที่พยายามจะล๊อกอินเข้ามาด้วย root ดังตัวอย่าง 110.164.66.222:0:Thu Mar 18 10:20:00 2010 112.143.13.139:0:Thu Mar 18 10:19:58 2010 124.127.117.105:13:Thu Mar 18 10:19:58 2010 183.89.134.100:1:Thu Mar 18 10:20:00 2010 4. ไฟล์ hosts-valid เป็นรายชื่อ IP Address ที่พยายามล๊อกอินเข้ามาด้วยยูสเซอร์ที่มีอยู่ในไฟล์ /etc/passwd รวมทั้งที่ล๊อกอินส าเร็จและไม่ส าเร็จ 202.173.222.125:0:Thu Mar 18 10:20:00 2010 บทความโดย คุณหนุ่ย แห่งเว็บ www.voip4share.com DenyHosts 4 203.130.33.50:0:Thu Mar 18 10:20:00 2010 203.179.88.218:0:Thu Mar 18 10:20:00 2010 218.207.158.7:31:Thu Mar 18 10:20:00 2010 5. ไฟล์ offset บันทึกการสตาร์ทของโปรแกรม sshd Mar 17 05:25:10 supercall sshd[2842]: Server listening on :: port 22.2068379 6. ไฟล์ suspicious-logins 7. ไฟล์ users-hosts เป็นรายชื่อยูสเซอร์ที่มีผู้พยายามสุ่มล๊อกอินเข้ามา พร้อมกับ IP Address เป็นยูสเซอร์ที่มีอยู่ในไฟล์ /etc/passwd ตัวอย่าง mailnull - 67.52.158.237:1:Thu Mar 18 10:19:59 2010 news - 61.19.255.53:1:Thu Mar 18 10:20:00 2010 news - 67.52.158.237:1:Thu Mar 18 10:19:59 2010 nfsnobody - 67.52.158.237:1:Thu Mar 18 10:19:59 2010 nobody - 67.52.158.237:1:Thu Mar 18 10:19:59 2010 operator - 67.52.158.237:1:Thu Mar 18 10:19:59 2010 root - 124.127.117.105:13:Thu Mar 18 10:19:58 2010 8. ไฟล์ users-invalid เป็นรายชื่อยูสเซอร์ที่มีผู้พยายามสุ่มล๊อกอินเข้ามา เป็นยูสเซอร์ที่ไม่มีอยู่ในระบบ คือไม่มีอยู่ในไฟล์ /etc/passwd ตัวอย่าง ion:2:Thu Mar 18 10:19:59 2010 iraf:2:Thu Mar 18 10:20:00 2010 irc:2:Thu Mar 18 10:19:59 2010 iresha:2:Thu Mar 18 10:20:00 2010 irina:2:Thu Mar 18 10:19:59 2010 9. ไฟล์ users-valid เป็นรายชื่อยูสเซอร์ที่มีผู้พยายามสุ่มล๊อกอินเข้ามา เป็นยูสเซอร์ที่มีอยู่ในไฟล์ /etc/passwd ตัวอย่าง adm:1:Thu Mar 18 10:19:59 2010 apache:2:Thu Mar 18 10:20:00 2010 bin:2:Thu Mar 18 10:20:00 2010 daemon:1:Thu Mar 18 10:19:59 2010 ftp:21:Thu Mar 18 10:20:00 2010 บทความโดย คุณหนุ่ย แห่งเว็บ www.voip4share.com DenyHosts 5 ตัวอย่างข้อมูลในไฟล์ /etc/hosts.deny ซึ่งถ้า CentOS พบว่า IP Address เหล่านี้พยายามจะใช้ SSH ล๊อกอินเข้ามาไม่ว่าจะด้วยยูสเซอร์อะไรก็ตาม มันจะ Reject ทันที และถ้าเรา เปลี่ยนจาก sshd เป็น ALL (ตั้งในไฟล์ denyhosts.cfg ได้) ก็จะเข้าไม่ได้ทุกเซอร์วิสบน CentOS sshd: 66.18.176.160 sshd: 67.52.158.237 sshd: 203.130.33.50 ไฟล์ allowed-hosts ไฟล์นี้ดีฟอลท์ไม่มีอยู่ใน DenyHosts นะครับ แต่เราสร้างขึ้นมาได้ ข้อมูลในไฟล์นี้จะเป็น IP Address หรือ Network Address ที่ DenyHosts จะไม่เอาไปไว้ในไฟล์ /etc/hosts.deny ซึ่งหมายความว่าจะล๊อกอินผิดๆยังไงก็ได้ กี่ครั้งก็ได้ vi /usr/share/denyhosts/data/allowed-hosts 192.168.0.* 127.0.0.1 58.59.60.1 ไฟล์ restricted-usernames ใส่ชื่อยูสเซอร์ที่ DenyHosts จะไม่ยอมให้ล๊อกอินเข้ามาในเครื่องเลย โดยเมื่อ DenyHosts พบว่ามีใครก็ตามที่พยายามล๊อกอินด้วยยูสเซอร์นี้ จะบล๊อก IP เลย vi /usr/share/denyhosts/data/restricted-usernames root mysql apache บทความโดย คุณหนุ่ย แห่งเว็บ www.voip4share.com DenyHosts 6 ไฟล์คอนฟิก denyhosts.cfg ############ THESE SETTINGS ARE REQUIRED ############ # # SECURE_LOG: the log file that contains sshd logging info if you are not sure, grep "sshd:" /var/log/* # # The file to process can be overridden with the --file command line argument # # Redhat or Fedora Core: SECURE_LOG = /var/log/secure # # Mandrake, FreeBSD or OpenBSD: #SECURE_LOG = /var/log/auth.log # # SuSE: #SECURE_LOG = /var/log/messages # # Mac OS X (v10.4 or greater - also refer to: http://www.denyhosts.net/faq.html#macos #SECURE_LOG = /private/var/log/asl.log # # Mac OS X (v10.3 or earlier): #SECURE_LOG=/private/var/log/system.log # # # HOSTS_DENY: the file which contains restricted host access information # # Most operating systems: HOSTS_DENY = /etc/hosts.deny # # Some BSD (FreeBSD) Unixes: #HOSTS_DENY = /etc/hosts.allow # # Another possibility (also see the next option): #HOSTS_DENY = /etc/hosts.evil บทความโดย คุณหนุ่ย แห่งเว็บ www.voip4share.com DenyHosts 7 # # PURGE_DENY: removed HOSTS_DENY entries that are older than this time when DenyHosts is invoked with the --purge flag # # format is: i[dhwmy] # Where 'i' is an integer (eg. 7) # 'm' = minutes # 'h' = hours # 'd' = days # 'w' = weeks # 'y' = years # # never purge: PURGE_DENY = # # purge entries older than 1 week #PURGE_DENY = 1w # # purge entries older than 5 days #PURGE_DENY = 5d # # PURGE_THRESHOLD: defines the maximum times a host will be purged. Once this value has been exceeded then this host will not be purged. # Setting this parameter to 0 (the default) disables this feature. # default: a denied host can be purged/re-added indefinitely #PURGE_THRESHOLD = 0 # # a denied host will be purged at most 2 times. #PURGE_THRESHOLD = 2 # # # BLOCK_SERVICE: the service name that should be blocked in HOSTS_DENY # # man 5 hosts_access for details บทความโดย คุณหนุ่ย แห่งเว็บ www.voip4share.com DenyHosts 8 # # eg. sshd: 127.0.0.1 # will block sshd logins from 127.0.0.1 # # To block all services for the offending host: BLOCK_SERVICE = ALL # To block only sshd: #BLOCK_SERVICE = sshd # To only record the offending host and nothing else (if using an auxilary file to list the hosts). Refer to: # http://denyhosts.sourceforge.net/faq.html#aux #BLOCK_SERVICE = # # # DENY_THRESHOLD_INVALID: block each host after the number of failed login attempts has exceeded this value. This value applies to invalid # user login attempts (eg. non-existent user accounts) # DENY_THRESHOLD_INVALID = 5 # # # DENY_THRESHOLD_VALID: block each host after the

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    19 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us