iptables基础配置

iptables [-t TABLE] COMMAND CHAIN(链) Rule(匹配条件和规则) -j TARGET

-t TABLE

nat,mangle,raw,filter,默认为filter

COMMAND

-F:flush,清空规则链

# iptables -t nat -F ==>清空nat表上所有链上的规则

-Z:计数器归零

-P:policy,设定默认策略对filter表来说,默认规则为ACCEPT或DROP

# iptables -t mangle -P FORWARD DROP        ==>设置mangle表的FORWARD链默认策略为DROP

-N:new 自定链,只能被主链调用

# iptables -N httpd        ==>在filter表中定义一条名为httpd的自定义链

-E:rename,重命名自定义连

# iptables -E httpd http        ==>修改filter表中的自定义链httpd的名字为http

-X:delete删除一条自定义的空链,但需0引用

链中的规则:

-A:Append,添加规则(添加到规则的最后一条)

-I:Insert,插入一条新规则(默认插入到规则的第一条)

-D:Delete,删除规则

-R:Replace,替换规则

# iptables -D INPUT 2

查询:

-L:list

-n:以数字格式显示主机地址和服务,IP和端口不反解

-v:详细格式-vv,-vvv

--line-number:显示规则编号

-x:exactly,不要对计数器的计数结果做单位换算,而显示其精确数值

# iptables -L -nvx        ==>查询filter表的规则

匹配条件:

通用匹配

-s 地址:指定报文源IP地址匹配的范围;可以是IP,也可以是网段(格式为172.16.0.0/16或172.16.0.0/255.255.0.0);可使用!取反;

--src, --source

-d 地址:指定报文目标IP地址匹配的范围;

--dst, --destination

-p 协议:指定匹配报文的协议类型,一般有三种tcp, udp和icmp;

-i INTERFACE: 数据报文流入的接口;PREROUTING, INPUT, FORWARD

-o INTERFACE: 数据报文流出的接口;OUTPUT, FORWARD, POSTROUITING

扩展匹配:调用netfilter额外模块实现特殊检查机制,(使用到相关功能,使用iptables -m 哪个模块)

隐式扩展:当使用-p {tcp|udp|icmp}中的一种时,可以直接使用扩展专用选项;

-p tcp [-m tcp]

--sport PORT[-PORT]: 指定源端口

--dport PORT[-PORT]: 指定目标端口

--tcp-flags:要检查标志位列表(用逗号分隔)    必须为1的标志位列表(逗号分隔)

例如:--tcp-filgs syn,ack,rst,fin syn  ==> 等于--syn

all none    ==>全0

all all ==>全1

-p udp [-m udp]

--sport

--dport

-p icmp [-m icmp]

--icmp-type

0:echo-reply,ping响应

8:echo-request,ping请求

在filter表中INPUT和OUTPUT链默认策略为DROP,允许往外ping,外面主机不能ping本地主机

# iptables -I OUTPUT -p icmp --icmp-type 8 -j ACCEPT

# iptables -I INPUT -p icmp --icmp-type 0 -j ACCEPT

放开环回口的流量,就可以ping 127.0.0.1了

# iptables -I INPUT -i lo -j ACCEPT

# iptables -I OUTPUT -o lo -j ACCEPT

显式扩展:必须明确说明使用哪个模块进行扩展,而后才能使用其扩展专用选项;

模块:iptables,netfilter各拥有一部分代码

(1)mutiport:多端口匹配,可用于匹配非连续或连续端口;最多指定15个端口

--source-ports,--sprots port[,port,port]

--destination-ports,--dports

--ports

在filter表中的INPUT和OUTPUT链放行22端口和80端口:

# iptables -I INPUT -d 172.16.2.1 -p tcp -m multiport --dports 22,80 -j ACCEPT

# iptables -I OUTPUT -s 172.16.2.1 -p tcp -m multiport --sports 22,80 -j ACCEPT

(2)iprange: 匹配指定范围内的地址;

匹配一段连续的地址而非整个网络时有用;

专用选项:

[!] --src-range IP[-IP]

[!] --dst-range

在filter表的INPUT和OUTPUT中允许172.16.2.1-172.16.2.100的地址范围访问本地的23端口

# iptables -A INPUT -d 172.16.2.1 -p tcp --dport 23 -m iprange --src-range 172.16.2.1-172.16.2.100 -j ACCEPT

