нет связи с рекомендованной Linode настройкой iptables (ubuntu 16.04)

У меня есть сервер Ubuntu 16.04 на Linode.

Моя цель состояла в том, чтобы запустить несколько веб-серверов на нескольких портах, а затем подключиться к ним, используя адрес моего хоста, .members.linode.com .

Я установил Nginx, и он действительно заработал. Я мог посетить : и увидеть свой сайт.

Проблемы возникли, когда я пытался добавить правила iptable в соответствии с их рекомендациями по защите сервера . После выполнения следующих команд, Я больше не могу подключиться по этому URL.

Я вижу эту ошибку в моем браузере

This site can’t be reached
<url> refused to connect.

Я могу воспроизвести эту ошибку с помощью следующих сценариев. Запуск первого приводит к тому, что я не могу подключиться. Запуск второго и затем позволяет мне подключиться снова:

Устанавливает рекомендуемые Linode правила iptables

# setup_iptables.sh

rm /tmp/v4
rm /tmp/v6    cp ./tmp_v4_rules /tmp/v4
cp ./tmp_v6_rules /tmp/v6
iptables-restore < /tmp/v4
ip6tables-restore < /tmp/v6

Отключает межсетевой экран , как рекомендовано здесь

# stop_firewall.sh

#!/bin/sh
echo "Stopping firewall and allowing everyone..."
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

В сценарии start_iptables.sh я имею в виду файлы tmp_v4_rules и tmp_v6_rules . Вот как они выглядят. Они взяты из руководства по безопасности Linode, на которое я ссылался ранее.

tmp_v4_rules копируется в / tmp / v4

*filter

# Allow all loopback (lo0) traffic and reject traffic
# to localhost that does not originate from lo0.
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT

# Allow ping.
-A INPUT -p icmp -m state --state NEW --icmp-type 8 -j ACCEPT

# Allow SSH connections.
-A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT

# Allow HTTP and HTTPS connections from anywhere
# (the normal ports for web servers).
-A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
-A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT

# Allow inbound traffic from established connections.
# This includes ICMP error returns.
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Log what was incoming but denied (optional but useful).
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables_INPUT_denied: " --log-level 7

# Reject all other inbound.
-A INPUT -j REJECT

# Log any traffic that was sent to you
# for forwarding (optional but useful).
-A FORWARD -m limit --limit 5/min -j LOG --log-prefix "iptables_FORWARD_denied: " --log-level 7

# Reject all traffic forwarding.
-A FORWARD -j REJECT

COMMIT

tmp_v6_rules копируется в / tmp / v6

*filter

# Allow all loopback (lo0) traffic and reject traffic
# to localhost that does not originate from lo0.
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -s ::1/128 -j REJECT

# Allow ICMP
-A INPUT -p icmpv6 -j ACCEPT

# Allow HTTP and HTTPS connections from anywhere
# (the normal ports for web servers).
-A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
-A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT

# Allow inbound traffic from established connections.
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Log what was incoming but denied (optional but useful).
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "ip6tables_INPUT_denied: " --log-level 7

# Reject all other inbound.
-A INPUT -j REJECT

# Log any traffic that was sent to you
# for forwarding (optional but useful).
-A FORWARD -m limit --limit 5/min -j LOG --log-prefix "ip6tables_FORWARD_denied: " --log-level 7

# Reject all traffic forwarding.
-A FORWARD -j REJECT

COMMIT

Я был бы признателен за рекомендацию, как чтобы отладить это. Я полагаю, что рекомендации iptables существуют не просто так, и это нехорошо, что мне приходится выключать брандмауэр, чтобы подключиться к моему сайту. Тем не менее, я понятия не имею, какая часть набора правил iptables не работает.


Из комментария Майкла было предложено посмотреть файл журнала. Из здесь рекомендуется посмотреть /var/log/kern.log , чтобы увидеть отклонения iptables.

Я действительно вижу кучу отказов. На самом деле кажется, что все отрицает. Вот один пример:

Sep  1 09:58:31 li1196-141 kernel: iptables_INPUT_denied: 
IN=eth0 OUT= MAC=<OMMITTED> SRC=<OMMITTED> DST=<OMMITTED> LEN=60 
TOS=0x00 PREC=0x00 TTL=52 ID=63084 DF PROTO=TCP SPT=36306 DPT=23 
WINDOW=5808 RES=0x00 SYN URGP=0 

на самом деле вообще не понимаю, что это значит. Нет опыта работы с iptables. У меня 600 уникальных журналов отказа. Не уверен, что искать.


Еще несколько журналов из /var/log/kern.log:

Я очистил файл, запустил первый скрипт, попытался подключиться, затем появились эти 5 файлов. При обновлении окна браузера больше строк в файл журнала не добавлялось.

Sep  2 02:55:15 li1196-141
kernel: iptables_INPUT_denied:
IN=eth0 OUT=
MAC=<OMMITTED>
SRC=<OMMITTED>
DST=<OMMITTED>
LEN=60 TOS=0x00 PREC=0x00
TTL=53 ID=33801 DF
PROTO=TCP SPT=34834
DPT=6066 WINDOW=14600
RES=0x00 SYN URGP=0 

Sep  2 02:55:15 li1196-141
kernel: iptables_INPUT_denied:
IN=eth0 OUT=
MAC=<OMMITTED>
SRC=<OMMITTED>
DST=<OMMITTED>
LEN=60 TOS=0x00 PREC=0x00
TTL=53 ID=34016 DF
PROTO=TCP SPT=34839
DPT=6066 WINDOW=14600
RES=0x00 SYN URGP=0 

Sep  2 02:55:15 li1196-141
kernel: iptables_INPUT_denied:
IN=eth0 OUT=
MAC=<OMMITTED>
SRC=<OMMITTED>
DST=<OMMITTED>
LEN=60 TOS=0x00 PREC=0x00
TTL=53 ID=31437 DF
PROTO=TCP SPT=34836
DPT=6066 WINDOW=14600
RES=0x00 SYN URGP=0 

Sep  2 02:55:15 li1196-141
kernel: iptables_INPUT_denied:
IN=eth0 OUT=
MAC=<OMMITTED>
SRC=<OMMITTED>
DST=<OMMITTED>
LEN=60 TOS=0x00 PREC=0x00
TTL=53 ID=62629 DF
PROTO=TCP SPT=34835
DPT=6066 WINDOW=14600
RES=0x00 SYN URGP=0 

I ' Я почти уверен, что это подходящие журналы для моей попытки подключения. Мой веб-сервер работает на порту 6066, и в журнале я вижу DPT = 6066

0
задан 13 April 2017 в 15:22
1 ответ

Как заметил Майкл, я пытался подключиться через некоторые произвольные порты (6066, 1234, 9292), но я не внес эти порты в белый список в конфигурации iptables.

I добавил следующие строки:

-A INPUT -p tcp --dport 6066 -m state --state NEW -j ACCEPT
-A INPUT -p tcp --dport 1234 -m state --state NEW -j ACCEPT
-A INPUT -p tcp --dport 9292 -m state --state NEW -j ACCEPT

затем запустил мой сценарий setup_iptables.sh для загрузки новых правил.

1
ответ дан 4 December 2019 в 16:30

Теги

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