Cấm truy cập danh mục file và thư mục trên web server

Cấm truy cập danh mục file và thư mục trên web server

Thời gian vừa qua, DVMS đã phát hiện ra rất nhiều website bị lỗi hiển thị danh mục file, cây thư mục trên web (web server hoặc hosting). Trong đó có rất nhiều file thuộc dạng lưu hành nội bộ hoặc file chứa thông tin mật như thông tin tài chính, giá gốc, chương trình chưa phát hành, thông tin file cấu hình website,...

Ngoài ra cấu hình sai hoặc cấu hình mặc định trên các máy chủ web có thể dẫn đến một số vấn đề có thể hỗ trợ các tin tặc độc hại tạo ra một cuộc tấn công hack. Một vấn đề phổ biến của máy chủ web. DVMS cũng đã gửi email cảnh báo tới admin của khá nhiều website về vấn đề này.

Bài viết này hướng dẫn các bạn thay đổi cấu hình mặc định và ẩn đi danh sách file, cây thư mục của web :


How to Disable Directory Listing on Your Web Server
Danh sách thư mục là gì?

Danh sách thư mục là một tính năng cho phép các máy chủ web liệt kê nội dung của thư mục khi không có tệp chỉ mục. Do đó, nếu một yêu cầu được gửi tới một thư mục được bật danh sách thư mục và không có tệp chỉ mục nào như index.php hoặc index.asp, máy chủ web sẽ gửi danh sách thư mục dưới dạng phản hồi như hình dưới

 When directory listing is enabled, the content of the directory can be seen via the browser.
Như bạn có thể thấy từ hình trên, tính năng liệt kê thư mục tạo ra một đầu ra tương tự như lệnh 'dir' hoặc 'ls' được chạy trên một hệ điều hành.
Thông tin nào bị rò rỉ & Rủi ro của danh sách thư mục là gì?

Hãy để Giả sử rằng một bản sao lưu của tệp config.php, trong đó chứa thông tin đăng nhập kết nối cơ sở dữ liệu, nằm trong thư mục bí mật, có bật danh sách thư mục.

Nếu kẻ tấn công tìm thấy thư mục bí mật bằng cách thu thập dữ liệu, và anh ta cố gắng truy cập trực tiếp vào nó, ví dụ: http://www.example.com/secret/ anh ta có thể xem và tải xuống các tệp sao lưu, chứa các chi tiết kết nối cơ sở dữ liệu. Giờ đây, kẻ tấn công đã có các chi tiết kết nối với cơ sở dữ liệu của ứng dụng web, cho phép anh ta có thể truy cập trực tiếp vào cơ sở dữ liệu hoặc ứng dụng web nhờ những thông tin đăng nhập này.

Làm thế nào để vô hiệu hóa danh sách thư mục?

Tất cả các web server hiện nay đều hỗ trợ ẩn danh mục đi, nếu bạn đang dùng hosting thì bạn cần liên hệ với đơn vị cung cấp dịch vụ và yêu cầu họ ẩn danh mục đi. Trường hợp bạn là người quản trị web server thì  bạn nên kiểm tra và tiến hành ẩn danh mục đi. Bạn có thể vô hiệu hóa danh sách thư mục bằng cách tạo một tệp chỉ mục trống trong thư mục có liên quan ví dụ như index.html với nội dung rỗng. Mặc dù trong nhiều trường hợp, đây không phải là giải pháp tốt nhất vì các tệp như vậy thường bị bỏ qua, ví dụ như khi bạn thay đổi công nghệ ứng dụng web từ ngôn ngữ asp sang PHP chẳng hạn hoặc khi các thư mục mới được thêm vào bạn dẽ dễ quên không thực hiện việc trên.

Vì vậy, bạn nên thực hiện một giải pháp vĩnh viễn và an toàn bằng cách vô hiệu hóa danh sách thư mục ở cấp máy chủ web, như hướng dẫn trong bài viết này.

Vô hiệu hóa danh sách thư mục cho một số máy chủ web

Ẩn danh mục file và cây thư mục trên Tomcat server

Danh sách thư mục trong Tomcat 5.0 bị tắt theo mặc định. Tuy nhiên, có thể tắt danh sách thư mục nếu nó được bật do hồi quy hoặc thay đổi cấu hình. Chúng tôi có thể định cấu hình danh sách thư mục theo hai chiều khác nhau: Cái thứ nhất sẽ ảnh hưởng đến tất cả các dự án web có trên server và cái thứ hai sẽ chỉ ảnh hưởng đến một trang web được chỉ định.

Vô hiệu hóa danh sách thư mục trong tất cả các dự án web trên web server Tomcat