# iptables -A OUTPUT -s 172.16.2.1 -p tcp --sport 23 -m iprange --dst-range 172.16.2.1-172.16.2.100 -j ACCEPT

(3)string: 字符串匹配,能够检测报文应用层中的字符串

字符匹配检查高效算法

kmp, bm

专用选项:

--algo {kmp|bm}

--string "STRING"

--hex-string "HEX_STRING": HEX_STRING为编码成16进制格式的字串;

在filter表中的OUTPUT链中有admin字符的就丢弃数据包

# iptables -I OUTPUT -m string --algo kmp --string "admin" -j DROP

(4)time: 基于时间做访问控制

专用选项:

--datestart YYYY[-MM][-DD[Thh[:mm[:ss]]]]

--datestop

--timestart hh:mm[:ss]

--timestop hh:mm[:ss]

--weekdays day[,day]        Mon, Tue,Thu,Fri

在filter表的INPUT链上定义周二到周日的10:00-18:00拒绝到本机80端口的流量

# iptables -I INPUT -d 172.16.2.1 -p tcp --dport 80 -m time --timestart 10:00 --timestop 18:00 ! --weekdays Mon -j REJECT

(5)connlimit: 连接数限制,对每IP所能够发起并发连接数做限制

专用选项:

[!] --connlimit-above [n]:有n个连接

# iptables -A INPUT -d 172.16.100.7 -p tcp --dport 22 -m connlimit --connlimit-above 2 -j DROP

(6)limit: 速率限制

专用选项:

--limit n[/second|/minute|/hour|/day]        ==>按照固定的速率发通行证

--limit-burst n        ==>空闲时用的令牌桶,如在空闲时一次发放n个令牌

限制ping包的数量,每分钟20个,空闲时一次响应5个,于实测有点差别

# iptables -R INPUT 1 -p icmp --icmp-type 8 -m limit --limit 20/minute --limit-burst 5 -j ACCEPT        ==>修改filter表INPUT链中的第一条规则,允许ping请求

# iptables -R OUTPUT 1 -p icmp --icmp-type 0 -j ACCEPT

(7)state: 状态检查,连接追踪,不管tcp或udp,并发请求很大不能启用

专用选项:

--state

连接追踪中的状态:

NEW: 新建立一个会话

ESTABLISHED:已建立的连接(数据包触发ESTABLISHED状态的条件是Netfilter连接跟踪子系统在一个连接的两个方向上都己看到了数据包(如在一个数据己经经过交换的TCP连接中的确认数据包))

RELATED 有:关联关系的连接

INVALID:无法识别的连接(一个突然到达的TCP FIN数据包(即它不属于任何TCP会话)就将匹配INVALID状

/proc/sys/net/nf_conntrack_max        ==>调整连接追踪功能所能容纳的连接的最大数据

/proc/net/nf_conntrack        ==>当前追踪的所有连接

/proc/sys/net/netfilter目录        ==>不同协议或连接类型追踪时的属性

放行被动模式的ft

/lib/modules/2.6.32-504.el6.x86_64/kernel/net/netfilter/nf_conntrack        ==>查看是否有这个模块

# rpm -ql iptables | less

# modprobe nf_conntrack_ftp        ==>临时有效

# vim /etc/sysconfig/iptables-config        ==>修改IPTABLES_MODULES="nf_conntrack_ftp"永久有效

# lsmod | less

# iptables -A INPUT -d 172.16.2.1 -p tcp --dport 21 -m state --state RELATED -j ACCEPT

# iptables -R OUTPUT 1 -s 172.16.2.1 -m state --state ESTABLISHED,RELATED -j ACCEPT

NAT:Network Address Translation

# vim /etc/sysctl.confg        ==>net.ipv4.ip_forward改为1开启IP转发

# sysctl -p        ==>立即生效

初衷为了安全隐藏真实的IP地址,后来为了节约IP的一个方案

SNAT:POSTROUTING,OUTPUT

--to-source SIP        ==>转换成哪个源地址,适用于固定IP

MASQUERADE        ==>自动会挑一个合适的,用于动态拨号

# iptables -t nat -R POSTROUTING 1 -s 192.168.1.0/24 -p tcp --dport 80  -j SNAT --to-source 172.16.2.2        ==>C3访问C1时,源地址变为172.16.2.2;SNAT应用于Clinet->Server

DNAT:PREROUTING

--to-destination

# iptables -t nat -A PREROUTING -s 172.16.0.0/16 -p tcp --dport 80  -j DNAT --to-destination 192.168.1.5         ==>访问C2的web服务时转发到C3上,DNAT应用于Clinet->Server

PNAT:端口地址转换

FULL NAT:全地址转换

时间: 2024-10-12 09:12:38

iptables基础配置的相关文章

Varnish基础配置实现动静分离web站点

由于一个web站点的程序的访问具有局部性特征:时间上的局部性:一个数据被访问过之后,可能很快会被再次访问到:空间局部性:一个数据被访问时,其周边的数据也有可能被访问到;varnish可将这部分数据缓存下来.缓存的数据存在被访问较频繁的数据可以称其为热区:缓存同样存在局部性:时效性:如果缓存空间耗尽:则采用LRU,最近最少使用算法:将过期的缓存清理掉 varnish的基本工作原理: Varnish通过类似于HTPP反向代理的方式将可以用来缓存的数据缓存下来直接响应给客户端的缓存数据,如果缓存中没有

iptables基础概念

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

Redhat6.5基础配置指南

Redhat6.5基础配置指南 本文针对鄙人在工作中常用系统配置加以说明,通常公司用于生产和测试的服务器基本上都不能连接外网,需要针对刚刚安装好的系统做一系列的常用配置. 一.常用基础系统配置 1.关闭Selinux 1) 使用root用户,输入命令 vi /etc/selinux/config,修改/etc/selinux/config文件,永久性关闭Selinux 2) 修改文件内容,将SELINUX的参数值更改为disabled,点击i键,进入INSERT模式. 3) 点击ESC键,输入 

