iptables介绍
iptables防火墙可以用于创建过滤(filter)与NAT规则。所有Linux发行版都能使用iptables。
iptables的结构:iptables-->Tables-->Chains-->Rules,tables则chains组成,chains由rules组成。
iptables的表与链
勾子函数(hook function)netfilter规则链:INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING
iptables具有Filter,NAT,Mangle,Raw四种内建表(四种功能)
1.Raw表
Raw表用于处理异常,它具有2个内建链
PREROUTING chain
OUTPUT chain
2.Mangle表
Mangle表用于指定如何处理数据包。它能改变TCP头中的QoS位。Mangle表具有5个内建链:
PREROUTING
OUTPUT
FORWARD
INPUT
POSTROUTING
3.NAT表
NAT表有三种内建链
PREROUTING链-处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT。
POSTROUTING链-处理即将离开本机的数据包。它会转换数据包中的源IP地址,通常用于SNAT。
OUTPUT链-处理本机产生的数据包
4.Filter表
Filter表示iptables的默认表,因此如果你没有自定义表,那么就默认使用filter表,它具有以下三种内建链:
INPUT-处理来自外部的数据
OUTPUT链-处理向外发送的数据
FORWARD链-将数据转发到本机的其他网卡设备上
iptables规则(Rules)
牢记以下三点是理解iptables规则的关键:
Rules包括一个条件和一个目标(target)
如果满足条件,就执行目标(target)中的规则或者特定值。
如果不满足条件,就判断下一条Rules。
目标值(Target Values)
以下是可以在target里指定的特殊值:
ACCEPT-允许防火墙接收数据包
DROP-防火墙丢充包
QUEUE-防火墙将数据包移交到用户空间
RETURN-防火墙停止执行当前链中的后续Rules,交返回到调用链(the calling chain)中。
查看可用的规则:
iptables -t filter --list
iptables -t mangle --list
iptables -t nat --list
iptables -t raw --list
清空所有iptables规则
在配置iptables之前,需要使用iptables --list查看现有的规则
iptables --flush
或者
iptables -F
有的linux发行版上这个命令并不会清除NAT中的规则,此时只能手动清除:
iptables -t NAT -F
永久生效
当删除、添加规则后,这些更改并不能永久生效,这些规则在重启系统或服务后会消失,为了让配置永久生效,根据平台的不同,具体操作也不同。
Ubuntu
首先保存现有的规则
iptables-save > /etc/iptables.rules
新建一个bash脚本,并保存到/etc/network/if-pre-up.d/目录下:
#!bin/bash
iptables-restore < /etc/iptables.rules
这样,每次系统重启后iptables规则都会被自动加载。
注意:不要尝试在.bashrc 或者.profile中执行以上命令,因为用户通常不是root,而且这只能在登录时加载iptables规则。
CentOS,RedHat
保存iptables规则
service iptables save
查看当前规则:
cat /etc/sysconfig/iptables
追加iptables规则
可以使用iptables -A 命令追加新规则,其中-A表示Append。因此,新的规则将追加到链尾。
语法
iptables -A chain firewall-rule
-A chain-指定要追加规则的链
firewall-rule-具体的规则参数
描述规则的基本参数
-p 协议(protocol)
指定规则的协议,如tcp,udp,icmp等,可以使用all来指定所有协议;
如果不指定-p参数,默认是all值;
可以使用协议名(如tcp),或者是协议值(比如6代表TCP)来指定协议。映射关系请查看/etc/protocols;
还可以使用-protocol参数代替-p参数;
-s源地址(source)
指定数据包的源地址;
参数可以使用IP地址,网络地址,主机名;
例如:-s 192.168.1.101指定IP地址;
例如:-s 192.168.1.0/24指定网络地址;
如果不指定-s参数,就代表所有地址;
还可以使用-src或者-source
-d 目的地址(destination)
指定目的地址;
参数和-s相同;
还可以使用-dst或者-destination;
-j 执行目标(jump to target)
-j 代表“jump to target”;
-j指定了当与规则(Rule)匹配时如何处理数据包;
可能的值是ACCEPT,DROP,QUEUE,RETURN;
还可以指定其他链(Chain)作为目标;
-i输入接口(input interfqace)
-i代表输入接口(input interface);
-i指定了要处理来自哪个接口的数据包;
这些数据包即将进入INPUT,FORWARD,PREROUTE链;
如果不指定-i,那么处理进入所有接口的数据包;
如果出现!-i eth0,那么将处理所有纲目eth0以外接口进入的数据包;
如果再现-i eth+,将处理经由eth开头的接口进入的数据包;
还可以使用-in-interface参数;
-o 输出(out interface)
-o代表"output interface";
-o指定了数据包由哪个接口输出;
这些数据包即将进入FORWARD,OUTPUT,POSTROUTING链;
如果不指定-o选项,那么系统上所有接口都可以作为输出接口;
如果出现! -o eth0,那么将从eth0以外的接口输出;
如果出现-i eth+,那么将仅从eth开关的接口输出;
还可以使用-out-interface参数;
描述规则的扩展参数
--sport源端口(source port),针对-p tcp或者-p udp
缺省情况下,将匹配所有端口;
可以指定端口号或者端口史称,例如"--sport 22"或者"--sport ssh";
/etc/services文件描述了上述映射关系;
从性能上讲,使用端口号更好;
使用冒号可以匹配端口范围,如“-sport 22:100";
还可以使用"-source-port";
--dport目的端口(destination port)针对-p tcp或者-p udp*
参数和--sport类似;
还可以使用"--destination-port";
--tcp-flags TCP标志,针对-p tcp
可以指定由逗号分隔的多个参数;
有效值可以是:SYN,ACK,FIN,RST,URG,PSH;
可以使用ALL或者NONE;
--icmp-type ICMP类型,针对-p icmp
--icmp-type 0表示Echo Reply;
--icmp-type 8表示Echo Request;
追加规则的完整实例:仅允许SSH服务
1.清空所有iptables规则
iptables -F
2.接收目标端口为22的数据包
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
3.拒绝所有其他数据包
iptables -A INPUT -j DROP
更改默认策略
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
配置应用程序规则
SSH
1.允许接收远程主机的SSH请求
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
2.允许发送本地主机的SSH响应
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
-m state:启动状态匹配模块(state matching module)
--state:状态匹配模块的参数。当SSH客户端第一个数据包到达服务器时,状态字段为NEW;建立连接后数据包的状态字段都是ESTABLISHED
--sport 22:sshd监听22端口,同时也通过该端口和客户端建立连接、传送数据。因此对于SSH服务而言,源端口就是22
--dport 22:ssh客户端程序可以从本机的随机端口与服务器的22端口建立连接。因此对于SSH客户端而言,目的端口就是22
如果服务器也需要使用SSH连接其他远程主机,则还需要增加以下配置:
1.送出的数据包目的端口为22:
iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state --state NEW,ESTABLISHED -j ACCEPT
2.接收的数据包源端口为22
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state --state ESTABLISHED -j ACCEPT
HTTP
1.允许拦收远程主机的HTTP请求
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
2.允许发送本地主机的HTTP响应
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables介绍的更多相关文章
- iptables介绍iptables和netfilter
随着互联网技术的方兴未艾,各种网络应用层出不穷,网络攻击.黑客入侵也成了网民畅游互联网的心头大患,互联网安全也愈加受到了人们的重视.网络防火墙,作为一种简单高效的互联网防御手段,逐渐成为了网民畅游网络 ...
- Linux防火墙iptables介绍
介绍网络防火墙是通过一个或多个允许或拒绝的规则来过滤网络流量的网络设备或软件.网络防火墙还可以执行更复杂的任务,例如网络地址转换,带宽调整,提供加密隧道以及更多与网络流量相关的任务.而我们的任务就是需 ...
- Netfilter和iptables介绍
前言 在开始Kubernetes的网络之前我们先来学习Netfilter,Netfilter可能了解的人比较少,但是iptables用过 Linux的都应该知道.本文主要介绍Netfilter与ipt ...
- Linux下iptables介绍
ptables简介 iptables是基于内核的防火墙,功能非常强大,iptables内置了filter,nat和mangle三张表. filter负责过滤数据包,包括的规则链有,input,outp ...
- 防火墙iptables介绍
防火墙: netfilter/iptables是集成在Linux2.4.X版本内核中的包过滤防火墙系统.该架构可以实现数据包过滤,网络地址转换以及数据包管理功能.linux中防火墙分为两部分:netf ...
- iptables介绍和基本使用
iptables 防火墙是什么 防火墙好比一堵真的墙,能够隔绝些什么,保护些什么. 防火墙的本义是指古代构筑和使用木制结构房屋的时候,为防止火灾的发生和蔓延,人们将坚固的石块堆砌在房屋周围作为屏障,这 ...
- iptables 介绍
规则链 规则链的作用:对数据包进行过滤或处理 链的作用:容纳各种防火墙规则 链的分类依据:处理数据包的不同时机 默认包括5种规则链 INPUT:处理入站数据包 OUTPUT:处理出站数据包 FORWA ...
- linux防火墙(一)—— iptables架构介绍
一.防火墙的分类 一般宏观来说,防火墙分为主机型防火墙,例如我们为了防止个人电脑被攻击,而开启的防火墙,还分为网关型防火墙,一般部署在企业的网关,用于过滤和转发,保证整个企业的网络环境安全性. 按照物 ...
- iptables的介绍
iptables介绍 iptables 1)iptables程序工作在内核的TCP/IP网络协议栈框架netfilter上,通过网络过滤可以实现入侵检测以及入侵防御功能,而不是单个协议当中. 2)ip ...
随机推荐
- 基于OpenCV做“三维重建”(2)--封装标定过程
既然已经能够找到了标定点,那么下边的工作就是使用标定结果了.[这本书在这里的内容组织让人莫名其妙]但是通过阅读代码能够很方便地串起来. /*------------------------------ ...
- [darknet]查看错误结果 sight of wrong
import os import numpy import cv2 bad_label_file = open("bad_valid.list",'r') names = [] f ...
- Mac在Finder中显示隐藏文件
1.显示隐藏文件 打开终端,输入下面的命令: defaults write com.apple.finder AppleShowAllFiles -bool true KillAll Finder ...
- WinForm 设置窗体启动位置在活动屏幕右下角
WinForm 设置窗体启动位置在活动屏幕右下角 在多屏幕环境下, 默认使用鼠标所在的屏幕 1. 设置窗体的 StartPosition 为 FormStartPosition.Manual. 2. ...
- ng/cli new skip install and do not create a folder
ng new myApp --skip-install --directory ./
- spring cloud 初体验
spring cloud分为注册端.客户端以及消费端 初体验的理解就是: 注册端就是将之前所有的应用在这边进行注册,然后给每个应用都生成自己的标识,这些应用就是来自于客户端,消费端则通过调用注册端(有 ...
- 使用 Chrome DevTools 调试 JavaScript
参考网址如下: http://www.css88.com/archives/8175 https://jingyan.baidu.com/article/67508eb423d2929ccb1ce45 ...
- 20190407 Word合并单元格
很长一段时间没处理word合并单元格,又忘记了采取忽略错误的方式测试出相应单元格的行列坐标这种方式.真是浪费时间.以后再也不想为此在深夜熬命. 今晚算是和它杠上了,很想弄清楚合并单元格之后行列坐标重新 ...
- 区间DP 洛谷P2858牛奶零食
题目链接 题意:你有n个货物从1-n依次排列,每天可以从两侧选一个出来卖,卖的价格是当天的天数乘该货物的初始价格,问这批货物卖完的最大价格 输入:第一行n,之后是n个货物的初始价值 这道题不能用贪心做 ...
- 『Python进阶』专题汇总
基础知识 Python3内置函数 『Python』库安装 『流畅的Python』第1~4章_数据结构.编码 『Python』基础数据结构常见使用方法 『Python CoolBook』数据结构和算法_ ...