首页 > 系统相关 >强大的iptables:解锁Linux网络安全的神器

强大的iptables:解锁Linux网络安全的神器

时间:2023-03-15 13:33:01浏览次数:47  
标签:iptables -- 0.0 解锁 Linux 规则 INPUT 数据包

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

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


一. 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网络安全的神器_linux



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

三. 应用案例

这是之前在工作中的一个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



专注于Devops、SRE、运维开发等技术分享,扫码关注公众号,获取更多精彩内容! 

强大的iptables:解锁Linux网络安全的神器_iptables_03

标签:iptables,--,0.0,解锁,Linux,规则,INPUT,数据包
From: https://blog.51cto.com/u_14065119/6122712

相关文章

  • linux服务器检查脚本
    直接上脚本该脚本并不能检测出服务器有什么性能问题,或者安全问题,只是简单的展示检查结果,至于服务器是否有什么问题,还需要执行者自行根据结果去分析,判断。具体内容,如下,有详细......
  • Linux系统中多线程实现方法的全面解析
    ​线程引入:     在传统的Unix模型中,当一个进程需要由另一个实体执行某件事时,该进程派生(fork)一个子进程,让子进程去进行处理。Unix下的大多数网络服务器程序都是这么......
  • iptables的使用
    iptables的使用iptables介绍iptables是基于内核提供的netfilter框架实现的,网络协议栈是分层的,在tcpip网络模型里,tcp传输层下面的一层就是ip网络层,而netfilter就是工作在......
  • linux查询用户登录历史记录
    last命令列出当前和曾经登入系统的用户信息默认读取的是/var/log/wtmp文件的信息lastlog命令列出所有用户最近登录的信息默认读取的是/var/log/lastlog文件中的信息l......
  • linux配置jenkins步骤
    安装jdk1.81.1安装目录:/usr/bin/java1.2安装jdk工具包:yum-yinstalljava-1.8.0-openjdkjava-1.8.0-openjdk-devel安装jenkins1.1安装目录:/usr/local/jenkins1.......
  • Linux - 添加用户
    添加用户语法:useradd[选项]用户名-d 指定用户的家目录-g 指定用户所属组-m 不自动建立用户登录的目录-u 指定用户idpasswd用于设置/修改用户密码passwd[用户名]w......
  • linux系统,安装pm2
    安装成功后,需要配置到全局,才可以直接使用pm2命令!!echo$PATH----找到全局环境路径npm安装的pm2,路径是在nodejs/bin的路径下截图开始是配置nodejs到全局环境命令......
  • linux 网络管理之tcpdump命令详解
    一、tcpdump的作用tcpdump是linux环境的网络数据采集分析工具,也就是所谓的抓包工具,与tcpdump只有命令行格式不同,Windows有个图形可视化工具Wireshark所谓的抓包工具就......
  • Linux history 命令使用技巧
    history命令使用起来非常简单。默认情况下,该命令读取文件​​~/.bash_history​​并在终端中打印内容。要查看历史执行的命令,请执行以下操作:history然后您可以滚动浏览输......
  • Linux提权的四个脚本发布啦!
    简介Metasploit中拥有各种奇淫巧计,让你能远程系统下尝试获取受害者电脑的系统级权限。除此之外,当你在目标机器上尝试提升权限时还有一些Linux脚本可供使用,通常它们针对的......