# Konfiguracja Iptables

## Pryka

Więc tak, chcę mieć IPtables na maszynie domowej. Na razie chciałbym skonfigurować dostęp do Internetu przez zwykłą przeglądarkę internetową i torrenty.

Niestety nie mam zielonego pojęcia jak mam się za to zabrać... byłbym wdzięczny za pomoc...

----------

## SlashBeast

Co Ty wlasciwie chcesz zrobic? Najpierw wymysl cel, potem go realizuj. Iptables daje taaaaaaaaaaaaaaakie mozliwosci.

----------

## Pryka

Może dawać i jeszcze większe, co z tego jak nie wiem o co chodzi.

Chcę mieć porządnego firewalla wsio. Standardowy na domowy desktop. Dostęp do neta spod FF i torrenty. Reszta może być zablokowana, jak zrozumiem działanie na przykładzie tych dwóch to dalej sobię dam radę z pomocą albo bez.

----------

## Lord_Raven

A może shorewall? Jak dla mnie to rozwiązanie dużo bardziej user-friendly.

----------

## Pryka

Na razie pomęczę się z IPtables... ale dzięki za propozycję.

```
iptables v1.4.7: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)

Perhaps iptables or your kernel needs to be upgraded.
```

Czego mi brakuje w jajku?

```
#

# Networking options

#

CONFIG_PACKET=y

CONFIG_PACKET_MMAP=y

CONFIG_UNIX=y

CONFIG_XFRM=y

CONFIG_XFRM_USER=y

# CONFIG_XFRM_SUB_POLICY is not set

# CONFIG_XFRM_MIGRATE is not set

# CONFIG_XFRM_STATISTICS is not set

CONFIG_NET_KEY=y

# CONFIG_NET_KEY_MIGRATE is not set

CONFIG_INET=y

# CONFIG_IP_MULTICAST is not set

# CONFIG_IP_ADVANCED_ROUTER is not set

CONFIG_IP_FIB_HASH=y

# CONFIG_IP_PNP is not set

# CONFIG_NET_IPIP is not set

# CONFIG_NET_IPGRE is not set

# CONFIG_ARPD is not set

# CONFIG_SYN_COOKIES is not set

# CONFIG_INET_AH is not set

# CONFIG_INET_ESP is not set

# CONFIG_INET_IPCOMP is not set

# CONFIG_INET_XFRM_TUNNEL is not set

# CONFIG_INET_TUNNEL is not set

# CONFIG_INET_XFRM_MODE_TRANSPORT is not set

# CONFIG_INET_XFRM_MODE_TUNNEL is not set

# CONFIG_INET_XFRM_MODE_BEET is not set

# CONFIG_INET_LRO is not set

# CONFIG_INET_DIAG is not set

# CONFIG_TCP_CONG_ADVANCED is not set

CONFIG_TCP_CONG_CUBIC=y

CONFIG_DEFAULT_TCP_CONG="cubic"

# CONFIG_TCP_MD5SIG is not set

# CONFIG_IPV6 is not set

# CONFIG_NETLABEL is not set

# CONFIG_NETWORK_SECMARK is not set

CONFIG_NETFILTER=y

# CONFIG_NETFILTER_DEBUG is not set

CONFIG_NETFILTER_ADVANCED=y

#

# Core Netfilter Configuration

#

# CONFIG_NETFILTER_NETLINK_QUEUE is not set

# CONFIG_NETFILTER_NETLINK_LOG is not set

# CONFIG_NF_CONNTRACK is not set

# CONFIG_NETFILTER_TPROXY is not set

CONFIG_NETFILTER_XTABLES=y

# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set

# CONFIG_NETFILTER_XT_TARGET_DSCP is not set

CONFIG_NETFILTER_XT_TARGET_HL=y

# CONFIG_NETFILTER_XT_TARGET_MARK is not set

# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set

# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set

# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set

# CONFIG_NETFILTER_XT_TARGET_TRACE is not set

# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set

# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set

# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set

# CONFIG_NETFILTER_XT_MATCH_DCCP is not set

# CONFIG_NETFILTER_XT_MATCH_DSCP is not set

# CONFIG_NETFILTER_XT_MATCH_ESP is not set

# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set

CONFIG_NETFILTER_XT_MATCH_HL=y

# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set

# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set

# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set

# CONFIG_NETFILTER_XT_MATCH_MAC is not set

# CONFIG_NETFILTER_XT_MATCH_MARK is not set

# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set

# CONFIG_NETFILTER_XT_MATCH_OWNER is not set

# CONFIG_NETFILTER_XT_MATCH_POLICY is not set

# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set

# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set

# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set

# CONFIG_NETFILTER_XT_MATCH_REALM is not set

# CONFIG_NETFILTER_XT_MATCH_RECENT is not set

# CONFIG_NETFILTER_XT_MATCH_SCTP is not set

# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set

# CONFIG_NETFILTER_XT_MATCH_STRING is not set

# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set

# CONFIG_NETFILTER_XT_MATCH_TIME is not set

# CONFIG_NETFILTER_XT_MATCH_U32 is not set

# CONFIG_IP_VS is not set

#

# IP: Netfilter Configuration

#

# CONFIG_NF_DEFRAG_IPV4 is not set

CONFIG_IP_NF_QUEUE=y

CONFIG_IP_NF_IPTABLES=y

CONFIG_IP_NF_MATCH_ADDRTYPE=y

CONFIG_IP_NF_MATCH_AH=y

CONFIG_IP_NF_MATCH_ECN=y

CONFIG_IP_NF_MATCH_TTL=y

CONFIG_IP_NF_FILTER=y

CONFIG_IP_NF_TARGET_REJECT=y

CONFIG_IP_NF_TARGET_LOG=y

CONFIG_IP_NF_TARGET_ULOG=y

CONFIG_IP_NF_MANGLE=y

CONFIG_IP_NF_TARGET_ECN=y

CONFIG_IP_NF_TARGET_TTL=y

CONFIG_IP_NF_RAW=y

CONFIG_IP_NF_SECURITY=y

CONFIG_IP_NF_ARPTABLES=y

CONFIG_IP_NF_ARPFILTER=y

CONFIG_IP_NF_ARP_MANGLE=y

# CONFIG_IP_DCCP is not set

# CONFIG_IP_SCTP is not set

# CONFIG_RDS is not set

# CONFIG_TIPC is not set

# CONFIG_ATM is not set

# CONFIG_BRIDGE is not set

# CONFIG_NET_DSA is not set

# CONFIG_VLAN_8021Q is not set

# CONFIG_DECNET is not set

# CONFIG_LLC2 is not set

# CONFIG_IPX is not set

# CONFIG_ATALK is not set

# CONFIG_X25 is not set

# CONFIG_LAPB is not set

# CONFIG_ECONET is not set

# CONFIG_WAN_ROUTER is not set

# CONFIG_PHONET is not set

# CONFIG_IEEE802154 is not set

# CONFIG_NET_SCHED is not set

# CONFIG_DCB is not set
```

