Скрипты
Переделал немного скрипт, теперь там есть все счетчики входящего и исходящего трафика по айпишникам. Плюс айпи и маки берутся из соответствующих файликов, что делает скрипт гораздо компактнее:
Теперь надо показания счетчиков из таблицы filter сбросить в текстовый файлик, после чего разобрать его и внести все это в БД. Работаю над этим.
#!/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 сбросить в текстовый файлик, после чего разобрать его и внести все это в БД. Работаю над этим.
Комментарии