Форум программистов, компьютерный форум, киберфорум
Наши страницы
Софт для Linux
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.90/10: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Casper-SC
Эксперт .NET
4092 / 1942 / 381
Регистрация: 27.03.2010
Сообщений: 5,345
Записей в блоге: 1
1

Как настроить iptables так, чтобы входящие HTTP, HTTPS и SSH соединения работали?

13.01.2020, 23:32. Просмотров 1804. Ответов 14
Метки нет (Все метки)

Развернул Ubuntu 18.04 на виртуальной машине на одном хостинге. Установил Nginx, ввожу в браузере IP-адрес сервера, браузер пишет через некоторое время:
Превышено время ожидания ответа от сайта <Название сайта>.
ERR_CONNECTION_TIMED_OUT
Домен есть, к которому привязан IP адрес виртуальной машины на хостинге (вроде так дела обстоят ).

Как мне настроить это дело так, чтобы входящие соединения на 80 и 443 порты работали? Если нужна какая-то информация, то подскажите, что нужно напечатать в консоли, чтобы я её получил.
0
Изображения
Тип файла: jpg Screenshot_267.jpg (273.7 Кб, 15 просмотров)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2020, 23:32
Ответы с готовыми решениями:

Как настроить IIS чтобы работали CGI скрипты?
u menia na servere ustanovlena PERL no eto ne pomagaet. V HTML kod vstavlio sviaz s cgi tak: ...

Http соединения на https сайте
Доброго дня! Встала задача перевести сайт на https. Проблема в том, что сайт использует...

Битрикс: переход с http на https, как настроить 301 редирект в htaccess
Приветствую! Посоветуйте, как настроить 301 редирект на Битриксе после перехода с http на https ?...

Как правильно настроить редирект с http на https чтоб и с www и без?
Подскажите, поалуйста, новичку, как правильно настроить редирект c http на https всего сайта? Хочу...

Как сделать так, чтобы wifi и локальная сеть работали вместе
win server 2003,когда включены обе сети то работает только локальная а вафля нет, по отдельности...

14
Casper-SC
Эксперт .NET
4092 / 1942 / 381
Регистрация: 27.03.2010
Сообщений: 5,345
Записей в блоге: 1
14.01.2020, 00:13  [ТС] 2
ufw status
0
Изображения
Тип файла: jpg Screenshot_268.jpg (85.0 Кб, 8 просмотров)
Casper-SC
Эксперт .NET
4092 / 1942 / 381
Регистрация: 27.03.2010
Сообщений: 5,345
Записей в блоге: 1
14.01.2020, 00:34  [ТС] 3
netstat -an|grep 80
Screenshot_269.jpg
0
Kubuntovod
965 / 137 / 34
Регистрация: 14.01.2013
Сообщений: 683
14.01.2020, 04:42 4
А при удалении всех фильтров пускает?
0
14.01.2020, 04:42
insect_87
Эксперт по компьютерным сетям
5533 / 4320 / 942
Регистрация: 25.12.2012
Сообщений: 18,330
14.01.2020, 07:26 5
1. Firewalld выключен?
2. Если остановить iptables, доступ появится?
0
Casper-SC
Эксперт .NET
4092 / 1942 / 381
Регистрация: 27.03.2010
Сообщений: 5,345
Записей в блоге: 1
14.01.2020, 12:56  [ТС] 6
Цитата Сообщение от Kubuntovod Посмотреть сообщение
А при удалении всех фильтров пускает?
Да. Но просто всё удалять не хотелось бы. Мне нужно либо как-то настроить с нуля, чтобы было норм, либо открыть порт в текущем конфиге.

Добавлено через 5 минут
Цитата Сообщение от insect_87 Посмотреть сообщение
2. Если остановить iptables, доступ появится?
Останавливать не пробовал, но мне техподдержка помогла просто удалив всё. Понятное дело, что это временное решение, хотелось бы по уму настроить. Хотя бы какую-то базовую настройку сделать.

Добавлено через 2 минуты
Цитата Сообщение от insect_87 Посмотреть сообщение
1. Firewalld выключен?
Command 'firewalld' not found, but can be installed with:

