iptables 只拒绝某个ip的所有连接

linux下IPTABLES配置详解

如果你的IPTABLES基础知识还不了解,建议先去看看.
开始配置
我们来配置一个filter表的防火墙.
(1)查看本机关于IPTABLES的设置情况
[root@tp ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target       prot opt source                 destination         
Chain FORWARD (policy ACCEPT)
target       prot opt source                 destination         
Chain OUTPUT (policy ACCEPT)
target       prot opt source                 destination         
Chain RH-Firewall-1-INPUT (0 references)
target       prot opt source                 destination         
ACCEPT       all    --    0.0.0.0/0              0.0.0.0/0           
ACCEPT       icmp --    0.0.0.0/0              0.0.0.0/0             icmp type 255 
ACCEPT       esp    --    0.0.0.0/0              0.0.0.0/0           
ACCEPT       ah     --    0.0.0.0/0              0.0.0.0/0           
ACCEPT       udp    --    0.0.0.0/0              224.0.0.251           udp dpt:5353 
ACCEPT       udp    --    0.0.0.0/0              0.0.0.0/0             udp dpt:631 
ACCEPT       all    --    0.0.0.0/0              0.0.0.0/0             state RELATED,ESTABLISHED 
ACCEPT       tcp    --    0.0.0.0/0              0.0.0.0/0             state NEW tcp dpt:22 
ACCEPT       tcp    --    0.0.0.0/0              0.0.0.0/0             state NEW tcp dpt:80 
ACCEPT       tcp    --    0.0.0.0/0              0.0.0.0/0             state NEW tcp dpt:25 
REJECT       all    --    0.0.0.0/0              0.0.0.0/0             reject-with icmp-host-prohibited 
可以看出我在安装linux时,选择了有防火墙,并且开放了22,80,25端口.

如果你在安装linux时没有选择启动防火墙,是这样的
[root@tp ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target       prot opt source                 destination    
     
Chain FORWARD (policy ACCEPT)
target       prot opt source                 destination         

Chain OUTPUT (policy ACCEPT)
target       prot opt source                 destination  
什么规则都没有.


(2)清除原有规则.
不管你在安装linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter的所有规则.
[root@tp ~]# iptables -F        清除预设表filter中的所有规则链的规则
[root@tp ~]# iptables -X        清除预设表filter中使用者自定链中的规则
我们在来看一下
[root@tp ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target       prot opt source                 destination         
Chain FORWARD (policy ACCEPT)
target       prot opt source                 destination         
Chain OUTPUT (policy ACCEPT)
target       prot opt source                 destination      
什么都没有了吧,和我们在安装linux时没有启动防火墙是一样的.(提前说一句,这些配置就像用命令配置IP一样,重起就会失去作用),怎么保存.

[root@tp ~]# /etc/rc.d/init.d/iptables save
这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用.

[root@tp ~]# service iptables restart
现在IPTABLES配置表里什么配置都没有了,那我们开始我们的配置吧




如何用 iptables 禁止某个ip?

1、添加对 114.32.207.47 的过滤(直接 DROP 掉)

iptables -I INPUT -s 114.32.207.47 -j DROP

 

2、检查设置是否正常

iptables --list

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       all  --  114-32-207-47.HINET-IP.hinet.net  anywhere            
 
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
 
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination   


单个IP的命令是    
iptables -I INPUT -s 115.236.160.83 -j DROP  


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要限制每个 IP 对每个端口的 TCP 连接数,可以使用 Linux iptables 工具。 首先,确保 iptables 已经安装。然后,运行以下命令: ``` iptables -A INPUT -p tcp --syn --dport <端口号> -m connlimit --connlimit-above 20 -j REJECT ``` 其中,<端口号> 是你想要限制连接数的端口号。例如,如果你想限制对端口 80 的连接数,命令如下: ``` iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 -j REJECT ``` 这条命令会在每个 IP 对端口 80 的连接数超过 20 时,拒绝新的连接请求。 注意:这条命令只会在内存中生效,如果想永久生效,需要将它保存到配置文件中,例如: ``` service iptables save ``` 或者 ``` /sbin/iptables-save > /etc/sysconfig/iptables ``` 保存之后,重启 iptables 服务即可使规则永久生效。 ### 回答2: 要实现Linux iptables限制每个IP对每个端口最多同时建立20个TCP连接,可以使用iptables的限制连接数模块connlimit。 首先,我们需要先加载connlimit模块。可以在终端中输入以下命令: ```shell sudo modprobe ipt_connlimit ``` 然后,我们可以使用以下规则来限制每个IP对每个端口最多同时建立20个TCP连接。假设要限制IP对80端口: ```shell sudo iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 20 -j REJECT ``` 以上规则的意思是,当某个IP请求连接80端口时,如果已有20个以上的连接建立,则将其连接请求拒绝。 若想对其他端口进行限制,只需将上述规则的端口号改为相应的端口即可。 为了确保规则在系统启动时自动加载,可以将以上规则添加到防火墙规则配置文件(一般是/etc/iptables/rules.v4或/etc/sysconfig/iptables)中。添加规则后,可以使用以下命令使规则生效: ```shell sudo iptables-restore < /path/to/iptables-rules-file ``` 这样,每个IP对指定端口的TCP连接数将被限制为最多20个。 为了进一步保护系统和网络安全,建议搭配其他安全措施,如使用fail2ban来防范恶意攻击,或添加其他防火墙规则进行安全加固。 ### 回答3: 要实现对每个IP对每个端口最多同时建立20个TCP连接的限制,可以使用Linux中的iptables工具,具体步骤如下: 1. 首先,需要打开终端以管理员权限运行以下命令,以确保iptables工具已安装并可用: sudo apt-get install iptables 2. 使用以下命令创建一个新的iptables链,用于限制TCP连接数: sudo iptables -N CONNECTION_LIMIT 3. 在该新链中添加规则,以限制每个IP对每个端口的最大TCP连接数为20: sudo iptables -A CONNECTION_LIMIT -p tcp --syn --dport [端口号] -m connlimit --connlimit-above 20 --connlimit-mask 32 -j REJECT --reject-with tcp-reset 注意:将[端口号]替换为要限制连接数的实际端口号。 4. 将上述创建的新链连接到INPUT链,确保流量通过新链进行处理: sudo iptables -I INPUT -p tcp --syn --dport [端口号] -j CONNECTION_LIMIT 5. 保存iptables规则以便重启后仍然生效: sudo iptables-save | sudo tee /etc/iptables/rules.v4 这样,每个IP对每个端口的最大TCP连接数就被限制为20。请记住,这些规则将仅在防火墙处于活动状态时生效。如果你希望永久生效,可以将上述命令添加到系统启动脚本中。 注意:这个方法可以限制并发连接的数量,但无法防止一个攻击者使用多个IP地址同时建立连接。如需更加严格的限制,可能需要额外的防火墙解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

scan724

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值