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 также?
Другие вопросы по тегам