求助!如何设置只允许指定IP的主机访问防火墙规则?

时间:2021-04-30 14:21:03
如题!操作系统是REDHAT 企业版5.
我这样添加的规则-A INPUT -s 192.168.0.105 -d 192.168.0.106 -j ACCEPT,但是不行,其中106是服务器,105是我的电脑。

14 个解决方案

#1


# iptables -t filter --append INPUT -s 192.168.0.105 -i eth0 -j ACCEPT

#2


不太明白这个-d 192.168.0.106,楼主是不是在106的服务器上设置iptables?

#3


对啊,是在服务器上设置iptables。
我要实现的就是只有指定的ip能够访问服务器,其他ip不能访问服务器。

#4


引用 1 楼 linwhwylb 的回复:
Assembly code
# iptables -t filter --append INPUT -s 192.168.0.105 -i eth0 -j ACCEPT


这样不行啊,我都不能ssh到服务器。

#5


引用 3 楼 wj8106 的回复:
对啊,是在服务器上设置iptables。
我要实现的就是只有指定的ip能够访问服务器,其他ip不能访问服务器。

那就在加一条,其它的ip采用默认策略就可以了。
# iptables -P INPUT DROP


查看以下设置是否成功?
# iptables -L -n

#6


# iptables -L -n
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
ACCEPT     all  --  192.168.0.105        0.0.0.0/0           

但是我ssh连接的时候提示
ssh: connect to host 192.168.0.106 port 22: No route to host           

#7


引用 6 楼 wj8106 的回复:
# iptables -L -n
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
AC……

按照你的要求iptables规则是没有错误的,ssh服务开启没有?
# netstat -tlup | grep ssh

#8


ssh服务肯定是开启的,因为防火墙关掉后是可以连接的,这个我保证肯定是没问题的。

#9


引用 8 楼 wj8106 的回复:
ssh服务肯定是开启的,因为防火墙关掉后是可以连接的,这个我保证肯定是没问题的。

那就指定一下端口。看看是否可行?尝试性的~~
# iptable -F
# iptable -P INPUT DROP
# iptables -t filter --append -i eth0 -p tcp -s 192.168.0.105 --dport 22 -j ACCEPT

#10


好像找到原因了,可能是命令顺序不对,为什么先要drop呢?

#11


再次失败,刚才能连上是因为我把22端口开启了。

#12


引用 10 楼 wj8106 的回复:
好像找到原因了,可能是命令顺序不对,为什么先要drop呢?

你说的其他ip就是拒绝,所以默认的策略就是DROP了。

#13


引用 9 楼 linwhwylb 的回复:
引用 8 楼 wj8106 的回复:

ssh服务肯定是开启的,因为防火墙关掉后是可以连接的,这个我保证肯定是没问题的。

那就指定一下端口。看看是否可行?尝试性的~~
# iptable -F
# iptable -P INPUT DROP
# iptables -t filter --append -i eth0 -p tcp -s 192.168.0.105 --dport 2……


这样确实可以,但是这样的话岂不是每次都要设置?要是把它写到iptables表里应该如何写呢?

#14


#iptables -F
#iptables -X
#iptables -P INPUT DROP
#iptables -P OUTPUT ACCEPT
#iptables -P FORWARD DROP
#iptables -A INPUT -i eth0 -p tcp -s 192.168.0.105 --dport 22 -j ACCEPT
#iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#iptables-save > /etc/sysconfig/iptables
#/etc/init.d/iptables restart

#1


# iptables -t filter --append INPUT -s 192.168.0.105 -i eth0 -j ACCEPT

#2


不太明白这个-d 192.168.0.106,楼主是不是在106的服务器上设置iptables?

#3


对啊,是在服务器上设置iptables。
我要实现的就是只有指定的ip能够访问服务器,其他ip不能访问服务器。

#4


引用 1 楼 linwhwylb 的回复:
Assembly code
# iptables -t filter --append INPUT -s 192.168.0.105 -i eth0 -j ACCEPT


这样不行啊,我都不能ssh到服务器。

#5


引用 3 楼 wj8106 的回复:
对啊,是在服务器上设置iptables。
我要实现的就是只有指定的ip能够访问服务器,其他ip不能访问服务器。

那就在加一条,其它的ip采用默认策略就可以了。
# iptables -P INPUT DROP


查看以下设置是否成功?
# iptables -L -n

#6


# iptables -L -n
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
ACCEPT     all  --  192.168.0.105        0.0.0.0/0           

但是我ssh连接的时候提示
ssh: connect to host 192.168.0.106 port 22: No route to host           

#7


引用 6 楼 wj8106 的回复:
# iptables -L -n
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
AC……

按照你的要求iptables规则是没有错误的,ssh服务开启没有?
# netstat -tlup | grep ssh

#8


ssh服务肯定是开启的,因为防火墙关掉后是可以连接的,这个我保证肯定是没问题的。

#9


引用 8 楼 wj8106 的回复:
ssh服务肯定是开启的,因为防火墙关掉后是可以连接的,这个我保证肯定是没问题的。

那就指定一下端口。看看是否可行?尝试性的~~
# iptable -F
# iptable -P INPUT DROP
# iptables -t filter --append -i eth0 -p tcp -s 192.168.0.105 --dport 22 -j ACCEPT

#10


好像找到原因了,可能是命令顺序不对,为什么先要drop呢?

#11


再次失败,刚才能连上是因为我把22端口开启了。

#12


引用 10 楼 wj8106 的回复:
好像找到原因了,可能是命令顺序不对,为什么先要drop呢?

你说的其他ip就是拒绝,所以默认的策略就是DROP了。

#13


引用 9 楼 linwhwylb 的回复:
引用 8 楼 wj8106 的回复:

ssh服务肯定是开启的,因为防火墙关掉后是可以连接的,这个我保证肯定是没问题的。

那就指定一下端口。看看是否可行?尝试性的~~
# iptable -F
# iptable -P INPUT DROP
# iptables -t filter --append -i eth0 -p tcp -s 192.168.0.105 --dport 2……


这样确实可以,但是这样的话岂不是每次都要设置?要是把它写到iptables表里应该如何写呢?

#14


#iptables -F
#iptables -X
#iptables -P INPUT DROP
#iptables -P OUTPUT ACCEPT
#iptables -P FORWARD DROP
#iptables -A INPUT -i eth0 -p tcp -s 192.168.0.105 --dport 22 -j ACCEPT
#iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#iptables-save > /etc/sysconfig/iptables
#/etc/init.d/iptables restart