Một người khi vận hành server thì đều muốn tối ưu hóa cho server chạy nhanh nhất có thể nhưng lại không biết làm sao để tối ưu và đôi khi vi phạm nguyên tắc bảo mật nghiêm trọng.

 

I: Đã cài thì xác định dùng vui lòng không chạy thử.

Đây là điều tối quan trọng nhất của một người quản lý server các bạn đừng bao giờ thấy cái gì hay hay đi cài thử cài song nghịch được hai ba ngày thấy chán chán bỏ luôn nó trong khi nó không được gỡ ra phần do không biết gỡ phần do quên. Điều này vô hình chung mang lại nhiều nguy cơ bảo mật:

  1. làm chậm máy chủ chắc chắn rồi khi bạn càng chạy nhiều chương trình thì càng tốn tài nguyên dẫn tới máy chủ sẽ chậm đi trông thấy tới lúc nào đó bạn tá hỏa thấy máy chủ chậm đi tìm nguyên nhân sẽ rất khó khăn đặc biệt khi bạn chạy máy chủ linux bạn có thể biết được tiến trình nhưng đôi khi bạn lại không biết nó được sinh ra từ phần mềm nào và chả biết gỡ triệt để nó ra sao rồi chỉ biết kill nó đi bằng lệnh và lại chờ lần sau nó lên để kill tiếp
  2. Tăng độ mất bảo mật website. khi bạn chạy các chương trình mà không được quan tâm và update sẽ rất có thể các chương trình này lâu ngày chạy sẽ phát sinh các lỗi hoặc có lỗ hổng nhưng bạn lại không biết không nhớ mình đang chạy nó để update nên sẽ có thể dẫn tới việc bị hack qua các lỗ hổng phần mềm mà mình chỉ cài chơi thôi không có nhu cầu dùng thực sự.
  3. Các phần mềm dùng thử có thể xung đột với các phần mềm chính chúng ta đang chạy và có thể sẽ gây ra hiện tượng gián đoạn dịch vụ website hay application đang chạy sẽ làm cho chúng ta bị khách hàng hoặc người dùng làm cho chúng ta bị rối loạn và cuối cùng là chọn giải pháp bug dữ liệu backup

Khi có một phần mềm mới có tính năng hay chúng ta cần dùng hay muốn dụng thử thì hãy sao chép dữ liệu của máy chủ đang chạy qua một máy chủ test và đảm bảo rằng mọi thao tác trên máy chủ test không ảnh hưởng tới máy chủ đang chạy và máy chủ test có đủ dữ liệu của máy chủ thật để không bị khi test được nhưng chạy thật trên máy chủ thật thì lại lỗi không được. các bạn nên có một máy chru test bên cạnh máy chủ thật cùng cấu hình cùng dữ liệu!

II: Không dùng nhớ tắt hoặc chặn.

Mặc định máy chủ hoặc vps sẽ không có chặn port hay dịch vụ nào của khách hàng thường là như vậy với các nhà cung cấp vps. tuy nhiên chúng ta cần lựa chọn các nhà cung cấp vps có tính năng chặn port ở trong trang quản trị dịch vụ ở tầng mạng và sẽ không thể mở ra nếu không có tài khoản đăng nhập quản lý dịch vụ. Một số nhà cung cấp dịch vụ mình đề xuấ như: google, z.com. tenten chú ý là dịch vụ máy chủ riêng không phải hosting

Khi bạn chỉ cần dùng port nào thi bạn chỉ nên bật nó còn tất cả khóa lại tránh các lỗ hổng không đáng có từ các port mình không biết không dùng tới và tránh được các công cụ scan máy chủ

Như vps của mình đang sử dụng mình đã tắt hết các port không cần thiết sẽ không thể bị scan vps gây ra các log mình không cần quan tâm che mất cái mình quan tâm và khi không cần dùng tới ssh tôi cũng chặn luôn port ssh tới khi nào cần thì đăng nhập vào dịch vụ mở ra như vậy thì cho dù mật khẩu ssh của mình vô cùng dễ thì nó vẫn an toàn chả có cách nào mà scan hay kết nối được, nó sẽ an toàn hơn so với việc đổi port ssh và bạn cần đặt mật khẩu loằng ngoằng khó nhớ.

Port đúng nhưng check thử thì đóng do đã chặn từ cấu hình đường truyền

