Назад | Перейти на главную страницу

Apache Ubuntu 14.04 не загружает https на 443, iptables блокирует 443?

На сервере Ubuntu 14.04 я пытаюсь запустить https, чтобы получить SSL для веб-сайта (сервер будет заменен через пару недель). Веб-сайт отлично работает по http, но не может запустить его по https. Webbrowser выдает сообщение «Невозможно подключиться», поэтому я думаю, что iptables блокирует соединение. Я немного знаком с ufw, но не с iptables.

Когда я делаю iptables -L --line, У меня есть следующий вывод:

Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
38300 2312K fail2ban-ssh  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 22
    0     0 ACCEPT     tcp  --  *      *       x.x.x.x              0.0.0.0/0            tcp dpt:22
    0     0 ACCEPT     tcp  --  *      *       x.x.x.x              0.0.0.0/0            tcp dpt:22
    0     0 ACCEPT     tcp  --  *      *       x.x.x.x              0.0.0.0/0            tcp dpt:22
  122  7916 ACCEPT     tcp  --  *      *       x.x.x.x              0.0.0.0/0            tcp dpt:22
    0     0 ACCEPT     tcp  --  *      *       x.x.x.x              0.0.0.0/0            tcp dpt:22
    0     0 ACCEPT     tcp  --  *      *       x.x.x.x              0.0.0.0/0            tcp dpt:22
    0     0 ACCEPT     tcp  --  *      *       x.x.x.x              0.0.0.0/0            tcp dpt:22
    0     0 ACCEPT     tcp  --  *      *       x.x.x.x              0.0.0.0/0            tcp dpt:22
    0     0 ACCEPT     tcp  --  *      *       x.x.x.x              0.0.0.0/0            tcp dpt:22
37010 2251K ACCEPT     tcp  --  *      *       x.x.x.x              0.0.0.0/0            tcp dpt:22
 162K 6486K DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate INVALID
  11M 4302M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
50298 3001K ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
 6998  431K ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            icmptype 8
 106K   26M UDP        udp  --  *      *       0.0.0.0/0            0.0.0.0/0
1057K   53M TCP        tcp  --  *      *       0.0.0.0/0            0.0.0.0/0
 106K   26M REJECT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
 194K 8099K REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with tcp-reset
 5553  178K REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-proto-unreachable
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443 ctstate NEW,ESTABLISHED
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 80,443 ctstate NEW,ESTABLISHED
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 18270 packets, 6985K bytes)
 pkts bytes target     prot opt in     out     source               destination
    2   120 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp spt:443 ctstate ESTABLISHED
  714 80354 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 80,443 ctstate ESTABLISHED

Chain TCP (1 references)
 pkts bytes target     prot opt in     out     source               destination
59249 3411K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
 1200 64152 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:3306
 498K   26M ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpts:49152:49200
 305K   15M ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:21

Chain UDP (1 references)
 pkts bytes target     prot opt in     out     source               destination

Chain fail2ban-ssh (1 references)
 pkts bytes target     prot opt in     out     source               destination
38300 2312K RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0

Некоторые общедоступные IP-адреса были заменены на x.x.x.x.

Под Chain INPUT (policy DROP) правило № 21-25 показывает https, но это ACCEPT в policy DROP список. Означает ли это, что соединение разорвано или разрешено? В этом списке нет правила для http.

Под Chain OUTPUT (policy ACCEPT) Правило №1 показывает https, а №2 показывает http и https. Похоже, это правило принятия. Однако, если предыдущее правило является правилом для разрыва соединения, я предполагаю, что правило №1 не достигается.

Под Chain TCP (1 references) правило №1 показывает http, но не правило для https.

Нужно ли мне удалять правила после policy DROP? Я пытался добавить правило с помощью iptables -A INPUT -p tcp --dport 443 -j ACCEPT но я все еще не могу подключиться.

Также в /etc/iptables/rules.v4 есть правило для порта 80 (-A TCP -p tcp -m tcp --dport 80 -j ACCEPT) но нет для 443. Нужно ли мне добавлять его вручную?

Обновить Добавлена ​​запрошенная информация, заменены некоторые доменные имена на example.com

Chain INPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1    38723 2341K fail2ban-ssh  tcp  --  any    any     anywhere             anywhere             multiport dports ssh
2        0     0 ACCEPT     tcp  --  any    any     example.com          anywhere             tcp dpt:ssh
3        0     0 ACCEPT     tcp  --  any    any     example.com          anywhere             tcp dpt:ssh
4        0     0 ACCEPT     tcp  --  any    any     example.com          anywhere             tcp dpt:ssh
5      122  7916 ACCEPT     tcp  --  any    any     example.com          anywhere             tcp dpt:ssh
6        0     0 ACCEPT     tcp  --  any    any     x.x.x.x/26           anywhere             tcp dpt:ssh
7        0     0 ACCEPT     tcp  --  any    any     example.com          anywhere             tcp dpt:ssh
8        0     0 ACCEPT     tcp  --  any    any     example.com          anywhere             tcp dpt:ssh
9        0     0 ACCEPT     tcp  --  any    any     example.com          anywhere             tcp dpt:ssh
10       0     0 ACCEPT     tcp  --  any    any     example.com          anywhere             tcp dpt:ssh
11   37418 2278K ACCEPT     tcp  --  any    any     example.com          anywhere             tcp dpt:ssh
12    168K 6750K DROP       all  --  any    any     anywhere             anywhere             ctstate INVALID
13     12M 4492M ACCEPT     all  --  any    any     anywhere             anywhere             ctstate RELATED,ESTABLISHED
14   51339 3063K ACCEPT     all  --  lo     any     anywhere             anywhere
15    7249  445K ACCEPT     icmp --  any    any     anywhere             anywhere             icmp echo-request
16    108K   27M UDP        udp  --  any    any     anywhere             anywhere
17   1084K   54M TCP        tcp  --  any    any     anywhere             anywhere
18    108K   27M REJECT     udp  --  any    any     anywhere             anywhere             reject-with icmp-port-unreachable
19    201K 8383K REJECT     tcp  --  any    any     anywhere             anywhere             reject-with tcp-reset
20    5669  181K REJECT     all  --  any    any     anywhere             anywhere             reject-with icmp-proto-unreachable
21       0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:https
22       0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:https ctstate NEW,ESTABLISHED
23       0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             multiport dports http,https ctstate NEW,ESTABLISHED
24       0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:https
25       0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:https

Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 381K packets, 210M bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        2   120 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp spt:https ctstate ESTABLISHED
2      718 80790 ACCEPT     tcp  --  any    any     anywhere             anywhere             multiport dports http,https ctstate ESTABLISHED

Chain TCP (1 references)
num   pkts bytes target     prot opt in     out     source               destination
1    60377 3478K ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:http
2     1202 64232 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:mysql
3     510K   26M ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpts:49152:49200
4     311K   16M ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:ftp

Chain UDP (1 references)
num   pkts bytes target     prot opt in     out     source               destination

Chain fail2ban-ssh (1 references)
num   pkts bytes target     prot opt in     out     source               destination
1    38723 2341K RETURN     all  --  any    any     anywhere             anywhere

ports.conf из apache:

Listen 80
Listen 443 http

Я должен добавить http на порт 443, иначе Apache не запустится (исходя из этого ответ). Затем происходит эта ошибка:

 AH02240: Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] ((null):0)

Конфигурация хоста:

<VirtualHost *:443>
        ServerName www.example.com

        #ServerAdmin webmaster@example.com
        DocumentRoot /var/www/test

        ErrorLog /var/log/apache2/www.example.com-ssl-error.log
        CustomLog /var/log/apache2/www.example.com-ssl-access.log combined

        <Directory /var/www/test >
               Options Indexes FollowSymLinks
               AllowOverride All
               Order allow,deny
               allow from all
         </Directory>

         SSLEngine On
         SSLCertificateFile /etc/ssl/cert/www_example_com.crt
         SSLCertificateKeyFile /etc/ssl/cert/www_example_com_com.key
         SSLCertificateChainFile /etc/ssl/cert/www_example_com_com.ca-bundle
</VirtualHost>

Нет записей журнала для www.example.com-ssl * .log

Все ваши правила iptables для порта https ниже 3 правил REJECT для UDP, TCP и ВСЕ, поэтому они соответствуют вашему трафику https и отклоняют соединение.

Переместите правила https над ними (вставив их как минимум на 18 позицию) или переместите правила REJECT ниже правил https.

ПРИМЕЧАНИЕ: если Джерард Х. Пилле дает такой же ответ, как и я, пожалуйста, отдайте ему должное.

РЕДАКТИРОВАТЬ: Чтобы очистить все это:

это добавит порт https к уже определенному порту http в группе TCP:

iptables -R TCP 1 -p tcp -m multiport --dports 80,443 -j ACCEPT

это удалит все ненужные правила, которые вы добавили в цепочку INPUT (важен порядок команд):

iptables -D INPUT 25
iptables -D INPUT 24
iptables -D INPUT 23
iptables -D INPUT 22
iptables -D INPUT 21

Цепочка OUTPUT не нуждается ни в одном из этих правил, поскольку она имеет политику по умолчанию ACCEPT (ssh работает, и у вас нет правила OUTPUT для ssh, не так ли?), Поэтому вы можете безопасно удалить их оба:

iptables -D OUTPUT 2
iptables -D OUTPUT 1

ports.conf должно быть

Listen 0.0.0.0:80
Listen 0.0.0.0:443 https

но совсем не обязательно определять эти порты в ports.conf так как:

Вам нужно только установить протокол, если вы работаете на нестандартных портах. Например, при запуске https-сайта на порт 8443

https://httpd.apache.org/docs/2.4/bind.html#protocol