Войти

Показать полную графическую версию : пытаюсь разобраться в iptables правилах.


mitiya
13-05-2013, 13:37
началось все с того что мне нужно было закрыть все входящие кроме 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 не заработало, вообще не могу правила применить там.




© OSzone.net 2001-2012