Thursday, August 22, 2013

Tối Ưu Hóa Và Bảo Mật Apache

1. Edit một số directive default trong httpd.conf để giảm thiểu việc lộ lọt thông tin cấu hình của máy chủ hoặc các tác vụ ko cần thiết:
TraceEnable Off : Disable TRACE request method
ServerSignature Off : Disable việc thể hiện các thông tin về máy chủ (apache version, các mod đang sử dụng ...) ở footer các page do server generate ra, một phần nào đó cũng giảm thiểu được bandwidth cho các bạn.
ServerTokens Prod : Chỉ thể hiện "Server: Apache" trong header trả về thay vì "Server: Apache 2.2.16" hoặc "Server: Apache 2.2.16/mod_abc,mod_xyz" ...
UseCanonicalName Off : Disable việc sử dụng CanonicalName.
HostnameLookups Off : Disable tính năng lookup hostname từ IP address của client.

2. Giảm thời gian Timeout và enable KeepAlive: việc này sẽ làm giảm thiếu số lượng socket connection được mở đến server, thời gian tồn tại của chúng trên server ...
Code:

Timeout 15
KeepAlive On
MaxKeepAliveRequests 200
KeepAliveTimeout 7

3. Tính toán số lượng MaxClients hợp lý: Việc này nhằm đảm bảo nếu như apache bị flood cũng sẽ ko sử dụng hết tài nguyên của máy chủ khiến máy chủ bị treo, cũng như việc cấp phát lượng bộ nhớ phù hợp cho httpd.
Em viết sẵn 1 cái script dùng để tính toán số lượng MaxClient dành cho máy chủ đang chạy ở mode DSO. Với các mode khác thì mọi người dựa vào ý tưởng rồi tính toán cho phù hợp:
Code:


#!/bin/bash
# Script compute MaxClient for Apache
# Coded by Ikazuchi[at]quantrilinux.com
# Date: 14/05/2012

# Get total MEM
TOTAL_MEM=$(head -1 /proc/meminfo | awk '{print $2}')

# Get total Memory is being used
TOTAL_MEM_USED=$(free | grep 'buffers/cache' | awk '{print $3}')

# Get average memory of 1 process httpd
count=0
httpd_mem=0

for process_mem in `ps -ylC httpd --sort:rss | awk '{print $8}' | grep -v RSS`
do
let "count+=1"
let "httpd_mem+=$process_mem"
done

# Average memory per process
HTTPD_AVG_MEM=$(( $process_mem / $count ))

# Get total memory used for httpd:
HTTPD_TOTAL_MEM=$(( $TOTAL_MEM - $TOTAL_MEM_USED + $httpd_mem ))

MAX_CLIENT=$(( $HTTPD_TOTAL_MEM / $HTTPD_AVG_MEM ))

# Final result
echo -e "Total RAM in this server:\t\t $TOTAL_MEM KB"
echo -e "Total RAM is being used:\t\t $TOTAL_MEM_USED KB"
echo -e "Total RAM will be used for httpd:\t $HTTPD_TOTAL_MEM KB"
echo -e "Average RAM per process httpd:\t\t $HTTPD_AVG_MEM KB"
echo -e "Recommend MaxClients value:\t\t $MAX_CLIENT"

Kết quả ví dụ sẽ như sau:
Code:
Total RAM in this server:         8115520 KB
Total RAM is being used:         4546728 KB
Total RAM will be used for httpd:     4584432 KB
Average RAM per process httpd:         4611 KB
Recommend MaxClients value:         994

Related Posts:

  • Vòng đời của tên miền Quốc tếMỗi tên miền từ khi được khởi tạo đến lúc ngưng sử dụng đều có một "vòng đời" riêng của nó, thậm chí có những tên miền còn sở hữu nhiều vòng đời.Dưới đây, chúng tôi sẽ trình bày vòng đời của một số tên miền quốc tế thường sử … Read More
  • Thiết lập IP tĩnh cho cho centos 1, Để xác định địa chỉ ip và các network interface ta dùng command: Ifconfig –a 2, Để xem những thiết bị được kết nối vào computer từ IRQ 1 – IRQ 15 : Cat /proc/interrupts 3, Thiết lập địa chỉ ip tạm thời cho một card mạ… Read More
  • Quy định về tên miền Việt Nam (.VN) Định nghĩa các đuôi tên miền¶ COM.VN: Dành cho tổ chức, cá nhân hoạt động thương mại. BIZ.VN: Dành cho các tổ chức, cá nhân hoạt động kinh doanh, tương đương với tên miền COM.VN. EDU.VN: Dành cho các tổ chức, cá nhân hoạt đ… Read More
  • Fix lỗi không vào mạng khi clone centos với VMware Cách 1: At first, I checked the configuration of its NIC $ ping www.google.com ping: nuknown host www.google.com  $ cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE="eth0" HWADDR="00:50:56:B0:7F:24" NM_CONTROLLED="n… Read More
  • Vòng đời của tên miền VNTên miền ở trạng thái tự do (Available) => Chủ thể đăng ký sử dụng => Tên miền hết hạn. Sau 3 ngày kể từ ngày hết hạn => tên miền sẽ bị tạm ngưng, nhưng chủ thể vẫn có quyền nộp phí gia hạn trong vòng 17 ngày tiếp th… Read More