jjzjj

Linux安全--iptables详解

zcffight 2024-04-21 原文

目录

1、iptables介绍

2、iptables四表五链详解

3、iptables基本语法

4、实际操作

4.1 增加规则

 4.2 删除规则

4.3 修改规则

 5、命令语法总结

 6、基本匹配条件

7、iptables进阶用法

7.1 iprange扩展模块

7.2 string扩展模块

8、iptables进行端口转发


1、iptables介绍

防火墙分类:从逻辑上分类

分类说明
主机防火墙针对单个主机进行防护
网络防火墙处理网络入口或者边缘,针对网络入口进行防护

防火墙分类:从物理上分类

分类说明
硬件防火墙在硬件级别实现防火墙功能
软件防火墙应用软件处理逻辑运行于通用硬件平台之上的防火墙

两个概念:

内核空间:也叫内核态,操作系统占据的内存区域

用户空间:也叫用户态,用户进程所在的内存区域

2、iptables四表五链详解

说明
filter表负责过滤功能,防火墙;内核模块:iptable_filter
nat表网络地址转换功能;内核模块:iptable_nat
mangle表拆解报文,做出修改;iptable_mangle
raw表关闭nat表上启用的追踪机制;iptable_raw
preroutingraw表,mangle表,nat表
inputmangle表,filter表
forwardmangle表,filter表
outputraw表,mangle表,nat表,filter表
postroutingmangle表,nat表

表和链的关系:

rawprerouting,output
mangleprerouting,input,forward,output,postrouting
natprerouting,output,postrouting
filter

input,forward,outpu

优先级次序(由高到低): raw > mangle >  nat > filter

3、iptables基本语法

处理动作

动作含义
ACCEPT允许数据包通过
DROP直接丢弃数据包,不给任何回应信息
REJECT拒绝数据包通过,客户端会收到拒绝的信息
SNAT源地址转换
DNAT目标地址转换

常用操作命令

常用操作命令说明
-A在指定链尾部添加规则
-D删除匹配的规则
-R替换匹配的规则
-I在指定位置插入规则
-F删除所有链的规则

常见设置参数

常见设置参数说明
--dport       指定目标TCP/IP端口 
--sport    指定源TCP/IP端口
-p  tcptcp协议
-p  udpudp协议
-j   DROP拒绝
-j   ACCEPT允许
-s 192.168.150.129指定源地址或地址段
-d 192.168.150.130指定目标地址或地址段

4、实际操作

4.1 增加规则

选项说明:

-t :指定操作的表

-I :指定插入规则到哪个链中

-s :指定“匹配条件”中的源地址

-j :指定“匹配条件”中的动作

拒绝所有来自192.168.150.15的所有报文

iptables -I INPUT -s 192.168.150.15 -j DROP

效果展示:

 再允许192.168.150.15的所有报文

iptables -I INPUT -s 192.168.150.15 -j ACCEPT

效果展示:

 4.2 删除规则

iptables -D INPUT 1

4.3 修改规则

iptabels -R INPUT 1 -s  192.168.150.15 -j ACCEPT

效果展示:

 

 5、命令语法总结

iptables -t 表名 -A  链名 匹配条件 -j 动作       #在规则尾部追加

iptables -t 表名 -I  链名 匹配条件 -j 动作       #在规则首部增加

iptables -t 表名 -I  链名 规则序号 匹配条件 -j 动作       #在链的指定位置添加

 iptables - t 表名 -D 链名 规则序号         #按照规则序号删除规则

iptables  -t 表名 -D 链名 匹配条件 -j 动作         #按照匹配条件个动作删除规则

 iptables - t 表名 -P 链名 动作        #修改指定表的指定链的默认策略

iptables -F         #删除所有规则

iptables -t 表名 -R 链名 规则序号 规则原本的匹配条件 -j 动作         #修改规则 

 6、基本匹配条件

# -s 用于匹配报文的源地址,可以同时指定多个源地址,每个IP之间用逗号隔开,也可以指定为一个网段。

iptables -t filter -I INPUT -s 192.168.150.15,192.168.150.16 -j DROP

# -d 用于匹配报文的目标地址,可以同时指定多个目标地址,每个IP之间用逗号隔开,也可以指定为一个网段。

iptables -t filter -I OUTPUT -d 192.168.150.15,192.168.150.16 -j DROP

# -p 用于匹配报文的协议类型,可以匹配的协议类型tcp,udp,udplite,icmp等等。

iptables -t filter -I INPUT -p tcp -s 192.168.150.15,192.168.150.16 -j DROP

 # -i 用于匹配报文是哪个网卡接口流入本机的,由于匹配条件只是用于匹配报文的流入的网卡,所以OUTPUT链与POSTROUTING链中不能使用此选项。

iptables -t filter -I INPUT -p tcp -i ens33 -j DROP

7、iptables进阶用法

7.1 iprange扩展模块

使用iprange扩展模块可以指定“一段连续的ip地址范围”,用于匹配报文的源地址或者目标地址。

iprange扩展模块有两个扩展匹配条件可以使用:

  • --src-range:源地址范围
  • --dst-range:目标地址范围
  • -m iprange:表示使用iprange扩展模块

iptables -t filter -I INPUT -m iprange --src-range 192.168.150.15-192.168.150.25 -j DROP

7.2 string扩展模块

