Hướng dẫn thực tế để bảo mật và làm cứng Máy chủ HTTP Apache.


Máy chủ Web là một phần quan trọng của các ứng dụng dựa trên web. Máy chủ web Apache thường được đặt ở rìa mạng do đó nó trở thành một trong những dịch vụ dễ bị tấn công nhất.

Có cấu hình mặc định cung cấp nhiều thông tin nhạy cảm có thể giúp hacker chuẩn bị tấn công các ứng dụng. Phần lớn các cuộc tấn công ứng dụng web là thông qua các cuộc tấn công XSS, Info Leakage, Quản lý phiên và SQL Injection do mã lập trình yếu và không vệ sinh cơ sở hạ tầng ứng dụng web.

Nghiên cứu thú vị của Công nghệ tích cực tiết lộ, 52% ứng dụng được quét có lỗ hổng cao.

Trong bài viết này, tôi sẽ nói về một số thực tiễn tốt nhất để bảo mật máy chủ HTTP HTTP trên nền tảng Linux.

Sau đây được thử nghiệm trên phiên bản Apache 2.4.x.

  • Điều này giả định rằng bạn đã cài đặt Apache trên nền tảng UNIX. Nếu không, bạn có thể xem qua Hướng dẫn cài đặt.
  • Tôi sẽ gọi thư mục cài đặt Apache / opt / apache là $ Web_Server trong suốt hướng dẫn này.
  • Bạn nên sao lưu tệp cấu hình hiện có trước khi sửa đổi.

Khán giả

Điều này được thiết kế cho Quản trị viên Middleware, Hỗ trợ ứng dụng, Phân tích hệ thống hoặc bất kỳ ai làm việc hoặc mong muốn tìm hiểu Hardening & Hướng dẫn bảo mật.

Kiến thức về máy chủ web Apache & Lệnh UNIX là bắt buộc.

Ghi chú

Bạn cần một số công cụ để kiểm tra Tiêu đề HTTP để biết một số xác minh triển khai. Có hai cách để làm điều này.

  1. Sử dụng các công cụ dành cho nhà phát triển sẵn có để kiểm tra các tiêu đề HTTP. Thông thường, nó ở dưới tab Mạng
  2. Sử dụng công cụ kiểm tra tiêu đề phản hồi HTTP trực tuyến

Xóa biểu ngữ phiên bản máy chủ

Tôi muốn nói rằng đây là một trong những điều đầu tiên cần xem xét, vì bạn không muốn tiết lộ phiên bản máy chủ web nào bạn đang sử dụng. Phiên bản phơi bày có nghĩa là bạn đang giúp hacker đẩy nhanh quá trình trinh sát.

Cấu hình mặc định sẽ hiển thị Phiên bản Apache và loại HĐH như dưới đây.

  • Chuyển đến thư mục $ Web_Server / conf
  • Sửa đổi httpd.conf bằng cách sử dụng trình soạn thảo vi
  • Thêm chỉ thị sau và lưu httpd.conf

Máy chủ Prodokens
Tắt máy chủ

  • Khởi động lại apache

ServerSignature sẽ xóa thông tin phiên bản khỏi trang do Apache tạo.

ServerTokens sẽ thay đổi Tiêu đề thành chỉ sản xuất, tức là, Apache

Như bạn có thể thấy bên dưới, phiên bản & Thông tin hệ điều hành đã biến mất.

Vô hiệu hóa danh sách trình duyệt thư mục

Vô hiệu hóa danh sách thư mục trong trình duyệt, vì vậy khách truy cập không xem những gì tất cả các tệp và thư mục bạn có trong thư mục gốc hoặc thư mục con.

Hãy để thử nghiệm xem như thế nào trong cài đặt mặc định.

  • Chuyển đến thư mục $ Web_Server / htdocs
  • Tạo một thư mục và một vài tập tin bên trong đó

thử nghiệm # mkdir
# chạm hi
# chạm xin chào

Bây giờ, hãy để ngôn ngữ cố gắng truy cập Apache bằng cách http: // localhost / kiểm tra

Như bạn có thể thấy nó tiết lộ tất cả những gì tập tin / thư mục bạn có và tôi chắc chắn rằng bạn không muốn tiết lộ điều đó.

  • Chuyển đến thư mục $ Web_Server / conf
  •  Mở httpd.conf bằng vi
  •  Tìm kiếm Danh mục và thay đổi Chỉ thị Tùy chọn thành Không có hoặc Index Index

Tùy chọn-Index

(hoặc là)

Tùy chọn Không có

  • Khởi động lại Apache

Lưu ý: nếu bạn có nhiều chỉ thị Thư mục trong môi trường của mình, bạn nên xem xét thực hiện tương tự cho tất cả.

Bây giờ, hãy để ngôn ngữ cố gắng truy cập Apache bằng cách http: // localhost / kiểm tra