O co chodzi?Last edited by Pryka on Tue May 04, 2010 3:21 pm; edited 1 time in total

----------

## dylon

 *Pryka wrote:*   

> Na razie pomęczę się z IPtables... ale dzięki za propozycję.
> 
> ```
> iptables v1.4.7: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
> 
> ...

 

Wszystkiego  :Razz: 

Jesli dopiero sie uczysz filtor iptavles, to bezpieczniej dla Ciebie bedzie, jesli wrzucisz w kernel wszystko - nie zaszkodzi, a pewnie sporo Ci ulatwi...

zacznij od lektury netfilter.org, pozniej poszukaj na necie jakis skryptow ludzi uzywajacych routerow linuksowych w sieci i na ich podstawie zobaczysz co i jak.

----------

## Pryka

Dobra wpakowałem praktycznie wszystko prócz eksperymentalnych i tych których na zdrowy rozsądek na pewno nie będę potrzebował, i dalej to samo. Nie mogę wykonać jednej z najbardziej podstawowych operacji...

```
iptables -t nat -X

iptables v1.4.7: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)

Perhaps iptables or your kernel needs to be upgraded.
```

```
#

# Networking options

#

CONFIG_PACKET=y

CONFIG_PACKET_MMAP=y

CONFIG_UNIX=y

