Làm cách nào để chặn khách hàng theo địa chỉ IP truy cập một số URL nhất định trên máy chủ web của tôi?


9

Làm cách nào tôi có thể chặn vĩnh viễn bất kỳ ipaddress nào truy cập các trang dễ bị tổn thương như /phpMyadmin/? Tôi đang chạy một máy chủ Debian và tôi thường thấy các bot hoặc tin tặc quét máy chủ của tôi đang cố gắng tìm các lỗ hổng.

73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpMyadmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpMyAdmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyAdmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin2/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin3/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin4/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"

Tôi đã theo dõi câu hỏi stackoverflow này rồi: Làm thế nào để bảo mật phpMyAdmin .

Tôi đang tìm cách bắt đầu chặn các bot lấy băng thông.


4
Điều này sẽ dọn sạch các tệp nhật ký của bạn, nhưng sẽ không giúp bảo mật gì cả. Luôn luôn cập nhật cho bạn phpmyadmin hoặc chỉ truy cập nó từ localhost (và chặn tất cả lưu lượng truy cập khác). Để truy cập máy chủ từ xa, đường hầm cổng thông qua ssh.
Stefan M

Tôi nghĩ nó sẽ giúp bảo mật vì nó sẽ chặn các địa chỉ IP độc hại, những người cố gắng truy cập trang web đó.
Whitecat

@Whitecat 404có nghĩa là mã HTTP Page not found. Làm thế nào để bạn cảm thấy rằng các IP này đang vi phạm IP? Dựa trên đầu ra nào bạn quyết định chặn các IP này?
Valentin Bajrami

Tôi muốn chặn ip dựa trên thực tế là họ sẽ truy cập phpMyAdmin. Tôi đã bảo mật trang web của mình và tôi biết bất kỳ ai truy cập trang đó đều độc hại.
Whitecat

1
Tại sao bạn không tạo.htpasswd
nicoX

Câu trả lời:


18