Như bạn có thể thấy, nó hiển thị một lỗi bị cấm thay vì hiển thị danh sách thư mục kiểm tra.

Etag

Nó cho phép kẻ tấn công từ xa có được thông tin nhạy cảm như số inode, ranh giới MIME nhiều phần và quá trình con thông qua tiêu đề Etag.

Để ngăn chặn lỗ hổng này, hãy để cho tôi thực hiện nó như dưới đây. Điều này là cần thiết để khắc phục sự tuân thủ PCI.

  • Chuyển đến thư mục $ Web_Server / conf
  • Thêm chỉ thị sau và lưu httpd.conf

FileETag Không

  • Khởi động lại apache

Chạy Apache từ tài khoản không có đặc quyền

Một cài đặt mặc định chạy như không có ai hoặc daemon. Sử dụng một người dùng không có đặc quyền riêng biệt cho Apache là tốt.

Ý tưởng ở đây là bảo vệ các dịch vụ khác đang chạy trong trường hợp có bất kỳ lỗ hổng bảo mật nào.

  • Tạo một người dùng và nhóm được gọi là apache

# nhóm apache
# người dùng apache apache apache

  • Thay đổi quyền sở hữu thư mục cài đặt apache thành người dùng không có đặc quyền mới được tạo

# chown đỉnhR apache: apache / opt / apache

  •  Truy cập $ Web_Server / conf
  •  Sửa đổi httpd.conf bằng vi
  •  Tìm kiếm người dùng & Chỉ thị nhóm và thay đổi dưới dạng apache tài khoản không đặc quyền

Người dùng apache
Nhóm apache

  •  Lưu httpd.conf
  •  Khởi động lại Apache

grep để chạy tiến trình http và đảm bảo nó chạy với người dùng apache

# psTHERef | grep http

Bạn sẽ thấy một tiến trình đang chạy với root. Đó là vì Apache đang lắng nghe trên cổng 80 và nó phải được bắt đầu bằng root.

Bảo vệ quyền nhị phân và thư mục cấu hình

Theo mặc định, quyền cho nhị phân và cấu hình là 755 có nghĩa là bất kỳ người dùng nào trên máy chủ đều có thể xem cấu hình. Bạn có thể không cho phép người dùng khác vào thư mục conf và bin.

  • Chuyển đến thư mục $ Web_Server
  • Thay đổi quyền của thư mục bin và conf

# chmodTHERR 750 bin conf

Bảo vệ cài đặt hệ thống

Trong cài đặt mặc định, người dùng có thể ghi đè cấu hình apache bằng cách sử dụng .htaccess. Nếu bạn muốn ngăn người dùng thay đổi cài đặt máy chủ apache của mình, bạn có thể thêm AllowOverride thành Không như hiển thị bên dưới.

Điều này phải được thực hiện ở cấp độ gốc.

  • Chuyển đến thư mục $ Web_Server / conf
  •  Mở httpd.conf bằng vi
  •  Tìm kiếm thư mục ở cấp độ gốc

Tùy chọn-Index
AllowOverride Không

  •  Lưu httpd.conf
  •  Khởi động lại Apache

Phương thức yêu cầu HTTP

Giao thức HTTP 1.1 hỗ trợ nhiều phương thức yêu cầu có thể không bắt buộc và một số trong số chúng có nguy cơ tiềm ẩn.

Thông thường, bạn có thể cần các phương thức yêu cầu GET, HEAD, POST trong một ứng dụng web, có thể được cấu hình trong chỉ thị thư mục tương ứng.

Hỗ trợ cấu hình mặc định hỗ trợ phương thức TÙY CHỌN, GET, Head, POST, PUT, DELETE, TRACE, CONNECT trong giao thức HTTP 1.1.

  •  Chuyển đến thư mục $ Web_Server / conf
  •  Mở httpd.conf bằng vi
  • Tìm kiếm Thư mục và thêm vào sau đây

tư chôi tât cả

  • Khởi động lại Apache

Vô hiệu hóa yêu cầu HTTP theo dõi

Theo mặc định, phương thức Trace được bật trong máy chủ web Apache.

Việc kích hoạt này có thể cho phép tấn công Truy tìm trang web chéo và có khả năng cung cấp tùy chọn cho tin tặc để đánh cắp thông tin cookie. Hãy để chúng tôi thấy nó trông như thế nào trong cấu hình mặc định.

  •  Làm IP máy chủ web telnet với cổng nghe
  •  Thực hiện một yêu cầu TRACE như hình dưới đây

#telnet localhost 80
Đang thử 127.0.0.1…
Đã kết nối với localhost.
Nhân vật thoát là ‘^]’.
Máy chủ TRACE / HTTP / 1.1: kiểm tra
HTTP / 1.1 200 OK
Ngày: Thứ bảy, 31 tháng 8 năm 2013 02:13:24 GMT
Máy chủ: Apache
Chuyển mã hóa: chunked
Loại nội dung: tin nhắn / http 20
TRACE / HTTP / 1.1
Chủ nhà: kiểm tra
0
Kết nối bị đóng bởi máy chủ nước ngoài.
#

