iptables - я правильно это делаю?
ОБНОВИТЬ
Мальчик, я рад, что спросил. ОК, попробую еще раз и выложу еще вопрос.
Я хотел бы настроить хост CentOS 5.3, чтобы разрешить только соединения ping, ssh, httpd и SSL.
После прочтения учебника и попытки создать конфигурацию, вот где я нахожусь...
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
REJECT all -- anywhere 127.0.0.0/8 reject-with icmp-port-unreachable
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:https
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT icmp -- anywhere anywhere icmp echo-request
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
Chain RH-Firewall-1-INPUT (0 references)
target prot opt source destination
Мне кажется, что я достиг своей цели, но я подумал, что я должен дважды проверить с экспертами здесь.
Что-то выглядит совершенно неправильно?
3 ответа
Ваши политики (кроме выходных) должны быть отброшены (следующий код не предполагает никаких правил)
начать с этого
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP
Теперь добавьте любые другие сервисы, которые вам могут понадобиться на интерфейсе.
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
не используйте отклонение, пока вы не ограничите его... помните, что для каждого отправленного пакета, который отклонен, будет отправлен обратно, это может создать большой трафик. Я говорю, просто не используйте его
У меня есть вещь, которую я написал для использования на рабочем столе здесь
Похоже, вы настроены запретить все, что пытается использовать TCP для связи с локальным хостом. Я бы избегал этого, потому что есть несколько законных вещей, которые будут предотвращены этим.
Единственное, что в корне неверно, это то, что вы блокируете ICMP. Очень очень плохая идея. Это нарушает обнаружение PMTU. Просто пропустите ICMP.
Я предполагаю, что вы только что добавили это для тестирования, но:
ACCEPT all -- anywhere anywhere
разрешает весь трафик Итак, этот набор правил ничего не делает.
Вы также ломаете:
- внутренние сервисы говорят по шлейфу (правило должно говорить "пакеты не приходят на lo")
- ping-ответы (пропустите ICMP!)
Предложения:
- Почему бы не добавить
state NEW
на вашdpt:http
а такжеdpt:https
также?