Điều này có thể nặng hơn bạn đang tìm kiếm, nhưng bạn có thể cân nhắc sử dụng fail2ban ( https://www.fail2ban.org ). Đó là một công cụ có thể giám sát các tệp nhật ký của bạn và tự động cấm các địa chỉ tạo nhật ký khớp với một tập các mẫu có thể tùy chỉnh.


5
Đây là vấn đề chính xác fail2banđược thiết kế để giải quyết. Nó hơi nặng nhưng một lần nữa, tiêu chí mong muốn là khá năng động. Tất cả mọi thứ được coi fail2banlà có trọng lượng nhẹ như bạn sẽ cố gắng giải quyết loại vấn đề này bằng một công cụ tiêu chuẩn.
Bratchley

1
Vâng, tôi cho rằng bạn có thể viết một cgi nhị phân gốc suid, lưu trữ nó dưới dạng / phpmyadmin, có thêm quy tắc tường lửa của người gọi nó.
Joshua

7

Đừng. Tốt nhất bạn sẽ không đạt được gì ngoài việc làm cho nhật ký của bạn bớt lộn xộn hơn; tệ nhất là cuối cùng bạn sẽ chặn những khách truy cập hợp pháp , những người tình cờ nhận được (thông qua DHCP) một địa chỉ IP từng thuộc về ai đó có PC bị nhiễm như một nút botnet.

Vấn đề thực sự ở đây là sự lộn xộn của nhật ký và nó có thể được giải quyết chỉ bằng cách định cấu hình ghi nhật ký của bạn để loại bỏ các yêu cầu được biết là quét thông thường cho các trang web của bạn không, và sẽ không, vì bạn không sử dụng lỗ hổng các khung họ đang quét. Nếu bạn lo lắng về việc mất đăng nhập hoàn toàn (có lẽ họ cung cấp bằng chứng cho thấy ai chịu trách nhiệm cho một cuộc tấn công khác hoặc khi một cuộc tấn công bắt đầu, v.v.) thì chỉ cần điều chỉnh nhiều mục nhật ký cho các URL rác từ một IP nhất định trong một khoảng thời gian ngắn nên làm việc tốt hơn


6
fail2bancác lệnh cấm là tạm thời - Các lần truy cập X của một lần đăng nhập xấu trong vòng Y giây, lệnh cấm phút Z, với XY và Z có thể định cấu hình.
Shadur

2
trong 0,1% cơ hội điều này xảy ra, người dùng hợp pháp đối với trường hợp này của phpmyadmin sẽ có thể chỉ cần nhắn tin cho OP để được bỏ chặn. Ngoài ra, fail2ban có thể tắt một cuộc tấn công quét trước khi nó xảy ra để đánh vào lỗ hổng chưa được vá hoặc không có ngày trên máy chủ của bạn.
Segfault

1
@Segfault: Có lẽ không có người dùng hợp pháp nào /phymyadmin//phymyadmin/không tồn tại trên máy chủ (xem: 404). Thay vào đó, người dùng hợp pháp trong câu hỏi là bất kỳ người dùng nào của trang web sẽ bị chặn bằng cách tường lửa cho họ.
R .. GitHub DỪNG GIÚP ICE

1
"Tốt nhất" thực sự bao gồm các bài kiểm tra tiếp theo bị chặn bao gồm các bài kiểm tra có thể đã thực sự thành công. Chơi xung quanh với nội dung nhật ký cũng có vẻ là một cách hay để mất thông tin khi bạn nhận ra mình đã mắc một số lỗi trong bộ lọc. Nếu bạn lo lắng về sự lộn xộn của nhật ký thì bạn cần một nền tảng phân tích như ELK để sàng lọc tất cả những thứ bạn quan tâm.
Bratchley

2
Vấn đề khác, có liên quan, là việc sử dụng CGN ngày càng tăng. Một ISP có thể có hàng trăm khách hàng chia sẻ một địa chỉ IP duy nhất, khiến việc chặn IP trở nên nguy hiểm nhất, thậm chí là tạm thời. Bạn có thể có một người dùng hợp pháp và quét tích cực từ cùng một địa chỉ cùng một lúc.
Bob

3

tìm phpMyAdmin.conf trong một trong các thư mục cấu hình httpd và thêm phần deny 73.199.136.112allow / deny của tệp cấu hình và yêu cầu IP trong phần 2.4. Tôi đã đặt một ví dụ về tệp cấu hình đầy đủ bên dưới nơi tôi có các mục nhập ngược lại, tôi chặn mọi thứ trừ các phân đoạn IP được phép truy cập công cụ.

[thebtm@server conf.d]# cat /etc/httpd/conf.d/phpMyAdmin.conf
# phpMyAdmin - Web based MySQL browser written in php
# 
# Allows only localhost by default
#
# But allowing phpMyAdmin to anyone other than localhost should be considered
# dangerous unless properly secured by SSL

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require ip 10.10.26
       Require ip 192.168.56
       Require ip 127.0.0.1       
       Require ip ::1
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 10.10.25
     Allow from 192.168.56
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

<Directory /usr/share/phpMyAdmin/setup/>
   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require ip 127.0.0.1
       Require ip ::1
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

# These directories do not require access over HTTP - taken from the original
# phpMyAdmin upstream tarball
#
<Directory /usr/share/phpMyAdmin/libraries/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

<Directory /usr/share/phpMyAdmin/setup/lib/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

<Directory /usr/share/phpMyAdmin/setup/frames/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

# This configuration prevents mod_security at phpMyAdmin directories from
# filtering SQL etc.  This may break your mod_security implementation.
#
#<IfModule mod_security.c>
#    <Directory /usr/share/phpMyAdmin/>
#        SecRuleInheritance Off
#    </Directory>
#</IfModule>

Điều này thật tuyệt. Nhưng vấn đề là có các bot liên tục từ nhiều ip khác nhau. Tôi không thể theo kịp với mọi IP khác nhau khi tôi nhận được từ 20-30 ips độc hại mỗi ngày.
Whitecat

2
Đó là lý do tại sao tôi chỉ ra điều ngược lại nơi bạn cho phép các phân đoạn bạn muốn có quyền truy cập và tự động chặn phần còn lại.
thebtm

Alias /phpmyadmin /usr/share/phpMyAdmind /phpmyadminnên được thay đổi thành một cái gì đó cho mục đích bảo mật. Alias /secret /usr/share/phpMyAdmind
nicoX

Tôi đã sửa đổi tệp cấu hình mặc định đi kèm với công cụ khi bạn cài đặt nó và tạo một số địa chỉ IP ngẫu nhiên.
thebtm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.