--------------本文是自己工作上的笔记总结,适合的可以直接拿去用,不适合的,适当修改即可!---------------

iptbales默认ACCEPT策略,也称通策略,这种情况下可以做拦截策略,还有种叫堵策略,然后开放通的规则。(我偏向堵策略,自己需要开放什么在开,以下例子也是在此基础上的)

iptables 一些参数名称:

四表五链:fifter表、NAT表、Mangle表、Raw表  。  INPUT链、OUTPUT链、FORWARD链、PREROUTING链、POSTROUTING链

  INPUT链 – 处理来自外部的数据。
  OUTPUT链 – 处理向外发送的数据。
  FORWARD链 – 将数据转发到本机的其他网卡设备上。 

  PREROUTING链 – 处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。(NAT表需要开启linux路由 net.ipv4.ip_forward = 1)
  POSTROUTING链 – 处理即将离开本机的数据包。它会转换数据包中的源IP地址(source ip address),通常用于SNAT(source NAT)。
  OUTPUT链 – 处理本机产生的数据包。

iptables 新建时情况所有记录

iptables -F
iptables -X
iptables -F -t mangle
iptables -t mangle -X
iptables -F -t nat
iptables -t nat -X

开放22 SSH端口

iptables -A INPUT -p tcp -p tcp --dport 22 -j ACCEPT  (允许外部访问本机的22端口)

iptables -A OUTPUT   -p tcp --sport 22 -j ACCEPT (有进就有出,IP包是来回的)

例如一条比较完整的SSH端口限制:(意思为:从eth0进来的SSH访问,除了公司192.168.16.0/24不限制,其他的地址都限制为每个ip最多5个SSH连接,且只为NEW和ESTABLISHED的连接,其他的都拒接)

iptables -A INPUT -i eth0 ! -s 192.168.16.0/24 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -m  connlimit --connlimit-above 5  -j REJECT

----

iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT (允许本机去ssh其他的服务器的22端口)

iptables -A INPUT -p tcp --sport 22 -j ACCEPT

设置默认规则为DROP

iptables -P INPUT DROP

iptables -P OUTPUT DROP

此时占时不要service iptables save,先用客户端ssh连接一下服务器,看看可以连接吗?如果不行最起码还可以重启,这样规则没保存重启是不生效,如果保存了发现不通就麻烦一些了!

当发现可以SSH的时候,我们就可以继续下面的步骤了!

打开回环地址,为了本地访问,如本地访问数据库之类

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

打开服务器的ping功能,我觉得有必要打开,可以检测服务器状况

iptables -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT  (此2条规则是允许本机ping外网的ip,不包括域名,其中8是icmp的请求,0是icmp的响应)

iptables -A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

----

iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT (此2条规则是允许外部ping本机)

iptables -A OUTPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT

允许内部ping外部的域名

iptables -A INPUT -p udp  --sport 53 -j ACCEPT

iptables -A OUTPUT -p udp  --dport 53 -j ACCEPT

允许外部访问本机的80服务,且只允许新连接的和已经连接的会话(状态检测)

iptables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

允许外部访问我本地多个端口 如 8080,8081,8082,且只允许是新连接,已经连接的和已经连接的在延伸出新连接的会话

iptables -A INPUT -p tcp -m multiport --dport 8080,8081,8082  -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT -p tcp -m multiport --sport 8080,8081,8082 -m state --state ESTABLISHED -j ACCEPT

允许外部访问本机81端口,且本机初始只允许有200个连接,超过了此数量,然后每秒新增加2个连接,如果访问超过此限制则拒接 (此方式可以限制一些攻击)

iptables -A INPUT -p tcp --dport 81 -m limit --limit 2/s --limit-burst 200 -j ACCEPT

iptables -A OUTPUT -p tcp --sport 81 -j ACCEPT

限制除用户192.168.16.99以外的IP连接数为50 (相当于可以给自己开特权^_^)

iptables -A FORWARD -p tcp -s !192.168.16.99 -m connlimit --connlimit-above 50 -j REJECT

TCP匹配扩展协议--tcp-flags

iptables -A INPUT -p tcp --tcp-flags SYN,FIN,ACK,RST SYN (表示 SYN,FIN,ACK,RST的标识都检查,但只匹配SYN标识)

iptables -A INPUT -p tcp --syn (如果这是为了匹配SYN标识位也可以写成这样,选项—syn相当于”--tcp-flags SYN,RST,ACK SYN”的简写。)

实例:

iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP (检查所以的标识位,匹配到FIN URG PSH的丢弃)

iptables -A INPUT  -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP (检查所以的标识位,匹配到SYN RST ACK FIN URG的丢弃)

iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP (检查所以的标识位,没标志位的丢弃)

iptables -A INPUT  -p tcp --tcp-flags SYN,RST SYN,RST -j DROP(检查 SYN,RST标识位,匹配到 SYN,RST的丢弃,SYN是建立连接,RST是重置连接,所以这样的包是有问题的)

iptables -A INPUT  -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP (检查 SYN,FIN标识位,匹配到 SYN,FIN的丢弃,SYN是建立连接,FIN是结束连接,所以这样的包是有问题的)

iptables -A INPUT  -p tcp --tcp-flags ALL SYN,FIN,RST -j DROP

iptables -A INPUT  -p tcp --tcp-flags ALL SYN,FIN,PSH -j DROP

iptables -A INPUT  -p tcp --tcp-flags ALL SYN,FIN,RST,PSH -j DROP

SNAT 和 DNAT

SNAT:

假如我要让公司192.168.10.0/24段的地址都通过linux服务器的eth0 :123.123.123.123上网

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 123.123.123.123

DNAT

GATEWAY eth0:123.123.123.123 eth1:192.168.10.1 内网主机:192.168.10.10

要使访问123.123.123.123的80 自动跳到192.168.10.10的80端口上

iptables -t nat -A PREROUTING -p tcp -d 123.123.123.123 --dport 80 -j DNAT --to-destination 192.168.10.10:80

iptables -t nat -A POSTROUTING -p tcp -d 192.168.10.10 --dport 80 -j SNAT --to-source 192.168.10.1 (内网之间进行nat才加上)

第一条:将外部数据包的目的地址改到内网主机的指定端口
第二条:转发前,将外部源地址改为内网本地地址

浅谈iptables 入站 出站以及NAT实例的更多相关文章

  1. 浅谈iptables防SYN Flood攻击和CC攻击

    ------------------------本文为自己实践所总结,概念性的东西不全,这里粗劣提下而已,网上很多,本文主要说下目前较流行的syn洪水攻击和cc攻击------------------ ...

  2. 浅谈iptables与firewalld防火墙

    iptables基于包过滤的防火墙工具 ,Linux 内核集成的 IP 信息包过滤系统,对流入和流出服务器的数据包进行精细管理 规则是存储在专用信息包过滤表中 防火墙按照规则做出判断 而netfilt ...

  3. 浅谈CORS

    浅谈CORS CORS全称"跨站资源共享"(Cross-Origin Resource Sharing),它允许浏览器克服浏览器同源策略向跨域服务器发出请求. 同源策略 概念 说到 ...

  4. 【VS开发】【DSP开发】浅谈Linux PCI设备驱动(二)

    我们在 浅谈Linux PCI设备驱动(一)中(以下简称 浅谈(一) )介绍了PCI的配置寄存器组,而Linux PCI初始化就是使用了这些寄存器来进行的.后面我们会举个例子来说明Linux PCI设 ...

  5. django 浅谈CSRF(Cross-site request forgery)跨站请求伪造

    浅谈CSRF(Cross-site request forgery)跨站请求伪造(写的非常好) 本文目录 一 CSRF是什么 二 CSRF攻击原理 三 CSRF攻击防范 回到目录 一 CSRF是什么 ...

  6. 浅谈CSRF(Cross-site request forgery)跨站请求伪造

    目录 浅谈CSRF(Cross-site request forgery)跨站请求伪造 CSRF是什么 CSRF攻击原理 CSRF攻击防范 浅谈CSRF(Cross-site request forg ...

  7. Windows防火墙出站、入站相关知识总结

    出站默认是全部允许,只禁止相关出站规则指定的条目:入站默认是全部禁止,只允许相关入站规则指定的条目. 入站规则其实没什么好说的,直接添加规则允许某IP或端口访问,或允许某程序全部访问,就行了. 要控制 ...

  8. L10 数据入站、转发、出站流程

    二 写出防火墙规则链之间的顺序也就是入站数据流向.转发数据流向.出站数据流向的过程 入站:PREROUTING→INPUT 数据包到达防火墙,由prerouting处理,判断是否修改地址 路由选择:判 ...

  9. windows中的出站和入站规则

    一.规则介绍 规则生效的前提是防火墙处于开启状态. windows系统默认的规则:默认阻止入站连接,默认允许出站连接.也就是说,凡是入站连接,任何程序和端口都要在防火墙上配置入站规则,否则都会被禁止. ...

随机推荐

  1. nginx配置反向代理或跳转出现400问题处理记录

    午休完上班后,同事说测试站点访问接口出现400 Bad Request  Request Header Or Cookie Too Large提示,心想还好是测试服务器出现问题,影响不大,不过也赶紧上 ...

  2. Win10 IIS本地部署网站运行时图片和样式不正常?

    后期会在博客首发更新:http://dnt.dkill.net 异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 启用关闭win功 ...

  3. css3中perspective

    perspective 属性定义 3D 元素距视图的距离,以像素计.该属性允许改变 3D 元素查看 3D 元素的视图.当为元素定义 perspective 属性时,其子元素会获得透视效果,而不是元素本 ...

  4. 如何进行python性能分析?

    在分析python代码性能瓶颈,但又不想修改源代码的时候,ipython shell以及第三方库提供了很多扩展工具,可以不用在代码里面加上统计性能的装饰器,也能很方便直观的分析代码性能.下面以我自己实 ...

  5. 【原创经验分享】WCF之消息队列

    最近都在鼓捣这个WCF,因为看到说WCF比WebService功能要强大许多,另外也看了一些公司的招聘信息,貌似一些中.高级的程序员招聘,都有提及到WCF这一块,所以,自己也关心关心一下,虽然目前工作 ...

  6. java 利用ManagementFactory获取jvm,os的一些信息--转

    原文地址:http://blog.csdn.net/dream_broken/article/details/49759043 想了解下某个Java项目的运行时jvm的情况,可以使用一些监控工具,比如 ...

  7. CommandPattern

    /** * 命令模式 * @author TMAC-J * 将调用者和接受者分离 * 可以将一组命令组合在一起,适合很多命令的时候 */ public class CommandPattern { i ...

  8. windows下mongodb配置

    打开cmd(windows键+r输入cmd)命令行,进入D:\mongodb\bin目录(如图先输入d:进入d盘然后输入cd d:\mongodb\bin), 输入如下的命令启动mongodb服务: ...

  9. 跨域问题,前端主动向后台发送cookie

    跨域是什么? 从一个域名的网页访问另一个域名的资源,就会出现跨域.只要协议.端口.域名有一个不同就会出现跨域 例如: 1.协议不同  http://www.baidu.com:80 和 https:/ ...

  10. 【腾讯优测干货分享】如何降低App的待机内存(三)——探索内存增长的原因

    本文来自于腾讯优测公众号(wxutest),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/8BiKIt3frq9Yv9KV5FXlGw 1.3新问题的进一步挖 ...