Khai Dân Trí
  • Home
  • Sức khỏe
    • All
    • Các bệnh

    Thay đổi lối sống đối với sự tiến triển chậm của MS

    Tâm lý trị liệu là gì và nó hoạt động như thế nào?

    Tất cả về liều lượng của Femara

    Tổng quan về co giật gelastic

    • Các bệnh
  • Công nghệ
    • Điện thoại & Máy tính
  • Bách khoa toàn thư
No Result
View All Result
  • Home
  • Sức khỏe
    • All
    • Các bệnh

    Thay đổi lối sống đối với sự tiến triển chậm của MS

    Tâm lý trị liệu là gì và nó hoạt động như thế nào?

    Tất cả về liều lượng của Femara

    Tổng quan về co giật gelastic

    • Các bệnh
  • Công nghệ
    • Điện thoại & Máy tính
  • Bách khoa toàn thư
No Result
View All Result
Khai Dân Trí
No Result
View All Result
Home Công nghệ Điện thoại & Máy tính

Cách sử dụng mật khẩu được mã hóa trong Bash Scripts

by Trọng Hiếu
18/07/2021
in Điện thoại & Máy tính
0

Một máy tính xách tay Linux kiểu Ubuntu.
fatmawati achmad zaenuri / Shutterstock.com

Nếu bạn buộc phải sử dụng tập lệnh Linux để kết nối với tài nguyên được bảo vệ bằng mật khẩu, bạn có thể cảm thấy không thoải mái khi đặt mật khẩu đó vào tập lệnh. OpenSSL giải quyết vấn đề đó cho bạn.

Mật khẩu và Tập lệnh

Đặt mật khẩu trong các tập lệnh shell không phải là một ý tưởng tuyệt vời. Trên thực tế, đó là một ý tưởng thực sự tồi. Nếu tập lệnh rơi vào tay kẻ xấu, mọi người đọc nó có thể thấy mật khẩu là gì. Nhưng nếu bạn buộc phải sử dụng script, bạn có thể làm gì khác?

Bạn có thể nhập mật khẩu theo cách thủ công khi quá trình đạt đến điểm đó, nhưng nếu tập lệnh sẽ chạy mà không được giám sát, điều đó sẽ không hoạt động. Rất may, có một giải pháp thay thế cho việc mã hóa cứng mật khẩu vào tập lệnh. Nói cách khác, nó sử dụng một mật khẩu khác để đạt được điều này, cùng với một số mã hóa mạnh.

Trong tình huống ví dụ của chúng tôi, chúng tôi cần tạo kết nối từ xa với máy tính Fedora Linux từ máy tính Ubuntu của chúng tôi. Chúng tôi sẽ sử dụng tập lệnh Bash shell để tạo kết nối SSH với máy tính Fedora. Tập lệnh phải chạy không giám sát và chúng tôi không muốn đặt mật khẩu cho tài khoản từ xa trong tập lệnh. Chúng tôi không thể sử dụng khóa SSH trong trường hợp này vì chúng tôi đang giả vờ rằng chúng tôi không có bất kỳ quyền kiểm soát hoặc quyền quản trị nào đối với máy tính Fedora.

Chúng tôi sẽ sử dụng bộ công cụ OpenSSL nổi tiếng để xử lý mã hóa và một tiện ích có tên sshpass để nhập mật khẩu vào lệnh SSH.

LIÊN QUAN: Cách tạo và cài đặt khóa SSH từ Linux Shell

Cài đặt OpenSSL và sshpass

Vì nhiều công cụ mã hóa và bảo mật khác sử dụng OpenSSL nên nó có thể đã được cài đặt trên máy tính của bạn. Tuy nhiên, nếu không, bạn chỉ mất một chút thời gian để cài đặt.

Trên Ubuntu, gõ lệnh này:

sudo apt get openssl

Để cài đặt sshpass, sử dụng lệnh này:

sudo apt install sshpass

Trên Fedora, bạn cần nhập:

sudo dnf install openssl

Lệnh cài đặt sshpass Là:

sudo dnf install sshpass