Như bạn có thể thấy trong yêu cầu TRACE ở trên, nó đã trả lời truy vấn của tôi. Hãy để Lốc vô hiệu hóa nó và kiểm tra nó.

  •  Chuyển đến thư mục $ Web_Server / conf
  • Thêm chỉ thị sau và lưu httpd.conf

TraceEnable tắt

  •  Khởi động lại apache

Thực hiện IP máy chủ web telnet với cổng nghe và thực hiện yêu cầu TRACE như hình bên dưới

#telnet localhost 80
Đang thử 127.0.0.1…
Đã kết nối với localhost.
Nhân vật thoát là ‘^]’.
Máy chủ TRACE / HTTP / 1.1: kiểm tra
Phương pháp HTTP / 1.1 405 Không được phép
Ngày: Thứ bảy, ngày 31 tháng 8 năm 2013 02:18:27 GMT
Máy chủ: Apache Cho phép: Độ dài nội dung: 223Content-Type: text / html; bộ ký tự = iso-8859-1
405 Phương pháp không được phép

Phương pháp không được phép

Phương thức được yêu cầu TRACE không được phép cho URL /.

Kết nối bị đóng bởi máy chủ nước ngoài.
#

Như bạn có thể thấy trong yêu cầu TRACE ở trên, nó đã chặn yêu cầu của tôi với Phương thức HTTP 405 Không được phép.

Bây giờ, máy chủ web này không cho phép yêu cầu TRACE và trợ giúp trong việc chặn cuộc tấn công Truy tìm trang web chéo.

Đặt cookie với cờ httpOnly và Secure

Bạn có thể giảm thiểu hầu hết các cuộc tấn công Cross Site Scripting phổ biến bằng cách sử dụng cờ httpOnly và Secure trong cookie. Nếu không có httpOnly và Secure, có thể đánh cắp hoặc thao túng phiên ứng dụng web và cookie, và nó nguy hiểm.

  •  Đảm bảo mod_headers.so được bật trong httpd.conf của bạn
  •  Chuyển đến thư mục $ Web_Server / conf
  •  Thêm chỉ thị sau và lưu httpd.conf

Chỉnh sửa tiêu đề Set-Cookie ^ (. *) $ 1; HttpOnly; Secure

  •  Khởi động lại apache

Tấn công nhấp chuột

Clickjacking là một lỗ hổng ứng dụng web nổi tiếng.

  •  Đảm bảo mod_headers.so được bật trong httpd.conf của bạn
  •  Chuyển đến thư mục $ Web_Server / conf
  •  Thêm chỉ thị sau và lưu httpd.conf

Tiêu đề luôn nối thêm SAMEORIGIN tùy chọn X-Frame

  •  Khởi động lại apache

X-Frame-Options cũng hỗ trợ thêm hai tùy chọn mà tôi đã giải thích ở đây.

Phía máy chủ bao gồm

Bao gồm phía máy chủ (SSI) có nguy cơ tăng tải trên máy chủ. Nếu bạn đã chia sẻ môi trường và các ứng dụng web lưu lượng truy cập lớn, bạn nên xem xét việc vô hiệu hóa SSI bằng cách thêm chỉ thị Bao gồm trong Tùy chọn.

Tấn công SSI cho phép khai thác một ứng dụng web bằng cách đưa các tập lệnh vào các trang HTML hoặc thực thi mã từ xa.

  • Chuyển đến thư mục $ Web_Server / conf
  •  Mở httpd.conf bằng vi
  •  Tìm kiếm Thư mục và thêm Chỉ thị trong Tùy chọn

Tùy chọn Chỉ số – Bao gồm
Đặt hàng cho phép, từ chối cho phép từ tất cả

  • Khởi động lại Apache

Lưu ý: nếu bạn có nhiều chỉ thị Thư mục trong môi trường của mình, bạn nên xem xét thực hiện tương tự cho tất cả.

Bảo vệ X-XSS

Bảo vệ Cross Site Scripting (XSS) có thể được bỏ qua trong nhiều trình duyệt. Bạn có thể áp dụng bảo vệ này cho một ứng dụng web nếu nó bị người dùng vô hiệu hóa. Điều này được sử dụng bởi phần lớn các công ty web khổng lồ như Facebook, Twitter, Google, v.v..

  • Chuyển đến thư mục $ Web_Server / conf
  • Mở httpd.conf bằng vi và thêm chỉ thị Tiêu đề

Bộ tiêu đề X-XSS-Protection "1; chế độ = khối"

  •  Khởi động lại Apache