CONFIG_XFRM=y

CONFIG_XFRM_USER=y

# CONFIG_XFRM_SUB_POLICY is not set

# CONFIG_XFRM_MIGRATE is not set

# CONFIG_XFRM_STATISTICS is not set

CONFIG_XFRM_IPCOMP=y

CONFIG_NET_KEY=y

# CONFIG_NET_KEY_MIGRATE is not set

CONFIG_INET=y

CONFIG_IP_MULTICAST=y

CONFIG_IP_ADVANCED_ROUTER=y

CONFIG_ASK_IP_FIB_HASH=y

# CONFIG_IP_FIB_TRIE is not set

CONFIG_IP_FIB_HASH=y

CONFIG_IP_MULTIPLE_TABLES=y

CONFIG_IP_ROUTE_MULTIPATH=y

CONFIG_IP_ROUTE_VERBOSE=y

CONFIG_IP_PNP=y

CONFIG_IP_PNP_DHCP=y

CONFIG_IP_PNP_BOOTP=y

CONFIG_IP_PNP_RARP=y

CONFIG_NET_IPIP=y

CONFIG_NET_IPGRE=y

CONFIG_NET_IPGRE_BROADCAST=y

CONFIG_IP_MROUTE=y

CONFIG_IP_PIMSM_V1=y

CONFIG_IP_PIMSM_V2=y

CONFIG_ARPD=y

CONFIG_SYN_COOKIES=y

CONFIG_INET_AH=y

CONFIG_INET_ESP=y

CONFIG_INET_IPCOMP=y

CONFIG_INET_XFRM_TUNNEL=y

CONFIG_INET_TUNNEL=y

CONFIG_INET_XFRM_MODE_TRANSPORT=y

CONFIG_INET_XFRM_MODE_TUNNEL=y

CONFIG_INET_XFRM_MODE_BEET=y

CONFIG_INET_LRO=y

CONFIG_INET_DIAG=y

CONFIG_INET_TCP_DIAG=y

# CONFIG_TCP_CONG_ADVANCED is not set

CONFIG_TCP_CONG_CUBIC=y

CONFIG_DEFAULT_TCP_CONG="cubic"

# CONFIG_TCP_MD5SIG is not set

# CONFIG_IPV6 is not set

CONFIG_NETLABEL=y

CONFIG_NETWORK_SECMARK=y

CONFIG_NETFILTER=y

# CONFIG_NETFILTER_DEBUG is not set

CONFIG_NETFILTER_ADVANCED=y

#

# Core Netfilter Configuration

#

CONFIG_NETFILTER_NETLINK=y

CONFIG_NETFILTER_NETLINK_QUEUE=y

CONFIG_NETFILTER_NETLINK_LOG=y

CONFIG_NF_CONNTRACK=y

CONFIG_NF_CT_ACCT=y

CONFIG_NF_CONNTRACK_MARK=y

CONFIG_NF_CONNTRACK_SECMARK=y

CONFIG_NF_CONNTRACK_EVENTS=y

# CONFIG_NF_CT_PROTO_DCCP is not set

CONFIG_NF_CT_PROTO_GRE=y

# CONFIG_NF_CT_PROTO_SCTP is not set

CONFIG_NF_CT_PROTO_UDPLITE=y

CONFIG_NF_CONNTRACK_AMANDA=y

CONFIG_NF_CONNTRACK_FTP=y

CONFIG_NF_CONNTRACK_H323=y

CONFIG_NF_CONNTRACK_IRC=y

CONFIG_NF_CONNTRACK_NETBIOS_NS=y

CONFIG_NF_CONNTRACK_PPTP=y

# CONFIG_NF_CONNTRACK_SANE is not set