Trên Manjaro Linux, chúng ta có thể cài đặt OpenSSL với:

sudo pacman -Sy openssl

Cuối cùng, để cài đặt sshpass, sử dụng lệnh này:

sudo pacman -Sy sshpass

Mã hóa trên dòng lệnh

Trước khi chúng tôi sử dụng openssl lệnh bằng script, hãy làm quen với nó bằng cách sử dụng nó trên dòng lệnh. Giả sử rằng mật khẩu cho tài khoản trên máy tính từ xa là rusty!herring.pitshaft. Chúng tôi sẽ mã hóa mật khẩu đó bằng cách sử dụng openssl.

Chúng tôi cần cung cấp mật khẩu mã hóa khi chúng tôi thực hiện. Mật khẩu mã hóa được sử dụng trong quá trình mã hóa và giải mã. Có rất nhiều tham số và tùy chọn trong openssl chỉ huy. Chúng tôi sẽ xem xét từng người trong số họ trong giây lát.

echo 'rusty!herring.pitshaft' | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 -salt -pass pass:'pick.your.password'

Đang sử dụng echo để gửi mật khẩu tài khoản từ xa thông qua một đường ống và vào openssl chỉ huy.

Các openssl tham số là:

  • enc -aes-256-cbc: Loại mã hóa. Chúng tôi đang sử dụng mật mã khóa 256 bit Chuẩn mã hóa nâng cao với chuỗi khối mã hóa.
  • -md sha512: Loại thông báo (băm) thông báo. Chúng tôi đang sử dụng thuật toán mật mã SHA512.
  • -a: Điều này nói với openssl để áp dụng mã hóa base-64 sau giai đoạn mã hóa và trước giai đoạn giải mã.
  • -pbkdf2: Sử dụng Chức năng lấy lại khóa dựa trên mật khẩu 2 (PBKDF2) khiến một cuộc tấn công vũ lực khó thành công hơn trong việc đoán mật khẩu của bạn. PBKDF2 yêu cầu nhiều tính toán để thực hiện mã hóa. Kẻ tấn công sẽ cần phải sao chép tất cả các tính toán đó.
  • -iter 100000: Đặt số lượng tính toán mà PBKDF2 sẽ sử dụng.
  • -Muối: Việc sử dụng giá trị muối được áp dụng ngẫu nhiên làm cho đầu ra được mã hóa luôn khác nhau, ngay cả khi văn bản thuần túy giống nhau.
  • -pass pass: ‘pick.your.password’: Mật khẩu mà chúng tôi cần sử dụng để giải mã mật khẩu từ xa được mã hóa. Người thay thế pick.your.password với một mật khẩu mạnh mẽ do bạn chọn.

Phiên bản được mã hóa của rusty!herring.pitshaft mật khẩu được ghi vào cửa sổ đầu cuối.

Mật khẩu được mã hóa được ghi vào cửa sổ đầu cuối

Để giải mã điều này, chúng ta cần chuyển chuỗi mã hóa đó vào openssl với cùng các tham số mà chúng tôi đã sử dụng để mã hóa, nhưng thêm vào -d (giải mã) tùy chọn.

echo U2FsdGVkX19iiiRNhEsG+wm/uKjtZJwnYOpjzPhyrDKYZH5lVZrpIgo1S0goZU46 | openssl enc -aes-256-cbc -md sha512 -a -d -pbkdf2 -iter 100000 -salt -pass pass:'pick.your.password'

Quảng cáo

Chuỗi được giải mã và văn bản gốc của chúng tôi — mật khẩu cho tài khoản người dùng từ xa — được ghi vào cửa sổ đầu cuối.

Mật khẩu được giải mã được ghi vào cửa sổ đầu cuối

Điều đó chứng tỏ rằng chúng tôi có thể mã hóa mật khẩu tài khoản người dùng từ xa của mình một cách an toàn. Chúng tôi cũng có thể giải mã nó khi cần bằng mật khẩu mà chúng tôi đã cung cấp trong giai đoạn mã hóa.

