首页 > 系统相关 >iptables规则示例之只允许本地访问特定端口

iptables规则示例之只允许本地访问特定端口

时间:2023-06-15 23:22:36浏览次数:38  
标签:iptables 示例 -- 端口 ACCEPT tcp 规则 INPUT

一、背景说明

Iptables 指的是用来管理Linux防火墙的命令程序,通常位于/sbin/iptables,属于“用户态”(UserSpace,又称用户空间)的防火墙管理体系;   IPtables 是工作在用户空间中,定义规则的工具,本身并不算是防火墙。我们可以理解为一个客户端工具,用户通过ipatbles这个客户端,将用户的安全设定执行到对应的"安全框架"中,这个"安全框架"才是真正的防火墙,位于内核空间中,这个框架的名字叫netfilter。

小结:

  • iptables 本身不是防火墙,只是一个命令行工具,位于用户空间,通过这个命令行工具来操作netfilter。

  • netfilter 才是防火墙真正的安全框架,位于内核空间。

二、常用命令

说明: iptables 防火墙的策略匹配顺序为从上向下,当有多条相互排斥的策略在一起时,上面的策略先匹配,并且一旦策略匹配数据包就放行或阻止掉了,下面的策略不会再生效。 

# 查看 iptables 现有规则
iptables -L -n
    
# 查看每个规则chain的序列号。
iptables -L -n --line-number
    
# 根据序列号删除指定一条防火墙规则,如:删除INPUT 表的第三条已添加规则,这里3代表第几行规则
iptables -D INPUT 3 
    
# 清空所有默认规则
iptables -F
    
# 清空所有自定义规则
iptables -X
    
# 所有计数器归 0
iptables -Z
    
# 允许来自于 lo 接口的数据包(本地访问)
iptables -A INPUT -i lo -j ACCEPT
    
# 开放22端口(-A 将规则追加在原有规则的最后一条 -I 将新添加的规则加在原有规则的第一条)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    
# 禁止访问80端口
iptables -A INPUT -p tcp --dport 80 -j DROP
      
# 允许ping
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
    
# 允许接受本机请求之后的返回数据 RELATED ,是为 FTP 设置的
iptables -A INPUT -m state --state  RELATED,ESTABLISHED -j ACCEPT
      
# 同时开放22和80端口
 iptables -I INPUT -p tcp -m multiport --dport 22,80 -j ACCEPT 
    
# 开放5000-6000端口
iptables -I INPUT -p tcp --dport 5000:6000 -j ACCEPT 
    
# 允许某个网段的ip访问
ptables -I INPUT -p all -s 0.0.0.0/0 -j ACCEPT 
    
# 允许某个ip的8080端口访问
iptables -I INPUT -s 0.0.0.0 -p tcp --dport 8080 -j ACCEPT 
    
# 禁止某台主机的tcp访问访问
iptables -I INPUT -p tcp -s 0.0.0.0 -j DROP 
    
# iptables 禁止指定 IP 段访问
iptables -I INPUT -s 117.41.187.0/24 -j DROP
    
# 只允许访问本机80端口(其他端口都禁止访问
iptables -A INPUT -p tcp ! --dport 80 -j DROP
    
    
# 禁止服务器访问此IP地址
iptables -I OUTNPUT -d 114.232.9.171 -j DROP
    

删除规则:
iptables -t filter -D INPUT 2 //删除filter表中INPUT链中的第二条规则
iptables -D INPUT -s 192.168.1.100 -j ACCEPT //删除源地址为192.168.1.100,动作为ACCEPT的规则
iptables -F INPUT //删除filter表中INPUT链
iptables -F //删除所有的规则(慎用)
    

 

三、实例演示

3.1 演示目的

限制只允许 本机ip 和 127.0.0.1访问,禁止其他IP访问本机的服务,以redis为例。

3.2 演示环境

服务器IP备注
测试服务器 192.168.101.26 centos7.4
加固服务器 192.168.108.103 centos7.4

3.2 效果演示

加固前

测试服务器 上进行远程连接,发现可以直接连接 加固服务器

[root@wangzy redis-7.0.11]# ./src/redis-cli -h 192.168.108.103 -p 6379
192.168.108.103:6379>

加固后

测试服务器 上进行远程连接,发现不可以直接连接 加固服务器 ,但是加固服务身份可以正常连接

测试服务器远程 拒绝连接 展示

 加固服务器本身可以 正常连接 展示

 3.3 加固过程

3.2.1 安装服务并添加开机自启动

# 查看iptables.service是否安装,若未安装则进行安装
systemctl status  iptables.service

# 安装 iptables-services
yum -y install iptables-services

# 启动iptables
systemctl start iptables.service

# 查看iptables.service是否启动
systemctl status  iptables.service

# 加入开机自启动
systemctl enable iptables.service