CONFIG_NF_CONNTRACK_SIP=y

CONFIG_NF_CONNTRACK_TFTP=y

CONFIG_NF_CT_NETLINK=y

# CONFIG_NETFILTER_TPROXY is not set

CONFIG_NETFILTER_XTABLES=y

CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y

CONFIG_NETFILTER_XT_TARGET_CONNMARK=y

CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=y

CONFIG_NETFILTER_XT_TARGET_DSCP=y

CONFIG_NETFILTER_XT_TARGET_HL=y

CONFIG_NETFILTER_XT_TARGET_MARK=y

CONFIG_NETFILTER_XT_TARGET_NFLOG=y

CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y

CONFIG_NETFILTER_XT_TARGET_NOTRACK=y

CONFIG_NETFILTER_XT_TARGET_RATEEST=y

CONFIG_NETFILTER_XT_TARGET_TRACE=y

CONFIG_NETFILTER_XT_TARGET_SECMARK=y

CONFIG_NETFILTER_XT_TARGET_TCPMSS=y

CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=y

CONFIG_NETFILTER_XT_MATCH_CLUSTER=y

CONFIG_NETFILTER_XT_MATCH_COMMENT=y

CONFIG_NETFILTER_XT_MATCH_CONNBYTES=y

CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=y

CONFIG_NETFILTER_XT_MATCH_CONNMARK=y

CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y

CONFIG_NETFILTER_XT_MATCH_DCCP=y

CONFIG_NETFILTER_XT_MATCH_DSCP=y

CONFIG_NETFILTER_XT_MATCH_ESP=y

CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=y

CONFIG_NETFILTER_XT_MATCH_HELPER=y

CONFIG_NETFILTER_XT_MATCH_HL=y

CONFIG_NETFILTER_XT_MATCH_IPRANGE=y

CONFIG_NETFILTER_XT_MATCH_LENGTH=y

CONFIG_NETFILTER_XT_MATCH_LIMIT=y

CONFIG_NETFILTER_XT_MATCH_MAC=y

CONFIG_NETFILTER_XT_MATCH_MARK=y

CONFIG_NETFILTER_XT_MATCH_MULTIPORT=y

CONFIG_NETFILTER_XT_MATCH_OWNER=y

CONFIG_NETFILTER_XT_MATCH_POLICY=y

CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y

CONFIG_NETFILTER_XT_MATCH_QUOTA=y

CONFIG_NETFILTER_XT_MATCH_RATEEST=y

CONFIG_NETFILTER_XT_MATCH_REALM=y

CONFIG_NETFILTER_XT_MATCH_RECENT=y

CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT=y

# CONFIG_NETFILTER_XT_MATCH_SCTP is not set

CONFIG_NETFILTER_XT_MATCH_STATE=y

CONFIG_NETFILTER_XT_MATCH_STATISTIC=y

CONFIG_NETFILTER_XT_MATCH_STRING=y

CONFIG_NETFILTER_XT_MATCH_TCPMSS=y

CONFIG_NETFILTER_XT_MATCH_TIME=y

CONFIG_NETFILTER_XT_MATCH_U32=y

CONFIG_NETFILTER_XT_MATCH_OSF=y

# CONFIG_IP_VS is not set

#

# IP: Netfilter Configuration

#

# CONFIG_NF_DEFRAG_IPV4 is not set

# CONFIG_NF_CONNTRACK_IPV4 is not set

CONFIG_IP_NF_QUEUE=y

CONFIG_IP_NF_IPTABLES=y

CONFIG_IP_NF_MATCH_ADDRTYPE=y

CONFIG_IP_NF_MATCH_AH=y

CONFIG_IP_NF_MATCH_ECN=y

CONFIG_IP_NF_MATCH_TTL=y

CONFIG_IP_NF_FILTER=y

CONFIG_IP_NF_TARGET_REJECT=y

CONFIG_IP_NF_TARGET_LOG=y

CONFIG_IP_NF_TARGET_ULOG=y

CONFIG_IP_NF_MANGLE=y

