10 mẹo bảo mật để bảo vệ trang web của bạn từ các tin tặc

Sonntag, 1. Juni 2014

trang web bảo mật: bảo vệ trang web của bạn từ các tin tặc

Ruald Gerber và Toby Compton đưa ra lời khuyên chuyên nghiệp để tối ưu hóa bảo mật trang web của bạn và tránh các thảm họa hacking.

Bạn không thể nghĩ rằng trang web của bạn có điều gì đáng để bị tấn công cho, nhưng các trang web đang bị tổn hại tất cả các thời gian. Phần lớn các vi phạm an ninh trang web không phải là để ăn cắp dữ liệu của bạn hoặc làm xấu trang web của bạn, nhưng thay vào đó cố gắng sử dụng máy chủ của bạn như là một relay email spam, hoặc để thiết lập một máy chủ web tạm thời, thường là để phục vụ các tập tin có tính chất bất hợp pháp. Hacking thường xuyên được thực hiện bởi kịch bản tự động bằng văn bản để sói Internet trong một nỗ lực để khai thác các vấn đề an ninh trang web được biết đến trong phần mềm. Dưới đây là top 10 lời khuyên của chúng tôi để giúp giữ cho bạn và trang web an toàn trực tuyến của bạn:

01. Giữ phần mềm cập nhật

Nó có vẻ hiển nhiên, nhưng đảm bảo bạn giữ tất cả các phần mềm được cập nhật là rất quan trọng trong việc giữ cho trang web của bạn an toàn. Điều này áp dụng cho cả hệ điều hành máy chủ và bất kỳ phần mềm bạn có thể chạy trên trang web của bạn như một CMS hoặc diễn đàn. Khi lỗ hổng bảo mật trang web được tìm thấy trong phần mềm, tin tặc đã nhanh chóng cố gắng để lạm dụng chúng.
Nếu bạn đang sử dụng một giải pháp quản lý lưu trữ sau đó bạn không cần phải lo lắng quá nhiều về việc áp dụng bản cập nhật bảo mật cho hệ điều hành là công ty lưu trữ nên chăm sóc này.
Nếu bạn đang sử dụng phần mềm của bên thứ ba trên trang web của bạn như một CMS hoặc diễn đàn, bạn nên đảm bảo bạn nhanh chóng áp dụng các bản vá lỗi bảo mật. Hầu hết các nhà cung cấp có một danh sách gửi thư hoặc nguồn cấp dữ liệu RSS chi tiết bất kỳ vấn đề bảo mật trang web. WordPress, Umbraco và nhiều CMS khác thông báo cho bạn cập nhật hệ thống có sẵn khi bạn đăng nhập

02. SQL injection

Các cuộc tấn công SQL injection là khi kẻ tấn công sử dụng một trường mẫu web hoặc URL tham số để truy cập vào cơ sở dữ liệu hoặc thao tác của bạn. Khi bạn sử dụng tiêu chuẩn Transact SQL nó rất dễ dàng để vô tình chèn mã giả mạo vào truy vấn của bạn có thể được sử dụng để thay đổi bảng biểu, nhận được thông tin và xóa dữ liệu. Bạn có thể dễ dàng ngăn chặn điều này bằng cách luôn luôn sử dụng các truy vấn parameterised, hầu hết các ngôn ngữ web có tính năng này và nó rất dễ dàng để thực hiện.
Xem xét truy vấn này:
"SELECT * FROM bảng WHERE cột = '" + tham số + ";"

Nếu kẻ tấn công thay đổi các thông số URL để vượt qua trong 'hoặc '1' = '1 này sẽ gây ra các truy vấn để như thế này:
"SELECT * FROM bảng WHERE cột ='' OR '1 '= '1';"

Kể từ '1 'bằng '1' này sẽ cho phép kẻ tấn công để thêm một truy vấn bổ sung để kết thúc câu lệnh SQL cũng sẽ được thực hiện.

03. XSS

Kịch bản chéo trang web là khi một kẻ tấn công cố gắng để vượt qua trong JavaScript hoặc mã kịch bản khác thành một hình thức web để cố gắng để chạy mã độc hại cho khách truy cập của trang web của bạn. Khi tạo ra một hình thức luôn luôn đảm bảo bạn kiểm tra các dữ liệu được gửi và mã hóa hoặc loại bỏ bất kỳ HTML.

04. Thông báo lỗi