3.2.2 添加策略

实现的效果为:只有本地加固服务器可以访问,远程服务器禁止访问6379端口。

# 注意前后顺序不能换,ip根据实际IP进行修改
## 注:iptables匹配规则:匹配即停止(-I插入到最前面,-A追加到追后面)
iptables -I INPUT -p tcp --dport 6379 -j DROP
iptables -I INPUT -s 192.168.108.103 -p tcp --dport 6379 -j ACCEPT
iptables -I INPUT -s 127.0.0.1 -p tcp --dport 6379 -j ACCEPT

# 查看规则

# 查看 iptables 现有规则

  iptables -L -n

# 保存上述规则
service iptables save

# 查看配置文件,看是否把临时文件加载进来
cat /etc/sysconfig/iptables

添加前

 添加后

  保存规则后看配置文件是否生效,防止开机后失效

 

结语:此次为临时文稿,更多详细内容后续更新或查看我的今日头条号。

标签:iptables,示例,--,端口,ACCEPT,tcp,规则,INPUT
From: https://www.cnblogs.com/wangzy-Zj/p/17484262.html

相关文章

  • log4j.xml示例
    <?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPElog4j:configurationSYSTEM"log4j.dtd"><log4j:configurationxmlns:log4j="http://jakarta.apache.org/log4j/"debug="false"><ap......
  • log4xx/log4j异步日志配置示例
    <?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPElog4j:configurationSYSTEM"log4j.dtd"><log4j:configurationxmlns:log4j='http://jakarta.apache.org/log4j/'debug="false"><append......
  • 协程示例
    协程(Coroutine)与线程类似,可看成用户线程,由用户调度,而不是系统调度。示例创建1W个协程对象(TestCoro),然后随机调度运行。1W个协程运行于同一个线程中。协程构造绑定到CoroFun(),与boost::thread的创建相同。#include<iostream>#include<vector>#include<boost/bind.hpp>#inclu......
  • 服务器nginx配置,端口转发、https配置
    #usernobody;worker_processes1;#error_loglogs/error.log;#error_loglogs/error.lognotice;#error_loglogs/error.loginfo;#pidlogs/nginx.pid;events{worker_connections1024;}http{includemime.types;defau......
  • Spring之SpEL表达式操作示例解析
    目录1SpEL1.1简介1.2简单示例2深入示例2.1运算2.1.1算术运算2.1.2逻辑运算2.1.3比较运算2.1.4使用字符代替符号2.1.5使用正则表达式2.1.6使用instanceof2.1.7三目运算(if..else..)2.1.8表达式模板TemplateParserContext2.2字符串2.2.1操作2.2.2调用字符串方法2.3使......
  • 15 Spring核心注释示例
    我们经常将这些称为“Spring核心注释”,我们将在本文中对它们进行审核。这是所有已知的Spring核心注释的列表。@Autowired我们可以使用  @Autowired 注释  来标记Spring将要解析和注入的依赖关系。我们可以将这个注释与构造函数,setter或字段注入一起使用。构造函数注入:@RestCon......
  • 淘宝接口数据采集获得店铺详情api接口获取源代码调用示例展示
     淘宝店铺详情API接口是阿里巴巴开放平台提供的一种API接口,用于获取指定淘宝店铺的详细信息,如店铺名称、店铺简介、开店时间、主营类目等信息。具体来说,淘宝店铺详情API接口(免费获取调用私信)的作用包括:1.获取店铺基本信息:可以获取店铺名称、描述、卖家主页、好评率等基本信息,帮助......
  • Java中的WeakHashMap与类示例
    在本文中,我们将WeakHashMap 通过示例从java.util包中学习  类。我们将学到什么?WeakHashMap 课程概述WeakHashMap 类构造方法摘要WeakHashMap 类构造方法WeakHashMap 类示例1.WeakHashMap类概述WeakHashMap 是一个基于Hash表的Map接口实现的弱键。当其密钥不再正常使用......
  • 淘宝接口数据采集获得店铺详情api接口获取源代码调用示例展示
    ​ 淘宝店铺详情API接口是阿里巴巴开放平台提供的一种API接口,用于获取指定淘宝店铺的详细信息,如店铺名称、店铺简介、开店时间、主营类目等信息。具体来说,淘宝店铺详情API接口(免费获取调用)的作用包括:1.获取店铺基本信息:可以获取店铺名称、描述、卖家主页、好评率等基本信息,帮......
  • Win 下如何查看端口被谁占用了?
    要在Windows上查看端口占用情况,可以按照以下步骤进行操作:打开命令窗口:Win+R,输入cmd,回车。查看所有端口情况:netstat-ano。查看指定端口使用情况:netstat-aon|findstr"端口号"。根据上一步看到的PID查看相应的进程或程序:tasklist|findstr"PID号"。结束相应进程:tas......