CONFIG_IP_NF_TARGET_ECN=y

CONFIG_IP_NF_TARGET_TTL=y

CONFIG_IP_NF_RAW=y

CONFIG_IP_NF_SECURITY=y

CONFIG_IP_NF_ARPTABLES=y

CONFIG_IP_NF_ARPFILTER=y

CONFIG_IP_NF_ARP_MANGLE=y

# CONFIG_IP_DCCP is not set

# CONFIG_IP_SCTP is not set

# CONFIG_RDS is not set

# CONFIG_TIPC is not set

# CONFIG_ATM is not set

# CONFIG_BRIDGE is not set

# CONFIG_NET_DSA is not set

# CONFIG_VLAN_8021Q is not set

# CONFIG_DECNET is not set

# CONFIG_LLC2 is not set

# CONFIG_IPX is not set

# CONFIG_ATALK is not set

# CONFIG_X25 is not set

# CONFIG_LAPB is not set

# CONFIG_ECONET is not set

# CONFIG_WAN_ROUTER is not set

# CONFIG_PHONET is not set

# CONFIG_IEEE802154 is not set

# CONFIG_NET_SCHED is not set

CONFIG_NET_CLS_ROUTE=y

# CONFIG_DCB is not set
```

----------

## SlashBeast

Gdzie co Ty zes pododawal?

CONFIG_NF_NAT wlacz.

----------

## Pryka

Tak mi podpowiedział kolega dylon. Większości z tego co dodałem nigdy nie będę używał, ale mniejsza już o to... mam backup konfiguracji.

Przeszukałem .config i nie ma tam frazy "CONFIG_NF_NAT", gdzie znajdę to w configu kernela?

----------

## dylon

Aby dzialal NAT musi min. gdzies zapisywac aktualne polaczenia. Robi to w tablicy...  :Smile:   conntrack.

a u Ciebie widze: CONFIG_NF_CONNTRACK_IPV4 is not set

[edit]

Dobrze jest poczytac helpa do kazdej z tych opcji. Troche Ci sie przejasni  :Smile: 

[/edit]

----------

## SlashBeast

wlacz zabawki od iptablesa to i nf_nat sie pojawi.

----------

## Pryka

Okej, jak na razie wszytko już działa... teraz chciałbym się zabrać za tworzenie reguły. Posłuchałem się rad i przetrzepałem Internet w poszukiwaniu pomocy

Początek wygląda standardowo:

```
iptables -F

iptables -X

iptables -t nat -X

iptables -t nat -F
```

Teraz chciałem dopuścić połączenia już ustanowione:

```
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED

iptables -A FORWARD -j ACCEPT -m state --state ESTABLISHED,RELATED
```

Tylko jest z tym mały problem bo IPtablets wypluwa coś takiego:

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

Tu bym prosił o pomoc bo nie wiem co z tym zrobić...

Na koniec otwieram porty dla sieci Torrent

```
iptables -A INPUT -s 0/0 -p tcp --dport xxxx:xxxx -j ACCEPT

iptables -A INPUT -s 0/0 -p udp --dport xxxx:xxxx -j ACCEPT
```

Co tutaj jest do poprawienia?? Co można dodać, wywalić?? Nie znam się jeszcze za dobrze, więc prosiłbym o rady. Jestem otwarty na wszelkie sugestie.

----------

## dylon

Ogolnie jest tak:

najpierw okreslasz lancuch i tabele plus kolejnosc dodania reguly (np. I dodaje regule na poczatek a A na koniec), potem uszczegolawiasz o jakie pakiety Ci chodzi (czyli np. nawiazane czy uszkodzone) itp a na koniec cel (czyli -j cos + ew. parametry) 

co do torenta:

jesli chcesz zakres portow musisz miec obsluge multiport (nie wiem czy standartowo jest z iptables, kiedys niebylo)

po drugie, dane przy sciaganiu "leca" po roznych portach a te okreslone to dotycza tylko wymiany informacji z serwerrm gdzie jest ten torent. Do takich rzeczy sluzy np. layer7 (choc nie wiem czy rozpoznaje torenty)

----------

## Pryka

Pomału zaczynam rozumieć o co w tym wszystkim chodzi. Co myślicie o czymś takim?

```
iptables -F

