LinuxSir.cn,穿越时空的Linuxsir!

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

IPTABLES防火墙使用经验一谈[原创:大熊宝宝]

[复制链接]
发表于 2002-12-4 18:21:45 | 显示全部楼层 |阅读模式
IPTABLES防火墙使用经验一谈[原创:大熊宝宝]

最近架设了一台LINUX的小型服务器 因为需要把LINUX的机子作为软路由器来使用 所以把使用的一些经验谈一下。

iptables的功能十分的强大 例如IP转发和伪装 防御DoS,扫描和嗅探试的攻击等等 在这里就不阐述了

我的系统环境: redhat 7.2
             adsl 2m
             8139fast 网卡

1:linux如何所以软路由功能:


说到这里 大家可能会想 只要在/etc/rc.d/rc.local加上cat 1 >/proc/sys/net/ipv4/ip_forward就可以了 让linux具备ip_forward的功能 但你会发现 就算这样设置你局域网内的其他电脑还是不能共享上网 这是为什么 因为当你只有一个公网的ip时候 你就必须用到iptables的IP伪装功能 把IP的伪装成你公网的IP 那怎么实现呢 你可以这样
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE 这样就可以把你所以出去的IP地址伪装成ppp0的IP地址(因为我是ADSL 如有不同可以修改)

2:我不想开放我的端口 但我要在我的电脑上启用http服务 并对外服务:


因为你不想开放除了80以外的端口 你可以这样
iptables –P INPUT –j DROP 我们用-P来拦截全部的通信
然后在来允许哪些端口可以被使用你可以这样写:
iptables –A INPUT –p tcp –dport 80 –j ACCEPT
你可以适当的按照这样的格式来添加自己想开放的端口 当然如果你觉得这样不是很好的管理你也可以新建一个iptables表 你可以这样做
iptables –N test (新建一个test表)
iptables –A test DROP
iptables –A test –p tcp –dport 80 –j ACCEPT(允许80端口被访问)
iptables –A INPUT –j test
iptables –A OUTPUT –j test
iptables –A FORWARD –j test(这3条的意思指让INPUT OUTPUT FORWARD都按照test的设置)

3我想在我内网的电脑上架设ftp服务 我该怎么做:


这就又要用到iptables 的又一个强大的功能端口映射了
你可以这样iptables -t nat -A PREROUTING -p tcp -m tcp --dport 25 -j DNAT --to-destination
192.168.0.6:21
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.0.6 -p tcp -m tcp --
dport 25-j SNAT --to-source 192.168.0.1
这写是XCHEN兄给我的指导 再这里先谢谢了 上面2句话的意思是把服务器的25端口映射到192.168.0.6这台电脑上

4:我不想让人家可以PING到我


这大概是做防火墙用到最多的一种了 你可以在iptables写这句话
iptables -A INPUT -p icmp --icmp-type echo-request -i ppp0 -j DROP
如果你前面是新建了一个新的test表 那也可以这样写iptables -A test -p icmp --icmp-type echo-request -i ppp0 -j DROP

这句话就是不允许人家PING我 因为ping用到的是icmp协议 因为icmp没有端口可言 所以也不需要指定端口了
好了 这就是iptables的几种比较基本的用法
这里在介绍几iptbales常用的一些命令
iptables –F 清空所有的iptables的规则设置
/sbin/iptables-save > iptables – save 把你的规则保存下来 因为你所有设置的规则再重新启动后都不会被保存 所以你必须来写一个脚本来让他开机运行 所以你就可以用这命令来保存你的规则 然后让他开机自动运行就可以了。
发表于 2002-12-28 15:39:56 | 显示全部楼层
/sbin/iptables-save 这条我rh8.0试过,不起作用,最后还是把配置考到/etc/rc.d/rc.local里,就可以开机执行了
发表于 2002-12-28 18:57:51 | 显示全部楼层
我去试试
发表于 2003-3-13 13:59:24 | 显示全部楼层
我用iptables禁止了ping,但ping自己还是ping得通啊???

怎么回事???
发表于 2003-3-14 04:57:34 | 显示全部楼层
如果你用iptables -A test -p icmp --icmp-type echo-request -i ppp0 -j DROP, 那你肯定能ping通自己,因为你只禁止了从ppp0上来的ping( -i ppp0 ).
试试这个:iptables -A test -p icmp --icmp-type echo-request -j DROP
还ping得通吗?
发表于 2003-4-6 16:28:49 | 显示全部楼层

ask

关于FTP端口映射那个,第一句很好理解
第二句,按照字面上的意思是"把源地址为192.168.0.0/24目标地址为192.168.0.6的端口为25的tcp连接数据包的源地址都映射为192.168.0.1",不知道用意何在?
发表于 2003-4-6 16:49:02 | 显示全部楼层

Re: IPTABLES防火墙使用经验一谈[原创:大熊宝宝]

最初由 北南南北 发布
IPTABLES防火墙使用经验一谈[原创:大熊宝宝]

3我想在我内网的电脑上架设ftp服务 我该怎么做:


这就又要用到iptables 的又一个强大的功能端口映射了
你可以这样iptables -t nat -A PREROUTING -p tcp -m tcp --dport 25 -j DNAT --to-destination
192.168.0.6:21
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.0.6 -p tcp -m tcp --
dport 25-j SNAT --to-source 192.168.0.1
这写是XCHEN兄给我的指导 再这里先谢谢了 上面2句话的意思是把服务器的25端口映射到192.168.0.6这台电脑上

上面一局里面的-m tcp 应该去掉吧。 -m里面好象没用tcp这个参数
后面那句实际上就是叫内部的机器可以和外面的通信。如果主机是动态ip的话用MASQUERADE代替snat和后面的一堆东西就可以了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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