Можно ли проверить наличие утечек DNS на unix-сервере?

Если вы можете запустить python в своей оболочке, можно также использовать следующий (до смешного длинный) однострочник:

python -c 'import os;import sys;output = lambda(x) : sys.stdout.write(x + "\n"); paths = os.environ["PATH"].split(":") ; listdir = lambda(p) : os.listdir(p) if os.path.isdir(p) else [ ] ; isfile = lambda(x) : True if os.path.isfile(os.path.join(x[0],x[1])) else False ; isexe = lambda(x) : True if os.access(os.path.join(x[0],x[1]), os.X_OK) else False ; map(output,[ os.path.join(p,f) for p in paths for f in listdir(p) if isfile((p,f)) and isexe((p,f)) ])'

Это было в основном забавным поупражняюсь для себя, чтобы увидеть, можно ли это сделать, используя одну строку кода Python, не прибегая к использованию функции exec. В более удобочитаемой форме и с некоторыми комментариями код выглядит так:

import os
import sys

# This is just to have a function to output something on the screen.
# I'm using python 2.7 in which 'print' is not a function and cannot
# be used in the 'map' function.
output = lambda(x) : sys.stdout.write(x + "\n")

# Get a list of the components in the PATH environment variable. Will
# abort the program is PATH doesn't exist
paths = os.environ["PATH"].split(":")

# os.listdir raises an error is something is not a path so I'm creating
# a small function that only executes it if 'p' is a directory
listdir = lambda(p) : os.listdir(p) if os.path.isdir(p) else [ ]

# Checks if the path specified by x[0] and x[1] is a file
isfile = lambda(x) : True if os.path.isfile(os.path.join(x[0],x[1])) else False

# Checks if the path specified by x[0] and x[1] has the executable flag set
isexe = lambda(x) : True if os.access(os.path.join(x[0],x[1]), os.X_OK) else False

# Here, I'm using a list comprehension to build a list of all executable files
# in the PATH, and abusing the map function to write every name in the resulting
# list to the screen.
map(output, [ os.path.join(p,f) for p in paths for f in listdir(p) if isfile((p,f)) and isexe((p,f)) ])
1
08.12.2018, 00:24
4 ответа

Что я сделал:

ssh -X VPNuser@server
firefox

Затем перейдите на веб-сайт для проверки утечки DNS -.

0
28.01.2020, 00:22

Если вы можете настроить обратный SSH-туннель на этом сервере, вы можете использовать удаленный веб-браузер с этими веб-страницами утечки DNS, чтобы хотя бы частично протестировать этот сервер. Вам также необходимо настроить прокси-сервер SOCKS 5 на этом сервере и настроить браузер для использования его на удаленном конце. Когда-то в пакете Perl был пример сценария, предоставляющего Socks, которого должно быть достаточно для этой задачи. Так что вам нужно это:

   <--------------------------------------------------------->
Internet    <-->            Server                        Laptop etc
                            SSH reverse tunnel    <-->    SSH
Internet        <-->        Socks proxy           <-->    Web browser
0
28.01.2020, 00:22

Вы можете использовать wireshark в отдельной системе и самостоятельно управлять человеком посередине. После этого вы можете просмотреть журналы и посмотреть, появляются ли там какие-либо соответствующие утечки. Это было бы просто и должно быть довольно эффективно.

0
28.01.2020, 00:22

Другой вариант — использовать ведение журнала iptables, что-то вроде

iptables -A OUTPUT -d 1.1.1.1/32 -j accept
iptables -A OUTPUT -j LOG
0
28.01.2020, 00:22

Теги

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