Nhưng điều này có thực sự cải thiện tình hình của chúng ta? Nếu chúng ta cần mật khẩu mã hóa để giải mã mật khẩu tài khoản từ xa, chắc chắn mật khẩu giải mã sẽ cần phải có trong script? Vâng, có, nó có. Nhưng mật khẩu tài khoản người dùng từ xa được mã hóa sẽ được lưu trữ trong một tệp ẩn khác. Các quyền trên tệp sẽ ngăn không cho bất kỳ ai ngoài bạn — và người dùng gốc của hệ thống, rõ ràng — truy cập vào tệp.

Để gửi đầu ra từ lệnh mã hóa đến một tệp, chúng ta có thể sử dụng chuyển hướng. Tệp được gọi là “.secret_vault.txt.” Chúng tôi đã thay đổi mật khẩu mã hóa thành một thứ gì đó mạnh mẽ hơn.

echo 'rusty!herring.pitshaft' | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 -salt -pass pass:'secret#vault!password' > .secret_vault.txt

Không có gì hiển thị xảy ra, nhưng mật khẩu được mã hóa và gửi đến tệp “.secret_vault.txt”.

Chúng tôi có thể kiểm tra xem nó có hoạt động hay không bằng cách giải mã mật khẩu trong tệp ẩn. Lưu ý rằng chúng tôi đang sử dụng cat ở đây, không phải echo.

cat .secret_vault.txt | openssl enc -aes-256-cbc -md sha512 -a -d -pbkdf2 -iter 100000 -salt -pass pass:'secret#vault!password'

Quảng cáo

Mật khẩu được giải mã thành công từ dữ liệu trong tệp. Chúng tôi sẽ sử dụng chmod để thay đổi các quyền trên tệp này để không ai khác có thể truy cập vào nó.

chmod 600 .secret_vault.txt
ls -l .secret_vault.txt

Sử dụng mặt nạ quyền 600 sẽ xóa tất cả quyền truy cập của bất kỳ ai khác ngoài chủ sở hữu tệp. Bây giờ chúng ta có thể chuyển sang viết kịch bản của mình.

LIÊN QUAN: Cách sử dụng lệnh chmod trên Linux

Sử dụng OpenSSL trong Tập lệnh

Kịch bản của chúng tôi khá đơn giản:

#!/bin/bash

# name of the remote account
REMOTE_USER=geek

# password for the remote account
REMOTE_PASSWD=$(cat .secret_vault.txt | openssl enc -aes-256-cbc -md sha512 -a -d -pbkdf2 -iter 100000 -salt -pass pass:'secret#vault!password')

# remote computer
REMOTE_LINUX=fedora-34.local

# connect to the remote computer and put a timestamp in a file called script.log
sshpass -p $REMOTE_PASSWD ssh -T $REMOTE_USER@$REMOTE_LINUX << _remote_commands
echo $USER "-" $(date) >> /home/$REMOTE_USER/script.log
_remote_commands
  • Chúng tôi đặt một biến có tên là REMOTE_USER thành “geek.”
  • Sau đó, chúng tôi đặt một biến có tên là REMOTE_PASSWD thành giá trị của mật khẩu đã giải mã được lấy từ tệp “.secret_vault.txt”, sử dụng cùng một lệnh mà chúng tôi đã sử dụng một lúc trước.
  • Vị trí của máy tính từ xa được lưu trữ trong một biến có tên là REMOTE_LINUX.

Với thông tin đó, chúng tôi có thể sử dụng ssh lệnh kết nối với máy tính từ xa.

  • Các sshpass lệnh là lệnh đầu tiên trên đường kết nối. Chúng tôi sử dụng nó với -p (mật khẩu) tùy chọn. Điều này cho phép chúng tôi chỉ định mật khẩu sẽ được gửi đến ssh chỉ huy.
  • Chúng tôi sử dụng -T (vô hiệu hóa phân bổ đầu cuối giả) với ssh bởi vì chúng tôi không cần phải cấp phát TTY giả cho chúng tôi trên máy tính từ xa.
Cách sử dụng "Here Documents" trong Bash trên Linux

LIÊN QUANCách sử dụng “Here Documents” trong Bash trên Linux

Chúng tôi đang sử dụng một đoạn ngắn tài liệu đây để chuyển một lệnh đến máy tính từ xa. Mọi thứ giữa hai _remote_commands các chuỗi được gửi dưới dạng hướng dẫn đến phiên người dùng trên máy tính từ xa — trong trường hợp này, đó là một dòng lệnh Bash duy nhất.

Lệnh được gửi đến máy tính từ xa chỉ cần ghi tên tài khoản người dùng và dấu thời gian vào một tệp có tên “script.log”.

Sao chép và dán tập lệnh vào trình chỉnh sửa và lưu vào tệp có tên “go-remote.sh”. Hãy nhớ thay đổi các chi tiết để phản ánh địa chỉ của máy tính từ xa, tài khoản người dùng từ xa và mật khẩu tài khoản từ xa của riêng bạn.

Sử dụng chmod để làm cho tập lệnh có thể thực thi được.

chmod +x go-remote.sh

Quảng cáo

Tất cả những gì còn lại là để thử nó. Hãy bắt đầu kịch bản của chúng tôi.

./go-remote.sh

Bởi vì tập lệnh của chúng tôi là một mẫu tối giản cho một tập lệnh không cần giám sát, không có đầu ra cho thiết bị đầu cuối. Nhưng nếu chúng ta kiểm tra tệp “script.log” trên máy tính Fedora, chúng ta có thể thấy rằng các kết nối từ xa đã được thực hiện thành công và tệp “script.log” đã được cập nhật với dấu thời gian.

cat script.log

Mật khẩu của bạn là riêng tư

Mật khẩu tài khoản từ xa của bạn không được ghi trong tập lệnh.

Và mặc dù mật khẩu giải mã Là, trong script, không ai khác có thể truy cập vào tệp “.secret_vault.txt” của bạn để giải mã nó và truy xuất mật khẩu tài khoản từ xa.

Tags: bashCáchdungđượchóakhẩumàmấtScriptssựtrong
Trọng Hiếu

Trọng Hiếu

Xem thêm

Điện thoại & Máy tính

Tại sao Windows 11 lại tốt hơn cho PC chơi game hơn Windows 10

28/05/2022
Điện thoại & Máy tính

Hệ thống tệp liên hành tinh (IPFS) là gì và bạn sử dụng nó như thế nào?

28/05/2022
Điện thoại & Máy tính

YouTube TV sẽ sớm có chế độ Ảnh trong Ảnh trên iPhone

28/05/2022
Điện thoại & Máy tính

Cách hợp nhất hai cột trong Microsoft Excel

28/05/2022
Điện thoại & Máy tính

Google sẽ sớm phát hiện ra tiếng ngáy và ho của người dùng Android

28/05/2022
Điện thoại & Máy tính

Cách thay đổi ứng dụng và ngôn ngữ giọng nói trong Google Maps

28/05/2022
Điện thoại & Máy tính

“Chất liệu bạn” của Android 12 sắp xuất hiện trên 5 chiếc điện thoại này

28/05/2022
Điện thoại & Máy tính

Cách ngăn người dùng thay đổi cài đặt proxy trong Windows 11

28/05/2022
Điện thoại & Máy tính

Cách chia sẻ vị trí hiện tại của bạn trên WhatsApp cho Android

28/05/2022

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Bài viết mới

Thay đổi lối sống đối với sự tiến triển chậm của MS

28/05/2022

Tâm lý trị liệu là gì và nó hoạt động như thế nào?

28/05/2022

Tại sao Windows 11 lại tốt hơn cho PC chơi game hơn Windows 10

28/05/2022

Tất cả về liều lượng của Femara

28/05/2022
Khai Dân Trí

Website phổ biến kiến thức, tin tức và bình luận, nhằm nâng cao dân trí.

No Result
View All Result
  • Home
  • Sức khỏe
    • Các bệnh
  • Công nghệ
    • Điện thoại & Máy tính
  • Bách khoa toàn thư

© 2022 JNews - Premium WordPress news & magazine theme by Jegtheme.