Để tắt danh sách thư mục trên máy chủ web Tomcat, hãy mở tệp conf/web.xml trong thư mục nơi Tomcat được cài đặt. Trong thử nghiệm của chúng tôi trên Windows 10, thư mục cài đặt mặc định là “C:\Program Files (x86)\Apache Software Foundation\Tomcat 9.0”
<servlet>
     <servlet-name>default</servlet-name>
     <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
     <init-param>
          <param-name>debug</param-name>
          <param-value>0</param-value>
     </init-param>
     <init-param>
          <param-name>listings</param-name>
          <param-value>false</param-value>
     </init-param>
     <load-on-startup>1</load-on-startup>
</servlet>
Bạn tìm phần liệt kê trong  <param-name> giá trị trong thẻ <init-param>. Chú ý thẻ <param-value> nếu đang là true thì bạn cần đổi thành false.
Bạn có thể copy đoạn code phía dưới để thay vào cấu hình của bạn:
<servlet>
      <servlet-name>default</servlet-name>
      <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
      <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
</servlet>
Vô hiệu hóa danh sách thư mục trong một dự án web trên server Tomcat cho từng web riêng

Trong phương pháp đầu tiên, chúng tôi đã cấu hình một cài đặt chung áp dụng cho tất cả các dự án web đang chạy trên máy chủ. Trong phương pháp này, chúng tôi sẽ cấu hình nó để nó chỉ ảnh hưởng đến trang web chúng tôi đã thay đổi. Mở tệp web.xml cho dự án web có liên quan và thêm mã sau đây:

<servlet>
    <servlet-name>DefaultServletOverride</servlet-name>
      <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    <init-param>
        <param-name>debug</param-name>
        <param-value>0</param-value>
    </init-param>
    <init-param>
        <param-name>listings</param-name>
        <param-value>false</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>DefaultServletOverride</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping><servlet>
    <servlet-name>DefaultServletOverride</servlet-name>
      <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    <init-param>
        <param-name>debug</param-name>
        <param-value>0</param-value>
    </init-param>
    <init-param>
        <param-name>listings</param-name>
        <param-value>false</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>DefaultServletOverride</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
Servlet default đã bị ghi đè với thay đổi ở trên. Bây giờ, trang web chúng tôi đã thực hiện thay đổi này sẽ chạy độc lập với cài đặt chúng tôi đã định cấu hình trong phương thức đầu tiên.

Ẩn danh mục file và cây thư mục trên Nginx Server

Tính năng liệt kê thư mục trên Nginx được điều khiển bởi ngx_http_index_module. Danh sách thư mục bị tắt theo mặc định trên tệp cấu hình Nginx. Tuy nhiên, có thể tắt danh sách thư mục nếu nó được bật do hồi quy hoặc thay đổi cấu hình.
Tham số autoindex được sử dụng cùng với phân đoạn vị trí để bật hoặc tắt tính năng liệt kê thư mục.

Làm thế nào chúng ta có thể vô hiệu hóa xem danh sách thư mục trên Nginx với toàn bộ web server?

Tệp cấu hình mặc định của máy chủ Nginx được gọi là nginx.conf và có thể được tìm thấy tùy vào hệ điều hành bạn đang sử dụng, bạn tìm tại 1 trong các đường dẫn sau:  /usr/local/nginx/conf, /etc/nginx hoặc /usr/local/etc/nginx. Nếu giá trị mặc định đã được thay đổi, bạn có thể thấy một cài đặt tương tự như sau:
server {
        listen   80;
        server_name  domain.com www.domain.com;
        access_log  /var/...........................;
        root   /path/to/root;
        location / {
                index  index.php index.html index.htm;
        }
        location /somedir {
               autoindex on;
        }
}
Trong phần này, tham số xác định là autoindex on; như chúng tôi đã đề cập ở trên. Trong ví dụ trên, danh sách thư mục chỉ được cấu hình cho thư mục somedir. Nếu không có thư mục nào được chỉ định (ví dụ: location / {autoindex on;}), quy tắc sẽ được áp dụng cho tất cả các thư mục. Để vô hiệu hóa danh sách thư mục, chúng ta cần chuyển giá trị của autoindex off; Đừng quên chạy lệnh dưới đây để các thay đổi có hiệu lực:
service nginx restart

Làm thế nào chúng ta có thể vô hiệu hóa xem danh sách thư mục trên Nginx với một website được chỉ định?
Khi dùng Nginx server dùng để chạy đồng thời nhiều website trên cùng 1 server thì bạn có thể chỉ định, chỉ vô hiệu danh mục thực mục trên một website cụ thể và các website còn lại không bị ảnh hưởng. Trường hợp này thì bạn cần biết tập tin cấu hình tên miền đó đang lưu ở đâu, thường thì vẫn lưu cùng thư mục với tập tin nginx.conf  hoặc một thư mục con trong cùng thư mục đó và tên file thường giống với tên miền của website (ví dụ DVMS.COM.VN.conf)
Bạn cũng mở tập tin đó lên và làm tương tự như trường hợp trên.

