Tôi khuyên bạn chỉ nên sử dụng tài khoản root ở nơi đầu tiên. Nếu bạn thiết lập nó như thế này:
- Cấu hình của bạn
sshd_config
trên máy mục tiêu để PermitRootLogin without-password
.
- Sử dụng
ssh-keygen
trên máy kéo bản sao lưu để tạo khóa riêng SSH (chỉ khi bạn chưa có khóa SSH). Không đặt cụm mật khẩu. Google một hướng dẫn nếu bạn cần chi tiết cho việc này, sẽ có rất nhiều.
- Nối các nội dung của
/root/.ssh/id_rsa.pub
máy dự phòng vào máy đích /root/.ssh/authorized_keys
của bạn.
- Bây giờ máy sao lưu của bạn có quyền truy cập root vào máy mục tiêu của bạn mà không phải sử dụng xác thực mật khẩu.
sau đó thiết lập kết quả sẽ khá an toàn.
sudo
, đặc biệt kết hợp với NOPASSWD
như được đề xuất trong các nhận xét, không có lợi ích bảo mật so với việc chỉ sử dụng tài khoản root. Ví dụ đề xuất này:
thêm phần sau vào /etc/sudoers
tập tin của bạn :rsyncuser ALL= NOPASSWD:/usr/bin/rsync
về cơ bản cho rsyncuser
phép quyền root nào. Bạn hỏi:
@MartinvonWittich Dễ dàng có được một vỏ gốc đầy đủ vì được rsync
thực thi với sudo
? Đi bộ [m] e [thông qua] mà làm ơn.
Vâng, đơn giản. Với cấu hình được đề xuất, rsyncuser
giờ đây có thể chạy rsync
bằng root mà không cần hỏi mật khẩu. rsync
là một công cụ rất mạnh để thao tác các tệp, vì vậy bây giờ rsyncuser
có một công cụ rất mạnh để thao tác các tệp có quyền root. Tìm cách khai thác điều này chỉ mất vài phút (đã thử nghiệm trên Ubuntu 13.04, yêu cầu dash
, bash
không hoạt động):
martin@martin ~ % sudo rsync --perms --chmod u+s /bin/dash /bin/rootdash
martin@martin ~ % rootdash
# whoami
root
# touch /etc/evil
# tail -n1 /etc/shadow
dnsmasq:*:15942:0:99999:7:::
Như bạn có thể thấy, tôi đã tạo cho mình một vỏ gốc; whoami
xác định tài khoản của tôi là root, tôi có thể tạo tập tin /etc
và tôi có thể đọc từ đó /etc/shadow
. Khai thác của tôi là đặt bit setuid trên dash
nhị phân; nó khiến Linux luôn chạy nhị phân đó với sự cho phép của chủ sở hữu, trong trường hợp này là root.
Có một gốc thực sự không phải là [khuyến nghị] vì lý do tốt. - redanimalwar 15 giờ trước
Không, vụng về làm việc xung quanh tài khoản root trong các tình huống hoàn toàn phù hợp để sử dụng nó không phải là lý do chính đáng. Đây chỉ là một hình thức lập trình sùng bái hàng hóa khác - bạn không thực sự hiểu khái niệm đằng sau sudo vs root, bạn chỉ áp dụng một cách mù quáng niềm tin "root là xấu, sudo là tốt" bởi vì bạn đã đọc nó ở đâu đó.
Một mặt, có những tình huống sudo
chắc chắn là công cụ phù hợp cho công việc. Ví dụ: khi bạn tương tác làm việc trên máy tính để bàn đồ họa Linux, giả sử Ubuntu, thì việc sử dụng sudo
là ổn trong những trường hợp hiếm hoi mà đôi khi bạn cần quyền truy cập root. Ubuntu cố tình có một tài khoản root bị vô hiệu hóa và buộc bạn phải sử dụng sudo
theo mặc định để ngăn người dùng luôn luôn sử dụng tài khoản root để đăng nhập. Khi người dùng chỉ muốn sử dụng, ví dụ như trình duyệt web, thì đăng nhập bằng root sẽ là một điều nguy hiểm. và do đó không có tài khoản root theo mặc định sẽ ngăn những người ngu ngốc làm điều này.
Mặt khác, có những tình huống như của bạn, trong đó một tập lệnh tự động yêu cầu quyền root đối với một cái gì đó, ví dụ để tạo bản sao lưu. Bây giờ sử dụng sudo
để làm việc xung quanh tài khoản root không chỉ vô nghĩa, nó còn nguy hiểm: thoạt nhìn rsyncuser
trông giống như một tài khoản không có đặc quyền thông thường. Nhưng như tôi đã giải thích, sẽ rất dễ dàng để kẻ tấn công có được quyền truy cập root đầy đủ nếu anh ta đã có rsyncuser
quyền truy cập. Vì vậy, về cơ bản, bây giờ bạn có một tài khoản root bổ sung trông không giống tài khoản root nào cả, đây không phải là một điều tốt.
root
tài khoản ở nơi đầu tiên.sudo
, đặc biệt kết hợp vớiNOPASSWD
như được đề xuất trong các nhận xét, không thực sự cải thiện tính bảo mật của máy của bạn.