Như bạn có thể thấy, XSS-Protection là phần được chèn trong tiêu đề phản hồi.

Vô hiệu hóa giao thức HTTP 1.0

Khi chúng ta nói về bảo mật, chúng ta nên bảo vệ càng nhiều càng tốt. Vậy tại sao chúng ta lại sử dụng phiên bản HTTP cũ hơn của giao thức, hãy để lại cũng vô hiệu hóa chúng?

HTTP 1.0 có điểm yếu bảo mật liên quan đến chiếm quyền điều khiển phiên. Chúng ta có thể vô hiệu hóa điều này bằng cách sử dụng mô-đun mod_rewrite.

  • Đảm bảo tải mô-đun mod_rewrite trong tệp httpd.conf
  •  Kích hoạt chỉ thị RewriteEngine như sau và thêm điều kiện Rewrite để chỉ cho phép HTTP 1.1

RewriteEngine On
RewriteCond% {THE_REQUEST}! HTTP / 1.1 $
RewriteRule. * – [F]

Cấu hình giá trị thời gian chờ

Theo mặc định, giá trị hết thời gian của Apache là 300 giây, có thể là nạn nhân của cuộc tấn công Slow Loris và DoS. Để giảm thiểu điều này, bạn có thể hạ thấp giá trị thời gian chờ xuống có thể là 60 giây.

  • Chuyển đến thư mục $ Web_Server / conf
  • Mở httpd.conf bằng vi
  •  Thêm phần sau vào httpd.conf

Hết giờ 60

SSL

Có SSL là một lớp bảo mật bổ sung mà bạn đang thêm vào Ứng dụng web. Tuy nhiên, cấu hình SSL mặc định dẫn đến các lỗ hổng nhất định và bạn nên xem xét điều chỉnh các cấu hình đó.

Khóa SSL

Vi phạm khóa SSL là khó, nhưng không phải là không thể. Nó chỉ là vấn đề của sức mạnh tính toán và thời gian.

Như bạn có thể biết, sử dụng một PC thời kỳ 2009 đã bẻ khóa trong khoảng 73 ngày bạn có thể kỹ sư đảo ngược một khóa 512 bit.

Vì vậy, độ dài khóa càng cao, việc phá khóa SSL càng phức tạp. Phần lớn các công ty web khổng lồ sử dụng khóa 2048 bit, như dưới đây, tại sao chúng tôi không thể?

  •  Outlook.com
  •  Microsoft.com
  •   Live.com
  •  Skype.com
  •  Apple.com
  •  Yahoo.com
  •  Bing.com
  •  Hotmail
  •  Twitter.com

Bạn có thể sử dụng OpenSSL để tạo CSR với 2048 bit như bên dưới.

openssl req -out geekflare.csr -newkey rsa: 2048 -nodes -keyout geekflare.key

Nó sẽ tạo một CSR mà bạn sẽ cần gửi đến cơ quan cấp chứng chỉ để ký nó. Khi bạn nhận được tệp chứng chỉ đã ký, bạn có thể thêm chúng vào tệp httpd-ssl.conf

SSLCertertFile #Certert được ký bởi cơ quan có thẩm quyền
Người ký SSLCertertChainFile #Certert được cấp bởi cơ quan có thẩm quyền
Tệp SSLCertertKeyKeyile #Key mà bạn đã tạo ở trên

  • Khởi động lại máy chủ web Apache và thử truy cập URL bằng https

Mật mã SSL

Mật mã SSL là một thuật toán mã hóa, được sử dụng làm khóa giữa hai máy tính qua Internet. Mã hóa dữ liệu là quá trình chuyển đổi văn bản thuần thành mã được mã hóa bí mật.

Nó dựa trên cấu hình SSL máy chủ web của bạn, mã hóa dữ liệu sẽ diễn ra. Vì vậy, điều quan trọng là cấu hình Mật mã SSL, mạnh hơn và không dễ bị tấn công.

  • Chuyển đến thư mục $ Web_Server / conf / thêm
  •  Sửa đổi chỉ thị SSLCodesSuite trong httpd-ssl.conf như dưới đây để chỉ chấp nhận các thuật toán mã hóa cao hơn

SSLCodesSuite CAO :! TRUNG TÂM :! AUULL :! MD5 :! RC4

  •  Lưu tệp cấu hình và khởi động lại máy chủ apache

Lưu ý: nếu bạn có nhiều mật mã yếu trong báo cáo kiểm toán SSL, bạn có thể nhanh chóng từ chối thêm chúng! lúc bắt đầu.

Vô hiệu hóa SSL v2 & v3

SSL v2 & v3 có nhiều lỗi bảo mật và nếu bạn đang làm việc theo hướng kiểm tra thâm nhập hoặc tuân thủ PCI, thì bạn sẽ phải đóng kết quả tìm kiếm bảo mật để vô hiệu hóa SSL v2 / v3.

