Мне нужно использовать 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- регистрация не работает ) ... так что не спрашивайте меня о содержимом журнала, потому что я не могу их получить.
Спасибо!
Когда вы отправляете 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
.
В 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