Iptables基础整理

Iptables基础框架

Iptables基于内核netfilter安全框架运行,主要有过滤数据包和NAT地址转换功能。

Iptables基本表链结构


filter

INPUT

FORWARD

OUTPUT

 

 

nat

 

 

OUTPUT

PREROUTING

POSTROUTING

mangle

INPUT

FORWARD

OUTPUT

PREROUTING

POSTROUTING

raw

 

 

OUTPUT

PREROUTING

 

Iptables主要通过规则链的方式进行数据包的过滤和转发以及NAT功能,表是具有相同功能的规则链的集合,方便我们进行管理。

Iptables常用条件类型


条件

参数

范例

源IP地址

-s

-s 172.16.1.1,172.16.1.2    -s 172.16.1.0/24   ! -s 172.16.1.0/24

目的IP地址

-d   

-d 172.16.1.1,172.16.1.2    -d 172.16.1.0/24   ! -d 172.16.1.0/24

源端口

-p tcp -m tcp --sport

-p tcp -m multiport --sports


-p tcp -m tcp --sport 22     -p tcp -m tcp --sport 22:25

-p tcp -m tcp --sport :22    -p tcp -m tcp --sport 80:

-p tcp -m tcp ! --sport 22   -p tcp -m multiport --sports 22,25


目的端口

-p tcp -m tcp --dport

-p tcp -m multiport --dports


-p tcp -m tcp --dport 22     -p tcp -m tcp --dport 22:25

-p tcp -m tcp --dport :22    -p tcp -m tcp --dport 80:

-p tcp -m tcp ! --dport 22   -p tcp -m multiport --dports 22,25


协议

-p

-p tcp   ! -p tcp   (tcp udp icmp)

网卡

-i 流入网卡  / -o流出网卡

-i eth0  ! -i eth0       /    -o eth0   ! -o eth0

Iptables常用扩展模块


扩展模块

参数

范例

tcp

-p tcp -m tcp --dport

-p tcp -m tcp --sport

-p tcp -m tcp --dport --tcp-flags

-p tcp -m tcp --dport --syn


-p tcp -m tcp --dport 22 --tcp-flags SYN,ACK,FIN,RST,URG,PSH SYN -j REJECT

-p tcp -m tcp --dport 22 --syn -j REJECT


udp

-p udp -m udp --dport

-p udp -m udp --sport



multiport

-p tcp -m multiport --dports

-p tcp -m multiport --sports



icmp

-p icmp -m icmp --icmp-type 8/0

-p icmp -m icmp --icmp-type 8

-p icmp -m icmp --icmp-type "echo-request"


-p icmp -m icmp --icmp-type 8/0 -j REJECT 禁止别人ping自己

-p icmp -m icmp --icmp-type 8 -j REJECT

-p icmp -m icmp --icmp-type "echo-request" -j REJECT


state

-m state --state 

-m state --state RELATED,ESTABLISHED -j ACCEPT

Iptables常用动作


动作

参数
范例

ACCEPT

-j ACCEPT

iptables -t filter -I INPUT -p tcp --dport 22 -j ACCEPT

DROP 

-j DROP

iptables -t filter -I INPUT -p tcp --dport 22 -j DROP

REJECT

-j REJECT <--reject-with>

iptables -t filter -I INPUT -p tcp --dport 22 -j REJECT --reject-with icmp-host-unreachable (提示为什么被拒绝)

LOG

-j LOG <--log-level> <--log-prefix>

iptables -I INPUT -p tcp --dport 22 -m state --state NEW -j LOG --log-prefix "want-in-from-port-22"

SNAT

-j SNAT --to-source 

iptables -t nat -A POSTROUTING -s 10.1.0.0/16 -j SNAT --to-source 192.168.1.146

DNAT

-j DNAT --to-destination

iptables -t nat -I PREROUTING -d 192.168.1.146 -p tcp --dport 3389 -j DNAT --to-destination 10.0.0.6:3389

MASQUERADE

-o eth0 -j MASQUERADE

iptables -t nat -I POSTROUTING -s 10.1.0.0/16 -o eth0 -j MASQUERADE (动态SNAT)

REDIRECT

-j REDIRECT --to-ports 

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

开启内核转发功能

在配置NAT网关、路由器或网络防火墙的时候,需要开启内核转发功能。

#使用如下两种方法均可临时开启核心转发,立即生效,但是重启网络配置后会失效。
方法一:echo 1 > /proc/sys/net/ipv4/ip_forward
方法二:sysctl -w net.ipv4.ip_forward=1
#使用如下方法开启核心转发功能,重启网络服务后永久生效。
配置/etc/sysctl.conf文件(centos7中配置/usr/lib/sysctl.d/00-system.conf文件),在配置文件中将 net.ipv4.ip_forward设置为1

Iptables常用操作


查看规则

iptables -nvL

iptables -t filter -nvL

iptables -t filter -nvL INPUT

iptables --line-number -nvL INPUT


清空规则

iptables -F      清空filter表的规则

iptables -F INPUT


