Какие правила INPUT мне нужно добавить в iptables, чтобы apt (apt-get, aptitude) мог работать (обновлять, обновлять, искать, устанавливать)?

Мне нужно использовать aptitude для обновления и установки программного обеспечения, но это не помогает. Это говорит ...

0% [Connecting to archive.ubuntu.com]

... и останавливается. Мне нужно набрать CTRL-C, чтобы выйти. Я использую Ubuntu Server 10.04 LTS (Lucid Lynx).

Это происходит из-за моих правил iptables . Если я восстановлю iptables по умолчанию (удалив правила и установив политики на ACCEPT), то aptitude будет работать, как и ожидалось. Больше ошибок нет.

Но, эй, я хочу использовать мои правила iptables ... Мне просто нужно знать: что именно мне нужно держать открытым, чтобы заставить apt работать?

1110 Мои правила довольно просты. Политика ВЫХОДА ПРИНЯТА. Политика FORWARD ПРИНЯТА. И у меня нет правил для ВЫХОДА и ВПЕРЕД. Политика INPUT - DROP. Итак, проблема в цепочке INPUT ! У меня есть 11 правил INPUT для открытия определенных портов TCP, которые мне нужны для запуска таких служб, как FTP, SSH, HTTP и т. Д. Дополнительное правило для приема ICMP (ping) и другое для принятия всех входных данных localhost . И это все:

iptables -F
iptables -A INPUT -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 587 -j ACCEPT
iptables -A INPUT -p tcp --dport 995 -j ACCEPT
iptables -A INPUT -p tcp --dport 1008 -j ACCEPT
iptables -A INPUT -p tcp --dport 2812 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp --dport 8000 -j ACCEPT
iptables -P INPUT DROP

Я перепробовал множество правил, пытаясь заставить способность работать. Конечно, простой iptables -P INPUT ACCEPT заставляет это работать, но я не хочу принимать все. Я хочу открыть только то, что необходимо для способности выполнять свою работу.

Мне кажется странным, что цепочка INPUT - это проблема ... но это так.

Другая проблема заключается в том, что у меня нет доступа к журналам iptables ... Я только что обнаружил, что есть ошибка в используемом ядре (см. https://serverfault.com/questions/159818/iptables- регистрация не работает ) ... так что не спрашивайте меня о содержимом журнала, потому что я не могу их получить.

Спасибо!

3
задан 13 April 2017 в 15:14

2 ответа

Когда вы отправляете HTTP-запрос на другой сервер, вы используете TCP. Сначала пакет SYN отправляется на другой сервер через случайный высокий порт, а затем вы получите ответ ACK. Наконец, вы отправляете SYN / ACK на сервер, и сервер отвечает запрошенным документом (в нескольких пакетах). Ваши правила не допускают получения ACK-пакета, и, следовательно, соединение не может быть установлено. Добавьте правило вроде:

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Вы не получаете журналы iptables бесплатно. Ваши правила должны выглядеть следующим образом:

# if no rule matched, the input should be dropped
-P INPUT DROP

-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
# etc

# the limit prevents your logs from being flooded if there are a lot packets being captured
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied" --log-level debug

Обратите внимание, что перед командами я опустил iptables, я рекомендую использовать iptables-restore (или iptables-apply для тестирования), чтобы не блокировать себя, если правило не может применяться. Файл, передаваемый команде, выглядит следующим образом:

*FILTER
# your rules here, for example:
-P INPUT DROP
-P INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
COMMIT

Новая строка после строки COMMIT является обязательной.

По умолчанию записи переходят на /var/log/kern.log. Не хорошо, если вы хотите различать сообщения ядра и iptables, поэтому создайте фильтр для rsyslog в /etc/rsyslog.d/iptables.conf, содержащий:

:msg,contains,"iptables denied" /var/log/iptables.log
& ~

Это отфильтрует ошибки iptables и отправит их в /var/log/iptables.log.

0
ответ дан 13 April 2017 в 15:14

В Ubuntu 18 способное обновление не сделало работавший, пока я не позволил обратную петлю (с -i lo ACCEPT). Так, мои "безопасные правила" список

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT
0
ответ дан 1 December 2019 в 15:30

Другие вопросы по тегам:

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