ຕັນການໂຈມຕີຂອງ Server SSH (Brute Force Attacks) ໂດຍໃຊ້ DenyHosts


DenyHosts ແມ່ນໂປແກຼມເປີດເຜີຍແລະໂປແກຼມປ້ອງກັນການປ້ອງກັນການເຂົ້າສູ່ລະບົບໂດຍບໍ່ເສຍຄ່າ ສຳ ລັບເຊີຟເວີ SSH ທີ່ພັດທະນາເປັນພາສາ Python ໂດຍ Phil Schwartz. ມັນມີຈຸດປະສົງໃນການກວດສອບແລະວິເຄາະບັນທຶກຂອງເຊີຟເວີ SSH ສຳ ລັບຄວາມພະຍາຍາມເຂົ້າສູ່ລະບົບທີ່ບໍ່ຖືກຕ້ອງ, ການໂຈມຕີວັດຈະນານຸກົມແລະການໂຈມຕີໂດຍບັງຄັບໃຊ້ໂດຍການບລັອກທີ່ຢູ່ IP ທີ່ມາໂດຍການເພີ່ມການເຂົ້າໄປໃນເອກະສານ /etc/hosts.deny ໃນ server ແລະປ້ອງກັນບໍ່ໃຫ້ທີ່ຢູ່ IP ທຸກຄວາມພະຍາຍາມເຂົ້າສູ່ລະບົບດັ່ງກ່າວ.

DenyHost ແມ່ນເຄື່ອງມືທີ່ ຈຳ ເປັນຫຼາຍ ສຳ ລັບທຸກລະບົບທີ່ໃຊ້ Linux, ພິເສດເມື່ອພວກເຮົາອະນຸຍາດໃຫ້ເຂົ້າລະບົບ ssh ເຂົ້າລະຫັດຜ່ານ. ໃນບົດຂຽນນີ້ພວກເຮົາຈະມາແນະ ນຳ ວິທີການຕິດຕັ້ງແລະ ກຳ ຫນົດ DenyHosts ໃນ RHEL 6.3/6.2/6.1/6/5.8, CentOS 6.3/6.2/6.1/6/5.8 ແລະ Fedora 17,16,15,14,13,12 ລະບົບການ ນຳ ໃຊ້ຫໍໄຕ.

ເບິ່ງຕື່ມ:

<

  • Fail2ban (ລະບົບປ້ອງກັນການບຸກລຸກ) ສຳ ລັບ SSH
  • ປິດການໃຊ້ງານຫຼືເຂົ້າໃຊ້ SSH Root ເຂົ້າສູ່ລະບົບ
  • Linux Malware Detect (LMD)
  • ການຕິດຕັ້ງ DenyHosts ໃນ RHEL, CentOS ແລະ Fedora

    ໂດຍເຄື່ອງມື DenyHosts ໃນຕອນຕົ້ນບໍ່ໄດ້ລວມຢູ່ໃນລະບົບ Linux, ພວກເຮົາ ຈຳ ເປັນຕ້ອງຕິດຕັ້ງມັນໂດຍໃຊ້ຫໍພັກ EPEL ຂອງພາກສ່ວນທີສາມ. ເມື່ອເພີ່ມບ່ອນເກັບມ້ຽນ, ຕິດຕັ້ງຊຸດໂດຍໃຊ້ ຄຳ ສັ່ງ YUM.

    # yum --enablerepo=epel install denyhosts
    OR
    # yum install denyhosts

    ການຕັ້ງຄ່າ DenyHosts ສຳ ລັບທີ່ຢູ່ IP ຂອງ Whitelist

    ເມື່ອ Denyhosts ຕິດຕັ້ງແລ້ວ, ຕ້ອງແນ່ໃຈວ່າຈະບອກທີ່ຢູ່ IP ຂອງທ່ານໃຫ້ຂາວ, ດັ່ງນັ້ນທ່ານຈະບໍ່ຖືກລັອກຈັກເທື່ອ. ເພື່ອເຮັດສິ່ງນີ້, ເປີດເອກະສານ /etc/hosts.allow.

    # vi /etc/hosts.allow

    ຂ້າງລຸ່ມນີ້ ຄຳ ອະທິບາຍ, ເພີ່ມທີ່ຢູ່ IP ແຕ່ລະອັນ ໜຶ່ງ ເທື່ອຕໍ່ແຖວແຍກຕ່າງຫາກ, ທີ່ທ່ານບໍ່ເຄີຍຕ້ອງການປິດກັ້ນ ຮູບແບບຄວນຈະເປັນດັ່ງຕໍ່ໄປນີ້.

    #
    # hosts.allow   This file contains access rules which are used to
    #               allow or deny connections to network services that
    #               either use the tcp_wrappers library or that have been
    #               started through a tcp_wrappers-enabled xinetd.
    #
    #               See 'man 5 hosts_options' and 'man 5 hosts_access'
    #               for information on rule syntax.
    #               See 'man tcpd' for information on tcp_wrappers
    #
    sshd: 172.16.25.125
    sshd: 172.16.25.126
    sshd: 172.16.25.127

    ການຕັ້ງຄ່າ DenyHosts ສຳ ລັບການແຈ້ງເຕືອນອີເມວ

    ແຟ້ມການຕັ້ງຄ່າຕົ້ນຕໍແມ່ນຕັ້ງຢູ່ໃຕ້ /etc/denyhosts.conf. ເອກະສານນີ້ແມ່ນໃຊ້ເພື່ອສົ່ງການແຈ້ງເຕືອນທາງອີເມວກ່ຽວກັບການເຂົ້າສູ່ລະບົບທີ່ ໜ້າ ສົງໄສແລະເຈົ້າພາບທີ່ ຈຳ ກັດ. ເປີດເອກະສານນີ້ໂດຍໃຊ້ບັນນາທິການ VI.

    # vi /etc/denyhosts.conf

    ຄົ້ນຫາ 'ADMIN_EMAIL' ແລະເພີ່ມທີ່ຢູ່ອີເມວຂອງທ່ານທີ່ນີ້ເພື່ອຮັບເອົາການແຈ້ງເຕືອນທາງອີເມວກ່ຽວກັບການເຂົ້າສູ່ລະບົບທີ່ ໜ້າ ສົງໄສ (ສຳ ລັບການແຈ້ງເຕືອນທາງອີເມວຫຼາຍໆຄັ້ງໃຊ້ comma ແຍກ). ກະລຸນາເບິ່ງທີ່ເອກະສານການຕັ້ງຄ່າຂອງເຊີບເວີ CentOS 6.3 ຂອງຂ້ອຍ. ຕົວແປແຕ່ລະຢ່າງແມ່ນຖືກບັນທຶກໄວ້ເປັນຢ່າງດີດັ່ງນັ້ນການຕັ້ງຄ່າມັນຕາມຄວາມມັກຂອງທ່ານ.

    ############ DENYHOSTS REQUIRED SETTINGS ############
    SECURE_LOG = /var/log/secure
    HOSTS_DENY = /etc/hosts.deny
    BLOCK_SERVICE  = sshd
    DENY_THRESHOLD_INVALID = 5
    DENY_THRESHOLD_VALID = 10
    DENY_THRESHOLD_ROOT = 1
    DENY_THRESHOLD_RESTRICTED = 1
    WORK_DIR = /var/lib/denyhosts
    SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
    HOSTNAME_LOOKUP=YES
    LOCK_FILE = /var/lock/subsys/denyhosts
    
    ############ DENYHOSTS OPTIONAL SETTINGS ############
    ADMIN_EMAIL = [email 
    SMTP_HOST = localhost
    SMTP_PORT = 25
    SMTP_FROM = DenyHosts <[email >
    SMTP_SUBJECT = DenyHosts Daily Report
    
    ############ DENYHOSTS OPTIONAL SETTINGS ############
    DAEMON_LOG = /var/log/denyhosts
    DAEMON_SLEEP = 30s
    DAEMON_PURGE = 1h

    ເລີ່ມການບໍລິການ DenyHosts

    ເມື່ອທ່ານໄດ້ເຮັດກັບການຕັ້ງຄ່າຂອງທ່ານແລ້ວ, ໃຫ້ບໍລິການຂອງ Denhosts ຄືນ ໃໝ່ ສຳ ລັບການປ່ຽນແປງ ໃໝ່. ພວກເຮົາຍັງເພີ່ມບໍລິການຂອງ Denhosts ເຂົ້າໃນການເລີ່ມຕົ້ນລະບົບ.

    # chkconfig denyhosts on
    # service denyhosts start

    ເບິ່ງຂໍ້ມູນບັນທຶກ DenyHosts

    ເພື່ອເບິ່ງຂໍ້ມູນບັນທຶກຂອງ Denhosts ສຳ ລັບ ຈຳ ນວນຜູ້ໂຈມຕີແລະແຮກເກີຖືກພະຍາຍາມທີ່ຈະເຂົ້າເຖິງເຄື່ອງແມ່ຂ່າຍຂອງທ່ານ. ໃຊ້ ຄຳ ສັ່ງຕໍ່ໄປນີ້ເພື່ອເບິ່ງບັນທຶກເວລາຈິງ.

    # tail -f /var/log/secure
    Nov 28 15:01:43 tecmint sshd[25474]: Accepted password for root from 172.16.25.125 port 4339 ssh2
    Nov 28 15:01:43 tecmint sshd[25474]: pam_unix(sshd:session): session opened for user root by (uid=0)
    Nov 28 16:44:09 tecmint sshd[25474]: pam_unix(sshd:session): session closed for user root
    Nov 29 11:08:56 tecmint sshd[31669]: Accepted password for root from 172.16.25.125 port 2957 ssh2
    Nov 29 11:08:56 tecmint sshd[31669]: pam_unix(sshd:session): session opened for user root by (uid=0)
    Nov 29 11:12:00 tecmint atd[3417]: pam_unix(atd:session): session opened for user root by (uid=0)
    Nov 29 11:12:00 tecmint atd[3417]: pam_unix(atd:session): session closed for user root
    Nov 29 11:26:42 tecmint sshd[31669]: pam_unix(sshd:session): session closed for user root
    Nov 29 12:54:17 tecmint sshd[7480]: Accepted password for root from 172.16.25.125 port 1787 ssh2

    ເອົາທີ່ຢູ່ IP ຫ້າມຈາກ DenyHosts

    ຖ້າທ່ານເຄີຍປິດກັ້ນໂດຍບັງເອີນແລະຕ້ອງການລຶບທີ່ຢູ່ IP ທີ່ຖືກຫ້າມນັ້ນອອກຈາກເວັບປະຕິເສດ. ທ່ານ ຈຳ ເປັນຕ້ອງຢຸດການບໍລິການ.

    # /etc/init.d/denyhosts stop

    ເພື່ອ ກຳ ຈັດຫຼືລຶບທີ່ຢູ່ IP ທີ່ຖືກຫ້າມທັງ ໝົດ. ທ່ານຈໍາເປັນຕ້ອງແກ້ໄຂເອກະສານຕໍ່ໄປນີ້ແລະເອົາທີ່ຢູ່ IP ອອກ.

    # vi /etc/hosts.deny
    # vi /var/lib/denyhosts/hosts
    # vi /var/lib/denyhosts/hosts-restricted
    # vi /var/lib/denyhosts/hosts-root
    # vi /var/lib/denyhosts/hosts-valid
    # vi /var/lib/denyhosts/users-hosts

    ຫຼັງຈາກຖອດ IP Address ທີ່ຖືກຫ້າມ, ໃຫ້ບໍລິການ ໃໝ່ ອີກຄັ້ງ.

    # /etc/init.d/denyhosts start

    ທີ່ຢູ່ IP ທີ່ບໍ່ພໍໃຈໄດ້ເພີ່ມເຂົ້າໄປໃນແຟ້ມທັງ ໝົດ ທີ່ຢູ່ພາຍໃຕ້ໄດເລກະທໍລີ/var/lib/denhosts, ດັ່ງນັ້ນມັນຈຶ່ງມີຄວາມຫຍຸ້ງຍາກຫຼາຍທີ່ຈະ ກຳ ນົດວ່າໄຟລ໌ໃດທີ່ບັນຈຸ IP address ທີ່ກະ ທຳ ຜິດ. ຫນຶ່ງໃນວິທີທີ່ດີທີ່ສຸດໃນການຊອກຫາທີ່ຢູ່ IP ໂດຍໃຊ້ ຄຳ ສັ່ງ grep. ຕົວຢ່າງເພື່ອຊອກຫາທີ່ຢູ່ IP 172.16.25.125, ເຮັດ.

    cd /var/lib/denyhosts
    grep 172.16.25.125 *

    Whitelist IP Address ທີ່ຢູ່ຖາວອນໃນ DenyHosts

    ຖ້າທ່ານມີລາຍຊື່ IP address ຄົງທີ່ທີ່ທ່ານຕ້ອງການ whitelist ຖາວອນ. ເປີດແຟ້ມເອກະສານ/var/lib/denhosts/allow-hosts. ສິ່ງໃດກໍ່ຕາມທີ່ຢູ່ IP ລວມຢູ່ໃນເອກະສານນີ້ຈະບໍ່ຖືກຫ້າມໂດຍຄ່າເລີ່ມຕົ້ນ (ພິຈາລະນາວ່ານີ້ແມ່ນນັກຂຽນສຽງ).

    # vi /var/lib/denyhosts/allowed-hosts

    ແລະເພີ່ມທີ່ຢູ່ IP ຂອງແຕ່ລະຄົນໃນສາຍແຍກຕ່າງຫາກ. ບັນທຶກແລະປິດແຟ້ມ.

    # We mustn't block localhost
    127.0.0.1
    172.16.25.125
    172.16.25.126
    172.16.25.127