В зависимости от того, кто вас размещает, локальная сеть (к которой принадлежат ваши локальные адреса) может быть частной сетью, доступной только вашим экземплярам, или, что более вероятно, она будет использоваться совместно с другими виртуальными машинами, которые не принадлежит тебе. Вы не будете открыты для прямых внешних атак, но любая скомпрометированная виртуальная машина, использующая ту же локальную сеть, что и вы, может стать трамплином для атаки, поэтому ваши опасения абсолютно верны.
Отвечая по порядку на две ваши проблемы:
- Настройте
iptables
для локальных интерфейсов, чтобы они принимали запросы, поступающие только на определенные порты, с определенных локальных IP-адресов (для лучшего понимания конфигурации iptables
прочитайте учебное пособие .) Все другие виртуальные машины в локальной сети не должны быть в состоянии проверять вас, хотя они могут перехватывать ваш трафик (см. Ниже.)
- Нет; Вы должны использовать SSL для всех внутриузловых соединений . Это защитит вас двумя способами: во-первых, это защитит вас от подмены (злоумышленник будет отклонен, если у него нет вашего сертификата, даже если он обходит
iptables
путем подмены своего адреса или потому, что ваша конфигурация iptables
перезаписана администратором), а во-вторых, это защитит ваши данные от посторонних глаз (например, злоумышленник не сможет отследить трафик для ваших паролей.) Некоторые приложения (например, большинство движков баз данных, net-snmpd, настроенные в режиме v3 и т. д.). ) Поддержка SSL изначально. В качестве альтернативы, установите и используйте ssh
туннели или используйте stunnel
Пример базовой iptables
конфигурации, позволяющей базовые службы (HTTP, SSH и т. Д.) На общедоступном (интернет) интерфейсе, а также позволяющую www1
и www2
подключаться к MySQL этого узла через порт 3306 на * Интерфейс 1029 * (www1
и www2
определены в /etc/hosts
, поэтому они разрешаются на соответствующие IP-адреса.):
# * raw
#
# Allows internal traffic without loading conntrack
# -A PREROUTING -i lo -d 127.0.0.0/8 -j NOTRACK
*filter
# Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT -i ! lo -d 127.0.0.0/8 -j DROP
# Accepts all established inbound connections (TCP, UDP, ICMP incl. "network unreachable" etc.)
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allows all outbound traffic
# You can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT
# Allows HTTP and HTTPS connections from anywhere (the normal ports for websites)
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
# Allows SSH connections
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
# Allow ping
-A INPUT -p icmp -m icmp --icmp-type echo-request -j ACCEPT
# log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level debug
# Reject all other inbound - default deny unless explicitly allowed policy
-A INPUT -j REJECT
-A FORWARD -j REJECT
# Allows MySQL within our cluster ONLY
-A INPUT -p tcp -s www1 -i eth0 --dport 3306 -j ACCEPT
-A INPUT -p udp -s www1 -i eth0 --dport 3306 -j ACCEPT
-A INPUT -p tcp -s www2 -i eth0 --dport 3306 -j ACCEPT
-A INPUT -p udp -s www2 -i eth0 --dport 3306 -j ACCEPT
COMMIT