Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Mike Gusev                           2:5020/1031.1  24 Dec 2004  00:57:54
 To : All
 Subject : iptables
 -------------------------------------------------------------------------------- 
 
 В процессе разбирательства с iptables родился следующий скриптик,
 исполняющий роль файрволла.
 
 Просьба ко всем, кто разбирается лучше, проглядеть и указать явные
 косяки. 
 
 Попутно несколько вопросов:
 
 1. Разумно ли разрешать ответный (ESTABLISHED) icmp?
 2. Что есть полиси и что по факту делает крыжик -P?
 
 Источники мудрости: man, firestarter, немножко [:)] howto.
 
 =======
 #!/bin/sh
 
 echo -n "Starting firewall... "
 
 # loading modules
 for module in ip_tables iptable_filter ipt_state ip_conntrack ip_conntrack_ftp
 ipt_REJECT ipt_LOG
 do
 /sbin/modprobe $module
 done
 
 # getting local ip address and netmask
 IP=`/sbin/ifconfig ppp0 | grep inet | cut -d : -f 2 | cut -d \  -f 1`
 MASK=`/sbin/ifconfig ppp0 | grep Mas | cut -d : -f 4`
 
 # drop all tables
 /sbin/iptables -F
 /sbin/iptables -X
 /sbin/iptables -Z
 
 # 'LOG & DROP' chain
 /sbin/iptables -N LOG_N_DROP
 /sbin/iptables -F LOG_N_DROP
 /sbin/iptables -A LOG_N_DROP -m limit --limit 1/s -j LOG --log-level=info
 --log-prefix "dropme: "
 /sbin/iptables -A LOG_N_DROP -j DROP
 
 # 'LOG & REJECT' chain
 /sbin/iptables -N LOG_N_REJECT
 /sbin/iptables -F LOG_N_REJECT
 /sbin/iptables -A LOG_N_REJECT -m limit --limit 1/s -j LOG --log-level=info
 --log-prefix "rejectme: "
 /sbin/iptables -A LOG_N_REJECT -j REJECT
 
 # standard chains
 /sbin/iptables -P INPUT DROP
 /sbin/iptables -P OUTPUT DROP
 
 # allowing loopback traffic
 /sbin/iptables -A INPUT -i lo -j ACCEPT
 /sbin/iptables -A OUTPUT -o lo -j ACCEPT
 
 # allowing regular DNS traffic, parsing /etc/resolv.conf
 while read keyword server garbage
 do
 if [ "$keyword" == "nameserver" ]; then
 /sbin/iptables -A INPUT -p tcp ! --syn -s $server -d 0/0 -j ACCEPT
 /sbin/iptables -A INPUT -p udp -s $server -d 0/0 -j ACCEPT
 /sbin/iptables -A OUTPUT -p tcp -s $IP -d $server --dport 53 -j ACCEPT
 /sbin/iptables -A OUTPUT -p udp -s $IP -d $server --dport 53 -j ACCEPT
 fi
 done < /etc/resolv.conf
 
 # pings
 /sbin/iptables -A INPUT -p icmp --icmp-type "echo-request" -m limit --limit 1/s 
 -j ACCEPT
 /sbin/iptables -A INPUT -p icmp --icmp-type "echo-reply" -m limit --limit 1/s -j
 ACCEPT
 
 # allowed incoming ports
 # eDonkey
 /sbin/iptables -A INPUT -p tcp --dport 4662 -j ACCEPT
 /sbin/iptables -A INPUT -p udp --dport 4672 -j ACCEPT
 # sshd
 /sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT
 /sbin/iptables -A INPUT -p udp --dport 22 -j ACCEPT
 # ftp
 /sbin/iptables -A INPUT -p tcp --dport 20 -j ACCEPT
 /sbin/iptables -A INPUT -p tcp --dport 21 -j ACCEPT
 # httpd
 /sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
 /sbin/iptables -A INPUT -p udp --dport 80 -j ACCEPT
 
 # responce traffic
 /sbin/iptables -A INPUT -p tcp --dport 1024:65535 -m state --state
 ESTABLISHED,RELATED -j ACCEPT
 /sbin/iptables -A INPUT -p udp --dport 1023:65535 -m state --state
 ESTABLISHED,RELATED -j ACCEPT
 /sbin/iptables -A INPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
 
 # all the others incoming drop
 /sbin/iptables -A INPUT -j LOG_N_DROP
 
 # allowed outgoing (i.e. all) 
 /sbin/iptables -A OUTPUT -j ACCEPT
 
 # voila!
 
 echo "done"
 =======
 
 -- 
 WBR, Mike.
 
 --- tin/1.7.6-20040906 ("Baleshare") (UNIX) (Linux/2.6.9 (i686))
  * Origin: Powered by Debian GNU/Linux (2:5020/1031.1@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 iptables   Mike Gusev   24 Dec 2004 00:57:54 
Архивное /ru.linux/21991e7cf9e29.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional