Quản trị viên Linux - Hướng dẫn nhanh
Duy nhất trong số các bản phân phối Linux dành cho doanh nhân, CentOS vẫn đúng với bản chất mã nguồn mở mà Linux được thành lập. Nhân Linux đầu tiên được phát triển bởi một sinh viên đại học tại Đại học Helsinki (Linus Torvalds) và kết hợp với các tiện ích GNU do Richard Stallman sáng lập và quảng bá. CentOS có giấy phép nguồn mở, đã được chứng minh có thể cung cấp năng lượng cho thế giới kinh doanh ngày nay.
CentOS đã nhanh chóng trở thành một trong những nền tảng máy chủ sung mãn nhất trên thế giới. Bất kỳ Quản trị viên Linux nào, khi tìm kiếm việc làm, nhất định phải bắt gặp những từ: “Ưu tiên Trải nghiệm CentOS Linux”. Từ những công ty khởi nghiệp đến những gã khổng lồ công nghệ trong danh sách Fortune 10 , CentOS đã tự đặt mình vào hàng ngũ hệ điều hành máy chủ cao hơn trên toàn thế giới.
Điều làm cho CentOS nổi bật so với các bản phân phối Linux khác là sự kết hợp tuyệt vời của -
Cấp phép nguồn mở
Cơ sở người dùng chuyên dụng của các chuyên gia Linux
Hỗ trợ phần cứng tốt
Độ ổn định và độ tin cậy vững chắc như đá
Tập trung vào bảo mật và cập nhật
Tuân thủ nghiêm ngặt các tiêu chuẩn đóng gói phần mềm cần thiết trong môi trường doanh nghiệp
Trước khi bắt đầu các bài học, chúng tôi giả định rằng người đọc đã có kiến thức cơ bản về Linux và các nguyên tắc cơ bản về Quản trị như:
Người dùng root là gì?
Sức mạnh của người dùng root
Khái niệm cơ bản về nhóm bảo mật và người dùng
Trải nghiệm sử dụng trình giả lập đầu cuối Linux
Các khái niệm cơ bản về mạng
Hiểu biết cơ bản về các ngôn ngữ lập trình thông dịch (Perl, Python, Ruby)
Các giao thức mạng như HTTP, LDAP, FTP, IMAP, SMTP
Các lõi tạo hệ điều hành máy tính: hệ thống tệp, trình điều khiển và kerne
Trước khi tìm hiểu các công cụ của Quản trị viên Linux CentOS, điều quan trọng cần lưu ý là triết lý đằng sau dòng lệnh quản trị Linux.
Linux được thiết kế dựa trên triết lý Unix về “các công cụ nhỏ, chính xác được kết nối với nhau để đơn giản hóa các tác vụ lớn hơn”. Linux, ở gốc của nó, không có các ứng dụng đa mục đích lớn cho một mục đích sử dụng cụ thể. Thay vào đó, có hàng trăm tiện ích cơ bản khi kết hợp sẽ mang lại sức mạnh tuyệt vời để hoàn thành các nhiệm vụ lớn một cách hiệu quả.
Ví dụ về Triết lý Linux
Ví dụ: nếu quản trị viên muốn có danh sách tất cả người dùng hiện tại trên hệ thống, các lệnh theo chuỗi sau đây có thể được sử dụng để lấy danh sách tất cả người dùng hệ thống. Khi thực hiện lệnh, những người dùng trên hệ thống được liệt kê theo thứ tự bảng chữ cái.
[root@centosLocal centos]# cut /etc/passwd -d":" -f1 | sort
abrt
adm
avahi
bin
centos
chrony
colord
daemon
dbus
Có thể dễ dàng xuất danh sách này thành tệp văn bản bằng lệnh sau.
[root@localhost /]# cut /etc/passwd -d ":" -f1 > system_users.txt
[root@localhost /]# cat ./system_users.txt | sort | wc –l
40
[root@localhost /]#
Cũng có thể so sánh danh sách người dùng với một bản xuất vào một ngày sau đó.
[root@centosLocal centos]# cut /etc/passwd -d ":" -f1 > system_users002.txt &&
cat system_users002.txt | sort | wc -l
41
[root@centosLocal centos]# diff ./system_users.txt ./system_users002.txt
evilBackdoor [root@centosLocal centos]#
Với cách tiếp cận này của các công cụ nhỏ được xâu chuỗi để hoàn thành các nhiệm vụ lớn hơn, việc tạo một tập lệnh thực hiện các lệnh này sẽ đơn giản hơn là tự động gửi kết quả qua email trong khoảng thời gian thông thường.
Các lệnh cơ bản mà mọi Quản trị viên Linux nên thành thạo là:
- vim
- grep
- nhiều hơn và ít hơn
- tail
- head
- wc
- sort
- uniq
- tee
- cat
- cut
- sed
- tr
- paste
Trong thế giới Linux, Quản trị viên sử dụng filteringlệnh mỗi ngày để phân tích cú pháp nhật ký, lọc đầu ra lệnh và thực hiện các hành động với các tập lệnh shell tương tác. Như đã đề cập, sức mạnh của các lệnh này có khả năng sửa đổi lẫn nhau thông qua một quá trình được gọi làpiping.
Lệnh sau cho biết có bao nhiêu từ bắt đầu bằng chữ a trong từ điển người dùng chính của CentOS.
[root@centosLocal ~]# egrep '^a.*$' /usr/share/dict/words | wc -l
25192
[root@centosLocal ~]#
Để giới thiệu các quyền khi chúng áp dụng cho cả thư mục và tệp trong CentOS Linux, chúng ta hãy xem đầu ra lệnh sau.
[centos@centosLocal etc]$ ls -ld /etc/yum*
drwxr-xr-x. 6 root root 100 Dec 5 06:59 /etc/yum
-rw-r--r--. 1 root root 970 Nov 15 08:30 /etc/yum.conf
drwxr-xr-x. 2 root root 187 Nov 15 08:30 /etc/yum.repos.d
Note - Ba loại đối tượng chính bạn sẽ thấy là
"-" - một dấu gạch ngang cho tệp đơn giản
"d" - cho một thư mục
"l" - cho một liên kết tượng trưng
Chúng tôi sẽ tập trung vào ba khối đầu ra cho mỗi thư mục và tệp -
- drwxr-xr-x: root: root
- -rw-r - r--: root: root
- drwxr-xr-x: root: root
Bây giờ chúng ta hãy chia nhỏ điều này để hiểu rõ hơn về những dòng này -
d | Có nghĩa là loại đối tượng là một thư mục |
rwx | Cho biết các quyền thư mục được áp dụng cho chủ sở hữu |
rx | Cho biết các quyền thư mục được áp dụng cho nhóm |
rx | Cho biết các quyền thư mục được áp dụng cho thế giới |
nguồn gốc | Ví dụ đầu tiên, chỉ ra chủ sở hữu của thư mục |
nguồn gốc | Ví dụ thứ hai, cho biết nhóm mà các quyền nhóm được áp dụng |
Hiểu được sự khác biệt giữa chủ sở hữu , nhóm và thế giới là quan trọng. Việc không hiểu điều này có thể gây ra những hậu quả lớn đối với các máy chủ lưu trữ các dịch vụ trên Internet.
Trước khi chúng tôi đưa ra một ví dụ trong thế giới thực, trước tiên chúng ta hãy hiểu các quyền khi chúng áp dụng cho các thư mục và tệp .
Vui lòng xem bảng sau, sau đó tiếp tục với hướng dẫn.
Bát phân | Tượng trưng | Uốn. | Danh mục |
---|---|---|---|
1 | x | Hành hình | Nhập thư mục và truy cập tệp |
2 | w | Viết | Xóa hoặc sửa đổi các tệp trong một thư mục |
4 | r | Đọc | Liệt kê các tệp trong thư mục |
Note- Khi các tệp có thể truy cập được để đọc trong một thư mục, người ta thường áp dụng quyền đọc và thực thi . Nếu không, người dùng sẽ gặp khó khăn khi làm việc với các tệp. Bỏ ghi tắt sẽ đảm bảo các tệp không thể bị: đổi tên, xóa, sao chép hoặc sửa đổi quyền.
Áp dụng quyền cho thư mục và tệp
Khi áp dụng quyền, có hai khái niệm cần hiểu:
- Quyền tượng trưng
- Quyền hệ bát phân
Về bản chất, mỗi cái đều giống nhau nhưng có một cách khác nhau để tham chiếu và gán quyền đối với tệp. Để được hướng dẫn nhanh, vui lòng nghiên cứu và tham khảo bảng sau:
Đọc | Viết | Hành hình | |
---|---|---|---|
Octal | 4 | 2 | 1 |
Symbolic | r | w | x |
Khi chỉ định quyền sử dụng octalphương pháp, sử dụng một số 3 byte như: 760. Số 760 dịch thành: Chủ sở hữu: rwx; Nhóm: rw; Khác (hoặc thế giới) không có quyền.
Một kịch bản khác: 733 sẽ dịch thành: Chủ sở hữu: rwx; Nhóm: wx; Khác: wx.
Có một nhược điểm đối với quyền sử dụng phương thức Octal. Không thể sửa đổi các bộ quyền hiện có. Chỉ có thể gán lại toàn bộ tập quyền của một đối tượng.
Bây giờ bạn có thể tự hỏi, có gì sai khi luôn gán lại quyền? Hãy tưởng tượng một cấu trúc thư mục lớn, ví dụ / var / www / trên máy chủ web sản xuất. Chúng tôi muốn loại bỏ đệ quy bit w hoặc ghi trên tất cả các thư mục cho Other. Do đó, buộc nó phải được chủ động thêm vào chỉ khi cần thiết cho các biện pháp an ninh. Nếu chúng tôi chỉ định lại toàn bộ tập hợp quyền, chúng tôi sẽ lấy đi tất cả các quyền tùy chỉnh khác được chỉ định cho mọi thư mục con.
Do đó, nó sẽ gây ra sự cố cho cả quản trị viên và người sử dụng hệ thống. Tại một số thời điểm, một người (hoặc nhiều người) sẽ cần chỉ định lại tất cả các quyền tùy chỉnh đã bị xóa bỏ bằng cách gán lại toàn bộ tập quyền cho mọi thư mục và đối tượng.
Trong trường hợp này, chúng tôi muốn sử dụng phương thức Symbolic để sửa đổi quyền -
chmod -R o-w /var/www/
Lệnh trên sẽ không "ghi đè quyền" nhưng sửa đổi các bộ quyền hiện tại. Vì vậy, hãy quen với việc sử dụng phương pháp hay nhất
- Hệ bát phân chỉ để gán quyền
- Tượng trưng để sửa đổi các bộ quyền
Điều quan trọng là Quản trị viên CentOS phải thành thạo với cả quyền Octal và Symbolic vì các quyền này rất quan trọng đối với tính toàn vẹn của dữ liệu và toàn bộ hệ điều hành. Nếu quyền không chính xác, kết quả cuối cùng sẽ là cả dữ liệu nhạy cảm và toàn bộ hệ điều hành sẽ bị xâm phạm.
Với điều đó được đề cập, chúng ta hãy xem xét một số lệnh để sửa đổi quyền và chủ sở hữu đối tượng / thành viên -
- chmod
- chown
- chgrp
- umask
chmod: Thay đổi bit quyền của chế độ tệp
Chỉ huy | Hoạt động |
---|---|
-c | Giống như dài dòng, nhưng sẽ chỉ báo cáo những thay đổi được thực hiện |
-v | Chi tiết, đầu ra chẩn đoán cho mọi yêu cầu được thực hiện |
-R | Áp dụng đệ quy thao tác trên tệp và thư mục |
chmod sẽ cho phép chúng tôi thay đổi quyền của các thư mục và tệp bằng cách sử dụng các bộ quyền bát phân hoặc tượng trưng . Chúng tôi sẽ sử dụng điều này để sửa đổi nhiệm vụ của chúng tôi và tải lên các thư mục.
chown: Thay đổi chủ sở hữu tệp và nhóm
Chỉ huy | Hoạt động |
---|---|
-c | Giống như dài dòng, nhưng sẽ chỉ báo cáo những thay đổi được thực hiện |
-v | Chi tiết, đầu ra chẩn đoán cho mọi yêu cầu được thực hiện |
-R | Áp dụng đệ quy thao tác trên tệp và thư mục |
chown có thể sửa đổi cả việc sở hữu người dùng và nhóm đối tượng. Tuy nhiên, trừ khi cần sửa đổi cả hai cùng một lúc, việc sử dụng chgrp thường được sử dụng cho các nhóm.
chgrp: Thay đổi quyền sở hữu nhóm đối với tệp hoặc thư mục
Chỉ huy | Hoạt động |
---|---|
-c | Giống như dài dòng, nhưng sẽ chỉ báo cáo những thay đổi |
-v | Chi tiết, xuất ra chẩn đoán cho mọi yêu cầu được thực hiện |
-R | Đệ quy, áp dụng các hoạt động trên tệp và thư mục |
chgrp sẽ thay đổi chủ sở hữu nhóm thành được cung cấp.
Thực hành trong thế giới thực
Hãy thay đổi tất cả các phép gán thư mục con trong / var / www / students / để nhóm sở hữu là nhóm sinh viên . Sau đó, chỉ định gốc của sinh viên cho nhóm giáo sư. Sau đó, chọn Tiến sĩ Terry Thomas làm chủ sở hữu của danh bạ sinh viên , vì ông được giao nhiệm vụ phụ trách tất cả các học viện Khoa học Máy tính tại trường.
Như chúng ta có thể thấy, khi được tạo, thư mục vẫn còn khá thô.
[root@centosLocal ~]# ls -ld /var/www/students/
drwxr-xr-x. 4 root root 40 Jan 9 22:03 /var/www/students/
[root@centosLocal ~]# ls -l /var/www/students/
total 0
drwxr-xr-x. 2 root root 6 Jan 9 22:03 assignments
drwxr-xr-x. 2 root root 6 Jan 9 22:03 uploads
[root@centosLocal ~]#
Là Quản trị viên, chúng tôi không bao giờ muốn cung cấp thông tin đăng nhập gốc của mình cho bất kỳ ai. Nhưng đồng thời, chúng tôi cần cho phép người dùng khả năng thực hiện công việc của họ. Vì vậy, hãy cho phép Tiến sĩ Terry Thomas kiểm soát nhiều hơn cấu trúc tệp và giới hạn những gì sinh viên có thể làm.
[root@centosLocal ~]# chown -R drterryt:professors /var/www/students/
[root@centosLocal ~]# ls -ld /var/www/students/
drwxr-xr-x. 4 drterryt professors 40 Jan 9 22:03 /var/www/students/
[root@centosLocal ~]# ls -ls /var/www/students/
total 0
0 drwxr-xr-x. 2 drterryt professors 6 Jan 9 22:03 assignments
0 drwxr-xr-x. 2 drterryt professors 6 Jan 9 22:03 uploads
[root@centosLocal ~]#
Bây giờ, mỗi thư mục và thư mục con có một chủ sở hữu là drterryt và nhóm sở hữu là các giáo sư . Vì thư mục bài tập dành cho sinh viên để chuyển công việc được giao vào, chúng ta hãy loại bỏ khả năng liệt kê và sửa đổi tệp từ nhóm sinh viên .
[root@centosLocal ~]# chgrp students /var/www/students/assignments/ && chmod
736 /var/www/students/assignments/
[root@centosLocal assignments]# ls -ld /var/www/students/assignments/
drwx-wxrw-. 2 drterryt students 44 Jan 9 23:14 /var/www/students/assignments/
[root@centosLocal assignments]#
Học sinh có thể sao chép bài tập vào thư mục bài tập . Nhưng chúng không thể liệt kê nội dung của thư mục, sao chép qua các tệp hiện tại hoặc sửa đổi các tệp trong thư mục bài tập . Vì vậy, nó chỉ cho phép học sinh nộp các bài tập đã hoàn thành. Hệ thống tệp CentOS sẽ cung cấp dấu ngày tháng khi nộp bài tập.
Là chủ sở hữu thư mục bài tập -
[drterryt@centosLocal assignments]$ whoami drterryt [drterryt@centosLocal assignments]$ ls -ld /var/www/students/assignment
drwx-wxrw-. 2 drterryt students 44 Jan 9 23:14 /var/www/students/assignments/
[drterryt@centosLocal assignments]$ ls -l /var/www/students/assignments/ total 4 -rw-r--r--. 1 adama students 0 Jan 9 23:14 myassign.txt -rw-r--r--. 1 tammyr students 16 Jan 9 23:18 terryt.txt [drterryt@centosLocal assignments]$
Chúng ta có thể thấy, chủ sở hữu thư mục có thể liệt kê các tệp cũng như sửa đổi và loại bỏ tệp.
umask Command: Cung cấp các chế độ mặc định cho các quyền đối với tệp và thư mục khi chúng được tạo
umask là một lệnh quan trọng cung cấp các chế độ mặc định cho Quyền đối với Tệp và Thư mục khi chúng được tạo.
quyền umask sử dụng logic đơn phân, phủ định.
Sự cho phép | Hoạt động |
---|---|
0 | Đọc, viết, thực thi |
1 | Đọc và viết |
2 | Đọc và thực hiện |
3 | Chỉ đọc |
4 | Đọc và thực hiện |
5 | Chỉ viết |
6 | Chỉ thực thi |
7 | không có quyền |
[adama@centosLocal umask_tests]$ ls -l ./ -rw-r--r--. 1 adama students 0 Jan 10 00:27 myDir -rw-r--r--. 1 adama students 0 Jan 10 00:27 myFile.txt [adama@centosLocal umask_tests]$ whoami
adama
[adama@centosLocal umask_tests]$ umask 0022 [adama@centosLocal umask_tests]$
Bây giờ, hãy thay đổi umask cho người dùng hiện tại và tạo một tệp và thư mục mới.
[adama@centosLocal umask_tests]$ umask 077 [adama@centosLocal umask_tests]$ touch mynewfile.txt
[adama@centosLocal umask_tests]$ mkdir myNewDir [adama@centosLocal umask_tests]$ ls -l
total 0
-rw-r--r--. 1 adama students 0 Jan 10 00:27 myDir
-rw-r--r--. 1 adama students 0 Jan 10 00:27 myFile.txt
drwx------. 2 adama students 6 Jan 10 00:35 myNewDir
-rw-------. 1 adama students 0 Jan 10 00:35 mynewfile.txt
Như chúng ta có thể thấy, các tệp mới được tạo hạn chế hơn một chút so với trước đây.
umask cho người dùng phải được thay đổi trong -
- /etc/profile
- ~/bashrc
[root@centosLocal centos]# su adama
[adama@centosLocal centos]$ umask 0022 [adama@centosLocal centos]$
Nói chung, umask mặc định trong CentOS sẽ ổn. Khi chúng tôi gặp rắc rối với mặc định là 0022 , thường là khi các bộ phận khác nhau thuộc các nhóm khác nhau cần cộng tác trong các dự án.
Đây là lúc mà vai trò của người quản trị hệ thống, để cân bằng các hoạt động và thiết kế của hệ điều hành CentOS.
Khi thảo luận về quản lý người dùng , chúng ta có ba thuật ngữ quan trọng cần hiểu:
- Users
- Groups
- Permissions
Chúng tôi đã thảo luận sâu về các quyền được áp dụng cho các tệp và thư mục. Trong chương này, hãy thảo luận về người dùng và nhóm.
Người dùng CentOS
Trong CentOS, có hai loại tài khoản -
System accounts - Được sử dụng cho daemon hoặc phần mềm khác.
Interactive accounts - Thường được gán cho một người dùng để truy cập tài nguyên hệ thống.
Sự khác biệt chính giữa hai kiểu người dùng là -
System accountsđược sử dụng bởi daemon để truy cập các tệp và thư mục. Chúng thường sẽ không được phép đăng nhập tương tác thông qua đăng nhập shell hoặc bảng điều khiển vật lý.
Interactive accounts được người dùng cuối sử dụng để truy cập tài nguyên máy tính từ đăng nhập shell hoặc bảng điều khiển vật lý.
Với hiểu biết cơ bản này về người dùng, bây giờ chúng ta hãy tạo một người dùng mới cho Bob Jones trong Bộ phận Kế toán. Một người dùng mới được thêm vào vớiadduser chỉ huy.
Sau đây là một số adduser công tắc chung -
Công tắc điện | Hoạt động |
---|---|
-c | Thêm nhận xét vào tài khoản người dùng |
-m | Tạo thư mục chính của người dùng ở vị trí mặc định, nếu không tồn tại |
-g | Nhóm mặc định để chỉ định người dùng |
-n | Không tạo nhóm riêng tư cho người dùng, thường là nhóm có tên người dùng |
-M | Không tạo thư mục chính |
-S | Vỏ mặc định khác với / bin / bash |
-u | Chỉ định UID (nếu không được hệ thống chỉ định) |
-G | Các nhóm bổ sung để chỉ định người dùng |
Khi tạo người dùng mới, hãy sử dụng các công tắc -c, -m, -g, -n như sau:
[root@localhost Downloads]# useradd -c "Bob Jones Accounting Dept Manager"
-m -g accounting -n bjones
Bây giờ, hãy xem liệu người dùng mới của chúng ta đã được tạo chưa -
[root@localhost Downloads]# id bjones
(bjones) gid = 1001(accounting) groups = 1001(accounting)
[root@localhost Downloads]# grep bjones /etc/passwd
bjones:x:1001:1001:Bob Jones Accounting Dept Manager:/home/bjones:/bin/bash
[root@localhost Downloads]#
Bây giờ chúng ta cần kích hoạt tài khoản mới bằng lệnh passwd -
[root@localhost Downloads]# passwd bjones
Changing password for user bjones.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost Downloads]#
Tài khoản người dùng không được kích hoạt cho phép người dùng đăng nhập vào hệ thống.
Vô hiệu hoá tài khoản người dùng
Có một số phương pháp để vô hiệu hóa tài khoản trên hệ thống. Phạm vi từ việc chỉnh sửa tệp / etc / passwd bằng tay. Hoặc thậm chí sử dụng lệnh passwd với-lcông tắc điện. Cả hai phương pháp này đều có một nhược điểm lớn: nếu người dùng có quyền truy cập ssh và sử dụng khóa RSA để xác thực, họ vẫn có thể đăng nhập bằng phương pháp này.
Bây giờ chúng ta hãy sử dụng lệnh chage , thay đổi ngày hết hạn của mật khẩu thành một ngày trước đó. Ngoài ra, có thể tốt nếu bạn ghi chú vào tài khoản về lý do tại sao chúng tôi vô hiệu hóa nó.
[root@localhost Downloads]# chage -E 2005-10-01 bjones
[root@localhost Downloads]# usermod -c "Disabled Account while Bob out of the country
for five months" bjones
[root@localhost Downloads]# grep bjones /etc/passwd
bjones:x:1001:1001:Disabled Account while Bob out of the country for four
months:/home/bjones:/bin/bash
[root@localhost Downloads]#
Quản lý nhóm
Quản lý nhóm trong Linux giúp quản trị viên thuận tiện trong việc kết hợp người dùng trong các vùng chứa bằng cách áp dụng các bộ quyền áp dụng cho tất cả các thành viên nhóm. Ví dụ: tất cả người dùng trong Kế toán có thể cần quyền truy cập vào các tệp giống nhau. Do đó, chúng tôi tạo một nhóm kế toán, thêm người dùng Kế toán.
Đối với hầu hết các phần, bất kỳ điều gì yêu cầu quyền đặc biệt nên được thực hiện trong một nhóm. Cách tiếp cận này thường sẽ tiết kiệm thời gian áp dụng các quyền đặc biệt cho chỉ một người dùng. Ví dụ, Sally phụ trách báo cáo và chỉ Sally mới cần quyền truy cập vào các tệp nhất định để báo cáo. Tuy nhiên, điều gì sẽ xảy ra nếu một ngày Sally bị ốm và Bob báo cáo? Hay nhu cầu báo cáo ngày càng tăng? Khi một nhóm được tạo, Quản trị viên chỉ cần thực hiện một lần. Thêm người dùng được áp dụng khi nhu cầu thay đổi hoặc mở rộng.
Sau đây là một số lệnh phổ biến được sử dụng để quản lý nhóm:
- chgrp
- groupadd
- groups
- usermod
chgrp - Thay đổi quyền sở hữu nhóm cho một tệp hoặc thư mục.
Hãy tạo một thư mục cho những người trong nhóm kế toán để lưu trữ tệp và tạo thư mục cho tệp.
[root@localhost Downloads]# mkdir /home/accounting
[root@localhost Downloads]# ls -ld /home/accounting
drwxr-xr-x. 2 root root 6 Jan 13 10:18 /home/accounting
[root@localhost Downloads]#
Tiếp theo, hãy Cung cấp cho nhân sở hữu nhóm đến kế toán nhóm.
[root@localhost Downloads]# chgrp -v accounting /home/accounting/
changed group of ‘/home/accounting/’ from root to accounting
[root@localhost Downloads]# ls -ld /home/accounting/
drwxr-xr-x. 2 root accounting 6 Jan 13 10:18 /home/accounting/
[root@localhost Downloads]#
Bây giờ, mọi người trong nhóm kế toán đã đọc và thực thi quyền đối với / home / Accounting . Họ cũng sẽ cần quyền ghi.
[root@localhost Downloads]# chmod g+w /home/accounting/
[root@localhost Downloads]# ls -ld /home/accounting/
drwxrwxr-x. 2 root accounting 6 Jan 13 10:18 /home/accounting/
[root@localhost Downloads]#
Vì nhóm kế toán có thể xử lý các tài liệu nhạy cảm, chúng tôi cần áp dụng một số quyền hạn chế đối với tổ chức khác hoặc thế giới .
[root@localhost Downloads]# chmod o-rx /home/accounting/
[root@localhost Downloads]# ls -ld /home/accounting/
drwxrwx---. 2 root accounting 6 Jan 13 10:18 /home/accounting/
[root@localhost Downloads]#
groupadd - Được sử dụng để tạo một nhóm mới.
Công tắc điện | Hoạt động |
---|---|
-g | Chỉ định GID cho nhóm |
-K | Ghi đè thông số kỹ thuật cho GID trong /etc/login.defs |
-o | Cho phép ghi đè không cho phép id nhóm không phải duy nhất |
-p | Mật khẩu nhóm, cho phép người dùng tự kích hoạt |
Hãy lập một nhóm mới có tên là bí mật. Chúng tôi sẽ thêm mật khẩu vào nhóm, cho phép người dùng tự thêm mật khẩu đã biết.
[root@localhost]# groupadd secret
[root@localhost]# gpasswd secret
Changing the password for group secret
New Password:
Re-enter new password:
[root@localhost]# exit
exit
[centos@localhost ~]$ newgrp secret Password: [centos@localhost ~]$ groups
secret wheel rdc
[centos@localhost ~]$
Trong thực tế, mật khẩu cho các nhóm không được sử dụng thường xuyên. Các nhóm thứ cấp là đủ và việc chia sẻ mật khẩu giữa những người dùng khác không phải là một phương pháp bảo mật tuyệt vời.
Các groupslệnh được sử dụng để hiển thị người dùng thuộc nhóm nào. Chúng tôi sẽ sử dụng điều này, sau khi thực hiện một số thay đổi đối với người dùng hiện tại của chúng tôi.
usermod được sử dụng để cập nhật các thuộc tính tài khoản.
Sau đây là các công tắc usermod phổ biến .
Công tắc điện | Hoạt động |
---|---|
-a | Thêm, thêm người dùng vào các nhóm bổ sung, chỉ với tùy chọn -G |
-c | Nhận xét, cập nhật giá trị nhận xét của người dùng |
-d | Thư mục chính, cập nhật thư mục chính của người dùng |
-G | Nhóm, thêm hoặc xóa nhóm người dùng phụ |
-g | Nhóm, nhóm chính mặc định của người dùng |
[root@localhost]# groups centos
centos : accounting secret
[root@localhost]#
[root@localhost]# usermod -a -G wheel centos
[root@localhost]# groups centos
centos : accounting wheel secret
[root@localhost]#
Hạn ngạch đĩa CentOS có thể được bật cả hai; cảnh báo cho quản trị viên hệ thống và từ chối quyền truy cập thêm vào ổ lưu trữ cho người dùng trước khi dung lượng ổ đĩa bị vượt quá. Khi một đĩa đầy, tùy thuộc vào những gì nằm trên đĩa, toàn bộ hệ thống có thể ngừng hoạt động cho đến khi được khôi phục.
Bật quản lý hạn ngạch trong CentOS Linux về cơ bản là một quy trình 4 bước -
Step 1 - Cho phép quản lý hạn ngạch cho các nhóm và người dùng trong / etc / fstab.
Step 2 - Đếm lại hệ thống tập tin.
Step 3 - Tạo cơ sở dữ liệu hạn ngạch và tạo bảng sử dụng đĩa.
Step 4 - Chỉ định chính sách hạn ngạch.
Bật Quản lý hạn ngạch trong / etc / fstab
Đầu tiên, chúng tôi muốn sao lưu / etc / fstab filen -
[root@centosLocal centos]# cp -r /etc/fstab ./
Bây giờ chúng ta có một bản sao của / etc / fstab đang làm việc đã biết của chúng ta trong thư mục làm việc hiện tại.
#
# /etc/fstab
# Created by anaconda on Sat Dec 17 02:44:51 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/cl-root / xfs defaults 0 0
UUID = 4b9a40bc-9480-4 /boot xfs defaults 0 0
/dev/mapper/cl-home /home xfs defaults,usrquota,grpquota 0 0
/dev/mapper/cl-swap swap swap defaults 0 0
Chúng tôi đã thực hiện các thay đổi sau đây trong phần tùy chọn của / etc / fstab đối với tập hoặc Nhãn đối với nơi áp dụng hạn ngạch cho người dùng và nhóm.
- usrquota
- grpquota
Như bạn có thể thấy, chúng tôi đang sử dụng xfshệ thống tập tin. Khi sử dụng xfs, có thêm các bước thủ công./homenằm trên cùng một đĩa với /. Điều tra thêm cho thấy / được đặt cho noquota , là một tùy chọn gắn ở mức hạt nhân. Chúng ta phải cấu hình lại các tùy chọn khởi động hạt nhân của mình.
root@localhost rdc]# mount | grep ' / '
/dev/mapper/cl-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
[root@localhost rdc]#
Định cấu hình lại các tùy chọn khởi động nhân cho hệ thống tệp XFS
Bước này chỉ cần thiết với hai điều kiện -
- Khi đĩa / phân vùng chúng tôi đang bật hạn ngạch, đang sử dụng hệ thống tệp xfs
- Khi hạt nhân chuyển tham số noquota tới / etc / fstab tại thời điểm khởi động
Step 1 - Sao lưu / etc / default / grub.
cp /etc/default/grub ~/
Step 2- Sửa đổi / etc / default / grub .
Đây là tệp mặc định.
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
Chúng tôi muốn sửa đổi dòng sau:
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet"
đến
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv
=cl/swap rhgb quiet rootflags=usrquota,grpquota"
Note- Điều quan trọng là chúng tôi sao chép nguyên văn những thay đổi này. Sau khi chúng tôi định cấu hình lại grub.cfg, hệ thống của chúng tôi sẽ không khởi động được nếu có bất kỳ lỗi nào trong cấu hình. Vui lòng thử phần này của hướng dẫn trên hệ thống phi sản xuất.
Step 3 - Sao lưu grub.cfg đang làm việc của bạn
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
Tạo một grub.cfg mới
[root@localhost rdc]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-514.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-514.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-dbba7fa47f73457b96628ba8f3959bfd
Found initrd image: /boot/initramfs-0-rescuedbba7fa47f73457b96628ba8f3959bfd.img
done
[root@localhost rdc]#
Khởi động lại
[root@localhost rdc]#reboot
Nếu tất cả các sửa đổi đều chính xác, chúng tôi sẽ không có khả năng thêm hạn ngạch vào hệ thống tệp xfs .
[rdc@localhost ~]$ mount | grep ' / '
/dev/mapper/cl-root on / type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)
[rdc@localhost ~]$
Chúng tôi đã chuyển các tham số usrquota và grpquota qua grub.
Bây giờ, một lần nữa chỉnh sửa / etc / fstab để bao gồm / kể từ / home trên cùng một đĩa vật lý.
/dev/mapper/cl-root/xfs
defaults,usrquota,grpquota 0 0
Bây giờ hãy kích hoạt cơ sở dữ liệu hạn ngạch.
[root@localhost rdc]# quotacheck -acfvugM
Đảm bảo rằng Hạn ngạch được bật.
[root@localhost rdc]# quotaon -ap
group quota on / (/dev/mapper/cl-root) is on
user quota on / (/dev/mapper/cl-root) is on
group quota on /home (/dev/mapper/cl-home) is on
user quota on /home (/dev/mapper/cl-home) is on
[root@localhost rdc]#
Gỡ bỏ hệ thống tệp
Nếu phân vùng hoặc đĩa tách biệt với phân vùng được khởi động tích cực, chúng tôi có thể gắn lại mà không cần khởi động lại. Nếu hạn ngạch được định cấu hình trên đĩa / phân vùng được khởi động trong thư mục gốc /, chúng tôi có thể cần khởi động lại hệ điều hành. Bắt buộc gắn lại và áp dụng các thay đổi, nhu cầu gắn lại hệ thống tệp có thể khác nhau.
[rdc@localhost ~]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/cl-root 22447404 4081860 18365544 19% /
devtmpfs 903448 0 903448 0% /dev
tmpfs 919308 100 919208 1% /dev/shm
tmpfs 919308 9180 910128 1% /run
tmpfs 919308 0 919308 0% /sys/fs/cgroup
/dev/sda2 1268736 176612 1092124 14% /boot
/dev/mapper/cl-var 4872192 158024 4714168 4% /var
/dev/mapper/cl-home 18475008 37284 18437724 1% /home
tmpfs 183864 8 183856 1% /run/user/1000
[rdc@localhost ~]$
Như chúng ta có thể thấy, khối lượng LVM đang được sử dụng. Vì vậy, thật đơn giản chỉ cần khởi động lại. Thao tác này sẽ remount / home và tải các thay đổi cấu hình / etc / fstab thành cấu hình hoạt động.
Tạo tệp cơ sở dữ liệu hạn ngạch
CentOS hiện có khả năng làm việc với hạn ngạch đĩa trên / tại nhà. Để bật hỗ trợ hạn ngạch đầy đủ, chúng tôi phải chạyquotacheck chỉ huy.
quotacheck sẽ tạo hai tệp -
- aquota.user
- aquota.group
Chúng được sử dụng để lưu trữ thông tin hạn ngạch cho các đĩa / phân vùng đã bật hạn ngạch.
Sau đây là các công tắc trích dẫn phổ biến.
Công tắc điện | Hoạt động |
---|---|
-u | Kiểm tra hạn ngạch người dùng |
-g | Kiểm tra hạn ngạch nhóm |
-c | Hạn ngạch phải được bật cho mỗi hệ thống tệp với hạn ngạch cho phép |
-v | Hiển thị đầu ra dài dòng |
Thêm giới hạn hạn ngạch cho mỗi người dùng
Đối với điều này, chúng tôi sẽ sử dụng lệnh edquota, theo sau là tên người dùng -
[root@localhost rdc]# edquota centos
Disk quotas for user centos (uid 1000):
Filesystem blocks soft hard inodes soft hard
/dev/mapper/cl-root 12 0 0 13 0 0
/dev/mapper/cl-home 4084 0 0 140 0 0
Hãy xem xét từng cột.
Filesystem - Đây là hạn ngạch hệ thống tệp cho người dùng được áp dụng cho
blocks - Người dùng hiện đang sử dụng bao nhiêu khối trên mỗi hệ thống tệp
soft- Đặt khối cho một giới hạn mềm. Giới hạn mềm cho phép người dùng thực hiện hạn ngạch trong một khoảng thời gian nhất định
hard- Đặt khối cho một giới hạn cứng. Giới hạn cứng là tổng hạn ngạch cho phép
inodes - Người dùng hiện đang sử dụng bao nhiêu inodes
soft - Giới hạn inode mềm
hard - Giới hạn inode cứng
Để kiểm tra hạn ngạch hiện tại của chúng tôi với tư cách là người dùng -
[centos@localhost ~]$ quota
Disk quotas for user centos (uid 1000):
Filesystem blocks quota limit grace files quota limit grace
/dev/mapper/cl-home 6052604 56123456 61234568 475 0 0 [centos@localhost ~]$
Sau đây là lỗi được đưa ra cho người dùng khi vượt quá giới hạn hạn ngạch cứng.
[centos@localhost Downloads]$ cp CentOS-7-x86_64-LiveKDE-1611.iso.part ../Desktop/
cp: cannot create regular file ‘../Desktop/CentOS-7-x86_64-LiveKDE-
1611.iso.part’: Disk quota exceeded
[centos@localhost Downloads]$
Như chúng ta có thể thấy, chúng tôi nằm trong hạn ngạch đĩa của người dùng này. Hãy đặt cảnh báo giới hạn mềm. Bằng cách này, người dùng sẽ có thông báo trước trước khi giới hạn hạn ngạch hết hạn. Theo kinh nghiệm, bạn sẽ nhận được những lời phàn nàn của người dùng cuối khi họ bắt đầu làm việc và cần dành 45 phút để xóa tệp để thực sự bắt đầu làm việc.
Với tư cách là Quản trị viên, chúng tôi có thể kiểm tra việc sử dụng hạn ngạch với repquota chỉ huy.
[root@localhost Downloads]# repquota /home
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------------------------
root -- 0 0 0 3 0 0
centos -+ 6189824 56123456 61234568 541 520 540 6days
[root@localhost Downloads]#
Như chúng ta có thể thấy, centos người dùng đã vượt quá hạn ngạch khối cứng của họ và không thể sử dụng thêm dung lượng đĩa trên / home nữa.
- + biểu thị một hạn ngạch cứng đã bị vượt quá trên hệ thống tệp.
Khi lập kế hoạch hạn ngạch, cần phải thực hiện một phép toán nhỏ. Điều mà một Quản trị viên cần biết là: Có bao nhiêu người dùng trên hệ thống? Có bao nhiêu không gian trống để phân bổ giữa những người dùng / nhóm? Có bao nhiêu byte tạo nên một khối trên hệ thống tệp?
Xác định hạn ngạch theo khối liên quan đến không gian đĩa trống. Bạn nên để lại một bộ đệm "an toàn" cho không gian trống trên hệ thống tệp sẽ duy trì trong trường hợp xấu nhất: tất cả hạn ngạch đồng thời bị vượt quá. Điều này đặc biệt là trên một phân vùng được hệ thống sử dụng để ghi nhật ký.
systemdlà cách mới để chạy các dịch vụ trên Linux. systemd có một sysvinit siêu bắt buộc . systemd mang lại thời gian khởi động nhanh hơn cho Linux và hiện là một cách tiêu chuẩn để quản lý các dịch vụ Linux. Trong khi ổn định, systemd vẫn đang phát triển.
systemd như một hệ thống init, được sử dụng để quản lý cả dịch vụ và daemon cần thay đổi trạng thái sau khi nhân Linux đã được khởi động. Bằng cách thay đổi trạng thái bắt đầu, dừng, tải lại và điều chỉnh trạng thái dịch vụ được áp dụng.
Trước tiên, hãy kiểm tra phiên bản systemd hiện đang chạy trên máy chủ của chúng tôi.
[centos@localhost ~]$ systemctl --version
systemd 219
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP
+GCRYPT +GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN
[centos@localhost ~]$
Kể từ phiên bản CentOS 7, được cập nhật đầy đủ tại thời điểm viết bài này, phiên bản systemd 219 là phiên bản ổn định hiện tại.
Chúng tôi cũng có thể phân tích thời gian khởi động máy chủ cuối cùng với systemd-analysis
[centos@localhost ~]$ systemd-analyze
Startup finished in 1.580s (kernel) + 908ms (initrd) + 53.225s (userspace) = 55.713s
[centos@localhost ~]$
Khi thời gian khởi động hệ thống chậm hơn, chúng ta có thể sử dụng lệnh đổ lỗi systemd-analysis .
[centos@localhost ~]$ systemd-analyze blame
40.882s kdump.service
5.775s NetworkManager-wait-online.service
4.701s plymouth-quit-wait.service
3.586s postfix.service
3.121s systemd-udev-settle.service
2.649s tuned.service
1.848s libvirtd.service
1.437s network.service
875ms packagekit.service
855ms gdm.service
514ms firewalld.service
438ms rsyslog.service
436ms udisks2.service
398ms sshd.service
360ms boot.mount
336ms polkit.service
321ms accounts-daemon.service
Khi làm việc với systemd , điều quan trọng là phải hiểu khái niệm đơn vị .Unitshệ thống tài nguyên có biết cách diễn giải không. Các đơn vị được phân thành 12 loại như sau:
- .service
- .socket
- .device
- .mount
- .automount
- .swap
- .target
- .path
- .timer
- .snapshot
- .slice
- .scope
Phần lớn, chúng tôi sẽ làm việc với .service làm mục tiêu đơn vị. Chúng tôi khuyên bạn nên nghiên cứu thêm về các loại khác. Vì chỉ các đơn vị .service sẽ áp dụng cho việc khởi động và dừng các dịch vụ systemd .
Mỗi đơn vị được xác định trong một tệp nằm trong:
/lib/systemd/system - tệp đơn vị cơ sở
/etc/systemd/system - các tệp đơn vị đã sửa đổi bắt đầu tại thời điểm chạy
Quản lý dịch vụ với systemctl
Để làm việc với systemd , chúng ta cần làm quen với lệnh systemctl . Sau đây là các công tắc dòng lệnh phổ biến nhất cho systemctl .
Công tắc điện | Hoạt động |
---|---|
-t | Giá trị được phân tách bằng dấu phẩy của các loại đơn vị như dịch vụ hoặc ổ cắm |
-a | Hiển thị tất cả các đơn vị đã tải |
--tiểu bang | Hiển thị tất cả các đơn vị ở trạng thái xác định, hoặc: tải, phụ, hoạt động, không hoạt động, v.v. |
-H | Thực hiện hoạt động từ xa. Chỉ định Tên máy chủ hoặc máy chủ và người dùng được phân tách bằng @. |
Cách sử dụng systemctl cơ bản
systemctl [operation]
example: systemctl --state [servicename.service]
Để xem nhanh tất cả các dịch vụ đang chạy trên hộp của chúng tôi.
[root@localhost rdc]# systemctl -t service
UNIT LOAD ACTIVE SUB DESCRIPTION
abrt-ccpp.service loaded active exited Install ABRT coredump hook
abrt-oops.service loaded active running ABRT kernel log watcher
abrt-xorg.service loaded active running ABRT Xorg log watcher
abrtd.service loaded active running ABRT Automated Bug Reporting Tool
accounts-daemon.service loaded active running Accounts Service
alsa-state.service loaded active running Manage Sound Card State (restore and store)
atd.service loaded active running Job spooling tools
auditd.service loaded active running Security Auditing Service
avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack
blk-availability.service loaded active exited Availability of block devices
bluetooth.service loaded active running Bluetooth service
chronyd.service loaded active running NTP client/server
Dừng dịch vụ
Trước tiên, hãy dừng dịch vụ bluetooth.
[root@localhost]# systemctl stop bluetooth
[root@localhost]# systemctl --all -t service | grep bluetooth
bluetooth.service loaded inactive dead Bluetooth service
[root@localhost]#
Như chúng ta có thể thấy, dịch vụ bluetooth hiện không hoạt động.
Để bắt đầu lại dịch vụ bluetooth.
[root@localhost]# systemctl start bluetooth
[root@localhost]# systemctl --all -t service | grep bluetooth
bluetooth.service loaded active running Bluetooth service
[root@localhost]#
Note- Chúng tôi không chỉ định bluetooth.service, vì .service được ngụ ý. Một thực tiễn tốt là nghĩ về loại đơn vị phụ trợ cho dịch vụ mà chúng tôi đang xử lý. Vì vậy, kể từ đây, chúng tôi sẽ sử dụng phần mở rộng .service để làm rõ chúng tôi đang thực hiện các hoạt động của đơn vị dịch vụ.
Các hành động chính có thể được thực hiện trên một dịch vụ là:
Khởi đầu | Bắt đầu dịch vụ |
Dừng lại | Dừng một dịch vụ |
Nạp lại | Tải lại cấu hình đang hoạt động của một dịch vụ khi dừng nó (như kill -HUP trong system v init) |
Khởi động lại | Bắt đầu, sau đó dừng một dịch vụ |
Kích hoạt | Bắt đầu một dịch vụ tại thời điểm khởi động |
Vô hiệu hóa | Dừng dịch vụ tự động bắt đầu vào thời gian chạy |
Các hành động trên chủ yếu được sử dụng trong các trường hợp sau:
Khởi đầu | Để đưa một dịch vụ đã được đặt ở trạng thái ngừng hoạt động. |
Dừng lại | Để tạm thời tắt một dịch vụ (ví dụ: khi một dịch vụ phải dừng để truy cập các tệp bị dịch vụ khóa, như khi nâng cấp dịch vụ) |
Nạp lại | Khi tệp cấu hình đã được chỉnh sửa và chúng tôi muốn áp dụng các thay đổi mới trong khi không dừng dịch vụ. |
Khởi động lại | Trong trường hợp tương tự như tải lại, nhưng dịch vụ không hỗ trợ tải lại . |
Kích hoạt | Khi chúng ta muốn một dịch vụ bị vô hiệu hóa chạy lúc khởi động. |
Vô hiệu hóa | Được sử dụng chủ yếu khi có nhu cầu dừng một dịch vụ, nhưng nó bắt đầu khi khởi động. |
Để kiểm tra trạng thái của một dịch vụ -
[root@localhost]# systemctl status network.service
network.service - LSB: Bring up/down networking
Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
Active: active (exited) since Sat 2017-01-14 04:43:48 EST; 1min 31s ago
Docs: man:systemd-sysv-generator(8)
Process: 923 ExecStart = /etc/rc.d/init.d/network start (code=exited, status = 0/SUCCESS)
localhost.localdomain systemd[1]: Starting LSB: Bring up/down networking...
localhost.localdomain network[923]: Bringing up loopback interface: [ OK ]
localhost.localdomain systemd[1]: Started LSB: Bring up/down networking.
[root@localhost]#
Cho chúng tôi thấy trạng thái hiện tại của dịch vụ mạng . Nếu chúng ta muốn xem tất cả các dịch vụ liên quan đến mạng, chúng ta có thể sử dụng -
[root@localhost]# systemctl --all -t service | grep -i network
network.service loaded active exited LSB: Bring up/
NetworkManager-wait-online.service loaded active exited Network Manager
NetworkManager.service loaded active running Network Manager
ntpd.service loaded inactive dead Network Time
rhel-import-state.service loaded active exited Import network
[root@localhost]#
Đối với những người quen thuộc với sysinitphương pháp quản lý dịch vụ, điều quan trọng là phải thực hiện chuyển đổi sang systemd . systemd là cách mới để khởi động và dừng các dịch vụ daemon trong Linux.
systemctllà tiện ích được sử dụng để điều khiển systemd. systemctl cung cấp cho quản trị viên CentOS khả năng thực hiện vô số hoạt động trên systemd bao gồm:
- Định cấu hình đơn vị systemd
- Nhận trạng thái của systemd unsis
- Bắt đầu và dừng dịch vụ
- Bật / tắt các dịch vụ systemd cho thời gian chạy, v.v.
Cú pháp lệnh cho systemctl khá cơ bản, nhưng có thể phức tạp với các công tắc và tùy chọn. Chúng tôi sẽ trình bày các chức năng cơ bản nhất của systemctl cần thiết để quản trị CentOS Linux.
Basic systemctl syntax:
systemctl [OPTIONS] COMMAND [NAME]
Sau đây là các lệnh phổ biến được sử dụng với systemctl :
- start
- stop
- restart
- reload
- status
- is-active
- list-units
- enable
- disable
- cat
- show
Chúng ta đã thảo luận về bắt đầu , dừng , tải lại , khởi động lại , bật và tắt với systemctl. Vì vậy, chúng ta hãy xem xét các lệnh thường được sử dụng còn lại.
trạng thái
Ở dạng đơn giản nhất, lệnh trạng thái có thể được sử dụng để xem toàn bộ trạng thái hệ thống -
[root@localhost rdc]# systemctl status
● localhost.localdomain
State: running
Jobs: 0 queued
Failed: 0 units
Since: Thu 2017-01-19 19:14:37 EST; 4h 5min ago
CGroup: /
├─1 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
├─user.slice
│ └─user-1002.slice
│ └─session-1.scope
│ ├─2869 gdm-session-worker [pam/gdm-password]
│ ├─2881 /usr/bin/gnome-keyring-daemon --daemonize --login
│ ├─2888 gnome-session --session gnome-classic
│ ├─2895 dbus-launch --sh-syntax --exit-with-session
Sản lượng trên đã được cô đọng. Trong trạng thái systemctl thế giới thực sẽ xuất ra khoảng 100 dòng trạng thái quy trình đã xử lý.
Giả sử chúng tôi muốn kiểm tra trạng thái của dịch vụ tường lửa -
[root@localhost rdc]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2017-01-19 19:14:55 EST; 4h 12min ago
Docs: man:firewalld(1)
Main PID: 825 (firewalld)
CGroup: /system.slice/firewalld.service
└─825 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
Như bạn thấy, dịch vụ tường lửa của chúng tôi hiện đang hoạt động và đã hơn 4 giờ.
đơn vị danh sách
Lệnh list-units cho phép chúng ta liệt kê tất cả các đơn vị của một loại nhất định. Hãy kiểm tra các ổ cắm được quản lý bởi systemd -
[root@localhost]# systemctl list-units --type=socket
UNIT LOAD ACTIVE SUB DESCRIPTION
avahi-daemon.socket loaded active running Avahi mDNS/DNS-SD Stack Activation Socket
cups.socket loaded active running CUPS Printing Service Sockets
dbus.socket loaded active running D-Bus System Message Bus Socket
dm-event.socket loaded active listening Device-mapper event daemon FIFOs
iscsid.socket loaded active listening Open-iSCSI iscsid Socket
iscsiuio.socket loaded active listening Open-iSCSI iscsiuio Socket
lvm2-lvmetad.socket loaded active running LVM2 metadata daemon socket
lvm2-lvmpolld.socket loaded active listening LVM2 poll daemon socket
rpcbind.socket loaded active listening RPCbind Server Activation Socket
systemd-initctl.socket loaded active listening /dev/initctl Compatibility Named Pipe
systemd-journald.socket loaded active running Journal Socket
systemd-shutdownd.socket loaded active listening Delayed Shutdown Socket
systemd-udevd-control.socket loaded active running udev Control Socket
systemd-udevd-kernel.socket loaded active running udev Kernel Socket
virtlockd.socket loaded active listening Virtual machine lock manager socket
virtlogd.socket loaded active listening Virtual machine log manager socket
Bây giờ hãy kiểm tra các dịch vụ đang chạy hiện tại -
[root@localhost rdc]# systemctl list-units --type=service
UNIT LOAD ACTIVE SUB DESCRIPTION
abrt-ccpp.service loaded active exited Install ABRT coredump hook
abrt-oops.service loaded active running ABRT kernel log watcher
abrt-xorg.service loaded active running ABRT Xorg log watcher
abrtd.service loaded active running ABRT Automated Bug Reporting Tool
accounts-daemon.service loaded active running Accounts Service
alsa-state.service loaded active running Manage Sound Card State (restore and store)
atd.service loaded active running Job spooling tools
auditd.service loaded active running Security Auditing Service
đang hoạt động
Lệnh đang hoạt động là một ví dụ về các lệnh systemctl được thiết kế để trả về thông tin trạng thái của một đơn vị.
[root@localhost rdc]# systemctl is-active ksm.service
active
con mèo
cat là một trong những lệnh hiếm khi được sử dụng. Thay vì sử dụng cat at shell và nhập đường dẫn đến một tệp đơn vị, chỉ cần sử dụng systemctl cat .
[root@localhost]# systemctl cat firewalld
# /usr/lib/systemd/system/firewalld.service
[Unit]
Description=firewalld - dynamic firewall daemon
Before=network.target
Before=libvirtd.service
Before = NetworkManager.service
After=dbus.service
After=polkit.service
Conflicts=iptables.service ip6tables.service ebtables.service ipset.service
Documentation=man:firewalld(1)
[Service]
EnvironmentFile = -/etc/sysconfig/firewalld
ExecStart = /usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS ExecReload = /bin/kill -HUP $MAINPID
# supress to log debug and error output also to /var/log/messages
StandardOutput = null
StandardError = null
Type = dbus
BusName = org.fedoraproject.FirewallD1
[Install]
WantedBy = basic.target
Alias = dbus-org.fedoraproject.FirewallD1.service
[root@localhost]#
Bây giờ chúng ta đã khám phá cả systemd và systemctl cụ thể hơn, chúng ta hãy sử dụng chúng để quản lý các nguồn lực trong cgroups hoặc nhóm kiểm soát .
cgroups hoặc Control Groups là một tính năng của nhân Linux cho phép quản trị viên phân bổ hoặc giới hạn tài nguyên hệ thống cho các dịch vụ và cả nhóm.
Để liệt kê các nhóm điều khiển đang hoạt động , chúng ta có thể sử dụng lệnh ps sau :
[root@localhost]# ps xawf -eo pid,user,cgroup,args
8362 root - \_ [kworker/1:2]
1 root - /usr/lib/systemd/systemd --switched-
root --system -- deserialize 21
507 root 7:cpuacct,cpu:/system.slice /usr/lib/systemd/systemd-journald
527 root 7:cpuacct,cpu:/system.slice /usr/sbin/lvmetad -f
540 root 7:cpuacct,cpu:/system.slice /usr/lib/systemd/systemd-udevd
715 root 7:cpuacct,cpu:/system.slice /sbin/auditd -n
731 root 7:cpuacct,cpu:/system.slice \_ /sbin/audispd
734 root 7:cpuacct,cpu:/system.slice \_ /usr/sbin/sedispatch
737 polkitd 7:cpuacct,cpu:/system.slice /usr/lib/polkit-1/polkitd --no-debug
738 rtkit 6:memory:/system.slice/rtki /usr/libexec/rtkit-daemon
740 dbus 7:cpuacct,cpu:/system.slice /bin/dbus-daemon --system --
address=systemd: --nofork --nopidfile --systemd-activation
Quản lý tài nguyên, kể từ CentOS 6.X, đã được định nghĩa lại với việc triển khai systemd init . Khi nghĩ Quản lý tài nguyên cho các dịch vụ, điều chính cần tập trung là các nhóm .cgroupsđã nâng cao với systemd về cả chức năng và tính đơn giản.
Mục tiêu của các nhóm trong quản lý tài nguyên là - không một dịch vụ nào có thể làm suy giảm toàn bộ hệ thống. Hoặc không có quy trình dịch vụ đơn lẻ nào (có thể là một tập lệnh PHP được viết kém) sẽ làm tê liệt chức năng máy chủ do tiêu tốn quá nhiều tài nguyên.
cgroups cho phép kiểm soát tài nguyên của các đơn vị đối với các tài nguyên sau:
CPU - Hạn chế các tác vụ chuyên sâu về cpu không quan trọng như các tác vụ ít chuyên sâu khác
Memory - Giới hạn dung lượng bộ nhớ mà một dịch vụ có thể sử dụng
Disks - Giới hạn i / o đĩa
** Thời gian CPU: **
Các tác vụ cần ít ưu tiên CPU hơn có thể có các Lát CPU được cấu hình tùy chỉnh.
Chúng ta hãy xem xét hai dịch vụ sau đây chẳng hạn.
Dịch vụ CPU lịch sự 1
[root@localhost]# systemctl cat polite.service
# /etc/systemd/system/polite.service
[Unit]
Description = Polite service limits CPU Slice and Memory
After=remote-fs.target nss-lookup.target
[Service]
MemoryLimit = 1M
ExecStart = /usr/bin/sha1sum /dev/zero
ExecStop = /bin/kill -WINCH ${MAINPID}
WantedBy=multi-user.target
# /etc/systemd/system/polite.service.d/50-CPUShares.conf
[Service]
CPUShares = 1024
[root@localhost]#
Dịch vụ CPU ác 2
[root@localhost]# systemctl cat evil.service
# /etc/systemd/system/evil.service
[Unit]
Description = I Eat You CPU
After=remote-fs.target nss-lookup.target
[Service]
ExecStart = /usr/bin/md5sum /dev/zero
ExecStop = /bin/kill -WINCH ${MAINPID}
WantedBy=multi-user.target
# /etc/systemd/system/evil.service.d/50-CPUShares.conf
[Service]
CPUShares = 1024
[root@localhost]#
Hãy đặt Dịch vụ lịch sự bằng cách sử dụng mức ưu tiên CPU thấp hơn -
systemctl set-property polite.service CPUShares = 20
/system.slice/polite.service
1 70.5 124.0K - -
/system.slice/evil.service
1 99.5 304.0K - -
Như chúng ta có thể thấy, trong một khoảng thời gian hệ thống không hoạt động bình thường, cả hai tiến trình giả mạo vẫn đang sử dụng chu kỳ CPU. Tuy nhiên, một bộ để có ít thời gian hơn là sử dụng ít thời gian CPU hơn. Với suy nghĩ này, chúng ta có thể thấy cách sử dụng một khoảng thời gian ngắn hơn sẽ cho phép các tác vụ thiết yếu truy cập tốt hơn vào tài nguyên hệ thống.
Để đặt các dịch vụ cho từng tài nguyên, phương thức set-property xác định các tham số sau:
systemctl set-property name parameter=value
CPU Slices | CPUShares |
Giới hạn bộ nhớ | Giới hạn bộ nhớ |
Giới hạn bộ nhớ mềm | MemorySoftLimit |
Khối lượng IO | BlockIOWeight |
Giới hạn thiết bị chặn (được chỉ định trong / volume / path)) | BlockIODeviceWeight |
Đọc IO | BlockIOReadBandwidth |
Ghi đĩa IO | BlockIOReadBandwidth |
Thông thường, các dịch vụ sẽ bị giới hạn bởi việc sử dụng CPU , giới hạn Bộ nhớ và Đọc / Ghi IO .
Sau khi thay đổi từng thứ, cần tải lại systemd và khởi động lại dịch vụ -
systemctl set-property foo.service CPUShares = 250
systemctl daemon-reload
systemctl restart foo.service
Định cấu hình nhóm CG trong CentOS Linux
Để tạo các nhóm tùy chỉnh trong CentOS Linux, trước tiên chúng ta cần cài đặt các dịch vụ và định cấu hình chúng.
Step 1 - Cài đặt libcgroup (nếu chưa cài đặt).
[root@localhost]# yum install libcgroup
Package libcgroup-0.41-11.el7.x86_64 already installed and latest version
Nothing to do
[root@localhost]#
Như chúng ta thấy, mặc định CentOS 7 đã cài đặt libcgroup với trình cài đặt mọi thứ . Việc sử dụng một trình cài đặt tối thiểu sẽ yêu cầu chúng tôi cài đặt các tiện ích libcgroup cùng với bất kỳ phụ thuộc nào.
Step 2 - Khởi động và kích hoạt dịch vụ cgconfig.
[root@localhost]# systemctl enable cgconfig
Created symlink from /etc/systemd/system/sysinit.target.wants/cgconfig.service to /usr/lib/systemd/system/cgconfig.service.
[root@localhost]# systemctl start cgconfig
[root@localhost]# systemctl status cgconfig
● cgconfig.service - Control Group configuration service
Loaded: loaded (/usr/lib/systemd/system/cgconfig.service; enabled; vendor preset: disabled)
Active: active (exited) since Mon 2017-01-23 02:51:42 EST; 1min 21s ago
Main PID: 4692 (code=exited, status = 0/SUCCESS)
Memory: 0B
CGroup: /system.slice/cgconfig.service
Jan 23 02:51:42 localhost.localdomain systemd[1]: Starting Control Group configuration service...
Jan 23 02:51:42 localhost.localdomain systemd[1]: Started Control Group configuration service.
[root@localhost]#
Sau đây là các lệnh phổ biến được sử dụng với Process Management – bg, fg, nohup, ps, pstree, top, kill, killall, free, uptime, nice.
Làm việc với các quy trình
Quick Note: Process PID in Linux
Trong Linux, mọi tiến trình đang chạy đều được cấp một PID hoặc Số ID tiến trình. Đây PID là cách CentOS xác định một quy trình cụ thể. Như chúng ta đã thảo luận, systemd là quá trình đầu tiên được bắt đầu và cung cấp PID là 1 trong CentOS.
Pgrep được sử dụng để lấy PID Linux cho một tên quy trình nhất định.
[root@CentOS]# pgrep systemd
1
[root@CentOS]#
Như đã thấy, lệnh pgrep trả về PID hiện tại của systemd.
Quy trình CentOS cơ bản và Quản lý công việc trong CentOS
Khi làm việc với các quy trình trong Linux, điều quan trọng là phải biết các quy trình nền trước và nền cơ bản được thực hiện như thế nào tại dòng lệnh.
fg - Đưa quá trình lên tiền cảnh
bg - Quá trình chuyển sang nền
jobs - Danh sách các quy trình hiện tại được đính kèm với shell
ctrl+z - Tổ hợp phím Control + z để ngủ quá trình hiện tại
& - Bắt đầu quá trình trong nền
Hãy bắt đầu sử dụng lệnh shell ngủ .sleepsẽ chỉ đơn giản làm như nó được đặt tên, ngủ trong một khoảng thời gian xác định: ngủ .
[root@CentOS ~]$ jobs [root@CentOS ~]$ sleep 10 &
[1] 12454
[root@CentOS ~]$ sleep 20 & [2] 12479 [root@CentOS ~]$ jobs
[1]- Running sleep 10 &
[2]+ Running sleep 20 &
[cnetos@CentOS ~]$
Bây giờ, hãy đưa công việc đầu tiên lên phía trước -
[root@CentOS ~]$ fg 1
sleep 10
Nếu bạn đang theo dõi, bạn sẽ nhận thấy công việc tiền cảnh bị mắc kẹt trong trình bao của bạn. Bây giờ, hãy đặt quá trình ở chế độ ngủ, sau đó bật lại nó ở chế độ nền.
- Nhấn điều khiển + z
- Nhập: bg 1, gửi công việc đầu tiên vào nền và bắt đầu nó.
[root@CentOS ~]$ fg 1 sleep 20 ^Z [1]+ Stopped sleep 20 [root@CentOS ~]$ bg 1
[1]+ sleep 20 &
[root@CentOS ~]$
nohup
Khi làm việc từ shell hoặc terminal, cần lưu ý rằng theo mặc định, tất cả các tiến trình và công việc gắn với shell sẽ kết thúc khi đóng shell hoặc người dùng đăng xuất. Khi sử dụng nohup , quy trình sẽ tiếp tục chạy nếu người dùng đăng xuất hoặc đóng trình bao mà quy trình được đính kèm.
[root@CentOS]# nohup ping www.google.com &
[1] 27299
nohup: ignoring input and appending output to ‘nohup.out’
[root@CentOS]# pgrep ping
27299
[root@CentOS]# kill -KILL `pgrep ping`
[1]+ Killed nohup ping www.google.com
[root@CentOS rdc]# cat nohup.out
PING www.google.com (216.58.193.68) 56(84) bytes of data.
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 1 ttl = 128
time = 51.6 ms
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 2 ttl = 128
time = 54.2 ms
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 3 ttl = 128
time = 52.7 ms
Lệnh ps
Các pslệnh thường được quản trị viên sử dụng để điều tra ảnh chụp nhanh của một quy trình cụ thể. ps thường được sử dụng với grep để lọc ra một quá trình cụ thể để phân tích.
[root@CentOS ~]$ ps axw | grep python
762 ? Ssl 0:01 /usr/bin/python -Es /usr/sbin/firewalld --nofork -nopid
1296 ? Ssl 0:00 /usr/bin/python -Es /usr/sbin/tuned -l -P
15550 pts/0 S+ 0:00 grep --color=auto python
Trong lệnh trên, chúng ta thấy tất cả các quá trình sử dụng trình thông dịch python . Cũng đi kèm với kết quả là lệnh grep của chúng tôi, tìm kiếm chuỗi python .
Sau đây là các công tắc dòng lệnh phổ biến nhất được sử dụng với ps .
Công tắc điện | Hoạt động |
---|---|
a | Chỉ loại trừ các ràng buộc của quy trình báo cáo cho người dùng hiện tại |
x | Hiển thị các quy trình không được gắn với tty hoặc shell |
w | Định dạng hiển thị đầu ra rộng của đầu ra |
e | Hiển thị môi trường sau lệnh |
-e | Chọn tất cả các quy trình |
-o | Đầu ra có định dạng do người dùng xác định |
-u | Hiển thị tất cả các quy trình của một người dùng cụ thể |
-C | Hiển thị tất cả các quy trình theo tên hoặc id quy trình |
--sort | Sắp xếp các quy trình theo định nghĩa |
Để xem tất cả các quy trình được sử dụng bởi không ai -
[root@CentOS ~]$ ps -u nobody PID TTY TIME CMD 1853 ? 00:00:00 dnsmasq [root@CentOS ~]$
Để xem tất cả thông tin về quá trình firewalld -
[root@CentOS ~]$ ps -wl -C firewalld F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 0 762 1 0 80 0 - 81786 poll_s ? 00:00:01 firewalld [root@CentOS ~]$
Hãy xem quy trình nào đang tiêu tốn nhiều bộ nhớ nhất -
[root@CentOS ~]$ ps aux --sort=-pmem | head -10 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND cnetos 6130 0.7 5.7 1344512 108364 ? Sl 02:16 0:29 /usr/bin/gnome-shell cnetos 6449 0.0 3.4 1375872 64440 ? Sl 02:16 0:00 /usr/libexec/evolution-calendar-factory root 5404 0.6 2.1 190256 39920 tty1 Ssl+ 02:15 0:27 /usr/bin/Xorg :0 -background none -noreset -audit 4 -verbose -auth /run/gdm/auth-for-gdm-iDefCt/database -seat seat0 -nolisten tcp vt1 cnetos 6296 0.0 1.7 1081944 32136 ? Sl 02:16 0:00 /usr/libexec/evolution/3.12/evolution-alarm-notify cnetos 6350 0.0 1.5 560728 29844 ? Sl 02:16 0:01 /usr/bin/prlsga cnetos 6158 0.0 1.4 1026956 28004 ? Sl 02:16 0:00 /usr/libexec/gnome-shell-calendar-server cnetos 6169 0.0 1.4 1120028 27576 ? Sl 02:16 0:00 /usr/libexec/evolution-source-registry root 762 0.0 1.4 327144 26724 ? Ssl 02:09 0:01 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid cnetos 6026 0.0 1.4 1090832 26376 ? Sl 02:16 0:00 /usr/libexec/gnome-settings-daemon [root@CentOS ~]$
Xem tất cả các quy trình theo centos người dùng và định dạng, hiển thị đầu ra tùy chỉnh -
[cnetos@CentOS ~]$ ps -u cnetos -o pid,uname,comm
PID USER COMMAND
5802 centos gnome-keyring-d
5812 cnetos gnome-session
5819 cnetos dbus-launch
5820 cnetos dbus-daemon
5888 cnetos gvfsd
5893 cnetos gvfsd-fuse
5980 cnetos ssh-agent
5996 cnetos at-spi-bus-laun
lệnh pstree
pstreetương tự như ps nhưng không thường được sử dụng. Nó hiển thị các quy trình theo kiểu cây gọn gàng hơn.
[centos@CentOS ~]$ pstree
systemd─┬─ModemManager───2*[{ModemManager}]
├─NetworkManager─┬─dhclient
│ └─2*[{NetworkManager}]
├─2*[abrt-watch-log]
├─abrtd
├─accounts-daemon───2*[{accounts-daemon}]
├─alsactl
├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}
│ └─3*[{at-spi-bus-laun}]
├─at-spi2-registr───2*[{at-spi2-registr}]
├─atd
├─auditd─┬─audispd─┬─sedispatch
│ │ └─{audispd}
│ └─{auditd}
├─avahi-daemon───avahi-daemon
├─caribou───2*[{caribou}]
├─cgrulesengd
├─chronyd
├─colord───2*[{colord}]
├─crond
├─cupsd
Tổng sản lượng từ pstree có thể vượt quá 100 dòng. Thông thường, ps sẽ đưa ra nhiều thông tin hữu ích hơn.
lệnh hàng đầu
toplà một trong những lệnh thường được sử dụng nhất khi khắc phục sự cố hiệu suất trong Linux. Nó hữu ích cho số liệu thống kê thời gian thực và giám sát quá trình trong Linux. Sau đây là đầu ra mặc định của đầu khi được hiển thị từ dòng lệnh.
Tasks: 170 total, 1 running, 169 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.3 us, 2.0 sy, 0.0 ni, 95.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1879668 total, 177020 free, 607544 used, 1095104 buff/cache
KiB Swap: 3145724 total, 3145428 free, 296 used. 1034648 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5404 root 20 0 197832 48024 6744 S 1.3 2.6 1:13.22 Xorg
8013 centos 20 0 555316 23104 13140 S 1.0 1.2 0:14.89 gnome-terminal-
6339 centos 20 0 332336 6016 3248 S 0.3 0.3 0:23.71 prlcc
6351 centos 20 0 21044 1532 1292 S 0.3 0.1 0:02.66 prlshprof
Các phím nóng phổ biến được sử dụng khi đang chạy trên cùng ( các phím nóng được truy cập bằng cách nhấn phím khi trên cùng đang chạy trong trình bao của bạn).
Chỉ huy | Hoạt động |
---|---|
b | Bật / tắt đánh dấu đậm trên menu trên cùng |
z | Chu kỳ bảng màu |
l | Xoay tiêu đề trung bình tải |
m | Xoay tiêu đề trung bình của bộ nhớ |
t | Tiêu đề thông tin công việc |
h | Danh sách trợ giúp |
Shift + F | Tùy chỉnh các trường sắp xếp và hiển thị |
Sau đây là các công tắc dòng lệnh phổ biến cho hàng đầu .
Chỉ huy | Hoạt động |
---|---|
-o | Sắp xếp theo cột (có thể thêm dấu - hoặc + để sắp xếp tăng dần hoặc giảm dần) |
-u | Chỉ hiển thị các quy trình từ một người dùng được chỉ định |
-d | Cập nhật thời gian trễ hàng đầu |
-O | Trả về danh sách các cột mà trên cùng có thể áp dụng sắp xếp |
Sắp xếp tùy chọn màn hình trong đầu, trình bày sử dụng Shift + F . Màn hình này cho phép tùy chỉnh các tùy chọn hiển thị và sắp xếp hàng đầu .
Fields Management for window 1:Def, whose current sort field is %MEM
Navigate with Up/Dn, Right selects for move then <Enter> or Left commits,
'd' or <Space> toggles display, 's' sets sort. Use 'q' or <Esc> to end!
* PID = Process Id TGID = Thread Group Id
* USER = Effective User Name ENVIRON = Environment vars
* PR = Priority vMj = Major Faults delta
* NI = Nice Value vMn = Minor Faults delta
* VIRT = Virtual Image (KiB) USED = Res+Swap Size (KiB)
* RES = Resident Size (KiB) nsIPC = IPC namespace Inode
* SHR = Shared Memory (KiB) nsMNT = MNT namespace Inode
* S = Process Status nsNET = NET namespace Inode
* %CPU = CPU Usage nsPID = PID namespace Inode
* %MEM = Memory Usage (RES) nsUSER = USER namespace Inode
* TIME+ = CPU Time, hundredths nsUTS = UTS namespace Inode
* COMMAND = Command Name/Line
PPID = Parent Process pid
UID = Effective User Id
trên cùng , hiển thị các quy trình cho rdc người dùng và được sắp xếp theo mức sử dụng bộ nhớ -
PID USER %MEM PR NI VIRT RES SHR S %CPU TIME+ COMMAND
6130 rdc 6.2 20 0 1349592 117160 33232 S 0.0 1:09.34 gnome-shell
6449 rdc 3.4 20 0 1375872 64428 21400 S 0.0 0:00.43 evolution-calen
6296 rdc 1.7 20 0 1081944 32140 22596 S 0.0 0:00.40 evolution-alarm
6350 rdc 1.6 20 0 560728 29844 4256 S 0.0 0:10.16 prlsga
6281 rdc 1.5 20 0 1027176 28808 17680 S 0.0 0:00.78 nautilus
6158 rdc 1.5 20 0 1026956 28004 19072 S 0.0 0:00.20 gnome-shell-cal
Hiển thị các trường trên cùng hợp lệ (cô đọng) -
[centos@CentOS ~]$ top -O
PID
PPID
UID
USER
RUID
RUSER
SUID
SUSER
GID
GROUP
PGRP
TTY
TPGID
lệnh giết
Các killlệnh được sử dụng để giết một tiến trình từ trình bao lệnh thông qua PID của nó. Khi giết một tiến trình, chúng ta cần chỉ định một tín hiệu để gửi. Tín hiệu cho phép hạt nhân biết cách chúng ta muốn kết thúc quá trình. Các tín hiệu được sử dụng phổ biến nhất là -
SIGTERMđược ngụ ý vì hạt nhân cho phép một quá trình biết rằng nó sẽ sớm dừng lại khi có thể an toàn. SIGTERM tạo cơ hội cho quy trình thoát ra một cách duyên dáng và thực hiện các thao tác thoát an toàn.
SIGHUPhầu hết các daemon sẽ khởi động lại khi được gửi SIGHUP . Điều này thường được sử dụng trên các quy trình khi các thay đổi đã được thực hiện đối với tệp cấu hình.
SIGKILLvì SIGTERM tương đương với việc yêu cầu một quá trình ngừng hoạt động. Kernel cần một tùy chọn để kết thúc một quá trình sẽ không tuân thủ các yêu cầu. Khi một quá trình bị treo, tùy chọn SIGKILL được sử dụng để tắt quá trình một cách rõ ràng.
Để có danh sách tắt tất cả các tín hiệu có thể được gửi với tùy chọn kill , bạn có thể sử dụng tùy chọn -l -
[root@CentOS]# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
[root@CentOS rdc]#
Sử dụng SIGHUP để khởi động lại hệ thống.
[root@CentOS]# pgrep systemd
1
464
500
643
15071
[root@CentOS]# kill -HUP 1
[root@CentOS]# pgrep systemd
1
464
500
643
15196
15197
15198
[root@CentOS]#
pkillsẽ cho phép quản trị viên gửi tín hiệu tiêu diệt bằng tên tiến trình.
[root@CentOS]# pgrep ping
19450
[root@CentOS]# pkill -9 ping
[root@CentOS]# pgrep ping
[root@CentOS]#
killallsẽ giết tất cả các quá trình. Hãy cẩn thận khi sử dụng killall dưới dạng root, vì nó sẽ giết tất cả các tiến trình của tất cả người dùng.
[root@CentOS]# killall chrome
Lệnh miễn phí
freelà một lệnh khá đơn giản thường được sử dụng để kiểm tra nhanh bộ nhớ của hệ thống. Nó hiển thị tổng dung lượng bộ nhớ vật lý và bộ nhớ hoán đổi đã sử dụng.
[root@CentOS]# free
total used free shared buff/cache available
Mem: 1879668 526284 699796 10304 653588 1141412
Swap: 3145724 0 3145724
[root@CentOS]#
Lệnh tốt
nicesẽ cho phép quản trị viên đặt mức độ ưu tiên lập lịch trình của một quy trình về cách sử dụng CPU. Sự thú vị về cơ bản là cách hạt nhân sẽ lên lịch các lát thời gian CPU cho một quá trình hoặc công việc. Theo mặc định, nó được giả định là tiến trình được cấp quyền truy cập bình đẳng vào tài nguyên CPU.
Đầu tiên, hãy sử dụng top để kiểm tra tính tốt đẹp của các quy trình hiện đang chạy.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
28 root 39 19 0 0 0 S 0.0 0.0 0:00.17 khugepaged
690 root 39 19 16808 1396 1164 S 0.0 0.1 0:00.01 alsactl]
9598 rdc 39 19 980596 21904 10284 S 0.0 1.2 0:00.27 tracker-extract
9599 rdc 39 19 469876 9608 6980 S 0.0 0.5 0:00.04 tracker-miner-a
9609 rdc 39 19 636528 13172 8044 S 0.0 0.7 0:00.12 tracker-miner-f
9611 rdc 39 19 469620 8984 6496 S 0.0 0.5 0:00.02 tracker-miner-u
27 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd
637 rtkit 21 1 164648 1276 1068 S 0.0 0.1 0:00.11 rtkit-daemon
1 root 20 0 128096 6712 3964 S 0.3 0.4 0:03.57 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.50 ksoftirqd/0
7 root 20 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:02.07 rcu_sched
Chúng tôi muốn tập trung vào cột NICE do NI mô tả . Phạm vi độ đẹp có thể nằm trong khoảng từ -20 đến dương 19. -20 thể hiện mức độ ưu tiên cao nhất.
nohup nice --20 ping www.google.com &
Lại đẹp
renice cho phép chúng tôi thay đổi mức độ ưu tiên hiện tại của một quy trình đang chạy.
renice 17 -p 30727
Lệnh trên sẽ giảm mức độ ưu tiên của lệnh xử lý ping của chúng ta .
firewalld là bộ điều khiển front-end mặc định cho iptables trên CentOS. Giao diện người dùng firewalld có hai ưu điểm chính so với iptables thô -
Sử dụng các chuỗi và quy tắc trừu tượng hóa vùng dễ định cấu hình và triển khai.
Các bộ quy tắc là động, có nghĩa là các kết nối trạng thái không bị gián đoạn khi các cài đặt được thay đổi và / hoặc sửa đổi.
Hãy nhớ rằng firewalld là trình bao bọc cho iptables - không phải là sự thay thế. Mặc dù các lệnh iptables tùy chỉnh có thể được sử dụng với firewalld , nhưng bạn nên sử dụng firewalld để không phá vỡ chức năng của tường lửa.
Đầu tiên, hãy đảm bảo rằng firewalld đã được khởi động và kích hoạt.
[root@CentOS rdc]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2017-01-26 21:42:05 MST; 3h 46min ago
Docs: man:firewalld(1)
Main PID: 712 (firewalld)
Memory: 34.7M
CGroup: /system.slice/firewalld.service
└─712 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
Chúng ta có thể thấy, firewalld vừa đang hoạt động (để bắt đầu khi khởi động) vừa đang chạy. Nếu không hoạt động hoặc không bắt đầu, chúng tôi có thể sử dụng -
systemctl start firewalld && systemctl enable firewalld
Bây giờ chúng tôi đã cấu hình dịch vụ firewalld của mình, hãy đảm bảo rằng nó đang hoạt động.
[root@CentOS]# firewall-cmd --state
running
[root@CentOS]#
Chúng ta có thể thấy, dịch vụ firewalld có đầy đủ chức năng.
Firewalld hoạt động dựa trên khái niệm về khu vực . Một vùng được áp dụng cho các giao diện mạng thông qua Trình quản lý mạng. Chúng ta sẽ thảo luận về vấn đề này trong việc cấu hình mạng . Nhưng hiện tại, theo mặc định, việc thay đổi vùng mặc định sẽ thay đổi bất kỳ bộ điều hợp mạng nào còn lại ở trạng thái mặc định là "Vùng mặc định".
Hãy xem nhanh từng khu vực xuất hiện với firewalld .
Sr.No. | Vùng & Mô tả |
---|---|
1 | drop Mức độ tin cậy thấp. Tất cả các kết nối đến và gói dữ liệu bị loại bỏ và chỉ các kết nối đi mới có thể thực hiện được thông qua trạng thái |
2 | block Các kết nối đến được trả lời bằng một thông báo icmp cho người khởi xướng biết yêu cầu bị cấm |
3 | public Tất cả các mạng đều bị hạn chế. Tuy nhiên, các kết nối đến đã chọn có thể được cho phép một cách rõ ràng |
4 | external Định cấu hình firewalld cho NAT. Mạng nội bộ vẫn riêng tư nhưng có thể truy cập được |
5 | dmz Chỉ một số kết nối đến mới được phép. Được sử dụng cho các hệ thống cách ly DMZ |
6 | work Theo mặc định, hãy tin tưởng nhiều máy tính hơn trên mạng giả sử hệ thống ở trong môi trường làm việc an toàn |
7 | hone Theo mặc định, nhiều dịch vụ hơn không được lọc. Giả sử một hệ thống nằm trên mạng gia đình, nơi các dịch vụ như NFS, SAMBA và SSDP sẽ được sử dụng |
số 8 | trusted Tất cả các máy trên mạng đều được tin cậy. Hầu hết các kết nối đến đều được phép không bị kiểm soát.This is not meant for interfaces exposed to the Internet |
Các khu vực phổ biến nhất để sử dụng là: công cộng, thả, cơ quan và nhà riêng.
Một số tình huống trong đó mỗi khu vực chung sẽ được sử dụng là:
public- Đây là vùng phổ biến nhất được quản trị viên sử dụng. Nó sẽ cho phép bạn áp dụng các cài đặt tùy chỉnh và tuân theo các thông số kỹ thuật RFC cho các hoạt động trên mạng LAN.
drop- Một ví dụ điển hình về thời điểm sử dụng drop là tại hội nghị bảo mật, trên WiFi công cộng hoặc trên giao diện được kết nối trực tiếp với Internet. drop giả định rằng tất cả các yêu cầu không được yêu cầu đều độc hại bao gồm cả các đầu dò ICMP. Vì vậy mọi yêu cầu ngoài bang sẽ không nhận được hồi âm. Mặt trái của drop là nó có thể phá vỡ chức năng của các ứng dụng trong một số tình huống nhất định yêu cầu tuân thủ RFC nghiêm ngặt.
work- Bạn đang sử dụng mạng LAN công ty bán bảo mật. Nơi tất cả giao thông có thể được coi là an toàn vừa phải. Điều này có nghĩa là nó không phải là WiFi và chúng tôi có thể có IDS, IPS và bảo mật vật lý hoặc 802.1x tại chỗ. Chúng ta cũng nên làm quen với những người sử dụng mạng LAN.
home- Bạn đang sử dụng mạng LAN gia đình. Bạn phải chịu trách nhiệm cá nhân đối với mọi hệ thống và người dùng trên mạng LAN. Bạn biết mọi máy trong mạng LAN và không máy nào bị xâm phạm. Thông thường, các dịch vụ mới được đưa ra để chia sẻ phương tiện giữa các cá nhân đáng tin cậy và bạn không cần phải mất thêm thời gian vì lý do bảo mật.
Các vùng và giao diện mạng hoạt động ở cấp một đến nhiều. Một giao diện mạng chỉ có thể có một vùng duy nhất được áp dụng cho nó tại một thời điểm. Trong khi, một vùng có thể được áp dụng cho nhiều giao diện đồng thời.
Hãy xem những khu vực có sẵn và những khu vực hiện đang được áp dụng.
[root@CentOS]# firewall-cmd --get-zones
work drop internal external trusted home dmz public block
[root@CentOS]# firewall-cmd --get-default-zone
public
[root@CentOS]#
Sẵn sàng để thêm một số quy tắc tùy chỉnh trong firewalld?
Đầu tiên, hãy xem hộp của chúng ta trông như thế nào, đối với một máy quét cổng từ bên ngoài.
bash-3.2# nmap -sS -p 1-1024 -T 5 10.211.55.1
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:36 MST
Nmap scan report for centos.shared (10.211.55.1)
Host is up (0.00046s latency).
Not shown: 1023 filtered ports
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 3.71 seconds
bash-3.2#
Hãy cho phép các yêu cầu đến cổng 80.
Trước tiên, hãy kiểm tra xem vùng nào được áp dụng làm mặc định.
[root@CentOs]# firewall-cmd --get-default-zone
public
[root@CentOS]#
Sau đó, đặt quy tắc cho phép cổng 80 thành vùng mặc định hiện tại.
[root@CentOS]# firewall-cmd --zone=public --add-port = 80/tcp
success
[root@CentOS]#
Bây giờ, hãy chọn hộp của chúng ta sau khi cho phép kết nối cổng 80.
bash-3.2# nmap -sS -p 1-1024 -T 5 10.211.55.1
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:42 MST
Nmap scan report for centos.shared (10.211.55.1)
Host is up (0.00053s latency).
Not shown: 1022 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp closed http
Nmap done: 1 IP address (1 host up) scanned in 3.67 seconds
bash-3.2#
Bây giờ nó cho phép lưu lượng truy cập không mong muốn đến 80.
Hãy đặt vùng mặc định để giảm và xem điều gì sẽ xảy ra với quá trình quét cổng.
[root@CentOS]# firewall-cmd --set-default-zone=drop
success
[root@CentOS]# firewall-cmd --get-default-zone
drop
[root@CentOs]#
Bây giờ chúng ta hãy quét máy chủ lưu trữ có giao diện mạng trong vùng an toàn hơn.
bash-3.2# nmap -sS -p 1-1024 -T 5 10.211.55.1
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:50 MST
Nmap scan report for centos.shared (10.211.55.1)
Host is up (0.00094s latency).
All 1024 scanned ports on centos.shared (10.211.55.1) are filtered
Nmap done: 1 IP address (1 host up) scanned in 12.61 seconds
bash-3.2#
Bây giờ, mọi thứ đều được lọc từ bên ngoài.
Như minh họa bên dưới, máy chủ lưu trữ thậm chí sẽ không phản hồi các yêu cầu ping ICMP khi bị giảm .
bash-3.2# ping 10.211.55.1
PING 10.211.55.1 (10.211.55.1): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Hãy đặt lại vùng mặc định thành công khai .
[root@CentOs]# firewall-cmd --set-default-zone=public
success
[root@CentOS]# firewall-cmd --get-default-zone
public
[root@CentOS]#
Bây giờ hãy kiểm tra bộ quy tắc lọc hiện tại của chúng tôi ở chế độ công khai .
[root@CentOS]# firewall-cmd --zone=public --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s5
sources:
services: dhcpv6-client ssh
ports: 80/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
[root@CentOS rdc]#
Như đã định cấu hình, quy tắc bộ lọc cổng 80 của chúng tôi chỉ nằm trong ngữ cảnh của cấu hình đang chạy. Điều này có nghĩa là khi hệ thống được khởi động lại hoặc dịch vụ firewalld được khởi động lại, quy tắc của chúng tôi sẽ bị hủy.
Chúng tôi sẽ sớm định cấu hình daemon httpd , vì vậy hãy thực hiện các thay đổi của chúng tôi liên tục -
[root@CentOS]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success
[root@CentOS]# systemctl restart firewalld
[root@CentOS]#
Bây giờ quy tắc cổng 80 của chúng tôi trong khu vực công cộng vẫn tồn tại qua các lần khởi động lại và khởi động lại dịch vụ.
Sau đây là các lệnh firewalld phổ biến được áp dụng với firewall-cmd .
Chỉ huy | Hoạt động |
---|---|
firewall-cmd --get-zone | Liệt kê tất cả các vùng có thể được áp dụng cho một giao diện |
firewall-cmd —status | Trả về trạng thái dòng của dịch vụ firewalld |
firewall-cmd --get-default-zone | Nhận vùng mặc định hiện tại |
firewall-cmd --set-default-zone = <zone> | Đặt vùng mặc định thành ngữ cảnh hiện tại |
firewall-cmd --get-active-zone | Nhận các vùng hiện tại trong ngữ cảnh như được áp dụng cho một giao diện |
firewall-cmd --zone = <zone> --list-all | Liệt kê cấu hình của vùng được cung cấp |
firewall-cmd --zone = <zone> --addport = <cổng / giao thức truyền tải> | Áp dụng quy tắc cổng cho bộ lọc vùng |
--dài hạn | Làm cho các thay đổi đối với khu vực liên tục. Cờ được sử dụng nội tuyến với các lệnh sửa đổi |
Đây là những khái niệm cơ bản về quản trị và cấu hình firewalld .
Định cấu hình các dịch vụ tường lửa dựa trên máy chủ trong CentOS có thể là một nhiệm vụ phức tạp trong các tình huống mạng phức tạp hơn. Cách sử dụng và cấu hình nâng cao của firewalld và iptables trong CentOS có thể mất toàn bộ hướng dẫn. Tuy nhiên, chúng tôi đã trình bày những điều cơ bản đủ để hoàn thành phần lớn các công việc hàng ngày.
PHP là một trong những ngôn ngữ web được sử dụng phổ biến nhất hiện nay. Cài đặt LAMP Stack trên CentOS là điều mà mọi quản trị viên hệ thống sẽ cần thực hiện, rất có thể sớm hơn muộn.
A traditional LAMP Stack consists of (L)inux (A)pache (M)ySQL (P)HP.
There are three main components to a LAMP Stack on CentOS −
- Web Server
- Web Development Platform / Language
- Database Server
Note − The term LAMP Stack can also include the following technologies: PostgreSQL, MariaDB, Perl, Python, Ruby, NGINX Webserver.
For this tutorial, we will stick with the traditional LAMP Stack of CentOS GNU Linux: Apache web server, MySQL Database Server, and PHP.
We will actually be using MariaDB. MySQL configuration files, databases and tables are transparent to MariaDB. MariaDB is now included in the standard CentOS repository instead of MySQL. This is due to the limitations of licensing and open-source compliance, since Oracle has taken over the development of MySQL.
The first thing we need to do is install Apache.
[root@CentOS]# yum install httpd
Loaded plugins: fastestmirror, langpacks
base
| 3.6 kB 00:00:00
extras
| 3.4 kB 00:00:00
updates
| 3.4 kB 00:00:00
extras/7/x86_64/primary_d
| 121 kB 00:00:00
Loading mirror speeds from cached hostfile
* base: mirror.sigmanet.com
* extras: linux.mirrors.es.net
* updates: mirror.eboundhost.com
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.4.6-45.el7.centos will be installed
--> Processing Dependency: httpd-tools = 2.4.6-45.el7.centos for package:
httpd-2.4.6-45.el7.centos.x86_64
--> Processing Dependency: /etc/mime.types for package: httpd-2.4.645.el7.centos.x86_64
--> Running transaction check
---> Package httpd-tools.x86_64 0:2.4.6-45.el7.centos will be installed
---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed
--> Finished Dependency Resolution
Installed:
httpd.x86_64 0:2.4.6-45.el7.centos
Dependency Installed:
httpd-tools.x86_64 0:2.4.6-45.el7.centos
mailcap.noarch 0:2.1.41-2.el7
Complete!
[root@CentOS]#
Let's configure httpd service.
[root@CentOS]# systemctl start httpd && systemctl enable httpd
Now, let's make sure the web-server is accessible through firewalld.
bash-3.2# nmap -sS -p 1-1024 -T 5 -sV 10.211.55.1
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-28 02:00 MST
Nmap scan report for centos.shared (10.211.55.1)
Host is up (0.00054s latency).
Not shown: 1022 filtered ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 6.6.1 (protocol 2.0)
80/tcp open http Apache httpd 2.4.6 ((CentOS))
Service detection performed. Please report any incorrect results at
https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 10.82 seconds bash-3.2#
As you can see by the nmap service probe, Apache webserver is listening and responding to requests on the CentOS host.
Install MySQL Database Server
[root@CentOS rdc]# yum install mariadb-server.x86_64 && yum install mariadb-
devel.x86_64 && mariadb.x86_64 && mariadb-libs.x86_64
We are installing the following repository packages for MariaDB −
mariadb-server.x86_64
The main MariaDB Server daemon package.
mariadb-devel.x86_64
Files need to compile from the source with MySQL/MariaDB compatibility.
mariadb.x86_64
MariaDB client utilities for administering MariaDB Server from the command line.
mariadb-libs.x86_64
Common libraries for MariaDB that could be needed for other applications compiled with MySQL/MariaDB support.
Now, let's start and enable the MariaDB Service.
[root@CentOS]# systemctl start mariadb
[root@CentOS]# systemctl enable mariadb
Note − Unlike Apache, we will not enable connections to MariaDB through our host-based firewall (firewalld). When using a database server, it's considered best security practice to only allow local socket connections, unless the remote socket access is specifically needed.
Let's make sure the MariaDB Server is accepting connections.
[root@CentOS#] netstat -lnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
[root@CentOS rdc]#
As we can see, MariaDB is listening on port 3306 tcp. We will leave our host-based firewall (firewalld) blocking incoming connections to port 3306.
Install and Configure PHP
[root@CentOS#] yum install php.x86_64 && php-common.x86_64 && php-mysql.x86_64
&& php-mysqlnd.x86_64 && php-pdo.x86_64 && php-soap.x86_64 && php-xml.x86_64
I'd recommend installing the following php packages for common compatibility −
- php-common.x86_64
- php-mysql.x86_64
- php-mysqlnd.x86_64
- php-pdo.x86_64
- php-soap.x86_64
- php-xml.x86_64
[root@CentOS]# yum install -y php-common.x86_64 php-mysql.x86_64 php-
mysqlnd.x86_64 php-pdo.x86_64 php-soap.x86_64 php-xml.x86_64
This is our simple php file located in the Apache webroot of /var/www/html/
[root@CentOS]# cat /var/www/html/index.php
<html>
<head>
<title>PHP Test Page</title>
</head>
<body>
PHP Install
<?php
echo "We are now running PHP on GNU Centos Linux!<br />"
?>
</body>
</html>
[root@CentOS]#
Let's change the owning group of our page to the system user our http daemon is running under.
[root@CentOS]# chgrp httpd /var/www/html/index.php && chmod g+rx /var/www/html/index.php
---
When requested manually via ncat.
bash-3.2# ncat 10.211.55.1 80
GET / index.php
HTTP/1.1 200 OK
Date: Sat, 28 Jan 2017 12:06:02 GMT
Server: Apache/2.4.6 (CentOS) PHP/5.4.16
X-Powered-By: PHP/5.4.16
Content-Length: 137
Connection: close
Content-Type: text/html; charset=UTF-8
<html>
<head>
<title>PHP Test Page</title>
</head>
<body>
PHP Install
We are now running PHP on GNU Centos Linux!<br />
</body>
</html>
bash-3.2#
PHP and LAMP are very popular web-programming technologies. LAMP installation and configuration is sure to come up on your list of needs as a CentOS Administrator. Easy to use CentOS packages have taken a lot of work from compiling Apache, MySQL, and PHP from the source code.
Python is a widely used interpreted language that has brought professionalism to the world of coding scripted applications on Linux (and other operating systems). Where Perl was once the industry standard, Python has surpassed Perl in many respects.
Some strengths of Python versus Perl are −
Rapid progression in refinement
Libraries that are standard to the language
Readability of the code is thought out in language definition
Many professional frameworks for everything from GUI support to web-development
Python can do anything Perl can do, and in a lot of cases in a better manner. Though Perl still has its place amongst the toolbox of a Linux admin, learning Python is a great choice as a skill set.
The biggest drawbacks of Python are sometimes related to its strengths. In history, Python was originally designed to teach programming. At times, its core foundations of "easily readable" and "doing things the right way" can cause unnecessary complexities when writing a simple code. Also, its standard libraries have caused problems in transitioning from versions 2.X to 3.X.
Các tập lệnh Python thực sự được sử dụng ở cốt lõi của CentOS cho các chức năng quan trọng đối với chức năng của hệ điều hành. Do đó, điều quan trọng là phải tách biệt môi trường Python phát triển của chúng tôi khỏi môi trường Python cốt lõi của CentOS.
Đối với người mới bắt đầu, hiện có hai phiên bản Python: Python 2.X và Python 3.X.
Cả hai giai đoạn vẫn đang trong quá trình sản xuất tích cực, mặc dù phiên bản 2.X đang nhanh chóng kết thúc khấu hao (và đã được một vài năm). Lý do cho hai phiên bản Python đang hoạt động về cơ bản là sửa chữa những thiếu sót của phiên bản 2.X. Điều này yêu cầu một số chức năng cốt lõi của phiên bản 3.X phải được làm lại theo những cách nó không thể hỗ trợ một số tập lệnh phiên bản 2.X.
Về cơ bản, cách tốt nhất để vượt qua quá trình chuyển đổi này là: Phát triển cho 3.X và cập nhật phiên bản 2.X mới nhất cho các tập lệnh cũ. Hiện tại, CentOS 7.X dựa trên bản sửa đổi nửa mới của phiên bản 2.X.
Theo bài viết này, các phiên bản Python hiện tại nhất là: 3.4.6 và 2.7.13.
Đừng để điều này gây nhầm lẫn hoặc rút ra bất kỳ kết luận nào của Python. Thiết lập môi trường Python thực sự khá đơn giản. Với các khung và thư viện Python, nhiệm vụ này thực sự rất dễ thực hiện.
Trước khi thiết lập môi trường Python, chúng ta cần một môi trường lành mạnh. Để bắt đầu, hãy đảm bảo cài đặt CentOS của chúng tôi được cập nhật đầy đủ và cài đặt một số tiện ích xây dựng.
Step 1 - Cập nhật CentOS.
[root@CentOS]# yum -y update
Step 2 - Cài đặt các tiện ích xây dựng.
[root@CentOS]# yum -y groupinstall "development tools"
Step 3 - Cài đặt một số gói cần thiết.
[root@CentOS]# yum install -y zlib-dev openssl-devel sqlite-devel bip2-devel
Bây giờ chúng ta cần cài đặt Python 2.X và 3.X hiện tại từ nguồn.
- Tải xuống các kho lưu trữ đã nén
- Giải nén tệp
- Biên dịch mã nguồn
Hãy bắt đầu bằng cách tạo một thư mục xây dựng cho mỗi bản cài đặt Python trong / usr / src /
[root@CentOS]# mkdir -p /usr/src/pythonSource
Bây giờ chúng ta hãy tải xuống các tarball nguồn cho mỗi -
[root@CentOS]# wget https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tar.xz
[root@CentOS]# wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
Bây giờ chúng ta cần giải nén từng thứ từ kho lưu trữ.
Step 1 - Cài đặt xz-libs và giải nén tarball.
[root@CentOS]# yum install xz-libs
[root@CentOS python3]# xz -d ./*.xz
[root@CentOS python3]# ls
Python-2.7.13.tar Python-3.6.0.tar
[root@CentOS python3]#
Step 2 - Bỏ mở từng trình cài đặt khỏi tarball của nó.
[root@CentOS]# tar -xvf ./Python-2.7.13.tar
[root@CentOS]# tar -xvf ./Python-3.6.0.tar
Step 3 - Nhập từng thư mục và chạy script config.
[root@CentOS]# ./configure --prefix=/usr/local
root@CentOS]# make altinstall
Note - Hãy chắc chắn để sử dụng altinstallvà không cài đặt. Điều này sẽ ngăn cách CentOS và các phiên bản phát triển của Python. Nếu không, bạn có thể phá vỡ chức năng của CentOS.
Bây giờ bạn sẽ thấy quá trình biên dịch bắt đầu. Lấy một tách cà phê và nghỉ 15 phút cho đến khi hoàn thành. Vì chúng tôi đã cài đặt tất cả các phụ thuộc cần thiết cho Python, nên quá trình biên dịch sẽ hoàn tất mà không có lỗi.
Hãy đảm bảo rằng chúng tôi đã cài đặt phiên bản 2.X mới nhất của Python.
[root@CentOS Python-2.7.13]# /usr/local/bin/python2.7 -V
Python 2.7.13
[root@CentOS Python-2.7.13]#
Note - Bạn sẽ muốn tiền tố dòng shebang trỏ đến môi trường phát triển của chúng tôi cho Python 2.X.
[root@CentOS Python-2.7.13]# cat ver.py
#!/usr/local/bin/python2.7
import sys
print(sys.version)
[root@CentOS Python-2.7.13]# ./ver.py
2.7.13 (default, Jan 29 2017, 02:24:08)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]
Cứ như vậy, chúng tôi có các bản cài đặt Python riêng cho phiên bản 2.X và 3.X. Từ đây, chúng ta có thể sử dụng từng tiện ích nhưpip và virtualenv để giảm bớt gánh nặng quản lý môi trường Python và cài đặt gói.
Ruby là một ngôn ngữ tuyệt vời cho cả phát triển web và quản trị Linux. Ruby cung cấp nhiều lợi ích được tìm thấy trong tất cả các ngôn ngữ đã thảo luận trước đó: PHP, Python và Perl.
Để cài đặt Ruby, cách tốt nhất là khởi động thông qua rbenv cho phép quản trị viên dễ dàng cài đặt và quản lý Môi trường Ruby.
Phương pháp khác để cài đặt Ruby là các gói CentOS tiêu chuẩn cho Ruby. Khuyến khích sử dụng phương pháp rbenv với tất cả các lợi ích của nó. Các gói CentOS sẽ dễ dàng hơn đối với những người không am hiểu về Ruby.
Đầu tiên, hãy lấy một số phụ thuộc cần thiết cho trình cài đặt rbenv.
- git-core
- zlib
- zlib-devel
- gcc-c++
- patch
- readline
- readline-devel
- libyaml-devel
- libffi-devel
- openssl-devel
- make
- bzzip2
- autoconf
- automake
- libtool
- bison
- curl
- sqlite-devel
Hầu hết các gói này có thể đã được cài đặt tùy thuộc vào các tùy chọn và vai trò đã chọn khi cài đặt CentOS. Tốt là bạn nên cài đặt mọi thứ mà chúng ta không chắc chắn vì điều này có thể giúp bạn bớt đau đầu hơn khi cài đặt các gói yêu cầu phụ thuộc.
[root@CentOS]# yum -y install git-core zlib zlib-devel gcc-c++ patch readline
readline-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf
automake libtool bison curl sqlite-devel
Phương pháp 1: rbenv cho Môi trường phát triển Ruby động
Bây giờ với tư cách là người dùng sẽ sử dụng Ruby -
[rdc@CentOS ~]$ git clone https://github.com/rbenv/rbenv.git
[rdc@CentOS ~]$ https://github.com/rbenv/ruby-build.git
ruby-build sẽ cung cấp các tính năng cài đặt cho rbenv -
Note- Chúng ta cần chuyển sang root hoặc người dùng quản trị trước khi chạy install.sh
[rdc@CentOS ruby-build]$ cd ~/ruby-build
[rdc@CentOS ruby-build]# ./install.sh
Hãy đặt shell của chúng tôi cho rbenv và đảm bảo rằng chúng tôi đã cài đặt các tùy chọn chính xác.
[rdc@CentOS ~]$ source ~/rbenv/rbenv.d/exec/gem-rehash.bash [rdc@CentOS ruby-build]$ ~/rbenv/bin/rbenv
rbenv 1.1.0-2-g4f8925a
Usage: rbenv <command> [<args>]
Một số lệnh rbenv hữu ích là:
Lệnh | Hoạt động |
---|---|
địa phương | Đặt hoặc hiển thị phiên bản Ruby dành riêng cho ứng dụng cục bộ |
toàn cầu | Đặt hoặc hiển thị phiên bản Ruby toàn cầu |
vỏ sò | Đặt hoặc hiển thị phiên bản Ruby dành riêng cho trình bao |
Tải về | Cài đặt phiên bản Ruby bằng ruby-build |
gỡ cài đặt | Gỡ cài đặt một phiên bản Ruby cụ thể |
rehash | Nhấn mạnh lại các miếng chêm rbenv (chạy điều này sau khi cài đặt các tệp thực thi) |
phiên bản | Hiển thị phiên bản Ruby hiện tại và nguồn gốc của nó |
phiên bản | Liệt kê tất cả các phiên bản Ruby có sẵn cho rbenv |
cái nào | Hiển thị đường dẫn đầy đủ đến tệp thực thi |
thời gian | Liệt kê tất cả các phiên bản Ruby có chứa tệp thực thi đã cho |
Bây giờ hãy cài đặt Ruby -
[rdc@CentOS bin]$ ~/rbenv/bin/rbenv install -v 2.2.1
Sau khi biên dịch hoàn tất -
[rdc@CentOS ~]$ ./ruby -v
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]
[rdc@CentOS ~]$
Bây giờ chúng ta có một môi trường Ruby làm việc với phiên bản cập nhật và hoạt động của nhánh Ruby 2.X.
Phương pháp 2: Cài đặt Ruby từ Gói CentOS
Đây là phương pháp đơn giản nhất. Tuy nhiên, nó có thể bị giới hạn bởi phiên bản và đá quý được đóng gói từ CentOS. Đối với công việc phát triển nghiêm túc, bạn nên sử dụng phương pháp rbenv để cài đặt Ruby.
Cài đặt Ruby, các gói phát triển cần thiết và một số đá quý thông thường.
[root@CentOS rdc]# yum install -y ruby.x86_64 ruby-devel.x86_64 ruby-
libs.x86_64 ruby-gem-json.x86_64 rubygem-rake.noarch
Thật không may, chúng ta còn lại với phiên bản Ruby hơi lỗi thời.
[root@CentOS rdc]# ruby -v
ruby 2.0.0p648 (2015-12-16) [x86_64-linux]
[root@CentOS rdc]#
Perlđã có từ rất lâu. Ban đầu nó được thiết kế như một ngôn ngữ báo cáo được sử dụng để phân tích cú pháp các tệp văn bản. Với mức độ phổ biến ngày càng tăng, Perl đã thêm hỗ trợ mô-đun hoặc CPAN, ổ cắm, phân luồng và các tính năng khác cần thiết bằng một ngôn ngữ kịch bản mạnh mẽ.
Ưu điểm lớn nhất của Perl so với PHP, Python hoặc Ruby là: nó hoàn thành công việc mà ít phiền phức nhất. Triết lý này của Perl không phải lúc nào cũng có nghĩa là nó sẽ hoàn thành công việc theo đúng cách. Tuy nhiên, đối với các tác vụ quản trị trên Linux, Perl được coi là sự lựa chọn hàng đầu cho một ngôn ngữ kịch bản.
Một số lợi thế của Perl so với Python hoặc Ruby là:
Xử lý văn bản mạnh mẽ
Perl làm cho việc viết các tập lệnh trở nên nhanh chóng và bẩn (thường thì một tập lệnh Perl sẽ ngắn hơn vài chục dòng so với một đoạn mã tương đương trong Python hoặc Ruby)
Perl có thể làm bất cứ điều gì (gần như)
Một số hạn chế của Perl là -
Cú pháp có thể gây nhầm lẫn
Phong cách mã hóa trong Perl có thể là duy nhất và hợp tác sa lầy
Perl không thực sự hướng đối tượng
Thông thường, không có nhiều suy nghĩ về tiêu chuẩn hóa và phương pháp hay nhất khi Perl được sử dụng.
Khi quyết định sử dụng Perl, Python hay PHP; những câu hỏi sau nên được hỏi:
- Ứng dụng này có bao giờ cần phiên bản không?
- Có bao giờ người khác cần sửa đổi mã không?
- Liệu những người khác có cần sử dụng ứng dụng này không?
- Ứng dụng này có bao giờ được sử dụng trên máy hoặc kiến trúc CPU khác không?
Nếu câu trả lời cho tất cả những điều trên là "không", thì Perl là một lựa chọn tốt và có thể đẩy nhanh tiến độ về mặt kết quả cuối cùng.
Với điều này đã đề cập, hãy cấu hình máy chủ CentOS của chúng tôi để sử dụng phiên bản Perl mới nhất.
Trước khi cài đặt Perl, chúng ta cần hiểu về sự hỗ trợ cho Perl. Chính thức, Perl chỉ được hỗ trợ trở lại như hai phiên bản ổn định cuối cùng. Vì vậy, chúng tôi muốn đảm bảo giữ cho môi trường phát triển của chúng tôi được cách ly với phiên bản CentOS.
Lý do cho sự cô lập là: nếu ai đó phát hành một công cụ trong Perl cho cộng đồng CentOS, nhiều khả năng nó sẽ được sửa đổi để hoạt động trên Perl như được vận chuyển với CentOS. Tuy nhiên, chúng tôi cũng muốn cài đặt phiên bản mới nhất cho mục đích phát triển. Giống như Python, CentOS cung cấp Perl tập trung vào độ tin cậy và không vượt trội.
Hãy kiểm tra phiên bản Perl hiện tại của chúng tôi trên CentOS 7.
[root@CentOS]# perl -v
This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi
Chúng tôi hiện đang chạy Perl 5.16.3. Phiên bản mới nhất tính đến thời điểm viết bài này là: perl-5.24.0
Chúng tôi chắc chắn muốn nâng cấp phiên bản của mình, có thể sử dụng các mô-đun Perl cập nhật trong mã của chúng tôi. May mắn thay, có một công cụ tuyệt vời để duy trì môi trường Perl và giữ cho phiên bản CentOS của Perl bị cô lập. Nó được gọi làperlbrew.
Hãy cài đặt Perl Brew.
[root@CentOS]# curl -L https://install.perlbrew.pl | bash
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 170 100 170 0 0 396 0 --:--:-- --:--:-- --:--:-- 397
100 1247 100 1247 0 0 1929 0 --:--:-- --:--:-- --:--:-- 1929
Bây giờ chúng ta đã cài đặt Perl Brew, hãy tạo môi trường cho phiên bản mới nhất của Perl.
Đầu tiên, chúng ta sẽ cần phiên bản Perl hiện đã được cài đặt để khởi động quá trình cài đặt perlbrew. Do đó, hãy lấy một số mô-đun Perl cần thiết từ kho lưu trữ CentOS.
Note - Khi có sẵn, chúng tôi luôn muốn sử dụng mô-đun CentOS Perl so với CPAN với cài đặt CentOS Perl của chúng tôi.
Step 1 - Cài đặt mô-đun CentOS Perl Make :: Maker.
[root@CentOS]# yum -y install perl-ExtUtils-MakeMaker.noarch
Step 2 - Cài đặt phiên bản mới nhất của perl.
[root@CentOS build]# source ~/perl5/perlbrew/etc/bashrc
[root@CentOS build]# perlbrew install -n -j4 --threads perl-5.24.1
Các tùy chọn chúng tôi đã chọn cho cài đặt Perl của chúng tôi là -
n - Không có bài kiểm tra
j4 - Thực hiện song song 4 luồng cho các quy trình cài đặt (chúng tôi đang sử dụng CPU quadcore)
threads - Bật hỗ trợ phân luồng cho Perl
Sau khi cài đặt của chúng tôi được thực hiện thành công, hãy chuyển sang môi trường Perl mới nhất của chúng tôi.
[root@CentOS]# ~/perl5/perlbrew/bin/perlbrew use perl-5.24.1
A sub-shell is launched with perl-5.24.1 as the activated perl. Run 'exit' to finish it.
[root@CentOS]# perl -v
This is perl 5, version 24, subversion 1 (v5.24.1) built for x86_64-linuxthread-multi
(with 1 registered patch, see perl -V for more detail)
Copyright 1987-2017, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the GNU General
Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on this system
using "man perl" or "perldoc perl". If you have access to the Internet, point your
browser at http://www.perl.org/, the Perl Home Page.
[root@CentOS]#
Phiên bản perl in script perl đơn giản chạy trong ngữ cảnh của môi trường perlbrew của chúng tôi -
[root@CentOS]# cat ./ver.pl
#!/usr/bin/perl
print $^V . "\n";
[root@CentOS]# perl ./ver.pl
v5.24.1
[root@CentOS]#
Sau khi perl được cài đặt, chúng tôi có thể tải các mô-đun cpan bằng cpanm của perl brew -
[root@CentOS]# perl-brew install-cpanm
Bây giờ, hãy sử dụng trình cài đặt cpanm để tạo mô-đun LWP với phiên bản Perl 5.24.1 hiện tại của chúng tôi trong perl brew.
Step 1 - Chuyển sang ngữ cảnh của phiên bản Perl hiện tại của chúng tôi.
[root@CentOS ~]# ~/perl5/perlbrew/bin/perlbrew use perl-5.24.1
Một sub-shell được khởi chạy với perl-5.24.1 là perl được kích hoạt. Chạy 'exit' để hoàn thành nó.
[root@CentOS ~]#
Step 2 - Cài đặt LWP User Agent Perl Module.
[root@CentOS ~]# ~/perl5/perlbrew/bin/cpanm -i LWP::UserAgent
Step 3 - Bây giờ hãy kiểm tra môi trường Perl của chúng ta với mô-đun CPAN mới.
[root@CentOS ~]# cat ./get_header.pl
#!/usr/bin/perl
use LWP;
my $browser = LWP::UserAgent->new(); my $response = $browser->get("http://www.slcc.edu/"); unless(!$response->is_success) {
print $response->header("Server");
}
[root@CentOS ~]# perl ./get_header.pl
Microsoft-IIS/8.5 [root@CentOS ~]#
Đây là bạn có nó! Perl Brew làm cho việc cô lập môi trường perl trở nên nhanh chóng và có thể được coi là một phương pháp hay nhất khi mọi thứ trở nên với Perl.
LDAP được gọi là Light Weight Directory Access Protocollà một giao thức được sử dụng để truy cập các vùng chứa dịch vụ X.500 trong một doanh nghiệp được biết đến từ một thư mục. Những ai đã quen thuộc với Quản trị Windows Server có thể nghĩ về bản chất LDAP rất giống với Active Directory. Nó thậm chí còn là một khái niệm được sử dụng rộng rãi để kết hợp các máy trạm Windows thành một doanh nghiệp OpenLDAP CentOS. Ở phạm vi khác, máy trạm CentOS Linux có thể chia sẻ tài nguyên và tham gia với chức năng cơ bản trong Miền Windows.
Triển khai LDAP trên CentOS dưới dạng Tác nhân máy chủ thư mục, Tác nhân hệ thống thư mục hoặc DSA (các từ viết tắt này đều là một và giống nhau) tương tự như cài đặt Novell Netware cũ hơn bằng cách sử dụng cấu trúc Cây thư mục với NDS.
Lịch sử tóm tắt của LDAP
LDAP về cơ bản được tạo ra như một cách hiệu quả để truy cập các thư mục X.500 với các tài nguyên doanh nghiệp. Cả X.500 và LDAP đều có chung các đặc điểm và giống nhau đến mức máy khách LDAP có thể truy cập thư mục X.500 với một số trình trợ giúp. Mặc dù LDAP cũng có máy chủ thư mục riêng được gọi làslapd. Sự khác biệt chính giữa LDAP và DAP là, phiên bản nhẹ được thiết kế để hoạt động trên TCP.
Trong khi DAP sử dụng Mô hình OSI đầy đủ. Với sự ra đời của Internet, TCP / IP và Ethernet nổi bật trong các mạng ngày nay, hiếm khi bắt gặp việc cấy ghép Dịch vụ Thư mục bằng cách sử dụng cả thư mục doanh nghiệp DAP và X.500 gốc bên ngoài các mô hình điện toán kế thừa cụ thể.
Các thành phần chính được sử dụng với openldap cho CentOS Linux là:
openldap | Thư viện hỗ trợ LDAP |
---|---|
openldap-server | Máy chủ LDAP |
openldap-client | Ứng dụng khách LDAP |
openldap-devel | Thư viện phát triển cho OpenLDAP |
compay-openldap | Thư viện được chia sẻ OpenLDAP |
tát | Daemon máy chủ thư mục của OpenLDAP |
slurpd | Được sử dụng để sao chép LDAP trên một miền doanh nghiệp |
Note - Khi đặt tên cho doanh nghiệp của bạn, cách tốt nhất là sử dụng .localTLD. Việc sử dụng .net hoặc .com có thể gây ra khó khăn khi tách biệt cơ sở hạ tầng tên miền trực tuyến và nội bộ. Hãy tưởng tượng công việc bổ sung cho một công ty trong nội bộ sử dụng acme.com cho cả hoạt động bên ngoài và nội bộ. Do đó, có thể là khôn ngoan khi có các tài nguyên Internet được gọi là acme.com hoặc acme.net . Sau đó, tài nguyên doanh nghiệp mạng cục bộ được mô tả dưới dạng acme.local . Điều này sẽ đòi hỏi việc định cấu hình các bản ghi DNS, nhưng sẽ phải trả giá bằng sự đơn giản, hùng biện và bảo mật.
Cài đặt Open LDAP trên CentOS
Cài đặt openldap, openldap-server, openldap-client và các công cụ di chuyển từ YUM .
[root@localhost]# yum -y install openldap openldap-servers openldap-clients
migration tools
Loaded plugins: fastestmirror, langpacks
updates
| 3.4 kB 00:00:00
updates/7/x86_64/primary_db
| 2.2 MB 00:00:05
Determining fastest mirrors
(1/2): extras/7/x86_64/primary_db
| 121 kB 00:00:01
(2/2): base/7/x86_64/primary_db
| 5.6 MB 00:00:16
Package openldap-2.4.40-13.el7.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package openldap-clients.x86_64 0:2.4.40-13.el7 will be installed
---> Package openldap-servers.x86_64 0:2.4.40-13.el7 will be installed
--> Finished Dependency Resolution
base/7/x86_64/group_gz
| 155 kB 00:00:00
Dependencies Resolved
===============================================================================
===============================================================================
Package Arch
Version Repository Size
===============================================================================
===============================================================================
Installing:
openldap-clients x86_64
2.4.40-13.el7 base 188 k
openldap-servers x86_64
2.4.40-13.el7 base 2.1 M
Transaction Summary
===============================================================================
===============================================================================
Install 2 Packages
Total download size: 2.3 M
Installed size: 5.3 M
Downloading packages:
Installed:
openldap-clients.x86_64 0:2.4.40-13.el7
openldap-servers.x86_64 0:2.4.40-13.el7
Complete!
[root@localhost]#
Bây giờ, hãy bắt đầu và kích hoạt dịch vụ tát -
[root@centos]# systemctl start slapd
[root@centos]# systemctl enable slapd
Tại thời điểm này, hãy đảm bảo rằng chúng ta có cấu trúc openldap trong / etc / openldap .
root@localhost]# ls /etc/openldap/
certs check_password.conf ldap.conf schema slapd.d
[root@localhost]#
Sau đó, hãy đảm bảo rằng dịch vụ của chúng tôi đang chạy.
root@centos]# netstat -antup | grep slapd
tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 1641/slapd
tcp6 0 0 :::389 :::* LISTEN 1641/slapd
[root@centos]#
Tiếp theo, hãy cấu hình cài đặt Open LDAP của chúng tôi .
Đảm bảo rằng người dùng ldap hệ thống của chúng tôi đã được tạo.
[root@localhost]# id ldap
uid=55(ldap) gid=55(ldap) groups=55(ldap)
[root@localhost]#
Tạo thông tin đăng nhập LDAP của chúng tôi.
[root@localhost]# slappasswd
New password:
Re-enter new password:
{SSHA}20RSyjVv6S6r43DFPeJgASDLlLoSU8g.a10
[root@localhost]#
Chúng ta cần lưu đầu ra từ slappasswd.
Định cấu hình mở LDAP
Step 1 - Cấu hình LDAP cho miền và thêm người dùng quản trị.
Đầu tiên, chúng tôi muốn thiết lập môi trường openLDAP của mình. Sau đây là một mẫu để sử dụng với lệnh ldapmodify .
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=vmnet,dc=local
dn: olcDatabase = {2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=ldapadm,dc=vmnet,dc=local
dn: olcDatabase = {2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: <output from slap
Thực hiện thay đổi đối với: /etc/openldap/slapd.d/cn=config/olcDatabase = {1} monitor.ldif bằng lệnh ldapmodify.
[root@localhost]# ldapmodify -Y EXTERNAL -H ldapi:/// -f /home/rdc/Documents/db.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase = {2}hdb,cn=config"
modifying entry "olcDatabase = {2}hdb,cn=config"
modifying entry "olcDatabase = {2}hdb,cn=config"
[root@localhost cn=config]#
Hãy kiểm tra cấu hình LDAP đã sửa đổi.
root@linux1 ~]# vi /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif
[root@centos]# cat /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 a163f14c
dn: olcDatabase = {2}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
structuralObjectClass: olcHdbConfig
entryUUID: 1bd9aa2a-8516-1036-934b-f7eac1189139
creatorsName: cn=config
createTimestamp: 20170212022422Z
olcSuffix: dc=vmnet,dc=local
olcRootDN: cn=ldapadm,dc=vmnet,dc=local
olcRootPW:: e1NTSEF1bUVyb1VzZTRjc2dkYVdGaDY0T0k =
entryCSN: 20170215204423.726622Z#000000#000#000000
modifiersName: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20170215204423Z
[root@centos]#
Như bạn có thể thấy, các sửa đổi LDAP dành cho doanh nghiệp của chúng tôi đã thành công.
Tiếp theo, chúng tôi muốn tạo chứng chỉ ssl tự ký cho OpenLDAP. Điều này sẽ bảo mật thông tin liên lạc giữa máy chủ doanh nghiệp và máy khách.
Step 2 - Tạo chứng chỉ tự ký cho OpenLDAP.
Chúng tôi sẽ sử dụng openssl để tạo chứng chỉ ssl tự ký. Đi đến chương tiếp theo,Create LDAP SSL Certificate with opensslđể được hướng dẫn bảo mật thông tin liên lạc với OpenLDAP. Sau đó, khi chứng chỉ ssl được định cấu hình, chúng ta sẽ hoàn thành cấu hình doanh nghiệp OpenLDAP của mình.
Step 3 - Cấu hình OpenLDAP để sử dụng giao tiếp an toàn với chứng chỉ.
Tạo tệp certs.ldif trong vim với thông tin sau:
dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/yourGeneratedCertFile.pem
dn: cn=config
changetype: modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/youGeneratedKeyFile.pem
Tiếp theo, một lần nữa, sử dụng lệnh ldapmodify để hợp nhất các thay đổi vào cấu hình OpenLDAP.
[root@centos rdc]# ldapmodify -Y EXTERNAL -H ldapi:/// -f certs.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"
[root@centos]#
Cuối cùng, hãy kiểm tra cấu hình OpenLADP của chúng tôi.
[root@centos]# slaptest -u
config file testing succeeded
[root@centos]#
Step 4 - Thiết lập cơ sở dữ liệu tát nước.
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG &&
chown ldap:ldap /var/lib/ldap/*
Cập nhật Lược đồ OpenLDAP.
Thêm lược đồ LDAP cosine và nis.
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
Cuối cùng, tạo lược đồ doanh nghiệp và thêm nó vào cấu hình OpenLDAP hiện tại.
Sau đây là tên miền vmnet. cục bộ với Quản trị viên LDAP được gọi là ldapadm .
dn: dc=vmnet,dc=local
dc: vmnet
objectClass: top
objectClass: domain
dn: cn=ldapadm ,dc=vmnet,dc=local
objectClass: organizationalRole
cn: ldapadm
description: LDAP Manager
dn: ou = People,dc=vmnet,dc=local
objectClass: organizationalUnit
ou: People
dn: ou = Group,dc=vmnet,dc=local
objectClass: organizationalUnit
ou: Group
Cuối cùng, nhập nó vào lược đồ OpenLDAP hiện tại.
[root@centos]# ldapadd -x -W -D "cn=ldapadm,dc=vmnet,dc=local" -f ./base.ldif
Enter LDAP Password:
adding new entry "dc=vmnet,dc=local"
adding new entry "cn=ldapadm ,dc=vmnet,dc=local"
adding new entry "ou=People,dc=vmnet,dc=local"
adding new entry "ou=Group,dc=vmnet,dc=local"
[root@centos]#
Step 5 - Thiết lập Người dùng Doanh nghiệp OpenLDAP.
Mở vim hoặc trình soạn thảo văn bản yêu thích của bạn và sao chép định dạng sau. Điều này được thiết lập cho người dùng có tên "entacct" trên miền LDAP "vmnet.local".
dn: uid=entacct,ou=People,dc=vmnet,dc=local
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: entacct
uid: entacct
uidNumber: 9999
gidNumber: 100
homeDirectory: /home/enyacct
loginShell: /bin/bash
gecos: Enterprise User Account 001
userPassword: {crypt}x
shadowLastChange: 17058
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
Bây giờ nhập các tệp ở trên, như đã lưu, vào Lược đồ OpenLdap.
[root@centos]# ldapadd -x -W -D "cn=ldapadm,dc=vmnet,dc=local" -f entuser.ldif
Enter LDAP Password:
adding new entry "uid=entacct,ou=People,dc=vmnet,dc=local"
[root@centos]#
Trước khi người dùng có thể truy cập LDAP Enterprise, chúng tôi cần chỉ định mật khẩu như sau:
ldappasswd -s password123 -W -D "cn=ldapadm,dc=entacct,dc=local" -x "uid=entacct
,ou=People,dc=vmnet,dc=local"
-s chỉ định mật khẩu cho người dùng
-x là tên người dùng mà mật khẩu cập nhật được áp dụng
-D là * tên phân biệt "để xác thực dựa trên lược đồ LDAP.
Cuối cùng, trước khi đăng nhập vào tài khoản Enterprise, hãy kiểm tra mục nhập OpenLDAP của chúng tôi .
[root@centos rdc]# ldapsearch -x cn=entacct -b dc=vmnet,dc=local
# extended LDIF
#
# LDAPv3
# base <dc=vmnet,dc=local> with scope subtree
# filter: cn=entacct
# requesting: ALL
#
# entacct, People, vmnet.local
dn: uid=entacct,ou=People,dc=vmnet,dc=local
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: entacct
uid: entacct
uidNumber: 9999
gidNumber: 100
homeDirectory: /home/enyacct
loginShell: /bin/bash
gecos: Enterprise User Account 001
userPassword:: e2NyeXB0fXg=
shadowLastChange: 17058
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
Việc chuyển đổi những thứ như / etc / passwd và / etc / groups sang xác thực OpenLDAP yêu cầu sử dụng các công cụ di chuyển. Chúng được bao gồm trong gói công cụ di chuyển . Sau đó, được cài đặt vào / usr / share / migrationtools .
[root@centos openldap-servers]# ls -l /usr/share/migrationtools/
total 128
-rwxr-xr-x. 1 root root 2652 Jun 9 2014 migrate_aliases.pl
-rwxr-xr-x. 1 root root 2950 Jun 9 2014 migrate_all_netinfo_offline.sh
-rwxr-xr-x. 1 root root 2946 Jun 9 2014 migrate_all_netinfo_online.sh
-rwxr-xr-x. 1 root root 3011 Jun 9 2014 migrate_all_nis_offline.sh
-rwxr-xr-x. 1 root root 3006 Jun 9 2014 migrate_all_nis_online.sh
-rwxr-xr-x. 1 root root 3164 Jun 9 2014 migrate_all_nisplus_offline.sh
-rwxr-xr-x. 1 root root 3146 Jun 9 2014 migrate_all_nisplus_online.sh
-rwxr-xr-x. 1 root root 5267 Jun 9 2014 migrate_all_offline.sh
-rwxr-xr-x. 1 root root 7468 Jun 9 2014 migrate_all_online.sh
-rwxr-xr-x. 1 root root 3278 Jun 9 2014 migrate_automount.pl
-rwxr-xr-x. 1 root root 2608 Jun 9 2014 migrate_base.pl
Step 6 - Cuối cùng, chúng ta cần cho phép truy cập vào dịch vụ tát để nó có thể yêu cầu dịch vụ.
firewall-cmd --permanent --add-service=ldap
firewall-cmd --reload
Định cấu hình quyền truy cập ứng dụng LDAP
Việc định cấu hình quyền truy cập máy khách LDAP yêu cầu các gói sau trên máy khách: openldap, ứng dụng open-ldap và nss_ldap.
Định cấu hình xác thực LDAP cho hệ thống khách dễ dàng hơn một chút.
Step 1 - Cài đặt nhịp độ phụ thuộc -
# yum install -y openldap-clients nss-pam-ldapd
Step 2- Cấu hình xác thực LDAP với authconfig .
authconfig --enableldap --enableldapauth --ldapserver=10.25.0.1 --
ldapbasedn="dc=vmnet,dc=local" --enablemkhomedir --update
Step 3 - Khởi động lại dịch vụ nslcd.
systemctl restart nslcd
Nền TLS và SSL
TLS là tiêu chuẩn mới cho bảo mật lớp socket, tiếp tục SSL. TLS cung cấp các tiêu chuẩn mã hóa tốt hơn với các tính năng bảo mật và trình bao bọc giao thức khác cải tiến SSL. Thông thường, các thuật ngữ TLS và SSL được sử dụng thay thế cho nhau. Tuy nhiên, với tư cách là Quản trị viên CentOS chuyên nghiệp, điều quan trọng là phải lưu ý sự khác biệt và lịch sử tách biệt từng thứ.
SSL lên phiên bản 3.0. SSL được phát triển và quảng bá như một tiêu chuẩn công nghiệp theo Netscape. Sau khi Netscape được mua bởi AOL (một ISP phổ biến trong thập niên 90, còn được gọi là America Online), AOL chưa bao giờ thực sự thúc đẩy sự thay đổi cần thiết để cải thiện bảo mật cho SSL.
Tại phiên bản 3.1, công nghệ SSL chuyển sang các tiêu chuẩn hệ thống mở và được đổi thành TLS . Vì bản quyền trên SSL vẫn thuộc sở hữu của AOL nên một thuật ngữ mới đã được đặt ra:TLS - Transport Layer Security. Vì vậy, điều quan trọng là phải thừa nhận rằng TLS trên thực tế khác với SSL . Đặc biệt, vì các công nghệ SSL cũ hơn đã biết đến các vấn đề bảo mật và một số được coi là lỗi thời ngày nay.
Note- Hướng dẫn này sẽ sử dụng thuật ngữ TLS khi nói về công nghệ 3.1 và cao hơn. Sau đó, SSL khi nhận xét cụ thể cho các công nghệ SSL 3.0 và thấp hơn.
Phiên bản SSL so với TLS
Bảng sau đây cho thấy cách lập phiên bản TLS và SSL sẽ liên quan với nhau. Tôi đã nghe một vài người nói về SSL phiên bản 3.2. Tuy nhiên, họ có thể hiểu thuật ngữ khi đọc blog. Là một nhà quản trị chuyên nghiệp, chúng tôi luôn muốn sử dụng thuật ngữ chuẩn. Do đó, trong khi nói SSL phải là tham chiếu đến các công nghệ trong quá khứ. Những điều đơn giản có thể khiến người tìm việc CentOS trông giống như một CS Major dày dạn.
TLS | SSL |
---|---|
- | 3.0 |
1,0 | 3.1 |
1.1 | 3.2 |
1,2 | 3,3 |
TLS thực hiện hai chức năng chính quan trọng đối với người dùng Internet ngày nay: Một, nó xác minh xem một bên là ai, được gọi làauthentication. Hai, nó cung cấpend-to-end encryption ở lớp truyền tải cho các giao thức cấp cao hơn thiếu tính năng gốc này (giao thức ftp, http, email, v.v.).
Đầu tiên, xác minh một bên là ai và quan trọng đối với bảo mật là mã hóa đầu cuối. Nếu người tiêu dùng có kết nối được mã hóa đến một trang web không được phép thực hiện thanh toán, dữ liệu tài chính vẫn có nguy cơ. Đây là điều mà mọi trang web lừa đảo sẽ không có:a properly signed TLS certificate verifying website operators are who they claim to be from a trusted CA.
Chỉ có hai phương pháp để tránh tình trạng không có chứng chỉ được ký đúng cách: lừa người dùng cho phép trình duyệt web tin tưởng chứng chỉ tự ký hoặc hy vọng người dùng không hiểu biết về công nghệ và sẽ không biết tầm quan trọng của Chứng chỉ đáng tin cậy Cơ quan (hoặc CA).
Trong hướng dẫn này, chúng tôi sẽ sử dụng cái được gọi là chứng chỉ tự ký . Điều này có nghĩa là, nếu không cấp cho chứng chỉ này trạng thái đáng tin cậy một cách rõ ràng trong mọi trình duyệt web truy cập trang web, một lỗi sẽ hiển thị không khuyến khích người dùng truy cập trang web. Sau đó, nó sẽ khiến người dùng thực hiện một vài thao tác trước khi truy cập vào một trang web có chứng chỉ tự ký. Hãy nhớ vì lợi ích bảo mật, đây là một điều tốt.
Cài đặt và cấu hình openssl
openssl là tiêu chuẩn để triển khai mã nguồn mở của TLS. openssl được sử dụng trên các hệ thống như Linux, bản phân phối BSD, OS X và thậm chí hỗ trợ Windows.
openssl rất quan trọng, vì nó cung cấp bảo mật lớp truyền tải và tóm tắt lập trình chi tiết của Xác thực và mã hóa end-to-end cho nhà phát triển. Đây là lý do tại sao openssl được sử dụng với hầu hết mọi ứng dụng mã nguồn mở sử dụng TLS. Nó cũng được cài đặt theo mặc định trên mọi phiên bản Linux hiện đại.
Theo mặc định, openssl phải được cài đặt trên CentOS từ ít nhất phiên bản 5 trở đi. Để chắc chắn, hãy thử cài đặt openssl qua YUM. Chỉ cần chạy cài đặt, vì YUM đủ thông minh để cho chúng tôi biết nếu một gói đã được cài đặt. Nếu chúng tôi đang chạy phiên bản CentOS cũ hơn vì lý do tương thích, việc thực hiện cài đặt yum -y sẽ đảm bảo openssl được cập nhật chống lại lỗ hổng heart-bleed nửa gần đây.
Khi chạy trình cài đặt, nó đã được tìm thấy thực sự có một bản cập nhật cho openssl .
[root@centos]# yum -y install openssl
Resolving Dependencies
--> Running transaction check
---> Package openssl.x86_64 1:1.0.1e-60.el7 will be updated
---> Package openssl.x86_64 1:1.0.1e-60.el7_3.1 will be an update
--> Processing Dependency: openssl-libs(x86-64) = 1:1.0.1e-60.el7_3.1 for
package: 1:openssl-1.0.1e-60.el7_3.1.x86_64
--> Running transaction check
---> Package openssl-libs.x86_64 1:1.0.1e-60.el7 will be updated
---> Package openssl-libs.x86_64 1:1.0.1e-60.el7_3.1 will be an update
--> Finished Dependency Resolution
Dependencies Resolved
===============================================================================
===============================================================================
Package Arch
Version Repository Size
===============================================================================
===============================================================================
Updating:
openssl x86_64
1:1.0.1e-60.el7_3.1 updates 713 k
Updating for dependencies:
Tạo chứng chỉ tự ký cho OpenLDAP
Đây là một phương pháp để tạo tự ký cho cài đặt OpenLDAP trước đây của chúng tôi .
Để tạo Chứng chỉ OpenLDAP tự ký.
openssl req -new -x509 -nodes -out /etc/openldap/certs/myldaplocal.pem -keyout
/etc/openldap/certs/myldaplocal.pem -days 365
[root@centos]# openssl req -new -x509 -nodes -out /etc/openldap/certs/vmnet.pem
-keyout /etc/openldap/certs/vmnet.pem -days 365
Generating a 2048 bit RSA private key
.............................................+++
................................................+++
writing new private key to '/etc/openldap/certs/vmnet.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:Califonia
Locality Name (eg, city) [Default City]:LA
Organization Name (eg, company) [Default Company Ltd]:vmnet
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:centos
Email Address []:[email protected]
[root@centos]#
Bây giờ các chứng chỉ OpenLDAP của chúng tôi sẽ được đặt trong / etc / openldap / certs /
[root@centos]# ls /etc/openldap/certs/*.pem
/etc/openldap/certs/vmnetcert.pem /etc/openldap/certs/vmnetkey.pem
[root@centos]#
Như bạn thấy, chúng tôi đã cài đặt cả chứng chỉ và khóa trong thư mục / etc / openldap / certs / . Cuối cùng, chúng ta cần thay đổi các quyền đối với từng quyền, vì chúng hiện thuộc sở hữu của người dùng root.
[root@centos]# chown -R ldap:ldap /etc/openldap/certs/*.pem
[root@centos]# ls -ld /etc/openldap/certs/*.pem
-rw-r--r--. 1 ldap ldap 1395 Feb 20 10:00 /etc/openldap/certs/vmnetcert.pem
-rw-r--r--. 1 ldap ldap 1704 Feb 20 10:00 /etc/openldap/certs/vmnetkey.pem
[root@centos]#
Tạo chứng chỉ tự ký cho máy chủ web Apache
Trong hướng dẫn này, chúng tôi sẽ giả sử Apache đã được cài đặt. Chúng tôi đã cài đặt Apache trong một hướng dẫn khác (cấu hình CentOS Firewall) và sẽ đi vào cài đặt nâng cao Apache cho một hướng dẫn trong tương lai. Vì vậy, nếu bạn chưa cài đặt Apache, hãy cùng theo dõi.
Sau khi Apache HTTPd có thể được cài đặt bằng các bước sau:
Step 1 - Cài đặt mod_ssl cho máy chủ Apache httpd.
Đầu tiên chúng ta cần cấu hình Apache với mod_ssl. Sử dụng trình quản lý gói YUM, điều này khá đơn giản -
[root@centos]# yum -y install mod_ssl
Sau đó tải lại daemon Apache của bạn để đảm bảo Apache sử dụng cấu hình mới.
[root@centos]# systemctl reload httpd
Tại thời điểm này, Apache được cấu hình để hỗ trợ các kết nối TLS trên máy chủ cục bộ.
Step 2 - Tạo chứng chỉ ssl tự ký.
Đầu tiên, hãy cấu hình thư mục khóa TLS riêng tư của chúng tôi.
[root@centos]# mkdir /etc/ssl/private
[root@centos]# chmod 700 /etc/ssl/private/
Note- Đảm bảo chỉ có người gốc mới có quyền đọc / ghi vào thư mục này. Với quyền truy cập đọc / ghi trên thế giới, khóa cá nhân của bạn có thể được sử dụng để giải mã lưu lượng truy cập bị đánh hơi.
Tạo chứng chỉ và các tệp khóa.
[root@centos]# sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout
/etc/ssl/private/self-gen-apache.key -out /etc/ssl/certs/self-sign-apache.crt
Generating a 2048 bit RSA private key
..........+++
....+++
-----
Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:xx
Locality Name (eg, city) [Default City]:xxxx
Organization Name (eg, company) [Default Company Ltd]:VMNET
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:centos.vmnet.local
Email Address []:
[root@centos]#
Note - Bạn có thể sử dụng Địa chỉ IP công cộng của máy chủ nếu bạn chưa có tên miền đã đăng ký.
Hãy xem chứng chỉ của chúng tôi -
[root@centos]# openssl x509 -in self-sign-apache.crt -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 17620849408802622302 (0xf489d52d94550b5e)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, ST=UT, L=xxxx, O=VMNET, CN=centos.vmnet.local
Validity
Not Before: Feb 24 07:07:55 2017 GMT
Not After : Feb 24 07:07:55 2018 GMT
Subject: C=US, ST=UT, L=xxxx, O=VMNET, CN=centos.vmnet.local
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:c1:74:3e:fc:03:ca:06:95:8d:3a:0b:7e:1a:56:
f3:8d:de:c4:7e:ee:f9:fa:79:82:bf:db:a9:6d:2a:
57:e5:4c:31:83:cf:92:c4:e7:16:57:59:02:9e:38:
47:00:cd:b8:31:b8:34:55:1c:a3:5d:cd:b4:8c:b0:
66:0c:0c:81:8b:7e:65:26:50:9d:b7:ab:78:95:a5:
31:5e:87:81:cd:43:fc:4d:00:47:5e:06:d0:cb:71:
9b:2a:ab:f0:90:ce:81:45:0d:ae:a8:84:80:c5:0e:
79:8a:c1:9b:f4:38:5d:9e:94:4e:3a:3f:bd:cc:89:
e5:96:4a:44:f5:3d:13:20:3d:6a:c6:4d:91:be:aa:
ef:2e:d5:81:ea:82:c6:09:4f:40:74:c1:b1:37:6c:
ff:50:08:dc:c8:f0:67:75:12:ab:cd:8d:3e:7b:59:
e0:83:64:5d:0c:ab:93:e2:1c:78:f0:f4:80:9e:42:
7d:49:57:71:a2:96:c6:b8:44:16:93:6c:62:87:0f:
5c:fe:df:29:89:03:6e:e5:6d:db:0a:65:b2:5e:1d:
c8:07:3d:8a:f0:6c:7f:f3:b9:32:b4:97:f6:71:81:
6b:97:e3:08:bd:d6:f8:19:40:f1:15:7e:f2:fd:a5:
12:24:08:39:fa:b6:cc:69:4e:53:1d:7e:9a:be:4b:
Đây là giải thích cho từng tùy chọn chúng tôi đã sử dụng với lệnh openssl -
Chỉ huy | Hoạt động |
---|---|
yêu cầu -X509 | Sử dụng tiêu chuẩn PKI quản lý CSR X.509 để quản lý khóa. |
-điểm giao | Không bảo mật chứng chỉ của chúng tôi bằng cụm mật khẩu. Apache phải có thể sử dụng chứng chỉ mà không bị gián đoạn cụm mật khẩu. |
-ngày 2555 | Cho biết thời hạn của chứng chỉ là 7 năm hoặc 2555 ngày. Khoảng thời gian có thể được điều chỉnh khi cần thiết. |
-newkey rsa: 2048 | Được chỉ định để tạo cả khóa và chứng chỉ bằng RSA với độ dài 2048 bit. |
Tiếp theo, chúng tôi muốn tạo một nhóm Diffie-Heliman để đàm phán PFS với khách hàng.
[centos#] openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Quá trình này sẽ mất từ 5 đến 15 phút.
Perfect Forward Secrecy- Được sử dụng để bảo mật dữ liệu phiên trong trường hợp khóa riêng đã bị xâm phạm. Thao tác này sẽ tạo ra một khóa được sử dụng giữa máy khách và máy chủ là khóa duy nhất cho mỗi phiên.
Bây giờ, hãy thêm cấu hình Perfect Forward Secrecy vào chứng chỉ của chúng tôi.
[root@centos]# cat /etc/ssl/certs/dhparam.pem | tee -a /etc/ssl/certs/self-sign-apache.crt
Định cấu hình Apache để sử dụng tệp khóa và chứng chỉ
Chúng tôi sẽ thực hiện các thay đổi đối với /etc/httpd/conf.d/ssl.conf -
Chúng tôi sẽ thực hiện các thay đổi sau đối với ssl.conf . Tuy nhiên, trước khi làm điều đó, chúng ta nên sao lưu lại tệp gốc. Khi thực hiện thay đổi đối với máy chủ sản xuất trong trình chỉnh sửa văn bản nâng cao như vi hoặc emcas , cách tốt nhất là luôn sao lưu các tệp cấu hình trước khi thực hiện chỉnh sửa.
[root@centos]# cp /etc/httpd/conf.d/ssl.conf ~/
Bây giờ chúng ta hãy tiếp tục các chỉnh sửa của chúng tôi sau khi sao chép một bản sao hoạt động đã biết của ssl.conf vào thư mục gốc của thư mục chính.
- Locate
- Chỉnh sửa cả DocumentRoot và ServerName như sau.
\\# General setup for the virtual host, inherited from global configuration
DocumentRoot "/var/www/html"
ServerName centos.vmnet.local:443
DocumentRootđây là đường dẫn đến thư mục apache mặc định của bạn. Trong thư mục này phải là trang mặc định sẽ hiển thị yêu cầu HTTP yêu cầu trang mặc định của máy chủ web hoặc trang web của bạn.
ServerNamelà tên máy chủ có thể là địa chỉ ip hoặc tên máy chủ của máy chủ. Đối với TLS, cách tốt nhất là tạo chứng chỉ với tên máy chủ. Từ hướng dẫn OpenLdap của chúng tôi, chúng tôi đã tạo một tên máy chủ của centos trên miền doanh nghiệp cục bộ: vmnet.local
Bây giờ chúng tôi muốn bình luận những dòng sau đây.
SSLProtocol
# SSL Protocol support:
# List the enable protocol levels with which clients will be able to
# connect. Disable SSLv2 access by default:
~~~~> #SSLProtocol all -SSLv2
# SSL Cipher Suite:
# List the ciphers that the client is permitted to negotiate.
# See the mod_ssl documentation for a complete list.
~~~~> #SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA
Sau đó, hãy cho Apache biết nơi tìm chứng chỉ và cặp khóa riêng / công khai của chúng tôi.
Chỉ định đường dẫn đến tệp chứng chỉ tự ký của chúng tôi
# Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate. If
# the certificate is encrypted, then you will be prompted for a
# pass phrase. Note that a kill -HUP will prompt again. A new
# certificate can be generated using the genkey(1) command.
~~~~> SSLCertificateFile /etc/ssl/certs/self-sign-apache.crt
specify path to our private key file
# Server Private Key:
# If the key is not combined with the certificate, use this
# directive to point at the key file. Keep in mind that if
# you've both a RSA and a DSA private key you can configure
# both in parallel (to also allow the use of DSA ciphers, etc.)
~~~~> SSLCertificateKeyFile /etc/ssl/private/self-gen-apache.key
Cuối cùng, chúng ta cần cho phép các kết nối gửi đến https qua cổng 443.
Trong chương này, chúng ta sẽ tìm hiểu một chút về cơ sở của Apache HTTP Server ra đời như thế nào và sau đó cài đặt phiên bản ổn định nhất hiện tại trên CentOS Linux 7.
Lịch sử tóm tắt trên Apache WebServer
Apache là một máy chủ web đã có từ rất lâu. Trong thực tế, gần như miễn là sự tồn tại của chính http!
Apache khởi đầu là một dự án khá nhỏ tại Trung tâm Quốc gia về Ứng dụng Siêu máy tính còn được gọi là NCSA. Vào giữa những năm 90 "httpd", như nó được gọi, cho đến nay là nền tảng máy chủ web phổ biến nhất trên Internet, chiếm khoảng 90% thị phần trở lên.
Tại thời điểm này, nó là một dự án đơn giản. Nhân viên CNTT có tay nghề cao được gọi là quản trị viên web chịu trách nhiệm: duy trì nền tảng máy chủ web và phần mềm máy chủ web cũng như phát triển cả trang web front-end và back-end. Cốt lõi của httpd là khả năng sử dụng các mô-đun tùy chỉnh được gọi là plugin hoặc tiện ích mở rộng. Một quản trị viên web cũng đủ kỹ năng để viết các bản vá cho phần mềm máy chủ lõi.
Vào khoảng cuối những năm 90, nhà phát triển cấp cao và giám đốc dự án của httpd đã rời NCSA để làm những việc khác. Điều này khiến web-daemon phổ biến nhất rơi vào tình trạng đình trệ.
Vì việc sử dụng httpd quá phổ biến, một nhóm các quản trị viên web httpd dày dạn đã kêu gọi tổ chức một hội nghị thượng đỉnh đề ra tương lai của httpd. Nó đã được quyết định phối hợp và áp dụng các phần mở rộng và bản vá tốt nhất vào một bản phát hành ổn định hiện tại. Sau đó, cha đẻ của máy chủ http hiện tại đã ra đời và được đặt tên là Apache HTTP Server.
Little Known Historical Fact- Apache không được đặt theo tên của một Bộ lạc chiến binh người Mỹ bản địa. Trên thực tế, nó đã được đặt ra và đặt tên với một bước ngoặt: được tạo ra từ nhiều bản sửa lỗi (hoặc bản vá lỗi) từ nhiều Nhà khoa học máy tính tài năng: apatchy hoặc là Apache.
Cài đặt phiên bản ổn định hiện tại trên CentOS Linux 7
Step 1 - Cài đặt httpd qua yum.
yum -y install httpd
Lúc này Apache HTTP Server sẽ cài đặt thông qua yum.
Step 2 - Chỉnh sửa tệp httpd.conf cụ thể theo nhu cầu httpd của bạn.
Với cài đặt Apache mặc định, tệp cấu hình cho Apache có tên là httpd.conf và nằm trong / etc / httpd / . Vì vậy, hãy mở nó trong vim .
Một vài dòng đầu tiên của httpd.conf được mở bằng vim -
#
# This is the main Apache HTTP server configuration file. It contains the
# configuration directives that give the server its instructions.
# See <URL:http://httpd.apache.org/docs/2.4/> for detailed information.
# In particular, see
# <URL:http://httpd.apache.org/docs/2.4/mod/directives.html>
# for a discussion of each configuration directive.
Chúng tôi sẽ thực hiện các thay đổi sau để cho phép cài đặt CentOS của chúng tôi phục vụ các yêu cầu http từ cổng http 80.
Máy chủ và cổng đang nghe
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 80
Từ đây, chúng tôi thay đổi Apache để lắng nghe trên một cổng hoặc Địa chỉ IP nhất định. Ví dụ: nếu chúng tôi muốn chạy các dịch vụ httpd trên một cổng thay thế chẳng hạn như 8080. Hoặc nếu chúng tôi đã định cấu hình máy chủ web của mình với nhiều giao diện có địa chỉ IP riêng biệt.
Nghe
Giữ cho Apache không gắn vào mọi trình nền đang nghe vào mọi Địa chỉ IP. Điều này rất hữu ích để dừng chỉ định lưu lượng IPv6 hoặc IPv4. Hoặc thậm chí ràng buộc với tất cả các giao diện mạng trên một máy chủ nhiều homed.
#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
Listen 10.0.0.25:80
#Listen 80
DocumentRoot
"Tài liệu gốc" là thư mục mặc định nơi Apache sẽ tìm kiếm tệp chỉ mục để phục vụ cho các yêu cầu khi truy cập máy chủ của bạn: http://www.yoursite.com/ sẽ truy xuất và phục vụ tệp chỉ mục từ gốc tài liệu của bạn.
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/html"
Step 3 - Khởi động và kích hoạt dịch vụ httpd.
[root@centos rdc]# systemctl start httpd && systemctl reload httpd
[root@centos rdc]#
Step 4 - Cấu hình tường lửa để cho phép truy cập vào các yêu cầu cổng 80.
[root@centos]# firewall-cmd --add-service=http --permanent
Như đã đề cập ngắn gọn khi định cấu hình CentOS để sử dụng với Maria DB, không có gói MySQL gốc nào trong kho lưu trữ CentOS 7 yum . Để giải quyết vấn đề này, chúng tôi sẽ cần thêm một kho lưu trữ được lưu trữ trên MySQL.
MariaDB vs MySQL trên CentOS Linux
Một điều cần lưu ý là MySQL sẽ yêu cầu một tập hợp các phụ thuộc cơ sở khác với MariaDB. Ngoài ra việc sử dụng MySQL sẽ phá vỡ khái niệm và triết lý của CentOS: các gói sản xuất được thiết kế để có độ tin cậy tối đa.
Vì vậy, khi quyết định sử dụng Maria hay MySQL, người ta nên cân nhắc hai lựa chọn: Liệu lược đồ DB hiện tại của tôi có hoạt động với Maria không? Việc cài đặt MySQL trên Maria mang lại cho tôi lợi thế gì?
Các thành phần Maria trong suốt 100% với cấu trúc MySQL, với một số hiệu quả được bổ sung với việc cấp phép tốt hơn. Trừ khi có lý do thuyết phục, bạn nên cấu hình CentOS để sử dụng MariaDB.
Những lý do lớn nhất để yêu thích Maria trên CentOS là -
Hầu hết mọi người sẽ sử dụng MariaDB. Khi gặp sự cố, bạn sẽ được hỗ trợ nhiều hơn với Maria.
CentOS được thiết kế để chạy với Maria. Do đó, Maria sẽ mang lại sự ổn định tốt hơn.
Maria chính thức được hỗ trợ cho CentOS.
Tải xuống và thêm kho lưu trữ MySQL
Chúng tôi sẽ muốn tải xuống và cài đặt kho lưu trữ MySQL từ -
http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
Step 1 - Tải xuống Kho lưu trữ.
Kho lưu trữ được đóng gói tiện lợi trong gói rpm để dễ dàng cài đặt. Nó có thể được tải xuống bằng wget -
[root@centos]# wget http://repo.mysql.com/mysql-community-release-el75.noarch.rpm
--2017-02-26 03:18:36-- http://repo.mysql.com/mysql-community-release-el75.noarch.rpm
Resolving repo.mysql.com (repo.mysql.com)... 104.86.98.130
Step 2 - Cài đặt MySQL Từ YUM.
Bây giờ chúng ta có thể sử dụng trình quản lý gói yum để cài đặt MySQL -
[root@centos]# yum -y install mysql-server
Step 3 - Khởi động và kích hoạt dịch vụ MySQL Daemon.
[root@centos]# systemctl start mysql
[root@centos]# systemctl enable mysql
Step 4 - Đảm bảo rằng dịch vụ MySQL của chúng tôi đang hoạt động.
[root@centos]# netstat -antup | grep 3306
tcp6 0 0 :::3306 :::* LISTEN 6572/mysqld
[root@centos]#
Lưu ý - Chúng tôi sẽ không cho phép thông qua bất kỳ quy tắc tường lửa nào. Thông thường MySQL phải được cấu hình để sử dụngUnix Domain Sockets. Điều này đảm bảo chỉ máy chủ web của ngăn xếp LAMP, cục bộ, có thể truy cập cơ sở dữ liệu MySQL, lấy ra một thứ nguyên hoàn chỉnh trong vector tấn công tại phần mềm cơ sở dữ liệu.
Để gửi email từ máy chủ CentOS 7 của chúng tôi, chúng tôi sẽ cần thiết lập để định cấu hình Tác nhân chuyển thư (MTA) hiện đại. Mail Transfer Agent là daemon chịu trách nhiệm gửi thư đi cho người dùng hệ thống hoặc Tên miền Internet công ty thông qua SMTP.
Cần lưu ý, hướng dẫn này chỉ dạy quy trình thiết lập daemon để sử dụng cục bộ. Chúng tôi không đi vào chi tiết về cấu hình nâng cao để thiết lập MTA cho hoạt động kinh doanh. Đây là sự kết hợp của nhiều kỹ năng bao gồm nhưng không giới hạn ở: DNS, nhận địa chỉ IP tĩnh không bị liệt vào danh sách đen và định cấu hình cài đặt dịch vụ và bảo mật nâng cao. Tóm lại, hướng dẫn này nhằm giúp bạn làm quen với cấu hình cơ bản. Không sử dụng hướng dẫn này cho cấu hình MTA của một máy chủ lưu trữ Internet.
Với sự tập trung tổng hợp của nó vào cả bảo mật và dễ quản trị, chúng tôi đã chọn Postfixlàm MTA cho hướng dẫn này. MTA mặc định được cài đặt trong các phiên bản CentOS cũ hơn là Sendmail .Sendmaillà một MTA tuyệt vời. Tuy nhiên, theo ý kiến khiêm tốn của tác giả, Postfix đã đạt được điểm tuyệt vời khi giải quyết các lưu ý sau đây cho MTA. Với phiên bản mới nhất của CentOS, Postfix đã thay thế Sendmail làm MTA mặc định.
Postfix là một MTA được sử dụng rộng rãi và được ghi chép đầy đủ. Nó được duy trì và phát triển một cách tích cực. Nó yêu cầu cấu hình tối thiểu (đây chỉ là email) và hiệu quả với tài nguyên hệ thống (một lần nữa, đây chỉ là email).
Step 1 - Cài đặt Postfix từ Trình quản lý gói YUM.
[root@centos]# yum -y install postfix
Step 2 - Cấu hình tệp cấu hình Postfix.
Tệp cấu hình Postfix nằm trong: /etc/postfix/main.cf
Trong cấu hình Postfix đơn giản, những điều sau phải được định cấu hình cho một máy chủ cụ thể: tên máy chủ, miền, nguồn gốc, inet_interfaces và đích.
Configure the hostname- Tên máy chủ lưu trữ là tên miền đủ điều kiện của máy chủ lưu trữ Postfix. Trong chương OpenLDAP, chúng tôi đã đặt tên cho hộp CentOS: centos trên miền vmnet.local . Hãy gắn bó với điều đó cho chương này.
# The myhostname parameter specifies the internet hostname of this
# mail system. The default is to use the fully-qualified domain name
# from gethostname(). $myhostname is used as a default value for many
# other configuration parameters.
#
myhostname = centos.vmnet.local
Configure the domain- Như đã nêu ở trên, miền chúng tôi sẽ sử dụng trong hướng dẫn này là vmnet.local
# The mydomain parameter specifies the local internet domain name.
# The default is to use $myhostname minus the first component. # $mydomain is used as a default value for many other configuration
# parameters.
#
mydomain = vmnet.local
Configure the origin - Đối với một máy chủ và miền được thiết lập, chúng ta chỉ cần bỏ ghi chú các phần sau và để các biến Postfix mặc định.
# SENDING MAIL
#
# The myorigin parameter specifies the domain that locally-posted
# mail appears to come from. The default is to append $myhostname, # which is fine for small sites. If you run a domain with multiple # machines, you should (1) change this to $mydomain and (2) set up
# a domain-wide alias database that aliases each user to
# [email protected].
#
# For the sake of consistency between sender and recipient addresses,
# myorigin also specifies the default domain name that is appended
# to recipient addresses that have no @domain part.
#
myorigin = $myhostname myorigin = $mydomain
Configure the network interfaces- Chúng tôi sẽ để Postfix lắng nghe trên giao diện mạng duy nhất của chúng tôi và tất cả các giao thức và Địa chỉ IP được liên kết với giao diện đó. Điều này được thực hiện bằng cách chỉ cần bật cài đặt mặc định cho Postfix.
# The inet_interfaces parameter specifies the network interface
# addresses that this mail system receives mail on. By default,
# the software claims all active interfaces on the machine. The
# parameter also controls delivery of mail to user@[ip.address].
#
# See also the proxy_interfaces parameter, for network addresses that
# are forwarded to us via a proxy or network address translator.
#
# Note: you need to stop/start Postfix when this parameter changes.
#
#inet_interfaces = all
#inet_interfaces = $myhostname #inet_interfaces = $myhostname, localhost
#inet_interfaces = localhost
# Enable IPv4, and IPv6 if supported
inet_protocols = all
Step 3 - Định cấu hình Hỗ trợ SASL cho Postfix.
Nếu không có hỗ trợ Xác thực SASL, Postfix sẽ chỉ cho phép gửi email từ người dùng cục bộ. Hoặc nó sẽ đưa ra lỗi bị từ chối chuyển tiếp khi người dùng gửi email từ miền cục bộ.
Note - SASL hoặc là Simple Application Security Layer Frameworklà một khuôn khổ được thiết kế để xác thực hỗ trợ các kỹ thuật khác nhau giữa các giao thức Lớp ứng dụng khác nhau. Thay vì để các cơ chế xác thực cho giao thức lớp ứng dụng, các nhà phát triển SASL (và người tiêu dùng) tận dụng các giao thức xác thực hiện tại cho các giao thức cấp cao hơn có thể không có sự thuận tiện hoặc xác thực an toàn hơn (khi nói về quyền truy cập vào các dịch vụ bảo mật) được tích hợp sẵn.
Cài đặt gói "cyrus-sasl *
[root@centos]# yum -y install cyrus-sasl
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: repos.forethought.net
* extras: repos.dfw.quadranet.com
* updates: mirrors.tummy.com
Package cyrus-sasl-2.1.26-20.el7_2.x86_64 already installed and latest version
Nothing to do
Định cấu hình /etc/postfix/main.cf cho SASL Auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions =
permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
Tùy chọn SASL của tôi trong main.conf
##Configure SASL Options Entries:
smtpd_sasl_auth_enable = yes
smptd_recipient_restrictions =
permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
smtp_sasl_type = dovecot
smtp_sasl_path = private/auth/etc
Step 4 - Cấu hình FirewallD để cho phép các Dịch vụ SMTP đến.
[root@centos]# firewall-cmd --permanent --add-service=smtp
success
[root@centos]# firewall-cmd --reload
success
[root@centos]#
Bây giờ, hãy kiểm tra để đảm bảo máy chủ CentOS của chúng tôi đang cho phép và phản hồi các yêu cầu trên cổng 25 (SMTP).
Nmap scan report for 172.16.223.132
Host is up (0.00035s latency).
Not shown: 993 filtered ports
PORT STATE SERVICE
20/tcp closed ftp-data
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
80/tcp open http
389/tcp open ldap
443/tcp open https
MAC Address: 00:0C:29:BE:DF:5F (VMware)
Như bạn có thể thấy, SMTP đang lắng nghe và daemon đang phản hồi các yêu cầu từ mạng LAN nội bộ của chúng tôi.
Cài đặt Dovecot IMAP và Máy chủ POP3
Dovecot là một Máy chủ IMAP và POP3 an toàn được thiết kế để xử lý các nhu cầu thư đến của một tổ chức nhỏ hơn đến lớn hơn. Do được sử dụng nhiều với CentOS, chúng tôi sẽ sử dụng Dovecot làm ví dụ về cài đặt và cấu hình máy chủ thư đến cho CentOS và MTA SASL Provider.
Như đã lưu ý trước đây, chúng tôi sẽ không định cấu hình bản ghi MX cho DNS hoặc tạo các quy tắc bảo mật cho phép dịch vụ của chúng tôi xử lý thư cho một miền. Do đó, chỉ cần thiết lập các dịch vụ này trên một máy chủ lưu trữ Internet có thể tạo ra đòn bẩy cho các lỗ hổng bảo mật với Bản ghi SPF.
Step 1 - Cài đặt Dovecot.
[root@centos]# yum -y install dovecot
Step 2 - Cấu hình chim bồ câu.
Tệp cấu hình chính cho dovecot có tại: /etc/dovecot.conf . Đầu tiên chúng tôi sẽ sao lưu tệp cấu hình chính. Một phương pháp hay là luôn sao lưu các tệp cấu hình trước khi thực hiện chỉnh sửa. Bằng cách này, các ngắt dòng id (ví dụ) sẽ bị hủy bởi trình soạn thảo văn bản và các năm thay đổi sẽ bị mất. Hoàn nguyên dễ dàng như sao chép bản sao lưu hiện tại vào sản xuất.
Bật giao thức và dịch vụ daemon cho dovecot
# Protocols we want to be serving.
protocols = imap imaps pop3 pop3s
Bây giờ, chúng ta cần kích hoạt dovecot daemon để lắng nghe khi khởi động -
[root@localhost]# systemctl start dovecot
[root@localhost]# systemctl enable dovecot
Hãy đảm bảo Dovecot đang nghe cục bộ trên các cổng được chỉ định cho: imap, pop3, imap secure và pop3 secure.
[root@localhost]# netstat -antup | grep dovecot
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 4368/dovecot
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 4368/dovecot
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 4368/dovecot
tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN 4368/dovecot
tcp6 0 0 :::110 :::* LISTEN 4368/dovecot
tcp6 0 0 :::143 :::* LISTEN 4368/dovecot
tcp6 0 0 :::993 :::* LISTEN 4368/dovecot
tcp6 0 0 :::995 :::* LISTEN 4368/dovecot
[root@localhost]#
Như đã thấy, dovecot đang lắng nghe trên các cổng được chỉ định cho IPv4 và IPv4.
POP3 | 110 |
POP3s | 995 |
IMAP | 143 |
IMAP | 993 |
Bây giờ, chúng ta cần thực hiện một số quy tắc tường lửa.
[root@localhost]# firewall-cmd --permanent --add-port=110/tcp
success
[root@localhost]# firewall-cmd --permanent --add-port=143/tcp
success
[root@localhost]# firewall-cmd --permanent --add-port=995/tcp
success
[root@localhost]# firewall-cmd --permanent --add-port=993/tcp
success
[root@localhost]# firewall-cmd --reload
success
[root@localhost]#
Máy chủ thư đến của chúng tôi đang chấp nhận yêu cầu POP3 , POP3s , IMAP và IMAP cho các máy chủ trên mạng LAN.
Port Scanning host: 192.168.1.143
Open TCP Port: 21 ftp
Open TCP Port: 22 ssh
Open TCP Port: 25 smtp
Open TCP Port: 80 http
Open TCP Port: 110 pop3
Open TCP Port: 143 imap
Open TCP Port: 443 https
Open TCP Port: 993 imaps
Open TCP Port: 995 pop3s
Trước khi đi sâu vào cài đặt FTP trên CentOS, chúng ta cần tìm hiểu một chút về cách sử dụng và bảo mật của nó. FTPlà một giao thức thực sự hiệu quả và được tinh chỉnh để truyền tệp giữa các hệ thống máy tính. FTP đã được sử dụng và cải tiến trong vài thập kỷ nay. Để truyền tệp hiệu quả qua mạng có độ trễ hoặc tốc độ tuyệt đối, FTP là một lựa chọn tuyệt vời. Hơn cả SAMBA hoặc SMB.
Tuy nhiên, FTP có một số vấn đề bảo mật. Trên thực tế, một số vấn đề bảo mật nghiêm trọng. FTP sử dụng một phương pháp xác thực văn bản thuần túy thực sự yếu. Vì lý do này, các phiên được xác thực phải dựa vào sFTP hoặc FTPS, nơi TLS được sử dụng để mã hóa end-to-end của các phiên đăng nhập và chuyển.
Với những lưu ý trên, FTP cũ đơn giản vẫn được sử dụng trong môi trường kinh doanh ngày nay. Công dụng chính là, kho lưu trữ tệp FTP ẩn danh. Đây là một tình huống mà không có xác thực nào được đảm bảo để tải xuống hoặc tải lên tệp. Một số ví dụ về việc sử dụng FTP ẩn danh là:
Các công ty phần mềm lớn vẫn sử dụng kho ftp ẩn danh cho phép người dùng Internet tải xuống phần mềm chia sẻ và bản vá.
Cho phép người dùng internet tải lên và tải xuống các tài liệu công cộng.
Một số ứng dụng sẽ tự động gửi nhật ký được mã hóa, lưu trữ hoặc tệp cấu hình đến kho lưu trữ thông qua FTP.
Do đó, với tư cách là Quản trị viên CentOS, có thể cài đặt và cấu hình FTP vẫn là một kỹ năng được thiết kế sẵn.
Chúng tôi sẽ sử dụng một daemon FTP được gọi là vsFTPhoặc Daemon FTP Rất an toàn. vsFTP đã được sử dụng trong quá trình phát triển trong một thời gian. Nó nổi tiếng là an toàn, dễ cài đặt và cấu hình và đáng tin cậy.
Step 1 - Cài đặt vsFTPd với Trình quản lý gói YUM.
[root@centos]# yum -y install vsftpd.x86_64
Step 2 - Cấu hình vsFTP để Bắt đầu khi Khởi động bằng systemctl.
[root@centos]# systemctl start vsftpd
[root@centos]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-
user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
Step 3 - Cấu hình FirewallD để cho phép điều khiển FTP và chuyển phiên.
[root@centos]# firewall-cmd --add-service=ftp --permanent
success
[root@centos]#
Đảm bảo daemon FTP của chúng tôi đang chạy.
[root@centos]# netstat -antup | grep vsftp
tcp6 0 0 :::21 :::* LISTEN 13906/vsftpd
[root@centos]#
Step 4 - Cấu hình vsFTPD Để truy cập ẩn danh.
Tạo một thư mục FTP gốc
[root@centos]# mkdir /ftp
Thay đổi chủ sở hữu và nhóm gốc FTP thành ftp
[root@centos]# chown ftp:ftp /ftp
Set minimal permissions for FTP root:
[root@centos]# chmod -R 666 /ftp/
[root@centos]# ls -ld /ftp/
drw-rw-rw-. 2 ftp ftp 6 Feb 27 02:01 /ftp/
[root@centos]#
Trong trường hợp này, chúng tôi đã cấp cho người dùng quyền đọc / ghi đối với toàn bộ cây FTP gốc.
Định cấu hình /etc/vsftpd/vsftpd.conf "
[root@centos]# vim /etc/vsftpd/vsftpd.conf
# Example config file /etc/vsftpd/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
# capabilities.
Chúng tôi sẽ muốn thay đổi các chỉ thị sau trong tệp vsftp.conf .
Cho phép tải lên Ẩn danh bằng cách bỏ ghi chú anon_mkdir_write_enable = YES
chown các tệp đã tải lên thuộc sở hữu của người dùng ftp hệ thống
chown_uploads = CÓ
chown_username = ftp
Thay đổi người dùng hệ thống được vsftp sử dụng thành người dùng ftp: nopriv_user = ftp
Đặt biểu ngữ tùy chỉnh để người dùng đọc trước khi đăng nhập.
ftpd_banner = Chào mừng bạn đến với Đại diện FTP Ẩn danh của chúng tôi. Tất cả các kết nối được theo dõi và ghi lại.
Hãy chỉ đặt kết nối IPv4 -
nghe = CÓ
nghe_ipv6 = KHÔNG
Bây giờ, chúng tôi cần khởi động lại hoặc HUP dịch vụ vsftp để áp dụng các thay đổi của chúng tôi.
[root@centos]# systemctl restart vsftpd
Hãy kết nối với máy chủ FTP của chúng tôi và đảm bảo rằng daemon FTP của chúng tôi đang phản hồi.
[root@centos rdc]# ftp 10.0.4.34
Connected to localhost (10.0.4.34).
220 Welcome to our Anonymous FTP Repo. All connections are monitored and logged.
Name (localhost:root): anonymous
331 Please specify the password.
Password:
'230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
Khi nói về quản lý từ xa trong CentOS với tư cách là Quản trị viên, chúng ta sẽ khám phá hai phương pháp:
- Quản lý bảng điều khiển
- Quản lý GUI
Quản lý bảng điều khiển từ xa
Quản lý bảng điều khiển từ xa có nghĩa là thực hiện các tác vụ quản trị từ dòng lệnh thông qua một dịch vụ như ssh. Để sử dụng CentOS Linux một cách hiệu quả, với tư cách là Quản trị viên, bạn sẽ cần phải thành thạo dòng lệnh. Trái tim của Linux được thiết kế để sử dụng từ bảng điều khiển. Thậm chí ngày nay, một số quản trị viên hệ thống thích sức mạnh của lệnh và tiết kiệm tiền cho phần cứng bằng cách chạy các hộp Linux đơn giản không có thiết bị đầu cuối vật lý và không cài đặt GUI.
Quản lý GUI từ xa
Quản lý GUI từ xa thường được thực hiện theo hai cách: X-Session từ xa hoặc giao thức lớp ứng dụng GUI như VNC. Mỗi loại đều có điểm mạnh và điểm hạn chế. Tuy nhiên, phần lớn, VNC là lựa chọn tốt nhất cho ngành Quản trị. Nó cho phép điều khiển đồ họa từ các hệ điều hành khác như Windows hoặc OS X vốn không hỗ trợ giao thức X Windows.
Sử dụng X Sessions từ xa là nguyên bản cho cả Window-Managers và DesktopManagers của X-Window chạy trên X. Tuy nhiên, toàn bộ kiến trúc X Session chủ yếu được sử dụng với Linux. Không phải mọi Quản trị viên Hệ thống đều có sẵn Máy tính xách tay Linux để thiết lập Phiên X từ xa. Do đó, thông thường nhất là sử dụng phiên bản VNC Server đã điều chỉnh.
Hạn chế lớn nhất của VNC là: VNC không hỗ trợ môi trường đa người dùng như X-Sessions từ xa. Do đó, để truy cập GUI vào XSessions từ xa của người dùng cuối sẽ là lựa chọn tốt nhất. Tuy nhiên, chúng tôi chủ yếu quan tâm đến việc quản trị máy chủ CentOS từ xa.
Chúng ta sẽ thảo luận về việc cấu hình VNC cho nhiều quản trị viên so với vài trăm người dùng với X-Sessions từ xa.
Đặt nền tảng cho bảo mật với SSH để truy cập bảng điều khiển từ xa
ssh hoặc là Secure Shellhiện là tiêu chuẩn để quản trị từ xa bất kỳ máy chủ Linux nào. SSH không giống như telnet sử dụng TLS để xác thực và mã hóa đầu cuối của thông tin liên lạc. Khi được định cấu hình đúng, quản trị viên có thể chắc chắn rằng cả mật khẩu của họ và máy chủ đều được tin cậy từ xa.
Trước khi định cấu hình SSH, hãy nói một chút về bảo mật cơ bản và quyền truy cập ít phổ biến nhất. Khi SSH đang chạy trên cổng mặc định của nó là 22; không sớm thì muộn, bạn sẽ bị tấn công từ điển brute force chống lại tên người dùng và mật khẩu thông thường. Điều này chỉ đi kèm với lãnh thổ. Bất kể bạn thêm bao nhiêu máy chủ vào các tệp từ chối của mình, chúng sẽ chỉ đến từ các địa chỉ IP khác nhau hàng ngày.
Với một số quy tắc phổ biến, bạn có thể chỉ cần thực hiện một số bước chủ động và để kẻ xấu lãng phí thời gian của họ. Sau đây là một số quy tắc bảo mật cần tuân theo khi sử dụng SSH để quản trị từ xa trên máy chủ sản xuất -
Không bao giờ sử dụng tên người dùng hoặc mật khẩu chung. Tên người dùng trên hệ thống không được là mặc định của hệ thống hoặc được liên kết với địa chỉ email của công ty như:[email protected]
Quyền truy cập root hoặc quyền truy cập quản trị không được phép thông qua SSH. Sử dụng tên người dùng duy nhất và su để root hoặc tài khoản quản trị sau khi được xác thực thông qua SSH.
Chính sách mật khẩu là bắt buộc: Mật khẩu người dùng SSH phức tạp như: "This & IS & a & GUD & P @ ssW0rd & 24 & me". Thay đổi mật khẩu vài tháng một lần để loại bỏ khả năng bị tấn công bạo lực gia tăng.
Vô hiệu hóa các tài khoản bị bỏ rơi hoặc không được sử dụng trong thời gian dài. Nếu người quản lý tuyển dụng có thư thoại cho biết họ sẽ không phỏng vấn trong một tháng; chẳng hạn như có thể dẫn đến những cá nhân am hiểu công nghệ và có nhiều thời gian trong tay.
Xem nhật ký của bạn hàng ngày. Với tư cách là Quản trị viên hệ thống, hãy dành ít nhất 30 - 40 phút mỗi sáng để xem lại nhật ký bảo mật và hệ thống. Nếu được hỏi, hãy cho mọi người biết bạn không có thời gian để không chủ động. Thực hành này sẽ giúp cô lập các dấu hiệu cảnh báo trước khi một vấn đề xuất hiện với người dùng cuối và lợi nhuận của công ty.
Note On Linux Security- Bất kỳ ai quan tâm đến Quản trị Linux nên tích cực theo đuổi tin tức và công nghệ An ninh mạng hiện tại. Mặc dù chúng ta hầu như chỉ nghe về việc các hệ điều hành khác bị xâm phạm, nhưng một hộp Linux không an toàn là một kho báu được săn lùng cho tội phạm mạng. Với sức mạnh của Linux trên kết nối internet tốc độ cao, tội phạm mạng lành nghề có thể sử dụng Linux để tấn công các hệ điều hành khác.
Cài đặt và cấu hình SSH để truy cập từ xa
Step 1 - Cài đặt SSH Server và tất cả các gói phụ thuộc.
[root@localhost]# yum -y install openssh-server
'Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: repos.centos.net
* extras: repos.dfw.centos.com
* updates: centos.centos.com
Resolving Dependencies
--> Running transaction check
---> Package openssh-server.x86_64 0:6.6.1p1-33.el7_3 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
Step 2 - Sử dụng an toàn thường xuyên để thêm vào để truy cập trình bao.
[root@localhost ~]# useradd choozer
[root@localhost ~]# usermod -c "Remote Access" -d /home/choozer -g users -G
wheel -a choozer
Note- Chúng tôi thêm người dùng mới cho bánh xe nhóm cho phép khả năng su vào gốc một lần truy cập SSH đã được chứng thực. Chúng tôi cũng đã sử dụng tên người dùng không thể tìm thấy trong danh sách từ phổ biến. Bằng cách này, tài khoản của chúng tôi sẽ không bị khóa khi SSH bị tấn công.
Cài đặt cấu hình giữ tệp cho máy chủ sshd là / etc / ssh / sshd_config .
Những phần chúng tôi muốn chỉnh sửa ban đầu là -
LoginGraceTime 60m
PermitRootLogin no
Step 3- Tải lại sshd daemon SSH .
[root@localhost]# systemctl reload sshd
Bạn nên đặt thời gian gia hạn đăng xuất thành 60 phút. Một số tác vụ quản trị phức tạp có thể vượt quá mặc định là 2 phút. Thực sự không có gì khó chịu hơn việc có thời gian chờ phiên SSH khi định cấu hình hoặc nghiên cứu các thay đổi.
Step 4 - Hãy thử đăng nhập bằng thông tin gốc.
bash-3.2# ssh centos.vmnet.local
[email protected]'s password:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
Step 5- Chúng tôi không còn có thể đăng nhập từ xa qua ssh với thông tin đăng nhập gốc . Vì vậy, đăng nhập cho phép của tài khoản người dùng không có đặc quyền của chúng tôi và su vào gốc tài khoản.
bash-3.2# ssh [email protected]
[email protected]'s password:
[choozer@localhost ~]$ su root
Password:
[root@localhost choozer]#
Step 6- Cuối cùng, hãy đảm bảo rằng dịch vụ SSHD tải khi khởi động và firewalld cho phép các kết nối SSH bên ngoài.
[root@localhost]# systemctl enable sshd
[root@localhost]# firewall-cmd --permanent --add-service=ssh
success
[root@localhost]# firewall-cmd --reload
success
[root@localhost]#
SSH hiện đã được thiết lập và sẵn sàng để quản trị từ xa. Tùy thuộc vào biên giới doanh nghiệp của bạn, thiết bị biên lọc gói có thể cần được cấu hình để cho phép quản trị từ xa SSH bên ngoài mạng LAN công ty.
Định cấu hình VNC cho Quản trị CentOS từ xa
Có một số cách để kích hoạt tính năng quản trị CentOS từ xa qua VNC trên CentOS 6 - 7. Cách dễ nhất, nhưng hạn chế nhất là sử dụng một gói có tên vino .Vinolà một ứng dụng Kết nối Máy tính để bàn Mạng Ảo dành cho Linux được thiết kế trên nền tảng Máy tính để bàn Gnome. Do đó, người ta cho rằng quá trình cài đặt đã hoàn tất với Gnome Desktop. Nếu Gnome Desktop chưa được cài đặt, hãy làm như vậy trước khi tiếp tục. Vino sẽ được cài đặt Gnome GUI theo mặc định.
Để định cấu hình chia sẻ màn hình với Vino trong Gnome, chúng tôi muốn chuyển đến Tùy chọn hệ thống CentOS để chia sẻ màn hình.
Applications->System Tools->Settings->Sharing
Các lưu ý khi cấu hình VNC Desktop Sharing -
Disable New Connections must ask for access- Tùy chọn này sẽ yêu cầu quyền truy cập vật lý để ok mọi kết nối. Tùy chọn này sẽ ngăn quản trị từ xa trừ khi ai đó đang ở trên màn hình thực.
Enable Require a password- Điều này tách biệt với mật khẩu người dùng. Nó sẽ kiểm soát quyền truy cập vào màn hình ảo và vẫn yêu cầu mật khẩu người dùng để truy cập màn hình bị khóa (điều này tốt cho bảo mật).
Forward UP&P Ports: If available leave disabled- Các cổng UP&P chuyển tiếp sẽ gửi yêu cầu Universal Plug and Play cho thiết bị lớp 3 để cho phép kết nối VNC với máy chủ lưu trữ tự động. Chúng tôi không muốn điều này.
Đảm bảo rằng vino đang nghe trên Cổng VNC 5900.
[root@localhost]# netstat -antup | grep vino
tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 4873/vino-server
tcp6 0 0 :::5900 :::* LISTEN 4873/vino-server
[root@localhost]#
Bây giờ hãy cấu hình Tường lửa của chúng ta để cho phép các kết nối VNC đến.
[root@localhost]# firewall-cmd --permanent --add-port=5900/tcp
success
[root@localhost]# firewall-cmd --reload
success
[root@localhost rdc]#
Cuối cùng, như bạn có thể thấy, chúng tôi có thể kết nối CentOS Box của mình và quản trị nó với một ứng dụng khách VNC trên Windows hoặc OS X.
Điều quan trọng là tuân thủ các quy tắc tương tự đối với VNC như chúng tôi đã đặt ra cho SSH. Cũng giống như SSH, VNC liên tục được quét trên các dải IP và kiểm tra các mật khẩu yếu. Cũng cần lưu ý rằng việc bật đăng nhập CentOS mặc định với thời gian chờ trên bảng điều khiển sẽ giúp bảo mật VNC từ xa. Vì kẻ tấn công sẽ cần VNC và mật khẩu người dùng, hãy đảm bảo mật khẩu chia sẻ màn hình của bạn khác và khó đoán như mật khẩu người dùng.
Sau khi nhập mật khẩu chia sẻ màn hình VNC, chúng ta cũng phải nhập mật khẩu người dùng để truy cập màn hình bị khóa.
Security Note- Theo mặc định, VNC không phải là một giao thức được mã hóa. Do đó, kết nối VNC nên được tạo đường hầm thông qua SSH để mã hóa.
Thiết lập đường hầm SSH qua VNC
Thiết lập Đường hầm SSH sẽ cung cấp một lớp mã hóa SSH để tạo đường hầm kết nối VNC. Một tính năng tuyệt vời khác là nó sử dụng tính năng nén SSH để thêm một lớp nén khác vào các bản cập nhật màn hình GUI VNC. An toàn hơn và nhanh hơn luôn là một điều tốt khi xử lý việc quản trị các máy chủ CentOS!
Vì vậy, từ ứng dụng khách của bạn sẽ khởi tạo kết nối VNC, hãy thiết lập một đường hầm SSH từ xa. Trong phần trình diễn này, chúng tôi đang sử dụng OS X. Đầu tiên chúng tôi cần sudo -s để root .
bash-3.2# sudo -s
password:
Nhập mật khẩu người dùng và bây giờ chúng ta sẽ có root shell với dấu nhắc # -
bash-3.2#
Bây giờ, hãy tạo Đường hầm SSH của chúng ta .
ssh -f [email protected] -L 2200:192.168.1.143:5900 -N
Hãy chia nhỏ lệnh này -
ssh - Chạy tiện ích ssh cục bộ
-f - ssh sẽ chạy ở chế độ nền sau khi tác vụ thực thi đầy đủ
[email protected] - Người dùng ssh từ xa trên máy chủ CentOS lưu trữ các dịch vụ VNC
-L 2200:192.168.1.143:5900 - Tạo đường hầm của chúng tôi [Cổng cục bộ]: [máy chủ từ xa]: [cổng từ xa của dịch vụ VNC]
-N nói với ssh rằng chúng tôi không muốn thực hiện lệnh trên hệ thống từ xa
bash-3.2# ssh -f [email protected] -L 2200:192.168.1.143:5900 -N
[email protected]'s password:
Sau khi nhập thành công mật khẩu của người dùng ssh từ xa, đường hầm ssh của chúng tôi được tạo. Bây giờ cho phần thú vị! Để kết nối, chúng tôi trỏ máy khách VNC của chúng tôi tại máy chủ cục bộ trên cổng của đường hầm, trong trường hợp này là cổng 2200. Sau đây là cấu hình trên Máy khách VNC của Mac Laptop -
Và cuối cùng là Kết nối Máy tính để bàn VNC từ xa của chúng tôi!
Điều thú vị về đường hầm SSH là nó có thể được sử dụng cho hầu hết mọi giao thức. Đường hầm SSH thường được sử dụng để bỏ qua việc lọc cổng đi ra và xâm nhập bởi ISP, cũng như đánh lừa IDS / IPS của lớp ứng dụng trong khi trốn tránh việc giám sát lớp phiên khác.
ISP của bạn có thể lọc cổng 5900 cho các tài khoản không phải doanh nghiệp nhưng cho phép SSH trên cổng 22 (hoặc một người có thể chạy SSH trên bất kỳ cổng nào nếu cổng 22 được lọc).
IPS và IDS cấp ứng dụng xem xét tải trọng. Ví dụ, một lỗi tràn bộ đệm phổ biến hoặc SQL Injection. Mã hóa SSH end-to-end sẽ mã hóa dữ liệu lớp ứng dụng.
SSH Tunneling là công cụ tuyệt vời trong hộp công cụ của Quản trị viên Linux để hoàn thành công việc. Tuy nhiên, với tư cách là Quản trị viên, chúng tôi muốn khám phá việc khóa tính khả dụng của những người dùng ít đặc quyền hơn có quyền truy cập vào đường hầm SSH.
Administration Security Note- Hạn chế SSH Tunneling là việc cần sự suy nghĩ của Quản trị viên. Đánh giá lý do tại sao người dùng cần SSH Tunneling ngay từ đầu; những gì người dùng cần đào hầm; cùng với xác suất rủi ro thực tế và tác động trong trường hợp xấu nhất.
Đây là một chủ đề nâng cao nằm ngoài phạm vi của một sơ cấp trung cấp. Nghiên cứu về chủ đề này được khuyên dành cho những ai muốn tiếp cận các cấp trên của Cơ quan quản lý CentOS Linux.
Sử dụng Đường hầm SSH cho X-Windows từ xa
Thiết kế của X-Windows trong Linux thực sự gọn gàng so với Windows. Nếu chúng ta muốn điều khiển một hộp Linux từ xa từ một hộp Linux khác, chúng ta có thể tận dụng các cơ chế được tích hợp trong X.
X-Windows (thường được gọi là "X"), cung cấp cơ chế hiển thị các cửa sổ ứng dụng bắt nguồn từ một hộp Linux sang phần hiển thị của X trên một hộp Linux khác. Vì vậy, thông qua SSH, chúng tôi có thể yêu cầu một ứng dụng X-Windows được chuyển tiếp đến màn hình của một hộp Linux khác trên toàn thế giới!
Để chạy Ứng dụng X từ xa qua đường hầm ssh, chúng ta chỉ cần chạy một lệnh duy nhất -
[root@localhost]# ssh -X [email protected]
The syntax is - ssh -X [user] @ [host] và máy chủ phải chạy ssh với người dùng hợp lệ.
Sau đây là ảnh chụp màn hình GIMP chạy trên Máy trạm Ubuntu thông qua đường hầm ssh XWindows từ xa.
Nó khá đơn giản để chạy các ứng dụng từ xa từ một máy chủ hoặc máy trạm Linux khác. Cũng có thể bắt đầu toàn bộ X-Session và có toàn bộ môi trường máy tính để bàn từ xa thông qua một số phương pháp.
XDMCP
Các gói phần mềm không đầu chẳng hạn như NX
Định cấu hình màn hình và màn hình thay thế trong X và trình quản lý máy tính để bàn như Gnome hoặc KDE
Phương pháp này được sử dụng phổ biến nhất cho các máy chủ không có đầu không có màn hình vật lý và thực sự vượt quá phạm vi của mồi cấp trung gian. Tuy nhiên, thật tốt khi biết các tùy chọn có sẵn.
Có một số công cụ của bên thứ ba có thể thêm các khả năng nâng cao để giám sát lưu lượng CentOS. Trong hướng dẫn này, chúng tôi sẽ tập trung vào những thứ được đóng gói trong kho lưu trữ phân phối CentOS chính và kho lưu trữ Fedora EPEL.
Sẽ luôn có những tình huống mà Quản trị viên (vì lý do này hay lý do khác) chỉ còn lại các công cụ trong kho lưu trữ CentOS chính. Hầu hết các tiện ích được thảo luận đều được thiết kế để Quản trị viên sử dụng với trình bao truy cập vật lý. Khi giám sát lưu lượng với một web-gui có thể truy cập, sử dụng các tiện ích của bên thứ ba như ntop-ng hoặc Nagios là lựa chọn tốt nhất (thay vì tạo lại các tiện ích đó từ đầu).
Để nghiên cứu thêm về cả hai giải pháp web-gui có thể định cấu hình, sau đây là một số liên kết để bắt đầu nghiên cứu.
Giám sát lưu lượng cho các tình huống LAN / WAN
Nagios
Nagios đã có từ lâu, do đó, nó vừa được thử nghiệm vừa được thử nghiệm. Tại một thời điểm, tất cả đều miễn phí và mã nguồn mở, nhưng sau đó đã phát triển thành giải pháp Doanh nghiệp với các mô hình cấp phép trả phí để hỗ trợ nhu cầu về sự tinh vi của Doanh nghiệp. Do đó, trước khi lên kế hoạch cho bất kỳ đợt triển khai nào với Nagios, hãy đảm bảo rằng các phiên bản được cấp phép nguồn mở sẽ đáp ứng nhu cầu của bạn hoặc lập kế hoạch chi tiêu với Ngân sách Doanh nghiệp.
Hầu hết các phần mềm giám sát lưu lượng mã nguồn mở Nagios có thể được tìm thấy tại: https://www.nagios.org
Để biết lịch sử tóm tắt của Nagious, đây là trang Lịch sử Nagios chính thức: https://www.nagios.org/about/history/
ntopng
Một công cụ tuyệt vời khác cho phép giám sát băng thông và lưu lượng truy cập qua web-gui được gọi là ntopng . ntopng tương tự như ntop tiện ích Unix và có thể thu thập dữ liệu cho toàn bộ mạng LAN hoặc WAN. Cung cấp một web-gui để quản trị, cấu hình và lập biểu đồ giúp dễ dàng sử dụng cho toàn bộ Phòng CNTT.
Giống như Nagious, ntopng có cả phiên bản nguồn mở và phiên bản doanh nghiệp trả phí. Để biết thêm thông tin về ntopng , vui lòng truy cập trang web:http://www.ntop.org/
Cài đặt kho lưu trữ Fedora EPEL ─ Các gói bổ sung cho Enterprise Linux
Để truy cập một số công cụ cần thiết để giám sát lưu lượng, chúng tôi sẽ cần phải định cấu hình hệ thống CentOS của mình để sử dụng Kho lưu trữ EPEL.
Kho lưu trữ EPEL không được CentOS duy trì hoặc hỗ trợ chính thức. Tuy nhiên, nó được duy trì bởi một nhóm tình nguyện viên Fedora Core để giải quyết các gói thường được sử dụng bởi các chuyên gia Enterprise Linux không có trong CentOS, Fedora Core hoặc Red Hat Linux Enterprise.
Caution -
Hãy nhớ rằng, Kho lưu trữ EPEL không phải là chính thức cho CentOS và có thể phá vỡ tính tương thích và chức năng trên các máy chủ sản xuất có các phụ thuộc chung. Với ý nghĩ đó, chúng tôi khuyên bạn nên luôn kiểm tra trên một máy chủ không sản xuất đang chạy các dịch vụ tương tự như sản xuất trước khi triển khai trên hộp quan trọng của hệ thống.
Thực sự, lợi thế lớn nhất của việc sử dụng Kho lưu trữ EHEL so với bất kỳ kho lưu trữ của bên thứ ba nào khác với CentOS là chúng tôi có thể chắc chắn rằng các tệp nhị phân không bị ô nhiễm. Nó được coi là một phương pháp hay nhất để không sử dụng các kho lưu trữ từ một nguồn không đáng tin cậy.
Với tất cả những gì đã nói, Kho lưu trữ EPEL chính thức rất phổ biến với CentOS đến mức có thể dễ dàng cài đặt nó qua YUM.
[root@CentOS rdc]# yum -y install epel-release
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: repo1.dal.innoscale.net
* extras: repo1.dal.innoscale.net
* updates: mirror.hmc.edu
Resolving Dependencies
--> Running transaction check
---> Package epel-release.noarch 0:7-9 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
--{ condensed output }--
Sau khi cài đặt Kho EPEL, chúng tôi sẽ muốn cập nhật nó.
[root@CentOS rdc]# yum repolist
Loaded plugins: fastestmirror, langpacks
epel/x86_64/metalink
| 11 kB 00:00:00
epel
| 4.3 kB 00:00:00
(1/3): epel/x86_64/group_gz
| 170 kB 00:00:00
(2/3): epel/x86_64/updateinfo
| 753 kB 00:00:01
(3/3): epel/x86_64/primary_db
--{ condensed output }--
Tại thời điểm này, kho EPEL của chúng tôi sẽ được định cấu hình và sẵn sàng sử dụng. Hãy bắt đầu bằng cách cài đặt nload để giám sát băng thông giao diện.
Các công cụ mà chúng tôi sẽ tập trung vào trong hướng dẫn này là:
- nload
- ntop
- ifstst
- iftop
- vnstat
- lợn ròng
- Wireshark
- TCP Dump
- Traceroute
Đây là tất cả các tiêu chuẩn để giám sát lưu lượng trong Doanh nghiệp Linux. Cách sử dụng của từng phạm vi từ đơn giản đến nâng cao, vì vậy chúng tôi sẽ chỉ thảo luận ngắn gọn về các công cụ như Wireshark và TCP Dump.
Cài đặt và sử dụng nload
Với Kho EPEL của chúng tôi được cài đặt và định cấu hình trong CentOS, bây giờ chúng tôi sẽ có thể cài đặt và sử dụng nload . Tiện ích này được thiết kế để lập biểu đồ băng thông trên mỗi giao diện trong thời gian thực.
Giống như hầu hết các cài đặt cơ bản khác, nload được cài đặt thông qua trình quản lý gói YUM.
[root@CentOS rdc]# yum -y install nload
Resolving Dependencies
--> Running transaction check
---> Package nload.x86_64 0:0.7.4-4.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
===============================================================================
===============================================================================
Package Arch
Version Repository Size
===============================================================================
===============================================================================
Installing:
nload x86_64
0.7.4-4.el7 epel 70 k
Transaction Summary
===============================================================================
===============================================================================
Install 1 Package
Total download size: 70 k
Installed size: 176 k
Downloading packages:
--{ condensed output }--
Bây giờ chúng ta đã cài đặt nload và việc sử dụng nó khá dễ dàng.
[root@CentOS rdc]# nload enp0s5
nload sẽ giám sát giao diện được chỉ định. Trong trường hợp này, enp0s5 một giao diện Ethernet, trong thời gian thực từ thiết bị đầu cuối cho tải lưu lượng mạng và tổng mức sử dụng băng thông.
Như đã thấy, nload sẽ lập biểu đồ cả dữ liệu đến và dữ liệu đi từ giao diện được chỉ định, cùng với việc cung cấp biểu diễn vật lý của luồng dữ liệu với dấu thăng "#".
Ảnh chụp màn hình được mô tả là một trang web đơn giản đang được tải với một số lưu lượng truy cập daemon nền.
Các công tắc dòng lệnh phổ biến cho nload là -
Chỉ huy | Hoạt động |
---|---|
-a | Khoảng thời gian |
-t | Khoảng thời gian cập nhật tính bằng mili giây, mặc định là 500 |
-u | Bộ hiển thị đo lưu lượng h |
-U | Đặt các đơn vị đo lường lưu lượng truy cập tổng vào / ra tương tự như tùy chọn -u |
Cú pháp chuẩn cho nload là -
nload [options] <interface>
Nếu không có giao diện nào được chỉ định, nload sẽ tự động lấy giao diện Ethernet đầu tiên. Hãy thử đo tổng dữ liệu vào / ra tính bằng Megabyte và tốc độ truyền dữ liệu hiện tại tính bằng Megabits.
[root@CentOS rdc]# nload -U M -u m
Dữ liệu vào / ra giao diện hiện tại được đo bằng megabit / giây và mỗi hàng "Ttl", đại diện cho tổng dữ liệu vào / ra được hiển thị bằng Megabyte.
nload rất hữu ích cho quản trị viên để xem có bao nhiêu dữ liệu đã đi qua một giao diện và bao nhiêu dữ liệu hiện đang vào / ra một giao diện được chỉ định.
Để xem các giao diện khác mà không cần đóng nload, bạn chỉ cần sử dụng các phím mũi tên trái / phải. Thao tác này sẽ chuyển động qua tất cả các giao diện có sẵn trên hệ thống.
Có thể giám sát nhiều giao diện đồng thời bằng cách sử dụng công tắc -m -
[root@CentOS rdc]# nload -u K -U M -m lo -m enp0s5
giám sát tải đồng thời hai giao diện (lo và enp0s5) -
systemd đã thay đổi cách quản lý ghi nhật ký hệ thống cho CentOS Linux. Thay vì mọi daemon trên hệ thống đặt nhật ký vào các vị trí riêng lẻ hơn là sử dụng các công cụ như tail hoặc grep làm cách chính để phân loại và lọc các mục nhật ký,journald đã mang lại một điểm quản trị duy nhất để phân tích nhật ký hệ thống.
Các thành phần chính đằng sau ghi nhật ký systemd là: journal, jounralctl, và journald.conf
journald là daemon ghi nhật ký chính và được định cấu hình bằng cách chỉnh sửa journald.conf trong khi journalctl được sử dụng để phân tích các sự kiện được đăng bởi journald .
Các sự kiện được Instagram ghi lại bao gồm: sự kiện hạt nhân, quy trình người dùng và dịch vụ daemon.
Đặt múi giờ hệ thống chính xác
Trước khi sử dụng journalctl , chúng tôi cần đảm bảo thời gian hệ thống của chúng tôi được đặt thành thời gian chính xác. Để làm điều này, chúng tôi muốn sử dụng timedatectl .
Hãy kiểm tra thời gian hệ thống hiện tại.
[root@centos rdc]# timedatectl status
Local time: Mon 2017-03-20 00:14:49 MDT
Universal time: Mon 2017-03-20 06:14:49 UTC
RTC time: Mon 2017-03-20 06:14:49
Time zone: America/Denver (MDT, -0600)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: yes
Last DST change: DST began at
Sun 2017-03-12 01:59:59 MST
Sun 2017-03-12 03:00:00 MDT
Next DST change: DST ends (the clock jumps one hour backwards) at
Sun 2017-11-05 01:59:59 MDT
Sun 2017-11-05 01:00:00 MST
[root@centos rdc]#
Hiện tại, hệ thống chính xác với múi giờ địa phương. Nếu hệ thống của bạn không, hãy đặt múi giờ chính xác. Sau khi thay đổi cài đặt, CentOS sẽ tự động tính toán độ lệch múi giờ so với múi giờ hiện tại, điều chỉnh đồng hồ hệ thống ngay lập tức.
Hãy liệt kê tất cả các múi giờ với timedatectl -
[root@centos rdc]# timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau
Đó là đầu ra cạnh tranh từ các múi giờ danh sách định thời . Để tìm một múi giờ địa phương cụ thể, có thể sử dụng lệnh grep:
[root@centos rdc]# timedatectl list-timezones | grep -i "america/New_York"
America/New_York
[root@centos rdc]#
Nhãn được CentOS sử dụng thường là Quốc gia / Vùng với dấu gạch dưới thay vì dấu cách (New_York so với "New York").
Bây giờ hãy đặt múi giờ của chúng ta -
[root@centos rdc]# timedatectl set-timezone "America/New_York"
[root@centos rdc]# date
Mon Mar 20 02:28:44 EDT 2017
[root@centos rdc]#
Đồng hồ hệ thống của bạn sẽ tự động điều chỉnh thời gian.
Sử dụng journalctl để phân tích nhật ký
Chuyển đổi dòng lệnh phổ biến khi sử dụng journalctl -
Công tắc điện | Hoạt động |
---|---|
-k | Chỉ liệt kê các thông báo hạt nhân |
-u | Danh sách theo đơn vị cụ thể (httpd, sshd, v.v.) |
-b | Khởi động phần bù nhãn |
-o | Ghi lại định dạng đầu ra |
-p | Bộ lọc theo loại nhật ký (tên hoặc số) |
-F | Tên trường hoặc giá trị tên trường |
--utc | Thời gian tính theo UTC bù đắp |
--từ | Lọc theo khung thời gian |
Kiểm tra nhật ký khởi động
Đầu tiên, chúng ta sẽ kiểm tra và cấu hình nhật ký khởi động trong CentOS Linux. Điều đầu tiên bạn sẽ nhận thấy là CentOS, theo mặc định, không lưu trữ nhật ký khởi động liên tục qua các lần khởi động lại.
Để kiểm tra nhật ký khởi động cho mỗi trường hợp khởi động lại, chúng ta có thể sử dụng lệnh sau:
[root@centos rdc]# journalctl --list-boots
-4 bca6380a31a2463aa60ba551698455b5 Sun 2017-03-19 22:01:57 MDT—Sun 2017-03-19 22:11:02 MDT
-3 3aaa9b84f9504fa1a68db5b49c0c7208 Sun 2017-03-19 22:11:09 MDT—Sun 2017-03-19 22:15:03 MDT
-2 f80b231272bf48ffb1d2ce9f758c5a5f Sun 2017-03-19 22:15:11 MDT—Sun 2017-03-19 22:54:06 MDT
-1 a071c1eed09d4582a870c13be5984ed6 Sun 2017-03-19 22:54:26 MDT—Mon 2017-03-20 00:48:29 MDT
0 9b4e6cdb43b14a328b1fa6448bb72a56 Mon 2017-03-20 00:48:38 MDT—Mon 2017-03-20 01:07:36 MDT
[root@centos rdc]#
Sau khi khởi động lại hệ thống, chúng ta có thể thấy một mục nhập khác.
[root@centos rdc]# journalctl --list-boots
-5 bca6380a31a2463aa60ba551698455b5 Sun 2017-03-19 22:01:57 MDT—Sun 2017-03-19 22:11:02 MDT
-4 3aaa9b84f9504fa1a68db5b49c0c7208 Sun 2017-03-19 22:11:09 MDT—Sun 2017-03-19 22:15:03 MDT
-3 f80b231272bf48ffb1d2ce9f758c5a5f Sun 2017-03-19 22:15:11 MDT—Sun 2017-03-19 22:54:06 MDT
-2 a071c1eed09d4582a870c13be5984ed6 Sun 2017-03-19 22:54:26 MDT—Mon 2017-03-20 00:48:29 MDT
-1 9b4e6cdb43b14a328b1fa6448bb72a56 Mon 2017-03-20 00:48:38 MDT—Mon 2017-03-20 01:09:57 MDT
0 aa6aaf0f0f0d4fcf924e17849593d972 Mon 2017-03-20 01:10:07 MDT—Mon 2017-03-20 01:12:44 MDT
[root@centos rdc]#
Bây giờ, hãy kiểm tra trường hợp ghi nhật ký khởi động cuối cùng -
root@centos rdc]# journalctl -b -5
-- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Mon 2017-03-20 01:20:27 MDT. --
Mar 19 22:01:57 localhost.localdomain systemd-journal[97]: Runtime journal is using 8.0M
(max allowed 108.4M
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuset
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpu
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuacct
Mar 19 22:01:57 localhost.localdomain kernel: Linux version 3.10.0514.6.2.el7.x86_64
([email protected].
Mar 19 22:01:57 localhost.localdomain kernel: Command line:
BOOT_IMAGE=/vmlinuz-3.10.0-514.6.2.el7.x86_64 ro
Mar 19 22:01:57 localhost.localdomain kernel: Disabled fast string operations
Mar 19 22:01:57 localhost.localdomain kernel: e820: BIOS-provided physical RAM map:
Trên đây là kết quả cô đọng từ lần khởi động cuối cùng của chúng tôi. Chúng tôi cũng có thể tham khảo lại nhật ký khởi động từ giờ, ngày, tuần, tháng và thậm chí cả năm. Tuy nhiên, theo mặc định, CentOS không lưu trữ nhật ký khởi động liên tục. Để cho phép liên tục lưu trữ nhật ký khởi động, chúng ta cần thực hiện một vài thay đổi cấu hình -
- Tạo điểm lưu trữ trung tâm cho nhật ký khởi động
- Cấp quyền thích hợp cho một thư mục nhật ký mới
- Định cấu hình trang newsnald.conf để ghi nhật ký liên tục
Định cấu hình vị trí khởi động cho nhật ký khởi động liên tục
Nơi ban đầu mà newsnald muốn lưu trữ nhật ký khởi động liên tục là / var / log / journal . Vì điều này không tồn tại theo mặc định, hãy tạo nó -
[root@centos rdc]# mkdir /var/log/journal
Bây giờ, hãy cung cấp cho thư mục quyền truy cập thích hợp cho android daemon -
systemd-tmpfiles --create --prefix /var/log/journal
Cuối cùng, hãy nói với sunnynald rằng nó nên lưu trữ nhật ký khởi động liên tục. Trong vim hoặc trình soạn thảo văn bản yêu thích của bạn, hãy mở /etc/systemd/jounrald.conf " .
# See journald.conf(5) for details.
[Journal]=Storage=peristent
Dòng chúng tôi quan tâm là, Storage = . Trước tiên, hãy xóa nhận xét # , sau đó thay đổi thànhStorage = persistentnhư mô tả ở trên. Lưu và khởi động lại hệ thống CentOS của bạn và lưu ý rằng phải có nhiều mục nhập khi chạy khởi động danh sách journalctl .
Note- Id máy thay đổi liên tục như vậy từ một nhà cung cấp VPS có thể khiến cho journald không lưu trữ được nhật ký khởi động liên tục. Có nhiều cách giải quyết cho một kịch bản như vậy. Tốt nhất là đọc kỹ các bản sửa lỗi hiện tại được đăng trên diễn đàn Quản trị viên CentOS, thay vì làm theo lời khuyên đáng tin cậy từ những người đã tìm thấy các giải pháp phù hợp với VPS.
Để kiểm tra một nhật ký khởi động cụ thể, chúng tôi chỉ cần lấy từng phần bù bằng cách sử dụng journald --list-khởi động phần bù bằng công tắc -b . Vì vậy, để kiểm tra nhật ký khởi động thứ hai, chúng tôi sẽ sử dụng -
journalctl -b -2
Giá trị mặc định cho -b không có bù đắp nhật ký khởi động được chỉ định sẽ luôn là nhật ký khởi động hiện tại sau lần khởi động lại cuối cùng.
Phân tích nhật ký theo loại nhật ký
Các sự kiện từ journald được đánh số và phân loại thành 7 loại riêng biệt -
0 - emerg :: System is unusable
1 - alert :: Action must be taken immediatly
2 - crit :: Action is advised to be taken immediatly
3 - err :: Error effecting functionality of application
4 - warning :: Usually means a common issue that can affect security or usilbity
5 - info :: logged informtation for common operations
6 - debug :: usually disabled by default to troubleshoot functionality
Do đó, nếu chúng ta muốn xem tất cả các cảnh báo, lệnh sau có thể được đưa ra thông qua journalctl :
[root@centos rdc]# journalctl -p 4
-- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Wed 2017-03-22 22:33:42 MDT. --
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: RSDP 00000000000f6a10 00024
(v02 PTLTD )
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: XSDT 0000000095eea65b 0005C
(v01 INTEL 440BX 06040000 VMW 01
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: FACP 0000000095efee73 000F4
(v04 INTEL 440BX 06040000 PTL 00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: DSDT 0000000095eec749 1272A
(v01 PTLTD Custom 06040000 MSFT 03
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: FACS 0000000095efffc0 00040
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: BOOT 0000000095eec721 00028
(v01 PTLTD $SBFTBL$ 06040000 LTP 00 Mar 19 22:01:57 localhost.localdomain kernel: ACPI: APIC 0000000095eeb8bd 00742 (v01 PTLTD ? APIC 06040000 LTP 00 Mar 19 22:01:57 localhost.localdomain kernel: ACPI: MCFG 0000000095eeb881 0003C (v01 PTLTD $PCITBL$ 06040000 LTP 00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: SRAT 0000000095eea757 008A8
(v02 VMWARE MEMPLUG 06040000 VMW 00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: HPET 0000000095eea71f 00038
(v01 VMWARE VMW HPET 06040000 VMW 00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: WAET 0000000095eea6f7 00028
(v01 VMWARE VMW WAET 06040000 VMW 00
Mar 19 22:01:57 localhost.localdomain kernel: Zone ranges:
Mar 19 22:01:57 localhost.localdomain kernel: DMA [mem 0x000010000x00ffffff]
Mar 19 22:01:57 localhost.localdomain kernel: DMA32 [mem 0x010000000xffffffff]
Mar 19 22:01:57 localhost.localdomain kernel: Normal empty
Mar 19 22:01:57 localhost.localdomain kernel: Movable zone start for each node
Mar 19 22:01:57 localhost.localdomain kernel: Early memory node ranges
Mar 19 22:01:57 localhost.localdomain kernel: node 0: [mem 0x000010000x0009dfff]
Mar 19 22:01:57 localhost.localdomain kernel: node 0: [mem 0x001000000x95edffff]
Mar 19 22:01:57 localhost.localdomain kernel: node 0: [mem 0x95f000000x95ffffff]
Mar 19 22:01:57 localhost.localdomain kernel: Built 1 zonelists in Node order,
mobility grouping on. Total pages: 60
Mar 19 22:01:57 localhost.localdomain kernel: Policy zone: DMA32
Mar 19 22:01:57 localhost.localdomain kernel: ENERGY_PERF_BIAS: Set to
'normal', was 'performance'
Trên đây là tất cả các cảnh báo trong 4 ngày qua trên hệ thống.
Cách mới để xem và duyệt nhật ký với systemd không cần thực hành và nghiên cứu để trở nên quen thuộc. Tuy nhiên, với các định dạng đầu ra khác nhau và đặc biệt lưu ý về việc làm cho tất cả các bản ghi daemon đóng gói trở nên phổ biến, điều đó đáng được chấp nhận. journald cung cấp tính linh hoạt và hiệu quả cao hơn các phương pháp phân tích nhật ký truyền thống.
Trước khi khám phá các phương pháp dành riêng cho CentOS để triển khai kế hoạch sao lưu tiêu chuẩn, trước tiên chúng ta hãy thảo luận về các cân nhắc điển hình đối với chính sách sao lưu mức tiêu chuẩn. Điều đầu tiên chúng tôi muốn làm quen là3-2-1 backup rule.
Chiến lược dự phòng 3-2-1
Trong toàn ngành, bạn sẽ thường nghe thấy thuật ngữ mô hình dự phòng 3-2-1. Đây là một cách tiếp cận rất tốt để sống khi thực hiện một kế hoạch dự phòng. 3-2-1 được định nghĩa như sau:3bản sao dữ liệu; ví dụ, chúng tôi có thể có bản sao làm việc; một bản sao được đưa vào máy chủ CentOS được thiết kế để dự phòng bằng rsync; và các bản sao lưu USB ngoại vi được tạo từ dữ liệu trên máy chủ sao lưu.2các phương tiện sao lưu khác nhau. Chúng tôi thực sự sẽ có ba phương tiện sao lưu khác nhau trong trường hợp này: bản sao hoạt động trên SSD của máy tính xách tay hoặc máy trạm, dữ liệu máy chủ CentOS trên Mảng RADI6 và các bản sao lưu ngoại vi được đặt trên ổ USB.1bản sao dữ liệu ngoại vi; chúng tôi đang xoay các ổ USB ngoại vi hàng đêm. Một cách tiếp cận hiện đại khác có thể là nhà cung cấp sao lưu đám mây.
Khôi phục hệ thống
Một kim loại trần khôi phục kế hoạch chỉ đơn giản là một kế hoạch đặt ra bởi một quản trị viên CentOS để có được hệ thống quan trọng trực tuyến với tất cả các dữ liệu còn nguyên vẹn. Giả sử 100% hệ thống bị lỗi và mất tất cả phần cứng hệ thống trong quá khứ, quản trị viên phải có kế hoạch để đạt được thời gian hoạt động với dữ liệu người dùng nguyên vẹn với chi phí thời gian chết tối thiểu. Nhân nguyên khối được sử dụng trong Linux thực sự làm cho việc khôi phục kim loại trần bằng cách sử dụng hình ảnh hệ thống dễ dàng hơn nhiều so với Windows. Trường hợp Windows sử dụng kiến trúc vi nhân.
Khôi phục toàn bộ dữ liệu và khôi phục kim loại trần thường được thực hiện thông qua sự kết hợp của các phương pháp bao gồm làm việc, hình ảnh đĩa sản xuất được định cấu hình của các máy chủ hoạt động chính, sao lưu dự phòng dữ liệu người dùng tuân theo quy tắc 3-2-1. Thậm chí một số tệp nhạy cảm có thể được lưu trữ trong két an toàn, chống cháy với quyền truy cập hạn chế vào nhân viên công ty đáng tin cậy.
Kế hoạch khôi phục dữ liệu và khôi phục kim loại trần nhiều giai đoạn sử dụng các công cụ CentOS gốc có thể bao gồm:
đ để tạo và khôi phục hình ảnh đĩa sản xuất của các máy chủ được cấu hình
rsync để sao lưu gia tăng tất cả dữ liệu người dùng
tar & gzip để lưu trữ các bản sao lưu tệp được mã hóa với mật khẩu và ghi chú từ quản trị viên. Thông thường, điều này có thể được đặt trên ổ USB, được mã hóa và khóa trong két an toàn mà Người quản lý cấp cao truy cập. Ngoài ra, điều này đảm bảo người khác sẽ biết thông tin xác thực bảo mật quan trọng nếu quản trị viên hiện tại trúng xổ số và biến mất đến một hòn đảo đầy nắng ở đâu đó.
Nếu hệ thống bị treo do lỗi phần cứng hoặc thảm họa, sau đây sẽ là các giai đoạn khôi phục hoạt động khác nhau:
Xây dựng một máy chủ hoạt động với một hình ảnh kim loại trần được định cấu hình
Khôi phục dữ liệu về máy chủ đang hoạt động từ các bản sao lưu
Có quyền truy cập vật lý vào thông tin đăng nhập cần thiết để thực hiện hai thao tác đầu tiên
Sử dụng rsync để sao lưu cấp tệp
rsync là một tiện ích tuyệt vời để đồng bộ hóa các thư mục của tệp cục bộ hoặc với một máy chủ khác. rsync đã được các Quản trị viên Hệ thống sử dụng trong nhiều năm, do đó nó rất được cải tiến cho mục đích sao lưu dữ liệu. Theo ý kiến của tác giả, một trong những tính năng tốt nhất của đồng bộ là khả năng được viết kịch bản từ dòng lệnh.
Trong hướng dẫn này, chúng ta sẽ thảo luận về rsync theo nhiều cách khác nhau -
- Khám phá và nói về một số tùy chọn phổ biến
- Tạo bản sao lưu cục bộ
- Tạo bản sao lưu từ xa qua SSH
- Khôi phục các bản sao lưu cục bộ
rsyncđược đặt tên cho mục đích của nó: Đồng bộ hóa từ xa và vừa mạnh mẽ vừa linh hoạt trong việc sử dụng.
Sau đây là một bản sao lưu từ xa rsync cơ bản qua ssh -
MiNi:~ rdc$ rsync -aAvz --progress ./Desktop/ImportantStuff/
[email protected]:home/rdc/ Documents/RemoteStuff/
[email protected]'s password:
sending incremental file list
6,148 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=23/25)
2017-02-14 16_26_47-002 - Veeam_Architecture001.png
33,144 100% 31.61MB/s 0:00:00 (xfr#2, to-chk=22/25)
A Guide to the WordPress REST API | Toptal.pdf
892,406 100% 25.03MB/s 0:00:00 (xfr#3, to-chk=21/25)
Rick Cardon Technologies, LLC..webloc
77 100% 2.21kB/s 0:00:00 (xfr#4, to-chk=20/25)
backbox-4.5.1-i386.iso
43,188,224 1% 4.26MB/s 0:08:29
sent 2,318,683,608 bytes received 446 bytes 7,302,941.90 bytes/sec
total size is 2,327,091,863 speedup is 1.00
MiNi:~ rdc$
Đồng bộ hóa sau đã gửi gần 2,3GB dữ liệu qua mạng LAN của chúng tôi. Vẻ đẹp của rsync là nó hoạt động tăng dần ở cấp khối trên cơ sở từng tệp. Điều này có nghĩa là, nếu chúng tôi chỉ thay đổi hai ký tự trong tệp văn bản 1MB, thì chỉ một hoặc hai khối sẽ được chuyển qua lan trong lần đồng bộ tiếp theo!
Hơn nữa, chức năng gia tăng có thể bị vô hiệu hóa để có thêm băng thông mạng được sử dụng để sử dụng CPU ít hơn. Điều này có thể được khuyến khích nếu liên tục sao chép một số tệp cơ sở dữ liệu 10MB cứ sau 10 phút trên một Backup-Lan chuyên dụng 1Gb. Lý do là: những thứ này sẽ luôn thay đổi và sẽ truyền tăng dần sau mỗi 10 phút và có thể đánh thuế tải của CPU từ xa. Vì tổng tải chuyển giao sẽ không vượt quá 5 phút, chúng tôi có thể chỉ muốn đồng bộ hóa toàn bộ các tệp cơ sở dữ liệu.
Sau đây là các công tắc phổ biến nhất với rsync :
rsync syntax:
rsync [options] [local path] [[remote host:remote path] or [target path
Công tắc điện | Hoạt động |
---|---|
-a | Chế độ lưu trữ và giả sử -r, -p, -t, -g, -l |
-d | Chỉ đồng bộ cây thư mục, không có tệp |
-r | Đệ quy vào thư mục |
-l | Sao chép các liên kết tượng trưng dưới dạng liên kết tượng trưng |
-p | Duy trì quyền |
-g | Bảo tồn nhóm |
-v | Báo cáo dài dòng |
-z | Nén qua liên kết mạng |
-X | Bảo tồn các thuộc tính mở rộng |
-A | Bảo tồn ACL |
-t | Bảo tồn dấu thời gian |
-W | Chuyển toàn bộ tệp, không phải khối tăng dần |
-u | Không ghi đè lên tệp đích |
--phát triển | Hiển thị tiến trình chuyển |
--xóa bỏ | Xóa các tệp cũ hơn trên mục tiêu |
--max-size = XXX | Kích thước tệp tối đa để đồng bộ hóa |
Khi nào sử dụng rsync
Sở thích cá nhân của tôi đối với rsync là khi sao lưu các tệp từ máy chủ nguồn sang máy chủ đích. Ví dụ: tất cả các thư mục gia đình để khôi phục dữ liệu hoặc thậm chí ngoại vi và vào đám mây để khôi phục sau thảm họa.
Sao lưu cục bộ với rsync
Chúng ta đã biết cách chuyển tệp từ máy chủ này sang máy chủ khác. Phương pháp tương tự có thể được sử dụng để đồng bộ hóa các thư mục và tệp cục bộ.
Hãy tạo một bản sao lưu gia tăng thủ công của / etc / trong thư mục người dùng gốc của chúng tôi.
Đầu tiên, chúng ta cần tạo một thư mục tắt ~ / root cho bản sao lưu đã đồng bộ hóa -
[root@localhost rdc]# mkdir /root/etc_baks
Sau đó, đảm bảo có đủ dung lượng đĩa trống.
[root@localhost rdc]# du -h --summarize /etc/
49M /etc/
[root@localhost rdc]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 43G 15G 28G 35% /
Chúng tôi rất tốt cho việc đồng bộ hóa toàn bộ thư mục / etc / -
rsync -aAvr /etc/ /root/etc_baks/
Thư mục / etc / đã đồng bộ hóa của chúng tôi -
[root@localhost etc_baks]# ls -l ./
total 1436
drwxr-xr-x. 3 root root 101 Feb 1 19:40 abrt
-rw-r--r--. 1 root root 16 Feb 1 19:51 adjtime
-rw-r--r--. 1 root root 1518 Jun 7 2013 aliases
-rw-r--r--. 1 root root 12288 Feb 27 19:06 aliases.db
drwxr-xr-x. 2 root root 51 Feb 1 19:41 alsa
drwxr-xr-x. 2 root root 4096 Feb 27 17:11 alternatives
-rw-------. 1 root root 541 Mar 31 2016 anacrontab
-rw-r--r--. 1 root root 55 Nov 4 12:29 asound.conf
-rw-r--r--. 1 root root 1 Nov 5 14:16 at.deny
drwxr-xr-x. 2 root root 32 Feb 1 19:40 at-spi2
--{ condensed output }--
Bây giờ chúng ta hãy thực hiện một rsync gia tăng -
[root@localhost etc_baks]# rsync -aAvr --progress /etc/ /root/etc_baks/
sending incremental file list
test_incremental.txt
0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=1145/1282)
sent 204620 bytes received 2321 bytes 413882.00 bytes/sec
total size is 80245040 speedup is 387.77
[root@localhost etc_baks]#
Chỉ tệp test_incremental.txt của chúng tôi được sao chép.
Sao lưu vi sai từ xa với rsync
Hãy thực hiện sao lưu đầy đủ rsync ban đầu của chúng tôi trên một máy chủ có triển khai kế hoạch sao lưu. Ví dụ này thực sự là sao lưu một thư mục trên Máy trạm Mac OS X vào máy chủ CentOS. Một khía cạnh tuyệt vời khác của rsync là nó có thể được sử dụng trên bất kỳ nền tảng nào mà rsync đã được chuyển sang.
MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/
[email protected]:Documents/RemoteStuff
[email protected]'s password:
sending incremental file list
./
A Guide to the WordPress REST API | Toptal.pdf
Rick Cardon Tech LLC.webloc
VeeamDiagram.png
backbox-4.5.1-i386.iso
dhcp_admin_script_update.py
DDWRT/
DDWRT/.DS_Store
DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
DDWRT/ddwrt_mod_notes.docx
DDWRT/factory-to-ddwrt.bin
open_ldap_config_notes/
open_ldap_config_notes/ldap_directory_a.png
open_ldap_config_notes/open_ldap_notes.txt
perl_scripts/
perl_scripts/mysnmp.pl
php_scripts/
php_scripts/chunked.php
php_scripts/gettingURL.php
sent 2,318,281,023 bytes received 336 bytes 9,720,257.27 bytes/sec
total size is 2,326,636,892 speedup is 1.00
MiNi:~ rdc$
Bây giờ chúng tôi đã sao lưu một thư mục từ một máy trạm vào một máy chủ chạy ổ đĩa RAID6 với phương tiện khôi phục thảm họa xoay được lưu trữ bên ngoài. Sử dụng rsync đã cung cấp cho chúng tôi bản sao lưu tiêu chuẩn 3-2-1 chỉ với một máy chủ có mảng đĩa dự phòng đắt tiền và các bản sao lưu vi sai xoay vòng.
Bây giờ, hãy thực hiện một bản sao lưu khác của cùng một thư mục bằng cách sử dụng rsync sau khi một tệp mới có tên test_file.txt đã được thêm vào.
MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/
[email protected]:Documents/RemoteStuff
[email protected]'s password:
sending incremental file list
./
test_file.txt
sent 814 bytes received 61 bytes 134.62 bytes/sec
total size is 2,326,636,910 speedup is 2,659,013.61
MiNi:~ rdc$
Như bạn có thể thấy, chỉ có tệp mới được gửi đến máy chủ qua rsync . So sánh khác biệt được thực hiện trên cơ sở từng tệp.
Một số điều cần lưu ý là: Điều này chỉ sao chép tệp mới: test_file.txt, vì nó là tệp duy nhất có các thay đổi. rsync sử dụng ssh. Chúng tôi không bao giờ cần sử dụng tài khoản gốc của mình trên cả hai máy.
Đơn giản, mạnh mẽ và hiệu quả, rsync rất tuyệt vời để sao lưu toàn bộ thư mục và cấu trúc thư mục. Tuy nhiên, bản thân rsync không tự động hóa quá trình. Đây là nơi chúng tôi cần tìm hiểu hộp công cụ của mình và tìm công cụ tốt nhất, nhỏ gọn và đơn giản cho công việc.
Để tự động sao lưu rsync với cronjobs , điều cần thiết là người dùng SSH phải được thiết lập bằng cách sử dụng khóa SSH để xác thực. Điều này kết hợp với cronjobs cho phép rsync được thực hiện tự động trong các khoảng thời gian được định trước.
Sử dụng DD cho hình ảnh khôi phục kim loại trần từng khối
DD là một tiện ích Linux đã có từ buổi bình minh của hạt nhân Linux gặp gỡ GNU Utilities.
dd trong các thuật ngữ đơn giản nhất sao chép hình ảnh của một vùng đĩa đã chọn. Sau đó, cung cấp khả năng sao chép các khối đã chọn của đĩa vật lý. Vì vậy, trừ khi bạn có bản sao lưu, khi dd ghi qua đĩa, tất cả các khối sẽ được thay thế. Mất dữ liệu trước đó vượt quá khả năng khôi phục đối với phục hồi dữ liệu cấp chuyên nghiệp thậm chí có giá rất cao.
Toàn bộ quá trình tạo hình ảnh hệ thống có thể khởi động bằng dd như sau:
- Khởi động từ máy chủ CentOS với bản phân phối linux có thể khởi động
- Tìm ký hiệu của đĩa khởi động được chụp ảnh
- Quyết định vị trí nơi hình ảnh khôi phục sẽ được lưu trữ
- Tìm kích thước khối được sử dụng trên đĩa của bạn
- Bắt đầu hoạt động hình ảnh dd
Trong hướng dẫn này, vì lợi ích của thời gian và đơn giản, chúng tôi sẽ tạo một ảnh ISO của bản ghi khởi động chính từ máy ảo CentOS. Sau đó chúng tôi sẽ lưu trữ hình ảnh này bên ngoài trang web. Trong trường hợp MBR của chúng tôi bị hỏng và cần được khôi phục, quy trình tương tự có thể được áp dụng cho toàn bộ đĩa hoặc phân vùng có khả năng khởi động. Tuy nhiên, thời gian và dung lượng đĩa cần thiết thực sự hơi quá mức cho hướng dẫn này.
Quản trị viên CentOS được khuyến khích thành thạo trong việc khôi phục đĩa / phân vùng có thể khởi động hoàn toàn trong môi trường thử nghiệm và thực hiện khôi phục kim loại trần. Điều này sẽ giảm bớt rất nhiều áp lực khi cuối cùng một người cần phải hoàn thành thực hành trong một tình huống thực tế với Người quản lý và vài chục người dùng cuối đang tính thời gian chết. Trong trường hợp như vậy, 10 phút để tìm ra mọi thứ có thể là một thời gian dài và khiến người ta phải đổ mồ hôi.
Note- Khi sử dụng dd, hãy đảm bảo KHÔNG nhầm lẫn giữa nguồn và khối lượng đích. Bạn có thể phá hủy dữ liệu và các máy chủ có khả năng khởi động bằng cách sao chép vị trí sao lưu của mình vào ổ đĩa khởi động. Hoặc tệ hơn có thể phá hủy dữ liệu mãi mãi bằng cách sao chép dữ liệu ở mức rất thấp với DD.
Sau đây là các công tắc và tham số dòng lệnh phổ biến cho dd -
Công tắc điện | Hoạt động |
---|---|
nếu = | Trong tệp hoặc nguồn được sao chép |
của = | Tệp ngoài hoặc bản sao của tệp trong |
bs | Đặt cả kích thước khối đầu vào và đầu ra |
che khuất | Đặt kích thước khối tệp đầu ra |
IBS | Đặt kích thước khối tệp đầu vào |
đếm | Đặt số khối để sao chép |
chuyển đổi | Các tùy chọn bổ sung để thêm cho hình ảnh |
Noerror | Không ngừng xử lý lỗi |
đồng bộ hóa | Chèn các khối đầu vào không phù hợp trong trường hợp có lỗi hoặc lệch |
Note on block size- Kích thước khối mặc định cho dd là 512 byte. Đây là kích thước khối tiêu chuẩn của ổ đĩa cứng mật độ thấp hơn. Các ổ cứng HDD có mật độ cao hơn ngày nay đã tăng lên kích thước khối 4096 byte (4kB) để cho phép các ổ đĩa từ 1TB trở lên. Vì vậy, chúng tôi sẽ muốn kiểm tra kích thước khối đĩa trước khi sử dụng dd với các đĩa cứng mới hơn, dung lượng cao hơn.
Đối với hướng dẫn này, thay vì làm việc trên máy chủ sản xuất với dd , chúng tôi sẽ sử dụng cài đặt CentOS chạy trong VMWare. Chúng tôi cũng sẽ định cấu hình VMWare để khởi động hình ảnh ISO Linux có thể khởi động thay vì làm việc với Thanh USB có thể khởi động.
Đầu tiên, chúng ta sẽ cần tải xuống ảnh CentOS có tên: CentOS Gnome ISO . Đây là gần 3GB và bạn nên luôn giữ một bản sao để tạo ổ USB có thể khởi động và khởi động vào cài đặt máy chủ ảo để xử lý sự cố và hình ảnh kim loại trần.
Các bản phân phối Linux có khả năng khởi động khác cũng sẽ hoạt động như vậy. Linux Mint có thể được sử dụng cho các ISO có thể khởi động vì nó có hỗ trợ phần cứng tuyệt vời và các công cụ đĩa GUI được đánh bóng để bảo trì.
CentOS GNOME Live boot image có thể được tải xuống từ: http://buildlogs.centos.org/rolling/7/isos/x86_64/CentOS-7-x86_64-LiveGNOME.iso
Hãy cấu hình cài đặt VMWare Workstation của chúng tôi để khởi động từ hình ảnh có thể khởi động Linux của chúng tôi. Các bước dành cho VMWare trên OS X. Tuy nhiên, chúng tương tự nhau trên VMWare Workstation trên Linux, Windows và thậm chí cả Virtual Box.
Note- Sử dụng giải pháp máy tính để bàn ảo như Virtual Box hoặc VMWare Workstation là một cách tuyệt vời để thiết lập các kịch bản phòng thí nghiệm để học các tác vụ Quản trị CentOS. Nó cung cấp khả năng cài đặt một số cài đặt CentOS, thực tế không có cấu hình phần cứng cho phép người dùng tập trung vào việc quản trị và thậm chí lưu trạng thái máy chủ trước khi thực hiện thay đổi.
Đầu tiên, hãy cấu hình một cd-rom ảo và đính kèm ảnh ISO của chúng tôi để khởi động thay vì cài đặt máy chủ CentOS ảo -
Bây giờ, đặt đĩa khởi động -
Bây giờ khi khởi động, máy ảo của chúng tôi sẽ khởi động từ ảnh ISO khởi động CentOS và cho phép truy cập vào các tệp trên máy chủ Virtual CentOS đã được định cấu hình trước đó.
Hãy kiểm tra đĩa của chúng tôi để xem chúng tôi muốn sao chép MBR từ đâu (đầu ra cô đọng như sau).
MiNt ~ # fdisk -l
Disk /dev/sda: 60 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Chúng tôi đã định vị cả hai đĩa vật lý của chúng tôi: sda và sdb . Mỗi có kích thước khối là 512 byte. Vì vậy, bây giờ chúng ta sẽ chạy lệnh dd để sao chép 512 byte đầu tiên cho MBR của chúng ta trên SDA1.
Cách tốt nhất để làm điều này là -
[root@mint rdc]# dd if=/dev/sda bs=512 count=1 | gzip -c >
/mnt/sdb/images/mbr.iso.gz
1+0 records in
1+0 records out
512 bytes copied, 0.000171388 s, 3.0 MB/s
[root@mint rdc]# ls /mnt/sdb/
mbr-iso.gz
[root@mint rdc]#
Chỉ như vậy, chúng ta có đầy đủ hình ảnh của bản ghi khởi động chính. Nếu chúng ta có đủ chỗ để tạo ảnh cho ổ khởi động, chúng ta có thể dễ dàng tạo ảnh khởi động toàn hệ thống -
dd if=/dev/INPUT/DEVICE-NAME-HERE conv=sync,noerror bs=4K | gzip -c >
/mnt/sdb/boot-server-centos-image.iso.gz
Các conv = đồng bộ được sử dụng khi byte phải phù hợp với một môi trường vật lý. Trong trường hợp này, dd có thể gặp lỗi nếu không đọc được các căn chỉnh 4K chính xác (giả sử ... một tệp chỉ có 3K nhưng cần chiếm tối thiểu một khối 4K duy nhất trên đĩa. Hoặc, chỉ có một lỗi đọc và tập tin không thể được đọc bởi dd.). Do đó, dd với chuyển đổi = đồng bộ hóa, noerror sẽ chèn 3K với dữ liệu nhỏ, nhưng hữu ích vào phương tiện vật lý trong căn chỉnh khối 4K. Trong khi không trình bày một lỗi có thể kết thúc một hoạt động lớn.
Khi làm việc với dữ liệu từ đĩa, chúng tôi luôn muốn đưa vào tham số: var = sync, noerror .
Điều này đơn giản là vì các đĩa không phải là luồng như dữ liệu TCP. Chúng được tạo thành từ các khối được sắp xếp theo một kích thước nhất định. Ví dụ: nếu chúng ta có khối 512 byte, một tệp chỉ 300 byte vẫn cần đủ 512 byte dung lượng đĩa (có thể là 2 khối cho thông tin inode như quyền và thông tin hệ thống tệp khác).
Sử dụng gzip và tar để lưu trữ an toàn
gzip và tar là hai tiện ích mà quản trị viên CentOS phải quen với việc sử dụng. Chúng được sử dụng cho nhiều mục đích khác ngoài việc giải nén các kho lưu trữ.
Sử dụng Gnu Tar trong CentOS Linux
Tar là một tiện ích lưu trữ tương tự như winrar trên Windows. Tên của nó Tape Archive được viết tắt là tar tóm tắt khá nhiều về tiện ích. tar sẽ lấy các tệp và đặt chúng vào một kho lưu trữ để thuận tiện về mặt logic. Do đó, thay vì hàng tá tệp được lưu trữ trong / etc. chúng tôi chỉ có thể "chuyển hóa" chúng vào một kho lưu trữ để thuận tiện cho việc sao lưu và lưu trữ.
tar đã là tiêu chuẩn để lưu trữ các tệp lưu trữ trên Unix và Linux trong nhiều năm. Do đó, sử dụng tar cùng với gzip hoặc bzip được coi là cách tốt nhất cho các kho lưu trữ trên mỗi hệ thống.
Sau đây là danh sách các công tắc và tùy chọn dòng lệnh phổ biến được sử dụng với tar:
Công tắc điện | Hoạt động |
---|---|
-c | Tạo một kho lưu trữ .tar mới |
-C | Trích xuất đến một thư mục khác |
-j | Sử dụng nén bzip2 |
-z | Sử dụng nén gzip |
-v | Tiến trình lưu trữ hiển thị chi tiết |
-t | Liệt kê nội dung lưu trữ |
-f | Tên tệp của kho lưu trữ |
-x | Trích xuất kho lưu trữ tar |
Sau đây là cú pháp cơ bản để tạo một kho lưu trữ tar .
tar -cvf [tar archive name]
Note on Compression mechanisms with tar- Nên tuân theo một trong hai lược đồ nén phổ biến khi sử dụng tar: gzip và bzip2. tệp gzip tiêu tốn ít tài nguyên CPU hơn nhưng thường có kích thước lớn hơn. Trong khi bzip2 sẽ mất nhiều thời gian hơn để nén, chúng sử dụng nhiều tài nguyên CPU hơn; nhưng sẽ dẫn đến kích thước tệp cuối nhỏ hơn.
Khi sử dụng tính năng nén tệp, chúng ta sẽ luôn muốn sử dụng các phần mở rộng tệp tiêu chuẩn để mọi người bao gồm cả bản thân chúng ta biết (so với việc đoán bằng cách thử và sai) sơ đồ nén nào là cần thiết để giải nén các tệp lưu trữ.
bzip2 | .tbz |
bzip2 | .tar.tbz |
bzip2 | .tb2 |
gzip | .tar.gz |
gzip | .tgz |
Khi cần giải nén các tệp lưu trữ trên hộp Windows hoặc để sử dụng trên Windows, bạn nên sử dụng .tar.tbz hoặc .tar.gz vì hầu hết các phần mở rộng đơn ba ký tự sẽ gây nhầm lẫn cho Windows và chỉ Quản trị viên Windows (tuy nhiên, đó là đôi khi là kết quả mong muốn)
Hãy tạo một kho lưu trữ tar được gzipped từ các bản sao lưu từ xa của chúng tôi được sao chép từ Mac Workstation -
[rdc@mint Documents]$ tar -cvz -f RemoteStuff.tgz ./RemoteStuff/
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php
./RemoteStuff/php_scripts/gettingURL.php
./RemoteStuff/A Guide to the WordPress REST API | Toptal.pdf
./RemoteStuff/Rick Cardon Tech LLC.webloc
./RemoteStuff/VeeamDiagram.png
./RemoteStuff/backbox-4.5.1-i386.iso
./RemoteStuff/dhcp_admin_script_update.py
./RemoteStuff/test_file.txt
[rdc@mint Documents]$ ls -ld RemoteStuff.tgz
-rw-rw-r--. 1 rdc rdc 2317140451 Mar 12 06:10 RemoteStuff.tgz
Note- Thay vì thêm tất cả các tệp trực tiếp vào kho lưu trữ, chúng tôi đã lưu trữ toàn bộ thư mục RemoteStuff . Đây là phương pháp dễ dàng nhất. Đơn giản vì khi giải nén , toàn bộ thư mục RemoteStuff được giải nén cùng với tất cả các tệp bên trong thư mục đang làm việc hiện tại là ./currentWorkingDirectory/RemoteStuff/
Bây giờ hãy giải nén kho lưu trữ bên trong thư mục / root / home.
[root@centos ~]# tar -zxvf RemoteStuff.tgz
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php
./RemoteStuff/php_scripts/gettingURL.php
./RemoteStuff/A Guide to the WordPress REST API | Toptal.pdf
./RemoteStuff/Rick Cardon Tech LLC.webloc
./RemoteStuff/VeeamDiagram.png
./RemoteStuff/backbox-4.5.1-i386.iso
./RemoteStuff/dhcp_admin_script_update.py
./RemoteStuff/test_file.txt
[root@mint ~]# ping www.google.com
Như đã thấy ở trên, tất cả các tệp chỉ được trích xuất vào thư mục chứa trong thư mục làm việc hiện tại của chúng tôi.
[root@centos ~]# ls -l
total 2262872
-rw-------. 1 root root 1752 Feb 1 19:52 anaconda-ks.cfg
drwxr-xr-x. 137 root root 8192 Mar 9 04:42 etc_baks
-rw-r--r--. 1 root root 1800 Feb 2 03:14 initial-setup-ks.cfg
drwxr-xr-x. 6 rdc rdc 4096 Mar 10 22:20 RemoteStuff
-rw-r--r--. 1 root root 2317140451 Mar 12 07:12 RemoteStuff.tgz
-rw-r--r--. 1 root root 9446 Feb 25 05:09 ssl.conf [root@centos ~]#
Sử dụng gzip để Nén tệp sao lưu
Như đã lưu ý trước đó, chúng ta có thể sử dụng bzip2 hoặc gzip từ tar với -j hoặc là -zchuyển mạch dòng lệnh. Chúng tôi cũng có thể sử dụng gzip để nén các tệp riêng lẻ. Tuy nhiên, chỉ sử dụng bzip hoặc gzip không cung cấp nhiều tính năng như khi kết hợp với tar .
Khi sử dụng gzip , hành động mặc định là xóa các tệp gốc, thay thế mỗi tệp bằng một phiên bản nén có thêm phần mở rộng .gz.
Một số công tắc dòng lệnh phổ biến cho gzip là:
Công tắc điện | Hoạt động |
---|---|
-c | Giữ các tệp sau khi đặt vào kho lưu trữ |
-l | Nhận thống kê cho kho lưu trữ đã nén |
-r | Nén đệ quy các tệp trong thư mục |
-1 đến 9 | Chỉ định mức nén trên thang điểm từ 1 đến 9 |
gzip ít nhiều hoạt động trên cơ sở từng tệp chứ không phải trên cơ sở lưu trữ như một số tiện ích zip của Windows O / S. Lý do chính cho điều này là tar đã cung cấp các tính năng lưu trữ nâng cao. gzip được thiết kế để chỉ cung cấp một cơ chế nén.
Do đó, khi nghĩ đến gzip , hãy nghĩ đến một tệp duy nhất. Khi nghĩ đến nhiều tệp, hãy nghĩ đến các kho lưu trữ tar . Bây giờ chúng ta hãy khám phá điều này với kho lưu trữ tar trước của chúng tôi .
Note - Các chuyên gia Linux dày dạn kinh nghiệm thường coi một kho lưu trữ tarred là một tarball.
Hãy tạo một kho lưu trữ tar khác từ bản sao lưu rsync của chúng tôi .
[root@centos Documents]# tar -cvf RemoteStuff.tar ./RemoteStuff/
[root@centos Documents]# ls
RemoteStuff.tar RemoteStuff/
Với mục đích trình diễn, hãy gzip tệp tarball mới được tạo và yêu cầu gzip giữ tệp cũ. Theo mặc định, không có tùy chọn -c , gzip sẽ thay thế toàn bộ kho lưu trữ tar bằng một tệp .gz .
[root@centos Documents]# gzip -c RemoteStuff.tar > RemoteStuff.tar.gz
[root@centos Documents]# ls
RemoteStuff RemoteStuff.tar RemoteStuff.tar.gz
We now have our original directory, our tarred directory and finally our gziped tarball.
Hãy thử kiểm tra công tắc -l với gzip .
[root@centos Documents]# gzip -l RemoteStuff.tar.gz
compressed uncompressed ratio uncompressed_name
2317140467 2326661120 0.4% RemoteStuff.tar
[root@centos Documents]#
Để chứng minh gzip khác với Windows Zip Utilities như thế nào , hãy chạy gzip trên một thư mục tệp văn bản.
[root@centos Documents]# ls text_files/
file1.txt file2.txt file3.txt file4.txt file5.txt
[root@centos Documents]#
Bây giờ hãy sử dụng tùy chọn -r để nén đệ quy tất cả các tệp văn bản trong thư mục.
[root@centos Documents]# gzip -9 -r text_files/
[root@centos Documents]# ls ./text_files/
file1.txt.gz file2.txt.gz file3.txt.gz file4.txt.gz file5.txt.gz
[root@centos Documents]#
Xem? Không phải những gì một số có thể đã dự đoán. Tất cả các tệp văn bản gốc đã bị xóa và mỗi tệp được nén riêng lẻ. Do hành vi này, tốt nhất bạn nên nghĩ đến gzip một mình khi cần làm việc trong các tệp đơn lẻ.
Làm việc với tarball , hãy giải nén tarball rsynced của chúng ta vào một thư mục mới.
[root@centos Documents]# tar -C /tmp -zxvf RemoteStuff.tar.gz
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php
Như đã thấy ở trên, chúng tôi đã giải nén và giải nén tarball của chúng tôi vào thư mục / tmp.
[root@centos Documents]# ls /tmp
hsperfdata_root
RemoteStuff
Mã hóa lưu trữ TarBall
Mã hóa kho lưu trữ tarball để lưu trữ các tài liệu an toàn có thể cần được các nhân viên khác của tổ chức truy cập, trong trường hợp khắc phục thảm họa, có thể là một khái niệm phức tạp. Về cơ bản có ba cách để thực hiện việc này: sử dụng GnuPG hoặc sử dụng openssl hoặc sử dụng tiện ích phần thứ ba.
GnuPG chủ yếu được thiết kế cho mã hóa không đối xứng và có liên quan đến danh tính hơn là cụm mật khẩu. Đúng, nó có thể được sử dụng với mã hóa đối xứng, nhưng đây không phải là điểm mạnh chính của GnuPG. Do đó, tôi sẽ giảm giá GnuPG để lưu trữ các kho lưu trữ với bảo mật vật lý khi nhiều người hơn người ban đầu có thể cần quyền truy cập (chẳng hạn như có thể một người quản lý công ty muốn bảo vệ khỏi một Quản trị viên nắm giữ tất cả các chìa khóa của vương quốc làm đòn bẩy).
Openssl như GnuPG có thể làm những gì chúng ta muốn và giao hàng với CentOS. Nhưng một lần nữa, nó không được thiết kế đặc biệt để làm những gì chúng ta muốn và mã hóa đã bị nghi ngờ trong cộng đồng bảo mật.
Sự lựa chọn của chúng tôi là một tiện ích được gọi là 7zip. 7zip là một tiện ích nén giống như gzip nhưng có nhiều tính năng hơn. Giống như Gnu Gzip, 7zip và các tiêu chuẩn của nó nằm trong cộng đồng mã nguồn mở. Chúng ta chỉ cần cài đặt 7zip từ Kho lưu trữ EHEL của mình (chương tiếp theo sẽ trình bày chi tiết việc cài đặt Kho lưu trữ Doanh nghiệp mở rộng).
Cài đặt 7zip trên Centos
7zip là một cài đặt đơn giản sau khi kho lưu trữ EHEL của chúng tôi đã được tải và định cấu hình trong CentOS.
[root@centos Documents]# yum -y install p7zip.x86_64 p7zip-plugins.x86_64
Loaded plugins: fastestmirror, langpacks
base
| 3.6 kB 00:00:00
epel/x86_64/metalink
| 13 kB 00:00:00
epel
| 4.3 kB 00:00:00
extras
| 3.4 kB 00:00:00
updates
| 3.4 kB 00:00:00
(1/2): epel/x86_64/updateinfo
| 756 kB 00:00:04
(2/2):
epel/x86_64/primary_db
| 4.6 MB 00:00:18
Loading mirror speeds from cached hostfile
--> Running transaction check
---> Package p7zip.x86_64 0:16.02-2.el7 will be installed
---> Package p7zip-plugins.x86_64 0:16.02-2.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
Đơn giản như vậy, 7zip đã được cài đặt và sẵn sàng sử dụng với mã hóa AES 256-bit cho các kho lưu trữ tarball của chúng tôi.
Bây giờ, hãy sử dụng 7z để mã hóa kho lưu trữ được nén bằng mật khẩu. Cú pháp để làm như vậy khá đơn giản -
7z a -p <output filename><input filename>
Ở đâu, a: thêm vào kho lưu trữ, và -p: mã hóa và nhắc cụm mật khẩu
[root@centos Documents]# 7z a -p RemoteStuff.tgz.7z RemoteStuff.tar.gz
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,1 CPU Intel(R)
Core(TM) i5-4278U CPU @ 2.60GHz (40651),ASM,AES-NI)
Scanning the drive:
1 file, 2317140467 bytes (2210 MiB)
Creating archive: RemoteStuff.tgz.7z
Items to compress: 1
Enter password (will not be echoed):
Verify password (will not be echoed) :
Files read from disk: 1
Archive size: 2280453410 bytes (2175 MiB)
Everything is Ok
[root@centos Documents]# ls
RemoteStuff RemoteStuff.tar RemoteStuff.tar.gz RemoteStuff.tgz.7z slapD
text_files
[root@centos Documents]#
Bây giờ, chúng tôi có kho lưu trữ .7z mã hóa tarball được gzipped với 256-bit AES.
Note- 7zip sử dụng mã hóa AES 256-bit với mã băm SHA-256 của mật khẩu và bộ đếm, được lặp lại tới 512K lần để lấy ra khóa. Điều này phải đủ an toàn nếu sử dụng khóa phức tạp.
Quá trình mã hóa và giải nén thêm tệp lưu trữ có thể mất một chút thời gian với các tệp lưu trữ lớn hơn.
7zip là một dịch vụ nâng cao với nhiều tính năng hơn gzip hoặc bzip2. Tuy nhiên, nó không phải là tiêu chuẩn với CentOS hoặc trong thế giới Linux. Vì vậy, các tiện ích khác nên được sử dụng thường xuyên nhất có thể.
Hệ thống CentOS 7 có thể được cập nhật theo ba cách:
- Manually
- Automatically
- Cập nhật thủ công cho các vấn đề bảo mật lớn và định cấu hình cập nhật tự động
Trong môi trường sản xuất, bạn nên cập nhật thủ công cho các máy chủ sản xuất. Hoặc ít nhất là thiết lập một kế hoạch cập nhật để quản trị viên có thể đảm bảo các dịch vụ quan trọng đối với hoạt động kinh doanh.
Thật hợp lý khi một bản cập nhật bảo mật đơn giản có thể gây ra sự cố đệ quy với ứng dụng phổ biến yêu cầu Quản trị viên nâng cấp và cấu hình lại. Vì vậy, hãy bỏ qua việc lên lịch cập nhật tự động trong sản xuất trước khi thử nghiệm trong máy chủ phát triển và máy tính để bàn trước.
Cập nhật thủ công CentOS 7
Để cập nhật CentOS 7, chúng ta sẽ muốn làm quen với lệnh yum .yumđược sử dụng để xử lý kho lưu trữ gói trong CentOS 7. yum là công cụ thường được sử dụng để -
- Cập nhật Hệ thống CentOS 7 Linux
- Tìm kiếm các gói
- Cài đặt các gói
- Phát hiện và cài đặt các phụ thuộc bắt buộc cho các gói
Để sử dụng yum cho các bản cập nhật, máy chủ CentOS của bạn cần được kết nối với Internet. Hầu hết các cấu hình sẽ cài đặt một hệ thống cơ sở, sau đó sử dụng yum để truy vấn kho lưu trữ CentOS chính về chức năng bổ sung trong các gói và áp dụng các bản cập nhật hệ thống.
Chúng tôi đã sử dụng yum để cài đặt một vài gói. Khi sử dụng yum, bạn sẽ luôn cần phải làm như vậy với tư cách là người dùng root. Hoặc một người dùng có quyền truy cập root. Vì vậy, chúng ta hãy tìm kiếm và cài đặt một trình soạn thảo văn bản dễ sử dụng có tên là nano .
[root@centos rdc]# yum search nano
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.rackspace.com
* epel: mirror.chpc.utah.edu
* extras: repos.forethought.net
* updates: repos.forethought.net
======================================================================
N/S matched: nano
======================================================================
nano.x86_64 : A small text editor
nodejs-nano.noarch : Minimalistic couchdb driver for Node.js
perl-Time-Clock.noarch : Twenty-four hour clock object with nanosecond precision
Name and summary matches only, use "search all" for everything.
[root@centos rdc]#
Bây giờ, hãy cài đặt trình soạn thảo văn bản nano .
[root@centos rdc]# yum install nano
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.keystealth.org
* epel: pubmirror1.math.uh.edu
* extras: centos.den.host-engine.com
* updates: repos.forethought.net
Resolving Dependencies
--> Running transaction check
---> Package nano.x86_64 0:2.3.1-10.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch
Version Repository Size
================================================================================
Installing:
nano x86_64
2.3.1-10.el7 base 440 k
Transaction Summary
Install 1 Package
Total download size: 440 k
Installed size: 1.6 M
Is this ok [y/d/N]: y
Downloading packages:
nano-2.3.1-10.el7.x86_64.rpm
| 440 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : nano-2.3.1-10.el7.x86_64
1/1
Verifying : nano-2.3.1-10.el7.x86_64
1/1
Installed:
nano.x86_64 0:2.3.1-10.el7
Complete!
[root@centos rdc]#
Chúng tôi đã cài đặt trình soạn thảo văn bản nano. Phương pháp này, IMO, dễ dàng hơn nhiều so với việc tìm kiếm các tiện ích trên các trang web và chạy trình cài đặt theo cách thủ công. Ngoài ra, các kho lưu trữ sử dụng chữ ký số để xác thực các gói đảm bảo rằng chúng đến từ một nguồn đáng tin cậy với yum. Quản trị viên tùy thuộc vào việc xác nhận tính xác thực khi tin tưởng vào các kho lưu trữ mới. Đây là lý do tại sao nó được coi là một phương pháp hay nhất để hao mòn các kho lưu trữ của bên thứ ba.
Yum cũng có thể được sử dụng để loại bỏ một gói.
[root@centos rdc]# yum remove nano
Loaded plugins: fastestmirror, langpacks
Resolving Dependencies
--> Running transaction check
---> Package nano.x86_64 0:2.3.1-10.el7 will be erased
--> Finished Dependency Resolution
Dependencies Resolved
Bây giờ chúng ta hãy kiểm tra các bản cập nhật.
[root@centos rdc]# yum list updates
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.keystealth.org
* epel: pubmirror1.math.uh.edu
* extras: centos.den.host-engine.com
* updates: repos.forethought.net
Updated Packages
NetworkManager.x86_64 1:1.4.0-17.el7_3 updates
NetworkManager-adsl.x86_64 1:1.4.0-17.el7_3 updates
NetworkManager-glib.x86_64 1:1.4.0-17.el7_3 updates
NetworkManager-libnm.x86_64 1:1.4.0-17.el7_3 updates
NetworkManager-team.x86_64 1:1.4.0-17.el7_3 updates
NetworkManager-tui.x86_64 1:1.4.0-17.el7_3 updates
NetworkManager-wifi.x86_64 1:1.4.0-17.el7_3 updates
audit.x86_64 2.6.5-3.el7_3.1 updates
audit-libs.x86_64 2.6.5-3.el7_3.1 updates
audit-libs-python.x86_64
Như mô tả, chúng tôi có vài chục bản cập nhật đang chờ cài đặt. Trên thực tế, có tổng số khoảng 100 bản cập nhật vì chúng tôi chưa định cấu hình các bản cập nhật tự động. Vì vậy, hãy cài đặt tất cả các bản cập nhật đang chờ xử lý.
[root@centos rdc]# yum update
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.usc.edu
* epel: pubmirror1.math.uh.edu
* extras: repos.forethought.net
* updates: repos.forethought.net
Resolving Dependencies
--> Running transaction check
---> Package NetworkManager.x86_64 1:1.4.0-14.el7_3 will be updated
---> Package NetworkManager.x86_64 1:1.4.0-17.el7_3 will be an update
selinux-policy noarch 3.13.1102.el7_3.15 updates 414 k
selinux-policy-targeted noarch 3.13.1102.el7_3.15 updates 6.4 M
systemd x86_64 21930.el7_3.7 updates 5.2 M
systemd-libs x86_64 21930.el7_3.7 updates 369 k
systemd-python x86_64 21930.el7_3.7 updates 109 k
systemd-sysv x86_64 21930.el7_3.7 updates 63 k
tcsh x86_64 6.18.01-13.el7_3.1 updates 338 k
tzdata noarch 2017a1.el7 updates 443 k
tzdata-java noarch 2017a1.el7 updates 182 k
wpa_supplicant x86_64 1:2.021.el7_3 updates 788 k
Transaction Summary
===============================================================================
Install 2 Packages
Upgrade 68 Packages
Total size: 196 M
Total download size: 83 M
Is this ok [y/d/N]:
Sau khi nhấn phím "y", quá trình cập nhật CentOS 7 sẽ bắt đầu. Quá trình chung mà yum trải qua khi cập nhật là:
- Kiểm tra các gói hiện tại
- Tìm trong kho cho các gói cập nhật
- Tính toán các phụ thuộc cần thiết cho các gói được cập nhật
- Tải xuống các bản cập nhật
- Cài đặt bản cập nhật
Bây giờ, hãy đảm bảo hệ thống của chúng tôi được cập nhật -
[root@centos rdc]# yum list updates
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* updates: mirror.compevo.com
[root@centos rdc]#
Như bạn có thể thấy, không có bản cập nhật nào được liệt kê.
Định cấu hình cập nhật tự động cho YUM
Trong môi trường Doanh nghiệp, như đã đề cập trước đó, cập nhật tự động có thể là phương pháp cài đặt ưu tiên hoặc không. Hãy xem qua các bước để định cấu hình cập nhật tự động với yum.
Đầu tiên, chúng tôi cài đặt một gói có tên là yum-cron .
[root@centos rdc]# yum -y install yum-cron
Install 1 Package
Total download size: 61 k
Installed size: 51 k
Downloading packages:
yum-cron-3.4.3-150.el7.centos.noarch.rpm
| 61 kB 00:00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : yum-cron-3.4.3-150.el7.centos.noarch
1/1
Verifying : yum-cron-3.4.3-150.el7.centos.noarch
1/1
Installed:
yum-cron.noarch 0:3.4.3-150.el7.centos
Complete!
[root@centos rdc]#
Theo mặc định, yum-cron sẽ chỉ tải xuống các bản cập nhật và không cài đặt chúng. Việc cài đặt các bản cập nhật tự động hay không là ở Quản trị viên. Cảnh báo lớn nhất là: một số bản cập nhật sẽ yêu cầu khởi động lại hệ thống. Ngoài ra, một số bản cập nhật có thể yêu cầu thay đổi cấu hình trước khi các dịch vụ hoạt động trở lại.
Cập nhật phần phụ thuộc có thể tạo ra sự cố đệ quy trong trường hợp sau:
Một bản cập nhật được đề xuất bởi yum cho một thư viện nhất định
Thư viện chỉ hỗ trợ Apache Server 2.4, nhưng chúng tôi có máy chủ 2.3
Trang web thương mại của chúng tôi dựa trên một phiên bản PHP nhất định
Phiên bản Apache mới được cài đặt cho thư viện yêu cầu nâng cấp PHP
Các ứng dụng web sản xuất của chúng tôi vẫn chưa được thử nghiệm với phiên bản PHP mới hơn
Yum có thể tiếp tục và tự động nâng cấp Apache và PHP mà không cần thông báo trừ khi không được định cấu hình.
Nếu tất cả 5 tình huống diễn ra, nó có thể dẫn đến bất cứ điều gì từ đau đầu lớn vào buổi sáng cho đến khả năng xâm phạm bảo mật làm lộ dữ liệu người dùng. Trong khi ví dụ nói trên là một cơn bão hoàn hảo, chúng tôi không bao giờ muốn một kịch bản như vậy diễn ra.
Quản trị viên tùy thuộc vào việc truy cập các tình huống có thể có khả năng mất doanh thu trong thời gian cần thiết để khôi phục dịch vụ do thời gian ngừng hoạt động có thể xảy ra khi khởi động lại và cấu hình lại cập nhật. Cách làm này có thể không đủ thận trọng đối với một trang web thương mại điện tử trị giá hàng triệu đô la mỗi ngày với hàng triệu khách hàng.
Bây giờ, hãy cấu hình yum-cron để tự động cài đặt các bản cập nhật hệ thống.
[root@centos rdc]# vim /etc/yum/yum-cron.conf
# Whether updates should be applied when they are available. Note
# that download_updates must also be yes for the update to be applied.
apply_updates = yes
Chúng tôi muốn thay đổi apply_updates = no thành apply_updates = yes . Bây giờ hãy cấu hình khoảng thời gian cập nhật cho yum-cron .
Một lần nữa, việc sử dụng các bản cập nhật tự động và cài đặt các bản cập nhật theo yêu cầu có thể là một con dao hai lưỡi và cần được quản trị viên xem xét cho từng trường hợp riêng biệt.
Giới thiệu về Bash Shell
Giống như hương vị của GNU Linux, shell có nhiều loại và khác nhau về khả năng tương thích. Vỏ mặc định trong CentOS được gọi là Bash hoặc Bourne Again Shell. Bash shell là một phiên bản sửa đổi ngày nay của Bourne Shell do Stephen Bourne phát triển. Bash là sự thay thế trực tiếp cho Thompson Shell ban đầu trên hệ điều hành Unix do Ken Thompson và Dennis Ritchie phát triển tại Bell Labs (Stephen Bourne cũng được Bell Labs tuyển dụng)
Mọi người đều có một lớp vỏ yêu thích và mỗi người đều có những điểm mạnh và khó khăn. Nhưng phần lớn, Bash sẽ là trình bao mặc định trên tất cả các bản phân phối Linux và phổ biến nhất là có sẵn. Với kinh nghiệm, mọi người sẽ muốn khám phá và sử dụng một lớp vỏ phù hợp nhất với họ. Tuy nhiên đồng thời, mọi người cũng sẽ muốn làm chủ Bash shell.
Các shell Linux khác bao gồm: Tcsh, Csh, Ksh, Zsh và Fish.
Phát triển các kỹ năng sử dụng bất kỳ trình bao Linux nào ở cấp độ chuyên gia là cực kỳ quan trọng đối với quản trị viên CentOS. Như chúng tôi đã đề cập trước đây, không giống như Windows, Linux ở trung tâm của nó là một hệ điều hành dòng lệnh. Shell chỉ đơn giản là một giao diện người dùng cho phép quản trị viên (hoặc người dùng) đưa ra các lệnh cho hệ điều hành. Nếu một quản trị viên hệ thống Linux là một phi công của hãng hàng không, việc sử dụng shell sẽ tương tự như việc đưa máy bay ra khỏi phi công lái tự động và nắm lấy các điều khiển thủ công để có chuyến bay linh hoạt hơn.
Linux shell, như Bash, được biết đến trong thuật ngữ Khoa học Máy tính là Command Line Interpreter. Microsoft Windows cũng có hai trình thông dịch dòng lệnh được gọi là DOS (không nên nhầm lẫn với hệ điều hành DOS gốc) và PowerShell.
Hầu hết các shell hiện đại như Bash cung cấp constructscho phép các tập lệnh shell phức tạp hơn để tự động hóa cả các tác vụ thông thường và phức tạp.
Cấu trúc bao gồm -
- Kiểm soát luồng tập lệnh (ifthen và else)
- Phép toán so sánh lôgic (lớn hơn, nhỏ hơn, bằng nhau)
- Loops
- Variables
- Các tham số xác định hoạt động (tương tự như công tắc có lệnh)
Sử dụng Shell Script so với ngôn ngữ kịch bản
Thông thường khi nghĩ về việc thực hiện một tác vụ, các quản trị viên sẽ tự hỏi: Tôi nên sử dụng shell script hay một ngôn ngữ kịch bản như Perl, Ruby hoặc Python?
Không có quy tắc thiết lập nào ở đây. Chỉ có sự khác biệt điển hình giữa trình bao và ngôn ngữ kịch bản.
Vỏ
Shell cho phép sử dụng các lệnh Linux như sed , grep , tee , cat và tất cả các tiện ích dựa trên dòng lệnh khác trên hệ điều hành Linux. Trên thực tế, hầu hết mọi tiện ích dòng lệnh Linux đều có thể được viết mã trong shell của bạn.
Một ví dụ tuyệt vời về việc sử dụng shell sẽ là một tập lệnh nhanh để kiểm tra danh sách các máy chủ để phân giải DNS.
Tập lệnh Bash đơn giản của chúng tôi để kiểm tra tên DNS -
#!/bin/bash
for name in $(cat $1); do host $name.$2 | grep "has address"
done
exit
danh sách từ nhỏ để kiểm tra độ phân giải DNS trên -
dns
www
test
dev
mail
rdp
remote
Đầu ra đối với miền google.com -
[rdc@centos ~]$ ./dns-check.sh dns-names.txt google.com
-doing dns
dns.google.com has address 172.217.6.46
-doing www
www.google.com has address 172.217.6.36
-doing test
-doing dev
-doing mail
googlemail.l.google.com has address 172.217.6.37
-doing rdp
-doing remote
[rdc@centos ~]$
Tận dụng các lệnh Linux đơn giản trong trình bao của chúng tôi, chúng tôi đã có thể tạo một tập lệnh 5 dòng đơn giản để kiểm tra tên DNS từ một danh sách từ. Điều này sẽ mất một khoảng thời gian đáng kể trong Perl, Python hoặc Ruby ngay cả khi sử dụng Thư viện DNS được triển khai độc đáo.
Ngôn ngữ viết kịch bản
Một ngôn ngữ kịch bản sẽ cung cấp nhiều quyền kiểm soát hơn bên ngoài shell. Tập lệnh Bash ở trên đã sử dụng một trình bao bọc xung quanh lệnh máy chủ Linux . Điều gì sẽ xảy ra nếu chúng ta muốn làm nhiều hơn và tạo ứng dụng của riêng mình như máy chủ để tương tác bên ngoài shell? Đây là nơi chúng tôi sẽ sử dụng một ngôn ngữ kịch bản.
Ngoài ra, với ngôn ngữ kịch bản được duy trì cao, chúng tôi biết các hành động của mình sẽ hoạt động trên các hệ thống khác nhau. Python 3.5, chẳng hạn, sẽ hoạt động trên bất kỳ hệ thống nào khác chạy Python 3.5 với cùng các thư viện được cài đặt. Không phải vậy, nếu chúng ta muốn chạy tập lệnh BASH của mình trên cả Linux và HP-UX.
Đôi khi ranh giới giữa ngôn ngữ kịch bản và một trình bao mạnh mẽ có thể bị mờ. Có thể tự động hóa các tác vụ quản trị CentOS Linux bằng Python, Perl hoặc Ruby. Làm như vậy thực sự là khá phổ biến. Ngoài ra, các nhà phát triển shell-script giàu có đã tạo ra một daemon máy chủ web đơn giản, nhưng có chức năng khác trong Bash.
Với kinh nghiệm về ngôn ngữ kịch bản và tự động hóa các tác vụ trong trình bao, quản trị viên CentOS sẽ có thể nhanh chóng xác định nơi bắt đầu khi cần giải quyết vấn đề. Việc bắt đầu một dự án với shell script là khá phổ biến. Sau đó, chuyển sang ngôn ngữ kịch bản (hoặc biên dịch) khi một dự án trở nên phức tạp hơn.
Ngoài ra, bạn có thể sử dụng cả ngôn ngữ script và shell script cho các phần khác nhau của dự án. Một ví dụ có thể là một tập lệnh Perl để quét một trang web. Sau đó, sử dụng một tập lệnh shell để phân tích cú pháp và định dạng với sed , awk và egrep . Cuối cùng, sử dụng tập lệnh PHP để chèn dữ liệu được định dạng vào cơ sở dữ liệu MySQL bằng GUI web.
Với một số lý thuyết đằng sau shell, hãy bắt đầu với các khối xây dựng cơ bản để tự động hóa các tác vụ từ Bash shell trong CentOS.
Đầu ra đầu vào và chuyển hướng
Xử lý stdout thành một lệnh khác -
[rdc@centos ~]$ cat ~/output.txt | wc -l
6039
[rdc@centos ~]$
Ở trên, chúng ta đã chuyển cat'sstoud sang wc để xử lý với ký tự pipe . wc sau đó xử lý đầu ra từ cat , in số dòng của output.txt tới terminal. Hãy nghĩ về ký tự ống dẫn như một "đường ống" đi qua đầu ra từ một lệnh, sẽ được xử lý bởi lệnh tiếp theo.
Sau đây là các khái niệm chính cần nhớ khi xử lý chuyển hướng lệnh:
Con số | Trình mô tả tệp | Tính cách |
---|---|---|
0 | đầu vào tiêu chuẩn | < |
1 | đầu ra tiêu chuẩn | > |
2 | lỗi tiêu chuẩn | |
nối stdout | >> | |
chỉ định chuyển hướng | & | |
ống stdout thành stdin | | |
Chúng tôi đã giới thiệu điều này trong chương một mà không thực sự nói nhiều về chuyển hướng hoặc gán chuyển hướng. Khi mở một terminal trong Linux, shell của bạn được coi là mục tiêu mặc định cho -
- đầu vào tiêu chuẩn <0
- đầu ra tiêu chuẩn> 1
- lỗi tiêu chuẩn 2
Hãy xem cách này hoạt động như thế nào -
[rdc@centos ~]$ lsof -ap $BASHPID -d 0,1,2 COMMAND PID USER **FD** TYPE DEVICE SIZE/OFF NODE NAME bash 13684 rdc **0u** CHR 136,0 0t0 3 /dev/pts/0 bash 13684 rdc **1u** CHR 136,0 0t0 3 /dev/pts/0 bash 13684 rdc **2u** CHR 136,0 0t0 3 /dev/pts/0 [rdc@centos ~]$
/ dev / pts / 0 là thiết bị đầu cuối giả của chúng tôi. CentOS Linux nhìn vào điều này và nghĩ về ứng dụng đầu cuối đang mở của chúng tôi giống như một thiết bị đầu cuối thực sự với bàn phím và màn hình được cắm vào thông qua giao diện nối tiếp. Tuy nhiên, giống như một hypervisor trừu tượng hóa phần cứng của một hệ điều hành / dev / pts trừu tượng hóa thiết bị đầu cuối của chúng ta thành các ứng dụng.
Từ lệnh lsof trên , chúng ta có thể thấy bên dướiFDcột mà cả ba bộ mô tả tệp được đặt thành thiết bị đầu cuối ảo của chúng tôi (0,1,2). Bây giờ chúng ta có thể gửi lệnh, xem đầu ra lệnh, cũng như bất kỳ lỗi nào liên quan đến lệnh.
Sau đây là các ví dụ cho STDIN và STDOUT -
GIỚI THIỆU
[root@centosLocal centos]# echo "I am coming from Standard output or STDOUT." >
output.txt && cat output.txt
I am coming from Standard output or STDOUT.
[root@centosLocal centos]#
Cũng có thể gửi cả stdout và stderr đến các tệp riêng biệt -
bash-3.2# find / -name passwd 1> good.txt 2> err.txt
bash-3.2# cat good.txt
/etc/pam.d/passwd
/etc/passwd
bash-3.2# cat err.txt
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory
bash-3.2#
Khi tìm kiếm toàn bộ hệ thống tệp, hai lỗi đã gặp phải. Mỗi kết quả được gửi đến một tệp riêng biệt để xem xét sau này, trong khi kết quả trả về được đặt vào một tệp văn bản riêng biệt.
Gửi stderr tới một tệp văn bản có thể hữu ích khi thực hiện những công việc xuất nhiều dữ liệu đến thiết bị đầu cuối như biên dịch ứng dụng. Điều này sẽ cho phép kiểm tra các lỗi có thể bị mất khỏi lịch sử cuộn ngược của thiết bị đầu cuối.
Một lưu ý khi chuyển STDOUT sang tệp văn bản là sự khác biệt giữa >> và >. Dấu đôi ">>" sẽ nối vào một tệp, trong khi dạng số ít sẽ ngăn tệp và ghi nội dung mới (vì vậy tất cả dữ liệu trước đó sẽ bị mất).
STDIN
[root@centosLocal centos]# cat < stdin.txt
Hello,
I am being read form Standard input, STDIN.
[root@centosLocal centos]#
Trong lệnh trên, tệp văn bản stdin.txt đã được chuyển hướng đến lệnh cat , lặp lại nội dung của nó thành STDOUT .
Ký tự ống dẫn "|"
Ký tự ống sẽ lấy đầu ra từ lệnh đầu tiên, chuyển nó làm đầu vào cho lệnh tiếp theo, cho phép lệnh thứ cấp thực hiện các thao tác trên đầu ra.
Bây giờ, hãy "chuyển hướng" stdout của mèo sang một lệnh khác -
[root@centosLocal centos]# cat output.txt | wc -l
2
[root@centosLocal centos]#
Ở trên, wc thực hiện các phép tính về đầu ra từ cat được truyền từ đường ống. Lệnh pipe đặc biệt hữu ích khi lọc đầu ra từ grep hoặc egrep -
[root@centosLocal centos]# egrep "^[0-9]{4}$" /usr/dicts/nums | wc -l
9000
[root@centosLocal centos]#
Trong lệnh trên, chúng tôi đã chuyển mỗi số 4 chữ số vào wc từ tệp văn bản chứa tất cả các số từ 65535 được chuyển qua bộ lọc egrep .
Chuyển hướng đầu ra với &
Đầu ra có thể được chuyển hướng bằng cách sử dụng &tính cách. Nếu chúng ta muốn hướng đầu ra cả STDOUT và STDERR, vào cùng một tệp, nó có thể được thực hiện như sau:
[root@centosLocal centos]# find / -name passwd > out.txt 2>&1
[root@centosLocal centos]# cat out.txt
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory
/etc/passwd
[root@centosLocal centos]#
Chuyển hướng bằng cách sử dụng &ký tự hoạt động như thế này: đầu tiên, đầu ra được chuyển hướng thành out.txt . Thứ hai, STDERR hoặc bộ mô tả tệp 2 được gán lại vào cùng vị trí với STDOUT, trong trường hợp này là out.txt .
Chuyển hướng cực kỳ hữu ích và có ích trong khi giải quyết các vấn đề gặp phải khi thao tác các tệp văn bản lớn, biên dịch mã nguồn, chuyển hướng đầu ra trong các tập lệnh shell và phát hành các lệnh Linux phức tạp.
Mặc dù mạnh mẽ nhưng việc chuyển hướng có thể trở nên phức tạp đối với Quản trị viên CentOS mới hơn. Thực hành, nghiên cứu và thỉnh thoảng đặt câu hỏi cho diễn đàn Linux (chẳng hạn như Stack Overflow Linux) sẽ giúp giải quyết các giải pháp nâng cao.
Bash Shell cấu tạo
Bây giờ chúng ta đã biết rõ về cách Bash shell hoạt động, hãy cùng tìm hiểu một số cấu trúc cơ bản, thường được sử dụng, để viết script. Trong phần này chúng ta sẽ khám phá -
- Variables
- Loops
- Conditionals
- Kiểm soát vòng lặp
- Đọc và ghi vào tệp
- Các phép toán cơ bản
Gợi ý gỡ rối bằng BASH
BASH có thể hơi phức tạp so với một ngôn ngữ kịch bản chuyên dụng. Một số lỗi lớn nhất trong tập lệnh BASH là do thoát sai hoặc không thoát được các hoạt động tập lệnh được chuyển tới shell. Nếu bạn đã xem qua kịch bản một vài lần và nó không hoạt động như mong đợi, đừng lo lắng. Điều này là phổ biến ngay cả với những người sử dụng BASH để tạo các tập lệnh phức tạp hàng ngày.
Tìm kiếm nhanh trên Google hoặc đăng ký tại một diễn đàn Linux chuyên gia để đặt câu hỏi sẽ dẫn đến giải pháp nhanh chóng. Rất có thể ai đó đã gặp vấn đề chính xác và nó đã được giải quyết.
BASH scripting là một phương pháp tuyệt vời để nhanh chóng tạo ra các script mạnh mẽ cho mọi thứ, từ việc tự động hóa các tác vụ quản trị đến tạo các công cụ hữu ích. Để trở thành nhà phát triển tập lệnh BASH cấp chuyên gia cần có thời gian và thực hành. Do đó, hãy sử dụng tập lệnh BASH bất cứ khi nào có thể, nó là một công cụ tuyệt vời cần có trong hộp công cụ Quản trị CentOS của bạn.
Quản lý gói trong CentOS có thể được thực hiện theo hai cách: từ thiết bị đầu cuối và từ Giao diện người dùng đồ họa.
Thường thì phần lớn thời gian của quản trị viên CentOS sẽ sử dụng thiết bị đầu cuối. Cập nhật và cài đặt các gói cho CentOS cũng không khác gì. Với lưu ý này, trước tiên chúng ta sẽ khám phá quản lý gói trong thiết bị đầu cuối, sau đó tiếp tục sử dụng công cụ quản lý gói đồ họa do CentOS cung cấp.
Trình quản lý gói YUM
YUM là công cụ được cung cấp để quản lý gói trong CentOS. Chúng tôi đã đề cập ngắn gọn đến chủ đề này trong các chương trước. Trong chương này, chúng tôi sẽ làm việc từ một cài đặt CentOS sạch. Trước tiên, chúng tôi sẽ cập nhật hoàn toàn cài đặt của mình và sau đó cài đặt một ứng dụng.
YUM đã mang đến cho việc cài đặt và quản lý phần mềm trong Linux một chặng đường dài. YUM "tự động" kiểm tra các phần phụ thuộc lỗi thời, ngoài các gói lỗi thời. Điều này thực sự giúp quản trị viên CentOS giảm tải so với những ngày cũ là biên dịch mọi ứng dụng từ mã nguồn.
yum kiểm tra cập nhật
Kiểm tra các gói có thể cập nhật ứng viên. Đối với hướng dẫn này, chúng tôi sẽ giả định đây là một hệ thống sản xuất sẽ đối mặt với Internet mà không có ứng dụng sản xuất nào cần được DevOps kiểm tra trước khi nâng cấp các gói. Bây giờ chúng ta hãy cài đặt các ứng viên đã cập nhật vào hệ thống.
[root@localhost rdc]# yum check-update
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.scalabledns.com
* extras: mirror.scalabledns.com
* updates: mirror.clarkson.edu
NetworkManager.x86_64 1:1.4.0-19.el7_3 updates
NetworkManager-adsl.x86_64 1:1.4.0-19.el7_3 updates
NetworkManager-glib.x86_64 1:1.4.0-19.el7_3 updates
NetworkManager-libnm.x86_64 1:1.4.0-19.el7_3 updates
NetworkManager-team.x86_64 1:1.4.0-19.el7_3 updates
NetworkManager-tui.x86_64 1:1.4.0-19.el7_3 updates
NetworkManager-wifi.x86_64 1:1.4.0-19.el7_3 updates
audit.x86_64 2.6.5-3.el7_3.1 updates
vim-common.x86_64 2:7.4.160-1.el7_3.1 updates
vim-enhanced.x86_64 2:7.4.160-1.el7_3.1 updates
vim-filesystem.x86_64 2:7.4.160-1.el7_3.1 updates
vim-minimal.x86_64 2:7.4.160-1.el7_3.1 updates
wpa_supplicant.x86_64 1:2.0-21.el7_3 updates
xfsprogs.x86_64 4.5.0-9.el7_3 updates
[root@localhost rdc]#
cập nhật yum
Điều này sẽ cài đặt tất cả các ứng cử viên được cập nhật làm cho cài đặt CentOS của bạn hiện hành. Với cài đặt mới, quá trình này có thể mất một chút thời gian tùy thuộc vào cài đặt và tốc độ kết nối internet của bạn.
[root@localhost rdc]# yum update
vim-minimal x86_64 2:7.4.160-1.el7_3.1 updates 436 k
wpa_supplicant x86_64 1:2.0-21.el7_3 updates 788 k
xfsprogs x86_64 4.5.0-9.el7_3 updates 895 k
Transaction Summary
======================================================================================
Install 2 Packages
Upgrade 156 Packages
Total download size: 371 M
Is this ok [y/d/N]:
Cài đặt phần mềm qua YUM
Bên cạnh việc cập nhật hệ thống CentOS, trình quản lý gói YUM là công cụ cần thiết của chúng tôi để cài đặt phần mềm. Mọi thứ từ công cụ giám sát mạng, trình phát video, đến trình chỉnh sửa văn bản đều có thể được cài đặt từ kho lưu trữ trung tâm với YUM .
Trước khi cài đặt một số tiện ích phần mềm, chúng ta hãy xem xét một số lệnh YUM . Đối với công việc hàng ngày, 90% việc sử dụng YUM của Quản trị viên CentOS sẽ là với khoảng 7 lệnh. Chúng tôi sẽ xem xét từng phần với hy vọng làm quen với việc vận hành YUM ở mức độ thành thạo để sử dụng hàng ngày. Tuy nhiên, giống như hầu hết các tiện ích Linux khác, YUM cung cấp vô số tính năng nâng cao luôn tuyệt vời để khám phá qua trang người dùng. Sử dụng man yum sẽ luôn là bước đầu tiên để thực hiện các thao tác không quen thuộc với bất kỳ tiện ích Linux nào.
Các lệnh YUM phổ biến nhất
Sau đây là các lệnh YUM thường được sử dụng.
Chỉ huy | Hoạt động |
---|---|
danh sách đã cài đặt | Liệt kê các gói được cài đặt qua YUM |
liệt kê tất cả | Liệt kê tất cả các gói hiện có sẵn |
danh sách nhóm | Liệt kê các gói được nhóm |
thông tin | Cung cấp thông tin chi tiết về một gói |
Tìm kiếm | Tìm kiếm mô tả và tên gói |
Tải về | Cài đặt một gói |
cài đặt cục bộ | Cài đặt gói rpm cục bộ |
tẩy | Gỡ bỏ và cài đặt gói |
làm sạch tất cả | Dọn dẹp / var / cache / yum để giải phóng dung lượng ổ đĩa |
người đàn ông | Giống như tất cả các lệnh linux, tệp trợ giúp |
Cài đặt phần mềm với YUM
Bây giờ chúng tôi sẽ cài đặt một trình duyệt web dựa trên văn bản có tên là Lynx. Trước khi cài đặt, trước tiên chúng ta phải lấy tên gói chứa trình duyệt web Lynx. Chúng tôi thậm chí không chắc chắn 100% kho lưu trữ CentOS mặc định của chúng tôi cung cấp một gói cho trình duyệt web Lynx, vì vậy hãy tìm kiếm và xem -
[root@localhost rdc]# yum search web browser
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.scalabledns.com
* extras: mirror.scalabledns.com
* updates: mirror.clarkson.edu
=================================================================
N/S matched: web, browser
==================================================================
icedtea-web.x86_64 : Additional Java components for OpenJDK - Java browser
plug-in and Web Start implementation
elinks.x86_64 : A text-mode Web browser
firefox.i686 : Mozilla Firefox Web browser
firefox.x86_64 : Mozilla Firefox Web browser
lynx.x86_64 : A text-based Web browser
Full name and summary matches only, use "search all" for everything.
[root@localhost rdc]#
Chúng tôi thấy, CentOS cung cấp trình duyệt web Lynx trong kho lưu trữ. Chúng ta hãy xem thêm một số thông tin về gói.
[root@localhost rdc]# lynx.x86_64
bash: lynx.x86_64: command not found...
[root@localhost rdc]# yum info lynx.x86_64
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.scalabledns.com
* extras: mirror.scalabledns.com
* updates: mirror.clarkson.edu
Available Packages
Name : lynx
Arch : x86_64
Version : 2.8.8
Release : 0.3.dev15.el7
Size : 1.4 M
Repo : base/7/x86_64
Summary : A text-based Web browser
URL : http://lynx.isc.org/
License : GPLv2
Description : Lynx is a text-based Web browser. Lynx does not display any images,
: but it does support frames, tables, and most other HTML tags. One
: advantage Lynx has over graphical browsers is speed; Lynx starts and
: exits quickly and swiftly displays web pages.
[root@localhost rdc]#
Đẹp! Phiên bản 2.8 đã đủ hiện tại nên hãy cài đặt Lynx.
[root@localhost rdc]# yum install lynx
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.scalabledns.com
* extras: mirror.scalabledns.com
* updates: mirror.clarkson.edu
Resolving Dependencies
--> Running transaction check
---> Package lynx.x86_64 0:2.8.8-0.3.dev15.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
===============================================================================
===============================================================================
Package Arch
Version Repository Size
===============================================================================
===============================================================================
Installing:
lynx x86_64
2.8.80.3.dev15.el7 base 1.4 M
Transaction Summary
===============================================================================
===============================================================================
Install 1 Package
Total download size: 1.4 M
Installed size: 5.4 M
Is this ok [y/d/N]: y
Downloading packages:
No Presto metadata available for base
lynx-2.8.8-0.3.dev15.el7.x86_64.rpm
| 1.4 MB 00:00:10
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : lynx-2.8.8-0.3.dev15.el7.x86_64
1/1
Verifying : lynx-2.8.8-0.3.dev15.el7.x86_64
1/1
Installed:
lynx.x86_64 0:2.8.8-0.3.dev15.el7
Complete!
[root@localhost rdc]#
Tiếp theo, hãy đảm bảo rằng Lynx trên thực tế đã cài đặt chính xác.
[root@localhost rdc]# yum list installed | grep -i lynx
lynx.x86_64 2.8.8-0.3.dev15.el7 @base
[root@localhost rdc]#
Tuyệt quá! Hãy sử dụng Lynx để xem web trông như thế nào nếu không có "lượt thích" và hình ảnh đẹp.
[root@localhost rdc]# lynx www.tutorialpoint.in
Tuyệt vời, bây giờ chúng tôi có một trình duyệt web cho máy chủ sản xuất của chúng tôi có thể được sử dụng mà không cần lo lắng nhiều về việc khai thác từ xa được khởi chạy trên web. Đây là một điều tốt cho các máy chủ sản xuất.
Chúng tôi gần như đã hoàn thành, tuy nhiên trước tiên chúng tôi cần thiết lập máy chủ này để các nhà phát triển thử nghiệm các ứng dụng. Vì vậy, hãy đảm bảo rằng họ có tất cả các công cụ cần thiết cho công việc của họ. Chúng tôi có thể cài đặt mọi thứ riêng lẻ, nhưng CentOS và YUM đã làm cho việc này nhanh hơn rất nhiều. Hãy cài đặt Gói Nhóm Phát triển .
[root@localhost rdc]# yum groups list
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.scalabledns.com
* extras: mirror.scalabledns.com
* updates: mirror.clarkson.edu
Available Groups:
Compatibility Libraries
Console Internet Tools
Development Tools
Graphical Administration Tools
Legacy UNIX Compatibility
Scientific Support
Security Tools
Smart Card Support
System Administration Tools
System Management
Done
[root@localhost rdc]#
Đây là danh sách các Nhóm Gói nhỏ hơn do CentOS cung cấp. Hãy xem những gì được bao gồm với "Nhóm phát triển".
[root@localhost rdc]# yum group info "Development Tools"
Loaded plugins: fastestmirror, langpacks
There is no installed groups file.
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
* base: mirror.scalabledns.com
* extras: mirror.scalabledns.com
* updates: mirror.clarkson.edu
Group: Development Tools
Group-Id: development
Description: A basic development environment.
Mandatory Packages:
autoconf
automake
binutils
bison
Màn hình đầu tiên của đầu ra như đã thấy ở trên. Toàn bộ danh sách này là khá toàn diện. Tuy nhiên, nhóm này thường sẽ cần được cài đặt toàn bộ theo thời gian. Hãy cài đặt toàn bộ Nhóm phát triển.
[root@localhost rdc]# yum groupinstall "Development Tools"
Đây sẽ là một cài đặt lớn hơn. Khi hoàn thành, máy chủ của bạn sẽ có hầu hết các thư viện phát triển và trình biên dịch cho Perl, Python, C và C ++.
Quản lý gói đồ họa trong CentOS
Gnome Desktop cung cấp một công cụ quản lý gói đồ họa được gọi là Software. Nó khá đơn giản để sử dụng và dễ hiểu. Bạn có thể tìm thấy phần mềm, công cụ quản lý gói Gnome dành cho CentOS bằng cách điều hướng đến: Ứng dụng → Công cụ hệ thống → Phần mềm.
Công cụ quản lý gói phần mềm được chia thành các nhóm cho phép người quản trị chọn các gói để cài đặt. Mặc dù công cụ này rất tuyệt vì dễ sử dụng và đơn giản cho người dùng cuối, nhưng YUM mạnh hơn rất nhiều và có thể sẽ được các quản trị viên sử dụng nhiều hơn.
Sau đây là ảnh chụp màn hình của Công cụ quản lý gói phần mềm, không thực sự được thiết kế cho Quản trị viên hệ thống.
Logical Volume Management (LVM)là một phương pháp được Linux sử dụng để quản lý khối lượng lưu trữ trên các đĩa cứng vật lý khác nhau. Điều này không được nhầm lẫn với RAID. Tuy nhiên, nó có thể được coi theo một khái niệm tương tự như RAID 0 hoặc J-Bod. Với LVM, có thể có (ví dụ) ba đĩa vật lý, mỗi đĩa 1TB, sau đó một khối lượng logic khoảng 3TB như / dev / sdb. Hoặc thậm chí hai khối lượng hợp lý 1,5TB, 5 khối lượng 500GB hoặc bất kỳ kết hợp nào. Một đĩa đơn thậm chí có thể được sử dụng để chụp nhanh các Tập lôgic.
Note- Việc sử dụng Logical Volumes thực sự làm tăng I / O đĩa khi được cấu hình đúng. Điều này hoạt động tương tự như RAID 0 phân chia dữ liệu trên các đĩa riêng biệt.
Khi tìm hiểu về quản lý âm lượng với LVM, sẽ dễ dàng hơn nếu chúng ta biết từng thành phần trong LVM là gì. Hãy nghiên cứu bảng sau để nắm chắc từng thành phần. Nếu bạn cần, hãy sử dụng Google để nghiên cứu. Hiểu từng phần của một tập hợp lý là điều quan trọng để quản lý chúng.
PV | Khối lượng vật lý | sda |
PP | Phân vùng vật lý | sda1, sda2 |
VG | Nhóm âm lượng | Tài nguyên vật chất tổng hợp |
LV | Khối lượng logic | Được xem như một phương tiện lưu trữ cho hệ điều hành |
A physical volumesẽ được xem là / dev / sda, / dev / sdb; một đĩa vật lý được phát hiện bởi Linux.
A physical partitionsẽ là một phần của đĩa được phân vùng bởi một tiện ích đĩa như fdisk. Hãy nhớ rằng phân vùng vật lý không được khuyến khích trong hầu hết các thiết lập LVM phổ biến. Ví dụ: disk / dev / sda được phân vùng để bao gồm hai phân vùng vật lý: / dev / sda1 và / dev / sda1
Nếu chúng tôi có hai đĩa vật lý, mỗi đĩa 1TB, chúng tôi có thể tạo một nhóm khối lượng gần 2TB trong số hai đĩa.
Từ nhóm âm lượng, chúng ta có thể tạo ba tập hợp lý, mỗi tập có kích thước bất kỳ không vượt quá tổng kích thước nhóm tập.
Công cụ quản trị đĩa Linux truyền thống
Trước khi làm quen với các công cụ tính năng mới nhất và tuyệt vời nhất cho Quản lý LVM trong CentOS 7, trước tiên chúng ta nên khám phá thêm các công cụ truyền thống đã được sử dụng để quản lý đĩa Linux. Những công cụ này sẽ trở nên hữu ích và vẫn được sử dụng với các công cụ LVM nâng cao hiện nay như Trình quản lý lưu trữ hệ thống: lsblk, parted và mkfs.xfs.
Bây giờ, giả sử chúng ta đã thêm một hoặc hai đĩa khác vào hệ thống của mình, chúng ta cần liệt kê các đĩa được Linux phát hiện. Tôi luôn khuyên bạn nên liệt kê các đĩa mọi lúc trước khi thực hiện các hoạt động được coi là phá hoại.lsblklà một công cụ tuyệt vời để lấy thông tin đĩa. Hãy xem CentOS phát hiện những đĩa nào.
[root@localhost rdc]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─cl-root 253:0 0 17G 0 lvm /
└─cl-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 6G 0 disk
sdc 8:32 0 4G 0 disk
sr0 11:0 1 1024M 0 rom
Như bạn thấy, chúng tôi có ba đĩa trên hệ thống này: sda, sdb và sdc.
Disk sda chứa cài đặt CentOS đang hoạt động của chúng tôi, vì vậy chúng tôi không muốn đùa giỡn với sda. Cả sdb và sdc đã được thêm vào hệ thống cho hướng dẫn này. Hãy làm cho những đĩa này có thể sử dụng được với CentOS.
Tạo nhãn đĩa
[root@localhost rdc]# parted /dev/sdb mklabel GPT
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this
disk will be lost. Do you want to continue?
Yes/No? Yes
[root@localhost rdc]#
Bây giờ chúng ta có một đĩa được dán nhãn. Chỉ cần chạy lệnh parted theo cách tương tự trên sdc .
Tạo các phân vùng trên đĩa
Chúng tôi sẽ chỉ tạo một phân vùng duy nhất trên mỗi đĩa. Để tạo phân vùng, lệnh parted được sử dụng lại.
[root@localhost rdc]# parted -a opt /dev/sdb mkpart primary ext4 0% 100%
Warning - Bạn yêu cầu phân vùng từ 0,00B đến 6442MB (các cung 0..12582911).
Vị trí gần nhất mà chúng tôi có thể quản lý là 17,4kB đến 1048kB (các lĩnh vực 34..2047).
Điều này có còn chấp nhận được với bạn không?
Có không? KHÔNG
[root@localhost rdc]# parted -a opt /dev/sdc mkpart primary ext4 0% 100%
Information - Bạn có thể cần cập nhật / etc / fstab.
[root@localhost rdc]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part / boot
└─sda2 8:2 0 19G 0 part
├─cl-root 253:0 0 17G 0 lvm /
└─cl-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 6G 0 disk
└─sdb1 8:17 0 6G 0 part
sdc 8:32 0 4G 0 disk
└─sdc1 8:33 0 4G 0 part
sr0 11:0 1 1024M 0 rom
[root@localhost rdc]#
Như bạn có thể thấy từ đầu ra lsblk, bây giờ chúng ta có hai phân vùng, mỗi phân vùng trên sdb và sdc.
Tạo hệ thống tệp
Cuối cùng, trước khi gắn và sử dụng bất kỳ ổ đĩa nào, chúng ta cần thêm một hệ thống tệp. Chúng tôi sẽ sử dụng hệ thống tệp XFS.
root@localhost rdc]# mkfs.xfs -f /dev/sdb1
meta-data = /dev/sdb1 isize = 512 agcount = 4, agsize = 393088 blks
= sectsz = 512 attr = 2, projid32bit = 1
= crc = 1 finobt = 0, sparse = 0
data = bsize = 4096 blocks = 1572352, imaxpct = 25
= sunit = 0 swidth = 0 blks
naming = version 2 bsize = 4096 ascii-ci = 0 ftype = 1
log = internal log bsize = 4096 blocks = 2560, version = 2
= sectsz = 512 sunit = 0 blks, lazy-count = 1
realtime = none extsz = 4096 blocks = 0, rtextents = 0
[root@localhost rdc]# mkfs.xfs -f /dev/sdc1
meta-data = /dev/sdc1 isize = 512 agcount = 4, agsize = 262016 blks
= sectsz = 512 attr = 2, projid32bit = 1
= crc = 1 finobt = 0, sparse = 0
data = bsize = 4096 blocks = 1048064, imaxpct = 25
= sunit = 0 swidth = 0 blks
naming = version 2 bsize = 4096 ascii-ci = 0 ftype = 1
log = internal log bsize = 4096 blocks = 2560, version = 2
= sectsz = 512 sunit = 0 blks, lazy-count = 1
realtime = none extsz = 4096 blocks = 0, rtextents = 0
[root@localhost rdc]#
Hãy kiểm tra để đảm bảo mỗi bên có một hệ thống tệp có thể sử dụng được.
[root@localhost rdc]# lsblk -o NAME,FSTYPE
NAME FSTYPE
sda
├─sda1 xfs
└─sda2 LVM2_member
├─cl-root xfs
└─cl-swap swap
sdb
└─sdb1 xfs
sdc
└─sdc1 xfs
sr0
[root@localhost rdc]#
Mỗi cái hiện đang sử dụng hệ thống tệp XFS. Hãy gắn kết chúng, kiểm tra gắn kết và sao chép một tệp vào mỗi tệp.
[root@localhost rdc]# mount -o defaults /dev/sdb1 /mnt/sdb
[root@localhost rdc]# mount -o defaults /dev/sdc1 /mnt/sdc
[root@localhost ~]# touch /mnt/sdb/myFile /mnt/sdc/myFile
[root@localhost ~]# ls /mnt/sdb /mnt/sdc
/mnt/sdb:
myFile
/mnt/sdc:
myFile
Chúng tôi có hai đĩa có thể sử dụng tại thời điểm này. Tuy nhiên, chúng sẽ chỉ sử dụng được khi chúng ta gắn chúng theo cách thủ công. Để gắn kết mỗi khi khởi động, chúng ta phải chỉnh sửa tệp fstab . Ngoài ra, quyền phải được đặt cho các nhóm cần quyền truy cập vào đĩa mới.
Tạo nhóm khối lượng và khối lượng logic
Một trong những bổ sung tuyệt vời nhất cho CentOS 7 là bao gồm một tiện ích có tên là System Storage Manager hoặc ssm .System Storage Manager đơn giản hóa đáng kể quá trình quản lý nhóm LVM và khối lượng lưu trữ trên Linux.
Chúng ta sẽ đi qua quá trình tạo một nhóm khối lượng đơn giản và khối lượng hợp lý trong CentOS. Bước đầu tiên là cài đặt Trình quản lý lưu trữ hệ thống.
[root@localhost rdc]# yum install system-storage-manager
Hãy xem xét các ổ đĩa của chúng ta bằng lệnh ssm list .
Như đã thấy ở trên, có tổng cộng ba đĩa được cài đặt trên hệ thống.
/sdba1 - Lưu trữ cài đặt CentOS của chúng tôi
/sdb1 - Gắn tại / mnt / sdb
/sdc1 - Gắn tại / mnt / sdc
Những gì chúng ta muốn làm là tạo một Nhóm âm lượng bằng hai đĩa (sdb và sdc). Sau đó, cung cấp ba Tập lôgic 3GB cho hệ thống.
Hãy tạo Nhóm Khối lượng của chúng tôi.
[root@localhost rdc]# ssm create -p NEW_POOL /dev/sdb1 /dev/sdc1
Theo mặc định, ssm sẽ tạo một khối lượng hợp lý duy nhất mở rộng toàn bộ 10GB của tổng thể. Chúng tôi không muốn điều này, vì vậy hãy xóa nó.
[root@localhost rdc]# ssm remove /dev/NEW_POOL/lvol001
Do you really want to remove active logical volume NEW_POOL/lvol001? [y/n]: y
Logical volume "lvol001" successfully removed
[root@localhost rdc]#
Cuối cùng, hãy tạo ba Tập lôgic.
[root@localhost rdc]# ssm create -n disk001 --fs xfs -s 3GB -p NEW_POOL
[root@localhost rdc]# ssm create -n disk002 --fs xfs -s 3GB -p NEW_POOL
[root@localhost rdc]# ssm create -n disk003 --fs xfs -s 3GB -p NEW_POOL
Bây giờ, hãy kiểm tra các tập mới của chúng tôi.
Bây giờ chúng ta có ba tập hợp lý riêng biệt trải dài trên hai phân vùng đĩa vật lý.
Khối lượng logic là một tính năng mạnh mẽ hiện được tích hợp trong CentOS Linux. Chúng tôi đã chạm vào bề nổi của việc quản lý những điều này. Nắm vững các nhóm và khối lượng hợp lý đi kèm với thực hành và học tập mở rộng từ Tutorials Point. Hiện tại, bạn đã học những kiến thức cơ bản về quản lý LVM trong CentOS và sở hữu khả năng tạo các Tập tin lôgic sọc cơ bản trên một máy chủ duy nhất.