Linux防火墙iptables基础

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

Iptables基础整理

Iptables基础框架 Iptables基于内核netfilter安全框架运行,主要有过滤数据包和NAT地址转换功能. Iptables基本表链结构 filter INPUT FORWARD OUTPUT     nat     OUTPUT PREROUTING POSTROUTING mangle INPUT FORWARD OUTPUT PREROUTING POSTROUTING raw     OUTPUT PREROUTING   Iptables主要通过规则链的方式进行数据包的过

使用Java管理Azure(1):基础配置

Azure针对Java开发人员提供了非常丰富的依赖库,开发工具,和相关插件,让你通过Java对Azure进行服务管理和开发,本文第一步先介绍如何快速的配置Java开发工具,主要针对目前比较流行的Eclipse和Intellij IDEA工具. 本文主要是基础配置的介绍,主要分为以下三个部分: 准备Azure的测试账号 准备Eclipse的Azure开发环境 准备Intellij IDEA的Azure开发环境 ? 准备Azure测试账号 首先你需要有Azure中国的测试账号.你可以通过Azure.

DDNS基础配置

一.简介 DDNS全名Dynamic Domain Name Server,动态域名解析服务.是由DNS和DHCP服务器组合来提供服务,简单来说就是通过DHCP服务器分配的IP地址可以动态更新到DNS服务上,免除了手动指定的麻烦. 二.平台介绍 软件包都用了centos自带源安装的 centos6.4 x64 dhcp-4.1.1-31.P1.el6.x86_64 bind-9.8.2-0.10.rc1.el6.x86_64 三.服务器端配置过程 1.DNS服务器配置 我在之前的文章中已经写过如

iptables防火墙配置详解

iptables简介 iptables是基于内核的防火墙,功能非常强大,iptables内置了filter,nat和mangle三张表. filter负责过滤数据包,包括的规则链有,input,output和forward: nat则涉及到网络地址转换,包括的规则链有,prerouting,postrouting和output: mangle表则主要应用在修改数据包内容上,用来做流量整形的,默认的规则链有:INPUT,OUTPUT,NAT,POSTROUTING,PREROUTING: inpu

          DNS的基础配置

一.DNS简介 1.DNS:Domain Name System(域名系统),是互联网上IP和域名相互解析的分布式层级结构的数据库.DNS的出现能够使用户更好的更加方便的访问互联网,不用记IP地址来访问互联网,可以通过人类更容易记住域名来访问互联网. 2.DNS是一种C/S架构的服务器,客户机用于一个名字对应的地址,而服务器是为客户机提供查询的,查询由两种机制:迭代查询和递归查询 迭代查询:一般是DNS服务器与DNS服务器之间的查询方式 递归查询:一般是客户机与服务器之间的查询方式 3.DNS是