Welcome to Blog IT Knowleage Sharing!

Friday, August 21, 2015

10 mẫu lệnh Rsync trong Linux

Bài đọc liên quan.
+ Các mẫu lệnh SCP trên Linux

Rsynx command.

Như đã đăng ở bài trước về nhóm lệnh SCP trong các intro Linux, hôm nay tôi xin giới thiệu về một công cụ tương tự là Rsync cải thiện được những nhược điểm của SCP, giúp cho người quản trị Linux dễ dàng trong việc sao chép, đồng bộ tập tin giữa các máy chủ Linux trong mạng cục bộ cũng như qua Internet.

Một vài ưu điểm và tính năng của Rsync.

- Có tác dụng tích cự trong chép và đồng bộ hóa tập tin giữa các máy chủ Linux.
- Hỗ trợ sao chép tập tin qua những liên kết, thiết bị, trong cùng một máy, nhóm.
- Tốc độ có thể tối ưu hơn SCP vì sử dụng giao thức cập nhật từ xa( remote-update protocol) cho phép việc truyền dữ liệu giữa những tâp tin khác nhau. Thức nhất, đó là nó cho phép chép toàn bộ nội dung tập tin có trong thư mục hiện hành từ máy nguồn đến máy đích, và sau đó nó chỉ chép lại sự thay đổi của khối tập in và số bytes đến đích là xong.
- Rsync ít chiếm băng thông vì nó sử dụng phương pháp nén và giải nén trong quá trình gửi và nhận dữ liệu từ hai phía.

Cú pháp cơ bản của Rsync.    

# rsync options source destination
Một vài tham chiếu được dùng trong Rsync
  1. -v : verbose
  2. -r : copies data recursively (but don’t preserve timestamps and permission while transferring data
  3. -a : archive mode, archive mode allows copying files recursively and it also preserves symbolic links, file permissions, user & group ownerships and timestamps
  4. -z : compress file data
  5. -h : human-readable, output numbers in a human-readable format

Cài đặt rsync trong Linux.
Chúng ta có thể cài gói rsync theo dòng lệnh sau:


# yum install rsync (On Red Hat based systems)
# apt-get install rsync (On Debian based systems)
 
1. Sao chép hay đồng bộ hóa trong cùng một máy chủ.
Những lệnh sau sẽ cho phép đồng bộ (sync) một tập tin (file) trên cùng một máy từ thư mục này đến thư mục khác. Dưới đây là một ví dụ về chép tập tin backup.tar đến thư mục /tmp/backups.

root@tecmint]# rsync -zvh backup.tar /tmp/backups/

created directory /tmp/backups

backup.tar

sent 14.71M bytes  received 31 bytes  3.27M bytes/sec

total size is 16.18M  speedup is 1.10
 
Nhìn vào ví dụ trên, có thể thấy rằng ở thư mục hiện tại không tồn tại thư mục backups từ trước và rsync đã tự động tạo thêm thư mục trong khi chép dữ liệu.

Tiếp theo là chép từ thư mục này sang thu mục khác.
[root@tecmint]# rsync -avzh /root/rpmpkgs /tmp/backups/

sending incremental file list

rpmpkgs/

rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm

rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm

rpmpkgs/nagios-3.5.0.tar.gz

rpmpkgs/nagios-plugins-1.4.16.tar.gz

sent 4.99M bytes  received 92 bytes  3.33M bytes/sec

total size is 4.99M  speedup is 1.00

2. Chép tập tin và thư mục giữa các máy chủ Linux.

Dưới đây là đoạn lệnh chép dữ liệu đến một máy chủ từ xa (uploading).

[root@tecmint]$ rsync -avz rpmpkgs/ root@192.168.0.101:/home/

root@192.168.0.101's password:

sending incremental file list

./

httpd-2.2.3-82.el5.centos.i386.rpm

mod_ssl-2.2.3-82.el5.centos.i386.rpm

nagios-3.5.0.tar.gz

nagios-plugins-1.4.16.tar.gz

sent 4993369 bytes  received 91 bytes  399476.80 bytes/sec