Bất kỳ giao tiếp SSL v2 / v3 nào cũng có thể dễ bị tấn công Man-in-The-Middle có thể cho phép giả mạo hoặc tiết lộ dữ liệu.

Hãy để máy chủ ứng dụng web apache chỉ chấp nhận TLS mới nhất và từ chối yêu cầu kết nối SSL v2 / v3.

  • Chuyển đến thư mục $ Web_Server / conf / thêm
  • Sửa đổi chỉ thị SSLProtocol trong httpd-ssl.conf như dưới đây để chỉ chấp nhận TLS 1.2+

SSLProtocolátALL + TLSv1.2

Khi bạn đã hoàn tất cấu hình SSL, bạn nên thử nghiệm ứng dụng web của mình bằng công cụ Chứng chỉ SSL / TLS trực tuyến để tìm bất kỳ lỗi cấu hình nào.

Bảo mật Mod

Mod Security là Tường lửa ứng dụng web nguồn mở, bạn có thể sử dụng với Apache.

Nó là một mô-đun mà bạn phải biên dịch và cài đặt. Nếu bạn có thể mua một tường lửa ứng dụng web thương mại, đây sẽ là một lựa chọn tuyệt vời để sử dụng nó.

Để cung cấp bảo vệ ứng dụng web chung, Quy tắc cốt lõi sử dụng các kỹ thuật sau:

  • Bảo vệ HTTP – phát hiện vi phạm giao thức HTTP và chính sách sử dụng được xác định cục bộ
  • Tra cứu danh sách đen thời gian thực – sử dụng danh tiếng IP của bên thứ 3
  • Phát hiện phần mềm độc hại dựa trên web – xác định nội dung web độc hại bằng cách kiểm tra API duyệt web an toàn của Google.
  • Bảo vệ từ chối dịch vụ HTTP – bảo vệ chống lũ HTTP và tấn công HTTP DoS chậm.
  • Bảo vệ tấn công web phổ biến – phát hiện tấn công bảo mật ứng dụng web phổ biến
  • Phát hiện tự động hóa – Phát hiện bot, trình thu thập thông tin, máy quét và một hoạt động bề mặt độc hại khác
  • Tích hợp với AV Scanning để tải lên tệp – xác định các tệp độc hại được tải lên thông qua ứng dụng web.
  • Theo dõi dữ liệu nhạy cảm – Theo dõi việc sử dụng thẻ tín dụng và chặn rò rỉ.
  • Bảo vệ Trojan – Phát hiện quyền truy cập vào Trojans ngựa.
  • Xác định lỗi ứng dụng – cảnh báo về cấu hình sai của ứng dụng.
  • Phát hiện lỗi và ẩn – Ngụy trang các thông báo lỗi được gửi bởi máy chủ.

Tải xuống & Cài đặt

Các điều kiện tiên quyết sau phải được cài đặt trên máy chủ nơi bạn muốn sử dụng Mod Security với Apache. Nếu bất kỳ một trong số này không tồn tại thì quá trình biên dịch Mod Security sẽ thất bại. Bạn có thể sử dụng yum install trên Linux hoặc Centos để cài đặt các gói này.

  • apache 2.x trở lên
  • gói libpcre
  •  gói libxml2
  • gói liblua
  • gói libcurl
  •  gói libapr và libapr-produc
  •  mô-đun mod_unique_id đi kèm với máy chủ web Apache

Bây giờ, hãy để tải xuống phiên bản ổn định mới nhất của Mod Security 2.7.5 từ đây

  • Chuyển tập tin đã tải xuống vào / opt / apache
  • Trích xuất modsecurity-apache_2.7.5.tar.gz

# gunzip hungs modsecurity-apache_2.7.5.tar.gz | tar xvf –

  • Chuyển đến thư mục được giải nén modsecurity-apache_2.7.5

# cd modsecurance-apache_2.7.5

  • Chạy tập lệnh cấu hình bao gồm đường dẫn apxs đến Apache hiện có

# ./có hình thứcwith-apxs = / opt / apache / bin / apxs

  • Biên dịch & cài đặt với make script

# làm
# cài đặt

  • Sau khi cài đặt xong, bạn sẽ thấy mod_security2.so trong thư mục mô-đun bên dưới / opt / apache

Bây giờ điều này kết luận, bạn đã cài đặt mô-đun Mod Security trong máy chủ web Apache hiện có.

Cấu hình

Để sử dụng tính năng bảo mật Mod với Apache, chúng tôi phải tải mô-đun bảo mật mod trong httpd.conf. Mô-đun mod_unique_id là điều kiện tiên quyết cho Mod Security.

Mô-đun này cung cấp một biến môi trường với một mã định danh duy nhất cho mỗi yêu cầu, được Mod Security theo dõi và sử dụng.

  • Thêm dòng sau để tải mô-đun cho Mod Security trong httpd.conf và lưu tệp cấu hình

