iptables на скалистой вершине выходят из узла

Вы могли установить старое, автоделают версию в другую папку, такую как:

./configure --prefix=/usr/local/automake-1.10

Затем, когда Вы хотите использовать ту версию, удостоверьтесь, что она взята перед реальной / последней версией:

export PATH=/usr/local/automake-1.10/bin:$PATH
automake --version

Это не должно входить/usr/local/automake-1.10 также, можно поместить его в корневой каталог, таким образом, Вы не должны базироваться доступ для установки его, и это может быть легко удалено, когда Вы сделаны.

9
23.12.2014, 14:23
5 ответов

Следует иметь в виду что:

  • Клиенты скалистой вершины переключают виртуальные каналы каждые 10 минут или так к моему текущему пониманию. Это означает, что исходный IP переезжает тот период времени. Вы вряд ли предотвратите любое поведение, для которого Вы считаете злонамеренными дольше, чем та продолжительность.

  • Обратите внимание, что то, что Скалистая вершина только проксирует трафик TCP и не любые другие предельные возможности злоупотребления протокола вполне немного.

iptables может позволить Вам рассматривать новые исходящие соединения TCP по-другому, чем существующие. Что-либо, что является ESTABLISHED,RELATED должен быть ACCEPTED или проведенный через "существующие соединения TCP" цепочка и исходящий TCP, который не становится пойманным этим, могли быть ограниченным уровнем. Любой исходящий трафик Скалистой вершины должен подвергнуться этому.

Я верю между вышеупомянутым, и использование "Уменьшенной политики Выхода" было бы о лучшем, которое можно сделать.

Идеально, не выполняйте ничто больше на своем поле Tor кроме:

  • Вы будете, вероятно, по крайней мере, иметь SSH, поместите его на другой порт, чем 22.
  • Вы, вероятно, захотите выполнить простой веб-сервер для отображения этой страницы. chroot'ed mini-httpd экземпляр должен сделать. Не использовать inetd.

Не выполняйте Скалистую вершину на поле, которое используется для чего-либо еще. Удостоверьтесь, что Вы считали раздел "Exit Relays" Скалистой вершины Легальный FAQ и полностью понимаете его последствия. Также считайте и сделайте все это.

2
27.01.2020, 20:07

Будет более трудно чем обычно предотвратить эти нападения, так как исходный IP не является постоянным. Однако к моему знанию маршруты в скалистой вершине только изменяются каждые несколько минут или около этого.

Таким образом, Вы могли все еще развернуть некоторые стандартные правила ограничения/фильтрации, но с более высоким порогом, так как необходимо принять, существует целая сеть позади исходного дюйм/с.

Можно отфильтровать:

  • плохие или типичные пакеты снятия отпечатков пальцев/сканирования (плохие флаги TCP/IP, РОЖДЕСТВО, большая часть ICMP вводит и т.д.),
  • Недопустимые пакеты, которые не соответствуют к продолжающимся или новым соединениям (-m состояние)
  • НОВЫЕ соединения, запускающиеся в некотором довольно высоком пороге

Однако знайте, что такие вещи обычно делаются на входящем трафике. Вы не знаете, какой протоколирует Ваших "клиентов", будет работать, и Вы могли бы ограничить их способами, которые могут быть раздражающими/неясными.

Кроме того, для НОВОГО ограничения уровня (или не сохраняющий состояние) пакеты можно хотеть рассмотреть еще некоторую включенную схему, где отклоненный (никогда НЕ ОТБРАСЫВАЮТ если, очевидно, нападение!) пакеты рандомизируются. Таким образом, обычный пользователь может просто попытаться поразить перезагрузку и стать удачливым, даже при том, что общий уровень в настоящее время в пределе, в то время как параллельный сканер портов не сможет обойти Ваше ограничение скорости.

Также спросите относительно списков рассылки Скалистой вершины, Вы являетесь, вероятно, не первыми, чтобы иметь такие мысли: https://lists.torproject.org/cgi-bin/mailman/listinfo

