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?
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?
Câu trả lời:
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 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 SSHATTACK
chuỗ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
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.
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.
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:
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.
-A INPUT -p tcp -m tcp --dport 22 -m limit --limit 48/hour -j ACCEPT
.
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.