วิธีที่ # 1 - ปิดใช้งานการเข้าสู่ระบบด้วยรหัสผ่าน
หากคุณไม่ต้องการอนุญาตให้ลงชื่อเข้าใช้ด้วยรหัสผ่านเพียงแค่ไม่อนุญาตให้ใช้ก็จะให้ผลตามที่คุณต้องการ เพียงเพิ่มบรรทัดนี้ไปที่/etc/ssh/sshd_config
:
PasswordAuthentication no
นอกจากนี้คุณสามารถ จำกัด การใช้รหัสผ่านให้กับผู้ใช้บางรายที่ใช้Match
โอเปอเรเตอร์ในsshd_config
:
Match User root,foo,bar
PasswordAuthentication no
Match User user1,user2
PasswordAuthentication yes
วิธีที่ # 2 - iptables
นอกจากนี้คุณยังสามารถใช้iptables
เพื่อติดตามความพยายามในการเข้าสู่ระบบที่ล้มเหลวและวางลงหลังจากเกณฑ์ที่กำหนด นี้คล้ายกับตัวอย่างของคุณจาก hostingfu แต่ง่ายต่อการเข้าใจ
$ sudo iptables -I INPUT -p tcp --dport <YOUR PORT HERE> -i eth0 -m state --state NEW -m recent --set
$ sudo iptables -I INPUT -p tcp --dport <YOUR PORT HERE> -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
หมายเหตุ:โดยทั่วไปบรรทัดแรกจะสร้างกฎที่ใช้กับแพ็คเก็ตที่ใช้สำหรับการพยายามเชื่อมต่อใหม่บนพอร์ต ssh เท่านั้น บรรทัดที่สองบอกว่าหากมีมากกว่า 4 ครั้งจาก IP ภายใน 60 วินาทีการรับส่งข้อมูลใด ๆ จาก IP นั้นควรจะเป็นแบล็กโฮลด์ โซลูชันนี้ไม่สนใจว่าจะพยายามใช้บัญชีผู้ใช้อื่นหรือไม่
วิธีที่ # 3 - ใช้ PAM
ฉันรู้ว่าคุณบอกว่าคุณไม่สามารถใช้ PAM ได้ แต่ถ้าคุณทำนี่เป็นวิธีที่คุณสามารถหน่วงเวลาการล็อกอินล้มเหลวได้ หากความตั้งใจของคุณคือการหน่วงเวลาการล็อกอินล้มเหลวของ ssh คุณสามารถใช้โมดูล PAM pam_faildelay
ได้ โดยทั่วไปโมดูล PAM นี้รวมอยู่ในชุดค่าผสมเริ่มต้น
ในระบบ Fedora 19 ของฉันมันเป็นส่วนหนึ่งของการติดตั้งเริ่มต้น
ตัวอย่าง
pam_faildelay
มองหาไฟล์ที่เกี่ยวข้องกับ
$ locate pam|grep -i delay
/usr/lib/security/pam_faildelay.so
/usr/lib64/security/pam_faildelay.so
/usr/share/doc/pam-1.1.6/html/sag-pam_faildelay.html
/usr/share/doc/pam-1.1.6/txts/README.pam_faildelay
/usr/share/man/man8/pam_faildelay.8.gz
ดูสิ่งที่พวกเขาให้ RPM โดย:
$ rpm -qf /usr/share/man/man8/pam_faildelay.8.gz
pam-1.1.6-12.fc19.x86_64
pam-1.1.6-12.fc19.i686
การใช้
หากต้องการสร้างความล่าช้าในความล้มเหลวคุณเพียงเพิ่มบรรทัดเช่นนี้ลงในsshd
ไฟล์กำหนดค่า pam ของคุณ อีกครั้งใน Fedora / CentOS / ระบบ RHEL /etc/pam.d/sshd
แฟ้มนี้อยู่ที่นี่:
วิธีสร้างความล่าช้า 10 วินาที:
auth optional pam_faildelay.so delay=10000000
ความล่าช้า 60 วินาที:
auth optional pam_faildelay.so delay=60000000
ตัวอย่าง
ด้วยความล่าช้า 20 วินาทีโดยใช้วิธีการด้านบนฉันเปลี่ยนsshd
ไฟล์PAM config ดังนี้:
#%PAM-1.0
auth required pam_sepermit.so
auth substack password-auth
auth include postlogin
auth optional pam_faildelay.so delay=20000000
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session optional pam_keyinit.so force revoke
session include password-auth
session include postlogin
ตอนนี้เมื่อฉันเข้าสู่ระบบ:
$ date
Tue Dec 17 09:16:30 EST 2013
$ ssh blah@localhost
blah@localhost's password:
Permission denied, please try again.
blah@localhost's password:
...Control + C....
$ date
Tue Dec 17 09:16:50 EST 2013
อ้างอิง