Hãy cẩn thận với bao nhiêu thông tin bạn cho đi các thông báo lỗi của bạn. Ví dụ, nếu bạn có một hình thức đăng nhập trên trang web của bạn, bạn nên suy nghĩ về ngôn ngữ bạn sử dụng để giao tiếp thất bại khi cố gắng đăng nhập. Bạn nên sử dụng tin nhắn chung chung như "Tên truy nhập không chính xác hoặc mật khẩu" như không xác định khi người dùng có một nửa số truy vấn bên phải. Nếu kẻ tấn công cố gắng một cuộc tấn công sức mạnh vũ phu để có được một tên người dùng và mật khẩu và các thông báo lỗi cho đi khi một trong những lĩnh vực là chính xác sau đó kẻ tấn công biết ông là một trong những lĩnh vực và có thể tập trung vào các lĩnh vực khác.

Giữ các thông báo lỗi của bạn mơ hồ

05. Phía máy chủ xác nhận xác nhận / form

Xác nhận nên luôn luôn được thực hiện cả trên các trình duyệt và phía máy chủ. Trình duyệt có thể bắt lỗi đơn giản như bắt buộc mà là trống rỗng và khi bạn nhập văn bản vào một số lĩnh vực chỉ. Những tuy nhiên có thể được bỏ qua, và bạn nên chắc chắn rằng bạn kiểm tra các xác nhận và sâu hơn phía máy chủ xác nhận là không làm như vậy có thể dẫn đến mã hoặc kịch bản mã độc được chèn vào cơ sở dữ liệu hoặc có thể gây ra kết quả không mong muốn trong trang web của bạn.

06. Mật khẩu

Mọi người đều biết họ nên sử dụng mật khẩu phức tạp, nhưng điều đó không có nghĩa là họ luôn luôn làm. Nó là rất quan trọng để sử dụng mật khẩu mạnh để máy chủ của bạn và khu vực quản trị trang web, nhưng không kém quan trọng cần nhấn mạnh vào việc đặt mật khẩu tốt cho người dùng của bạn để bảo vệ sự an toàn của tài khoản của họ.
Nhiều như người dùng có thể không thích nó, thực thi các yêu cầu mật khẩu như tối thiểu là khoảng tám ký tự, bao gồm một ký tự hoa và số lượng sẽ giúp bảo vệ thông tin của họ trong thời gian dài.
Mật khẩu nên luôn luôn được lưu trữ như các giá trị được mã hóa, tốt nhất là sử dụng một thuật toán băm một cách như SHA.Sử dụng phương pháp này có nghĩa là khi bạn đang chứng thực người dùng bạn chỉ bao giờ so sánh giá trị được mã hóa. Cho thêm trang web bảo mật đó là một ý tưởng tốt để muối mật khẩu, sử dụng muối mới mỗi mật khẩu.
Trong trường hợp một người nào đó hack và ăn cắp mật khẩu của bạn bằng cách sử dụng mật khẩu băm có thể giúp hạn chế thiệt hại, như giải mã họ là không thể. Một người nào đó tốt nhất có thể làm là một cuộc tấn công từ điển hoặc brute lực lượng tấn công, chủ yếu đoán mọi sự kết hợp cho đến khi nó tìm thấy một trận đấu. Khi sử dụng mật khẩu muối quá trình nứt một số lượng lớn các mật khẩu thậm chí còn chậm hơn như mọi dự đoán đã được băm riêng cho mỗi muối + mật khẩu đó là tính toán rất tốn kém.
Rất may, nhiều CMS cung cấp quản lý người dùng ra khỏi hộp với rất nhiều những tính năng bảo mật trang web được xây dựng trong, mặc dù một số cấu hình hoặc mô-đun thêm có thể được yêu cầu sử dụng mật khẩu muối (trước Drupal 7) hoặc để thiết lập sức mạnh mật khẩu tối thiểu. Nếu bạn đang sử dụng NET. Sau đó nó có giá trị sử dụng các nhà cung cấp thành viên vì họ là rất cấu hình, cung cấp sẵn có trang web bảo mật và bao gồm điều khiển readymade để đăng nhập và thiết lập lại mật khẩu.

07. Tập tin cập nhật

