Kiểm tra phiên bản Ubuntu bằng cat/os-release/etc/os-release là một tệp chứa dữ liệu nhận dạng hệ điều hanh. Phương pháp này sẽ chỉ hoạt động nếu bạn có Ubuntu 16.04 hoặc mới hơn
Hình 2.23. Kiểm tra phiên bản cài đặt Kết quả như vậy là ta đã cài đặt thành công
Chương 3: Các thao tác quản trị trên Ubuntu Server 3.1 Các thao tác về mạng
* Cách cài IP tĩnh trên Ubuntu Server
Đầu tiên, xem tên card mạng bằng lệnh sau:
# networkctl status
Hình 3.1. Xem tên card mạng.
Có thể thấy tên card mạng ở đây là enp0s3.
Chú ý: Bạn cần xác định đúng tên card mạng và thông số địa chỉ IP trên máy của mình.
Để cấu hình IP tĩnh cho máy ảo. Ta có thể dùng một trong các trình soạn thảo vi, vim, nano để chỉnh sửa file /etc/netplan/00-installer-config.yaml
Hình 3.2. File cấu hình ip
Ta sửa file lại như sau:
Hình 3.3. Sửa file
Trong đó:
enp0s3 là Network Interface
192.168.1.10 là địa chỉ IP tĩnh ta đặt cho máy 192.168.1.1 là Default Gateway
8.8.8.8 là địa chỉ DNS Server Ta lưu lại thay đổi và thoát.
Sau đó thực hiện khởi động lại dịch vụ mạng với một trong các lệnh:
# sudo netplan apply
# sudo systemctl restart NetworkManager.service # sudo service network-manager restart
Kết quả:
Hình 3.4. Khởi động lại dịch vụ mạng
Thực hiện lệnh # ip a
Máy đã nhận địa chỉ IP tĩnh mà ta cấu hình bên trên.
Để cấu hình IP động, ta chỉ cần sửa file /etc/netplan/00-installer-config.yaml lại như ban đầu là xong.
*Cấu hình DHCP cho máy chủ Ubuntu Server
Đảm bảo rằng máy chủ DHCP của bạn đã được cấu hình với một địa chỉ IP tĩnh.
Thực hiện theo các bước sau để cài đặt máy chủ DHCP:
Nếu đang sử dụng máy chủ Ubuntu Server, thì phần cấu hình này sẽ dành cho bạn. Nhập vào dòng lệnh sau để tiến hành cài đặt :
sudo apt-get install isc-dhcp-server
Đầu tiên chúng ta cần gán Interface sẽ lắng nghe các DHCP request từ máy con trong mạng.
Để tiến hành gán, mở và chỉnh sửa file /etc/default/isc-dhcp-server
sudo nano /etc/default/isc-dhcp-server
Gán network interface :
[...]
INTERFACESv4="enp0s3"
Lưu và đóng file lại.
Tiến hành chỉnh sửa tiếp file dhcpd.conf :
sudo nano /etc/dhcp/dhcpd.conf
Chỉnh sửa theo như hướng dẫn :
Đặt tên cho domain và domain name-server :
[...]
# option definitions common to all supported networks... option domain-name "google.com";
option domain-name-servers 8.8.8.8; [...]
Nếu máy chủ DHCP Server này là máy chủ chính thức trong hệ thống mạng nội bộ, bạn hãy tìm và bỏ comment dòng này :
[...]
authoritative; [...]
Cấu hình Subnet, dãy IP, domain và domain name-server :
[...]
# A slightly different configuration for an internal subnet. subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.150 192.168.1.200; option domain-name-servers 8.8.8.8; option domain-name "google.com"; option routers 192.168.1.1; option broadcast-address 192.168.1.255; default-lease-time 600; max-lease-time 7200; } [...]
Nếu bạn muốn gán cố định một địa chỉ IP cố định cho một máy cố định, bạn cần phải khai báo địa chỉ MAC address máy muốn gán và địa chỉ IP muốn gán. Ví dụ, người viết muốn gán địa chỉ 192.168.1.51 cho máy con Ubuntu. Vậy chúng ta sẽ tiến hành chỉnh sửa các dòng sau :
[...] host ubuntu-client { hardware ethernet 90:2B:34:95:74:F1; fixed-address 192.168.1.51; } [...]
Hãy comment những dòng thừa trong file cấu hình dhcpd.conf để không bị báo lỗi khi tiến hành khởi chạy dịch vụ dhcpd.
Bắt đầu tiến hành Restart dịch vụ DHCP :
sudo systemctl restart isc-dhcp-server
Bạn cũng có thể Stop/Start dịch vụ DHCP bằng những dòng lệnh sau :
sudo systemctl stop isc-dhcp-server sudo systemctl start isc-dhcp-server
-Đối với máy khách Ubuntu Client ta cấu hình như sau:
Tiến hành cấu hình để máy con nhận IP từ DHCP Server . Vào Editing connection và chọn Method là Automatic.
Hình 3.5. Máy con nhận IP từ DHCP Server.
Restart máy tính để bắt đầu nhận địa chỉ IP tự động từ DHCP Server.
Bây giờ bạn đã có thể thấy DHCP Client đã nhận được IP từ DHCP Server.
Hình 3.6. Ubuntu nhận địa chỉ IP
Như bạn đã thấy, mấy Ubuntu Client đã nhận được địa chỉ IP 192.168.1.51 dành riêng cho địa chỉ Mac 90:2B:34:95:74:F1. Như vậy là chúng ta đã hoàn thành cài đặt DHCP Server trên Linux.
*Cấu hình SSH cho máy chủ Ubuntu Server -Thiết lập cho server để chấp nhận SSH:
Để thiết lập cho Linux server của bạn chấp nhận các kết nối đến, bạn sẽ cần phải cài đặt công cụ đăng nhập từ xa cho giao thức SSH. Một trong những công cụ phổ biến nhất là OpenSSH. Trên các bản phân phối dựa trên Debian, OpenSSH có sẵn thông qua các kho lưu trữ chính. Mở một terminal mới (Ctrl + Alt + T) và nhập lệnh sau:
Điều này thực hiện cập nhật và đảm bảo bạn có các kho lưu trữ mới nhất. Trước khi tiến hành cài đặt OpenSSH, hãy kiểm tra mọi nâng cấp. Trong terminal, hãy chạy lệnh:
sudo apt-get upgrade
Hình 3.7. Kiểm tra nâng cấp.
Khi bạn đã cập nhật và nâng cấp, hãy mở một dòng lệnh mới và nhập:
sudo apt-get install openssh-server
Hình 3.8. Cài đặt OpenSSH.
Định cấu hình cài đặt SSH cho server:
Sau khi OpenSSH đã được cài đặt ở phía server, bạn có thể chỉnh sửa thông tin cấu hình cơ bản. Mở một terminal mới và nhập chuỗi sau đây để mở file cấu hình SSH:
Hình 3.9. Nội dung file cấu hình SSH.
Ở đây bạn có thể chỉ định các cài đặt khác nhau. Theo mặc định, SSH server của bạn sẽ hoạt động trên cổng 22. Vì vậy, ví dụ, bạn có thể tự thay đổi từ cổng 22 sang cổng bạn chọn. Ngoài ra, bạn có thể tăng cường bảo mật bằng cách nhập số đăng nhập tối đa. Trong Port, tìm dòng MaxAuthTries. Bạn có thể nhập bất kỳ số nào ở đây. Vì vậy, để chọn số lần đăng nhập tối đa là bốn, hãy nhập:
MaxAuthTries 4
Sau khi cài đặt OpenSSH, SSH server sẽ chạy. Nhưng để kiểm tra, chỉ cần mở một terminal và chạy:
sudo service ssh status
Hình 3.10. SSH được kích hoạt
Điều này sẽ trả về một thông báo rằng SSH đã được kích hoạt. Để khởi động SSH, hãy mở một dòng lệnh và nhập:
sudo service ssh start
Và để ngăn SSH chạy, hãy nhập:
sudo service ssh stop
Bây giờ, SSH đã được cài đặt và đang chạy, bạn có thể kết nối từ xa thông qua nó. Nếu bạn đang đăng nhập vào Linux server từ xa, bạn sẽ cần địa chỉ IP của server. Nó sẽ có dạng 192.168.0.x. Sau khi đã có địa chỉ IP của Linux server, bạn cũng cần có phương tiện đăng nhập qua SSH từ một máy khác. Có một số phương pháp để đăng nhập từ xa bằng SSH.
Sử dụng SSH trên các hệ điều hành dựa trên Linux:
Nếu bạn đang sử dụng hệ thống dựa trên Unix như Linux, macOS hoặc FreeBSD, SSH có sẵn trong dòng lệnh. Trong một terminal, hãy chạy:
ssh [remote host]
Trong đó, [remote host] là địa chỉ IP bạn đang truy cập. Nếu tên người dùng của bạn khác với hệ thống từ xa, bạn có thể chỉ định tên người dùng chính xác bằng cách nhập:
ssh [remote username]@[remote host]
Sau khi nhập thông tin này, bạn sẽ được hỏi có muốn tiếp tục kết nối không. Sau đó, bạn sẽ được nhắc nhập tên người dùng và mật khẩu của mình.
Hình 3.11. Nhập thông tin và kết nối
3.2 Thao tác với file và thư mục cơ bản
Thông thường để thay đổi thư mục nào đó bạn sẽ phải điều hướng thông qua các thư mục. Tuy nhiên trên cả Terminal và Command Prompt bạn có thể sử dụng lệnh cd để thay đổi thư mục hiện tại của bạn thành đích đến một thư mục khác. Giả sử nếu bạn muốn truy cập thư mục tech, bạn chỉ cần nhập câu lệnh:
cd tech
Ngoài ra bạn có thể điều hướng trực tiếp đến thư mục con của thư mục tech, bằng cách sử dụng câu lệnh:
cd tech/sub-folder
Để trở về thư mục trước đó hoặc trở về thư mục hiện tại, bạn nhập:
cd
* Tạo một thư mục mới
mkdir cũng là một trong những lệnh mà người dùng thường hay sử dụng. Câu lệnh này được sử dụng để tạo một thư mục mới có tên cụ thể.
Ví dụ, nếu muốn tạo một thư mục mới có tên là tech, bạn sử dụng lệnh dưới đây:
mkdir tech
Ngoài ra bạn cũng có thể tạo nhiều thư mục cùng một lúc, chẳng hạn nếu muốn tạo 3 thư mục có tên là tech, hello và world cùng một lúc, bạn sử dụng lệnh dưới đây:
mkdir tech hello world
* Tạo một file mới
Sử dụng lệnh touch để tạo một file trống. Chẳng hạn như:
touch filename.html
Ngoài ra bạn có thể chỉ định nhiều tên file để tạo nhiều file cùng một lúc, chẳng hạn như:
touch file.html style.css * Di chuyển các file
Sử dụng lệnh mv để di chuyển một file cụ thể vào một thư mục. Chẳng hạn, nếu muốn di chuyển file tech.css vào thư mục có tên /sid, bạn sử dụng lệnh dưới đây:
mv tech.css /sid
Ngoài ra bạn còn có thể sử dụng lệnh mv để thay đổi tên file và thư mục. Chẳng hạn nếu muốn đổi tên index.html thành about.html, bạn sử dụng lệnh dưới đây:
mv index.html about.html * Sao chép các file
Nhập lệnh hoặc cp copy nếu bạn muốn sao chép một file hay một thư mục. Ví dụ nếu muốn sao chép index.html và đặt tên cho file mới là about.html, bạn sử dụng lệnh dưới đây:
Nếu đang sử dụng hệ điều hành Windows, bạn sử dụng lệnh copy.
*Hiển thị nội dung thư mục
Sử dụng lệnh List Directory hay còn gọi là lệnh ls để hiển thị nội dung của một thư mục. Tên cụ thể của thư mục đặt trước lệnh ls để hiển thị nội dung của thư mục.
Tuy nhiên điểm hạn chế là lệnh ls chỉ hoạt động trên UNIX Shell. Bạn có thể chạy lệnh ls trên Ubuntu và hệ điều hành OS X mà không thể chạy trên Windows.
Trên hệ điều hành Windows bạn có thể sử dụng lệnh dir để thay thế.
3.3 Phân quyền truy cập tài nguyên
Khái niệm cơ bản về quyền đối với file trong Linux
Mỗi file đều có chủ sở hữu (owner), xác định “user class” (lớp người dùng) của file. Mỗi file cũng có một nhóm (group), xác định “group class” (lớp nhóm) của file. Bất kỳ người dùng hệ thống nào không phải là chủ sở hữu và không thuộc cùng một nhóm đều được xác định là thuộc lớp khác (others).
Tất cả các file trên những hệ thống giống như Unix đều có quyền được gán cho cả ba lớp và chúng xác định hành động nào có thể được thực hiện bởi các lớp đã nói đối với file đã cho.
Ba hành động có sẵn trên một hệ thống giống như Unix là: read (đọc - khả năng mở và xem nội dung của file), write (ghi - khả năng mở và sửa đổi nội dung của file) và execute (thực thi - khả năng chạy file như một chương trình thực thi). Nói cách khác, các quyền của file xác định xem:
Chủ sở hữu có thể đọc, viết và thực thi file hay không. Nhóm có thể đọc, viết và thực thi file hay không. Bất cứ ai khác có thể đọc, viết và thực thi file hay không. Quyền truy cập file Linux có thể được hiển thị ở hai định dạng.
Định dạng đầu tiên được gọi là symbolic notation (ký hiệu tượng trưng), là một chuỗi gồm 10 ký tự: Một ký tự đại diện cho loại file và 9 ký tự đại diện cho các quyền đọc ( ), ghi ( ) và thực thi ( ) của file theo thứ tự chủ sở hữu, nhóm, và r w x
những người dùng khác. Nếu không được phép, biểu tượng dấu gạch ngang (-) sẽ được sử dụng.
Ví dụ:
-rwxr-xr--
Hình 3.12. Ví dụ về ký hiệu phân quyền(1).
Điều này có nghĩa nó là một file thông thường với quyền đọc, ghi và thực thi cho chủ sở hữu, đọc và thực thi cho nhóm và chỉ đọc cho những người khác.
Định dạng thứ hai được gọi là numeric notation (ký hiệu số), là một chuỗi gồm ba chữ số, mỗi chữ số tương ứng với user, nhóm và các quyền khác. Mỗi chữ số có thể nằm trong khoảng từ đến và mỗi giá trị của chữ số có được bằng cách tính 0 7
0 có nghĩa là không có quyền nào được cho phép. +1 nếu lớp có thể thực thi file.
+2 nếu lớp có thể ghi vào file. +4 nếu lớp có thể đọc file.
Nói cách khác, ý nghĩa của từng giá trị chữ số là:
0: Không được phép thực hiện bất kỳ quyền nào 1: Thực thi 2: Viết 3: Viết và thực thi 4: Đọc 5: Đọc và thực thi 6: Đọc và viết 7: Đọc, viết và thực thi
Vì vậy, ở ví dụ trên, -rwxr-xr-- sẽ là 754 trong ký hiệu số. Đó là quyền đối với file Linux một cách ngắn gọn.
Hình 3.13. Ví dụ về ký hiệu phân quyền(2).
Trên các hệ thống giống như Unix, chmod là một lệnh cấp hệ thống, viết tắt của “change mode” và cho phép bạn thay đổi cài đặt quyền của file theo cách thủ công.
Đừng nhầm lẫn với chown. Đó là một lệnh cấp hệ thống khác trên những hệ thống giống như Unix, viết tắt của “change owner” và cho phép bạn gán quyền sở hữu một file cho người dùng khác, hoặc chgrp, viết tắt của “change group” và gán file cho một nhóm khác. Đây là những lệnh quan trọng cần biết, nhưng không được sử dụng phổ biến như chmod.
*Cách sử dụng Chmod trên Linux
Lệnh chmod có định dạng đơn giản:
chmod [permissions] [file]
Quyền có thể được cung cấp trong ký hiệu số, đây là định dạng tốt nhất để sử dụng khi bạn muốn gán quyền cụ thể cho tất cả các lớp:
chmod 644 example.txt
Quyền cũng có thể được cung cấp trong ký hiệu tượng trưng, rất hữu ích khi bạn chỉ muốn sửa đổi các quyền của một lớp cụ thể. Ví dụ:
chmod u=rwx example.txt chmod g=rw example.txt chmod o=rw example.txt
Bạn có thể sửa đổi quyền cho nhiều lớp, chẳng hạn như ví dụ này cho chủ sở hữu quyền đọc/ghi/thực thi nhưng nhóm và các người dùng khác chỉ có quyền đọc/thực thi:
chmod u=rwx,g=rw,o=rw example.txt
Khi gán cùng một quyền cho nhiều lớp, bạn có thể kết hợp chúng: chmod u=rwx,go=rw example.txt
Nhưng lợi ích của việc sử dụng ký hiệu tượng trưng sẽ được thấy rõ khi bạn chỉ muốn thêm hoặc xóa quyền cho một hành động cụ thể đối với một lớp.
Ví dụ, lệnh sau thêm quyền thực thi cho chủ sở hữu file: chmod u+x example.txt
Và lệnh này loại bỏ quyền ghi và thực thi cho người dùng khác: chmod o-wx example.txt
Cuối cùng, nếu bạn muốn áp dụng một nhóm quyền cụ thể cho tất cả các file và mục trong một thư mục cụ thể (nghĩa là một chmod đệ quy), hãy sử dụng tùy chọn và nhắm mục tiêu tới một thư mục:-R
chmod -R 755 example_directory
3.4 Cài đặt tường lửa bảo vệ máy chủ
*Kích hoạt tường lửa
Tường lửa mặc định bị vô hiệu hóa. Để kích hoạt tường lửa, nhập câu lệnh sau từ cửa sổ lệnh: sudo ufw enable
Hình 3.14. Kích hoạt tường lửa.
*Đặt luật cho tường lửa
Giả sử ta muốn cho phép lưu lượng SSH qua cổng 22. Để làm điều này, hãy sử dụng một trong số những câu lệnh sau:
sudo ufw allow 22 (Cho phép cả lưu lượng UDP và TCP) sudo ufw allow 22/tcp (Chỉ cho phép lưu lượng TCP)
sudo ufw allow ssh (Kiểm tra trong file /etc/services trên hệ thống để tìm cổng mà SSH yêu cầu và cho phép nó. Nhiều service phổ biến được liệt kê trong file này)
Để cho phép máy client (máy của Admin) có địa chỉ IP là 192.168.1.50 được truy cập tới máy chủ sử dụng giao thức SSH ta dùng lệnh:
Sudo ufw allow from 192.168.1.50 to any port 22
Ufw giả sử người dùng muốn đặt luật cho lưu lượng đến, nhưng ta cũng có thể quy định hướng lưu lượng. Ví dụ như, để chặn lưu lượng SSH ra mạng, gõ câu lệnh sau:
sudo ufw reject out ssh
Để xem tất cả những luật đã được tạo ra, ta sử dụng câu lệnh sau: