iptables trên nút thoát tor


9

Tôi muốn chạy một bộ định tuyến Tor mở .

Chính sách thoát của tôi sẽ tương tự như ReducesExitPolicy .

Nhưng tôi cũng muốn làm cho mạng tor khó lạm dụng tài nguyên của tôi.

Các trường hợp tôi muốn ngăn khách hàng thực hiện thông qua Tor:

  • Võng một trang web với rất nhiều gói.
  • Netcansive toàn bộ khối IP

Các trường hợp tôi KHÔNG muốn ngăn khách hàng thực hiện thông qua Tor:

  • tải một vài tập tin hình ảnh lên đám mây
  • gieo một torrent

Câu hỏi của tôi là, điều này có thể được thực hiện ở tất cả, và làm thế nào?

Suy nghĩ đầu tiên của tôi là một số tường lửa (Linux / iptables hoặc * BSD / ipfw / pf) - nhưng điều này có thể sẽ vô dụng do các thuộc tính vốn có của bộ định tuyến Onion.

Có bất kỳ phát triển nhóm torproject liên tục về chủ đề này?

Tôi cũng yêu cầu gợi ý chung về việc bảo vệ các nút thoát Tor.

Cập nhật (tháng 9 năm 2012)

Từ những câu trả lời hữu ích và một số nghiên cứu khác tôi nghĩ rằng điều này không thể thực hiện được.

Cách tốt nhất bạn có thể làm để ngăn mọi người lạm dụng nút thoát để đóng góp trong DDOS, là phát hiện các gói rất thường xuyên được hướng đến một IP.

Ngưỡng "rất thường xuyên" phụ thuộc vào tổng băng thông nút ... Nếu sai, sẽ có kết quả dương tính giả, chặn lưu lượng truy cập hợp pháp của các ứng dụng TCP thời gian thực và lưu lượng truy cập có nguồn gốc từ rất nhiều máy khách đến một đích.

Cập nhật (tháng 12 năm 2014)

Dự đoán của tôi rõ ràng là đúng - tôi đã có một vài khiếu nại lạm dụng mạng từ nhà cung cấp internet của mình.