iptables -X

iptables -P INPUT DROP

iptables -P FORWARD DROP

iptables -P OUTPUT ACCEPT 

iptables -A INPUT -p tcp --dport 10000 -j ACCEPT

iptables -A INPUT -p udp --dport 10001 -j ACCEPT 

iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -p udp -m state --state ESTABLISHED,RELATED -j ACCEPT 
```

Cy takie coś zmusiłoby cały ruch do pakowania się przez porty 10000 i 10001??

----------

## Bialy

 *Pryka wrote:*   

> Pomału zaczynam rozumieć o co w tym wszystkim chodzi. Co myślicie o czymś takim?
> 
> ```
> iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
> 
> ...

 

Da się krócej:

```
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
```

 *Pryka wrote:*   

> 
> 
> ```
> iptables -A INPUT -p tcp --dport 10000 -j ACCEPT
> 
> ...

 

Nie, pozwoli tylko na dostęp do tych portów.

Przekierowania (bo myślę, że o to Tobie chodziło), to już powinny być inne reguły.

----------

## Pryka

Rozumiem, a w jaki sposób mógłbym przekierować cały ruch na jakiś konkretny port?? Albo ruch z jakiegoś portu na inny port...

I drugie pytanie, co oznacza takie przełączniki?? Bo nie mogę jakoś się doczytać

-m limit --limit 2/s

lub

-s 0/0 

ps. czy bezpieczne jest odrzucanie wszystkich połączeń nadchodzących z innych portów niż te które uwzględniłem? Jak można to zrobić?

Przydało by się też blokowanie pakietów niewłaściwych, uszkodzonych.

----------

## dylon

 *Pryka wrote:*   

> Rozumiem, a w jaki sposób mógłbym przekierować cały ruch na jakiś konkretny port?? Albo ruch z jakiegoś portu na inny port...
> 
> 

 

Nie poscisz calego ruchu na jakis port  :Razz: 

Wogole, mapowanie portow nie ma sensu, jesli to robisz na docelowej maszynie.

Gdybys jednak robil to na routerze i chcial jakis port przekierowac do danego komputera w sieci to:

np.: przekierowanie pakietow przychodzacych na port 50000 routera na port 80 jakiegos kompa w sieci lan)

 iptables -t nat -A PREROUTING -p tcp --dport 50000 -j DNAT --to 192.168.0.2:80

 *Pryka wrote:*   

> 
> 
> I drugie pytanie, co oznacza takie przełączniki?? Bo nie mogę jakoś się doczytać
> 
> -m limit --limit 2/s
> ...

 

"-m limit" ... limituje  :Razz: 

limituje ilosc pakietow w danej regule. Najczesciej uzywa sie tego w polaczeniu z celem ACCEPT do przepuszczenia jakiejs liczby pakietow w danej jednostce czasu a reszte sie DROPuje. (np. jesli jakis komp w sieci flooduje lub/i jesli jest jakis flood na twoja maszyne - ale tu juz jest lepsze ipt_recent)

"-s 0/0" - czyli: pakiety z adresem zrodlowym "caly internet"  :Razz:   0/0 okresla doslownie kazdy mozliwy adres.

wbrew pozorom man do iptables duzo mowi  :Razz: 

----------

## SlashBeast

przekierowac to mozesz np tak:

```
iptables -A PREROUTING -d zewnetrzneip -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
```

Ja tak robie z revproxy, by httpd siedzial na porcie 80 a ruch z zewnatrz szedl przez revproxy na porcie 8080.

----------

## Pryka

Okej rozumiem, dziękuję za objaśnienia... W takim razie czym różni się to...

```
iptables -A INPUT -p tcp --dport 10000 -j ACCEPT

