Trên các hệ thống linux hiện đại, lý do là pam_unix.so áp đặt độ trễ như vậy. Như đã đưa tin, điều này có thể được cấu hình xuống để hai giây bằng cách thay đổi FAIL_DELAY
trong /etc/login.defs
. Nếu bạn muốn giảm độ trễ hơn nữa, bạn phải cung cấp cho pam_unix.so tùy chọn "gật đầu". Ví dụ: trên hệ thống của tôi, nếu bạn theo dõi bao gồm bắt đầu từ /etc/pam.d/sudo
, bạn thấy bạn phải chỉnh sửa dòng sau /etc/pam.d/system-auth
:
auth required pam_unix.so try_first_pass nullok
và thay đổi nó thành này:
auth required pam_unix.so try_first_pass nullok nodelay
Thật không may, cách distro linux (arch) của tôi cấu hình mọi thứ, cùng một system-auth
tệp được bao gồm bởi system-remote-login
, được sử dụng bởi sshd.
Mặc dù an toàn để loại bỏ độ trễ trên sudo, vì nó được ghi lại, chỉ được sử dụng bởi người dùng cục bộ và có thể bỏ qua bởi những kẻ tấn công cục bộ, nhưng có lẽ bạn không muốn loại bỏ sự chậm trễ này cho đăng nhập từ xa. Tất nhiên bạn có thể sửa nó bằng cách viết một sudo tùy chỉnh không bao gồm các tệp auth hệ thống được chia sẻ.
Cá nhân, tôi nghĩ rằng sự chậm trễ trên sudo (và bỏ qua SIGINT) là một sai lầm lớn. Điều đó có nghĩa là người dùng biết họ nhập sai mật khẩu không thể giết quá trình và bị thất vọng. Tất nhiên, bạn vẫn có thể dừng sudo bằng Ctrl-Z, vì sudo không bắt được SIGTSTP và sau khi dừng, bạn có thể giết nó bằng kill -9 (SIGKILL). Nó chỉ gây phiền nhiễu để làm. Vì vậy, điều đó có nghĩa là một cuộc tấn công tự động có thể bắn sudos vào các thiết bị đầu cuối giả với tốc độ siêu cao. Nhưng sự chậm trễ làm nản lòng người dùng hợp pháp và khuyến khích họ tạm ngưng vỏ gốc thay vì thoát khỏi chúng để tránh phải sudo lại.