ຕັນການໂຈມຕີຂອງ 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 ລະບົບການ ນຳ ໃຊ້ຫໍໄຕ.
ເບິ່ງຕື່ມ:
<
ການຕິດຕັ້ງ 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