Cho phép người dùng tải tập tin lên trang web của bạn có thể là một nguy cơ bảo mật trang web lớn, ngay cả khi nó chỉ đơn giản là thay đổi avatar của họ. Nguy cơ là bất kỳ tập tin tải lên tuy nhiên vô tội nó có thể nhìn, có thể chứa một kịch bản mà khi thực hiện trên máy chủ của bạn hoàn toàn mở ra trang web của bạn.
Nếu bạn có một hình thức tập tin tải lên thì bạn cần phải xử lý tất cả các tập tin nghi ngờ lớn. Nếu bạn đang cho phép người dùng tải lên hình ảnh, bạn không thể dựa vào phần mở rộng tập tin hoặc các loại kịch câm để xác minh rằng tập tin là một hình ảnh như những có thể dễ dàng được làm giả. Thậm chí mở các tập tin và đọc các tiêu đề, hoặc sử dụng các chức năng để kiểm tra kích thước hình ảnh không phải là bằng chứng đầy đủ. Hầu hết các định dạng hình ảnh cho phép lưu trữ một phần bình luận mà có thể chứa mã PHP có thể được thực hiện bởi các máy chủ.
Vì vậy, những gì bạn có thể làm để ngăn chặn điều này? Cuối cùng bạn muốn ngăn chặn người dùng từ việc có thể thực hiện bất kỳ tập tin mà họ tải lên. Bởi các máy chủ web mặc định sẽ không cố gắng để thực hiện các tập tin với phần mở rộng hình ảnh, nhưng nó không được khuyến khích để chỉ dựa vào kiểm tra phần mở rộng tập tin như là một tập tin với tên image.jpg.php đã được biết đến để có được thông qua.
Một số tùy chọn để đổi tên các tập tin tải lên trên để đảm bảo các tập tin mở rộng chính xác, hoặc để thay đổi quyền truy cập tập tin, ví dụ, chmod 0666 do đó, nó không thể được thực hiện. Nếu sử dụng * nix bạn có thể tạo một tập tin. Htaccess (xem bên dưới) sẽ chỉ cho phép truy cập vào các tập tin thiết lập ngăn chặn các cuộc tấn công mở rộng gấp đôi đề cập trước đó.
    từ chối từ tất cả
    <Files ~ "^\w+\.(gif|jpe?g|png)$">
    Để từ chối, cho phép
    cho phép tất cả các từ
    </ Tập tin>

Cuối cùng, giải pháp được đề nghị là để ngăn chặn truy cập trực tiếp các tập tin tải lên tất cả với nhau. Bằng cách này, bất kỳ tập tin được tải lên trang web của bạn được lưu trữ trong một thư mục bên ngoài của webroot hoặc trong cơ sở dữ liệu như là một blob.Nếu file của bạn không truy cập trực tiếp bạn sẽ cần phải tạo ra một kịch bản để lấy các tập tin từ một thư mục riêng (hoặc xử lý HTTP trong NET.) Và cung cấp cho họ để trình duyệt. Thẻ hình ảnh hỗ trợ một thuộc tính src đó không phải là một địa chỉ trực tiếp đến một hình ảnh, do đó thuộc tính src của bạn có thể trỏ đến kịch bản phân phối tập tin của bạn cung cấp cho bạn thiết lập kiểu nội dung chính xác trong tiêu đề HTTP. Ví dụ:
  1. < img src = "/ imageDelivery.php? id = 1234" / >
  2.      
  3. <? Php
  4.      / / imageDelivery.php
  5.    
  6.      / / Lấy hình ảnh tên tập tin từ cơ sở dữ liệu dựa trên $ _GET [ "id" ]
  7.      ...
  8.    
  9.      / / Cung cấp hình ảnh cho trình duyệt
  10.       Tiêu đề ( 'Content-Type: image / gif' ) ;
  11.      readfile ( 'hình ảnh /' $ tên tập tin. ) ;  
  12.    
  13. >
Hầu hết các nhà cung cấp lưu trữ đối phó với các cấu hình máy chủ cho bạn, nhưng nếu bạn đang lưu trữ trang web của bạn trên máy chủ của riêng bạn sau đó có vài điều bạn sẽ muốn kiểm tra.
Đảm bảo bạn có một thiết lập tường lửa, và chặn tất cả các cổng không cần thiết. Nếu có thể thiết lập một DMZ (Demilitarised Zone) chỉ cho phép truy cập đến cổng 80 và 443 từ thế giới bên ngoài. Mặc dù điều này có thể không được có thể nếu bạn không có quyền truy cập vào máy chủ của bạn từ một mạng nội bộ như bạn sẽ cần phải mở cổng để cho phép tải lên tập tin và truy cập từ xa vào máy chủ của bạn thông qua SSH hoặc RDP.
Nếu bạn đang cho phép các tập tin được tải lên từ Internet chỉ sử dụng phương pháp vận chuyển an toàn đến máy chủ của bạn như SFTP hoặc SSH.
Nếu có thể có cơ sở dữ liệu của bạn đang chạy trên một máy chủ khác với máy chủ web của bạn. Điều này có nghĩa các máy chủ cơ sở dữ liệu không thể được truy cập trực tiếp từ thế giới bên ngoài, chỉ có máy chủ web của bạn có thể truy cập, giảm thiểu nguy cơ dữ liệu của bạn được tiếp xúc.
Cuối cùng, đừng quên về hạn chế truy cập vật lý đến máy chủ của bạn.