1
27.01.2020, 20:07

Ограниченная пропускная способность остальной части сети Tor решит те проблемы для Вас. Также, если Вы волнуетесь, выполните просто реле, не узел выхода.

0
27.01.2020, 20:07

У меня есть лучшее решение: сервер кэширования сквида. Сервер кэширования сквида, доступный для конфигурирования определения acl а вы? deny или accept каждый acl. Очень интересно, что команда сквида, определяющая ряд правил в их Wiki, которую Ваш вопрос нашел там iptables,PF или другие не могут делать Ваших работ, потому что просто работают в другом, разделяет на уровни.

0
27.01.2020, 20:07
  • 1
    я не вижу разумного способа объединить Сквид (который я знаю и как) со Скалистой вершиной... попытка –  filiprem 16.08.2012, 22:20
  • 2
    с Zebra route. –  PersianGulf 16.08.2012, 22:26
  • 3
    Вы означаете перенаправлять трафик выхода скалистой вершины, который идет для портирования 80, и передача по каналу его через сквид для добавления некоторого управления? Это разрешает только небольшую часть проблемы. Реальная причина предотвращает злоупотребление Скалистой вершины для любого IP базирующийся DDOS. –  filiprem 16.08.2012, 22:48
  • 4
    Можно использовать, разрабатывают сеть в трех слоях: 1. вне уровня 2. слой процесса. Слой 3.user/server ====> Это вызывает Вашу безопасность, будет улучшен. –  PersianGulf 16.08.2012, 23:08

Во-первых, я бы не предлагал iptables для решения всех этих проблем, это действительно идеальный выход Узел Tor будет загружать балансный трафик через несколько туннелей VPN, чтобы не отвлекать внимание интернет-провайдера от пакетов и истинного пункта назначения, и / или использовать прокси-сервер кэширования, чтобы свести к минимуму исходящие повторные запросы к популярному статическому контенту ... в эти варианты вот пластырь для проблем с жалобами на злоупотребления;

Используемые источники информации

http://www.ossramblings.com/using_iptables_rate_limiting_to_prevent_portscans

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

Объединение двух исходных ссылок в правила, которые можно использовать для срыва ботов. пытаясь использовать выходной узел Tor для сканирования портов. Обратите внимание, что это может очень расстроить хакеров, использующих ваш выходной узел, поскольку эти правила вызывают время зависания 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

Выполните выше с помощью bash , чтобы магические операции выполнялись с переменными с помощью , cammas, т.е.

user @ host ~ # bash iptables_limit_tor.sh

Вот снова список переменных

_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"

Обратите внимание, что вы также можете отфильтровать новые исходящие соединения для состояния -m NEW! --syn виды забавного бизнеса, используемые некоторыми ботами для поиска уязвимых серверов. вот пример цепочки, в которой вы могли бы предпочесть две указанные выше для дальнейшей фильтрации такой искаженной болтовни.

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

Однако приведенная выше цепочка будет очень ограничительным, поскольку для любого совпадающего пакета будет заблокирован IP-адрес (возможно, измените -j out_temp_ban на -j DROP или -j REJECT для тестирования), однако количество секунд, выбранных в правилах этой цепочки. Этот набор правил также может вызывать ложные срабатывания, когда плохо закодированные приложения на стороне клиента повторно подключаются по новому серверу Tor.

~~~~~

Программное обеспечение, которое следует учитывать для дальнейшего распределения трафика Ознакомьтесь с firejail для Linux, исходный код находится на Github и Source forge, а также можно найти страницы руководства на старой домашней странице есть поддомен wordpress, а у DigitalOcean есть руководство для Nginx с PHP и Firejail, которое с небольшими изменениями может дать вам гораздо больше подсказок относительно того, где следует дросселировать сеть. Существуют и другие инструменты, такие как KVM , которые также можно использовать для сохранения специальных сервисов в рабочих пределах, поэтому сделайте покупки вокруг, чтобы найти тот, который лучше всего подходит для вашей системы.

