LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1332|回复: 4

分享一下我的iptables配置方法。

[复制链接]
发表于 2009-6-20 17:03:24 | 显示全部楼层 |阅读模式
首先说没有什么技术含量,写出来有两个目的,

1.都来帮我看看有没有什么问题;

2.谁不知道怎么配置,可以照猫画虎。

本文中提到的文件的名字可以随便起,但是最好让人一看就懂,

本文中多数操作都需要root权限,

首先,在要写一个iptables的规则,放在/etc/iptables.rules里面,后面再说这个规则问题,

其次,你要设置系统在开机时加载这个规则,在/etc/network/if-pre-up.d/这个目录里面建一个叫iptables的文件,

内容如下:
  1. #! /bin/bash
  2. sh /etc/iptables.rules
复制代码

设置其可执行:
  1. chmod +x iptables
复制代码

这样在开机的时候就会加载规则了。

最后,详细说说我的规则,按照我规则中的注释,稍微修改一下,就可以保护多数的个人电脑了,当然我这个规则是很简单的,只是保护我的个人电脑的,没有nat什么,

我的基本网络环境:

一个ip地址供给宿舍所有人使用,

所以有一个ip分享器来做dhcp服务器,

每台电脑都是使用dhcp来动态获得自己的网络配置信息,

配置文件如下:
  1. ################################################################################
  2. #! /bin/sh
  3. cmd="iptables"
  4. in="INPUT"
  5. out="OUTPUT"
  6. for="FORWARD"
  7. d="DROP"
  8. a="ACCEPT"
  9. nic="eth0"
  10. dns1="my.dns.server.1"
  11. dns2="my.dns.server.2"
  12. dhcp="192.168.0.1"
  13. p=" "
  14. # 上面都是我定义的变量,如果你像测试一下这个规则可以简单地设置cmd="echo",然后执行这个文件就可以了,
  15. outport_tcp="21 22 80 443 587 995 7000"
  16. # 这里面定义我要使用的基于tcp的网络服务,
  17. # 每打开一个端口就代表我将会使用一项对应的服务,
  18. # 有其他的需要就添加对应的端口,有多余的就删除对应的端口,
  19. # 端口的定义在/etc/servers里面都有,
  20. # 21 22是ssh和ftp
  21. # 443是加密的网络服务,
  22. # 587 995是gmail的,使用ssl/tls协议的pop3和smtp服务,
  23. # 7000是freenode和oftc的irc 服务,
  24. outport_udp="123 "
  25. # 这里面定义我要使用的基于udp的网络服务,
  26. ################################################################################
  27. $cmd -F
  28. $cmd -X
  29. $cmd -Z
  30. # 清空所有规则,
  31. ################################################################################
  32. # default policy
  33. $cmd -P $in $d
  34. $cmd -P $for $d
  35. $cmd -P $out $d
  36. # 设置所有链的默认规则为拒绝,
  37. ################################################################################
  38. # INPUT
  39. # lo
  40. $cmd -A $in -i lo -j $a
  41. # 本地回路,必须打开,
  42. # related and established
  43. $cmd -A $in -i $nic -m state --state RELATED,ESTABLISHED -j $a
  44. # 所有由我发起的会话所导致的相关数据包允许从eth0这个网卡进入我的主机,
  45. # ftp
  46. $cmd -A $in -i $nic -p tcp --dport 1024:65535 -j $a
  47. # 被动式ftp需要打开1024到65535的端口,
  48. # 不知道有没有其他的网络服务是像被动式ftp这样需要建立两个链接的?
  49. ################################################################################
  50. # OUTPUT
  51. # loop
  52. for p in $outport_tcp
  53. do
  54.     $cmd -A $out -p tcp --destination-port $p -j $a
  55. done
  56. # 这个循环打开所有的基于tcp的服务打开,
  57. for p in $outport_udp
  58. do
  59.     $cmd -A $out -p udp --destination-port $p -j $a
  60. done
  61. # 这个循环打开所有的基于udp的服务打开,
  62. # dns
  63. $cmd -A $out -p udp -d $dns1 --destination-port 53 -j $a
  64. $cmd -A $out -p tcp -d $dns1 --destination-port 53 -j $a
  65. $cmd -A $out -p udp -d $dns2 --destination-port 53 -j $a
  66. $cmd -A $out -p tcp -d $dns2 --destination-port 53 -j $a
  67. # 允许主机像dns服务器发送域名解析请求,否则只能输入ip来上网了,
  68. # dhcp
  69. $cmd -A $out -p udp -d $dhcp --destination-port 67 -j $a
  70. # 允许主机和我的dhcp服务器建立链接来配置网络,
  71. # lo
  72. $cmd -A $out -o lo -j $a
  73. # 本地回路,这个必须有。
  74. ########################################################################
复制代码

最后感谢一下在[color="Red"]这个帖子里面帮我的兄弟了。
发表于 2009-6-22 10:35:18 | 显示全部楼层
收藏之                             。有机会学习下
回复 支持 反对

使用道具 举报

发表于 2009-10-31 23:09:00 | 显示全部楼层
我是这样做的:

在 network/if-pre-up.d/iptables 里写:
/sbin/iptables-restore < /etc/sysconfig/iptables

然后在 /etc/sysconfig/iptables 里直接写 "iptables规则", 注意是"iptables规则", 而不是"iptables脚本".

这样就与 Fedora/CentOS 的设置方法一样了 ...
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-1 00:01:53 | 显示全部楼层
哈哈,我对iptables不是太了解,有空认真学学。
回复 支持 反对

使用道具 举报

发表于 2009-11-9 17:33:08 | 显示全部楼层
个人电脑上的iptables配置,我用Firestarter这个图形界面的iptables配置工具。

[PHP]$ sudo aptitude install firestarter[/PHP]

安装后,点几下就搞定了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表