09.SSL

SSL là một giao thức được sử dụng để cung cấp bảo mật trên Internet. Nó là một ý tưởng tốt để sử dụng một chứng chỉ bảo mật bất cứ khi nào bạn đang đi qua thông tin cá nhân giữa các trang web và máy chủ web hoặc cơ sở dữ liệu. Kẻ tấn công có thể đánh hơi những thông tin này và nếu các phương tiện truyền thông không phải là an toàn có thể nắm bắt và sử dụng thông tin này để truy cập vào tài khoản người dùng và dữ liệu cá nhân.

Sử dụng một chứng chỉ SSL

10. Công cụ bảo mật website

Một khi bạn nghĩ rằng bạn đã làm tất cả mà có thể sau đó nó là thời gian để kiểm tra an ninh trang web của bạn. Cách hiệu quả nhất để làm điều này là thông qua việc sử dụng một số công cụ bảo mật website, thường được gọi là thử nghiệm thâm nhập hoặc bút thử nghiệm cho ngắn.
Có rất nhiều sản phẩm thương mại và miễn phí để hỗ trợ bạn với điều này. Họ làm việc trên cơ sở tương tự như kịch bản các tin tặc sẽ sử dụng trong đó họ thử nghiệm đều biết khai thác và cố gắng để thỏa hiệp trang web của bạn bằng cách sử dụng một số phương pháp đã đề cập trước đó như SQL injection.
Một số công cụ miễn phí có giá trị xem xét:
  • Netsparker (phiên bản cộng đồng miễn phí và phiên bản dùng thử có sẵn). Tốt để thử nghiệm SQL injection và XSS
  • OpenVAS . Tuyên bố là máy quét an ninh nguồn mở tiên tiến nhất. Tốt để thử nghiệm lỗ hổng đã biết, hiện quét hơn 25.000.Nhưng nó có thể được khó khăn để thiết lập và yêu cầu một máy chủ OpenVAS phải được cài đặt mà chỉ chạy trên * nix. OpenVAS là ngã ba của một Nessus trước khi nó trở thành một sản phẩm thương mại mã nguồn đóng.
Kết quả từ kiểm tra tự động có thể được khó khăn, như họ thể hiện một sự giàu có của các vấn đề tiềm năng. Điều quan trọng là tập trung vào các vấn đề quan trọng đầu tiên. Từng vấn đề báo cáo thường đi kèm với một lời giải thích tốt các lỗ hổng tiềm năng. Có thể bạn sẽ thấy rằng một số trong những vấn đề trung bình / thấp không phải là một mối quan tâm cho trang web của bạn.
Nếu bạn muốn để có những điều một bước xa hơn sau đó có một số bước bạn có thể làm thêm để tự cố gắng để thỏa hiệp trang web của bạn bằng cách thay đổi các giá trị POST / GET. Một proxy gỡ lỗi có thể giúp bạn ở đây vì nó cho phép bạn để đánh chặn các giá trị của một yêu cầu HTTP giữa các trình duyệt của bạn và máy chủ. Một ứng dụng phần mềm miễn phí phổ biến được gọi làFiddler là một điểm khởi đầu tốt.
Vì vậy, những gì bạn cần phải cố gắng để thay đổi theo yêu cầu?Nếu bạn có các trang mà chỉ nên được hiển thị cho một người dùng đăng nhập sau đó tôi sẽ cố gắng thay đổi các thông số URL như id người dùng, hoặc các giá trị cookie trong một nỗ lực để xem chi tiết của người dùng khác. Một lĩnh vực khác có giá trị thử nghiệm là hình thức, thay đổi các giá trị POST để cố gắng để gửi mã để thực hiện XSS hoặc tải lên một kịch bản phía máy chủ.

Sử dụng một proxy gỡ lỗi để nhổ tận gốc lỗ hổng

Hy vọng rằng những lời khuyên này sẽ giúp giữ cho trang web và thông tin an toàn của bạn. May mắn nhất CMS có rất nhiều tính năng bảo mật trang web sẵn có, nhưng nó là một vẫn còn là một ý tưởng tốt để có kiến ​​thức về khai thác bảo mật phổ biến nhất để bạn có thể đảm bảo bạn được bảo hiểm.
Ngoài ra còn có một số module hữu ích cho CMS để kiểm tra cài đặt của bạn cho các lỗi bảo mật phổ biến như An ninh cho Drupal và WP Security Scan cho WordPress.
Từ : Ruald Gerber và Toby Compton
Chia sẻ bài viết ^^
Other post

All comments [ 0 ]


Your comments