|
|
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)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/21991e7cf9e29.html, оценка из 5, голосов 10
|