首页 > 系统相关 >iptables:Linux网络安全的神器 iptables的使用方法 使用案例

iptables:Linux网络安全的神器 iptables的使用方法 使用案例

时间:2023-08-18 10:36:57浏览次数:77  
标签:iptables 网络安全 -- 0.0 Linux ACCEPT 规则 INPUT

iptables是Linux系统中的防火墙管理工具,它的功能强大并且使用灵活,可用于网络防护、路由转发等功能应用。由于防火墙功能是基于Linux内核实现的,具有稳定和高效率的特点,因此常被广泛地使用到多个场景中。解锁iptables的技能,将会成为我们Linux网络安全的神器。

本文将介绍 iptables 的基础知识、使用方法和实际应用场景,旨在帮助初学者快速上手。


01

iptables介绍

iptables主要工作在网络层,可以通过规则控制数据包的进出方向、源/目的地址、源/目的端口等信息,来实现对包的过滤、转发、重定向等操作。

iptables 中有几个基本概念需要了解:

1. Chain(链)

链是 iptables 规则的容器,用于存放一组规则。

Linux 内核中预定义了五个链:INPUT、FORWARD、OUTPUT、PREROUTING 和 POSTROUTING。

它们的功能分别如下:

功能

INPUT

区配进入本机,并且目标IP是本机地址的数据包;

FORWARD

匹配由本机进行转发的数据包;

OUTPUT

匹配由本机发出的数据包

PREROUTING

匹配刚到达本机的所有数据包,可用于修改目的地址,通常用于实现DNAT功能。

POSTROUTING

匹配即将离开本机的数据包,可用于修改源地址,通常用于实现SNAT功能。

2. Rule(规则)

规则定义了对数据包进行处理的具体动作,由匹配条件和动作两部分组成。

匹配条件可以是数据包的源地址、目的地址、端口等信息,动作可以是ACCEPT(允许通过)、DROP(丢弃数据包)、REJECT(拒绝)等。

配置规则时需要指定所属的表和链,如果不指定表则默认为filter表。

3. Table(表)

表是存放链的容器,每个表包含若干个链。iptables 中有四个预定义的表:filter、nat、mangle 和 raw,其中filter和 nat 表是被使用最多的,分别用于数据包过滤和网络地址转换功能。

iptables:Linux网络安全的神器 iptables的使用方法 使用案例_目的地址


02

iptables的使用方法

1. 显示规则

要查看当前的iptables规则,可以使用以下命令:

$ iptables -L

这将显示所有规则,包括输入、输出和转发规则。通过观察规则列表,您可以了解当前网络流量的策略。

2. 添加规则

要添加一个规则,可以使用以下命令:

iptables -A <chain> <rule>

其中,<chain>指定要添加规则的链,例如INPUT、OUTPUTFORWARD<rule>是规则本身,可以是允许或拒绝特定类型的流量。

例如,如果您想允许SSH连接(TCP端口22),可以使用以下命令:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

这将在INPUT链中添加一个规则,允许TCP端口22的流量通过。

3. 删除规则

要删除一个规则,可以使用以下命令:

iptables -D <chain> <rule>

其中,<chain><rule>是要删除的规则的链和规则本身。例如,如果您要删除前面添加的SSH规则,可以使用以下命令:

iptables -D INPUT -p tcp --dport 22 -j ACCEPT

这将删除输入链中允许TCP端口22的流量通过的规则。

4. 修改规则

要修改一个规则,可以先删除旧规则,再添加新规则,或者使用以下命令修改规则:

iptables -R <chain> <rule_number> <new_rule>

其中,<chain>是要修改的规则的链,<rule_number>是要修改的规则的编号(可以在iptables -L命令的输出中找到),<new_rule>是要添加的新规则。

例如,如果您要将输入链中允许SSH连接的规则更改为允许HTTP连接(TCP端口80),可以使用以下命令:

iptables -R INPUT 1 -p tcp --dport 80 -j ACCEPT

这将输入链中编号为1的规则更改为允许TCP端口80的流量通过。

iptables是一个功能非常强大的工具,以上只是几个最简单的使用示例,还有很多高级选项和用法。限于文章篇幅,此处不做介绍,感兴趣的读者可自行查阅相关文档资料。


03

应用案例

这是之前在工作中的一个iptables应用案例,虽然场景简单但参考性较强,可便于举一反三的应用到其他场景中。

首先说下场景:公司内部有几台跳板机,用于给到特定的人员登录访问服务器。由于之前出现过个别跳板机被黑客入侵的情况,现在需要对其进行安全加固。经过考虑以后,决定使用iptables的防火墙功能来实现,这类方案的特点是简单且成本低。

安全方面的需求很简单,需要对跳板机进行访问限制,只允许指定IP的机器访问该主机,从而达到阻止黑客入侵系统的目的。同时 ,需要保证跳板机可以正常访问业务系统。

iptables:Linux网络安全的神器 iptables的使用方法 使用案例_目的地址_02

本案例以操作系统Centos7.x为例来进行演示,该需求将使用filter表和其中的INPUT链来实现。

1. 关闭firewalld防火墙。

$ systemctl stop firewalld
$ systemctl disable firewalld

2. 安装iptables-services ,并启用服务。

$ yum install iptables-services
$ systemctl enable iptables
$ systemctl start iptables

3. 清空现有INPUT链的规则。

$ iptables -F INPUT

4. 配置访问规则

