Điểm:-2

Hướng dẫn đầy đủ để chuyển đổi từ máy chủ Ubuntu 20.04 phân vùng đơn sang nhiều phân vùng trên hệ thống đã được cài đặt bằng LVM

lá cờ tr

Tiêu đề là yêu cầu của tôi. Tôi đã đọc hàng giờ và tôi đã tìm thấy các hướng dẫn để di chuyển /home sang một phân vùng và /tmp sang một phân vùng. Nhưng không có cái nào để chuyển đổi tất cả các thư mục được đề xuất thành phân vùng cho Ubuntu Server. Một hướng dẫn đã kết thúc, nhưng sau đó bỏ qua bước sao chép dữ liệu rõ ràng là cần thiết từ các thư mục trước đó sang các phân vùng mới.

Dù sao, sau nhiều giờ, tôi vẫn chưa tìm thấy hướng dẫn bao gồm tình huống khá phổ biến của mình.

Tình huống:
Tôi đã cài đặt Ubuntu Server trên các máy chủ Prod & Test (vps & virtualbox tương ứng), đã thực hiện một số công việc. Trong khi đọc hướng dẫn tăng cường máy chủ, tôi nhận ra rằng cách tốt nhất là có /boot /home /swapfile /tmp /usr và var... /opt? tất cả trên các phân vùng riêng biệt vì lý do quản lý tài nguyên và bảo mật.

Cách chính xác để tạo các phân vùng được đề cập ở trên là sử dụng LVM

Tuy nhiên, không có hướng dẫn nào thảo luận/đề xuất kích thước phân vùng (theo tỷ lệ, vì rõ ràng các hệ thống khác nhau có dung lượng ổ đĩa khác nhau, của tôi là 80GB trên /)

Ngoài ra, một số hướng dẫn đề cập đến những thay đổi cần thiết đối với /etc/fstab và một số thì không.

Mục tiêu của tôi là chuyển đổi thiết lập phân vùng đơn 80 GB của tôi thành nhiều phân vùng và sau đó bảo vệ các phân vùng khỏi các cuộc tấn công và khai thác phổ biến bằng cách sử dụng: sự kết hợp của gật đầu, noexec, nosuid Trong /etc/fstab

Tôi có thể dành nhiều ngày để thử nghiệm và thất bại các cấu hình khác nhau trong hộp ảo... Hoặc một số "đẹp và/hoặc đẹp"Chuyên gia phân vùng máy chủ Ubuntu" có thể xuất bản dễ theo dõi (đối tượng mục tiêu người dùng trung gian) hướng dẫn dứt khoát như tôi đã mô tả ở trên và trở nên nổi tiếng trên Internet vì nhiều người dùng lưu trữ các dự án của riêng họ trên vps sẽ mãi mãi yêu quý và ngưỡng mộ bạn. :-)

CẬP NHẬT
Ban đầu tôi không xuất bản hướng dẫn làm cứng máy chủ chính bởi vì tôi không muốn bài đăng này trở thành một "cuộc tranh luận" về tác phẩm rất kỹ lưỡng của anh chàng này. Tuy nhiên, trong nhận thức muộn màng, tôi nghĩ rằng nó sẽ hữu ích cho những người muốn trả lời bài đăng này, để thấy được những lợi ích bảo mật thực tế mà tôi đang cố gắng đạt được.

https://linoxide.com/ultimate-guide-secure-ubuntu/