apt install firewalld
0
Kubuntovod
965 / 137 / 34
Регистрация: 14.01.2013
Сообщений: 683
14.01.2020, 15:16 7
Цитата Сообщение от Casper-SC Посмотреть сообщение
Да. Но просто всё удалять не хотелось бы. Мне нужно либо как-то настроить с нуля, чтобы было норм, либо открыть порт в текущем конфиге.
Всё удаляют именно для того, чтобы удостовериться, что без правил работает. Значит косяк где-то в правилах. Кстати, правила можно сохранять и восстанавливать, не боясь удаления. Специально для этого придумали iptables-save/iptables-restore.

Выложите сюда выхлоп команды:
Код
sudo iptables -L -n
А то читать скрины глаза вытекают.
0
Dmitry
Эксперт по компьютерным сетямЭксперт NIX
11274 / 6466 / 571
Регистрация: 09.09.2009
Сообщений: 25,605
14.01.2020, 15:54 8
Лучший ответ Сообщение было отмечено Casper-SC как решение

Решение

Не по теме:

Цитата Сообщение от insect_87 Посмотреть сообщение
остановить iptables
боюсь, у вас не получится показать "запущеный" iptables (т.к. это не демон, а всего лишь (одна из многих) утилит, управляющих реальным файеролом - модулем ядра netfilter, который, кстати, запущен ВСЁ ВРЕМЯ, но у которого могут быть не загружены правила фильтрации пакетов)

устанавливать всякие там ufw, firewalld, shorewall, прочее - особого смысла не имеет. все потребности вполне в состоянии удовлетворить команда iptables

в интернете полно ее описаний, как и каких-то готовых скриптов, с насыпанными в них правилами.
по факту скрипт такой "минимально" должен сделать три вещи:
  • сбросить все правила и цепочки
  • назначить "дефолтные" действия для цепочек
  • назначить необходимые правила
все

