iptables入门到实战

iptables 语法格式:

表及链的操作选项:

  -N :新增链

  -I  : 插入规则

  -A :添加规则

  -D :删除规则

  -R :修改某条规则

  -X :删除自定义的链(前提为该链被引用次数为0及规则为空)

  -F :清除所有规则

  -Z:清零 (清除所有链的计数值)

  -P :定义默认规则(ACCEPT,DROP,REJECT..)

  -L :列出所有规则

    -v:列出详细信息

    -n:以数字方式显示信息

    常用:iptables -vnL

  -E:改变链名称

规则匹配相关选项:

  -s   :源地址(例:192.168.2.0/16)

  -d   :目标地址

  --dport  :目标端口(例:137:140为137~140所有端口,可单独指定某个端口)

  --sport   :源端口

  -p :指定protocol (例 tcp,udp ,..)

  -i :入方向网卡接口

  -o :出方向网卡接口

实战:

1.使用iptables放行icmp协议,允许自己ping对端,及允许对端ping 自己

1 iptables -I OUTPUT -s 192.168.2.243 -d 192.168.2.244 -p icmp --icmp-type 8/0 -j ACCEPT   (实现自己访问对端)
2 iptables -I INPUT -s 192.168.2.244 -d 192.168.2.243 -p icmp --icmp-type 0/0 -j ACCEPT
3
4
5 iptables -I INPUT -s 192.168.2.244 -d 192.168.2.243 -p icmp --icmp-type 8/0 -j ACCEPT  (实现对端访问本机)
6 iptables -I OUTPUT -s 192.168.2.243 -d 192.168.2.244 -p icmp --icmp-type 0/0 -j ACCEPT

2.使用iptables放行DNS流量

 1 1.实现允许本机(DNS服务器)访问外部根DNS服务器作递归查询
 2 iptables -I OUTPUT -s 192.168.2.244 -p tcp --dport 53 -j ACCEPT
 3 iptables -I OUTPUT -s 192.168.2.244 -p udp --dport 53 -j ACCEPT
 4
 5 iptables -I INPUT -d 192.168.2.244 -p tcp --sport 53 -j ACCEPT
 6 iptables -I INPUT -d 192.168.2.244 -p udp --sport 53 -j ACCEPT
 7
 8
 9
10
11 2.实现客户机访问本机作域名解析
12 iptables -I INPUT -s 192.168.15.86 -d 192.168.2.244 -p tcp --dport 53 -j ACCEPT
13 iptables -I INPUT -s 192.168.15.86 -d 192.168.2.244 -p udp --dport 53 -j ACCEPT
14
15 iptables -I OUTPUT -s 192.168.2.244 -d 192.168.15.86 -p tcp --sport 53 -j ACCEPT
16 iptables -I OUTPUT -s 192.168.2.244 -d 192.168.15.86 -p udp --sport 53 -j ACCEPT

3. 放行samba 流量

1 iptables -I INPUT -s 192.168.2.244 -d 192.168.2.243 -p tcp -m multiport --dport 139,445 -j ACCEPT
2 iptables -I INPUT -s 192.168.2.244 -d 192.168.2.243 -p udp -m multiport --dport 137,138 -j ACCEPT
3 4
5 iptables -I OUTPUT -s 192.168.2.243 -d 192.168.2.244 -p tcp -m multiport --sport 139,445 -j ACCEPT
6 iptables -I OUTPUT -s 192.168.2.243 -d 192.168.2.244 -p udp -m multiport --sport 137,138 -j ACCEPT

扩展匹配 选项:

  -m

    multiport    (匹配多个离散端口)

      --dports 22,23,139,445 ...

      --sports ...

      示例: 同时开放多个端口

      

1 iptables -I INPUT -s 192.168.2.2 -d 192.168.2.3 -p tcp -m multiport --dport 22,23,80,445 -j ACCEPT
2 iptables -I OUTPUT -s 192.168.2.3 -d 192.168.2.2 -p tcp -m multiport --sport 22,23,80,445 -j ACCEPT

    iprange   (匹配地址范围)

      --src-range

      --dst-range   

      示例:icmp同时放行多个客户机访问

1 iptables -I INPUT -d 192.168.20.243 -p icmp --icmp-type 8/0 -m iprange --src-range 192.168.20.240-192.168.20.245 -j ACCEPT
2 iptables -I OUTPUT -s 192.168.20.243 -p icmp --icmp-type 0/0 -m iprange --dst-range 192.168.20.240-192.168.20.245 -j ACCEPT

    time  (匹配放行时间)

      --timestart

      --timestop

      [!] --weekdays day,[day,...]

      [!] --monthdays day,[day,...] 

      示例:匹配指定时间段内访问telnet-server

 

