Я пытаюсь открыть дополнительный исходящий порт на своем VPS (порт 5900).
Вот мой / etc / sysconfig / iptables:
# Generated by iptables-save v1.3.5 on Sun Jul 10 11:27:12 2011
*mangle
:PREROUTING ACCEPT [68:4952]
:INPUT ACCEPT [68:4952]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [60:7060]
:POSTROUTING ACCEPT [60:7060]
COMMIT
# Completed on Sun Jul 10 11:27:12 2011
# Generated by iptables-save v1.3.5 on Sun Jul 10 11:27:12 2011
*filter
:INPUT ACCEPT [68:4952]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [60:7060]
:RH-Firewall-1-INPUT - [0:0]
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 5900 -j ACCEPT
COMMIT
# Completed on Sun Jul 10 11:27:12 2011
# Generated by iptables-save v1.3.5 on Sun Jul 10 11:27:12 2011
*nat
:PREROUTING ACCEPT [18:1080]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
# Completed on Sun Jul 10 11:27:12 2011
Однако порт 5900 по-прежнему закрыт.
Кто-нибудь может мне в этом помочь? Спасибо.
Если это для VNC, а ваш VPS размещен на Amazon, обязательно откройте ограничения безопасности и в вашей группе безопасности Amazon (по умолчанию Amazon разрешает только порты 22 и 80).
Выходной порт обычно не заблокирован, поэтому, вероятно, на хосте, с которого установлено соединение, делать нечего.
Кроме того, правило брандмауэра для 5900 должно быть на получение хост (то есть ваш VPS), и я бы предположил, что он должен выглядеть примерно так;
-A INPUT -p tcp -m tcp -m state --dport 5800 --state NEW -j ACCEPT
НО с добавлением проверки того, что IP-адрес принадлежит вашей сети, а не Интернету в целом (открытие VNC для публики, вероятно, небезопасно).
Наконец, если в вашей организации также есть брандмауэр, вы можете проверить, предотвращает ли брандмауэр исходящее соединение на неавторизованных портах.
Политика вашей выходной цепочки - accept. В вашей конфигурации нет правил, запрещающих вывод на порт 5900.
Вы уверены, что что-то слушает на порту 5900?
пытаться
sudo lsof -l :5900
или
sudo netstat -an | grep LISTEN | grep 5900
чтобы увидеть, что (если есть) прикреплено.
Я предполагаю, что вы имеете в виду «входящий», а не «исходящий» порт 5900, потому что ваш исходящий порт правильно открыт по вашим текущим правилам.
Обычно я избавляюсь от цепочки RH-Firewall-1-INPUT и использую следующее:
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
# Allow traffic from the loopback interface
-A INPUT -i lo -j ACCEPT
# Allow ICMP traffic as it helps with connection diagnostics
-A INPUT -p icmp --icmp-type any -j ACCEPT
# Allow traffic from already existing connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow connections on port 5900
-A INPUT -p tcp --dport 5900 -m state --state NEW -j ACCEPT
COMMIT
Но если вы хотите максимально приблизиться к исходной конфигурации CentOS, вы можете попробовать следующее:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type 255 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -m state --state NEW -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 5900 -m state --state NEW -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
Проблема с вашим текущим набором правил заключается в том, что вы не отправляете весь входящий трафик в цепочку RH-Firewall-1-INPUT, что выполняется с помощью следующей строки:
-A INPUT -j RH-Firewall-1-INPUT
Также не забудьте перезагрузить свои правила с помощью перезапуск службы iptables.