Thật dễ dàng để thực hiện các phím tắt khi bảo vệ máy chủ, nhưng bạn sẽ có nguy cơ mất dữ liệu trong trường hợp kẻ tấn công có quyền truy cập root vào bất kỳ máy chủ nào của bạn. Ngay cả đối với các cài đặt đơn giản, bạn cần bảo mật máy chủ của mình trước. Bảo mật máy chủ là một chủ đề rộng và thay đổi tùy theo HĐH và các ứng dụng đang chạy trên chúng.
Hướng dẫn này tập trung vào việc bảo vệ Apache theo CentOS 6. Có một vài bước cài đặt bài đăng bạn có thể thực hiện để bảo vệ bản thân khỏi sự leo thang đặc quyền, cũng như các cuộc tấn công dưới đặc quyền.
Nếu không có thêm rắc rối, hãy bắt đầu.
Bước 1 - Cài đặt máy chủ web
Tất nhiên, nếu bạn chưa cài đặt Apache hoặc PHP, bạn nên làm điều đó ngay bây giờ. Thực thi lệnh này với tư cách là người dùng root hoặc sử dụng sudo:
yum install httpd php
Bước 2 - Bảo vệ thư mục nhà của bạn
Bây giờ Apache đã được cài đặt, hãy tiếp tục và bắt đầu bảo mật nó. Đầu tiên, chúng tôi muốn đảm bảo rằng các thư mục của người dùng khác sẽ không hiển thị bởi bất kỳ ai trừ chủ sở hữu. Chúng tôi sẽ chmod tất cả các thư mục nhà đến 700, để chỉ chủ sở hữu tương ứng của các thư mục nhà mới có thể xem các tệp của riêng họ. Chạy lệnh này với quyền root hoặc sử dụng sudo:
chmod 700 /home
chmod 700 /home/*
chmod 700 /home/*/*
Bằng cách sử dụng các ký tự đại diện, chúng tôi sẽ bao gồm tất cả các tệp hiện đang lưu trong thư mục chính.
Bước 3 - Áp dụng bản vá bảo mật cho Apache để phân tách đặc quyền người dùng
Trước khi vá Apache, trước tiên chúng ta cần cài đặt kho chứa gói có bản vá. Chạy các lệnh sau dưới dạng root (hoặc sudo).
yum install epel-release
yum install httpd-itk
Với "apache2-mpm-itk", chúng ta có thể biết người dùng PHP nên chạy gì dựa trên máy chủ ảo. Nó bổ sung một tùy chọn cấu hình mới AssignUserId virtualhost-user virtualhost-user-group
, cho phép chúng tôi yêu cầu Apache / PHP thực thi mã người dùng trong một tài khoản người dùng cụ thể.
Nếu bạn đang chia sẻ máy chủ này, tôi cho rằng bạn đã tạo một máy chủ ảo cho Apache trước đây. Trong trường hợp đó, bạn có thể bỏ qua bước 4.
Bước 3 - Tạo máy chủ ảo đầu tiên của bạn
Bạn có thể làm theo mẫu bên dưới để tạo một máy chủ ảo trong Apache.
NameVirtualHost mytest.website
<VirtualHost mytest.website>
DocumentRoot /home/vhost-user/public_html
ServerName mytest.website
</VirtualHost>
Mở trình soạn thảo văn bản yêu thích của bạn /etc/httpd/conf.d/example-virtualhost.conf
và sau đó thêm nội dung ở trên vào đó. Đây là lệnh sử dụng nano:
nano /etc/httpd/conf.d/example-virtualhost.conf
Hãy để tôi giải thích cấu hình ở đây. Khi chúng tôi chỉ định "NameVirtualhost", chúng tôi thực sự nói với máy chủ web rằng chúng tôi đang lưu trữ nhiều tên miền trên một IP . Bây giờ, trong ví dụ này, tôi đã sử dụng mytest.website
như một miền ví dụ. Thay đổi nó thành của bạn, hoặc một miền bạn chọn. DocumentRoot
là những gì cho Apache biết nơi nội dung được đặt. ServerName
là một chỉ thị mà chúng tôi sử dụng để nói với Apache tên miền của trang web. Và một thẻ cuối cùng, thông báo </VirtualHost>
cho Apache rằng đó là sự kết thúc của cấu hình máy chủ ảo.
Bước 4 - Cấu hình Apache để chạy như một người dùng khác
Như đã đề cập trước đó, một phần của việc bảo vệ máy chủ của bạn bao gồm chạy Apache / PHP như một người dùng riêng cho mỗi máy chủ ảo. Nói với Apache để làm điều này thật đơn giản sau khi chúng tôi áp dụng bản vá - tất cả những gì bạn cần làm là thêm:
AssignUserId vhost-user vhost-user-group
... để cấu hình của bạn. Dưới đây là ví dụ máy chủ ảo sẽ trông như thế nào sau khi chúng tôi thêm tùy chọn này:
NameVirtualHost mytest.website
<VirtualHost mytest.website>
DocumentRoot /home/vhost-user/public_html
ServerName mytest.website
AssignUserId vhost-user vhost-user-group
</VirtualHost>
Phép thuật là trong dòng bắt đầu với AssignUserId
. Với tùy chọn này, chúng tôi đang bảo Apache / PHP chạy như người dùng / nhóm sau.
Bước 5 - Ẩn phiên bản của Apache
Bước này khá đơn giản; chỉ cần mở tệp cấu hình của Apache bằng cách thực hiện lệnh sau với tư cách là người dùng root:
nano /etc/httpd/conf/httpd.conf
Tìm "ServerTokens" và thay đổi tùy chọn sau thành "ProductOnly". Điều này nói với Apache chỉ tiết lộ rằng đó là "Apache", thay vì "Apache / 2.2" hoặc một cái gì đó tương tự.
Bước 6 - Khởi động lại Apache để áp dụng các thay đổi
Bây giờ chúng tôi đã bảo mật máy chủ, chúng tôi phải khởi động lại máy chủ Apache. Thực hiện việc này bằng cách chạy lệnh sau dưới dạng root hoặc với sudo:
service httpd restart
Phần kết luận
Đây chỉ là một vài bước bạn có thể thực hiện để bảo mật máy chủ của mình. Một lần nữa, ngay cả khi đó là người mà bạn tin tưởng đang lưu trữ trang web trên máy chủ của mình, bạn nên lập kế hoạch để bảo vệ trang web đó. Trong các tình huống ở trên, ngay cả khi tài khoản người dùng bị xâm phạm, kẻ tấn công sẽ không có quyền truy cập vào toàn bộ máy chủ.