分享

iptables使用范例详解

 黎明霜冷 2017-01-11

      示例;放行来自于172.16.0.0/16网络的主机对本机ssh服务的请求;下面这个示例是一对出现的;

      172.16.34.30允许所有来自172.16.0.0/16网段发送ssh服务的请求

      iptables -A INPUT -s 172.16.0.0/16 -d 172.16.34.30 -p tcp --dport 22 -j ACCEPT

      172.16.34.30主机的ssh服务,只允许响应给172.16.0.0/16这个网段

      iptables -A OUPOUT -s 172.16.34.30 -d 172.16.0.0/16 -p tcp --sport 22 -j ACCEPT

      设置默认策略,拒绝所有未知的服务,仅放行规则所匹配的服务

      iptables -P INPUT DROP

      iptables -P OUTPUT DROP

      输入这两条件命令我的主机并没有中断,是因为上面事先写好了两条允许本机的ssh服务规则,所没有中断,但是本机的其它服务,别的主机是访问不了的。

      放行本机的80端口给172.16.0.0/16的所有地址访问 (这时明确了所有地址,因此在写规则时源地址省略不写,直接写上目标地址即可)

      iptables -A INPUT -d 172.16.34.30 -p tcp --dport 80 -j ACCEPT只写这一条的话,访问的报文可以进来,但是无法响应给客户,因此还有写一条响兴给客户端主机的规则

      iptables -A OUTPUT -s 172.16.34.30 -p tcp --sport 80 -j ACCEPT此时的源地址是172.16.34.30是向客户端主机响应

      -p icmp

      --icmp-type

      8: ping请求 0:ping响应

      例子:放行ping其它主机

      iptables -A OUTPUT -s 172.16.100.7 -p icmp --icmp-type 8 -j ACCEPT

      iptables -A INPUT -d 172.16.100.7 -p icmp --icmp-type 0 -j ACCEPT

      放行其它主机ping本机

      iptables -A INPUT -d 172.16.100.1 -P icmp --icmp-type 8 -j ACCEPT

      iptables -A OUTPUT -s 172.16.100.7 -p icmp --icmp-type 0 -j ACCEPT

      -p udp

      --dport

      --sport

      放行本机的tftp服务:(还有两条tcp的没有写)

      iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.7 -p udp --dport 69 -j ACCEPT

      iptables -A OUTPUT -s 172.16.100.7 -d 172.16.0.0/16 -p udp --sport 69 -j ACCEPT

      放行本机dns服务:(DNS总共有八条规则,还有tcp的四条没有写)

      iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.7 -p udp --dport 53 -j ACCEPT

      iptables -A OUTPUT -s 172.16.100.7 -d 172.16.0.0/16 -p udp --sport 53 -j ACCEPT

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

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

      显示扩展

      规则命令;

      iptables -D INPUT 2 表示删除input链上的第二条规则 记住如果删除了第二条而原来的的第三条会自动变成第二条

      iptables -I 插入规则

      iptables -I INPUT 2 -i lo -j ACCEPT 表示将规则插入到第二行

      iptables -R INPUT 1 -s 172.16.0.0/16 -d 172.16.34.30 -i eth0 -p tcp --dport 22 -j ACCEPT 完整替换第一条规则

      明确规定172.16网段连接目标地址的22号服务必须从eth0网卡进来

      iptables -S INPUT 显示指定的链的规则

      显示扩展;必须明确指定的扩展模块;

      -m 扩展模块名称 --专用选项1 --专用选项2
       multiport;多端口匹配,一次指定多个(15个以内)离散端口
      --source-ports, 源端口
      --destinatil-ports 目标端口
      --ports
      示例;开放本机的22,80两个端口;(由于这里一次性开放多个端口所有这里得使用-m选项)
      iptables -I INPUT -d 172.16.34.30 -p tcp -m multiport --dports 22,80 -j ACCEPT 这里只是input让用户可能发送请求而目标主机 没有得到响应,所有写上一条output出站规则,已此来响应给客户端口。(写上这两条规则前面写的那两条单独写的规则则可以删除(这条规则用了 '-I' 选项插入规则 ),这样也达到了规则优化的效果)

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

      iptables -A INPUT -i eth0 -m multiport -p tcp --dports 53,113,135,137,139,445 -j DROP 本机通过这个eth0网卡进来的端口都被拒绝
      iptables -A INPUT -i eth0 -m multiport -p udp --dports 53,113,135,137,139,445 -j DROP
      iptables -A INPUT -i eth0 -p udp --dport 1026 -j DROPiptables -A INPUT -i eth0 -m multiport -p tcp --dports 3389,4899 -j DROP

      示例;允许本机的telnet服务给指定的主机ip
      iptables -A INPUT -d 172.16.34.30 -p tcp --dport 23 -m iprange --src-range 172.16.34.10-172.16.34.20 -j ACCEPT
      iptables -A OUTPUT -s 172.16.34.30 -p tcp --sport 23 -m iprange --dst-range 172.16.34.10-172.16.34.20 -j ACCEPT
      time;匹配指定时间范围 结束时间大于起始时间 结束日期于于起始日期
      --datestart 起始日期 YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
      --datestop 结束日期 YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
      --timestart hh:mm[:ss] 起始时间
      --timestop hh:mm[:ss] 结束时间
      --weekdays day [Mon, Tue, Wed, Thu, Fri, Sat, Sun ]也可以是1-7 以周为日期格式做规则
      示例;限制本机901端口只允许在工作时间内(周一至周五)的08点到18点才可访问;
      iptables -A INPUT -d 172.16.34.30 -p tcp --dport 901 -m time --weekdays Mon,Tue,Wed,Thu,Fri --timestart 08:00:00 -timestop 18:00:00 -j ACCEPT
      由于做了限制客户的进站访问规则,因此客户只有规定的工作日才能访问,因此下面这条规则就可以简写。
      (服务器可以随时放行用户的请求,但是客户不是随时可以访问的。)
      iptables -A OUTPUT -s 172.16.34.30 -p tcp --sport 901 -j ACCEPT

      string;对字符串匹配
      --algo {bm|kmp}; 字符匹配查找时使用的算法
      --string 'STRING'; 要查找的字符串
      示例;如果客户端口访问的网页当中有规则里定义的字符串则不显示给客户
      安装httpd服务,新建两个首页文件,写上不一样的内容,其中一个首页文件里的内容须有你需要匹配的字符串如“hello'.测试这个web服务的两个首页在没有写规则前都可以正常访问。对其中一个web网页做字符串匹配。

      1

      iptables -I OUTPUT -s 172.16.34.30-p tcp --sport 80-m string --algo kmp --string 'hello'-f DROP

      写完这个匹配字符串的规则后再次访问时显示是无法打开被匹配到的网页

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多