savostin
@savostin
Еще один программист

Помогите с настройкой iptables

Пожалуйста, не пинайте и не минусуйте — я честно выкурил пол-интернета перед тем, как задать вопрос.
Есть VPS — CentOS под OpenVZ.
Есть простейший iptables:
*filter
:FORWARD ACCEPT [0:0]
:INPUT DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -p tcp -m tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
COMMIT

и iptables-config:
IPTABLES_MODULES=""

Не работает:
> modprobe ip_conntrack
FATAL: Module ip_conntrack not found. 
> modprobe ip_conntrack_ftp
FATAL: Module ip_conntrack_ftp not found. 
> iptables -t filter -A INPUT -j LOG --log-prefix "DROP"
iptables: Unknown error 18446744073709551615
> wget http://ya.ru
Resolving ya.ru... 93.158.134.3, 93.158.134.203, 87.250.251.3, ...
Connecting to ya.ru|93.158.134.3|:80... failed: Connection timed out.
а также passive FTP, и yum, и пр.
Т.е. похоже именно правило
-A INPUT -p tcp -m tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
и не работает, модулей ip_conntrack и ip_conntrack_ftp нет и установить их нельзя, т.к. OpenVZ (?) Логов тоже нет, т.е. посмотреть что именно дропится тоже никак.

В техподдержке хостера меня уже люто ненавидят, посоветовали через флаги, но добавление
-A INPUT -p tcp -m tcp --tcp-flags SYN,ACK SYN -j ACCEPT
не помогает.

Что ему еще надо, чтоб related пускало? :INPUT ACCEPT [0:0] -> все работает
  • Вопрос задан
  • 8065 просмотров
Пригласить эксперта
Ответы на вопрос 4
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
Внутри OpenVZ вы не можете делать modprobe. Просите хостера включить нужные вам модули.
Ответ написан
@smartlight
сделай так:
# Keep state.
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# http/https, smtp/smtps, pop3/pop3s, imap/imaps, ssh
$IPTABLES -A INPUT -p tcp -m multiport --dport 80,443,25,465,110,995,143,993,587,465,22 -j ACCEPT

# Loop device.
$IPTABLES -A INPUT -i lo -j ACCEPT

# Allow PING from remote hosts.
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -j ACCEPT



просмотр текущих правил: iptables -nL
Ответ написан
@smartlight
покажи вывод iptables -nL

кстати, есть еще tcpdump — он хорошо помогает в отладке настроек
Ответ написан
savostin
@savostin Автор вопроса
Еще один программист
Вобщем методом тыка мне кажется получилось:
-A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT
Если кто-то разбирается, подскажите пожалуйста что я сделал, чем это может грозить и что еще нужно добавить?
Полный iptables теперь выглядит так:
> /sbin/iptables -nL
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:53
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp state RELATED,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x10/0x10
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы