#!/bin/sh # network : ipv4.ipv4.ipv4.ipv4/mask || dns/mask # clients : PROTO ; PORT ; UID/GID ; UID/GID ; UID/GID .... | # servers : PROTO ; PORT ; UID/GID ; UID/GID ; UID/GID .... | # forward : PROTO ; PORT | local network="${net}" # igmp local ruleEthIn="$ruleEthIn ;igmp | -s "$gw" -d 224.0.0.1/32 -p igmp" #local ruleEthOut="$ruleEthOut ;igmp | -d "$brdAddr" -s "$ip" -p igmp" # -- CLIENT -- # [ TCP/SSH ] #local clients="$clients|TCP ;ssh ;root/root" # [ UDP/DOMAIN ] #local clients="$clients|UDP ;domain ;root/root" #local clients="$clients|TCP ;domain ;root/root;Debian-exim/Debian-exim" # -- SERVER -- #local servers="$servers|TCP ;ssh ;root/root" # ruleOut : iptables -t filter -A OUTPUT -o ""$eth"" -s ${ip}/32 -j ""$rulesOut"" # ruleIn : iptables -t filter -A INPUT -i ""$eth"" -d ${ip}/32 -j ""$rulesIn"" # dropOut : iptables -t filter -A OUTPUT -o ""$eth"" -s ${ip}/32 -j ""$rulesOut"" # dropIn : iptables -t filter -A INPUT -i ""$eth"" -d ${ip}/32 -j ""$rulesIn"" # icmp (echo-reply:0/0, echo-request:8/0) #local icmpIn="$icmpIn ;icmp | -p icmp --icmp-type 8/0 -m state --state ESTABLISHED,RELATED,NEW" #local icmpOut="$icmpOut ;icmp | -p icmp --icmp-type 0/0 -m state --state ESTABLISHED,RELATED" #local icmpIn="$icmpIn ;icmp | -p icmp --icmp-type 0/0 -m state --state ESTABLISHED,RELATED" #local icmpOut="$icmpOut ;icmp | -p icmp --icmp-type 8/0 -m state --state ESTABLISHED,RELATED,NEW" # icmp (host-unreachable:3/1, port-unreachable:3/3, fragmentation-needed:3/4) #local icmpOut="$icmpOut ;icmp | -p icmp --icmp-type 3/1 -m state --state ESTABLISHED,RELATED,NEW" #local icmpIn="$icmpIn ;icmp | -p icmp --icmp-type 3/1 -m state --state ESTABLISHED,RELATED,NEW" #local icmpOut="$icmpOut ;icmp | -p icmp --icmp-type 3/3 -m state --state ESTABLISHED,RELATED,NEW" #local icmpIn="$icmpIn ;icmp | -p icmp --icmp-type 3/3 -m state --state ESTABLISHED,RELATED,NEW" #local icmpOut="$icmpOut ;icmp | -p icmp --icmp-type 3/4 -m state --state ESTABLISHED,RELATED,NEW" #local icmpIn="$icmpIn ;icmp | -p icmp --icmp-type 3/4 -m state --state ESTABLISHED,RELATED,NEW" # icmp redirect gateway #local icmpOut="$icmpOut;icmp | -p icmp --icmp-type 5/1" # client dhcp (bootps : 67, bootpc : 68) #local bootpcPort="$( iptoolsServicesGetPort udp bootpc )" #local bootpsPort="$( iptoolsServicesGetPort udp bootps )" #local rootUID="$( shUserId root )" #local rootGID="$( shGroupId root )" # #local ruleIn="$ruleIn ;clt_dhcp | -s "$net" -p udp --sport ${bootpsPort} --dport ${bootpcPort} -m state --state ESTABLISHED,RELATED,NEW" #local ruleOut="$ruleOut;clt_dhcp | -d "$net" -p udp --sport ${bootpcPort} --dport ${bootpsPort} -m state --state ESTABLISHED,RELATED,NEW -m owner --uid-owner ${rootUID} --gid-owner ${rootGID}" # #local ruleEthOut="$ruleEthOut;clt_dhcp | -d 255.255.255.255 -s 0.0.0.0 -p udp --sport ${bootpcPort} --dport ${bootpsPort} -m state --state ESTABLISHED,RELATED,NEW -m owner --uid-owner ${rootUID} --gid-owner ${rootGID}" ## really needed ??? #local ruleEthIn="$ruleEthIn ;clt_dhcp | -s "$net" -d 255.255.255.255 -p udp --sport ${bootpcPort} --dport ${bootpsPort} -m state --state NEW" #local ruleEthIn="$ruleEthIn ;clt_dhcp | -s "$net" -d 255.255.255.255 -p udp --sport ${bootpsPort} --dport ${bootpcPort} -m state --state NEW" # DROP # client dhcp (bootps : 67, bootpc : 68) #local dropEthIn="$dropIn ;drop_dhcp | -d 255.255.255.255 -s 0.0.0.0 -p udp --sport ${bootpcPort} --dport ${bootpsPort} -m state --state NEW" #local dropEthIn="$dropIn ;drop_igmp | -d 224.0.0.1 -s 0.0.0.0 -p igmp"