Skip to content

Commit

Permalink
Merge pull request #395 from skalenetwork/430_firewall_self_analysis
Browse files Browse the repository at this point in the history
430 firewall self analysis
  • Loading branch information
kladkogex authored Aug 5, 2022
2 parents 89b700e + 7015258 commit 6f4b347
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 1 deletion.
1 change: 1 addition & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ RUN bash -c "make -j$(nproc)"
RUN ccache -sz
RUN mkdir -p /usr/src/sdk/sgx_data
COPY docker/start.sh ./
COPY docker/check_firewall.py ./
RUN rm -rf /usr/src/sdk/sgx-sdk-build/
RUN rm /opt/intel/sgxsdk/lib64/*_sim.so
ENTRYPOINT ["/usr/src/sdk/start.sh"]
1 change: 1 addition & 0 deletions DockerfileRelease
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ RUN ccache -sz
RUN cd scripts && ./sign_enclave.bash
RUN mkdir -p /usr/src/sdk/sgx_data
COPY docker/start.sh ./
COPY docker/check_firewall.py ./
RUN rm -rf /usr/src/sdk/sgx-sdk-build/
RUN rm /opt/intel/sgxsdk/lib64/*_sim.so
RUN rm /usr/src/sdk/secure_enclave/secure_enclave*.so
Expand Down
1 change: 1 addition & 0 deletions DockerfileSimulation
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ RUN ./autoconf.bash && \
mkdir -p /usr/src/sdk/sgx_data

COPY docker/start.sh ./
COPY docker/check_firewall.py ./
RUN rm -rf /usr/src/sdk/sgx-sdk-build/

ENTRYPOINT ["/usr/src/sdk/start.sh"]
44 changes: 44 additions & 0 deletions docker/check_firewall.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#! /usr/bin/python

import requests
import re
import torpy

from torpy import TorClient


def get_my_external_ip():
try:
res = requests.get("http://checkip.dyndns.org/")
myIp = re.compile('(\d{1,3}\.){3}\d{1,3}').search(res.text).group()
return myIp
except:
return ""

print("Analyzing firewall security.")
print("Determining external IP address")

ip = get_my_external_ip()

if (ip == ""):
print("sgxwallet does not have an external IP")
print("No firewall problems detected.")
exit(0)

print("sgxwallet has the following external IP: " + ip)

try:
with TorClient() as tor:
# Choose random guard node and create 3-hops circuit
print("Connecting to TOR network ...");
with tor.create_circuit(1) as circuit:
print("Connected to TOR network. Connecting to sgxwallet from a random external IP."
" This may take up to a minute.")
# Create tor stream to host
with circuit.create_stream((ip, 1027)) as stream:
print("SECURITY PROBLEM: Could connect to port 1027 of sgxwallet " + ip + " from a random external IP")
print("Firewall is not working properly. Fix the firewall and then start sgx wallet")
exit(1)
except:
print("Analysis complete. No firewall problems detected.")
exit(0)
2 changes: 1 addition & 1 deletion docker/start.sh
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ echo "Test run requested"
sleep 5
./testw.py
else
sleep 3
/usr/src/sdk/check_firewall.py
./sgxwallet $1 $2 $3 $4 $5 $6
fi

0 comments on commit 6f4b347

Please sign in to comment.