Các mô-đun LoadModule unique_id_module / mod_unique_id.so
LoadModule security2_module mô-đun / mod_security2.so

  •  Khởi động lại máy chủ web apache

Mod Security hiện đã được cài đặt!

Điều tiếp theo bạn phải làm là cài đặt quy tắc cốt lõi Mod Security để tận dụng tối đa tính năng của nó.

Quy tắc cốt lõi mới nhất có thể được tải xuống từ sau một liên kết, miễn phí. https://github.com/SpiderLabs/owasp-modsecurity-crs/zipball/master

  • Sao chép zip quy tắc lõi đã tải xuống vào thư mục / opt / apache / conf
  • Giải nén tập tin quy tắc cốt lõi
  • Bạn có thể muốn đổi tên thư mục thành một cái gì đó ngắn gọn và dễ nhớ. Trong ví dụ này, tôi sẽ đổi tên thành crs.
  • Chuyển đến thư mục crs và đổi tên modsecurity_crs10_setup.conf.example thành modsecurity_crs10_setup.conf

Bây giờ, hãy để cho phép các quy tắc này làm cho nó hoạt động với máy chủ web Apache.

  •  Thêm phần sau vào httpd.conf

Bao gồm conf / crs / modsecurity_crs_10_setup.confInclude conf / crs / base_rules / *. Conf

Trong cấu hình trên, chúng tôi đang tải tệp cấu hình chính Mod Security modsecurity_crs_10_setup.conf và các quy tắc cơ sở base_rules / *. Conf được cung cấp bởi Mod Security Core Rules để bảo vệ các ứng dụng web.

  •  Khởi động lại máy chủ web apache

Bạn đã cấu hình thành công Mod Security với Apache!

Làm tốt. Bây giờ, máy chủ Web Apache được bảo vệ bởi tường lửa ứng dụng web Mod Security.

Bắt đầu

Hãy để bắt đầu với một số cấu hình quan trọng trong Mod Security để làm cứng & ứng dụng web an toàn.

Trong phần này, chúng tôi sẽ thực hiện tất cả sửa đổi cấu hình trong /opt/apache/conf/crs/modsecurity_crs_10_setup.conf.

Chúng tôi sẽ giới thiệu /opt/apache/conf/crs/modsecurity_crs_10_setup.conf là setup.conf trong phần này cho mục đích ví dụ.

Điều quan trọng là phải hiểu các quy tắc OWASP được cung cấp miễn phí là gì. Có hai loại quy tắc được cung cấp bởi OWASP.

Quy tắc cơ sở – các quy tắc này được kiểm tra nhiều và có thể tỷ lệ báo động sai là ít hơn.

Quy tắc thí nghiệm – các quy tắc này là dành cho mục đích thử nghiệm và bạn có thể có báo động sai cao. Điều quan trọng là cấu hình, kiểm tra và triển khai trong UAT trước khi sử dụng chúng trong môi trường sản xuất.

Quy tắc tùy chọn – các quy tắc tùy chọn này có thể không phù hợp với toàn bộ môi trường. Dựa trên yêu cầu của bạn, bạn có thể sử dụng chúng.

Nếu bạn đang tìm kiếm CSRF, theo dõi người dùng, chiếm quyền điều khiển phiên, v.v., thì bạn có thể cân nhắc sử dụng các quy tắc tùy chọn. Chúng tôi có các quy tắc cơ bản, tùy chọn và thử nghiệm sau khi trích xuất tệp zip crs đã tải xuống từ trang tải xuống OWASP.

Các tệp cấu hình quy tắc này có sẵn trong thư mục crs / base_rules, crs / tùy chọn_rules và crs / thử nghiệm_rules. Hãy cùng làm quen với một số quy tắc cơ bản.

  • modsecurity_crs_20_protatio_violations.conf: Quy tắc này bảo vệ khỏi các lỗ hổng Giao thức như chia tách phản hồi, yêu cầu buôn lậu, sử dụng giao thức không được phép (HTTP 1.0).
  • modsecurity_crs_21_protatio_anomalies.conf: Điều này là để bảo vệ khỏi một yêu cầu bị thiếu với Host, Accept, User-Agent trong tiêu đề.
  • modsecurity_crs_23_Vquest_limits.conf: Quy tắc này có sự phụ thuộc vào ứng dụng cụ thể như kích thước yêu cầu, kích thước tải lên, độ dài của tham số, v.v..
  • modsecurity_crs_30_http_policy.conf: Đây là để định cấu hình và bảo vệ phương thức được phép hoặc không được phép như CONNECT, TRACE, PUT, DELETE, v.v..
  • modsecurity_crs_35_bad_robots.conf: Phát hiện robot độc hại
  • modsecurity_crs_40_generic_attacks.conf: Điều này là để bảo vệ khỏi lệnh tiêm OS, bao gồm tệp từ xa, v.v..
  • modsecurity_crs_41_sql_injection_attacks.conf: Quy tắc này để bảo vệ SQL và yêu cầu tiêm SQL mù.
  • modsecurity_crs_41_xss_attacks.conf: Bảo vệ khỏi yêu cầu Tập lệnh chéo trang web.
  • modsecurity_crs_42_tight_security.conf: Phát hiện và bảo vệ truyền tải thư mục.
  • modsecurity_crs_45_trojans.conf: Quy tắc này để phát hiện đầu ra quản lý tệp chung, tải lên trang backlink HTTP, chữ ký đã biết.
  • sửa đổi.