Cho nên mình khuyến cáo các bạn sử dụng các nhà cung cấp cung cấp giải pháp chặn luôn port đó ở hạ tầng mạng chứ không phải mình phải cấu hình trên máy chủ vps sẽ làm cho mình rất nhàn không phải lo ai đó có ngày rò quét mật khẩu ssh

III: không dùng các công cụ cài đặt và quản lý server.

Chúng ta không nên dùng các bash shell như vpssim hocvps vestacp… để chạy trên vps. Không phải mình ghét những phần mềm trên mà do chúng cài thêm rất nhiều thứ không cần thiết và nó không phải dùng để tối ưu cho một người dùng cụ thể, nó thường cài rất nhiều thứ linh tinh đối ơi vpssim hoặc mở cổng không cần thiết như hocvps..

Đối với quản ký server mình khuyên các bạn cấu hình tay hoặc dùng tools cài đặt lamp cái này của mình chỉ cài đặt các chương trình cần thiết là httpd, mysql,php và có thể lựa chọn cài phpmyadmin một số công cụ khác sẽ mặc định cài phpmyadmin và phơi chúng ra ngoài làm chúng ta có thể bị dò mật khẩu root của mysql nên mình cũng khuyến cáo không nên dùng phpmyadmin hoặc dùng cần cấu hình cho nó chỉ cho một IP của chúng ta vào được trong file cấu hình của phpmyadmin không cho các IP lạ truy cập vào!

IV: Phân Tải Server

Chúng ta cần nằm giữ nguyên tắc là càng phân tán databse thì càng an toàn và server càng nhanh hơn. vì mỗi máy chủ sẽ xử lý một việc thì sẽ nhanh hơn là một máy chủ ôm tất cả các công việc!

Ví dụ blog này của mình đang chạy có cấu hình như sau:

  1. Một máy chủ chuyên dụng chỉ dùng để xử lý database 1GB ram 1CPU
  2. Một máy chủ chạy web cài đặt php và apache 1Gb ram 1CPU
  3. Toàn bộ ảnh mình lưu trên imgur. Bạn yên tâm imgur sẽ lưu ảnh vĩnh viễn kể từ năm 2012 trên thông báo của blog imgur các bạn có thể kiểm chứng bằng link sau đây http://bit.ly/2L8SX43 hoặc link này http://bit.ly/2L9ZmMq

Với cấu hình như vậy blog của mình sẽ load nhanh hơn rất nhiều so với mình để tất cả trong 1 vps có cấu hình 2Gb ram 2CPU

V: Phải Biết Biên Dịch Lại Các Phần Mềm Cần Thiết (Apache Nginx)

Thông thường trên hệ thống Unix/Linux đa phần mọi người sẽ sử dụng các trình quản lý ứng dụng gói (apt-get, yum,…) để hệ thống tự động tìm cài đặt ứng dụng mong muốn, cụ thể hơn trong bài viết này tôi sẽ nói đến CentOS thuộc RedHat sẽ sử dụng:

YUM – Yellowdog Updater, Modified: Là 1 chương trình (lệnh) dùng quản lý cài đặt, cập nhật hoặc xóa bỏ các gói tin thuộc hệ thống quản lý gói tin của RedHat (RPM – Redhat Package Manager). Với YUM hệ thống (có kết nối internet) sẽ tự động tìm gói tin và cài đặt chúng. Tuy nhiên, mặc định YUM chỉ có thể cài đặt các gói tin đã có sẵn trên Kho ứng dụng (Repository).
RPM: Đây cũng là 1 một công cụ (lệnh) với chức năng tương tự như YUM. Tuy nhiên, RPM cần người dùng phải tự tìm và cài đặt các gói phụ thuộc (nếu cần) trước khi cài ứng dụng mong muốn.
Nhìn chung, với 2 cách cài đặt này tất cả ứng dụng sẽ được cài đặt theo cơ chế mặc định với đường dẫn cài đặt, các thư viên, v.v.. điều giống nhau.

Và như vậy, đã có bao giờ Bạn nghĩ rằng tại sao mình không tự quản lý các ứng dụng với đường dẫn cài đặt, các tính năng bạn cho phép chạy hoặc không, những thư viện nào không cần thiết dùng đến nên bỏ đi,… theo ý của mình chưa? hoặc chỉ đơn giản là bạn muốn dùng duy nhất 1 cách (một quy trình cài đặt gói tin) cho tất cả các bản phân phối thuộc Unix/Linux

