
- 版 本
- Red Hat Linux 7.1
- 有效状态
- ESTABLISHED 、 INVALID
- 组 件
- netfilter 和 iptables
- 中文名
- iptables
- 优 点
- 配置有状态的防火墙
- 外文名
- iptables
-
iptables
2017-06-23 22:59:51iptablesiptables文件位置
/etc/sysconfig/iptables
指令
如果你想配置属于自己的防火墙,那就清除现在filter的所有规则
> iptables -F 清除预设表filter中的所有规则链的规则 > iptables -X 清除预设表filter中使用者自定链中的规则 > iptables -L -n > service iptables start restart stop status
列出INPUT 链所有的规则
> iptables -L INPUT --line-numbers
屏蔽单个IP的命令是
> iptables -I INPUT -s 123.45.6.7 -j DROP
封整个段即从123.0.0.1到123.255.255.254的命令
> iptables -I INPUT -s 123.0.0.0/8 -j DROP
封IP段即从123.45.0.1到123.45.255.254的命令
> iptables -I INPUT -s 124.45.0.0/16 -j DROP
封IP段即从123.45.6.1到123.45.6.254的命令是
> iptables -I INPUT -s 123.45.6.0/24 -j DROP
指令I是insert指令 但是该指令会insert在正确位置并不像A指令看你自己的排序位置,因此用屏蔽。因为必须在一开始就要加载屏蔽IP,所以必须使用I命令加载,然后注意执行/etc/rc.d/init.d/iptables save进行保存后重启服务即可
删除指定行规则
直接解除指定ip的黑名单
> iptables -D INPUT -s 121.40.167.3 -j DROP
利用行号删除
列出所有规则(行号) > iptables -nL --line-number 进行删除(删除多个ip,行号用空格隔开) > iptables -D INPUT 4 167
如果想针对某IP进行单独开放端口可以如下配置
如果我需要对内网某机器单独开放mysql端口,应该如下配置:
在tcp协议中,禁止所有的ip访问本机的1521端口。
> iptables -I INPUT -p tcp --dport 1521 -j DROP --dport为目标端口,当数据从外部进入服务器为目标端口 --sport为数据源端口,数据从服务器出去则为数据源端口 -s是指定源地址,-d是指定目标地址。 > iptables -A INPUT -s 192.168.2.6 -p tcp -m tcp --dport 3306 -j ACCEPT > iptables -A OUTPUT -s 192.168.2.6 -p tcp -m tcp --sport 3306 -j ACCEPT
将内容保存到 /etc/sysconfig/iptables
> service iptables save
重启iptables
> service iptables restart centos 7: > systemctl restart iptables.service
查看iptables状态
> systemctl status iptables.service
-
Iptables
2019-03-21 18:49:36iptables介绍 linux的包过滤功能,即linux防火墙,它由netfilter 和 iptables 两个组件组成。 netfilter 组件也称为内核空间,是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则...iptables介绍
linux的包过滤功能,即linux防火墙,它由netfilter 和 iptables 两个组件组成。
netfilter 组件也称为内核空间,是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
iptables 组件是一种工具,也称为用户空间,它使插入、修改和除去信息包过滤表中的规则变得容易。iptables基础
我们知道iptables是按照规则来办事的,规则其实就是网络管理员预定义的条件,规则一般的定义为"如果数据包头符合这样的条件,就这样处理这个数据包"。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作就是添加、修改和删除这些规则。当客户端访问服务器的web服务时,客户端发送报文到网卡,而tcp/ip协议栈是属于内核的一部分,所以,客户端的信息会通过内核的TCP协议传输到用户空间中的web服务中,而此时,客户端报文的目标终点为web服务所监听的套接字(IP:Port)上,当web服务需要响应客户端请求时,web服务发出的响应报文的目标终点则为客户端,这个时候,web服务所监听的IP与端口反而变成了原点,我们说过,netfilter才是真正的防火墙,它是内核的一部分,所以,如果我们想要防火墙能够达到"防火"的目的,则需要在内核中设置关卡,所有进出的报文都要通过这些关卡,经过检查后,符合放行条件的才能放行,符合阻拦条件的则需要被阻止,于是,就出现了input关卡和output关卡,而这些关卡在iptables中不被称为"关卡",而被称为"链"。
其实我们上面描述的场景并不完善,因为客户端发来的报文访问的目标地址可能并不是本机,而是其他服务器,当本机的内核支持IP_FORWARD时,我们可以将报文转发给其他服务器,所以,这个时候,我们就会提到iptables中的其他"关卡",也就是其他"链",他们就是 “路由前”、“转发”、“路由后”,他们的英文名是
PREROUTING、FORWARD、POSTROUTING也就是说,当我们启用了防火墙功能时,报文需要经过如下关卡,也就是说,根据实际情况的不同,报文经过"链"可能不同。如果报文需要转发,那么报文则不会经过input链发往用户空间,而是直接在内核空间中经过forward链和postrouting链转发出去的。
所以,根据上图,我们能够想象出某些常用场景中,报文的流向:
到本机某进程的报文:PREROUTING --> INPUT
由本机转发的报文:PREROUTING --> FORWARD --> POSTROUTING
由本机的某进程发出报文(通常为响应报文):OUTPUT --> POSTROUTING表的概念
我们把具有相同功能的规则的集合叫做"表",所以说,不同功能的规则,我们可以放置在不同的表中进行管理,而iptables已经为我们定义了5种表filter表:负责过滤功能,防火墙,也就是由filter表来决定一个数据包是否继续发往它的目的地址或者被丢弃;内核模块:iptables_filter
nat表:network address translation,网络地址转换功能;内核模块:iptable_nat
mangle表:拆解报文,做出修改,并重新封装 的功能,用于修改IP头部信息,如TTL(time to live);iptable_mangle
raw表:关闭nat表上启用的连接追踪机制;iptable_raw
security :提供在数据包中加入SElinux特性的功能。
最常用的有三张表:filter,nat,mangle
数据经过防火墙的流程
链的作用
prerouting
数据包进入路由表之前的操作在此进行input
通过路由表后发现目的地址为本机,则匹配该链中规则forward
通过路由表后发现目的地址非本机,则匹配该链中规则output
由本机产生的,向外转发的匹配该链中的规则postrouting
发送到网卡接口之前,进行该链中规则的匹配命令格式
iptables [ -t 表名] 命令选项 [链名] [条件匹配] [-j 处理动作或跳转]
-t 接表名,如果不加-t 默认就是 –t filter命令选项
-L 列出一个或所有链的规则
-v 显示详细信息,包括每条规则的匹配句数量和匹配字节数
-x 在v的基础上,禁止自动换算单位(K,M)
-n 只显示ip地址和端口号,不显示域名和服务名称
-I 插入到防火墙第一条生效
-A 添加链是添加到最后一条
-D 删除指定链中的某一条规则,按规则序号或内容确定要删除的规则
-F 清空指定链中的所有规则,默认清空表中所有链的内容
-X 删除指定表中用户自定义的规则链条件匹配
-i 入站请求接口
-o 出站请求接口
-s 入站源地址
-d 目标地址
-p 指定规则协议,如tcp, udp,icmp等,可以使用all来指定所有协议
–dport 目的端口,数据包的目的(dport)地址是80,就是要访问我本地的80端口
–sport 来源端口 数据包的来源端口是(sport)80,就是对方的数据包是80端口发送过来的。处理动作
ACCEPT:允许数据包通过。
DROP:直接丢弃数据包,不给任何回应信息,这时候客户端会感觉自己的请求泥牛入海了,过了超时时间才会有反应。
REJECT:拒绝数据包通过,必要时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的信息。
SNAT:源地址转换,解决内网用户用同一个公网地址上网的问题。
MASQUERADE:是SNAT的一种特殊形式,适用于动态的、临时会变的ip上。
DNAT:目标地址转换。
REDIRECT:在本机做端口映射。
LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则,也就是说除了记录以外不对数据包做任何其他操作,仍然让下一条规则去匹配
一般不使用REJECT(拒绝)行为.REJECT会带来安全隐患操作样例:
1 查看iptables规则
iptables -L -n2 清除默认规则
iptables –F 清除所有规则
iptables –X 删除用户自定义的链
iptables –Z 链的计数器清零
默认情况下,我们的清除规则实际是对filter表的操作,如果是nat表,需要指定表
iptables –t nat –F3 保存修改
[root@es salt]# /etc/init.d/iptables save4 禁止ssh 默认22端口
iptables -A INPUT -p tcp --dport 22 -j DROP5 禁止多端口
iptables -A INPUT -p tcp --dport 80:3306 -j DROP
[root@es ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp – 0.0.0.0/0 0.0.0.0/0 tcp dpts:80:3306
列表形式禁止多端口
iptables -A INPUT -p tcp -m multiport --dport 50,51,60,8888 -j DROP
注:-m multiport 列表禁止多端口的参数
[root@es ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp – 0.0.0.0/0 0.0.0.0/0 tcp dpts:80:3306
DROP tcp – 0.0.0.0/0 0.0.0.0/0 multiport dports 50,51,60,88886 删除规则
方法1
iptables -D INPUT -p tcp --dport 22 -j DROP
方法2
[root@es ~]# iptables -L -n --line-number
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 DROP tcp – 0.0.0.0/0 0.0.0.0/0 tcp dpts:80:3306
2 DROP tcp – 0.0.0.0/0 0.0.0.0/0 multiport dports 50,51,60,8888iptables -D INPUT 1
[root@es ~]# iptables -L -n --line-number
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 DROP tcp – 0.0.0.0/0 0.0.0.0/0 multiport dports 50,51,60,88887 禁止10.0.0.0/24网段连入
iptables -A INPUT -i eth0 -s 10.0.0.0/24 -j DROP
注:-i 入站请求接口
-o 出站请求接口
-s 入站源地址
-d 目标地址
[root@es ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all – 10.0.0.0/24 0.0.0.0/08 除了192.168.56.1其他IP都不能通过eth0连接
iptables -I INPUT -i eth0 -s ! 192.168.56.1 -j DROP
注:!和IP之间有空格 有提示 不用理会
[root@es ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all – !192.168.56.1 0.0.0.0/09 禁 192.168.56.7 ping 本机
iptables -I INPUT -p icmp --icmp-type 8 -s 192.168.56.7 -j DROP10 对外的WEB服务器,要允许http服务通过,并且不限制IP
iptables -I INPUT -p tcp --dport 80 -j ACCEPT11 允许FTP服务
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
注:FTP服务有些特殊 说以要允许ftp服务通过防火墙需要上面两步
ESTABLISHED 已经建立连接的数据包允许通过
RELATED 发出去的数据包允许通过12 端口转发
iptables -t nat -A PREROUTING -d 192.168.52.5 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.16.1.17:80
注: 访问目标地址是192.168.52.5 端口80的访问都转给172.16.1.17:80 -
IPTABLES
2010-03-17 09:57:00IPTABLES Iptables 基础,规则、链、表规则:就是网络管理员预定义的条件,规则一般定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别定义了源地址、...IPTABLESIptables 基础,规则、链、表规则:就是网络管理员预定义的条件,规则一般定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别定义了源地址、目的地址、传输协议(如TCP,UDP,ICMP)和服务类型(HTTP,FTP,SMTP)等,当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept),拒绝(reject),和丢弃(drop)等。配置防火墙主要工作就是添加,修改和删除这些规则。链:链(CHAINS)是数据包传播的途径,每一条链其实就是众多规则中的一个检查清单,每一条链可以有一条或数条规则。当一个数据包到达一条链时,iptables就从链中第一条规则开始检查,看该数据包是否满足规则定义的条件。如果满足,系统就会根据这条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables将会按照默认策略来处理数据包。表:表(tables)提供了特定的功能,iptables内建了3个表,即filter表、nat表、和mangle表。分别用于实现包过滤,网络地址转换和包重构的功能1. Filter表Filter表主要是用于过滤数据包,是iptables的默认表,包含了INPUT链(用于处理进入的数据包),FORWORD链(处理转发的数据包),OUTPUT链(处理本地生成的数据包)。在filter表中只允许对数据包进行接受、丢弃操作,而无法对数据包进行修改。2. Nat表Nat表主要用于网络地址转换,可以实现一对一,一对多,多对多等NAT工作,包含了PREROUTING链(修改即将到来的数据包),OUTPUT链(修改路由之前本地生成的数据包)和POSTROUTING(修改即将出去的数据包)。3. Mangle表Mangle表主要用于对指定包进行修改,如TTL,TOS等。用的很少。IPTABLES传输数据包的过程1、 当一个数据包进入网卡时,他首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转发出去。2、 如果数据包是进入本机的,就会向下到INPUT链。数据包到达INPUT链后,任何进程都会接受。本机上运行的程序也可以发出数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。3、 如果数据包是要转发出去的,且内核允许,数据包就会经过FORWARD链,然后到POSTROUTING链输出。用户可以在各个链定义规则。Iptables命令格式:iptables [-t 表] –命令 匹配 动作1、 表选项:filter表,nat表和mangle表2、 命令选项,用于指定执行方式,包括插入规则、删除规则、添加规则等。-P或者—policy 定义默认策略-L或者--list 查看iptables规则列表-A或者--append 在规则列表最后面添加1条规则-I或者--insert 在指定位置插入1条规则-D或者--delete 从规则列表中删除1条规则-R或者--replace 替换规则列表中的某条规则-F或者--flush 删除表中所有规则-Z或者--zero 将表中数据包计数器和流量计数器清零3、匹配选项,匹配指定数据包与规则匹配所具有的特征,包括源地址、目的地址、传输协议和端口号-i或者—in-interface <网络接口名称> 指定数据包从哪个网络接口进入,如ppp0,eth0-o或者—out-interface <网络接口名称> 指定数据包从哪个网络接口流出-p或者—proto <协议类型> 指定数据包匹配的协议tcp,udp,icmp等-s或者—source <源地址或子网> 指定数据包匹配的源地址--sport <源端口号> 指定数据包匹配的源端口号-d或者—destination <目的地址或者子网>--dport <目标端口号>4、动作选项,指定当数据包与规则匹配时,应该做什么操作,如接口,丢弃等ACCEPT 接受数据包DROP 丢弃数据包REDIRECT 将数据包重新转向到本机或另外一台主机的某个端口SNAT 源地址转换DNAT 目的地址转换MASQUERADE IP伪装,即NAT技术LOG 日至功能,将符合规则的数据包的相关信息记录在日至中Iptables的使用1、 定义默认策略iptables [-t 表名] <-P> <链名> <动作>例如:iptables –P INPUT ACCEPT 定义filter表INPUT链默认策略接受所有数据包iptables –t nat –P OUTPUT DROP 将nat表OUTPUT链默认策率丢弃所有数据包技巧,定义默认规则拒绝所有iptables –P INPUT DROPiptables –P FORWARD DROPiptables –P OUTPUT ACCEPT2、 查看iptables 规则iptables [-t 表名] <-L> [链名]例如查看nat表所有链的规则列表Iptables –t nat –L3、 增加、插入、删除和替换规则Iptables [-t 表名] <-A 或I或 D或 R> 链名 [规则编号] [-i或 o 网卡名称 ] [-p 协议类型] [-s 源地址或子网] [--sport 源端口号] [-d目的IP地址或子网] [--dport 目的端口号] <-j 动作>例如为filter表INPUT链添加1条规则iptables –t filter –A INPUT –s 192.168.1.200 –j DROP例如在filter表INPUT链规则列表中第2条规则前插入1条规则iptables –t filter –I INPUT 2 –s 192.168.2.0/24 –p tcp –dport 80 –j DROP例如删除filter表INPUT链规则列表中第3条规则iptables –t filter –D INPUT 3使用iptables实现NAT首先要开启内核路由功能:echo “1”> /proc/sys/net/ipv4/ip_forward然后实现IP伪装,在nat表中的POSTROUTING链加入一条规则,这条规则是将所有由ppp0口送出的包伪装。iptables –t nat –A POSTROUTING –o PPP0 –j MASQUERADE查看规则虽然可以用iptables -L 来查看,但是信息并不完全,所以还是用cat /etc/sysconfig/iptables 来查看注意:每次添加或者删除规则后,要service iptables save 来保存,否则iptables服务重新启动后,规则会丢失 -
linux下用iptables做本机端口转发方法
2015-01-15 11:06:02下面介绍一下iptables的配置 一 :从一台机到另一台机端口转发 启用网卡转发功能 #echo 1 > /proc/sys/net/ipv4/ip_forward 举例:从192.168.0.132:21521(新端口)访问192.168.0.211:1521端口 a.同一端口转发 ...本文根据众多互联网博客内容整理后形成,引用内容的版权归原始作者所有,仅限于学习研究使用
拓扑图
下来一个一般情况下公司内网和外网的拓扑图
一、概要
1、防火墙分类
①包过滤防火墙(pack filtering)在网络层对数据包进行选择过滤,采用访问控制列表(Access control table-ACL)检查数据流的源地址,目的地址,源和目的端口,IP等信息。
②代理服务器型防火墙2、iptables基础
①规则(rules):网络管理员预定义的条件
②链(chains): 是数据包传播的路径
③表(tables):内置3个表filter表,nat表,mangle表分别用于实现包过滤网络地址转换和包重构的功能
④filter表是系统默认的,INPUT表(进入的包),FORWORD(转发的包),OUTPUT(处理本地生成的包),filter表只能对包进行授受和丢弃的操作。
⑤nat表(网络地址转换),PREROUTING(修改即将到来的数据包),OUTPUT(修改在路由之前本地生成的数据包),POSTROUTING(修改即将出去的数据包)
⑥mangle表,PREROUTING,OUTPUT,FORWORD,POSTROUTING,INPUT3、其它
iptables是按照顺序读取规则
防火墙规则的配置建议
Ⅰ 规则力求简单
Ⅱ 规则的顺序很重要
Ⅲ 尽量优化规则
Ⅳ 做好笔记二、配置
1、iptables命令格式
iptables [-t 表] -命令 匹配 操作 (大小写敏感)
动作选项
ACCEPT 接收数据包
DROP 丢弃数据包
REDIRECT 将数据包重新转向到本机或另一台主机的某一个端口,通常功能实现透明代理或对外开放内网的某些服务
SNAT 源地址转换
DNAT 目的地址转换
MASQUERADE IP伪装
LOG 日志功能2、定义规则
①先拒绝所有的数据包,然后再允许需要的数据包
iptalbes -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
②查看nat表所有链的规则列表
iptables -t nat -L
③增加,插入,删除和替换规则
iptables [-t 表名] <-A|I|D|R> 链名 [规则编号] [-i|o 网卡名称] [-p 协议类型] [-s 源ip|源子网] [--sport 源端口号] [-d 目的IP|目标子网] [--dport 目标端口号] [-j 动作]
参数:-A 增加
-I 插入
-D 删除
-R 替换
三、例子
①iptables -t filter -A INPUT -s 192.168.1.5 -i eth0 -j DROP
禁止IP为192.168.1.5的主机从eth0访问本机②iptables -t filter -I INPUT 2 -s 192.168.5.0/24 -p tcp --dport 80 -j DROP
禁止子网192.168.5.0访问web服务③iptables -t filter -I INPUT 2 -s 192.168.7.9 -p tcp --dport ftp -j DROP
禁止IP为192.168.7.9访问FTP服务
④iptables -t filter -L INPUT
查看filter表中INPUT链的规则
⑤iptables -t nat -F
删除nat表中的所有规则
⑥iptables -I FORWARD -d wwww.playboy.com -j DROP
禁止访问www.playboy.com网站
⑦iptables -I FORWARD -s 192.168.5.23 -j DROP
禁止192.168.5.23上网下面详细介绍一下iptables的配置
一 :从一台机到另一台机端口转发
启用网卡转发功能
#echo 1 > /proc/sys/net/ipv4/ip_forward
举例:从192.168.0.132:21521(新端口)访问192.168.0.211:1521端口
a.同一端口转发(192.168.0.132上开通1521端口访问 iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT)
iptables -t nat -I PREROUTING -p tcp --dport 1521 -j DNAT --to 192.168.0.211
iptables -t nat -I POSTROUTING -p tcp --dport 1521 -j MASQUERADE
b.不同端口转发(192.168.0.132上开通21521端口访问 iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21521 -j ACCEPT)
iptables -t nat -A PREROUTING -p tcp -m tcp --dport21521 -j DNAT --to-destination192.168.0.211:1521
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -d 192.168.0.211 -p tcp -m tcp --dport 1521 -j SNAT --to-source 192.168.0.132
以上两条等价配置(更简单[指定网卡]):
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 31521 -j DNAT --to 192.168.0.211:1521
iptables -t nat -A POSTROUTING -j MASQUERADE
保存iptables
#service iptables save
#service iptables restart
二 用iptables做本机端口转发
代码如下:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
估计适当增加其它的参数也可以做不同IP的端口转发。
如果需要本机也可以访问,则需要配置OUTPUT链(********特别注意:本机访问外网的端口会转发到本地,导致访不到外网,如访问yown.com,实际上是访问到本地,建议不做80端口的转发或者指定目的 -d localhost):
iptables -t nat -A OUTPUT -d localhost -p tcp --dport 80 -j REDIRECT --to-ports 8080
原因:
外网访问需要经过PREROUTING链,但是localhost不经过该链,因此需要用OUTPUT。例子1:
概述:
有一些核心MYSQL服务器位于核心机房的内网段,经常需要去连接这些服务器,因无法直接通过外网访问,给管理造成了不便。
思路:虽然解决此问题的方法及思路有很多,但当下想使用IPTABLES的端口重定向功能解决此问题,比较简单易用,而且扩展性也比较好,依次类推,可以运用到其他的端口转发方面的应用。
网络环境:
公网服务器 :eth0:公网IP eth1:内网IP - 192.168.1.1
MYSQL服务器:eth1:内网IP - 192.168.1.2
实现方法:通过访问公网IP的63306端口来实现到内网MYSQL服务器的3306端口的访问
在公网服务器上:
配置脚本:
iptables -t nat -A PREROUTING -p tcp --dport 63306 -j DNAT --to-destination 192.168.1.2:3306
iptables -t nat -A POSTROUTING -d 192.168.1.2 -p tcp --dport 3306 -j SNAT --to 192.168.1.1允许服务器的IP转发功能:
echo 1 > /proc/sys/net/ipv4/ip_forward
使用方法:
mysql -h 公网IP -p 63306 -uroot -p例子2:
由于业务需要,服务器越来越多,内网服务器无外网环境管理甚是不便,所以折腾了一下外网到内网的端口转发以达到轻松管理的目的,贴一下心得。
S1:
eth0 10.0.0.1
eth1 x.x.x.x
S2:
eth0 10.0.0.2
S1 8082端口转发到内网机器22端口
iptables规则配置如下:
iptables -t nat -A PREROUTING -d x.x.x.x -p tcp --dport 8082 -j DNAT --to-destination 10.0.0.2:22
iptables -t nat -A POSTROUTING -d 10.0.0.2 -p tcp --dport 22 -j SNAT --to-source x.x.x.x说明:
iptables -t nat -A PREROUTING -d "对外公网ip" -p tcp --dport "对外端口" -j DNAT --to "内部实际提供服务的ip":"实际提供服务的端口"
iptables -t nat -A POSTROUTING -d "内部实际提供服务的ip"-p tcp --dport "实际提供服务的端口" -j SNAT --to-source "运行iptables机器的内网ip"另外,网上看到一篇很好的文章,这里转发一下:https://icewing.cc/post/25-iptables-policy.html
25个最常用的iptables策略
1、清空存在的策略
当你开始创建新的策略,你可能想清除所有的默认策略,和存在的策略,可以这么做:
iptables -F 或者iptables –flush
2、设置默认策略
默认链策略是ACCEPT,改变所有的链策略为DROP:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
3、阻止一个指定的ip
BLOCK_THIS_IP=“x.x.x.x"
iptables -A INPUT -s ”$BLOCK_THIS_IP“ -j DROP
iptables -A INPUT -i eth0 -s "$BLOCK_THIS_IP" -j DROP
iptables -A INPUT -i eth0 -p tcp -s "$BLOCK_THIS_IP" -j DROP
4、允许SSH
允许所有通过eth0接口使用ssh协议连接本机:
iptables -A INPUT -i eth0 -p tcp -dport 22 -m state -state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -sport 22 -m state -state ESTABLISHED -j ACCEPT
5、允许某个网段通过ssh连接
iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 –dport 22 -m state -state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -sport 22 -m state –state ESTABLISHED -j ACCEPT
6、允许SSH连接指定的网段
iptables -A OUTPUT -o eth0 -p tcp -d 192.168.100.0/24 -dport 22 -m state -state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -sport 22 -m state -state ESTABLISHED -j ACCEPT
7、允许http和https
允许所有进来的web流量:http协议80端口,https协议是443端口
iptables -A INPUT -i eth0 -p tcp -dport 80 -m state -state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -sport 80 -m state -state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -dport 443 -m state -state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -sport 443 -m state -state ESTABLISHED -j ACCEPT
8、多个策略联合一起
允许ssh,http,https:
iptables -A INPUT -i eth0 -p tcp -m multiport -dports 22,80,443 -m state -state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m multiport -sports 22,80,443 -m state -state ESTABLISHED -j ACCEPT
9、允许SSH连接其他主机
iptables -A OUTPUT -o eth0 -p tcp -dport 22 -m state -state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -sport 22 -m state -state ESTABLISHED -j ACCEPT
10、允许https出去
iptables -A OUTPUT -o eth0 -p tcp -dport 443 -m state -state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -sport 443 -m state -state ESTABLISHED -j ACCEPT
11、对web请求做负载均衡(每三个包,均衡到指定服务器,需要扩展iptables)
iptables -A PREROUTING -i eth0 -p tcp –dport 443 -m state -state NEW -m nth -counter 0 -every 3 -packet 0 -j DNAT -to-destination 192.168.1.101:443
iptables -A PREROUTING -i eth0 -p tcp –dport 443 -m state -state NEW -m nth -counter 0 -every 3 -packet 1 -j DNAT -to-destination 192.168.1.102:443
iptables -A PREROUTING -i eth0 -p tcp –dport 443 -m state -state NEW -m nth -counter 0 -every 3 -packet 2 -j DNAT -to-destination 192.168.1.103:443
12、允许ping
iptables -A INPUT -p icmp -icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp -icmp-type echo-reply -j ACCEPT
13、允许ping远程
iptables -A OUTPUT -p icmp -icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp -icmp-type echo-reply -j ACCEPT
14、允许本地回环
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
15、允许内网访问外部网络
这个例子eth1 连接外部网络,eth0连接内部网络
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
16、允许DNS出去
iptables -A OUTPUT -p udp -o eth0 -dport 53 -j ACCEPT
iptables -A INPUT -p udp -i eth0 -sport 53 -j ACCEPT
17、允许NIS连接
NIS端口是动态的,当ypbind启动时它分配端口。
首先运行 rpcinfo -p 显示得到端口号,这个例子使用端口850,853。
iptables -A INPUT -p tcp -dport 111 -j ACCEPT
iptables -A INPUT -p udp -dport 111 -j ACCEPT
iptables -A INPUT -p tcp -dport 853 -j ACCEPT
iptables -A INPUT -p udp -dport 853 -j ACCEPT
iptables -A INPUT -p tcp -dport 850 -j ACCEPT
iptables -A INPUT -p udp -dport 850 -j ACCEPT
上面的例子当ypbind重新启动时将失效,有2种解决方案:
(1) 分配nis服务静态ip
(2) 使用精妙的脚本
18、允许指定网段连接Rsync
iptables -A INPUT -i eth0 -p tcp -s 192.168.101.0/24 -dport 873 -m state -state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -sport 873 -m state -state ESTABLISHED -j ACCEPT
19、允许mysql从指定的网段连接
iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 -dport 3306 -m state -state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -sport 3306 -m state -state ESTABLISHED -j ACCEPT
20、允许sendmail或者postfix
iptables -A INPUT -i eth0 -p tcp -dport 25 -m state -state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -sport 25 -m state -state ESTABLISHED -j ACCEPT
21、允许IMAP和IMAPS
iptables -A INPUT -i eth0 -p tcp -dport 143 -m state -state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -sport 143 -m state -state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -dport 993 -m state -state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -sport 993 -m state -state ESTABLISHED -j ACCEPT
22、允许POP3和POP3S
iptables -A INPUT -i eth0 -p tcp -dport 110 -m state -state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -sport 110 -m state -state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -dport 995 -m state -state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -sport 995 -m state -state ESTABLISHED -j ACCEPT
23、预防DDOS攻击
iptables -A INPUT -p tcp -dport 80 -m limit -limit 25/minute -limit-burst 100 -j ACCEPT
-m :使用iptables扩展
–limit 25/minute : 限制分钟连接请求数
–limit-burst:触发阀值,一次涌入数据包数量
24、端口转发
来自442的都转到22端口
iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 -dport 422 -j DNAT -to 192.168.102.37:22
你还必须明确允许442端口
iptables -A INPUT -i eth0 -p tcp -dport 422 -m state -state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -sport 422 -m state -state ESTABLISHED -j ACCEPT
25、包丢弃日志
你也许想查看所有丢弃包的日志。首先创建一个新链叫 LOGGING
iptables -N LOGGING
确保所有的连接跳到LOGGING
iptables -A INPUT -j LOGGING
记录这些包通过自定义名字 "log-prefix"
iptables -A LOGGING -m limit -limit 2/min -j LOG -log-prefix "IPTables Packet Dropped:" -log-level 7
最后丢弃这些数据包
iptables -A LOGGING -j DROP
参考
https://icewing.cc/post/25-iptables-policy.html
https://www.jianshu.com/p/fd0e5ce233a7
请我喝咖啡
如果觉得文章写得不错,能对你有帮助,可以扫描我的微信二维码请我喝咖啡哦~~哈哈~~
-
iptables 执行清除命令 iptables -F 要非常小心的
2018-07-16 14:04:09使用 /sbin/iptables -F 要小心,搞不好,你就马上同服务器断开连接了 以下是来自 http://wiki.ubuntu.org.cn/IptablesHowTo 上的说明 可以通过/sbin/iptables -F清除所有规则来暂时停止防火墙: (警告:这只... -
Centos中iptables和firewall防火墙开启、关闭、查看状态、基本设置等
2017-07-05 21:48:23iptables防火墙 1、基本操作 # 查看防火墙状态 service iptables status # 停止防火墙 service iptables stop # 启动防火墙 service iptables start # 重启防火墙 service iptables restart # 永久关闭... -
【Iptables】iptables目录
2019-09-06 11:25:38【Iptables】01Iptables概念 【Iptables】02 Iptables实际操作之规则查询 【Iptables】03 Iptables规则管理 【Iptables】04 Iptables匹配条件总结 【Iptables】05 Iptables常用的匹配扩展模块 【Iptables】06 ... -
iptables工作原理及iptables命令行使用介绍
2019-02-07 20:22:38iptables详解iptables原理技能 iptables原理 技能 最需要掌握的技能就是查看iptables规则来进行trouble shoot了。掌握iptables的根本在于掌握数据包在四表五链的流转过程。 查看iptables规则最实用的命令是: ... -
iptables 端口转发
2018-08-22 17:32:24而 iptables 的端口转发则是在内核进行。 1、将本地的端口转发到本机端口 将本机的 7777 端口转发到 6666 端口。 iptables -t nat -A PREROUTING -p tcp --dport 7777 -j REDIRECT --to-port 6666 ... -
iptables配置
2016-08-23 07:08:42iptables -F iptables -X iptables -Z iptables -L -n iptables -A INPUT -p tcp --dport 22 -s 10.0.8.0/24 -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -o lo -j ACCEPT iptables -A O -
iptables详解及docker的iptables规则
2020-10-31 20:14:32iptables详解及docker的iptables规则iptables处理流程iptables命令ipset的使用ftp服务规则SNAT与DNATfirewall-cmd命令docker的iptables规则docker网络类型数据包处理流程 iptables 处理流程 iptables命令 ipset的... -
iptables详解
2019-08-09 14:24:51大神级别,用浅显易懂的语言,描述复杂的理论,举例生动形象,并且图文并茂,值得一看,下面是iptables系列的文章: iptables详解(1):iptables概念 iptables详解(2):iptables实际操作之规则查询 iptables详解(3):... -
iptables基础知识详解
2018-09-13 11:41:24iptables防火墙可以用于创建过滤(filter)与NAT规则。所有Linux发行版都能使用iptables,因此理解如何配置 iptables将会帮助你更有效地管理Linux防火墙。如果你是第一次接触iptables,你会觉得它很复杂,但是一旦你... -
iptables 详解
2018-06-14 09:34:32iptables 与 firewalld iptables 基础 3.1 链的概念 3.2 表的概念 3.3 链与表的关系 3.4 数据通过的流程 iptables 语法 iptables nat表的应用 1. 防火墙简介 防火墙是一种应用于网络上的... -
iptables-restore、iptables-save
2018-09-06 00:16:49iptables的配置文件 /etc/sysconfig/iptables iptables-save > /etc/sysconfig/iptables 。iptables-save是将规则追加到一个文件,主要是配合iptables-restore命令 测试操作: iptables -I INPUT -p tcp -... -
服务器安全之iptables iptables
2016-09-21 11:56:39服务器安全之iptables 感谢老男孩老师为我们讲解iptables 优化之路 iptables防火墙简介 Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的安全自由的**基于包过滤的...
-
NFS 实现高可用(DRBD + heartbeat)
-
使用 Linux 平台充当 Router 路由器
-
JavaWeb之JavaBean
-
PTA 基础编程题目集 7-38 数列求和-加强版 (20 分)
-
阿里集团八年容器化演进之路
-
龙芯生态应用开发基础:C语言精要
-
关于绝热演化的一般模型
-
元素周期表-three.js实战详解
-
构建低成本高密度Wi-Fi网络实验床
-
HelloWorld
-
虚幻4引擎基础
-
响应式编程入门与实战(Reactor、WebFlux、R2DBC)
-
spark大数据分析与实战
-
使用dockerfile-maven-plugin将java项目打包并推送到阿里云私服
-
美图大数据平台架构实践
-
【黑苹果EFI】联想昭阳E40-80的自制EFI,Opencore 0.6.6
-
计算机网络复习(第一天)-2
-
QT实现基于TCP连接的聊天室
-
HARMONY
-
Galera 高可用 MySQL 集群(PXC v5.7+Hapro)