Скрипты

Переделал немного скрипт, теперь там есть все счетчики входящего и исходящего трафика по айпишникам. Плюс айпи и маки берутся из соответствующих файликов, что делает скрипт гораздо компактнее:
#!/bin/bash

# config section
# !!! insert your own parameters for int/ext interfaces
ALLOW_MAC_LIST="/etc/firewall_allow_mac.conf"
ALLOW_IP_LIST="/etc/firewall_allow_ip.conf"

LO_IFACE="lo"
LO_NET="127.0.0.0/8"

INT_NET="10.0.0.0/8" # put your internal netaddr here
INT_IFACE="eth1"

EXT_IP="192.168.1.200" # put your external interface ip here
EXT_IFACE="eth0"

# Remove any existing rules from all chains
iptables -F
iptables -F -t nat
iptables -F -t mangle

# Set the default policy
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

# Remove any pre-existing user-defined chains
iptables -X
iptables -X -t nat
iptables -X -t mangle

# Enable IP Forwarding
echo 1 >/proc/sys/net/ipv4/ip_forward

# Enable broadcast echo Protection
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Disable Source Routed Packets
for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do
echo 0 > $f
done

# Enable TCP SYN Cookie Protection
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

# Disable ICMP Redirect Acceptance
for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do
echo 0 > $f
done

# Don't send Redirect Messages
for f in /proc/sys/net/ipv4/conf/*/send_redirects; do
echo 0 > $f
done

# Disable ICMP Redirect Acceptance (не пингается модем если закоментировать)
for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do
echo 0 > $f
done

# Drop Spoofed Packets
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 > $f
done

# Log packets with impossible addresses.
#for f in /proc/sys/net/ipv4/conf/*/log_martians; do
#echo 1 > $f
#done

##############
# MAC_FILTER
############
iptables -t filter -N MAC_FILTER
cat $ALLOW_MAC_LIST | while read Res; do
iptables -t filter -A MAC_FILTER -m mac --mac-source $Res -j RETURN
done
# deny all others mac-addresses
iptables -t filter -A MAC_FILTER -j DROP
####################
# IN_TRAF, OUT_TRAF
###################
iptables -t filter -N IN_TRAF
iptables -t filter -N OUT_TRAF
# Add counters from clients list
cat $ALLOW_IP_LIST | while read Res; do
iptables -t filter -A IN_TRAF -d $Res -j RETURN
iptables -t filter -A OUT_TRAF -s $Res -j RETURN
done
# deny all others ip-addresses
iptables -t filter -A IN_TRAF -j DROP
iptables -t filter -A OUT_TRAF -j DROP
####################
# insert mac-filtering, input and output traffic counters
iptables -t filter -I FORWARD -o $EXT_IFACE -j MAC_FILTER
iptables -t filter -I FORWARD -o $INT_IFACE -j IN_TRAF
iptables -t filter -I FORWARD -o $EXT_IFACE -j OUT_TRAF
iptables -t filter -A FORWARD -j ACCEPT
##############

iptables -t filter -A FORWARD -d $INT_NET -j ACCEPT

# Masquerade internal traffic
iptables -t nat -A POSTROUTING -s $INT_NET -o $EXT_IFACE -j SNAT --to $EXT_IP

# All internal machines have access to the firewall machine
iptables -A INPUT -i $INT_IFACE -s $INT_NET -j ACCEPT
iptables -A OUTPUT -o $INT_IFACE -d $INT_NET -j ACCEPT

Теперь надо показания счетчиков из таблицы filter сбросить в текстовый файлик, после чего разобрать его и внести все это в БД. Работаю над этим.

Комментарии

Популярные сообщения из этого блога

Новый год в клубе Мисто

Ну нихуя себе первое марта

Упаднические настроения