сброс:
Код
/sbin/iptables -F 
/sbin/iptables -F -t nat
/sbin/iptables -F -t mangle
дефолтные действия для цепей ("вход" и "форвард" по умолчанию все отбрасывают, "выход" - открыт:
Код
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT ACCEPT
ну и парочка правил:

данное правило разрешает прохождение пакетов для "уже установленных" соединений (типа, коль уж клиент к веб-серверу уже подключился, то пускай "файервол" теперь его "впускает", чтобы он мог и дальше получать ответы от вебсервера):
Код
/sbin/iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
а это правило просто "открывает" 80-й порт:
Код
/sbin/iptables -A INPUT  -p tcp -m tcp --dport 80 --syn -j ACCEPT
подробное чтиво про iptables доступно, например, тут:
https://www.opennet.ru/docs/RUS/iptables/
2
Casper-SC
Эксперт .NET
4092 / 1942 / 381
Регистрация: 27.03.2010
Сообщений: 5,345
Записей в блоге: 1
14.01.2020, 16:55  [ТС] 9
Цитата Сообщение от Kubuntovod Посмотреть сообщение
Выложите сюда выхлоп команды:
Код
sudo iptables -L -n
А то читать скрины глаза вытекают.
hain INPUT (policy ACCEPT)
target prot opt source destination
all -- 0.0.0.0/0 0.0.0.0/0 /* This rule enables all packets for established conne$
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
disablelocal all -- 0.0.0.0/0 0.0.0.0/0
SSH all -- 0.0.0.0/0 0.0.0.0/0
RATE-LIMIT all -- 0.0.0.0/0 0.0.0.0/0

Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain RATE-LIMIT (1 references)
target prot opt source destination
all -- 0.0.0.0/0 0.0.0.0/0 /* This rule restricts packet-rate of traffic */
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x17/0x02 #conn src/24 > 20
RETURN all -- 0.0.0.0/0 0.0.0.0/0 limit: up to 100/sec burst 10
DROP all -- 0.0.0.0/0 0.0.0.0/0

Chain SSH (1 references)
target prot opt source destination
all -- 0.0.0.0/0 0.0.0.0/0 /* This rule disables all non-SSH */
RETURN tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
DROP all -- 0.0.0.0/0 0.0.0.0/0

Chain disablelocal (1 references)
target prot opt source destination
all -- 0.0.0.0/0 0.0.0.0/0 /* This rule disables all unknown traffic */
RETURN all -- 169.254.0.0/16 0.0.0.0/0 /* This rule disables all local traffic */
RETURN all -- 10.223.0.0/29 0.0.0.0/0
DROP all -- 10.223.0.0/16 0.0.0.0/0
DROP all -- 10.0.0.0/8 0.0.0.0/0
DROP all -- 192.168.0.0/16 0.0.0.0/0
RETURN all -- 0.0.0.0/0 0.0.0.0/0

Добавлено через 1 минуту
После рестарта сервера. Раньше он был немного другой. Везде было Policy Drop. Почему оно изменилось не знаю. Но при таком конфиге всё равно нельзя никуда подключиться. Попробую выполнить команды, которые показали выше, потмо если что отпишусь.

Добавлено через 6 минут
Цитата Сообщение от Dmitry Посмотреть сообщение
/sbin/iptables -P INPUT DROP
После этой команды падает SSH соединение и приходится перезапускать виртуальную машину на хостинге. Можно как-то выполнить эти команды так, чтобы у меня не падал коннект с ОСью на виртуальной машине?

Добавлено через 38 секунд
Наверное, нужно создать скрипт и запускать его? Или в другом порядке?
0
Dmitry
Эксперт по компьютерным сетямЭксперт NIX
11274 / 6466 / 571
Регистрация: 09.09.2009
Сообщений: 25,605
14.01.2020, 17:06 10
Цитата Сообщение от Casper-SC Посмотреть сообщение
После этой команды
она закрывает цепь INPUT - ставит ей умолчательное действие DROP (а цепь INPUT - это "вход" извне к самому серверу (вне зависимости от портов/протоколов и т.п.). т.е. сервер начинает отбрасывать все входящие подключения
--------------------------------
Цитата Сообщение от Casper-SC Посмотреть сообщение
Раньше он был немного другой. Везде было Policy Drop
интересней то, что сейчас
Цитата Сообщение от Casper-SC Посмотреть сообщение
policy ACCEPT
, означающее "по умолчанию принимать", и при этом ...
Цитата Сообщение от Casper-SC Посмотреть сообщение
всё равно нельзя никуда подключиться
1
Casper-SC
Эксперт .NET
4092 / 1942 / 381
Регистрация: 27.03.2010
Сообщений: 5,345
Записей в блоге: 1
14.01.2020, 18:21  [ТС] 11
Цитата Сообщение от Dmitry Посмотреть сообщение
она закрывает цепь INPUT - ставит ей умолчательное действие DROP (а цепь INPUT - это "вход" извне к самому серверу (вне зависимости от портов/протоколов и т.п.). т.е. сервер начинает отбрасывать все входящие подключения
Понял. А есть способ мне эту команду выполнить и не потерять соединение по SSH?

Добавлено через 9 минут
Вообще все эти дела я буду делать после 21 часа сегодня. Сейчас я пока бегло пробую варианты.
0
Dmitry
Эксперт по компьютерным сетямЭксперт NIX
11274 / 6466 / 571
Регистрация: 09.09.2009
Сообщений: 25,605
14.01.2020, 18:25 12
если только эту одну единственную - имхо, нет
обычно все эти наборы правил собирают пачкой в один скрипт и запускают уже его.
кроме того, в плане "закрыть" есть два подхода
  • поставить политику "дроп", а потом насыпать правила, разрешающие нужные подключения
  • постатавить политику аксепт", насыпать правила, разрешающие нужные подключения, а после них (последним для цепи) написать (уже "просто") правило (а не политику) "дроп"
1
Kubuntovod
965 / 137 / 34
Регистрация: 14.01.2013
Сообщений: 683
14.01.2020, 19:51 13
Лучший ответ Сообщение было отмечено Casper-SC как решение

Решение

Предлагаю действовать примерно в такой последовательности. То есть, создаём цепочку, добавляем разрешающие правила, в конце добавляем правило идти лесом. Список должен получиться в причёсанную ёлочку. Все команды можно набить в скрипт, чтобы комфортнее было добавлять/убавлять записи. Чтобы вся эта бодяга возрождалась при ребуте, почитайте про iptables-save/restore.
1
Casper-SC
Эксперт .NET
4092 / 1942 / 381
Регистрация: 27.03.2010
Сообщений: 5,345
Записей в блоге: 1
15.01.2020, 14:44  [ТС] 14
Просто
Пример из официальной документации не работает (пункт Базовая конфигурация).
https://help.ubuntu.ru/wiki/iptables

Добавлено через 24 минуты
Kubuntovod, я применил всё из предложенной ссылки. Теперь перестало работать соединение через WinSCP. Видимо нужно разрешить соединение по протоколу SFTP. Может кто подсказать как?

Добавлено через 5 минут
Я взял конфиг по предложенной ссылке.

Разобрался. Это:

# Define chain to allow particular source addresses
iptables -N chain-incoming-ssh
iptables -A chain-incoming-ssh -s 192.168.1.148 -j ACCEPT
iptables -A chain-incoming-ssh -s 192.168.1.149 -j ACCEPT
iptables -A chain-incoming-ssh -j DROP

# Accept incoming SSH
iptables -A INPUT -p tcp --dport 22 -j chain-incoming-ssh

Меняем на это:

# Accept incoming SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Или даже так, чтобы было удобно добавлять правила:

# Define chain to allow particular source addresses
iptables -N chain-incoming-ssh
iptables -A chain-incoming-ssh -j ACCEPT

# Accept incoming SSH
iptables -A INPUT -p tcp --dport ssh -j chain-incoming-ssh
Добавлено через 4 минуты
У меня получился такой конфиг, пока всё работает и вроде как хоть что-то настроено, а не совсем голая система:
Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# Таблица mangle — содержит правила модификации (обычно заголовка) IP-пакетов.
# Таблица nat — просматривает только пакеты, создающие новое соединение (согласно системе определения состояний). Поддерживает действия DNAT, SNAT, MASQUERADE, REDIRECT. Содержит цепочки PREROUTING, OUTPUT, и POSTROUTING.
 
 
# Flush rules and delete custom chains
iptables -F
iptables -X
 
# Define chain to allow particular source addresses
iptables -N chain-incoming-ssh
iptables -A chain-incoming-ssh -j ACCEPT
 
# Define chain to allow particular services
iptables -N chain-outgoing-services
iptables -A chain-outgoing-services -p tcp --dport 53  -j ACCEPT
iptables -A chain-outgoing-services -p udp --dport 53  -j ACCEPT
iptables -A chain-outgoing-services -p tcp --dport 123 -j ACCEPT
iptables -A chain-outgoing-services -p udp --dport 123 -j ACCEPT
iptables -A chain-outgoing-services -p tcp --dport 80  -j ACCEPT
iptables -A chain-outgoing-services -p tcp --dport 443 -j ACCEPT
iptables -A chain-outgoing-services -p tcp --dport 22  -j ACCEPT
iptables -A chain-outgoing-services -p icmp            -j ACCEPT
iptables -A chain-outgoing-services -j DROP
 
# Define chain to allow established connections
iptables -N chain-states
iptables -A chain-states -p tcp  -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A chain-states -p udp  -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A chain-states -p icmp -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A chain-states -j RETURN
 
# Drop invalid packets
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
 
# Accept everything on loopback
iptables -A INPUT  -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
 
# Accept incoming/outgoing packets for established connections
iptables -A INPUT  -j chain-states
iptables -A OUTPUT -j chain-states
 
# Accept incoming ICMP
iptables -A INPUT -p icmp -j ACCEPT
 
# Accept incoming SFTP
iptables -A INPUT -p sftp -j ACCEPT
 
# Accept incoming SSH
iptables -A INPUT -p tcp --dport ssh -j chain-incoming-ssh
 
# Accept incoming HTTP
iptables -A INPUT  -p tcp -m tcp --dport http --syn -j ACCEPT
 
# Accept incoming HTTPS
iptables -A INPUT  -p tcp -m tcp --dport https --syn -j ACCEPT
 
# Accept outgoing 
iptables -A OUTPUT -j chain-outgoing-services
 
## Drop everything else
iptables -P INPUT   DROP
iptables -P FORWARD DROP
iptables -P OUTPUT  DROP
0
Kubuntovod
965 / 137 / 34
Регистрация: 14.01.2013
Сообщений: 683
15.01.2020, 14:45 15
Цитата Сообщение от Casper-SC Посмотреть сообщение
Или даже так, чтобы было удобно добавалять правила:
Прогресс налицо!
0
15.01.2020, 14:45
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2020, 14:45

как сделать так, чтобы условие с if после первого if работали дальше, что-то никак не пойму
#include &lt;stdio.h&gt; int main(void) { int mass; int i, j; for (i=0;i&lt;4;++i){ for...

Можно ли сделать так, чтобы одновременно работали два цикла
Здравствуйте, столкнулся с ситуацией, где есть вложенные циклы: ... for(i=0; i&lt;n; i++) ...

Сделать так, чтобы все компьютеры работали на виртуальных рабочих столах
Добрый день! Такое дело, имеется в офисе сервер на 2012r2. Нужно сделать так, чтобы все компьютеры...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.