iptables -A INPUT -p udp --dport 10001 -j ACCEPT 
```

od tego:

```
iptables -A INPUT -s 0/0 -p tcp --dport 10000 -j ACCEPT

iptables -A INPUT -s 0/0-p udp --dport 10001 -j ACCEPT
```

I co myślicie o czymś takim?

```
iptables -F

iptables -X

iptables -P INPUT DROP

iptables -P FORWARD DROP

iptables -P OUTPUT ACCEPT

iptables -A INPUT -i eth0 -s 0/0 -p tcp --dport 8192:65535 -j ACCEPT

iptables -A INPUT -i eth0 -s 0/0 -p udp --dport 8192:65535 -j ACCEPT

iptables -A INPUT -i lo -s 127.0.0.1 -p tcp -j ACCEPT

iptables -A INPUT -i lo -s 127.0.0.1 -p udp -j ACCEPT

iptables -A INPUT -i eth0 -s 0/0 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -i eth0 -s 0/0 -p udp -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -i eth0 -s 0/0 -p tcp -m state --state INVALID -j DROP

iptables -A INPUT -i eth0 -s 0/0 -p udp -m state --state INVALID -j DROP
```

ps. Nie bardzo łapię się w --dport i --sport kiedy co powinienem wybierać??

----------

## canis_lupus

moje domowe:

```

iptables -P INPUT DROP

iptables -P FORWARD DROP

iptables -P OUTPUT ACCEPT

#Blokuję nieprawidłowe pakiety

iptables -A INPUT -p tcp -j DROP -m state --state INVALID

#Dopuszczam ruch przychodzący

iptables -A INPUT -p tcp --dport 80 -m limit --limit 5/s -j ACCEPT

iptables -A INPUT -p tcp --dport 20 -m limit --limit 5/s -j ACCEPT

iptables -A INPUT -p tcp --dport 21 -m limit --limit 5/s -j ACCEPT

iptables -A INPUT -p udp --dport 20 -m limit --limit 5/s -j ACCEPT

iptables -A INPUT -p udp --dport 21 -m limit --limit 5/s -j ACCEPT

iptables -A INPUT -p tcp --dport 5001 -j ACCEPT

iptables -A INPUT -p tcp --dport 5522 -m limit --limit 5/s -j ACCEPT

iptables -A INPUT -p tcp --dport 50024 -j ACCEPT

iptables -A INPUT -p udp --dport 50034 -j ACCEPT

iptables -A INPUT -p tcp --dport 50040 -j ACCEPT

iptables -A INPUT -p udp --dport 50041 -j ACCEPT

#Dopuszczam ruch na DNSach

iptables -A OUTPUT -p udp -o eth0 --dport 53 --sport 1024:65535 -j ACCEPT

iptables -A INPUT -p udp -i eth0 --sport 53 --dport 1024:65535 -j ACCEPT

#Dopuszczam powrót pinga

iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

#Dopuszczam do ruchu połączniua już nawiązane i powiązane

iptables -A INPUT -m state --state RELATED -j ACCEPT

iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -p udp -m state --state ESTABLISHED,RELATED -j ACCEPT

#Dopuszczam ruch na interfejsie lokalnym

iptables -A INPUT -s 127.0.0.1 -j ACCEPT

iptables -A OUTPUT -d 127.0.0.1 -j ACCEPT

```

----------

## Bialy

@Pryka

Wprawdzie stare, ale zalecam przeczytać  :Exclamation: 

http://www.gentoo.org/doc/pl/articles/linux-24-stateful-fw-design.xml

----------

## Pryka

Dzięki za rady... wymodziłem coś takiego

```
iptables -F

iptables -X

iptables -P INPUT DROP

iptables -P FORWARD DROP

iptables -P OUTPUT ACCEPT

iptables -A INPUT -i eth0 -s 0/0 -p tcp --dport 8192:65535 -j ACCEPT

iptables -A INPUT -i eth0 -s 0/0 -p udp --dport 8192:65535 -j ACCEPT

iptables -A INPUT -i lo -s 127.0.0.1 -p tcp -j ACCEPT

