Linux下限制IP访问

linux下最直接限制ip访问的方式有两种:

1.使用hosts.allow和hosts.deny来设置ip白名单和黑名单,/etc/目录下

 

Java代码  收藏代码
  1. <span style="color: #003366;">优先级为先检查hosts.deny,再检查hosts.allow,   
  2. 后者设定可越过前者限制,   
  3. 例如:   
  4. 1.限制所有的ssh,   
  5. 除非从216.64.87.0 - 127上来。   
  6. hosts.deny:   
  7. in.sshd:ALL   
  8. hosts.allow:   
  9. in.sshd:216.64.87.0/255.255.255.128  
  10.    
  11. 2.封掉216.64.87.0 - 127的telnet   
  12. hosts.deny   
  13. in.sshd:216.64.87.0/255.255.255.128  
  14.    
  15. 3.限制所有人的TCP连接,除非从216.64.87.0 - 127访问   
  16. hosts.deny   
  17. ALL:ALL   
  18. hosts.allow   
  19. ALL:216.64.87.0/255.255.255.128  
  20.    
  21. 4.限制216.64.87.0 - 127对所有服务的访问   
  22. hosts.deny   
  23. ALL:216.64.87.0/255.255.255.128  
  24.    
  25. 其中冒号前面是TCP daemon的服务进程名称,通常系统   
  26. 进程在/etc/inetd.conf中指定,比如in.ftpd,in.telnetd,in.sshd   
  27.    
  28. 其中IP地址范围的写法有若干中,主要的三种是:   
  29. 1.网络地址--子网掩码方式:   
  30. 216.64.87.0/255.255.255.0  
  31. 2.网络地址方式(我自己这样叫,呵呵)   
  32. 216.64.(即以216.64打头的IP地址)   
  33. 3.缩略子网掩码方式,既数一数二进制子网掩码前面有多少个“1”比如:   
  34. 216.64.87.0/255.255.255.0 -- 216.64.87.0/24  
  35.    
  36. 设置好后,要重新启动  
  37. # /etc/rc.d/init.d/xinetd restart  
  38. # /etc/rc.d/init.d/network restart</span>  

 

 2.使用iptables命令

Java代码  收藏代码
  1. <span style="color: #003366;">单个IP的命令是  
  2. iptables -I INPUT -s 81.241.219.171 -j DROP  
  3.    
  4. 封IP段的命令是  
  5. iptables -I INPUT -s 97.47.225.0/16 -j DROP  
  6. iptables -I INPUT -s 97.47.225.0/16 -j DROP  
  7. iptables -I INPUT -s 97.47.225.0/16 -j DROP  
  8.    
  9. 封整个段的命令是  
  10. iptables -I INPUT -s 97.47.225.0/8 -j DROP  
  11.    
  12. 封几个段的命令是  
  13. iptables -I INPUT -s 97.47.225.0/24 -j DROP  
  14. iptables -I INPUT -s 97.47.225.0/24 -j DROP   
  15.    
  16.    
  17. 服务器启动自运行  
  18. 有三个方法:  
  19. 1、把它加到/etc/rc.local中  
  20. 2、vi /etc/sysconfig/iptables可以把你当前的iptables规则放到/etc/sysconfig/iptables中,系统启动iptables时自动执行。  
  21. 3、service   iptables   save 也可以把你当前的iptables规则放/etc/sysconfig/iptables中,系统启动iptables时自动执行。  
  22. 后两种更好些,一般iptables服务会在network服务之前启来,更安全  
  23.    
  24. 解封:  
  25. iptables -L INPUT  
  26. iptables -L --line-numbers 然后iptables -D INPUT 序号   
  27.    
  28.    
  29. iptables 限制ip访问  
  30. 通过iptables限制9889端口的访问(只允许192.168.1.100192.168.1.101192.168.1.102),其他ip都禁止访问  
  31. iptables -I INPUT -p tcp --dport 9889 -j DROP  
  32. iptables -I INPUT -s 192.168.1.100 -p tcp --dport 9889 -j ACCEPT  
  33. iptables -I INPUT -s 192.168.1.101 -p tcp --dport 9889 -j ACCEPT  
  34. iptables -I INPUT -s 192.168.1.102 -p tcp --dport 9889 -j ACCEPT</span>  
### 设置Linux防火墙以限制特定IP地址的访问 为了实现仅允许某些特定IP地址访问服务器上的服务,在Linux环境中可以通过`firewalld`或`iptables`工具来设定相应的规则。 对于采用`firewalld`作为防火墙管理工具的情况,可以利用富规则(rich rules)功能精确控制哪些源地址能够连接到目标端口。例如,为了让单个IP地址如192.168.1.1能通过TCP协议访问本地主机上监听于1521端口的服务,应执行如下命令: ```bash firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="1521" accept' firewall-cmd --reload ``` 上述指令会永久保存这条规则并立即应用更改[^1]。 当需要限定多个具体IP地址可触及某项网络资源时,则可以在每条新增加的规则里分别指明不同的源地址;另外一种方法是先将所有入站流量设为拒绝状态,之后再逐一加入例外情况下的许可声明。针对后者,假设希望除了自己所在位置对应的公网IPv4地址外其余一切尝试均被拦截的话,那么应该按照以下方式构建策略: ```bash iptables -P INPUT DROP && iptables -A INPUT -s 自己的位置IP -p tcp -j ACCEPT ``` 此操作先是把INPUT链默认动作调整成丢弃数据包(`-P INPUT DROP`),紧接着追加一条接受来自指定源地址的数据流进入系统的记录(`-A INPUT ... ACCEPT`)[^3]。 值得注意的是,在修改完配置后可能还需要重启一次整个防火墙服务体系方能使改动正式起效,尤其是在发现单纯依靠刷新配置文件(`--reload`)未能达到预期效果的情形下[^4]。 #### 使用Iptables设置单一IP访问特定端口的例子 若只想让某一固定外部IP,比如说46.166.150.22,能够成功请求位于本机对外开放着HTTP(S)服务所占用的标准80(TCP)端口号,则可通过iptable下达这样的命令序列: ```bash iptables -A INPUT -p tcp -s 46.166.150.22 --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp -d 46.166.150.22 --sport 80 -m state --state ESTABLISHED -j ACCEPT ``` 这两行语句共同作用确保了只有来自那个特别指出的客户端发起的新建连接以及由此衍生出来的回应报文才不会遭到阻挡而顺利抵达目的地[^2].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值