Để tránh tắt dịch vụ, tôi phải sử dụng bộ iptablesquy tắc sau ( ONEWlà một chuỗi cho các gói TCP SYN (còn gọi là MỚI):

Tôi không chắc nó sẽ đủ nhưng đây là:

-A ONEW -o lo -j ACCEPT
-A ONEW -p udp --dport 53 -m limit --limit 2/sec --limit-burst 5 -j ACCEPT
-A ONEW -m hashlimit --hashlimit-upto 1/second --hashlimit-mode dstip --hashlimit-dstmask 24 --hashlimit-name ONEW -j ACCEPT
-A ONEW -m limit --limit 1/sec -j LOG --log-prefix "REJECTED: "
-A ONEW -j REJECT --reject-with icmp-admin-prohibited

Câu trả lời:


2

Hãy ghi nhớ rằng:

  • Các máy khách Tor chuyển mạch ảo cứ sau 10 phút hoặc lâu hơn theo sự hiểu biết hiện tại của tôi. Điều này có nghĩa là IP nguồn đang thay đổi trong khoảng thời gian đó. Bạn không thể ngăn chặn bất kỳ hành vi nào bạn cho là độc hại lâu hơn thời gian đó.

  • Lưu ý rằng thực tế là Tor chỉ cung cấp lưu lượng TCP chứ không phải bất kỳ giao thức nào khác giới hạn khả năng lạm dụng khá nhiều.

iptablescó thể cho phép bạn xử lý các kết nối TCP gửi đi khác với các kết nối TCP hiện có. Bất cứ điều gì ESTABLISHED,RELATEDnên ACCEPTEDhoặc được đưa qua chuỗi "kết nối TCP hiện tại" và TCP đi mà không bị bắt bởi điều đó có thể bị giới hạn về tốc độ. Bất kỳ lưu lượng Tor gửi đi phải chịu điều này.

Tôi tin rằng giữa những điều trên và sử dụng "Chính sách thoát giảm" sẽ là điều tốt nhất bạn có thể làm.

Lý tưởng nhất là không chạy bất cứ thứ gì khác trên hộp Tor của bạn ngoại trừ:

  • Ít nhất bạn sẽ có SSH, đặt nó trên một cổng khác với 22.
  • Bạn có thể muốn chạy một máy chủ web đơn giản để hiển thị trang này . Một mini-httpdví dụ chroot'ed nên làm. Đừng sử dụng inetd.

Đừng chạy Tor trên một hộp đang được sử dụng cho bất cứ điều gì khác. Đảm bảo bạn đã đọc phần "Thoát Rơle" trong Câu hỏi thường gặp về pháp lý Tor và hiểu đầy đủ ý nghĩa của nó. Cũng đọc và làm tất cả những điều này .


1

Sẽ khó hơn bình thường để ngăn chặn các cuộc tấn công này vì IP nguồn không phải là hằng số. Tuy nhiên, theo hiểu biết của tôi, các tuyến đường trong tor chỉ được thay đổi cứ sau vài phút hoặc lâu hơn.

Vì vậy, bạn vẫn có thể triển khai một số quy tắc giới hạn / lọc tiêu chuẩn nhưng với ngưỡng cao hơn, vì bạn phải cho rằng có toàn bộ mạng phía sau IP nguồn của bạn.

Bạn có thể lọc:

  • gói quét vân tay / quét xấu hoặc điển hình (cờ TCP / IP xấu, XMAS, hầu hết các loại ICMP, v.v.)
  • Các gói INVALID không phù hợp với các kết nối liên tục hoặc mới (trạng thái -m)
  • Kết nối MỚI bắt đầu ở một số ngưỡng khá cao

Tuy nhiên, hãy lưu ý rằng những việc như vậy thường được thực hiện trên lưu lượng truy cập trong nước. Bạn không biết loại "khách hàng" nào sẽ chạy và bạn có thể hạn chế chúng theo những cách có thể gây phiền nhiễu / không rõ ràng.

Ngoài ra, đối với các gói MỚI (hoặc không trạng thái) giới hạn tỷ lệ, bạn có thể muốn xem xét một số lược đồ liên quan hơn trong đó các gói bị từ chối (không bao giờ DROP trừ khi các gói rõ ràng là một cuộc tấn công!) Được chọn ngẫu nhiên. Bằng cách này, một người dùng thông thường chỉ có thể thử tải lại và gặp may mắn, mặc dù tỷ lệ chung hiện đang ở giới hạn, trong khi máy quét cổng đồng thời sẽ không thể vượt qua giới hạn tốc độ của bạn.

Cũng hỏi về danh sách gửi thư Tor, có lẽ bạn không phải là người đầu tiên có những suy nghĩ như vậy: https://lists.torproject.org/cgi-bin/mailman/listinfo


1

Trước hết tôi sẽ không đề xuất iptables để giải quyết tất cả những điều này, thực sự là một nút Tor thoát lý tưởng sẽ tải lưu lượng cân bằng mặc dù một số đường hầm VPN để giữ cho ISP khỏi các gói và đích thực và / hoặc sử dụng proxy lưu trữ để tránh các yêu cầu lặp lại bên ngoài đến nội dung tĩnh phổ biến đến mức tối thiểu ... trong khi xem xét các tùy chọn đó là trợ giúp ban nhạc cho các vấn đề khiếu nại lạm dụng;

Nguồn thông tin sử dụng

http://www.ossramblings.com/USE_iptables_rate_limiting_to_prevent_portscans

http://blog.nintechnet.com/how-to-block-w00tw00t-at-isc-sans-dfind-and-other-web-vulnerability-scanners/

Kết hợp hai liên kết nguồn thành các quy tắc có thể được sử dụng để làm nản lòng các bot đang cố gắng sử dụng nút thoát Tor của bạn để quét cổng. Lưu ý điều này có thể khiến tin tặc sử dụng nút thoát của bạn rất không hài lòng vì các quy tắc này gây ra thời gian treo nmap.

#!/bin/bash
## Network interface used by Tor exit daemon
_tor_iface="eth1"
## Ports that Tor exit daemon binds to, maybe comma or space sepperated.
_tor_ports="9050,9051"
## Time to ban connections out in secconds, default equates to 10 minutes, same as default Tor cercut.
_ban_time="600"
## How long to monitor conections in seconds, default equates to 10 minutes.
_outgoing_tcp_update_seconds="600"
## How many new connections can be placed to a server in aloted update time limits. May nead to increes this depending on exit node usage and remote servers usages.
_outgoing_tcp_hitcount="8"
## How long to monitor connections for in minuets, default is 15 minutes but could be lessoned.
_outgoing_tcp_burst_minute="15"
## Hom many connections to accept untill un-matched
_outgoing_tcp_burst_limit="1000"

iptables -N out_temp_ban -m comment --comment "Make custom chain for tracking ban time limits" || exit 1
iptables -A out_temp_ban -m recent --set --name temp_tcp_ban -p TCP -j DROP -m comment --comment "Ban any TCP packet coming to this chain" || exit 1

iptables -N out_vuln_scan -m comment --comment "Make custom chain for mitigating port scans originating from ${_tor_iface}" || exit 1
for _tor_port in ${_tor_ports//,/ }; do
    iptables -A out_vuln_scan -p TCP -o ${_tor_iface} --sport ${_tor_port} -m recent --name temp_tcp_ban --update --seconds ${_ban_time} -j DROP -m comment --comment "Update ban time if IP address is found in temp_tcp_ban list" || exit 1
    iptables -A out_vuln_scan -p TCP -o ${_tor_iface} --sport ${_tor_port} -m state --state NEW -m recent --set -m comment --comment "Monitor number of new conncetions to ${_server_iface}" || exit 1
    iptables -A out_vuln_scan -p TCP -o ${_tor_iface} --sport ${_tor_port} -m state --state NEW -m recent --update --seconds 30 --hitcout 10 -j out_temp_ban -m comment --comment "Ban address when to many new connections are attempted on ${_tor_iface}" || exit 1
done
iptables -A out_vuln_scan -j RETURN -m comment --comment "Return un-matched packets for further processing" || exit 1

## Add rules to accept/allow outbound packets
iptables -N tor_out -m comment --comment "Make custom chain for allowing Tor exit node services" || exit 1
for _tor_port in ${_tor_ports//,/ }; do
    iptables -A tor_out -p TCP -o ${_tor_iface} --sport ${_tor_port} -m state --state NEW -m recent --set --name limit_${_tor_port} -m comment --comment "Track out-going tcp connections from port ${_tor_port}" || exit 1
    iptables -A tor_out -p TCP -o ${_tor_iface} --sport ${_tor_port} -m state --state NEW -m recent --update --seconds ${_outgoing_tcp_update_seconds:-60} --hitcount ${_outgoing_tcp_hitcount:-8} --rttl --name limit_${_tor_port} -j LOG --log-prefix "TCP flooding port ${_tor_port}" -m comment --comment "Log atempts to flood port ${_tor_port} from your server" || exit 1
    iptables -A tor_out -p TCP -o ${_tor_iface} --sport ${_tor_port} -m state --state NEW -m recent --update --seconds ${_outgoing_tcp_update_seconds:-60} --hitcount ${_outgoing_tcp_hitcount:-8} --rttl --name limit_${_tor_port} -j DROP -m comment --comment "Drop attempts to flood port ${_tor_port} from your server" || exit 1
    iptables -A tor_out -p TCP -o ${_tor_iface} --sport ${_tor_port} -m limit --limit ${_outgoing_tcp_burst_minute:-15}/minute --limit-burst ${_outgoing_tcp_burst_limit:-1000} -j ACCEPT -m comment --comment "Accept with conditions new connections from port ${_tor_port} from your server" || exit 1
done
iptables -A tor_out -j RETURN -m comment ---comment "Reurn un-matched packets for further filtering or default polices to take effect." || exit 1
## Activate jumps from default output chain to new custom filtering chains
iptables -A OUTPUT -p TCP -o ${_tor_iface} -j out_vuln_scan -m comment --comment "Jump outbound packets through vulnerability scaning mitigation" || exit 1
iptables -A OUTPUT -p TCP -o ${_tor_iface} -j tor_out -m comment --comment "Jump outbound packets through conditional acceptance" || exit 1

Chạy ở trên bashđể có phép thuật được tạo hình sẵn trên các biến với ,cammas tức là;

user@host~# bash iptables_limit_tor.sh

Đây là danh sách các biến một lần nữa

_tor_iface="eth1"
_tor_ports="9050,9051"
_ban_time="600"
_outgoing_tcp_update_seconds="600"
_outgoing_tcp_hitcount="8"
_outgoing_tcp_burst_minute="15"
_outgoing_tcp_burst_limit="1000"

Lưu ý rằng bạn cũng có thể muốn lọc các kết nối ra bên ngoài mới cho -m state NEW ! --syncác loại hình vui nhộn được sử dụng bởi một số bot để tìm máy chủ có thể khai thác ở đây là một chuỗi ví dụ mà bạn có thể đặt trước hai phần trên để lọc thêm các cuộc trò chuyện không đúng định dạng như vậy

iptables -N out_bad_packets -m comment --comment "Make new chain for filtering malformed packets" || exit 1
iptables -A out_bad_packets -p TCP --fragment -j out_temp_ban -m comment --comment "Drop all fragmented packets" || exit 1
iptables -A out_bad_packets -p TCP -m state --state INVALID -j out_temp_ban -m comment --comment "Drop all invalid packets" || exit 1
iptables -A out_bad_packets -p TCP ! --syn -m state --state NEW -j out_temp_ban -m comment --comment "Drop new non-syn packets" || exit 1
iptables -A out_bad_packets -p TCP --tcp-flags ALL NONE -j out_temp_ban -m comment --comment "Drop NULL scan" || exit 1
iptables -A out_bad_packets -p TCP --tcp-flags ALL ALL -j out_temp_ban -m comment --comment "Drop XMAS scan"|| exit 1
iptables -A out_bad_packets -p TCP --tcp-flags ALL FIN,URG,PSH -j out_temp_ban -m comment --comment "Drop stealth scan 1" || exit 1
iptables -A out_bad_packets -p TCP --tcp-flags ALL SYN,RST,ACK,FIN,URG -j out_temp_ban -m comment --comment "Drop pscan 1"|| exit 1
iptables -A out_bad_packets -p TCP --tcp-flags SYN,FIN SYN,FIN -j out_temp_ban -m comment --comment "Drop pscan 2" || exit 1
iptables -A out_bad_packets -p TCP --tcp-flags FIN,RST FIN,RST -j out_temp_ban -m comment --comment "Drop pscan 3" || exit 1
iptables -A out_bad_packets -p TCP --tcp-flags SYN,RST SYN,RST -j out_temp_ban -m comment --comment "Drop SYN-RST scan" || exit 1
iptables -A out_bad_packets -p TCP --tcp-flags ACK,URG URG -j out_temp_ban -m comment --comment "Drop URG scans" || exit 1
iptables -A out_bad_packets -p TCP --tcp-flags ALL SYN,FIN -j out_temp_ban -m comment --comment "Drop SYNFIN scan" || exit 1
iptables -A out_bad_packets -p TCP --tcp-flags ALL URG,PSH,FIN -j out_temp_ban -m comment --comment "Drop nmap Xmas scan" || exit 1
iptables -A out_bad_packets -p TCP --tcp-flags ALL FIN -j out_temp_ban -m comment --comment "Drop FIN scan" || exit 1
iptables -A out_bad_packets -p TCP --tcp-flags ALL URG,PSH,SYN,FIN -j out_temp_ban -m comment --comment "Drop nmap-id scan" || exit 1
iptables -A out_bad_packets -p TCP --tcp-flags RST RST -o ${_tor_iface} --sport ${_tor_port} -m limit --limit 2/second --limit-burst 3 -j out_temp_ban -m comment --comment "Mitigate Smurf attacks from excesive RST packets"
iptables -A out_bad_packets -p TCP --tcp-flags RST RST -o ${_tor_iface} --sport ${_tor_port} -m limit --limit 2/second --limit-burst 2 -j RETURN -m comment --comment "Ban Smurf attacks using excesive RST packets"
iptables -A out_bad_packets -j RETURN -m comment --comment "Return un-matched packets for further processing." || exit 1

Tuy nhiên, chuỗi trên sẽ rất hạn chế vì bất kỳ gói phù hợp nào cũng sẽ bị cấm IP (có thể thay đổi -j out_temp_banthành -j DROPhoặc -j REJECTđể thử nghiệm) trong nhiều giây được chọn trong quy tắc của chuỗi đó. Bộ quy tắc này cũng có thể gây ra sự tích cực khi các ứng dụng được mã hóa kém ở đầu của khách hàng được kết nối lại qua một cercut Tor mới.

~~~~~

Phần mềm cần xem xét để tiếp tục chuyển đổi lưu lượng Kiểm tra firejailLinux, nguồn trên Github và Source forge và các trang man có thể được tìm thấy trên trang chủ cũ, tên miền phụ wordpress và DigitalOcean có hướng dẫn cho Nginx với PHP và Firejail với một chút sửa đổi có thể mang lại cho bạn nhiều sự kích động hơn về việc mạng sẽ được điều chỉnh trở lại. Có những công cụ khác KVMcũng có thể được sử dụng để giữ các dịch vụ không gian trong phạm vi hoạt động, vì vậy hãy mua sắm để tìm ra công cụ phù hợp nhất với hệ thống của bạn.

Tuy nhiên, một tùy chọn khác sẽ là chạy fail2bantheo cách mà khi một quản trị viên hệ thống điên cuồng kết nối http hoặc ssl với IP của bạn, một quy tắc được thêm vào để thả-m state --state NEWkết nối đến những người yêu cầu trang thông báo thoát của bạn. Điều này nếu được kết hợp với các giới hạn thời gian cấm hoàn toàn có thể cho phép máy chủ từ xa nghỉ trong khi sier-admin lẩm bẩm về cảnh báo nhật ký ;-) Tuy nhiên, điều đó nằm ngoài phạm vi của câu trả lời hiện tại này và phụ thuộc vào phần mềm bạn đang sử dụng để phục vụ trang thông báo thoát; gợi ý cả nginx và apache sẽ phục vụ khối vhost hoặc máy chủ đầu tiên trong cấu hình của bạn nếu bây giờ URL được yêu cầu. Nếu sử dụng một cái gì đó khác ngoài apache hoặc nginx, bạn sẽ muốn tham khảo các trang man nhưng đối với tôi, nó đơn giản như việc đặt vhost đầu tiên để đăng nhập vào một tệp khác và có fail2ban thêm bất kỳ IP nào từ nhật ký đó vào danh sách cấm tạm thời ; điều này cũng có tác dụng tuyệt vời trong việc cấm bot trên các máy chủ công cộng vì chúng thường sử dụng địa chỉ IP và không cung cấp kết quả yêu cầu tên miền trong máy chủ phục vụ bẫy bot,

Tôi muốn sử dụng hai dây dẫn chạy chính sách thoát Tor bị hạn chế (có vẻ như bạn đã xử lý) và sau đó đẩy lưu lượng truy cập qua các đường hầm VPN, các điểm tín dụng bổ sung để cân bằng tải giữa các đường hầm đa nhân. Bởi vì điều này sẽ gây ra sự gián đoạn ít hơn đối với lưu lượng truy cập mạng Tor và khiến mắt ISP của bạn bị che mờ với thực tế là bạn đang chạy một nút thoát ... trừ khi họ muốn thừa nhận để đánh hơi và phá vỡ lưu lượng VPN của bạn. Điều này là do việc chạy các quy tắc tạm thời cấm hoặc cho phép máy chủ từ xa tự cấm có thể dẫn đến vi phạm quyền riêng tư đối với các máy khách của nút của bạn khi việc đẩy lưu lượng ra VPN (hoặc một vài) sẽ hỗ trợ quyền riêng tư của khách hàng và giữ cho bạn ISP khỏi bị săn lùng với các yêu cầu cho nhật ký lưu lượng mạng của bạn bởi bất kỳ khả năng nào của chính phủ đang chạy whois www.some.domain.

~~~ ~

Chỉnh sửa / Cập nhật

~~~ ~

Tôi đã thực hiện một chuyến đi vào các ghi chú mở rộng của mình và mở các cấu hình cho các máy chủ công cộng mà tôi sử dụng

Đây là fail2ban jail.localstansa

[apache-ipscan]
enabled  = true
port = http,https
filter = apache-ipscan
logpath = /var/log/apache*/*error_ip*
action = iptables-repeater[name=ipscan]
maxretry = 1

Và đây là apache-ipscan.conftập tin bộ lọc

[DEFAULT]
_apache_error_msg = \[[^]]*\] \[\S*:error\] \[pid \d+\] \[client <HOST>(:\d{1,5})?\]
[Definition]
failregex = \[client <HOST>\] client denied by server .*(?i)/.*
#^<HOST>.*GET*.*(?!)/.*
#   ^%(_apache_error_msg)s (AH0\d+: )?client denied by server configuration: (uri )?.*$
#            ^%(_apache_error_msg)s script '\S+' not found or unable to stat(, referer: \S+)?\s*$
ignoreregex = 
# DEV Notes: 
# the web server only responds to clients with a valid Host: 
# header. anyone who tries using IP only will get shunted into 
# the dummy-error.log and get a client-denied message
#
# the second regex catches folks with otherwise valid CGI paths but no good Host: header
#
# Author: Paul Heinlein

Và đây là iptables-repeater.conftập tin hành động

# Fail2Ban configuration file
#
# Author: Phil Hagen <phil@identityvector.com>
# Author: Cyril Jaquier
# Modified by Yaroslav Halchenko for multiport banning and Lukas Camenzind for persistent banning
# Modified by S0AndS0 to combine features of previous Authors and Modders
#
[Definition]
# Option:  actionstart
# Notes.:  command executed once at the start of Fail2Ban.
# Values:  CMD
#
actionstart = iptables -N fail2ban-BADIPS-<name>
              iptables -A fail2ban-BADIPS-<name> -j RETURN
          iptables -I INPUT -j fail2ban-BADIPS-<name>
          ## Comment above line and uncomment bello line to use multiport and protocol in addition to named jails
          #iptables -I INPUT -p <protocol> -m multiport --dports <port> -j fail2ban-BADIPS-<name>
          # set up from the static file
          #cat /etc/fail2ban/ip.blocklist.<name> |grep -v ^\s*#|awk '{print $1}' | while read IP; do iptables -I fail2ban-BADIPS-<name> 1 -s $IP -j DROP; done
          cat /etc/fail2ban/ip.blocklist.<name> |grep -v ^\s*#|awk '{print $1}' | while read IP; do iptables -I fail2ban-BADIPS-<name> 1 -d $IP -j DROP; done
          ## Comment above line and uncomment bellow line to check if there are blacklist files to load before attempting to load them
          # if [ -f /etc/fail2ban/ip.blacklist.<name> ]; then cat /etc/fail2ban/ip.blacklist.<name> | grep -e <name>$ | cut -d "," -s -f 1 | while read IP; do iptables -I fail2ban-BADIPS-<name> 1 -s $IP -j DROP; done; fi
# Option:  actionstop
# Notes.:  command executed once at the end of Fail2Ban
# Values:  CMD
#
actionstop = iptables -D INPUT -p <protocol> -m multiport --dports <port> -j fail2ban-BADIPS-<name>
         iptables -F fail2ban-BADIPS-<name> 
         iptables -X fail2ban-BADIPS-<name>
# Option:  actioncheck
# Notes.:  command executed once before each actionban command
# Values:  CMD
#
#actioncheck = iptables -n -L INPUT | grep -q fail2ban-BADIPS-<name>
actioncheck = iptables -n -L OUTPUT | grep -q fail2ban-BADIPS-<name>
# Option:  actionban
# Notes.:  command executed when banning an IP. Take care that the
#          command is executed with Fail2Ban user rights.
# Tags:    <ip>  IP address
#          <failures>  number of failures
#          <time>  unix timestamp of the ban time
# Values:  CMD
#
#actionban = if ! iptables -C fail2ban-BADIPS-<name> -s <ip> -j DROP; then iptables -I fail2ban-BADIPS-<name> 1 -s <ip> -j DROP; fi
actionban = if ! iptables -C fail2ban-BADIPS-<name> -d <ip> -j DROP; then iptables -I fail2ban-BADIPS-<name> 1 -d <ip> -j DROP; fi
# Add offenders to local blacklist, if not already there
        if ! grep -Fxq '<ip>,<name>' /etc/fail2ban/ip.blocklist.<name>; then echo "<ip>,<name> # fail2ban/$( date '+%%Y-%%m-%%d %%T' ): auto-add for BadIP offender" >> /etc/fail2ban/ip.blocklist.<name>; fi
# Report offenders to badips.com
#        wget -q -O /dev/null www.badips.com/add/<name>/<ip>
# Option:  actionunban
# Notes.:  command executed when unbanning an IP. Take care that the
#          command is executed with Fail2Ban user rights.
# Tags:    <ip>  IP address
#          <failures>  number of failures
#          <time>  unix timestamp of the ban time
# Values:  CMD
#
#actionunban = iptables -D fail2ban-REPEAT-<name> -s <ip> -j DROP
actionunban = iptables -D fail2ban-REPEAT-<name> -d <ip> -j DROP
# Disabled clearing out entry from ip.blacklist (somehow happens after each stop of fail2ban)
#sed --in-place '/<ip>,<name>/d' /etc/fail2ban/ip.blacklist.<name>
[Init]
# Defaut name of the chain
# 
# Defaut name of the chain
name = BADIPS
# Option:  port
# Notes.:  specifies port to monitor
# Values:  [ NUM | STRING ]  Default:
# 
#port = ssh
# Option:  protocol
# Notes.:  internally used by config reader for interpolations.
# Values:  [ tcp | udp | icmp | all ] Default: tcp

Lưu ý bộ lọc ở trên đã được chỉnh sửa để chặn OUTPUTcác hành động bắt đầu / dừng nhưng bạn vẫn muốn thêm các cấu hình -p TCP -m state --state NEWvào từng dòng để chỉ có các kết nối ngoài mới bị cấm từ địa chỉ IP đã đăng nhập.

Cuối cùng là thiết lập cấu hình Apache vhost để loại bỏ những người không yêu cầu tên miền đối với quyền truy cập và nhật ký lỗi cụ thể và thiết lập quyền truy cập được phép so với quyền truy cập để nó luôn bị lỗi, thậm chí không thể lặp lại trang có thể kéo lên trang mà không xuất hiện lỗi . Cuối cùng nhưng không kém phần quan trọng là thiết lập trang lỗi cho Apache thành thông báo thoát mặc định từ Tor để được cung cấp thay vì 503hoặc404tin nhắn nhạt nhẽo. Hoặc nếu bạn đã thêm các dòng trạng thái vào các hành động iptables cho fail2ban, bạn có thể dễ dàng chỉ đến cùng một tệp nhật ký được sử dụng bởi thông báo thoát của bạn. Kết quả là máy chủ của bạn sẽ không thể tạo kết nối mới với IP của máy chủ đã kiểm tra địa chỉ IP của bạn nhưng các kết nối được thiết lập và liên quan vẫn sẽ được cho phép, tức là họ vẫn có thể duyệt các trang khác của bạn nhưng bạn không thể duyệt qua .


Rất hoan nghênh, nếu bạn thích rằng tôi vừa đẩy một lượng lớn tập lệnh / ghi chú cho GitHub mà bạn có thể muốn xem qua mặc dù. Tôi đã bắt đầu dự án này một cách riêng tư hơn một năm trước nhưng bây giờ sức khỏe là vấn đề tôi đã công khai để gỡ lỗi và thêm các tính năng trong trường hợp tôi không thể hoàn thành nó; những hành động đó và chắc chắn được thực hiện bởi những người địa phương và toàn cầu đã khiến tôi phải đứng lên để biến sự riêng tư cá nhân thành một công tắc dễ dàng hơn.
S0AndS0

Tôi đã viết một dự án khác và đẩy nó lên GitHub . Điều này nhằm mục đích hỗ trợ quản trị viên máy chủ trong việc bảo vệ nhật ký máy chủ của họ bằng cách sử dụng mã hóa bất đối xứng GnuPG. Miễn là nút thoát hoặc dịch vụ ẩn của bạn không giữ khóa riêng có liên quan, dự án trên sẽ giữ cho các bản ghi trong quá khứ không bị rò rỉ địa chỉ IP của các nút khác kết nối với nút của riêng bạn.
S0AndS0

0

Băng thông hạn chế của phần còn lại của mạng Tor sẽ giải quyết những vấn đề đó cho bạn. Ngoài ra nếu bạn lo lắng, hãy chạy tiếp sức, không phải nút thoát.


0

Tôi có một giải pháp tốt hơn: máy chủ cache mực. Squid cache server có sẵn để cấu hình xác định aclvà bạn denyhoặc acceptmỗi acl. Thật thú vị khi nhóm mực xác định một bộ quy tắc trong wiki của họ rằng câu hỏi của bạn được tìm thấy ở đó iptables,PF hoặc những người khác không thể thực hiện công việc của bạn, bởi vì chỉ làm việc trong các lớp khác.


Tôi không thấy bất kỳ cách hợp lý nào để kết hợp Mực (mà tôi biết và thích) với Tor ...
filiprem

thử với Zebra route.
Tiếng Ba Tư

Bạn có nghĩa là chuyển hướng lưu lượng truy cập tor đi đến cổng 80 và dẫn nó qua mực để thêm một số điều khiển? Điều này chỉ giải quyết một phần nhỏ của vấn đề. Nguyên nhân thực sự là ngăn chặn lạm dụng Tor đối với bất kỳ DDOS dựa trên IP nào.
filiprem

Bạn có thể sử dụng thiết kế mạng của mình theo ba lớp: 1. lớp ngoài 2. lớp xử lý. 3.user / lớp máy chủ ====> Nó khiến bảo mật của bạn sẽ được cải thiện.
Tiếng Ba Tư
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.