增加规则

iptables -t filter -I INPUT -s 192.168.1.1 -j DROP   // DROP表丢弃不响应   REJECT表拒绝并响应

iptables -t filter -I INPUT 2 -s 192.168.1.1 -j DROP

iptables -t filter -A INPUT -s 192.168.1.1 -j DROP


删除规则

iptables -t filter -D INPUT 3   删除INPUT链中第3条规则

iptables -t filter -D INPUT -s 192.168.1.1 -j ACCEPT


修改规则

iptables -t filter -R INPUT 1 -s 192.168.1.1 -j REJECT

只能改动作,参数条件一个不能少,推荐先删除后添加的方式


修改默认规则

iptables -t filter -P FORWARD DROP

保存规则

service iptables save

/etc/init.d/iptables save

cat /etc/sysconfig/iptables


白名单机制

iptables -P INPUT ACCEPT   默认设为ACCEPT防止清空后管理员无法登录

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

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

iptables -A INPUT -j REJECT   在规则链最后加上拒绝,实现白名单机制


创建自定义链

iptables -t filter -N IN_WEB

引用自定义链

iptables -t filter -I INPUT -p tcp --dport 80 -j IN_WEB

重命名自定义链

iptables -E IN_WEB WEB

删除自定义链

iptables -X WEB   满足两个条件:自定义链没有被引用  自定义链中没有任何规则

计数器清零

iptables -Z 

网络防火墙配置

网络防火墙=网关+Iptables过滤

#1.开启防火墙转发功能,实现网关
[[email protected] ~]# vim /etc/sysctl.conf

# Controls IP packet forwarding
net.ipv4.ip_forward = 1

[[email protected] ~]# sysctl -p   // 应用参数

#2.分别添加路由记录,设置网关
[[email protected] ~]# route add -net 172.16.1.0/24 gw 10.0.0.88

[[email protected] ~]# route add -net 10.0.0.0/24 gw 172.16.1.88

#3.配置防火墙Iptables过滤规则
[[email protected] ~]# iptables -nvL FORWARD
Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination     

[[email protected] ~]# iptables -A FORWARD -d 172.16.1.13 -j ACCEPT
[[email protected] ~]# iptables -A FORWARD -s 172.16.1.13 -j ACCEPT

#4.进行测试
[[email protected] ~]# ping 172.16.1.13
PING 172.16.1.13 (172.16.1.13) 56(84) bytes of data.
64 bytes from 172.16.1.13: icmp_seq=1 ttl=63 time=12.5 ms
64 bytes from 172.16.1.13: icmp_seq=2 ttl=63 time=1.03 ms

[[email protected] ~]# ping 10.0.0.100
PING 10.0.0.100 (10.0.0.100) 56(84) bytes of data.
64 bytes from 10.0.0.100: icmp_seq=1 ttl=63 time=0.391 ms
64 bytes from 10.0.0.100: icmp_seq=2 ttl=63 time=1.03 ms

SNAT网关配置

#严格上,配置网关=开启内核转发功能,配置方法同上
#添加SNAT功能
[[email protected] ~]# iptables -t nat -I POSTROUTING -s 10.0.0.0/24 -j SNAT --to-source 172.16.1.88
#测试
[[email protected] ~]# ping 172.16.1.13
PING 172.16.1.13 (172.16.1.13) 56(84) bytes of data.
64 bytes from 172.16.1.13: icmp_seq=1 ttl=63 time=0.796 ms
64 bytes from 172.16.1.13: icmp_seq=2 ttl=63 time=3.38 ms
64 bytes from 172.16.1.13: icmp_seq=3 ttl=63 time=1.34 ms

[[email protected] ~]# tcpdump -i eth1 -nn icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
23:12:29.983216 IP 172.16.1.88 > 172.16.1.13: ICMP echo request, id 14715, seq 1, length 64
23:12:29.983239 IP 172.16.1.13 > 172.16.1.88: ICMP echo reply, id 14715, seq 1, length 64
23:12:30.998859 IP 172.16.1.88 > 172.16.1.13: ICMP echo request, id 14715, seq 2, length 64

DNAT网关配置

#网关配置同网络防火墙
#开启DNAT功能
[[email protected] ~]# iptables -t nat -I PREROUTING -d 10.0.0.88 -j DNAT --to-destination 172.16.1.13
#测试
[[email protected] ~]# ping 10.0.0.88
PING 10.0.0.88 (10.0.0.88) 56(84) bytes of data.
64 bytes from 10.0.0.88: icmp_seq=1 ttl=63 time=21.8 ms
64 bytes from 10.0.0.88: icmp_seq=2 ttl=63 time=2.03 ms
64 bytes from 10.0.0.88: icmp_seq=3 ttl=63 time=1.53 ms