使用string扩展模块,可以指定要匹配的字符串,如果报文中包含对应的字符串,则符合匹配条件。

  • -m string:表示使用string扩展模块
  • --algo:用于指定匹配算法,可选的算法有bm和kmp,此选项为必选。
  • --string:用于指定需要匹配的字符串

iptables -t filter -I INPUT -m string --algo kmp --string "bit" -j DROP

# 网站有敏感字符串,用户访问不让响应

8、iptables进行端口转发

实例1:

将本机的8080端口转发至其他主机,主机IP:192.168.150.16,目标主机IP和端口:192.168.150.15:8088,规则如下;

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.150.15:8088

iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 8088 -j SNAT --to-source 192.168.150.16

echo 1 > /proc/sys/net/ipv4/ip_forward         #开启iptables forward转发功能。

实例2:

访问本机的8080端口转发到本地的80端口

iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-ports 80

有关Linux安全--iptables详解的更多相关文章

  1. ruby - 如何使用 Ruby aws/s3 Gem 生成安全 URL 以从 s3 下载文件 - 2

    我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A

  2. ruby - 如何安全地删除文件? - 2

    在Ruby中是否有Gem或安全删除文件的方法?我想避免系统上可能不存在的外部程序。“安全删除”指的是覆盖文件内容。 最佳答案 如果您使用的是*nix,一个很好的方法是使用exec/open3/open4调用shred:`shred-fxuz#{filename}`http://www.gnu.org/s/coreutils/manual/html_node/shred-invocation.html检查这个类似的帖子:Writingafileshredderinpythonorruby?

  3. ruby - 用 YAML.load 解析 json 安全吗? - 2

    我正在使用ruby2.1.0我有一个json文件。例如:test.json{"item":[{"apple":1},{"banana":2}]}用YAML.load加载这个文件安全吗?YAML.load(File.read('test.json'))我正在尝试加载一个json或yaml格式的文件。 最佳答案 YAML可以加载JSONYAML.load('{"something":"test","other":4}')=>{"something"=>"test","other"=>4}JSON将无法加载YAML。JSON.load("

  4. ruby-on-rails - 安全地显示使用回形针 gem 上传的图像 - 2

    默认情况下:回形针gem将所有附件存储在公共(public)目录中。出于安全原因,我不想将附件存储在公共(public)目录中,所以我将它们保存在应用程序根目录的uploads目录中:classPost我没有指定url选项,因为我不希望每个图像附件都有一个url。如果指定了url:那么拥有该url的任何人都可以访问该图像。这是不安全的。在user#show页面中:我想实际显示图像。如果我使用所有回形针默认设置,那么我可以这样做,因为图像将在公共(public)目录中并且图像将具有一个url:Someimage:看来,如果我将图像附件保存在公共(public)目录之外并且不指定url(同

  5. ruby - 使写入文件线程安全 - 2

    我在一个ruby​​文件中有一个函数可以像这样写入一个文件File.open("myfile",'a'){|f|f.puts("#{sometext}")}这个函数在不同的线程中被调用,使得像上面这样的文件写入不是线程安全的。有谁知道如何以最简单的方式使这个文件写入线程安全?更多信息:如果重要的话,我正在使用rspec框架。 最佳答案 您可以通过File#flock给锁File.open("myfile",'a'){|f|f.flock(File::LOCK_EX)f.puts("#{sometext}")}

  6. ruby-on-rails - 最灵活的 Rails 密码安全实现 - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭8年前。Improvethisquestion我需要实现具有各种灵活需求的密码安全。这些要求基本上取自Sanspasswordpolicy:Strongpasswordshavethefollowingcharacteristics:Containatleastthreeofthe

  7. 物联网MQTT协议详解 - 2

    一、什么是MQTT协议MessageQueuingTelemetryTransport:消息队列遥测传输协议。是一种基于客户端-服务端的发布/订阅模式。与HTTP一样,基于TCP/IP协议之上的通讯协议,提供有序、无损、双向连接,由IBM(蓝色巨人)发布。原理:(1)MQTT协议身份和消息格式有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。MQTT传输的消息分为:主题(Topic)和负载(payload)两部分Topic,可以理解为消息的类型,订阅者订阅(Su

  8. 常见网络安全产品汇总(私信发送思维导图) - 2

    安全产品安全网关类防火墙Firewall防火墙防火墙主要用于边界安全防护的权限控制和安全域的划分。防火墙•信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。防火墙是一个由软件和硬件设备组合而成,在内外网之间、专网与公网之间的界面上构成的保护屏障。下一代防火墙•下一代防火墙,NextGenerationFirewall,简称NGFirewall,是一款可以全面应对应用层威胁的高性能防火墙,提供网络层应用层一体化安全防护。生产厂家•联想网御、CheckPoint、深信服、网康、天融信、华为、H3C等防火墙部署部署于内、外网编辑额,用于权限访问控制和安全域划分。UTM统一威胁管理(Un

  9. Tcl脚本入门笔记详解(一) - 2

    TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是

  10. 【Linux操作系统】——网络配置与SSH远程 - 2

    Linux操作系统——网络配置与SSH远程安装完VMware与系统后,需要进行网络配置。第一个目标为进行SSH连接,可以从本机到VMware进行文件传送,首先需要进行网络配置。1.下载远程软件首先需要先下载安装一款远程软件:FinalShell或者xhell7FinalShellxhell7FinalShell下载:Windows下载http://www.hostbuf.com/downloads/finalshell_install.exemacOS下载http://www.hostbuf.com/downloads/finalshell_install.pkg2.配置CentOS网络安装好

随机推荐