| iptables |
[Дек. 4, 2007|01:49 pm] |
Накидал скриптец для первоначальной настройки iptables, может быть будет кому полезен, комментарии приветствуются
------------ #!/bin/bash # # $1 - список интерфейсов, которые смотрят в интернет в формате "eth1 eth2" (можно указать и один: "eth1") #
############################################################################### # Interface variables setup ###############################################################################
if [ -z "$1" ]; then echo "internet incoming interface must be set!" exit fi
# переделываем переданный параметр в массив ARG=$1 COUNT=0 for I in ${ARG[@]}; do INTLIST[$COUNT]=$I let COUNT+=1 done
# генерируем на основе имен интерфейсов имена цепочек для них (формат ETH1-IN, ETH2-IN и т.д.) COUNT=0 for INT in `echo $1|tr [:lower:] [:upper:]`; do CHAINS[$COUNT]=$INT-IN let COUNT=$COUNT+1 done
# переменные: # CHAINS - массив с именами цепочек для сетевух # INTLIST - массив с именами сетевух
############################################################################### # INPUT chain setup ###############################################################################
# INTERNET access setup #
# список адресов которым разрешен полный доступ к серверу IPLIST=""
# список портов, доступных на сервере всем из интернета TCPPORTLIST="25" UDPPORTLIST="53"
# цепочка badpackets, фильтруем пакеты с некорректными флагами iptables -N BADPKT iptables -A BADPKT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP iptables -A BADPKT -p tcp --tcp-flags ALL ALL -j DROP iptables -A BADPKT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP iptables -A BADPKT -p tcp --tcp-flags ALL NONE -j DROP iptables -A BADPKT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP iptables -A BADPKT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP iptables -A BADPKT -p icmp -f -j DROP iptables -A BADPKT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP iptables -A BADPKT -m state --state INVALID -j DROP iptables -I INPUT 1 -j BADPKT
# распихиваем доступ по цепочкам сетевух INDEX=0 for INTCHAIN in ${CHAINS[@]}; do iptables -N $INTCHAIN if [ -n "$IPLIST" ]; then for IP in $IPLIST; do iptables -A $INTCHAIN -s $IP -j ACCEPT done fi
# accept connections from internet on allowed port's if [ -n "$TCPPORTLIST" ]; then for TCPPORT in $TCPPORTLIST; do iptables -A $INTCHAIN -p tcp --dport $TCPPORT -j ACCEPT done fi
if [ -n "$UDPPORTLIST" ]; then for UDPPORT in $UDPPORTLIST; do iptables -A $INTCHAIN -p udp --dport $UDPPORT -j ACCEPT done fi
iptables -A $INTCHAIN -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A $INTCHAIN -p icmp -j ACCEPT iptables -A $INTCHAIN -j DROP iptables -I INPUT 2 -i ${INTLIST[$INDEX]} -j $INTCHAIN let INDEX+=1 done
# цепочка для забаненных адресов iptables -N BANNED iptables -I INPUT 1 -j BANNED
############################################################################### # FORWARD chain setup ###############################################################################
iptables -N FWD-IN iptables -N FWD-OUT iptables -A FORWARD -s 192.168.0.0/16 -d 192.168.0.0/16 -j ACCEPT iptables -A FWD-OUT -p tcp -m multiport --dport 135,137,138,139,445 -j DROP iptables -A FWD-OUT -p udp -m multiport --dport 135,137,138,139,445 -j DROP iptables -A FORWARD -s ! 192.168.0.0/16 -d 192.168.0.0/16 -j FWD-IN iptables -A FORWARD -s 192.168.0.0/16 -d ! 192.168.0.0/16 -j FWD-OUT
# доступ всей локалке до какого либо адреса, например mail.hotbox.ru iptables -A FWD-IN -s mail.hotbox.ru -d 192.168.0.0/16 -j ACCEPT iptables -A FWD-OUT -s 192.168.0.0/16 -d mail.hotbox.ru -p tcp --dport 110 -j ACCEPT
iptables -P FORWARD DROP
############################################################################### # NAT POSTROUTING chain setup ###############################################################################
# натим до mail.hotbox.ru iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -d mail.hotbox.ru -j MASQUERADE
###############################################################################
iptables -L -v -n --line-numbers ---------------
Всё, бан, нат и прочее добавляются маленькими скриптами в соответствующие цепочки: нат в FWD-IN, FWD-OUT и -t nat POSTROUTING, бан соответственно в BANNED |
|
|
| (без темы) |
[Апр. 20, 2005|12:36 am] |
| [ | Музыка |
| | Theatre Of Tragedy - Venus | ] | С наступлением первых теплых деньков весь underground, background и foreground Автограда выбрался на улицу. Теперь в парке некуда сесть... и встать... |
|
|
| Весна. |
[Апр. 1, 2005|06:43 pm] |
|
Весна. На улице начался массовый сход говна, а в Старом Городе люди опять достали байдарки и каноэ... |
|
|