Ẩn danh mục file và cây thư mục trên LiteSpeed Server

Tương tự như tất cả các máy chủ web khác mà chúng tôi đã đề cập cho đến nay, trên máy chủ web LiteSpeed, bạn có thể tắt danh sách thư mục ở cả cấp độ máy chủ web và trang web. Để tắt danh sách thư mục ở cấp máy chủ, bạn có thể cập nhật thủ công tệp httpd_config.xml. Mặt khác, bạn cũng có thể làm điều đó bằng cách sử dụng bảng điều khiển máy chủ LiteSpeed.
httpd_config.xml file:
 The configuration XML file of the LiteSpeed web server.
Như bạn có thể thấy từ ví dụ mã trong ảnh chụp màn hình ở trên, nếu bạn muốn tắt danh sách thư mục ở cấp máy chủ, hãy thêm dòng sau vào tệp httpd_config.xml:
<autoIndex>0</autoIndex>
Để tắt hiển thị danh mục cho từng web đơn lẻ:
Nếu bạn muốn bật hoặc tắt danh sách thư mục ở cấp trang web, bạn cần theo đường dẫn /VIRTUAL_HOST_ADI/conf/vhconf.xml và tạo các định nghĩa có liên quan cho tệp bạn truy cập.

Ẩn danh mục file và cây thư mục trên Lighttpd Server

Danh sách thư mục bị tắt theo mặc định trên máy chủ web Lighttpd. Tuy nhiên, có thể vô hiệu hóa danh sách thư mục từ tệp dirlisting.conf nếu nó được bật do hồi quy hoặc thay đổi cấu hình. Tệp cấu hình của mod_dirl Hiện tại là /etc/lighttpd/conf.d/dirlisting.conf.
The configuration file of the Lighttpd web server.

Để tắt danh sách thư mục trên máy chủ, bạn phải thay thế dòng dir-listing.activate bằng dòng sau:
dir-listing.activate = “disable”
Nếu bạn muốn bật danh sách thư mục cho một thư mục cụ thể, bạn phải thực hiện các thay đổi sau trong tệp cấu hình cụ thể cho thư mục đó:
$HTTP[“url”] =~ “^/download($|/)” {
dir-listing.activate = “enable”
}

Ẩn danh mục file và cây thư mục trên Microsoft IIS Server

Danh sách thư mục trên máy chủ web IIS bị tắt theo mặc định. Tuy nhiên, có thể tắt danh sách thư mục khỏi giao diện cấu hình của máy chủ web IIS nếu được bật do hồi quy hoặc thay đổi cấu hình.
Với IIS7 và mới hơn
Bạn có thể tắt danh sách thư mục khỏi cài đặt Duyệt thư mục trong IIS manager console.
You can disable Directory Listing on a Microsoft IIS web server from the Directory Browsing settings.
Hoặc nếu không, bạn có thể thực hiện lệnh sau trong dòng lệnh: appcmd set config /section:directoryBrowse /enabled:false

Ẩn danh mục file và cây thư mục trên Apache Web Server

Để tắt danh sách thư mục trên máy chủ web Apache, bạn cần thêm các dòng sau vào tệp httpd.conf hoặc thay thế các dòng hiện có bằng các dòng sau:
<Directory /{YOUR DIRECTORY}>
Options FollowSymLinks
</Directory>
Và bạn phải tạo tệp .htaccess trong thư mục web cần tắt và thêm vào đoạn code sau:

<IfModule autoindex>
    IndexIgnore *
</IfModule>

Cảm ơn bạn đã đọc bài và chúc bạn thực hiện thành công!
(DVMS)

Có thể bạn quan tâm:
Tặng mã nguồn mạng xã hội giống y Facebook

Mã nguồn website công ty phần mềm ERP

Tặng mã nguồn website gà thả vườn kèm theo dữ liệu thực

Mã nguồn trang share like, chia sẻ surf, trao đổi link...

Mã nguồn website dịch vụ tên miền, hosting, phần mềm kèm theo ...

Top phần mềm ERP mã nguồn mở miễn phí

Tặng mã nguồn và dữ liệu thật của forum nông nghiệp, nông sản ...

Tặng Mã nguồn website và forum từ thiện Thắp Sáng Ước Mơ kèm ...

Tặng Mã nguồn website thương mại điện tử lĩnh vực may mặc, Thêu ...

Các nền tảng công nghệ hỗ trợ cho khởi nghiệp tiết kiệm, hiệu quả,...

Mobility nền tảng điện toán di động, Công nghệ cho tương lai

Các giai đoạn ứng dụng nền tảng điện toán di động (mobility) trong ...

Share on Google Plus

About Mobile Solution

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
    Blogger Comment

0 comments:

Đăng nhận xét