# 开放指定IP访问,此处IP根据实际情况变更
$ iptables  -A INPUT  -s 192.168.4.168 -j ACCEPT
# 配置状态为RELATED、ESTABLISHED的连接可通过,保证跳板机对外发起请求,对端的回复可通过。
$ iptables -A INPUT  -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
# 开放icmp访问
$ iptables -A INPUT -p icmp -j ACCEPT
# 开放dns访问,用于域名解析 
$ iptables -A INPUT -p udp --sport 53 -j ACCEPT  
# 开放时间服务器访问,用于时间同步
$ iptables -A INPUT -p udp --sport 123 -j ACCEPT

注释:-A用于添加规则到表;-s用于指定源IP;-p用于指定协议;--sport用于指定源端口,此处用于放行时间服务器和DNS服务器返回的数据包;--state RELATED,ESTABLISHED用于指定连接的状态,用于放行目标机器返回的数据包。

5. 更改INPUT默认规则为DROP,屏蔽其他所有连接。

$ iptables -P INPUT DROP

注意:该规则需要在上方其他规则配置完成后,才能执行。否则会导致机器无法连接。

6. 查看规则,已完成。

$ iptables -nL INPUT
Chain INPUT (policy DROP)
target     prot opt source               destination        
ACCEPT     all  --  192.168.4.168        0.0.0.0/0          
ACCEPT     tcp  --  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     udp  --  0.0.0.0/0            0.0.0.0/0            udp spt:53
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp spt:123

7. 保存iptables配置,否则重启机器后会丢失。

$ service iptables save




标签:iptables,网络安全,--,0.0,Linux,ACCEPT,规则,INPUT
From: https://blog.51cto.com/u_64214/7132207

相关文章

  • 红帽计划改善RHEL的Linux引导加载程序
         据了解,红帽方面表示他们正在招收全职开发者来增强Fedora和RHEL的Linux引导加载程序体验。而GRUB和Linux引导加载程序通常不会受到太多人关注,从而大致不少用户倾向于“能用就行”,因而大多数Linux发行版更愿意隐藏GRUB菜单obghtysuew。有消息称,红帽有计划采取......
  • Linuxy应用程序加载动态链接库的默认路径
    在Linux系统中,当应用程序执行时,系统会按照一定的规则去寻找动态链接库(也称为共享库或.so文件)。系统使用一组默认的搜索路径来查找这些库,以便在运行时正确加载所需的库。以下是Linux系统寻找动态链接库的一般规则:系统默认路径:Linux系统会在一组默认的路径中查找动态链接......
  • linux 文件压缩常用命令
    一、常见文件压缩格式Windows和Linux下的压缩文件格式有一些共同的,也有一些不同的。以下是一些常见的压缩文件格式:.zip:这是Windows中最常用的压缩格式,也是Linux中可以识别的一种压缩格式,可以方便地和Windows系统通用压缩文件。在Linux中,可以使用zip和unzip命令来压缩和解压.zip文......
  • 笔记整理--C语言--linux下错误的捕获:errno和strerror的使用——转载
    linux下错误的捕获:errno和strerror的使用经常在调用linux系统api的时候会出现一些错误,比方说使用open()、write()、creat()之类的函数有些时候会返回-1,也就是调用失败,这个时候往往需要知道失败的原因。这个时候使用errno这个全局变量就相当有用了。在程序代码中包含#include<e......
  • linux查看系统挂载磁盘
    linux查看系统挂载磁盘 解决AWS挂载、解决挂载完重启就消失等问题linux上的盘和window的有区别,磁盘空间必须挂载在目录上,要不然没用对与新增的硬盘、SSD固态硬盘、挂载到linux上的操作如下: df-h   #显示目前在Linux系统上的文件系统的磁盘使用情况统计。......
  • linux 防火墙命令
    #查看防火墙状态systemctlstatusfirewalld#开启防火墙systemctlstartfirewalld.service#重启防火墙systemctlrestartfirewalld.service#查看firewall防火墙的状态firewall-cmd--state#查看防火墙开放端口规则firewall-cmd--list-port#查看80端口是否开启firewall-cmd--q......
  • Linux实用运维脚本分享
     编辑Linux实用运维脚本分享......
  • 聊一下操作系统 macOS 与 Linux
    对于Windows操作系统大家都比较熟悉,也常拿它与Linux操作系统进行比较,两者之间的差异也很明显。但对于macOS和Linux的比较不太多,很多人认为它们很相似,因为这两种操作系统都可以运行Unix命令。其实详细比较下,两者还是有很多不同点的,每种操作系统都是独一无二的存在,下面就让我们......
  • Linux Shell下awk,sed,cut的常用方法并在自动化运维脚本中联合运用
    AWK处理工具,它可以用于提取、处理和格式化文本数据。它的主要功能是逐行扫描文件,并根据匹配模式执行操作。AWK具有以下主要特点:读取和处理文本文件中的数据根据匹配模式执行操作逐行扫描文件打印指定的列在自动化运维脚本中,AWK可以用于处理日志文件,例如提取特定行的数据、从日志文......
  • linux 中awk输出两个文件中重复的行
     001、[root@PC1test02]#lsa.txtb.txt[root@PC1test02]#cata.txt##测试文件8877jjffyyrrtt[root@PC1test02]#catb.txt##测试文件uurrttuu7788##将文件1保存到数组,##对文件2进行逻辑判断[root@......