天天看点

python 处理linux iptables 策略

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

<code># vim: tabstop=4 shiftwidth=4 softtabstop=4</code>

<code># Copyright 2010 United States Government as represented by the</code>

<code># Administrator of the National Aeronautics and Space Administration.</code>

<code># Copyright 2011 Justin Santa Barbara</code>

<code># All Rights Reserved.</code>

<code># Copyright (c) 2010 Citrix Systems, Inc.</code>

<code>#</code>

<code>#    Licensed under the Apache License, Version 2.0 (the "License"); you may</code>

<code>#    not use this file except in compliance with the License. You may obtain</code>

<code>#    a copy of the License at</code>

<code>#         http://www.apache.org/licenses/LICENSE-2.0</code>

<code>#    Unless required by applicable law or agreed to in writing, software</code>

<code>#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT</code>

<code>#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the</code>

<code>#    License for the specific language governing permissions and limitations</code>

<code>#    under the License.</code>

<code>import</code> <code>os,sys,time,commands,shutil,re,traceback</code>

<code>from</code> <code>kxtools </code><code>import</code> <code>config</code>

<code>from</code> <code>kxtools </code><code>import</code> <code>log</code>

<code>LOG </code><code>=</code> <code>log.get_logger(__name__)</code>

<code>cfg </code><code>=</code> <code>config</code>

<code>def</code> <code>COMM(cmd):</code>

<code>    </code><code># Call system commands</code>

<code>    </code><code>try</code><code>:</code>

<code>        </code><code>x,y </code><code>=</code> <code>commands.getstatusoutput(cmd)</code>

<code>        </code><code>if</code> <code>x </code><code>=</code><code>=</code> <code>0</code><code>:</code>

<code>            </code><code>return</code> <code>y</code>

<code>        </code><code>return</code> <code>y</code>

<code>    </code><code>except</code><code>:</code>

<code>        </code><code>LOG.error(traceback.format_exc())</code>

<code>def</code> <code>iptablesRestore():</code>

<code>    </code><code># Effective firewall</code>

<code>        </code><code>os.system(</code><code>"/sbin/iptables-restore /etc/sysconfig/iptables"</code><code>)</code>

<code>def</code> <code>removes(sfile,dfile):</code>

<code>    </code><code># removes files</code>

<code>        </code><code>shutil.copy(sfile,dfile)</code>

<code>        </code><code>LOG.info(</code><code>'Copy %s is ok'</code><code>%</code><code>sfile)</code>

<code>        </code><code>return</code> <code>'False'</code>

<code>def</code> <code>add_filrewall(zones,ips):</code>

<code>    </code><code>CONF</code><code>=</code><code>cfg.load_cfg()[</code><code>'iptables'</code><code>]</code>

<code>    </code><code>if</code> <code>zones !</code><code>=</code> <code>'TW'</code><code>:</code>

<code>        </code><code>sfile </code><code>=</code> <code>CONF[</code><code>'file'</code><code>]</code>

<code>    </code><code>else</code><code>:</code>

<code>        </code><code>sfile </code><code>=</code> <code>CONF[</code><code>'fw_file'</code><code>]</code>

<code>    </code><code>for</code> <code>i </code><code>in</code> <code>[</code><code>'161'</code><code>,</code><code>'5666'</code><code>]:</code>

<code>        </code><code>_insertFirewall(ips,zones,sfile,i)</code>

<code>def</code> <code>_insertFirewall(ips,zones,sfile,ports):</code>

<code>    </code><code>f </code><code>=</code> <code>open</code><code>(sfile).readlines()</code>

<code>    </code><code>for</code> <code>ip </code><code>in</code> <code>ips:</code>

<code>        </code><code>for</code> <code>n,s </code><code>in</code> <code>enumerate</code><code>(f):</code>

<code>            </code><code>if</code>  <code>re.search(ip,s) </code><code>and</code> <code>re.search(ports,s):</code>

<code>                </code><code>break</code>

<code>            </code><code>else</code><code>:</code>

<code>                </code><code>if</code> <code>re.search(</code><code>'--dport 9090'</code><code>,s):</code>

<code>                    </code><code>mes </code><code>=</code> <code>s.split(</code><code>' '</code><code>)</code>

<code>                    </code><code>a </code><code>=</code> <code>n</code>

<code>                    </code><code>role </code><code>=</code> <code>"%s %s  -s %s -m state --state NEW -m tcp -p tcp --dport %s -j ACCEPT \n"</code> <code>\</code>

<code>                        </code><code>%</code><code>(mes[</code><code>0</code><code>],mes[</code><code>1</code><code>],ip,ports)</code>

<code>                    </code><code>f.insert(a,role)</code>

<code>                    </code><code>break</code>

<code>    </code><code>fp </code><code>=</code> <code>open</code><code>(sfile,</code><code>'w'</code><code>)</code>

<code>    </code><code>fp.writelines(f)</code>

<code>    </code><code>fp.close()</code>

<code>    </code><code>iptablesRestore()</code>

<code>    </code><code>LOG.info(</code><code>" %s zone zabbix firewall is oK "</code><code>%</code><code>zones)</code>

本文转自 swq499809608 51CTO博客,原文链接:http://blog.51cto.com/swq499809608/1401329