1 iptables -R INPUT 1 -s 192.168.20.244 -d 192.168.20.243 -p tcp --dport 23 -m time --timestart 10:00 --timestop 14:00 --kerneltz -j ACCEPT
2 iptables -R OUTPUT 1 -s 192.168.20.243 -d 192.168.20.244 -p tcp --sport 23 -m time --timestart 10:10 --timestop 14:00 --kerneltz -j ACCEPT
3
4 注:--kerneltz 为使用内核时区 (时区错误会导致指定时间内无法连接)
5 timedatectl set-timezone Asia/Shanghai   (修改指定时区为Shanghai
1 iptables -R OUTPUT 1 -s 192.168.20.243 -d 192.168.20.244 -p tcp --sport 23 -m time --timestart 10:10 --timestop 14:00 --kerneltz --weekdays 1,2,3,4,5 -j ACCEPT
2 iptables -R INPUT 1 -s 192.168.20.244 -d 192.168.20.243 -p tcp --dport 23 -m time --timestart 10:00 --timestop 14:00 --kerneltz --weekdays 1,2,3,4,5 -j ACCEPT
3
4 --weekdays 可指定工作日连接,1为周一

    string    (过滤字符串)

      --algo  bm   (指定http加密方式一般为bm)

      --string pattern  

  

1 iptables -I OUTPUT -s 192.168.20.243 -p tcp --sport 80 -m string --algo bm --string "iptables" -j REJECT
2 http page 中出现 iptables 字样时  REJECT 

    connlimit      (限制连接次数)

      --connlimit-upto    (小于多少次允许,根据防火墙默认策略制定)

      --connlimit-above   (在几次之上就拒绝)

    

1 iptables -I INPUT -s 192.168.15.86 -p tcp --syn -m connlimit --connlimit-above 5 -j REJECT
2 syn=1出现5次以上拒绝该地址连接(syn=1为TCP第一次握手状态)

    limit   (限制传输速率)

      --limit rate[/second /minute /hour /day ]  (速率/时间)

      --limit-burst number   (令牌桶大小)

      

1 iptables -R INPUT 1 -d 192.168.20.243 -p icmp --icmp-type 8/0 -m limit --limit-burst=5 --limit=10/minute -j ACCEPT
2 指定icmp协议允许每分钟10次请求,每分钟最多同时连续5次

    state   (追踪报文状态,根据状态定制策略)

        需提前装载模块:

          nf_conntrack

          nf_conntrack_ipv4

          nf_conntrack_ftp    (用于追踪FTP协议数据,装载后可使用 RELATED 状态)

      --state (NEW,ESTABLISHED,RELATED,INVALID,UNTRACKED)

      示例:

  

1 iptables -I OUTPUT -s 192.168.20.243 -m state --state ESTABLISHED -j ACCEPT
2 出站报文状态为ESTABLISHED状态时放行,一般客户端初次请求报文状态为NEW,服务端回应时报文状态为ESTABLISHED

-j  target   (匹配条件后执行动作)

    ACCEPT    (允许)

    DROP   (丢弃)

    REJECT   (拒绝)

    LOG   (记录日志)

       --log-level    (指定日志等级)

       --log-prefix    (添加日志信息前缀)

      默认日志文件为: /var/log/message

  

1 iptables -A INPUT -d 192.168.20.243 -p tcp --dport 22 -j LOG --log-prefix access-ssh 

     

NAT

  当主机作为对外防火墙提供服务时,可用NAT对原,目的地址作转换;(类似与路由器NAT功能)

  示例:

  

1  iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 172.16.30.254  (转换源地址为 172.16.30.254
2
3 iptables -t nat -A PREROUTING -d 192.168.20.243 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.2:8080
4 (端口非必须指定,默认为目标端口

        

    

    

原文地址:https://www.cnblogs.com/qingfengguoke/p/12387269.html

时间: 2024-12-18 16:24:58

iptables入门到实战的相关文章

Netfilter/Iptables入门

Netfilter/Iptables入门 Linux的内核是由www.kernel.org这个组织负责开发维护,下面我们要讨论的Netfilter/iptables是www.netfilter.org组织为Linux开发的防火墙软件.由于Linux是非常模块化的,很多功能都是以模块加载扩充系统功能,Netfilter同样采用这种方式存在于Linux中.如果你理解了Linux模块加载也就能够理解Netfilter的模块加载方式.大家在 /lib/modules/kernel_version/ker

Docker入门与实战系列:热点问题

Docker入门与实战--<Docker ABC>电子书 https://github.com/gudaoxuri/Docker_ABC 11. 热点问题 11.1. 容器如何使用静态IP 默认情况下Docker容器的IP是动态分配的,要使用静态IP时我们会思考一下: 为什么需要静态IP?如果是为了两个容器间通信可以 使用--link 指定-h来指定hostname并指定-dns到宿主机 让容器开放上层服务 如果这样都满足不了您的要求那么可以参考 http://huataihuang.gith

Extjs5.0从入门到实战开发信息管理系统(Extjs基础、Extjs5新特性、Spring、Spring mvc、Mybatis)视频教程

Extjs5.0从入门到实战开发信息管理系统(Extjs基础.Extjs5新特性.Spring.Spring mvc.Mybatis)视频教程下载   联系QQ:1026270010 Extjs作为一款优秀的JS前端开发框架以其良好的架构.丰富的UI组件库.完善的文档和社区支持等诸多优点拥有广泛的市场应用空间,开发人员无需过多的关注HTML.CSS甚至各种常用JS算法,只需把精力放在业务逻辑上,利用各种组件的相互组合调用便可轻松而高效的开发出系统的前端页面. Extjs5在之前版本的基础上又推出

《Docker技术入门与实战》pdf

下载地址:网盘下载 内容简介  · · · · · · [编辑推荐] <Docker技术入门与实战>是中国首部docker著作,一线Docker先驱实战经验结晶,来自IBM和新浪等多位技术专家联袂推荐! <Docker技术入门与实战>结合企业生产环境,深入浅出地剖析 Docker 的核心概念.应用技巧.实现原理以及生态环境,为解决各类问题提供了有价值的参考. [内容简介] 在云计算时代,开发者将应用转移到云上已经解决了硬件管理的问题,然而软件配置和管理相关的问题依然存在.Docke

iptables入门到进阶

Iptables入门到进阶 一.前言 Firewall(防火墙): 隔离工具:Packets Filter Firewall(包过滤防火墙):工作于主机或网络的边缘,对经由的报文根据预先定义的规则(匹配条件)进行检测,对于能够被规则匹配到的报文实行某预定义的处理机制的一套组件: 防火墙类型 从防火墙的实现形式来分的话,防火墙可以分为软件防火墙和硬件防火墙 硬件防火墙:在硬件级别实现部分功能的防火墙:另一个部分功能基于软件实现: 软件防火墙:应用软件处理逻辑运行于通用硬件平台之上的防火墙: 从防火

CMake快速入门教程-实战

http://www.ibm.com/developerworks/cn/linux/l-cn-cmake/ http://blog.csdn.net/dbzhang800/article/details/6314073 http://www.cnblogs.com/coderfenghc/archive/2013/01/20/2846621.html http://blog.sina.com.cn/s/blog_4aa4593d0100q3bt.html http://hahack.com/c

docker-9 supervisord 参考docker从入门到实战

参考docker从入门到实战 使用 Supervisor 来管理进程 Docker 容器在启动的时候开启单个进程,比如,一个 ssh 或者 apache 的 daemon 服务.但我们经常需要在一个机器上开启多个服务,这可以有很多方法,最简单的就是把多个启动命令放到一个启动脚本里面,启动的时候直接启动这个脚本,另外就是安装进程管理工具. 本小节将使用进程管理工具 supervisor 来管理容器中的多个进程.使用 Supervisor 可以更好的控制.管理.重启我们希望运行的进程.在这里我们演示

从入门到实战,Netty多线程篇案例集锦

从入门到实战,Netty多线程篇案例集锦 原创 2015-09-10 李林峰 InfoQ Netty案例集锦系列文章介绍 1|Netty的特点 Netty入门比较简单,主要原因有如下几点: Netty的API封装比较简单,将复杂的网络通信通过BootStrap等工具类做了二次封装,用户使用起来比较简单: Netty源码自带的Demo比较多,通过Demo可以很快入门: Netty社区资料.相关学习书籍也比较多,学习资料比较丰富. 但是很多入门之后的Netty学习者遇到了很多困惑,例如不知道在实际项

赞一个 kindle电子书有最新的计算机图书可买了【Docker技术入门与实战】

最近对docker这个比较感兴趣,找一个比较完整的书籍看看,在z.cn上找到了电子书,jd dangdang看来要加油啊 Docker技术入门与实战 [Kindle电子书] ~ 杨保华 戴王剑 曹亚仑 (作者) http://www.amazon.cn/Docker技术入门与实战-杨保华-戴王剑-曹亚仑/dp/B00SMJ0VFA/ref=sr_1_2?s=digital-text&ie=UTF8&qid=1435217727&sr=1-2&keywords=docker