Nếu có! Bài viết này sẽ hướng dẫn các Bạn cách cơ bản để tự mình cài đặt ứng dụng theo ý muốn của chính mình và được gọi là biên dịch gói tin.

  • Cách biên dịch một ứng dụng.

Các vấn đề cần biết trước khi biên dịch gói tin

Để biên dịch gói tin thành công Bạn cần:

Trình biên dịch gói: GCC – GNU Compiler Collection: là một trình biên dịch có thể biên dịch các ngôn ngữ: C, C++, Fortran, Java,…
Đọc kỹ tài liệu về ứng dụng: Bạn cần đọc kỹ các yêu cầu hệ thống cần cài đặt trước các ứng dụng phụ nào thông qua document từ website của ứng dụng đó.
Hiểu về 3 bước cài đặt (3 bước này phải được thực hiện bên trong thư mục của source ứng dụng mà bạn download về và đã giải nén thành thư mục):
./configure: tập tin configure là một tập tin kịch bản được viết sẵn và kèm theo trong source code của ứng dụng. “./” là ký tự dùng để chạy ứng dụng, tập tin trong linux có quyền thực thi (tương tự như bạn kích đúp chuột vào tập tin *.exe trên windows) vì vậy bạn cần chắc chắn tập tin này phải có quyền thực thi theo User mà bạn đang đăng nhập. Nó sẽ kiểm tra các thư viện phụ thuộc đã được cài đặt hay chưa và cũng cho phép bạn tùy chỉnh cài đặt theo ý muốn. Ví dụ, thay đổi đường dẫn cài đặt với tham số “–prefix=<đường dẫn>”. Có rất nhiều tùy chọn để thiết lập trong kịch bản này, bạn có thể xem các tùy chọn được hỗ trợ bằng lệnh “./configure –help“
make: Đây là một tiện ích dùng biên dịch gói tin: nó sẽ đọc tập tin “Makefile” trong thư mục nguồn ứng dụng với các tham số được truyền từ kịch bản configure để biên dịch gói tin.
make install: Lệnh này sẽ cài đặt các gói được lệnh make biên dịch vào hệ thống.
Khắc phục lỗi khi biên dịch gói tin:

– Hầu hết các vấn đề lỗi khi biên dịch sẽ được xuất ra màn hình sau khi biên dịch. VD: Lỗi thiếu trình biên dịch khi dùng lệnh make.

Cách khắc phục thì Bạn có thể google dòng lỗi rồi làm theo hoặc download các source phần mềm hệ thống báo thiếu và install vào (theo Yum hoặc tự biên dịch gói tin đó).

Làm sao biết đã biên dịch gói tin đó với những tùy chọn nào?

– Các gói tin khi biên dịch với các tùy chọn sẽ được lưu vào tập tin config.nice trong source mà bạn biên dịch hoặc trong thư mục “build” nơi mà ứng dụng được cài đặt. VD Apache:

<Source Install Folder>/config.nice

<Installed Folder>/apache/build/config.nice

Bạn chỉ cần đọc file này sẽ biết được đã cài đặt ứng dụng với các tùy chọn nào.

ViewCompiledOption
View Compiled From Install Folder

ViewCompiledOption_FromSource
View Compiled From Source Code

  • Điểm khác biệt giữa tự biên dịch và cài đặt tự động
Biên Dịch Gói TinYum, Apt-get …
– Có thể tùy chỉnh các tùy chọn của phần mềm theo ý muốn, tối ưu được hệ thống.– Luôn luôn cài đặt mặc định các tùy chọn đã được thiết lập sẵn.
– Giúp Bạn nắm rõ hơn về hệ thống cần xây dựng những gì và các mối liên quan của phần mềm đang cài đặt.– Do tự động cài đặt, Bạn sẽ không quản lý được có tính năng phụ nào được thêm vào trong phần mềm khi dùng auto install.
– Sẽ khó khăn hơn trong quá trình cài đặt ứng dụng.– Cài đặt ứng dụng dễ dàng khi có kết nối internet.

Leave a Reply

avatar
  Subscribe  
Notify of