Linux下的iptables防火墙管理方法

Linux下的iptables防火墙管理方法

1.什么是iptables?

IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统 如果 Linux 系统连接到因特网或
LAN、服务器或连接 LAN 和因特网的代理服务器 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置
防火墙在做数据包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的数据包过滤表中,而这些表集成在 Linux 内核中
在数据包过滤表中,规则被分组放在我们所谓的链(chain)中 而netfilter/iptables IP
数据包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则 虽然 netfilter/iptables IP
信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成 netfilter
组件也称为内核空间(kernelspace),是内核的一部分 由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集
iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易 除非您正在使用Red Hat Linux 7.1 或更高版本,否则需要下载该工具并安装使用它

2.iptables命令参数

参数功能
-t指定表名称
-n不作解析
-L列出指定表中的策略
-A增加策略
-p网络协议
--dport端口
-s数据来源
-j动作:ACCEPT允许;REJECT拒绝;DROP丢弃
-N增加链
-E修改链名称
-X删除链
-D删除指定策略
-I插入
-R修改策略
-P修改默认策略

3.iptables策略

实验环境:

systemctl stop firewalld #关闭firewalld防火墙
systemctl start iptables #开启iptables防火墙

策略查看:

iptables -nL	#查看所有链,不作解析(默认查看filter表格里面的链)
iptablde -L		#查看所有链,作解析(默认查看filter表里面的链)
iptables -t filter -nL	#查看filter表格里面的链,不做解析
iptables -t nat -nL		#查看nat表里面的链
iptables -t mangle -nL	#查看mangle表里面的链

策略清除:

iptables -F		#清除所有策略
service iptables save	#将之前的策略保存到/etc/sysconfig/iptables中

策略配置:

iptables -t filter -A INPUT -i lo -j ACCEPT	#将lo回环接口加入INPUT链
iptables -nL		#查看策略
iptables -D INPUT 1	#删除INPUT链下第一条策略
iptables -t filter -A INPUT -s 172.25.254.1 -j ACCEPT	#接受指定ip的数据来源
iptables -t filter -A INPUT -s 172.25.254.1 -j REJECT 	#拒绝指定ip的数据来源
iptables -R INPUT 2 -S 172.25.254.1 -j REJECT			#修改策略(修改INPUT链下的第二条策略,动作改为拒绝)
iptables -I INPUT 2 -s 172.25.254.1 -p tcp --dport 22 -j ACCEPT	#插入策略(在INPUT链下的第二条策略后插入策略,接受该ip通过22端口tcp协议)
iptables -P INPUT DROP		#修改INPUT链默认策略为DROP	
iptables -P INPUT ACCEPT	#修改INPUT链默认策略为ACCEPT	
iptables -N nigar	#添加nigar链
iptables -E nigar NIGAR	#修改链的名字(nigar---NIGAR)
iptables -X NIGAR	#删除链NIGAR	

4.iptables地址转发

地址转发的过程其实是当外网访问内网时,不知道内网的真实地址,由地址转发功能将其转发到真实的地址

实验环境:
真机:nigar:172.25.254.36
虚拟机:
server1 eth0:172.25.254.1 eth1:1.1.1.11
server2 ech0:1.1.1.22 网关:1.1.1.11

添加地址转发功能:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-dest 1.1.1.22:22
iptables -t nat -nL	#查看策略

注释:

PREROUTING (PREROUTING链 路由前)
-i(input) 
-p(协议类型) tcp 
--dport 22 (端口)
-j DNAT (修改目的ip地址)
--to-dest 1.1.1.22:22(转发到这个地址)

测试:用真机nigarssh root@172.25.254.1 连接server1,实际连接的是server2

5.iptables端口伪装

端口伪装的过程简单来说,就是当本地主机需要访问外网时,开启伪装功能将数据包中的内网源IP转换为外网IP

实验环境:
真机:nigar:172.25.254.36
虚拟机:
server1 eth0:172.25.254.1 eth1:1.1.1.11
server2 ech0:1.1.1.22 网关:1.1.1.11

开启端口伪装功能:

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.1
iptables -t nat -nL

注释:

POSTROUTING (POSTROUTING链 路由后)
-o(output) 
-j SNAT  (修改源ip地址)
--to-source 172.25.254.1(在172.25.254.1上面进行伪装)

测试:当使用真机nigarping 1.1.1.22时,在开启伪造功能之前,数据包无法到达,ping不通;开启伪造功能后可成功ping通

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页