lá cờ in
Bạn có đang cố gắng sử dụng *phân vùng* khác hoặc *tập đĩa* khác không? Mặc dù chúng có thể trông giống nhau từ 30.000 feet, nhưng chúng hoạt động hơi khác một chút bên trong giá treo 2U.Khi bạn đang cố gắng di chuyển các thư mục cốt lõi, cách dễ nhất để thực hiện việc này là với Phiên trực tiếp trên máy tính để bàn Ubuntu, phiên này sẽ cung cấp cho bạn toàn quyền kiểm soát các thiết bị lưu trữ Máy chủ Ubuntu ... nhưng tôi không thấy nhiều lợi ích đây. Là một người đã sử dụng Ubuntu Server hơn một thập kỷ trong mọi tình huống, kiểu thiết lập này chưa bao giờ là cần thiết. LV cho dữ liệu? Đúng. LV cho mọi thứ? Không ...
nightwatch avatar
lá cờ tr
@matigo khối lượng và phân vùng khác biệt chắc chắn là mới để đoán, tôi sẽ phải đọc thêm. Dựa trên kinh nghiệm của bạn, những thư mục nào sẽ nằm trên các "phân vùng" khác nhau do sự hiểu biết hạn chế của tôi? Chỉ /tmp và /home? và chỉ cần không lo lắng về những người khác?
lá cờ in
Không đi sâu vào "ý kiến", thứ duy nhất thường cần khối lượng/phân vùng riêng trên Ubuntu Server là dữ liệu được truy cập/quan trọng nhất. Nếu đó là cơ sở dữ liệu/miền/máy chủ thư, thì DB phải ở trên một thiết bị thực sự nhanh và nhật ký trên một thiết bị riêng biệt. Nếu đó là một máy chủ web, thì nó thực sự không thành vấn đề vì toàn bộ hệ thống chỉ dùng một lần. Tôi thường coi hệ điều hành lõi là không liên quan, vì nó có thể được xây dựng lại từ đầu trong vòng chưa đầy một giờ (trường hợp xấu nhất) và chỉ ổn với thiết lập mặc định. Chỉ dữ liệu (và nhật ký) mới quan trọng ... (đối với đội *của tôi*)
nightwatch avatar
lá cờ tr
Tôi hiểu lý do và logic của bạn. Vì vậy, tôi nên tập trung năng lượng của mình vào việc di chuyển/home (thư mục data/public_html của tôi) và/var/log để phân tách các phân vùng như bạn đã đúng với vps. Tôi có thể tự khôi phục hệ thống trong vài phút. Bất kỳ đề nghị đọc/hướng dẫn để đạt được điều này?
lá cờ in
[Câu trả lời này từ 10 năm trước](https://askubuntu.com/a/50539/1222991) vẫn còn giá trị cho đến ngày nay.Vì bạn cũng đang làm việc với một số máy ảo, trước tiên hãy đảm bảo thực hành trên các trường hợp đó nếu bạn lo lắng về việc làm hỏng hệ thống sản xuất do một bước sai. `/var/log` chỉ cần ở nơi khác nếu bạn đang ghi *rất nhiều* dữ liệu (20MB/giây trở lên), điều này rất hiếm. Nếu bạn chỉ đang chạy một máy chủ web, việc có mã của bạn trong GitHub (hoặc một số kho lưu trữ khác) và dữ liệu đã tải lên được sao lưu và SSH tắt hệ thống sẽ là đủ mà không cần phân vùng/ổ đĩa riêng biệt.
lá cờ in
Nếu mục tiêu chính của bạn là bảo vệ dữ liệu trước các hình thức tấn công trực tuyến khác nhau, thì lợi ích lớn nhất mà bạn có thể tự làm là sử dụng AppArmor và Tường lửa không phức tạp (ufw). Chỉ riêng hai công cụ này sẽ chặn 99,9% những thứ nhảm nhí ngu ngốc mà những kẻ thua cuộc sẽ ném vào máy chủ của bạn. Nếu bạn đang chạy một trang web WordPress với một plugin có pWn3d, thì AppArmor sẽ đảm bảo rằng Apache không thể viết bên ngoài `/var/www`, vì vậy hệ điều hành cơ bản sẽ hầu như an toàn miễn là bạn không làm rối tung các cấu trúc quyền của hệ thống .
nightwatch avatar
lá cờ tr
Cảm ơn vì điểm đúng hướng. Tôi đã đọc đủ các hướng dẫn làm cứng máy chủ web đến chóng mặt. Liên quan đến tường lửa.. Tôi đang chạy Virtualmin với Firewalld và tôi có tường lửa VPS do ISP của mình cung cấp, điều này là đủ thay cho UFW.. (Vui lòng sửa cho tôi nếu tôi sai.)
nightwatch avatar
lá cờ tr
@matigo cảm ơn vì đã chọn bộ não của bạn. Tôi sẽ dẹp bỏ chứng hoang tưởng của mình và quay lại phát triển các trang web. Tận hưởng cuối tuần của bạn nhé.
Điểm:2
lá cờ eg

Tôi nghĩ rằng việc tách mọi thứ thành các hệ thống tệp khác nhau thường không giúp/cải thiện bảo mật. Nếu ai đó đột nhập vào hệ thống khi nó đang chạy, thì dù sao thì mọi thứ đều được gắn kết và không có sự khác biệt logic nào khi có mọi thứ trong một hệ thống tệp. Những lý do đã được đưa ra trong các tài liệu bạn nghiên cứu?

Điều đó nói rằng, nó có thể hỗ trợ hiệu suất (các hệ thống tệp khác nhau hoặc phần cứng khác bên dưới các điểm gắn kết này) và rút ngắn thời gian khắc phục sự cố (ví dụ:nếu chỉ ổ SSD chứa /var bị hỏng, bạn chỉ phải khôi phục bản sao lưu đó và phần còn lại vẫn chạy).

Bạn đã hỏi về kích thước phân vùng được đề xuất:

  • / bạn tốt với 15-20 GB. Tôi chưa bao giờ cần nhiều hơn thế cho một máy chủ (chạy máy chủ web + máy chủ thư).
  • tráo đổi Tôi thường đặt trên ổ đĩa/phân vùng riêng có cùng kích thước với RAM - đơn giản là để tính năng tạm dừng vào đĩa có thể hoạt động. Mọi người thường khuyên dùng kích thước 2xRAM, nhưng với kích thước RAM ngày nay, khi bạn gặp phải tình huống cần một lượng trao đổi nghiêm trọng, thì bạn vẫn gặp rắc rối. Bạn sẽ nhận thấy điều đó từ sự chậm chạp nghiêm trọng và sau đó bạn nên nhanh chóng tăng RAM khả dụng.
  • /khởi động chỉ cần 500 MB, cung cấp không gian cho hơn 8 phiên bản kernel+initrd. Đảm bảo chạy apt autoremove thường xuyên, để giữ cho nó được cắt bớt sau khi nâng cấp kernel.
  • tôi sẽ giữ /usr/opt như thư mục trên /, chỉ không thấy lợi ích khi chuyển chúng sang hệ thống tệp của riêng chúng.
  • Như được mô tả trong hướng dẫn làm cứng này, có một khối lượng riêng cho /tmp có ý nghĩa, vì nó cho phép bạn làm cho thư mục có thể ghi trên thế giới đó bị hạn chế hơn - cả về dung lượng nó có thể sử dụng trong tổng dung lượng có sẵn và những gì có thể được thực hiện với các tệp được lưu trữ ở đó. Hướng dẫn khuyến nghị sử dụng các tùy chọn gật đầu, nosuid và noexec khi gắn hệ thống tệp. Hướng dẫn chỉ cung cấp các lệnh gắn kết để "sử dụng một lần". Dịch dòng này thành một dòng trong /etc/fstab có nghĩa là bạn đặt gật đầu, nosuid, noexec vào cột (tùy chọn) thứ 4 của dòng nơi bạn gắn âm lượng /tmp chuyên dụng vào /tmp.
  • Điều đó để lại cho chúng tôi /Trang Chủ/var - đó thường là những thứ "quan trọng". Trên máy chủ của tôi /Trang Chủ là khá nhiều trống rỗng, nhưng /var giữ public_html, nhật ký, cơ sở dữ liệu, v.v. Vì vậy, tôi giữ /Trang Chủ như một thư mục trên /, nhưng /var chắc chắn có khối lượng riêng và được sao lưu thường xuyên nhất. Cung cấp cho nó tất cả không gian còn lại sau khi thực hiện ở trên.

Sau đó, bạn hỏi làm thế nào để thực hiện quá trình chuyển đổi:

  • Trong hệ thống đang chạy, nơi mọi thứ đang bật /, đính kèm đĩa mới (tệp VDI, ...), chuẩn bị nó bằng pvcreate, lvcreate và sau đó là các hệ thống tệp bạn chọn (ví dụ: mkfs.ext4).
  • Sau đó, tạo các điểm gắn kết tạm thời trong/mnt, ví dụ: /mnt/newroot, /mnt/newvar, ... và gắn các hệ thống tệp vào đó.
  • Sau đó sử dụng rsync -xaP <nguồn>/ <đích>/ cho mỗi hệ thống tập tin của bạn. Tùy chọn '-x' sẽ ngăn rsync vượt qua các ranh giới của hệ thống tệp, tức là nếu bạn làm như vậy rsync -xaP / /mnt/newroot/ nó cũng sẽ không sao chép/var,/home hoặc thậm chí tất cả các hệ thống tệp mới được gắn trong/mnt. '-a' sẽ đảm bảo các quyền, v.v. sẽ được tiếp quản mà không cần sửa đổi và '-P' hiển thị tiến trình. Để biết chi tiết, vui lòng tham khảo người đàn ông rsync.

Sau khi hoàn thành, hãy chỉnh sửa /mnt/newroot/etc/fstab và đảm bảo rằng bạn liệt kê tất cả các hệ thống tệp tại các điểm gắn kết thích hợp. Nếu bạn đã đi xa đến mức đó, điều này sẽ không quá khó (vì bạn đã chọn tất cả các tên /dev/mapper/..., hệ thống tệp, v.v.).

Bạn cũng sẽ phải sử dụng grub-install và có thể update-grub để làm cho đĩa mới có khả năng khởi động, nhưng tôi không chắc lắm về quy trình chính xác. Với VM bạn có thể dễ dàng dùng thử và nếu không khởi động được thì gắn lại đĩa cũ và sửa.

Để tham khảo, đây là phiên shell cung cấp cho bạn một số lệnh cụ thể về phân vùng + LVM + định dạng + tham chiếu trong chủ đề fstab. Xin lưu ý rằng rất có thể bạn sẽ phải sửa đổi chúng, chẳng hạn nếu thiết bị của bạn không phải là /dev/sda, nếu bạn muốn các hệ thống tệp khác nhau, v.v. - đây chỉ là một ví dụ.

# Sau khi sử dụng fdisk để tạo một phân vùng bao phủ toàn bộ thiết bị,
# nó trông như thế này:
root@ubuntu:~# fdisk -l /dev/sda
Đĩa /dev/sda: 100 GiB, 107374182400 byte, 209715200 cung
Kiểu đĩa: VBOX HARDDISK   
Đơn vị: cung từ 1 * 512 = 512 byte
Kích thước cung (logic/vật lý): 512 byte / 512 byte
Kích thước I/O (tối thiểu/tối ưu): 512 byte / 512 byte
Loại nhãn đĩa: gpt
Mã định danh đĩa: 18ACB4C9-3F33-7041-8BEB-D819F138A809

Thiết bị Bắt đầu Kết thúc Sector Kích thước Loại
/dev/sda1 2048 209715166 209713119 100G Linux LVM

# Tạo volume vật lý cho LVM
root@ubuntu:~# pvcreate /dev/sda1   
  Khối lượng vật lý "/dev/sda1" đã được tạo thành công.
  
# Tạo một nhóm âm lượng có tên "vg1" cho LVM sẽ
# giữ tất cả khối lượng logic của chúng tôi
root@ubuntu:~# vgcreate vg1 /dev/sda1
  Đã tạo thành công nhóm âm lượng "vg1"

# Tạo các khối logic như mô tả ở trên
root@ubuntu:~# lvcreate --name root --size 20G vg1     
  Khối lượng logic "root" đã được tạo.
root@ubuntu:~# lvcreate --name swap --size 8G vg1
  Khối lượng hợp lý "hoán đổi" được tạo ra.
root@ubuntu:~# lvcreate --name boot --size 500M vg1
  Khối lượng logic "khởi động" đã được tạo.
root@ubuntu:~# lvcreate --name tmp --size 5G vg1
  Khối lượng hợp lý "tmp" đã được tạo.

# Hãy nhìn vào khối lượng hợp lý
root@ubuntu:~# lvs
  LV VG Attr LSize Pool Dữ liệu gốc % Meta% Nhật ký di chuyển Cpy%Sync Chuyển đổi
  khởi động vg1 -wi-a----- 500,00m                                                    
  gốc vg1 -wi-a----- 20,00g                                                    
  trao đổi vg1 -wi-a----- 8,00g                                                    
  tmp vg1 -wi-a----- 5,00g                                                    

# Hãy xem nhóm âm lượng và xem dung lượng còn lại là bao nhiêu
root@ubuntu:~# vgs
  VG #PV #LV #SN Attr VSize VFree  
  vg1 1 4 0 wz--n- <100,00g <66,51g

# Sử dụng không gian còn lại cho ổ đĩa logic cuối cùng, var
root@ubuntu:~# lvcreate --name var --size 66.5G vg1
  Khối lượng logic "var" đã được tạo.

# Có một cái nhìn khác về các tập
root@ubuntu:~# lvs
  LV VG Attr LSize Pool Dữ liệu gốc % Meta% Nhật ký di chuyển Cpy%Sync Chuyển đổi
  khởi động vg1 -wi-a----- 500,00m                                                    
  gốc vg1 -wi-a----- 20,00g                                                    
  trao đổi vg1 -wi-a----- 8,00g                                                    
  tmp vg1 -wi-a----- 5,00g                                                    
  var vg1 -wi-a----- 66,50g

# Định dạng tất cả các ổ bằng hệ thống tệp ext4
cho tôi trong /dev/mapper/vg1-*; làm mkfs.ext4 $i; xong
# Biến vg1-swap thành không gian hoán đổi
mkswap /dev/mapper/vg1-hoán đổi

# Tạo các mục nhập fstab trông như thế này
/dev/mapper/vg1-root / ext4 mặc định 0 1
/dev/mapper/vg1-boot /boot ext4 mặc định 0 2
/dev/mapper/vg1-var /var ext4 mặc định 0 2
/dev/mapper/vg1-tmp /tmp ext4 nosuid,nodev,noexec 0 0
/dev/mapper/vg1-swap không trao đổi sw 0 0
nightwatch avatar
lá cờ tr
đây là một trong nhiều hướng dẫn làm cứng máy chủ mà tôi đã làm theo. Lưu ý các biện pháp bảo mật cho fstab đã được lặp lại ở những nơi khác. https://linoxide.com/ultimate-guide-secure-ubuntu/
lá cờ eg
Cảm ơn. Các khuyến nghị thực sự có ý nghĩa, đặc biệt là các phần cạn kiệt tài nguyên. Tôi đã không xem xét điều đó. Không chắc chắn điều gì sẽ xảy ra với các dịch vụ sử dụng /tmp khi nó đầy (ngay cả khi nó ở trên một ổ đĩa khác). Có thể chúng sẽ ngừng hoạt động và do đó bạn vẫn sẽ bị DoS.
nightwatch avatar
lá cờ tr
bạn có thể sẵn sàng cập nhật câu trả lời của mình dựa trên hướng dẫn làm cứng không?
lá cờ eg
@nightwatch đã xong :)
nightwatch avatar
lá cờ tr
Tôi đánh giá cao câu trả lời và tôi đã bỏ phiếu cho câu trả lời vì nó hữu ích và tôi đã học được từ nó. Tuy nhiên, tôi đã hy vọng các ví dụ thực tế về việc tạo các phân vùng bằng LVM như được đề xuất trong hướng dẫn. Từ các hướng dẫn khác nhau, tôi biết rằng việc tạo phân vùng/tmp có một số khác biệt so với việc tạo cho/home. Những điểm tốt đó có thể khiến tôi mất hàng giờ.
lá cờ eg
@nightwatch Tôi đã thêm một phiên trình bao trong đó tôi đã thực hiện phân vùng + LVM + định dạng + tham chiếu trong fstab và thêm nó vào câu trả lời, nhưng đó vẫn chỉ là một ví dụ. Trong trường hợp cụ thể của bạn, nó có thể trông khác. Tôi nghĩ rằng bạn sẽ đạt được mục tiêu của mình nhanh hơn nếu bạn đặt những câu hỏi cụ thể khi bạn gặp khó khăn tại một thời điểm.
nightwatch avatar
lá cờ tr
"cho Tổng thống?" bạn có phiếu bầu của tôi :-) cảm ơn

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.