Автор Тема: пытаюсь разобраться в iptables правилах  (Прочитано 2234 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн mitiya

  • Новичок форума
  • Сообщений: 4
началось все с того что мне нужно было закрыть все входящие кроме ssh

я думал все просто , сделаю так

iptables -P INPUT DROP
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

но не тут то было.
после применения этого правила, стал очень сильно тормозить процесс авторизации в ssh

мне подкинули следующий скрипт, не объяснили что и как там работает.

#!/bin/bash
# NETFILTER

# SYSTEM VARIABLES
IPTABLES="/sbin/iptables"

# NETWORK VARIABLES

LAN="eth0"
INET="eth0"
LOOPBACK="lo"
ANYNET="0.0.0.0/0"

# SET POLICIES & FLUSH ALL THE CHAINS

    $IPTABLES -P INPUT DROP
    $IPTABLES -P FORWARD DROP
    $IPTABLES -P OUTPUT ACCEPT
    $IPTABLES -t nat -P PREROUTING ACCEPT
    $IPTABLES -t nat -P POSTROUTING ACCEPT
    $IPTABLES -t nat -P OUTPUT ACCEPT
    $IPTABLES -t mangle -P PREROUTING ACCEPT
    $IPTABLES -t mangle -P OUTPUT ACCEPT
    $IPTABLES -F
    $IPTABLES -t nat -F
    $IPTABLES -t mangle -F
    $IPTABLES -X
    $IPTABLES -t nat -X
    $IPTABLES -t mangle -X

    # $IPTABLES -I INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

# CUSTOM CHAINS

    $IPTABLES -N chain_ssh
    $IPTABLES -F chain_ssh
    # see /proc/net/xt_recent/SSH
    $IPTABLES -A chain_ssh -m recent --set --name SSH
    $IPTABLES -A chain_ssh -m recent --update --seconds 60 --hitcount 2 --name SSH -j DROP
    $IPTABLES -A chain_ssh -m limit --limit 1/second -p tcp --tcp-flags ALL RST --dport 22 -j LOG --log-level 4 --log-prefix "chain_ssh RST: "
    $IPTABLES -A chain_ssh -m limit --limit 1/second -p tcp --tcp-flags ALL FIN --dport 22 -j LOG --log-level 4 --log-prefix "chain_ssh FIN: "
    $IPTABLES -A chain_ssh -m limit --limit 1/second -p tcp --tcp-flags ALL SYN --dport 22 -j ACCEPT

#=======================================================================
#=======================================================================
# FILTER

#=======================================================================
# INPUT CHAIN
#=======================================================================

    # redirect to ssh chain
    $IPTABLES -A INPUT -s $ANYNET -p tcp --dport 22 -j chain_ssh

    # allow all input loopback
    $IPTABLES -A INPUT -i $LOOPBACK -j ACCEPT

#=======================================================================
# FORWARD CHAIN
#=======================================================================



#=======================================================================
# OUTPUT CHAIN
#=======================================================================

# redirect to additional tcp filtering chain

# allow all output loopback
    $IPTABLES -A OUTPUT -o $LOOPBACK -j ACCEPT

я его опробовал на virtualbox и все отлично заработао, но опять же не понятно из-за чего.

а вот на vps не заработало, вообще не могу правила применить там.
 

yura_n

  • Гость
Re: пытаюсь разобраться в iptables правилах
« Ответ #1 : 14 Мая 2013, 00:08:13 »
Зачем столько всего?! Вот так попробуйте:
#!/bin/bash
IPTABLES="/sbin/iptables"

# Запрет доступа на все.
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP

# Разрешение пакетов для интерфейса обратной петли.
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT

$IPTABLES -A INPUT -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT

# Открытие TCP портов.
$IPTABLES -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

 

Оффлайн mitiya

  • Новичок форума
  • Сообщений: 4
Re: пытаюсь разобраться в iptables правилах
« Ответ #2 : 14 Мая 2013, 01:19:26 »
на vps команда

$IPTABLES -A INPUT -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT

вызывает такой вот ответ

iptables: No chain/target/match by that name.
 

Оффлайн fry

Re: пытаюсь разобраться в iptables правилах
« Ответ #3 : 14 Мая 2013, 01:56:27 »
Если тормозит процесс авторизации, то попробуйте добавить в /etc/ssh/sshd_config строку
UseDNS noПотом перезапустите демона ssh и попробуйте заново авторизоваться.
Товарищи призывники! Надо понимать всю глубину наших глубин!

Руководство по добавлению изображений на форум
 

yura_n

  • Гость
Re: пытаюсь разобраться в iptables правилах
« Ответ #4 : 14 Мая 2013, 02:39:29 »
Попробуйте так:
#!/bin/bash
IPTABLES="/sbin/iptables"

# Запрет доступа на все.
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP

# Разрешение пакетов для интерфейса обратной петли.
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT

# Разрешение трафика для соединений.
$IPTABLES -A INPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Открытие TCP портов.
$IPTABLES -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
« Последнее редактирование: 14 Мая 2013, 02:43:49 от yura_n »
 

Оффлайн mitiya

  • Новичок форума
  • Сообщений: 4
Re: пытаюсь разобраться в iptables правилах
« Ответ #5 : 14 Мая 2013, 03:08:58 »
со state --state
я пробовал, работает.

Но я так понимаю что  conntrack --ctstate  это более современный способ.

в чём вообще разница между state --state и conntrack --ctstate ?
 

yura_n

  • Гость
Re: пытаюсь разобраться в iptables правилах
« Ответ #6 : 14 Мая 2013, 04:11:16 »
Но я так понимаю что  conntrack --ctstate  это более современный способ.
Насколько я понимаю, это следствие более современной реализации iptables/netfilter. В какой-то момент, после очередного обновления, вываливается ошибка iptables и предлагается заменить state на conntrack.
« Последнее редактирование: 14 Мая 2013, 04:13:44 от yura_n »
 

Теги: