SSH / SSHD - Làm cách nào để đặt các lần thử đăng nhập tối đa?


17

Cách dễ nhất để thiết lập các lần thử đăng nhập tối đa trong môi trường LAMP (sshd được cài đặt qua yum) là gì? Có một gói hoặc quy tắc tường lửa đơn giản?



@Hyppy Cảm ơn, tôi đã thử tìm kiếm nhưng thật không may, có rất nhiều câu hỏi / chủ đề được đặt tên kém.
John Himmelman

Câu trả lời:


11

Tôi sử dụng Fail2ban ; Tôi đã sử dụng Denyhost trước đây và nó cũng hoạt động khá tốt. Tôi thích Fail2ban ngay bây giờ vì nó có thể cấu hình nhiều hơn và có thể xử lý giám sát nhiều dịch vụ khác nhau - ví dụ: sshd của bạn và trang đăng nhập ứng dụng web của bạn đồng thời (miễn là bạn đăng nhập thất bại).

Một phương pháp khác bạn có thể xem xét là thực hiện quy tắc GIỚI HẠN iptables; Rất tiếc, tôi không thể giúp bạn điều này, trừ khi bạn muốn cài đặt Shorewall , và sau đó tôi chỉ đơn giản là hướng bạn đến tài liệu tuyệt vời trên trang web đó để biết cách định cấu hình quy tắc LIMIT, tốt, hạn chế khả năng của một người nào đó. - buộc máy chủ của bạn.


Tôi nên thêm rằng Fail2ban có sẵn trong kho của nhiều distro, vì vậy việc cài đặt nó rất đơn giản; Tôi chưa từng thấy Denyhost, nhưng điều đó không có nghĩa là nó không có trong một số, cũng không phải là nó đã được thêm vào kể từ lần cuối tôi kiểm tra.
Kromey

Tôi đã phải đối mặt với vấn đề fail2ban của v0.8.14 không hoạt động chính xác với lệnh iptables-Multiport. Và đây là sự cố đã biết với tiện ích fail2ban được giải quyết trong các phiên bản mới ... Dưới đây là mô tả: github.com/fail2ban/fail2ban/issues/798 Vì vậy, tôi chỉ tin vào các cơ chế bảo mật được phát triển thành phần mềm máy chủ, cũng không phải tiện ích của bên thứ 3 ...
George Gaál

44

Tôi không muốn sử dụng bất kỳ công cụ của bên thứ ba. Do đó tôi đã sử dụng kết hợp cấu hình ssh và cài đặt tường lửa. Với giải pháp sau đây, kẻ tấn công được phép tạo chính xác 3 lần đăng nhập lỗi trong 2 phút, nếu không anh ta sẽ bị chặn trong 120 giây.

1) Thêm dòng sau vào /etc/ssh/sshd_config

MaxAuthTries 1

Điều này sẽ chỉ cho phép 1 lần đăng nhập cho mỗi kết nối. Khởi động lại máy chủ ssh.

2) Thêm các quy tắc tường lửa sau

Tạo một chuỗi mới

iptables -N SSHATTACK
iptables -A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7
iptables -A SSHATTACK -j DROP

Chặn mỗi địa chỉ IP trong 120 giây, thiết lập hơn ba kết nối trong vòng 120 giây. Trong trường hợp thử kết nối thứ tư, yêu cầu được ủy quyền cho SSHATTACKchuỗi, chịu trách nhiệm ghi nhật ký tấn công ssh có thể và cuối cùng bỏ yêu cầu.

iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --set
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --update --seconds 120 --hitcount 4 -j SSHATTACK

3) Xem các mục nhật ký của các cuộc tấn công ssh có thể có trong /var/log/syslog

Dec 27 18:01:58 ubuntu kernel: [  510.007570] Possible SSH attack! IN=eth0 OUT= MAC=01:2c:18:47:43:2d:10:c0:31:4d:11:ac:f8:01 SRC=192.168.203.129 DST=192.168.203.128 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=30948 DF PROTO=TCP SPT=53272 DPT=1785 WINDOW=14600 RES=0x00 SYN URGP=0

2
Tuyệt vời! Nhưng tôi có một vấn đề, một số anh chàng / bot ở Pháp đã không cấu hình chính xác các công cụ hacker của anh ta, vì vậy anh ta vẫn đăng nhập, mặc dù lưu lượng truy cập của anh ta bị giảm. Kết quả, nhật ký của tôi chứa đầy dữ liệu mỗi giây từ anh chàng này. Có cách nào khác không?
Smarties89

2
Đối với những người ít kinh nghiệm như tôi: các dòng iptables được nhập vào dấu nhắc bash, không được nhập vào một tệp ở đâu đó.
Andrew Swift

4

Không có gói cụ thể nào được liên kết với SSH để thiết lập tính năng này. Tuy nhiên, bạn có thể cài đặt CSF là ConfigServer & Firewall.

CSF

Hai thay đổi cấu hình mà tôi đề xuất sẽ được thực hiện trong tệp: / etc / ssh / sshd_config

Giới hạn số lượng kết nối không được xác thực tối đa mà máy chủ ssh sẽ xử lý cùng một lúc. Cái này càng nhỏ thì càng khó cho các kiddies script thực hiện các nỗ lực bẻ khóa song song, phối hợp với nhiều kết nối. chỉnh sửa sshd_config và thay đổi MaxStartups từ mặc định của "10" thành "3:50:10". Các giá trị được phân tách bằng dấu hai chấm báo cho máy chủ ssh, "cho phép 3 người dùng thử đăng nhập cùng một lúc và giảm ngẫu nhiên và ngày càng giảm các nỗ lực kết nối giữa 3 và tối đa là 10". Lưu ý: điều này nên được tăng lên trên các máy chủ với số lượng đáng kể người dùng ssh hợp lệ đăng nhập.

  • Mặc định : MaxStartups 10
  • Tối đa 3:50:10

Giảm lượng thời gian tối đa được phép đăng nhập thành công trước khi ngắt kết nối. Mặc định là 2 phút là quá nhiều thời gian để giữ mở một nỗ lực kết nối không được xác thực (xem ở trên); 30 giây là quá đủ thời gian để đăng nhập:

  • Mặc định : Đăng nhậpGraceTime 2m
  • Đăng nhậpGraceTime 30

3

Tôi sử dụng các quy tắc IPTables này cho việc này:

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 4 --rttl  --name SSH -j DROP

Điều đó sẽ chỉ cho phép 4 gói TCP / SYN đến cổng 22 từ một địa chỉ IP trong 5 phút. Nếu nó cố gắng nhiều hơn, cánh cửa sẽ đóng lại cho đến khi hết 5 phút.


Những gì cần chỉnh sửa?
timkofu

Khá giống như : -A INPUT -p tcp -m tcp --dport 22 -m limit --limit 48/hour -j ACCEPT.
Alix Axel

Tôi đã thực hiện hai lệnh iptables này trong Debian Jessie, nhưng vẫn có thể thấy đăng nhập SSH cố gắng mỗi 2 giây từ cùng một địa chỉ IP. Có ý kiến ​​gì không?
Alexey Ozerov

1

có một tùy chọn mà bạn có thể đặt vào tệp sshd_config cho máy chủ:

 MaxAuthTries
         Specifies the maximum number of authentication attempts permitted per
         connection.  Once the number of failures reaches half this value, additional 
         failures are logged.  The default is 6.

Hữu ích (đặc biệt là khi kết hợp với các đề xuất khác đã được thực hiện), nhưng không thực sự tự giải quyết vấn đề vì nó không quan trọng đối với ai đó chỉ tiếp tục kết nối lại.
Kromey
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.