iptstate problem / fehler / verbesserung

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • iptstate problem / fehler / verbesserung

      Hallo,

      unter dem Menüpunkt Statsu --> Verbindungen kann man ja eine liste der aktiven Verbindungen sehen.
      Diese wird mit dem cgi Script connections.cgi generiert was eigentlich nur das Programm "iptstate -s -R -bt" aufruft.

      mir ist jetzt aufgefallen das ich da ein Haufen angeblicher Verbindungen hab die die erst in "112:43:03" verschwinden werden.

      Lustiger weise sind diese Verbindungen schon längst weg bzw. werden von dem dahinter liegenden Server gar nicht mehr gehalten.
      anscheinend ist da irgendwo der wurm drin.

      mit
      /usr/sbin/conntrack -F

      lässt dich das ganze leeren, somit hat man wenigstens eine saubere Tabelle falls das ganze wieder hängt

      schön wäre auch noch wenn man das cgi script erweitern könnte mit einer Suchfunktion.
      das man eine ip eingeben kann und nur diese gesucht wird.
      würde mit "iptstate -s -R -bt -D 127.0.0.1" gehen dann werden nur Verbindungen angezeigt die source IP 127.0.0.1 haben.
      [url]http://xen-admin.de[/url]

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Preussal ()

    • Re: iptstate problem / fehler

      also ich bin jetzt kein Perl Gott oder so aber ich hab da jetzt mal ne Sortierung eingebaut

      Inhalt meiner /home/httpd/cgi-bin/connections.cgi

      Perl-Quellcode

      1. #!/usr/bin/perl
      2. #
      3. # (c) 2001 Jack Beglinger <jackb_guppy@yahoo.com>
      4. #
      5. # (c) 2003 Dave Roberts <countzerouk@hotmail.com> - colour coded netfilter/iptables rewrite for 1.3
      6. #
      7. # $Id: connections.cgi,v 1.6.2.4 2004/10/07 07:24:07 eoberlander Exp $
      8. #
      9. # Setup GREEN, ORANGE, IPCOP, VPN CIDR networks, masklengths and colours only once
      10. my @network;
      11. my @masklen;
      12. my @colour;
      13. use Net::IPv4Addr qw( :all );
      14. require '/var/efw/header.pl';
      15. &getcgihash(\%par);
      16. # Read various files
      17. my %netsettings;
      18. &readhash("${swroot}/ethernet/settings", \%netsettings);
      19. # Add Green Firewall Interface
      20. push(@network, $netsettings{'GREEN_ADDRESS'});
      21. push(@masklen, "255.255.255.255" );
      22. push(@colour, $colourfw );
      23. # Add Green Network to Array
      24. push(@network, $netsettings{'GREEN_NETADDRESS'});
      25. push(@masklen, $netsettings{'GREEN_NETMASK'} );
      26. push(@colour, $colourgreen );
      27. # Add Green Routes to Array
      28. my @routes = `/sbin/route -n | /bin/grep $netsettings{'GREEN_DEV'}`;
      29. foreach my $route (@routes) {
      30. chomp($route);
      31. my @temp = split(/[\t ]+/, $route);
      32. push(@network, $temp[0]);
      33. push(@masklen, $temp[2]);
      34. push(@colour, $colourgreen );
      35. }
      36. # Add Firewall Localhost 127.0.0.1
      37. push(@network, '127.0.0.1');
      38. push(@masklen, '255.255.255.255' );
      39. push(@colour, $colourfw );
      40. push(@network, '127.0.0.2');
      41. push(@masklen, '255.255.255.255' );
      42. push(@colour, $colourfw );
      43. # Add Orange Network
      44. if (orange_used()) {
      45. push(@network, $netsettings{'ORANGE_NETADDRESS'});
      46. push(@masklen, $netsettings{'ORANGE_NETMASK'} );
      47. push(@colour, $colourorange );
      48. # Add Orange Routes to Array
      49. @routes = `/sbin/route -n | /bin/grep $netsettings{'ORANGE_DEV'}`;
      50. foreach my $route (@routes) {
      51. chomp($route);
      52. my @temp = split(/[\t ]+/, $route);
      53. push(@network, $temp[0]);
      54. push(@masklen, $temp[2]);
      55. push(@colour, $colourorange );
      56. }
      57. }
      58. # Add Blue Network
      59. if (blue_used()) {
      60. push(@network, $netsettings{'BLUE_NETADDRESS'});
      61. push(@masklen, $netsettings{'BLUE_NETMASK'} );
      62. push(@colour, $colourblue );
      63. # Add Blue Routes to Array
      64. @routes = `/sbin/route -n | /bin/grep $netsettings{'BLUE_DEV'}`;
      65. foreach my $route (@routes) {
      66. chomp($route);
      67. my @temp = split(/[\t ]+/, $route);
      68. push(@network, $temp[0]);
      69. push(@masklen, $temp[2]);
      70. push(@colour, $colourblue );
      71. }
      72. }
      73. # add openvpn tunnels
      74. my $tunnels = get_taps();
      75. foreach my $taps (@$tunnels) {
      76. my $tun = $taps->{'tap'};
      77. my @routes = `/sbin/route -n | /bin/grep $tun`;
      78. foreach my $route (@routes) {
      79. chomp($route);
      80. my @temp = split(/[\t ]+/, $route);
      81. push(@network, $temp[0]);
      82. push(@masklen, $temp[2]);
      83. push(@colour, $colourvpn);
      84. }
      85. }
      86. # add remote openvpn networks
      87. if (-f "${swroot}/openvpn/enable") {
      88. my %openvpnsettings=();
      89. &readhash("${swroot}/openvpn/settings", \%openvpnsettings);
      90. my @routes = `/sbin/route -n | /bin/grep $openvpnsettings{'PURPLE_DEVICE'}`;
      91. foreach my $route (@routes) {
      92. chomp($route);
      93. my @temp = split(/[\t ]+/, $route);
      94. push(@network, $temp[0]);
      95. push(@masklen, $temp[2]);
      96. push(@colour, $colourvpn);
      97. }
      98. }
      99. my $uplinksref = get_uplinks();
      100. foreach my $uplink (@$uplinksref) {
      101. next if (! -f "${swroot}/uplinks/$uplink/active");
      102. next if (! -f "${swroot}/uplinks/$uplink/data");
      103. my %hash;
      104. readhash("${swroot}/uplinks/$uplink/data", \%hash);
      105. my $ip = $hash{'ip_address'};
      106. next if ($ip =~ /^$/);
      107. push(@network, $ip);
      108. push(@masklen, '255.255.255.255' );
      109. push(@colour, $colourfw );
      110. }
      111. &showhttpheaders();
      112. if($par{'action'} ne 'reload') {
      113. &openpage(_('Connections'), 1, '');
      114. &openbigbox($errormessage, $warnmessage, $notemessage);
      115. &openbox('100%', 'left', _('IPTables connection tracking'));
      116. }
      117. # Edit Start
      118. $buffer = $ENV{'QUERY_STRING'};
      119. @pairs = split(/&/, $buffer);
      120. foreach $pair (@pairs){
      121. ($name, $value) = split(/=/, $pair);
      122. $value =~ tr/+/ /;
      123. $value =~ s/%(..)/pack("C", hex($1))/eg;
      124. $FORM{$name} = $value;
      125. }
      126. $sortby = $FORM{sortby};
      127. $asc = $FORM{asc};
      128. if($par{'action'} ne 'reload') {
      129. if (!defined ($buffer)){
      130. printf <<END
      131. <script type="text/javascript">
      132. function loadConnections() {
      133. \$('#connections').load('/cgi-bin/connections.cgi', {action: 'reload'});
      134. }
      135. \$(document).ready(function() {
      136. var itvl = setInterval("loadConnections()", 1000*5);
      137. });
      138. </script>
      139. END
      140. ;
      141. }else{
      142. printf <<END
      143. <script type="text/javascript">
      144. function loadConnections() {
      145. \$('#connections').load('/cgi-bin/connections.cgi?sortby=$sortby&asc=$asc', {action: 'reload'});
      146. }
      147. \$(document).ready(function() {
      148. var itvl = setInterval("loadConnections()", 1000*5);
      149. });
      150. </script>
      151. END
      152. ;
      153. }
      154. }
      155. # Edit Ende
      156. if($par{'action'} ne 'reload') {
      157. print '<div id="connections">'
      158. }
      159. printf <<END
      160. <table width='100%'>
      161. <tr><td align='center'><b>%s: </b></td>
      162. <td align='center' bgcolor='$colourgreen'><b><font color='#FFFFFF'>%s</font></b></td>
      163. <td align='center' bgcolor='$colourred'><b><font color='#FFFFFF'>%s</font></b></td>
      164. <td align='center' bgcolor='$colourorange'><b><font color='#FFFFFF'>%s</font></b></td>
      165. <td align='center' bgcolor='$colourblue'><b><font color='#FFFFFF'>%s</font></b></td>
      166. <td align='center' bgcolor='$colourfw'><b><font color='#FFFFFF'>%s</font></b></td>
      167. <td align='center' bgcolor='$colourvpn'><b><font color='#FFFFFF'>%s</font></b></td>
      168. </tr>
      169. </table>
      170. <table cellpadding='2' width="100%">
      171. <tr>
      172. <td align='center'><b>%s</b></td>
      173. <td align='center'><b>%s</b></td>
      174. <td align='center'><b>%s</b></td>
      175. <td align='center'><b>%s</b></td>
      176. <td align='center'><b>%s</b></td>
      177. <td align='center'><b>%s</b></td>
      178. <td align='center'><b>%s</b></td>
      179. </tr>
      180. END
      181. ,
      182. _('Legend'),
      183. _('LAN'),
      184. _('INTERNET'),
      185. _('DMZ'),
      186. _('Wireless'),
      187. $brand.' '.$product,
      188. _('VPN (IPsec)'),
      189. _('Source IP'." <a href='/cgi-bin/connections.cgi?sortby=souce&asc=1'><b>ASC</b></a> <a href='/cgi-bin/connections.cgi?sortby=sourc&asc=0'><b>DESC</b></a>"),
      190. _('Source port'),
      191. _('Destination IP'." <a href='/cgi-bin/connections.cgi?sortby=desti&asc=1'><b>ASC</b></a> <a href='/cgi-bin/connections.cgi?sortby=desti&asc=0'><b>DESC</b></a>"),
      192. _('Destination port'),
      193. _('Protocol'),
      194. _('Status'." <a href='/cgi-bin/connections.cgi?sortby=state&asc=1'><b>ASC</b></a> <a href='/cgi-bin/connections.cgi?sortby=state&asc=0'><b>DESC</b></a>"),
      195. _('Expires'." <a href='/cgi-bin/connections.cgi?sortby=ttl&asc=1'><b>ASC</b></a> <a href='/cgi-bin/connections.cgi?sortby=ttl&asc=0'><b>DESC</b></a>")
      196. ;
      197. # Edit Start
      198. if ($sortby eq 'desti'){
      199. $sort_by = "d";
      200. }elsif ($sortby eq 'sourc'){
      201. $sort_by = "";
      202. }elsif ($sortby eq 'state'){
      203. $sort_by = "s";
      204. }elsif ($sortby eq 'ttl'){
      205. $sort_by = "t";
      206. }else{
      207. $sort_by = "t";
      208. }
      209. if ($asc eq '1'){
      210. $ausfueren = 'sudo iptstate -s -b'.$sort_by;
      211. }else{
      212. $ausfueren = 'sudo iptstate -s -R -b'.$sort_by;
      213. }
      214. #print $ausfueren;
      215. my @active = `$ausfueren`;
      216. #my @active = `sudo iptstate -s -R -bt`;
      217. #Edit Ende
      218. #open (ACTIVE, "/proc/net/ipsec_eroute");
      219. #my @vpn = <ACTIVE>;
      220. #close (ACTIVE);
      221. my $i=0;
      222. foreach my $line (@active) {
      223. $i++;
      224. if ($i < 3) {
      225. next;
      226. }
      227. chomp($line);
      228. my @temp = split(' ',$line);
      229. my ($sip, $sport) = split(':', $temp[0]);
      230. my ($dip, $dport) = split(':', $temp[1]);
      231. my $proto = $temp[2];
      232. my $state = $temp[3];
      233. my $ttl = $temp[4];
      234. if (($proto eq 'udp') && ($ttl eq '')) {
      235. $ttl = $state;
      236. $state = '&nbsp;';
      237. }
      238. my $sipcol = ipcolour($sip);
      239. my $dipcol = ipcolour($dip);
      240. my $sserv = '';
      241. if ($sport < 1024) {
      242. $sserv = uc(getservbyport($sport, lc($proto)));
      243. if ($sserv ne '') {
      244. $sserv = "&nbsp($sserv)";
      245. }
      246. }
      247. my $dserv = '';
      248. if ($dport < 1024) {
      249. $dserv = uc(getservbyport($dport, lc($proto)));
      250. if ($dserv ne '') {
      251. $dserv = "&nbsp($dserv)";
      252. }
      253. }
      254. printf <<END
      255. <tr class='odd'>
      256. <td align='center' bgcolor='$sipcol'>
      257. <a href='/cgi-bin/ipinfo.cgi?ip=$sip'>
      258. <font color='#FFFFFF'>$sip</font>
      259. </a>
      260. </td>
      261. <td align='center' bgcolor='$sipcol'>
      262. <a href='http://isc.sans.org/port_details.php?port=$sport' target='top'>
      263. <font color='#FFFFFF'>$sport$sserv</font>
      264. </a>
      265. </td>
      266. <td align='center' bgcolor='$dipcol'>
      267. <a href='/cgi-bin/ipinfo.cgi?ip=$dip'>
      268. <font color='#FFFFFF'>$dip</font>
      269. </a>
      270. </td>
      271. <td align='center' bgcolor='$dipcol'>
      272. <a href='http://isc.sans.org/port_details.php?port=$dport' target='top'>
      273. <font color='#FFFFFF'>$dport$dserv</font>
      274. </a>
      275. </td>
      276. <td align='center'>$proto</td>
      277. <td align='center'>$state</td>
      278. <td align='center'>$ttl</td>
      279. </tr>
      280. END
      281. ;
      282. }
      283. print '</table>';
      284. if($par{'action'} ne 'reload') {
      285. print '</div>';
      286. }
      287. if($par{'action'} ne 'reload') {
      288. &closebox();
      289. &closebigbox();
      290. &closepage();
      291. }
      292. sub ipcolour($) {
      293. my $id = 0;
      294. my $line;
      295. my $colour = $colourred;
      296. my ($ip) = $_[0];
      297. my $found = 0;
      298. foreach my $line (@network)
      299. {
      300. if (!$found && ipv4_in_network( $network[$id] , $masklen[$id], $ip) ) {
      301. $found = 1;
      302. $colour = $colour[$id];
      303. }
      304. $id++;
      305. }
      306. return $colour
      307. }
      Alles anzeigen


      Übernehme keine Garantie


      Schaut dann so aus
      Bilder
      • Unbenannt.JPG

        38,95 kB, 780×362, 310 mal angesehen
      [url]http://xen-admin.de[/url]