Еще один вариант - запустить fail2ban таким образом, чтобы когда сумасшедший системный администратор подключался к вашему IP-адресу через http или ssl, добавлялось правило для сброса состояния -m --state NEW подключений к тем, кто запрашивает вашу страницу с уведомлением о выходе. Это в сочетании с разумным ограничением времени отмены блокировки может позволить удаленному серверу отключиться, пока его системный администратор бормочет о загрязнении журнала ;-) Однако это выходит за рамки настоящего ответа и зависит от того, какое программное обеспечение вы используете для обслуживания страниц с уведомлениями о выходе; подсказка и nginx, и apache будут обслуживать первый блок vhost или server в ваших конфигурациях, если теперь был запрошен URL. Если вы используете что-то еще, кроме apache или nginx, вы захотите проконсультироваться со страницами руководства, но для меня это было так же просто, как настроить первый виртуальный хост для входа в другой файл и сделать так, чтобы fail2ban добавлял любые IP-адреса из этого журнала в список временных запретов; это также отлично подходит для запрета ботов на общедоступных серверах, потому что они обычно используют IP-адрес, а отсутствие запроса домена приводит к тому, что сервер обслуживает ботовую ловушку или, в данном случае, уведомление о выходе.

Я бы использовал Twords, запустив ограниченную политику выхода Tor (похоже, вы справились), а затем протолкнул бы трафик через VPN-туннели, добавив дополнительные баллы для балансировки нагрузки между многопульными туннелями. Потому что это было бы. меньше нарушать сетевой трафик Tor и заставлять вашего интернет-провайдера закрывать глаза на тот факт, что вы используете выходной узел ... если только они не хотят признаваться в том, что они перехватывают и взламывают ваш VPN-трафик.Это связано с тем, что выполнение правил, которые временно запрещают или разрешают удаленному хосту самобанить, может привести к нарушению конфиденциальности клиентов вашего узла, тогда как выталкивание трафика на VPN (или несколько) будет способствовать конфиденциальности вашего клиента и сохранить ваши ISP от преследования с помощью запросов журналов сетевого трафика со стороны любого правительства, способного запустить whois www.some.domain .

~~~~

Изменения / обновления

~~~~

Я просмотрел свои подробные заметки и нашел конфигурации для общедоступных серверов, которые я использую

Вот файл fail2ban jail.local stansa

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

А вот фильтр apache-ipscan.conf файл

[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

А вот действие iptables-Repeater.conf file

# 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

Примечание выше фильтр был отредактирован так, чтобы блокировать OUTPUT при запуске / остановке действий, но вы все равно захотите добавить -p TCP -m state --state NEW конфигурирует для каждой строки только новые исходящие соединения, запрещенные с зарегистрированного IP-адреса.

Последний настраивает конфигурацию Apache vHost, которая направляет тех, кто не запрашивает домен, в журнал с указанием доступа и ошибок и настраивает разрешенный и запрещенный доступ так, чтобы всегда возникала ошибка, даже петля не могла подтянуть страницу. без выскакивающих ошибок. И последнее, но не менее важное: установка страницы ошибок для Apache на уведомление о выходе из Tor по умолчанию, чтобы оно обслуживалось вместо 503 или 404 пустых сообщений. Или, если вы добавили строки состояния в действия iptables для fail2ban, вы могли бы легко указать на тот же файл журнала, который используется в вашем уведомлении о выходе. В результате ваш сервер не сможет выполнить новые подключения к IP-адресу сервера, которые проверили ваш IP-адрес, но установленные и связанные подключения все еще будут разрешены, то есть они все еще могут просматривать ваши другие страницы, но вы не можете просматривать их.

1
27.01.2020, 20:07

Теги

Похожие вопросы