LinuxSir.cn,穿越时空的Linuxsir!

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

请教大家关于iptables开放端口提供服务器的问题!!!

[复制链接]
发表于 2004-2-3 03:36:06 | 显示全部楼层 |阅读模式
我的机器2块网卡,eth0对外,eth1对内(192.168.1.1)

我想提供FTP/HTTP服务,对内/外..(外部,内部都可以访问)

开放SMB,SSH/Telnet服务,对内...不允许外部访问..

请问这样的功能该如何去写呢???
发表于 2004-2-8 00:14:46 | 显示全部楼层
我想应该这样写吧:
iptables -P INPUT DROP  //默认策略丢弃所有的包.
iptabls -A INPUT -i eth1 -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT //限制只有内部网能够SSH.
iptabls -A INPUT -i eth1 -s 192.168.1.0/24 -p tcp --dport 23 -j ACCEPT //限制只有内部网能够TELNET.
SMB的端口我不知道是多少,看了/etc/services也没有看到,老兄自己找到端口把--dport后面的端改成smb的端口就对了吧.老兄如果知道SMB使用的那个端口也请告诉我一声.
iptables -A INPUT -i eth1 -p tcp --dport 21 -j ACCEPT //允许任何地址访问FTP.
http的同样改端口就是了.
发表于 2004-2-8 00:32:38 | 显示全部楼层
不知道楼主的问题解决了吗?
 楼主| 发表于 2004-2-8 04:24:49 | 显示全部楼层
正在测试中...大家有好的,给俺讲讲!!
 楼主| 发表于 2004-2-8 04:27:29 | 显示全部楼层
最初由 EvilSeed 发表
我想应该这样写吧:
iptables -P INPUT DROP  //默认策略丢弃所有的包.
iptabls -A INPUT -i eth1 -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT //限制只有内部网能够SSH.
iptabls -A INPUT -i eth1 -s 192.168.1.0/24 -p tcp --dport 23 -j ACCEPT //限制只有内部网能够TELNET.
SMB的端口我不知道是多少,看了/etc/services也没有看到,老兄自己找到端口把--dport后面的端改成smb的端口就对了吧.老兄如果知道SMB使用的那个端口也请告诉我一声.
iptables -A INPUT -i eth1 -p tcp --dport 21 -j ACCEPT //允许任何地址访问FTP.
http的同样改端口就是了.


是135:139..

iptables -A OUTPUT -p tcp --dport 135:139 -j DROP -o ppp0
iptables -A OUTPUT -p udp --dport 135:139 -j DROP -o ppp0

上面两句,是不是写的是禁止SMB从ppp0/eth0口出去呀!!!

PS:兄弟,你写的开放FTP/http的部分,是不是应该是eth0呀!!!我的eth0是对外的..
发表于 2004-2-8 07:02:52 | 显示全部楼层
[PHP]#!/bin/bash

if [ "$1" = "start" ]
then
        echo "Starting firewall..."
        iptables -P INPUT DROP
        iptables -A INPUT -i ! eth0 -j ACCEPT
        iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

        iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
        iptables -A INPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT
        iptables -A INPUT -p tcp --dport 139 -m state --state NEW -j ACCEPT
        iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
        iptables -A INPUT -p tcp -i eth0 -j REJECT --reject-with tcp-reset
        iptables -A INPUT -p udp -i eth0 -j REJECT --reject-with icmp-port-unreachable

        echo 1 > /proc/sys/net/ipv4/ip_forward
               
        iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
fi       

if [ "$1" = "stop" ]
then
        echo "Stopping firewall..."
        iptables -F INPUT
        iptables -P INPUT ACCEPT
        iptables -t nat -F POSTROUTING
fi

if [ "$1" = "restart" ]
then
        echo "Restart firewll...."
        $0 "stop"
        $0 "start"
fi[/PHP]
 楼主| 发表于 2004-2-8 15:11:52 | 显示全部楼层
兄弟,你能否讲一下是啥意思呢???
发表于 2004-2-9 00:17:12 | 显示全部楼层
建议你看一下 《Linux 2.4有状态防火墙设计》
发表于 2004-2-9 02:04:52 | 显示全部楼层
发表于 2004-2-9 13:44:26 | 显示全部楼层
最初由 llcspring 发表
[PHP]#!/bin/bash

if [ "$1" = "start" ]
then
        echo "Starting firewall..."
        iptables -P INPUT DROP
        iptables -A INPUT -i ! eth0 -j ACCEPT
        iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

        iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
        iptables -A INPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT
        iptables -A INPUT -p tcp --dport 139 -m state --state NEW -j ACCEPT
        iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
        iptables -A INPUT -p tcp -i eth0 -j REJECT --reject-with tcp-reset
        iptables -A INPUT -p udp -i eth0 -j REJECT --reject-with icmp-port-unreachable

        echo 1 > /proc/sys/net/ipv4/ip_forward
               
        iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
fi       

if [ "$1" = "stop" ]
then
        echo "Stopping firewall..."
        iptables -F INPUT
        iptables -P INPUT ACCEPT
        iptables -t nat -F POSTROUTING
fi

if [ "$1" = "restart" ]
then
        echo "Restart firewll...."
        $0 "stop"
        $0 "start"
fi[/PHP]

看了兄弟的帖子,才发现很多经典的东西.只是有几个地方不懂,望兄弟讲解一下.从兄弟的配置里面,我实在看不出来究竟哪一条是限制外部网络访问SSH和SMB的.还有就是脚本里面的变量$1是不是脚本运行时带的第一个参数啊?还有就是为什么要是用nat呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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