[[email protected] ~]# tcpdump -i eth1 -nn icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
23:31:30.079065 IP 10.0.0.100 > 172.16.1.13: ICMP echo request, id 20091, seq 1, length 64
23:31:30.079104 IP 172.16.1.13 > 10.0.0.100: ICMP echo reply, id 20091, seq 1, length 64
23:31:31.083794 IP 10.0.0.100 > 172.16.1.13: ICMP echo request, id 20091, seq 2, length 64
23:31:31.083853 IP 172.16.1.13 > 10.0.0.100: ICMP echo reply, id 20091, seq 2, lengt
时间: 2024-07-31 19:21:34

Iptables基础整理的相关文章

iptables基础概念

1.基础概念. 防火墙,其实说白了讲,用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种.无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘.而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP.数据进行检测. 目前市面上比较常见的有3.4层的防火墙,叫网络层的防火墙,还有7层的防火墙,其实是代理层的网关. 对于TCP/IP的七层模型来讲,我们知道第三层是网络层,三层的防火墙会在这层对源地址和目标地址进行检测.但是对于七层的防

Linux防火墙iptables基础

IPtables基础 简介 iptables命令可用于配置Linux的包过滤规则,常用于实现防火墙.NAT. iptables里面有4张表,分别是filter,NAT,mangle,raw表.运维人员的话主要关注的是filter和NAT表. filter:主要是过滤包的,内建三个链INPUT.OUTPUT以及FORWARD.INPUT作用于进入本机的包:OUTPUT作用于本机送出的包:FORWARD作用于那些跟本机无关的包. NAT:主要用户地址转换和端口映射,内建三个链,分别是PREOUTIN

HTML基础整理(一)

HTLM基础整理--思维导图(标签部分) 其他: <sub>下标</sub>     <sup>上标</sup> 优先级,越往后优先级越高. "right"(右对齐)               "top" (顶部) 对齐方式<tr align="center"(居中) valign="middle"(居中) "left"(左对齐)          

Linux 之 iptables基础(一)

 iptables基础(一) =========================================================================== 概述: iptables介绍 1)Firewall ★Firewall:防火墙系统 是一种隔离工具,Packets Filter Firewall (包过滤型防火墙): 定义:工作于主机或网络的边缘,对经由的报文根据预先定义的规则(匹配条件)进行检测,对于能够被规则匹配到的报文实行某预定义的处理机制的一套组件: 硬件

Linux防火墙工具iptables基础介绍

iptables基础知识说明: 一.规则链:规则链是防火墙规则/策略的集合 INPUT:处理入站数据包 OUTPUT:处理出站数据包 FORWARD:处理转发数据包 POSTROUTING链:在进行路由选择后处理数据包 PREROUTING链:在进行路由选择前处理数据包 二.规则表:规则表是规则链的集合(优先顺序:raw.mangle.nat.filter) raw表:确定是否对该数据包进行状态跟踪(OUTPUT.PREROUTING) mangle表:为数据包设置标记(PREROUNTING.

iptables基础一

1. iptables基础知识 2. iptables命令基本用法及实例 ?? ?? 1. iptables基础知识 ??防火墙的实现方式与分类??防火墙的实现方式分硬件与软件两种??按防护范围分:????- 主机防火墙:工作在主机边缘处的出入口,为单台主机提供防范????- 网络防火墙:工作在网络的边缘处出入口,为整个网络提供防护??数据包在本机的流向????报文由传送到本机网卡(PREROUTING链),由内核接收并放到接收缓存区(内存上)中.每当进来一个网络报文,系统就会向内核发送一个中断

linux基础整理0316

一.linux基础整理 由于这是学习linux的第一周,整理的东西很杂很分散,其中包括了查看虚拟机的各种信息,命令相关的只整理了alias.date.history.cal.帮助会话screen等命令的使用,最后加上了两个常见问题处理办法:在以后的学习中会不断完善文中整理的相关内容. 1.查看系统信息类命令: 查看内核版本 [root@CentOS7 ~]#uname -r 3.10.0-957.el7.x86_64 查看系统版本 查看配置文件 [root@CentOS7 ~]#cat /etc

iptables基础笔记

1.iptables是什么 iptables是Linux上的一支防火墙服务程序,且由内核直接提供 2.iptables的基本工作方式 iptables通过"表"的形式管理进出主机网卡的数据流 默认的"表"有3张,分别为Filter(默认使用),Nat,Manager.我们的需求使用Filter表的情况居多,通过对比数据包头部信息与每张表中的规则,来决定处理数据流是放行还是丢弃. 3.1Filter"表"介绍 Filter是过滤器表,主要与想要进出

机器学习 —— 基础整理(六):线性判别函数——感知器、松弛算法、Ho-Kashyap算法

本文简单整理了以下内容: (一)线性判别函数与广义线性判别函数 (二)感知器 (三)松弛算法 (四)Ho-Kashyap算法 (一)线性判别函数与广义线性判别函数 一.线性判别函数 这篇总结继续关注分类问题.假设判别函数(Discriminant function)的参数形式已知,用训练的方法直接根据样本估计判别函数的参数.线性判别函数的形式为: $$g(\textbf x)=\textbf w^{\top}\textbf x+w_0$$ $\textbf x\in \mathbb R^d$ 是