File: //ibin/iptables-save-build.pl.10-23-08
#!/usr/bin/perl
$x="1000";
$line_break="\n";
$old_code = "first-time";
# Debug Mode 0= Debug Off 1= Debug On
$debug_mode = "1";
($servername, $domain, $extension) = (split /\./, $hostname);
#if ($servername eq "saturn) {
$config_file="/ibin/conf/iptables.block-ip.conf";
$map_file="/ibin/conf/iptables.block-ip.map";
if ( $debug_mode != "1" ) {
# system("iptables -F \n");
system("iptables -F CIDR-TURKEY\n");
system("iptables -F CIDR-DROP\n");
system("iptables -F CIDR-INDIA-KOREA\n");
system("iptables -F CIDR-TURKEY\n");
system("iptables -F CIDR-RUSSIA\n");
system("iptables -F CIDR-CZECH\n");
system("iptables -F CIDR-ASIAN\n");
}
open(MAP_FILE,">$map_file") or die($!);
open(CONFIG_FILE,$config_file) or die($!);
print "#Generated by Innovative IP DB\n";
print "*filter\n";
print ":INPUT ACCEPT [0:0]\n";
print ":FORWARD ACCEPT [0:0]\n";
print ":OUTPUT ACCEPT [0:0]\n";
#print ":RH-Firewall-1-INPUT - [0:0]\n";
#print ":fail2ban-postfix - [0:0]\n";
#print ":fail2ban-postfix-log - [0:0]\n";
#print "[Always]\n";
print ":SMTP_TRAFFIC - [0:0]\n";
print "-A INPUT -p tcp --dport 25 -m state --state NEW -j SMTP_TRAFFIC\n";
#print "[/Always]\n";
while($line = <CONFIG_FILE>) {
chomp($line);
next if $line =~ /#/;
(
$type,
$ip
) = split(/:/, $line);
$x++;
#print $type . "\n";
if ($type eq "H") {
$prefixH = "iptables -t filter -A OUTPUT -d ";
$suffix_1H = " -j LOG --log-prefix HACK-BLOCK-" . $x . " ";
$suffix_2H = " -j DROP";
if ( $debug_mode == "1" ) {
print $prefixH . $ip . $suffix_1H . "\n";
print $prefixH . $ip . $suffix_2H . "\n";
} else {
system($prefixH . $ip . $suffix_1H . "\n");
system($prefixH . $ip . $suffix_2H . "\n");
}
} else {
#----------< Block Mail Type: Spammers >----------
if ( $type eq "M" ) {
$code = "IISG";
} elsif ($type eq "J") {
$code = "JAPAN";
} elsif ($type eq "A") {
$code = "ASIAN";
} elsif ($type eq "P") {
$code = "POLAND";
} elsif ($type eq "C") {
$code = "CZECH";
} elsif ($type eq "T") {
$code = "TURKEY";
} elsif ($type eq "I") {
$code = "INDIA-KOREA";
} elsif ($type eq "R") {
$code = "RUSSIA";
} elsif ($type eq "U") {
$code = "UK";
} elsif ($type eq "D") {
$code = "DROP";
} elsif ($type eq "Z") {
$code = "TEST";
}
#-A INPUT -j CIDR-ASIAN
#-A INPUT -j CIDR-CZECH
#-A INPUT -j CIDR-RUSSIA
#-A INPUT -j CIDR-TURKEY
#-A INPUT -j CIDR-INDIA-KOREA
#-A INPUT -j CIDR-DROP
#-A INPUT -j CIDR-TURKEY
#-A INPUT -j CIDR-ASIAN
#-A INPUT -j CIDR-CZECH
#-A INPUT -j CIDR-RUSSIA
#-A INPUT -j CIDR-TURKEY
#-A INPUT -j CIDR-INDIA-KOREA
#-A INPUT -j CIDR-DROP
#-A INPUT -j CIDR-TURKEY
#-A CIDR-ASIAN -s 58.14.0.0/255.254.0.0 -p tcp -j LOG --log-prefix "SPAM-BLOCK-CIDR-ASIAN"
#-A CIDR-ASIAN -s 58.14.0.0/255.254.0.0 -p tcp -m tcp --dport 25 -j DROP
#-A CIDR-ASIAN -s 58.16.0.0/255.248.0.0 -p tcp -j LOG --log-prefix "SPAM-BLOCK-CIDR-ASIAN"
#-A CIDR-ASIAN -s 58.16.0.0/255.248.0.0 -p tcp -m tcp --dport 25 -j DROP
if ( $debug_mode == "1" ) {
if ($code ne $old_code) {
# if ($old_code ne "first-time") {
# print "[/" . $old_code . "]\n";
# }
# print "[".$code ."]\n";
print ":LOG_". $code . " - [0:0]\n";
print ":CIDR-". $code . " - [0:0]\n";
print "-A SMTP_TRAFFIC -j CIDR-" . $code . "\n";
print "-A LOG_" . $code . " -j LOG --log-prefix \"SPAM-BLOCK-CIDR-" . $code . "\"\n";
print "-A LOG_" . $code . " -j DROP\n";
}
#print "-A LOG_". $code . " -j LOG --log-prefix \"SPAM-BLOCK-CIDR-" . $code . "\"\n";
print "-A CIDR-". $code . " -s " . $ip . " -j LOG_" . $code . "\n";
#print "-A CIDR-". $code . " -s " . $ip . " -p tcp -j LOG --log-prefix \"SPAM-BLOCK-CIDR-" . $code . "\"\n";
#print "-A CIDR-". $code . " -s " . $ip . " -p tcp -m tcp --dport 25 -j DROP\n";
} else {
print ":LOG_". $code . " - [0:0]\n";
print ":CIDR-". $code . " - [0:0]\n";
print "-A SMTP_TRAFFIC -j CIDR-" . $code . "\n";
print "-A LOG_" . $code . " -j LOG --log-prefix \"SPAM-BLOCK-CIDR-" . $code . "\"\n";
print "-A LOG_" . $code . " -j DROP\n";
#print "-A LOG_". $code . " -j LOG --log-prefix \"SPAM-BLOCK-CIDR-" . $code . "\"\n";
print "-A CIDR-". $code . " -s " . $ip . " -j LOG_" . $code . "\n";
#print "-A CIDR-". $code . " -s " . $ip . " -p tcp -j LOG --log-prefix \"SPAM-BLOCK-CIDR-" . $code . "\"\n";
#print "-A CIDR-". $code . " -s " . $ip . " -p tcp -m tcp --dport 25 -j DROP\n";
}
}
$old_code = $code;
if ( $debug_mode == "0" ) {
print MAP_FILE $ip . "\t\t\tBLOCK-MAP# " . $x . $line_break;
}
}
print "COMMIT\n\n";
close(CONFIG_FILE);
close(MAP_FILE);
exit;