MỤC LỤC
SSH-2 nổi bật với các thuật toán mới, khiến IETF tìm thấy một nhóm làm việc nhằm chuẩn hóa giao thức. Nhóm có biệt danh là SECSH, vì Giâyure Shell và nó đã xuất bản Dự thảo Internet đầu tiên cho SSH-2 vào năm 1997. Phần mềm cho SSH-2 được phát hành vào năm 1998, nhưng nó đã ngay lập tức được áp dụng một cách phổ biến vì cấp phép hạn chế hơn.
Điều này an toàn hơn, sử dụng mã xác thực tin nhắn để kiểm tra tính toàn vẹn và trao đổi khóa Diffie-Hellman để xác thực. OpenSSH là phiên bản miễn phớ của giao thức đú là dựa trờn những sửa đổi mà Bjorn Grửnvall đó thực hiện cho SSH 1.1.12. Các nhà phát triển đã quay lại phiên bản cũ hơn và thay đổi nó rất nhiều, vì đây là phiên bản cuối cùng của SSH hoàn toàn là nguồn mở.
OpenSSH hiện là tùy chọn được sử dụng rộng rãi nhất và nó đã được triển khai trong một loạt các hệ điều hành, như Windows, macOS, Linux, Solaris và các hệ thống khác.
Sau khi hoàn tất việc thiết lập phiên làm việc bảo mật (trao đổi khoá, định danh), quá trình trao đổi dữ liệu diễn ra thông qua một bước trung gian đó là mã hoá/giải mã. Điều đó có nghĩa là dữ liệu gửi/nhận trên đường truyền đều được mã hoá và giải mã theo cơ chế đã thoả thuận trước giữa máy chủ và máy khách. Khi cơ chế mã hoá được lựa chọn, máy chủ và máy khách trao đổi khoá mã hoá cho nhau.
Kẻ tấn công khó có thể nghe trộm thông tin trao đổi trên đường truyền vì không biết được khoá mã hoá. Mỗi định danh và truy nhập của người sử dụng có thể được cung cấp theo rất nhiều cách khác nhau. Chẳng hạn, kiểu chứng thực rhosts có thể được sử dụng, nhưng không phải là mặc định; nó đơn giản chỉ kiểm tra định danh của máy khách được liệt kê trong file rhost (theo DNS và địa chỉ IP).
Việc chứng thực mật khẩu là một cách rất thông dụng để định danh người sử dụng, nhưng ngoài ra cũng có các cách khác: chứng thực RSA, sử dụng ssh-keygen và ssh-agent để chứng thực các cặp khoá.
Hiện nay có rất nhiều tool automation để quản trị hệ thống trên thị trường, cụ thể như: Chef, Puppet, CFEngine, StackStorm, Ansible, SaltStack… So với các công cụ khác với tính năng tương đương thì Ansible dễ học và dễ tiếp cận hơn rất nhiều. Ansible là công cụ quản lý cấu hình, cho phép tự động hóa công việc của Sysadmin/devOps; là công cụ mã nguồn mở dùng để quản lý cài đặt, cấu hình hệ thống một cách tập trung. Công cụ Ansible được phát triển bởi Michael DeHaan, tác giả của ứng dụng máy chủ cung cấp Cobbler và đồng tác giả của khuôn khổ Fedora Unified Network Controller (Func) để quản trị từ xa.
(ban đầu là AnsibleWorks, Inc.) là công ty được thành lập vào năm 2013 bởi Michael DeHaan, Timothy Gerla và Sạd Ziouani để hỗ trợ và tài trợ cho Ansible về mặt thương mại. Ansible được bao gồm như một phần của bản phân phối Fedora của Linux, do Red Hat sở hữu và cũng có sẵn cho Red Hat Enterprise Linux, CentOS, openSUSE, SUSE Linux Enterprise, Debian, Ubuntu, Scientific Linux và Oracle Linux thông qua Gói bổ sung dành cho Doanh nghiệp Linux (EPEL), cũng như các hệ điều hành khác. Ansible có thể giao tiếp với rất nhiều OS, platform và loại thiết bị khác nhau từ Ubuntu, VMware, CentOS, Windows cho tới Azure, AWS, các thiết bị mạng Cisco và Juniper… mà hoàn toàn không cần agent khi giao tiếp.
Khi Ansible ở chế độ rảnh, ko có task để thực hiện thì máy chủ Ansible sẽ không chiếm dụng tài nguyên, do Ansible không sử dụng trình daemon hoặc program chạy ở chế độ background.
Các tệp Inventory cung cấp cho chúng ta danh sách các host nằm trong sự quản lý của Ansible server. Module mặc định là ‘command’ (trong trường hợp nếu chúng ta không chỉ định rừ module khi sử dụng adhoc ansible command) và khi chỳng ta truyền tham số là xem như câu lệnh sẽ được sử dụng để thực thi trên máy chủ remote. Khi sử dụng lệnh Ansible ad-hoc thì ta cần dùng dấu ngoặc kép (“…”) để rào tham số truyền vào module lệnh.
Nếu ta khai báo thông tin host inventory trong file mặc định /etc/ansible/hosts thỡ khi thực thi lệnh ad-hoc ansible khụng cần phải chỉ định rừ file thông tin inventory. Thực hiện cài đặt gói ứng dụng hàng loạt trên group ubuntu Ví dụ: ansible ubuntu -m apt -a "name=apache2 state=latest". Nếu cài trên các máy có hệ điều hành là CentOS, ta sẽ khai báo lại tên group và thay apt thành yum.
Sử dụng ad-hoc command để thu thập thông tin của client Cú pháp: ansible all -m setup.
Các điều kiện được sử dụng để tự động quyết định xem liệu một task có được thực thi hay không dựa trên một biến hay một output từ một nguồn, chẳng hạn như output của một command. Các template thường được sử dụng để thiết lập các tệp cấu hình, cho phép sử dụng các biến và các tính năng khác nhằm làm cho các tệp trở nên linh hoạt hơn và thuận tiện cho việc sử dụng lại chúng. Module copy thực hiện sao chép các tệp từ bên trong thư mục chứa tệp của module và template module chạy các tệp template đã cho thông qua công cụ tạo template Jinja2, hợp nhất trong bất kỳ biến variables nào có sẵn trong playbook chạy trước khi sao chép tệp vào máy chủ.
Vị trí của inventory có thể được tham chiếu trong thời gian chạy với đối số --inventory-file (- i) hoặc bằng đường dẫn xác định trong tệp cấu hình Ansible. inventory: Đây là tùy chọn mặc định và chỉ đơn giản là Ansible tiến hành như mọi khi, xử lý các host theo thứ tự được chỉ định trong inventory file. Chỉ nên thay đổi nó nếu không thể sử dụng / bin / sh (nói cách khác, nếu / bin / sh không được cài đặt trên máy đích hoặc không thể chạy từ sudo.).
Để triển khai Dynamic Inventory dễ dàng thì người dùng có thể sử dụng Web GUI, điển hình như Ansible Tower – phiên bản tính phí của RedHat hoặc miễn phí thì có Ansible AWX – một mã nguồn mở được cộng đồng Ansible sử dụng rộng rãi và đánh giá cao.
Cách này được khuyến cáo là không nên sử dụng trong thực tế vì việc mật khẩu dạng clear text sẽ bị hiển thị, hoặc nếu dùng cách này thì cần phải mã hoá cho file Inventory đó bằng Ansible-Vault - một tính năng cho phép user mã hóa các giá trị và cấu trúc dữ liệu trong các dự án Ansible. Có nghĩa là ta sẽ tạo ra Private Key và Public Key trên node Anisble Server và copy chúng sang các node Client. Đầu tiên ta sẽ tiến hành tạo SSH Key bằng cách đứng tại node Ansible Server tạo SSH Key, sau đó chỉ cần copy Key các sang node còn lại.
Mặc định thì danh sách các host mà ansibleserver điều khiển sẽ nằm ở file /etc/ansible/hosts. - ansible_host: Địa chỉ IP của node client tương ứng - Ansible_become_password: là enable password của thiết bị. - Ansible_become: ‘yes’ và ansible_become_method: enable là cho phép ansible có thể vào privilege mode trước khi thực thi các task.
- Đối với node là các PC hệ điều hành linux, ta chỉ cần khai báo tên host, IP, port, và user.
Nếu như phản hồi về trạng thái màu đỏ thì có nghĩa là ansibleserver không tìm thấy các thiết bị này. - name: Show standby brief #xem thổng tin HSRP ios_command: # ViếMt lệnh đếI gửIi ởI mode command line cuIa router. - Để chạy các Playbook ta sẽ nhập lệnh: # ansible-playbook R1.yml, lần lượt thay thế R1.yml bằng tên các file .yml còn lại.
Sau khi đã cấu hình thành công các Router, Switch, tương tự như khi kiểm tra kết nối đến Switch, Router, ta sử dụng lệnh # ansible PC -m ping để kiểm tra kết nối giữa máy chủ Ansible và Client1. Trong phần này ta sẽ thực thi Ansible theo dạng ad-hoc command cho một số trường hợp cơ bản. Kết quả sau khi chạy thành công playbook 1 - Ta thực hiện thêm lệnh ansible PC -m shell -a "which nmap; which.
Kết quả sử dụng lệnh kiểm tra các gói đã được cài đặt - Như vậy thì Playbook trên đã được chạy thành công.