Ghi nhật ký

Ghi nhật ký là một trong những điều đầu tiên cần định cấu hình để bạn có thể tạo nhật ký cho những gì Mod Security đang làm. Có hai loại đăng nhập có sẵn; Gỡ lỗi & Sổ ghi chép đánh giá.

Nhật ký gỡ lỗi: đây là để nhân đôi thông báo lỗi, cảnh báo và thông báo của Apache từ nhật ký lỗi.

Nhật ký kiểm toán: đây là để ghi nhật ký giao dịch được đánh dấu bởi quy tắc Mod Security Mod Security cho phép bạn linh hoạt để định cấu hình Kiểm toán, Gỡ lỗi hoặc cả hai ghi nhật ký.

Theo mặc định cấu hình sẽ ghi cả hai bản ghi. Tuy nhiên, bạn có thể thay đổi dựa trên yêu cầu của bạn. Nhật ký được kiểm soát trong chỉ thị SecDefaultAction. Hãy cùng xem xét cấu hình ghi nhật ký mặc định trong setup.conf

Giai đoạn SecDefaultAction: 1, từ chối, đăng nhập

Để ghi nhật ký Gỡ lỗi, Nhật ký kiểm toán – sử dụng Nhật ký nhật ký Để chỉ ghi nhật ký kiểm toán – sử dụng mật mã, kiểm toán Nhật ký Để ghi nhật ký chỉ gỡ lỗi – sử dụng nhật ký nhật ký, noauditlog, Bạn có thể chỉ định vị trí Nhật ký kiểm toán được lưu trữ do SecAuditLog kiểm soát chỉ thị.

Hãy viết nhật ký kiểm toán vào /opt/apache/logs/modsec_audit.log bằng cách thêm vào như dưới đây.

  • Thêm chỉ thị SecAuditLog trong setup.conf và khởi động lại Máy chủ web Apache

SecAuditLog /opt/apache/logs/modsec_audit.log

  • Sau khi khởi động lại, bạn sẽ thấy modsec_audit.log được tạo

Kích hoạt công cụ quy tắc

Theo mặc định, Quy tắc động cơ bị tắt, điều đó có nghĩa là nếu bạn không kích hoạt Công cụ quy tắc, bạn không sử dụng tất cả các lợi thế của Mod Security.

Công cụ quy tắc bật hoặc tắt được điều khiển bởi chỉ thị SecRuleEngine.

  • Thêm chỉ thị SecRuleEngine trong setup.conf và khởi động lại Máy chủ web Apache

SecRuleEngine Bật

Có ba giá trị cho SecRuleEngine:

  • Bật – để bật Công cụ quy tắc
  • Tắt – để tắt Công cụ quy tắc
  • Phát hiện – chỉ bật Công cụ quy tắc nhưng không bao giờ thực hiện bất kỳ hành động nào như chặn, từ chối, thả, cho phép, proxy hoặc chuyển hướng

Khi Rule Engine được bật – Mod Security sẵn sàng bảo vệ với một số loại tấn công phổ biến.

Bảo vệ loại tấn công phổ biến

Bây giờ máy chủ web đã sẵn sàng để bảo vệ với các loại tấn công phổ biến như XSS, SQL Injection, Vi phạm giao thức, v.v. vì chúng tôi đã cài đặt Core Rule và bật Rule Engine. Hãy để thử nghiệm một vài trong số họ.

Tấn công XSS

  •  Mở Firefox và truy cập ứng dụng của bạn và đặt thẻ ở cuối hoặc URL
  •  Theo dõi modsec_audit.log trong thư mục apache / log

Bạn sẽ nhận thấy yêu cầu khối Bảo mật Mod vì nó chứa thẻ là gốc của cuộc tấn công XSS.

Directory Traversal Attack: – Tấn công traversal thư mục có thể tạo ra nhiều thiệt hại bằng cách tận dụng các lỗ hổng này và truy cập tệp liên quan đến hệ thống. Ví dụ: / etc / passwd, .htaccess, v.v..

  •  Mở Firefox và truy cập ứng dụng của bạn với thư mục truyền tải
  •  Theo dõi modsec_audit.log trong thư mục apache / log

