linux iptables简介

发布时间:2023年12月29日

表与链

iptables是4表五链

4表:filter表(过滤表) nat表 raw表 mangle表

五链:INPUT OUTPUT FORWARD PREROUTING POSTROUTING

(所有链的名字要大写)

pre…之前

post…之后

filter表

iptables默认操作就是这个表

实现防火墙的功能:屏蔽或准许端口ip

主要和主机自身相关,真正负责主机防火墙功能的(过滤流入流出主机的数据包)filter表iptables默认使用的表,这个表定义了三个链(chains)企业工作场景:主机防火墙
INPUT	负责过滤所有目标地址是本机地址的数据包,通俗来说:就是过滤进入主机的数据包(能否让数据包进入服务器
FORWARD	路过:负责转发流经主机的数据包,起转发的作用,和NAT关系很大
OUTPUT	处理所有源地址是本机地址的数据包
nat表

实现nat功能

? 实现共享上网(内网服务器上外网)

? 端口映射和ip映射

负责网络地址转发的,即来源与目的IP地址和post的转换
应用:和主机本身无关,一般用于局域网共享上网或者特殊的端口转换服务相关
工作场景:
    1.用于企业路由(zebra)或网关,共享上网(POSTROUTING)
    2.做内部外部IP地址一对一映射(DMZ),硬件防火墙映射IP到内部服务器,FTP服务器(PREROUTING)
    3.web,单个端口的映射,直接映射80端口(PREROUTING)这个表定义了3个链,nat功能相当于网络的acl控制,和网络交换机acl类似
OUTPUT	和主机放出去的数据包有关,改变主机发出数据包的目的地址
PREROUTING	在数据包到达防火墙时,进行路由判断之前执行的规则,作用是改变数据包的目的地址,目的端口等
POSTROUTING	在数据包离开防火墙时进行路由判断之后执行的规则,作用改变数据包的源地址,源端口等	

环境准备工作

yum -y install iptables-services   //安装iptables services
rpm -ql iptables-services   //查看iptables软件包的内容
#/etc/sysconfig/iptables   //一些规则

lsmod 就是查看内核中加载了哪些模块

systemctl disable firewalld   //禁用firewalld

iptables -nL   //查看filter表规则
iptables -t nat -nL  //查看nat表的规则,-t指定表

iptables命令参数

参数
-L		//显示表中的所有规则
-n		//不要把端口或IP反向解析为名字
指定表
-t		//指定表,不指定默认filter表
指定连接(加入/追加/删除)
-A		//append追加 加入准许类规则适用-A,把规则放最下面
-I		//insert把规则加在链的第一条 拒绝类规则放在所有规则最上面 拒绝类-I
-D		//delete删除  -D INPUT 1  
iptables -F   //清空规则
iptables -X   //清空自定义的链
iptables -Z   //链的计算器清零
iptables -t filter -I INPUT -p tcp --dport 22 -j DROP  //拒绝用户访问22端口
//-t 指定表 
//-I 插入,把规则放在最上面 
//-p 指定协议 tcp,udp,icmp
//--dport   目标端口
//DROP 丢弃动作,前面要加-j 后面加动作

iptables -t filter -D INPUT 1
//-t 指定表
//-D 删除
//1   行数

iptables -nL --line-number   //以数字行数形式显示iptables list
参数
-p		//协议protocal tcp/udp/icmp/all 指定端口的时候需要指定协议
--dport		//目标端口 dest detination 指定端口 加上协议-p tcp
--sport		//源端口  source源
-s			//source 源IP
-d		//destination 目标IP
-m		//指定模块 multiport   可以一次指定多个端口
-i		//input 输入的时候  从哪个网卡进来
-o		//ouput输出的时候 从哪个网卡出去
参数
-j		//满足条件后的动作:DROP/ACCEPT/REJECT
		//DROP REJECT拒绝
		//DROP 把数据丢弃,不会返回信息给用户
		//REJECT 拒绝 返回拒绝信息

IPTABLES

添加必要的网络地址转换规则,使外部客户端能够访问到内部服务器 上的 dns、mail、web 和 ftp 服务

INPUT、OUTPUT 和 FOREARD 链默认拒绝(DROP)所有流量通行

配置源地址转换允许内部客户端能够访问互联网区域。

yum -y install iptables-services.x86_64  iptables
SNAT规则
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ens34 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens34 -j MASQUERADE


[root@RouterSrv ~]# iptables -t nat -nvL POSTROUTING 
Chain POSTROUTING (policy ACCEPT 395 packets, 28294 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    2   114 MASQUERADE  all  --  *      ens34   192.168.0.0/24       0.0.0.0/0           
  719 50161 MASQUERADE  all  --  *      ens34   192.168.100.0/24     0.0.0.0/0   
DNAT规则
iptables -t nat -A PREROUTING -d 81.6.63.254 -p udp --dport 53 -j DNAT --to 192.168.100.100  //将192.168.100.100udp53dns映射到81.6.63.254相应端口
iptables -t nat -A PREROUTING -d 81.6.63.254 -p tcp -m multiport --dport 53,80,443,465,993 -j DNAT --to 192.168.100.100  //映射192.168.100.100的dns http https mail  到81.6.63.254相应端口
iptables -t nat -A PREROUTING -d 81.6.63.254 -p tcp -m multiport --dport 20,21,137,138,139,444,445,4500:5000 -j DNAT --to 192.168.100.200  //映射192.168.100.200 FTP,文件传输 到81.6.63.254相应端口


[root@RouterSrv ~]# iptables -t nat -nvL PREROUTING 
Chain PREROUTING (policy ACCEPT 7014 packets, 426K bytes)
 pkts bytes target     prot opt in     out     source               destination         
  229 16310 DNAT       udp  --  *      *       0.0.0.0/0            81.6.63.254          udp dpt:53 to:192.168.100.100
    6   360 DNAT       tcp  --  *      *       0.0.0.0/0            81.6.63.254          multiport dports 53,80,443,465,993 to:192.168.100.100
    0     0 DNAT       tcp  --  *      *       0.0.0.0/0            81.6.63.254          multiport dports 20,21,137,138,139,444,445,4500:5000 to:192.168.100.200
默认拒绝和放行必要流量
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -A INPUT -p icmp -j ACCEPT
iptables -A FORWARD -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dport 1194,2021 -j ACCEPT
iptables -A INPUT -p udp -m multiport --dport 67,68 -j ACCEPT
iptables -A FORWARD -p udp -m multiport --dport 53 -j ACCEPT
iptables -A FORWARD -p tcp -m multiport --dport 53,80,443,465,993,21,20,137,138,139,444,445,4500:5000  -j ACCEPT
iptables -A OUTPUT -p udp -m multiport --dport 67,68 -j ACCEPT  
//这里尽量满足要求,写多不会扣分
//截完图后我会全部放行,因为目的已经达到了,没必要之后的操作浪费时间

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT


[root@RouterSrv ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 1194,2021
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 67,68

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 53
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 53,80,443,465,993,20
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 21

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 67,68
[root@routersrv ~]# iptables -t nat -L -n --line-numbers
Chain PREROUTING (policy ACCEPT)
num  target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
num  target     prot opt source               destination         
1    MASQUERADE  all  --  192.168.0.0/24       0.0.0.0/0           
2    MASQUERADE  all  --  192.168.100.0/24     0.0.0.0/0   


iptables -t nat -D POSTROUTING 1       //针对nat的表进行删除
文章来源:https://blog.csdn.net/qq2353177176/article/details/135297161
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。