Relatorio v2
This commit is contained in:
@@ -60,6 +60,8 @@ sudo iptables -A INPUT -i enp0s10 -p udp --dport 53 -j ACCEPT
|
|||||||
sudo iptables -A INPUT -i enp0s9 -p tcp --dport 22 -j ACCEPT
|
sudo iptables -A INPUT -i enp0s9 -p tcp --dport 22 -j ACCEPT
|
||||||
sudo iptables -A INPUT -i enp0s8 -s 23.214.219.133 -p tcp --dport 22 -j ACCEPT
|
sudo iptables -A INPUT -i enp0s8 -s 23.214.219.133 -p tcp --dport 22 -j ACCEPT
|
||||||
#The dns server should be able to resolve names using the internet (and others???)
|
#The dns server should be able to resolve names using the internet (and others???)
|
||||||
|
sudo iptables -I FORWARD -j NFQUEUE --queue-bypass
|
||||||
|
sudo iptables -I INPUT -j NFQUEUE --queue-bypass
|
||||||
sudo iptables -A FORWARD -i enp0s8 -o enp0s10 -s 23.214.219.130 -p udp --dport 53 -j ACCEPT
|
sudo iptables -A FORWARD -i enp0s8 -o enp0s10 -s 23.214.219.130 -p udp --dport 53 -j ACCEPT
|
||||||
#The internal network should be able to send and recieve dns name resolutions to the dns server (1!)
|
#The internal network should be able to send and recieve dns name resolutions to the dns server (1!)
|
||||||
sudo iptables -A FORWARD -i enp0s9 -o enp0s8 -d 23.214.219.130 -p udp --dport 53 -j ACCEPT
|
sudo iptables -A FORWARD -i enp0s9 -o enp0s8 -d 23.214.219.130 -p udp --dport 53 -j ACCEPT
|
||||||
|
|||||||
@@ -15,6 +15,12 @@
|
|||||||
|
|
||||||
\section{Introduction}
|
\section{Introduction}
|
||||||
O objetivo principal deste trabalho era aprender IPTables e como configurar um com o Suricata um sistema de filtração e deteção de ataques. Para esse fim, foi simulado um sistema dividido em três redes e um router para conectar-las. As três redes são a DMZ (23.214.219.128/25, enp0s8), Internal network (192.168.10.0/24, enp0s9) e Internet (87.248.214.0/24, enp0s10).
|
O objetivo principal deste trabalho era aprender IPTables e como configurar um com o Suricata um sistema de filtração e deteção de ataques. Para esse fim, foi simulado um sistema dividido em três redes e um router para conectar-las. As três redes são a DMZ (23.214.219.128/25, enp0s8), Internal network (192.168.10.0/24, enp0s9) e Internet (87.248.214.0/24, enp0s10).
|
||||||
|
\begin{verbatim}
|
||||||
|
Rede,Interface,Gama IP
|
||||||
|
DMZ,enp0s8,23.214.219.128/25
|
||||||
|
Internal,enp0s9,192.168.10.0/24
|
||||||
|
Internet,enp0s10,87.248.214.0/24
|
||||||
|
\end{verbatim}
|
||||||
As três redes tem varios serviços, o DMZ tem dns(23.214.219.130), mail(23.214.219.134), vpn-gw(23.214.219.133), www(23.214.219.132) e smpt(23.214.219.131). A Internal network tem ftp(192.168.10.2), datastore(192.168.10.3) e clientes (nos testes os clientes tem ip 192.168.10.4, mas está configurado para dar para qualquer edereço). Por fim a rede Internet tem dns2 (87.248.214.99) e eden (87.248.214.100), existe também outros serviços (87.248.214.98).
|
As três redes tem varios serviços, o DMZ tem dns(23.214.219.130), mail(23.214.219.134), vpn-gw(23.214.219.133), www(23.214.219.132) e smpt(23.214.219.131). A Internal network tem ftp(192.168.10.2), datastore(192.168.10.3) e clientes (nos testes os clientes tem ip 192.168.10.4, mas está configurado para dar para qualquer edereço). Por fim a rede Internet tem dns2 (87.248.214.99) e eden (87.248.214.100), existe também outros serviços (87.248.214.98).
|
||||||
Para facilitar a recriação deste sistema foi criado 4 ficheiros .sh (um para cada rede e o router), e disponibilizamos os ficheiros suricata.rules e suricata.yaml, para o suricata que estiver ligado ao Router. Os ficheiros .sh vão ter comandos para configurar o sistema para este exercicio.
|
Para facilitar a recriação deste sistema foi criado 4 ficheiros .sh (um para cada rede e o router), e disponibilizamos os ficheiros suricata.rules e suricata.yaml, para o suricata que estiver ligado ao Router. Os ficheiros .sh vão ter comandos para configurar o sistema para este exercicio.
|
||||||
\section{Firewall}
|
\section{Firewall}
|
||||||
@@ -28,7 +34,7 @@ iptables -P OUTPUT ACCEPT
|
|||||||
Foi escolhido porque é mais facil dar DROP a todos os pacotes que não foi criado regras do que criar uma regra de DROP para todos os protocolos e possibilidades, o OUTPUT ficou para ACCEPT porque não existe razão para dar DROP dos pacotes que estamos a enviar neste trabalho.
|
Foi escolhido porque é mais facil dar DROP a todos os pacotes que não foi criado regras do que criar uma regra de DROP para todos os protocolos e possibilidades, o OUTPUT ficou para ACCEPT porque não existe razão para dar DROP dos pacotes que estamos a enviar neste trabalho.
|
||||||
Para o router conseguir resolver DNS requests e para aceitar coneções SSH da rede interna ou da VPN gateway foi utilizado estes comandos:
|
Para o router conseguir resolver DNS requests e para aceitar coneções SSH da rede interna ou da VPN gateway foi utilizado estes comandos:
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
sudo iptables -A INPUT -o enp0s10 -p udp --dport 53 -j ACCEPT
|
sudo iptables -A INPUT -i enp0s10 -p udp --dport 53 -j ACCEPT
|
||||||
sudo iptables -A INPUT -i enp0s9 -p tcp --dport 22 -j ACCEPT
|
sudo iptables -A INPUT -i enp0s9 -p tcp --dport 22 -j ACCEPT
|
||||||
sudo iptables -A INPUT -i enp0s8 -s 23.214.219.133 -p tcp --dport 22 -j ACCEPT
|
sudo iptables -A INPUT -i enp0s8 -s 23.214.219.133 -p tcp --dport 22 -j ACCEPT
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
@@ -46,9 +52,18 @@ sudo iptables -A FORWARD -i enp0s9 -o enp0s8 -d 23.214.219.133 -p udp --dport 11
|
|||||||
sudo iptables -A FORWARD -i enp0s8 -o enp0s9 -s 23.214.219.133 -d 192.168.10.2 -j ACCEPT
|
sudo iptables -A FORWARD -i enp0s8 -o enp0s9 -s 23.214.219.133 -d 192.168.10.2 -j ACCEPT
|
||||||
sudo iptables -A FORWARD -i enp0s8 -o enp0s9 -s 23.214.219.133 -d 192.168.10.3 -j ACCEPT
|
sudo iptables -A FORWARD -i enp0s8 -o enp0s9 -s 23.214.219.133 -d 192.168.10.3 -j ACCEPT
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
Inicialmente as implementações de respostas a forward eram especificas para cada regra isto é por exemplo:
|
||||||
|
\begin{verbatim}
|
||||||
|
sudo iptables -A FORWARD -o enp0s8 -i enp0s10 -p udp --dport 53 -m state --state ESTABLISHED,RELATED -j ACCEPT
|
||||||
|
\end{verbatim}
|
||||||
|
No entanto isso facilmente originava confusão entre nós, então decimos utilizar estas duas regras:
|
||||||
|
\begin{verbatim}
|
||||||
|
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
|
||||||
|
sudo iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
|
||||||
|
\end{verbatim}
|
||||||
|
Neste cenario o uso destas regras faz sentido, mas pode existir outros cenarios no futuro que não queremos uma resposta, e nesse caso temos de criar as regras necessarias.
|
||||||
\subsection{Packet filtering with NAT}
|
\subsection{Packet filtering with NAT}
|
||||||
Para conecções com origem/destino na internet foi utilizado DNAT/SNAT e iptables para "esconder" o ip para a internet que quer aceder a rede interna e iproutes para bloquear certos pacotes de entrar, para conseguir a configuração utilizamos estes comandos:
|
Para conecções com origem/destino na internet foi utilizado DNAT/SNAT e iptables para "esconder" o ip para a internet que querer aceder a rede interna para não terem acesso ao edereço ip e iproutes para bloquear certos pacotes de entrar, para conseguir a configuração utilizamos estes comandos:
|
||||||
|
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
sudo iptables -A FORWARD -i enp0s10 -o enp0s9 -d 192.168.10.2
|
sudo iptables -A FORWARD -i enp0s10 -o enp0s9 -d 192.168.10.2
|
||||||
-p tcp --dport 21 -j ACCEPT
|
-p tcp --dport 21 -j ACCEPT
|
||||||
@@ -81,9 +96,20 @@ drop tcp any any -> any 80 (msg:"SQl injection"; content:"'or 1=1"; nocase; clas
|
|||||||
drop tcp any any -> any 80 (msg:"XSS"; content:"<script"; nocase; classtype:web-application-attack; sid:1000004; rev:1;)
|
drop tcp any any -> any 80 (msg:"XSS"; content:"<script"; nocase; classtype:web-application-attack; sid:1000004; rev:1;)
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
A primeira é para port scaning, a segunda e a terceira é para o caso de SQL injection, e a ultima é para XSS atacks.
|
A primeira é para port scaning, a segunda e a terceira é para o caso de SQL injection, e a ultima é para XSS atacks.
|
||||||
|
Também atualizamos o iptables para passar para o suricata os pacotes para analizar e bloquear com:
|
||||||
|
\begin{verbatim}
|
||||||
|
sudo iptables -I FORWARD -j NFQUEUE --queue-bypass
|
||||||
|
sudo iptables -I INPUT -j NFQUEUE --queue-bypass
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
\section{Tests utilizados}
|
\section{Tests utilizados}
|
||||||
Netcat foi utilizado para maior
|
Netcat foi utilizado para maior parte dos testes excepto para FTP, em que devido ás suas caracteristicas especificas, utilizamos os serviços para ter a certeza que funcionava com a nossa configuração. Utilizamos estes comandos curl para testar se eram bloqueados:
|
||||||
|
\begin{verbatim}
|
||||||
|
curl -i "http://23.214.219.132/index.php?id=1%20union%20select%201,2,3"
|
||||||
|
curl -i "http://23.214.219.132/login.php?user='or%201=1"
|
||||||
|
curl -i "http://23.214.219.132/search.php?q=<script>alert('XSS')</script>"
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
\section{Conclusion}
|
\section{Conclusion}
|
||||||
Fuck we learned alot
|
Ao realizar-mos este projeto aprendemos sobre a criação de scenarios em VMs, a configuração de uma firewall utilizando IPTables e a configuração de um IDS/IPS system utilizando Suricata
|
||||||
\end{document}
|
\end{document}
|
||||||
|
|||||||
Reference in New Issue
Block a user