http: // localhost /? ../…/boot

  • Bạn sẽ nhận thấy yêu cầu khối Mod Security vì nó chứa thư mục truyền tải.

Thay đổi biểu ngữ máy chủ

Trước đó trong hướng dẫn này, bạn đã tìm hiểu cách loại bỏ Apache và loại hệ điều hành, phiên bản trợ giúp của chỉ thị ServerTokens.

Hãy để trước một bước, hãy giữ tên máy chủ bất cứ điều gì bạn muốn? Nó có thể thực hiện với chỉ thị SecServerSignature trong Mod Security. Bạn thấy nó hấp dẫn.

Lưu ý: để sử dụng Mod Security để thao tác Biểu ngữ máy chủ từ một tiêu đề, bạn phải đặt ServerTokesn thành Full trong httpd.conf của máy chủ web Apache.

  • Thêm chỉ thị SecServerSignature với tên máy chủ mong muốn của bạn trong setup.conf và khởi động lại Máy chủ web Apache

SecServerSignature YourServerName

Ví dụ:

[/ opt / apache / conf / crs] #grep SecServer modsecurity_crs_10_setup.conf
SecServerSignature geekflare.com
[/ opt / apache / conf / crs] #

Cấu hình chung

Hãy cùng kiểm tra một số cấu hình chung như cách thực hành tốt nhất.

Cấu hình Nghe

Khi bạn có nhiều giao diện và IP IP trên một máy chủ, bạn nên có lệnh Nghe được cấu hình với số IP và số cổng tuyệt đối.

Khi bạn để cấu hình apache để Nghe trên tất cả IP IP với một số số cổng, nó có thể tạo ra sự cố khi chuyển tiếp yêu cầu HTTP đến một số máy chủ web khác. Điều này khá phổ biến trong môi trường chia sẻ.

  • Định cấu hình Chỉ thị Nghe trong httpd.conf với IP và cổng tuyệt đối như một ví dụ hiển thị bên dưới

Nghe 10.10.10.1:80

Ghi nhật ký truy cập

Nó rất cần thiết để cấu hình nhật ký truy cập đúng cách trong máy chủ web của bạn. Một số tham số quan trọng cần ghi lại trong nhật ký sẽ là thời gian thực hiện để phục vụ yêu cầu, SESSION ID.

Theo mặc định, Apache không được cấu hình để thu thập những dữ liệu này. Bạn phải cấu hình chúng theo cách thủ công như sau.

  • Để nắm bắt thời gian thực hiện để phục vụ yêu cầu và ID SESSION trong nhật ký truy cập
  •  Thêm T & % sessionID trong httpd.conf theo chỉ thị LogFormat

LogFormat "% h% l% u% t "% {sessionID} C" "% r" %>s% b% T" chung

Bạn có thể tham khảo http://httpd.apache.org/docs/2.2/mod/mod_log_config.html để có danh sách đầy đủ các tham số được hỗ trợ trong lệnh LogFormat trong Máy chủ web Apache.

Vô hiệu hóa Tải các mô-đun không mong muốn

Nếu bạn đã biên dịch và cài đặt với tất cả các mô-đun, thì có nhiều khả năng bạn sẽ có nhiều mô-đun được tải trong Apache, điều này có thể không bắt buộc.

Cách thực hành tốt nhất là định cấu hình Apache với các mô-đun cần thiết trong các ứng dụng web của bạn. Các mô-đun sau có mối quan tâm về bảo mật và bạn có thể quan tâm đến việc vô hiệu hóa trong httpd.conf của Máy chủ web Apache.

WebDAV (Tác giả và phiên bản phân tán dựa trên web) Mô-đun này cho phép các máy khách từ xa thao tác các tệp trên máy chủ và chịu các cuộc tấn công từ chối dịch vụ khác nhau. Để vô hiệu hóa nhận xét sau trong httpd.conf

#LoadModule dav_module mô-đun / mod_dav.so
#LoadModule dav_fs_module mô-đun / mod_dav_fs.so
#Inc loại trừ conf / thêm / httpd-dav.conf

Mô-đun thông tin Mô-đun mod_info có thể rò rỉ thông tin nhạy cảm bằng cách sử dụng .htaccess sau khi mô-đun này được tải. Để vô hiệu hóa nhận xét sau trong httpd.conf

#LoadModule thông tin mô-đun mô-đun / mod_info.so

Tham khảo: Điều này sẽ không thể có được nếu không có hướng dẫn từ liên kết sau:

Vì vậy, đó là một số thực tiễn tốt nhất bạn có thể sử dụng để bảo mật máy chủ web Apache của mình.

Nếu bạn chưa quen với HTTP HTTP, thì tôi khuyên bạn nên dùng khóa học quản trị HTTP Apache.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me