iptables -A INPUT -i lo -s 127.0.0.1 -p udp -j ACCEPT

iptables -A INPUT -i eth0 -s 0/0 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -i eth0 -s 0/0 -p udp -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -i eth0 -s 0/0 -p tcp -m state --state INVALID -j DROP

iptables -A INPUT -i eth0 -s 0/0 -p udp -m state --state INVALID -j DROP
```

----------

## mbar

Pryka: tracisz tylko czas.

 *Lord_Raven wrote:*   

> A może shorewall? Jak dla mnie to rozwiązanie dużo bardziej user-friendly.

 

+1

Shorewall FTW!

----------

## SlashBeast

Z mojego laptopa, fragment skryptu do podnoszenia firewalla, regulki dla ipv6 i ipv4:

```

start_fw() {

   einfo "Starting firewall. ($(basename $iptablesbin))"

   iptablesbin -P INPUT DROP

   iptablesbin -P FORWARD DROP

   iptablesbin -P OUTPUT ACCEPT

   # Zrzucanie smieci.

   iptablesbin -A INPUT -p tcp -j DROP -m state --state INVALID

   # Yebac synflood.

   iptablesbin -N syn_flood

   iptablesbin -A INPUT -p tcp --syn -j syn_flood

   iptablesbin -A syn_flood -m limit --limit 4/s --limit-burst 8 -j RETURN

   iptablesbin -A syn_flood -j DROP

   # httpd

   iptablesbin -A INPUT -p tcp --dport 80 -m limit --limit 5/s -j ACCEPT

   iptablesbin -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 12 -j REJECT --reject-with tcp-reset

   # ssh

        iptablesbin -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH

        iptablesbin -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 10 --rttl --name SSH -j DROP

   iptablesbin -A INPUT -p tcp --dport 22 -m limit --limit 2/s -j ACCEPT

   iptablesbin -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 5 -j REJECT --reject-with tcp-reset

   # torrent

   iptablesbin -A INPUT -p tcp --dport ${torrent_ports_range} -m limit --limit 5/s -j ACCEPT

   iptablesbin -A OUTPUT -p tcp --sport ${torrent_ports_range} -m limit --limit 5/s -j ACCEPT

   

   # Ping.

   if [[ "$fw_ipv6" = "true" ]]; then

      iptablesbin -A INPUT -p icmpv6 -m limit --limit 2/s -j ACCEPT

   else

      iptablesbin -A INPUT -p icmp -m limit --limit 2/s -j ACCEPT

   fi

   

   # Nie urwij mi od internetu!

   iptablesbin -A INPUT -m state --state RELATED -j ACCEPT

   iptablesbin -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

   iptablesbin -A INPUT -p udp -m state --state ESTABLISHED,RELATED -j ACCEPT

   # loopback.

   iptablesbin -A INPUT -i lo -j ACCEPT

   iptablesbin -A OUTPUT -o lo -j ACCEPT

   # HE ipv6 endpoint.

   if [[ "$fw_ipv6" != "true" ]]; then

      iptablesbin -A INPUT -s 216.66.80.30 -j ACCEPT

   fi

}

```

Nie wiem czy to ma generalnie sens ale dzialam na tym (no troche innym, teraz zmienilem) firewallu od dlugiego czasu.

----------

## dylon

Niesmialo dodam, ze to co trzeba blokowac lepiej jest robic od razu w preroutingu. To znacznie mniej obciaza procesor. Glownie widoczne zalety sa podczas megaflooda rzedu x-set mbitow czy xxx kpps.

Przy okazji tu jest ciekawa lekturka na poczatek, z bardzo waznym diagramem przeplywu pakietow:

http://wazniak.mimuw.edu.pl/index.php?title=Bezpiecze%C5%84stwo_system%C3%B3w_komputerowych_-_laboratorium_12:Systemy_programowych_zap%C3%B3r_sieciowych#Diagram_przep.C5.82ywu_pakiet.C3.B3w_przez_zapor.C4.99_sieciow.C4.85_IPTABLES

----------