total size is 4991313  speedup is 1.00

Tiếp theo là đoạn lệnh chép từ một máy khác (downloading).

[root@tecmint]# rsync -avzh root@192.168.0.100:/home/tarunika/rpmpkgs /tmp/myrpms

root@192.168.0.100's password:

receiving incremental file list

created directory /tmp/myrpms

rpmpkgs/

rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm

rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm

rpmpkgs/nagios-3.5.0.tar.gz

rpmpkgs/nagios-plugins-1.4.16.tar.gz

sent 91 bytes  received 4.99M bytes  322.16K bytes/sec

total size is 4.99M  speedup is 1.00
 
3. Rsync qua một phiên SSH
Lấy một tập tin về (downloading) với tham số '-e' để thực hiện truyền dữ liệu.

[root@tecmint]# rsync -avzhe ssh root@192.168.0.100:/root/install.log /tmp/

root@192.168.0.100's password:

receiving incremental file list

install.log

sent 30 bytes  received 8.12K bytes  1.48K bytes/sec

total size is 30.74K  speedup is 3.77

Chép một tập tin từ máy hiện tại đến máy từ xa với ssh

[root@tecmint]# rsync -avzhe ssh backup.tar root@192.168.0.100:/backups/

root@192.168.0.100's password:

sending incremental file list

backup.tar

sent 14.71M bytes  received 31 bytes  1.28M bytes/sec

total size is 16.18M  speedup is 1.10

4. Hiển thị quá trình truyền dữ liệu.Để hiện thị quá trình thực hiện truyền dữ liệu từ máy này đến máy khác, hãy thêm tham số '--progress' trong dòng lệnh.

[root@tecmint]# rsync -avzhe ssh --progress /home/rpmpkgs root@192.168.0.100:/root/rpmpkgs

root@192.168.0.100's password:

sending incremental file list

created directory /root/rpmpkgs

rpmpkgs/

rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm

           1.02M 100%        2.72MB/s        0:00:00 (xfer#1, to-check=3/5)

rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm

          99.04K 100%  241.19kB/s        0:00:00 (xfer#2, to-check=2/5)

rpmpkgs/nagios-3.5.0.tar.gz

           1.79M 100%        1.56MB/s        0:00:01 (xfer#3, to-check=1/5)

rpmpkgs/nagios-plugins-1.4.16.tar.gz

           2.09M 100%        1.47MB/s        0:00:01 (xfer#4, to-check=0/5)

sent 4.99M bytes  received 92 bytes  475.56K bytes/sec

total size is 4.99M  speedup is 1.00

5. Sử dụng tham số '-include' và '-exclude'  

Việc này cho phép chỉ định được loại tập tin và thư mục cần truyền tải cũng như loại trừ những tập tin không mong muốn sao chép hay đồng bộ. Đây là dòng lệnh mẫu.

[root@tecmint]# rsync -avze ssh --include 'R*' --exclude '*' root@192.168.0.101:/var/lib/rpm/ /root/rpm

root@192.168.0.101's password:

receiving incremental file list

created directory /root/rpm

./

Requirename

Requireversion

sent 67 bytes  received 167289 bytes  7438.04 bytes/sec

total size is 434176  speedup is 2.59
6. Sử dụng tham số '-delete'.

Nếu một tập tin không tồn tại ở nguồn, nhưng đã có sẵn ở đích thì cần phải xóa nó trước khi đồng bộ hóa. Sử dụng tham số '-delete' để xóa những tập tin không có trong nguồn chép. Nguồn và đích là đồng bộ với nhau tao thành một tập tin mới ở đích.

[root@tecmint]# touch test.txt
[root@tecmint]# rsync -avz --delete root@192.168.0.100:/var/lib/rpm/ .
Password:
receiving file list ... done
deleting test.txt
./
sent 26 bytes  received 390 bytes  48.94 bytes/sec
total size is 453
Đích có 1 tập tin mới là test.txt, khi đồng bộ với tham số 'delete' nó xóa bỏ tập tin test.txt.

7. Định kích cỡ gói tập tin trong chuyển dữ liệu.

Với tham số '-max size' thì có thể giới hạn những tập tin có trong định nghĩa được chép, chẳng hạn, kích cỡ định nghĩa là 200K, thì dòng lệnh chỉ chép những tập tin bằng hoặc nhỏ hơn 200k mà thôi.

[root@tecmint]# rsync -avzhe ssh --max-size='200k' /var/lib/rpm/ root@192.168.0.100:/root/tmprpm

root@192.168.0.100's password:

sending incremental file list

created directory /root/tmprpm

./

Conflictname

Group

Installtid

Name

Provideversion

Pubkeys

Requireversion

Sha1header

Sigmd5

Triggername

__db.001

sent 189.79K bytes  received 224 bytes  13.10K bytes/sec

total size is 38.08M  speedup is 200.43
8. Tự động xóa tập tin nguồn sau khi hoàn tất
 
Tham số '-remove-source-files' cho phép xóa tập tin sau khi đã hoàn tất việc chép tập tin điều này hữu ích trong việc backup máy chủ mà không muốn giữ lại dữ liệu ở máy chủ nguồn.

[root@tecmint]# rsync --remove-source-files -zvh backup.tar /tmp/backups/

backup.tar

sent 14.71M bytes  received 31 bytes  4.20M bytes/sec

total size is 16.18M  speedup is 1.10

[root@tecmint]# ll backup.tar

ls: backup.tar: No such file or directory

9. Thực hiện Dry Run với Rsync

Sử dụng tham số này không làm thay đổi nào mà nó chỉ thực hiện lệnh và hiển thị ra nhưng lệnh mong muốn mà mình sẽ làm như một kiểm tra, điều này hữu ích cho những người mới hoặc đối với những tập tin quan trong cũng có thể là thực hiện chép dữ liệu rồi xóa tập tin nguồn, giúp hạn chế tối đa rủi rõ trong khi thưc hiện rsync.

root@tecmint]# rsync --dry-run --remove-source-files -zvh backup.tar /tmp/backups/

backup.tar

sent 35 bytes  received 15 bytes  100.00 bytes/sec

total size is 16.18M  speedup is 323584.00 (DRY RUN)

10. Thiết lập băng thông và tập tin.

Việc truyền dữ liệu cần hạn chế băng thông để không gây ảnh hưởng đến nghẽn thì dùng tham số
'-bwlimit', điều này giúp hạn chế I/O trong băng thông
[root@tecmint]# rsync --bwlimit=100 -avzhe ssh  /var/lib/rpm/  root@192.168.0.100:/root/tmprpm/
root@192.168.0.100's password:
sending incremental file list
sent 324 bytes  received 12 bytes  61.09 bytes/sec
total size is 38.08M  speedup is 113347.05

Theo như mặc định thì rsync đồng bộ những khối thay đổi trong tập tin và số bytes mà thôi, nên nếu muốn đồng bộ toàn bộ toàn bộ tập tin thì dùng thêm tham số '-W' theo dòng lệnh.

[root@tecmint]# rsync -zvhW backup.tar /tmp/backups/backup.tar
backup.tar
sent 14.71M bytes  received 31 bytes  3.27M bytes/sec
total size is 16.18M  speedup is 1.10
Trên đây là nhưng dòng lệnh tiêu biểu thông dụng của Rsync tuy nhiên nếu cần tìm hiểu chi tiết hơn thì chỉ cần gõ lệnh rsync --help trong linux để hiển thị tất cả đối số trong lệnh rsync.

Nếu có gì cần đề xuất hay bình luận, mọi người vui long comment phía dưới!


Wednesday, August 19, 2015

Các mẫu lệnh SCP trên Linux

SCP - Viết tắt của Secure copy.

Scp là một công cụ dùng để copy hay chuyển dữ liệu giữa các máy chủ (hosts). Nó được xem như là một công cụ giống với chương trình ssh. Thực ra nó sử dụng một kết nối ssh để thực thi chạy ngầm trong việc chuyển dữ liệu. Scp được dùng để tham chiếu cho cả hai định nghĩa về giao thức (protocol) và lập trình (program) dòng lệnh thể hiện cách nó chép dữ liệu và cũng được ứng dụng như là một phần trong bộ công cụ OpenSSH.

Cài đặt SCP.

Scp được có sẵn khi cài đặt các phiên bản Linux nằm trong gói openssh. Trong Ubutu/Debian chẳng hạn, thì gói openssh-client cung cấp sẵn chương trình scp.


$ dpkg -L openssh-client | grep scp
/usr/bin/scp
/usr/share/man/man1/scp.1.gz
 
Trong gói OpenSSH đã cung cấp sẵn các công cụ như ssh, scp,sftp mà chúng ta không cần phải cài đặt điều gì thêm.


Sử dụng Scp. 
Cú pháp cơ bản :

$ scp source_file_path destination_file_path

Tùy thuộc vào từng máy chủ (host), đường dẫn cần phải đầy đủ tất cả địa chỉ host, số cổng kết nối, user và password. Vì thế nếu việc gửi dữ liệu từ máy hiện tại (local) đến máy từ xa (uploading) thì cấu trúc sẽ theo đường dẫn đến tập tin, chẳng hạn như sau:

$ scp ~/my_local_file.txt user@remote_host.com:/some/remote/directory

Khi muốn chép dữ liệu từ một máy từ xa về máy hiện tại (downloading), thì chỉ cần đảo ngược lại:

$ scp user@remote_host.com:/some/remote/directory ~/my_local_file.txt

# just download the file
$ scp user@192.168.1.3:/some/path/file.txt .

Việc này khá thông dụng trong scp, ngoài ra còn có nhiều lựa chọn khác nữa mà scp cung cấp và hỗ trợ, theo mặc định thì scp sẽ chép đè lên file hiện hành nếu trùng tên, do đó có thể sử dụng một công cụ tương tự khác để tránh việc làm này đó là rsync, Các tham chiếu có trong scp.

Verbose output.
Với tham số này (verbose: -v) sau dong lenh scp thì nó sẽ xuất ra những thông tin đang chạy ngầm khi scp đang thực thi việc chép dữ liệu. Việc này khá hữu ích khi xãy ra lỗi trong quá trình chép tập tin, hay việc chép dữ liệu bị thất bại giữa chừng, nó chỉ ra chính xác thời điểm mà ở đó nó bị lỗi.

$ scp -v ~/test.txt root@192.168.1.3:/root/help2356.txt
Executing: program /usr/bin/ssh host 192.168.1.3, user root, command scp -v -t /root/help2356.txt
OpenSSH_6.2p2 Ubuntu-6ubuntu0.1, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /home/enlightened/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 192.168.1.3 [192.168.1.3] port 22.
debug1: Connection established.
..... OUTPUT TRUNCATED
 
Chép dữ liệu với nhiều tập tin trong danh mục.
Với nhiều tập tin cần được chép thì chỉ cần thêm khoảng trắng giữa các tập tin trong dòng lệnh.

$ scp foo.txt bar.txt username@remotehost:/path/directory/
 
Để chép nhiều tập tin từ một máy từ xa đến thư mục hiện tại sử dụng dòng lệnh sau:
$ scp username@remotehost:/path/directory/\{foo.txt,bar.txt\} .

$ scp root@192.168.1.3:~/\{abc.log,cde.txt\} .
Chép toàn bộ thư mục (Recursively)
Để chép toàn bộ thư mục từ một máy đến một máy khác sử dụng -r kèm theo.

$ scp -v -r ~/Downloads root@192.168.1.3:/root/Downloads
 
Chép các tập tin (files) giữa 2 máy từ xa.
Scp cho phép chép các tập tin giữa 2 máy từ xa bất kỳ. 

$ scp user1@remotehost1:/some/remote/dir/foobar.txt user2@remotehost2:/some/remote/dir/
 
Tăng tốc việc truyền dữ liệu với nén tập tin.
Một hỗ trợ khá tuyệt vời để tăng tốc trong việc chuyển dữ liệu để giúp tiết kiệm thời gian, chỉ cần thêm tham số C (compression) vào dòng lệnh, tập tin sẽ được nén trong quá trình chuyển và được giải nén sau khi việc chép hoàn tất.

$ scp -vrC ~/Downloads root@192.168.1.3:/root/Downloads
 
Giới hạn băng thông sử dụng. 
Nếu không muốn scp lấy toàn bộ băng thông có sẵn thì sử dụng tham số -l (limit) để giới hạn gói tin chuyển đi, đơn vị được tính là Kbit/s.

$ scp -vrC -l 400 ~/Downloads root@192.168.1.3:/root/Downloads
 
Kết nối với cổng được định nghĩa trên máy từ xa (remote host).
Nếu máy từ xa được mở cổng ssh khác với cổng mặc định (port 22), thì có thể cho thêm tham số -P trong dòng lệnh.

$ scp -vC -P 2200 ~/test.txt root@192.168.1.3:/some/path/test.txt
 
Duy trì thuộc tính của tập tin.
Tham số '-p' (smallcase) cho phép duy trì các thuộc tính của tập tin như thời gian chỉnh sửa, số lần truy cập...

$ scp -C -p ~/test.txt root@192.168.1.3:/some/path/test.txt
 
Chế độ chạy ngầm.
Trong chế độ này, scp sẽ triệt để chặn cũng như ẩn hay khóa các cảnh báo cũng như  những thông điệp phân tích xuất hiện trong quá trình chuyển tập tin.

$ scp -vCq ~/test.txt root@192.168.1.3:/some/path/test.txt
 
Chỉ định thêm tập tin xác thực.
Khi sử dụng tham chiếu này để hỗ trợ bảo mật cho việc xác thực, thì cần định nghĩa sẵn một tập tin nhận dạng mà nó chứa khóa cá nhân (private key). Lựa chọn này được cho phép trực tiếp trong dòng lệnh ssh.

$ scp -vCq -i private_key.pem ~/test.txt root@192.168.1.3:/some/path/test.txt
 
 Sử dụng tập tin ssh-config
 Sử dụng tham chiếu -'F' để chỉ định một tập tin có sẵn cấu hình ssh.
$ scp -vC -F /home/user/my_ssh_config ~/test.txt root@192.168.1.3:/some/path/test.txt
 
Sử dụng mã hóa khác.
Mặc định thì scp đã mã hóa tập tin khi truyền dữ liệu, tuy nhiên có thể sử dụng một loại mã hóa nào đó khác với mặc định thì chỉ cần thêm tham chiếu như ví dụ.

$ scp -c blowfish -C ~/local_file.txt username@remotehost:/remote/path/file.txt
 
Tổng quát.
Mặc dù scp là rất hiệu dụng trong truyền dữ liệu an toàn, tuy nhiên nó còn thiếu chức năng đồng bộ hóa tập tin khi truyền lỗi hay trùng tên, tất cả chức năng của nó là sao chép từ nơi này đến nơi khác.

Một công cụ khác cũng mạnh mẽ không kém đố là Rsync, nó không chỉ có tất cả các chức năng của scp mà còn thêm chức năng đồng bộ hóa tập tin giữa 2 máy chủ. 




Tuesday, August 18, 2015

Password Cracker bẻ khóa mật khẩu 55 ký tự.

Phiên bản mới nhất của hashcat, oclHashcat-plus v0.15, được tung ra vào hồi cuối tuần qua. Người đứng đầu nhóm phát triển Jens Steube phát biểu rằng đây là kết quả kéo dài hơn 6 tháng làm việc, và đã chỉnh sửa tổng cộng 618.473 dòng mã nguồn.

Hashcat là một công cụ bẻ khóa hoàn toàn miễn phí. Nó là một vũ khí nhắm vào 2 mục đích rõ ràng: có thể dùng để kiểm tra độ an ninh của mật khẩu của công ty, và cũng có thể được dùng bởi các tội phạm mạng để bẻ khóa những mật khậu bị đánh cắp. Một trong những điểm yếu lớn nhất của nó trước đây là hoàn toàn bất lực để đảm đương xử lý những mật khẩu có độ dài quá 15 ký tự: đến bây giờ thì phiên bản mới nhất có thể xử lý những loại mật khẩu có độ dài lên đến 55 ký tự.

Điều này là một trong những chức năng được yêu cầu cao nhất từ trước đến nay. Steube nhấn mạnh. " Chúng tôi đã cố thêm chức năng này , điều này cũng khiến chúng tôi phải gở bỏ một vài tối ưu hóa, kết quả là làm giảm hiệu suất trong giải thuật chương trình". Vì thế phiên bản mới cũng đi kèm một nhược điểm - hiệu suất để đạt đươc "trung bình khoảng độ 15%".

Thực tế thì điều này khong đáng lo ngại cho người dùng nhiều lắm. Nó là một công cụ bẻ khóa off-line, có nghĩa là nó bẻ khoá hàng loạt mật khẩu gián tiếp. Về mặt quản trị và kiểm soát, những danh sách đó sẽ được lấy từ máy chủ công ty. Về phía tội phạm mạng thì một có thể dùng những cách thông dụng hai là tạo một chương trình để lấy mật khẩu trực tuyến, chúng đều từ những mật khẩu bị lấy cắp.

Robin Wood, một chuyên gia về lãnh vực hacker mũ trắng, giải thích về việc dùng công cụ hashcat vào mục đích tốt. " Một trong những ứng dụng chính mà chương trình đem lại cho người dùng là chỉ cho khách hàng thấy được chính sách cần thiết cho việc đưa ra chính sách mật mã phức tạp", Anh ấy cũng chỉ ra thông tin bảo mật là. " Nếu tôi có được toàn bộ mã hash từ window domain tôi sẽ bẻ khóa được nhiều mật mã mà tôi có thể làm,  sau đó phân tích chúng để tìm kiếm kiểu mẫu, độ dài, những từ được lập lại...". Wood là một nhà phát triển của Pipal, nơi sử dụng các nhà nghiên cứu về bảo mật để phân tích mật mã.

Một mũ đen khác sẽ sử dụng hashcat trong mục đích tương tự, hắn ta sẽ đánh cắp mật mã hay lấy chúng từ những cách thông dụng khác. hắn sẽ sử dụng hashcat trong một kiểu tương tự để lấy hàng loạt mật mã, nhưng sau đó hắn sẽ bẻ khóa mật mã để truy cập vào tài khoản người dùng - hoặc có thể bán các mật mã đã được bẻ khóa cho tội phạm mạng khác sử dụng chúng.

 Những gì mà phiên bản mới của hashcat dẫn chứng là kích cỡ là không còn quan trọng nữa - mà ký tự sử dụng trong mật mã mới là vấn đề. Mặc dù độ dài là vận quan trọng, nhưng sự kết hợp những cụm ký tự và pha trộn những ký tự đặc biệt, con số và dấu chấm vẫn quan trọng hơn nhiều. Ars technica minh họa vấn đề rằng: Yiannis Chrysanthou đã bẻ khóa cụm mật mã ‘Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn1’, một chuỗi ký tự xuất phát từ một câu chuyện của tiểu thuyết gia kinh dị giả tưởng HP Lovecraft." Nhưng bởi vì cụm từ này chứa trong một bài từ trang Wikipedia, điều này cho phép Chrysanthou dễ bẻ khóa cụm từ này trong vài phút". Ars cảnh báo.

Người dùng nên xem xét việc sử dụng mộ chương trình quản lý mật mã, chẳng hạn Keepass, để tạo một mật mã đủ mạnh mà ko bị tìm thấy trong từ điển mật mã. Và dĩ nhiên, chúng nên dùng một mật mã độc nhất cho mỗi mật mã khác nhau của tài khoản trực tuyến, điều này thậm chí khi bị đánh cắp bởi hacker và bẻ khóa bởi hashcat, thì ít nhất cũng chỉ một tài khoản quản lý bị tổn hại mà thôi.

 Theo www.infosecurity-magazine.com