iptables防火墙 filter表控制 扩展匹配 nat表典型应用

一 iptables基本管理

            

    1--熟悉iptables框架       

1)iptables的4个表(区分大小写):

iptables默认有4个表,nat表(地址转换表)、filter表(数据过滤表)、raw表(状态跟踪表)、mangle表(包标记表)。

2)iptables的5个链(区分大小写):

INPUT链(入站规则)

OUTPUT链(出站规则)

FORWARD链(转发规则)

PREROUTING链(路有前规则)

POSTROUTING链(路由后规则)

   2--iptables命令的基本使用方法

       1)iptabels语法格式           

  1. [root@svr5 ~]# iptables [-t 表名] 选项 [链名] [条件] [-j 目标操作]
  2. [root@svr5 ~]# iptables -t filter -I INPUT -p icmp -j REJECT

  3. [root@svr5 ~]# iptables -t filter -I INPUT -p icmp -j ACCEPT
  4. [root@svr5 ~]# iptables -I INPUT -p icmp -j REJECT
  5. //注意事项与规律:
  6. //可以不指定表,默认为filter表
  7. //可以不指定链,默认为对应表的所有链
  8. //除非设置默认策略,否则必须指定匹配条件
  9. //选项/链名/目标操作用大写字母,其余都小写
  10. ########################################################################
  11. //目标操作:
  12. // ACCEPT:允许通过/放行
  13. // DROP:直接丢弃,不给出任何回应
  14. // REJECT:拒绝通过,必要时会给出提示
  15. // LOG:记录日志,然后传给下一条规则



        2)iptables命令的使用案例               

  1. [root@svr5 ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT
  2. //追加规则至filter表中的INPUT链的末尾,允许任何人使用TCP协议访问本机
  3. [root@svr5 ~]# iptables -I INPUT -p udp -j ACCEPT
  4. //插入规则至filter表中的INPUT链的开头,允许任何人使用UDP协议访问本机
  5. [root@svr5 ~]# iptables -I INPUT 2 -p icmp -j ACCEPT
  6. //插入规则至filter表中的INPUT链的第2行,允许任何人使用ICMP协议访问本机

            查看iptables防火墙规则               

  1. [root@svr5 ~]# iptables -nL INPUT                    //仅查看INPUT链的规则
  2. target prot opt source destination
  3. ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0
  4. ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
  5. ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0
  6. [root@svr5 ~]# iptables -L INPUT --line-numbers        //查看规则,显示行号
  7. num target prot opt source destination
  8. 1 ACCEPT udp -- anywhere anywhere
  9. 2 ACCEPT icmp -- anywhere anywhere
  10. 3 ACCEPT tcp -- anywhere anywhere

        删除规则,清空所有规则               

  1. [root@svr5 ~]# iptables -D INPUT 3
  2. //删除filter表中INPUT链的第3条规则
  3. [root@svr5 ~]# iptables -nL INPUT                //查看规则,确认是否删除
  4. [root@svr5 ~]# iptables -F
  5. //清空filter表中所有链的防火墙规则
  6. [root@svr5 ~]# iptables -t nat -F
  7. //清空nat表中所有链的防火墙规则
  8. [root@svr5 ~]# iptables -t mangle -F
  9. //清空mangle表中所有链的防火墙规则
  10. [root@svr5 ~]# iptables -t raw -F
  11. //清空raw表中所有链的防火墙规则

        设置防火墙默认规则               

  1. [root@svr5 ~]# iptables -t filter -P INPUT DROP
  2. [root@svr5 ~]# iptables -nL
  3. Chain INPUT (policy DROP)
  4. … …

二 filter过滤和转发控制

        1--  iptables防火墙规则的条件         

              1)主机型防火墙案例               

  1. [root@svr5 ~]# iptables -I INPUT -p tcp --dport 80 -j REJECT
  2. [root@svr5 ~]# iptables -I INPUT -s 192.168.2.100 -j REJECT
  3. [root@svr5 ~]# iptables -I INPUT -d 192.168.2.5 -p tcp --dport 80 -j REJECT
  4. [root@svr5 ~]# iptables -I INPUT -i eth0 -p tcp --dport 80 -j REJECT
  5. [root@svr5 ~]# iptables -A INPUT -s 192.168.4.120 -j DROP
  6. //丢弃192.168.4.120发给本机的所有数据包
  7. [root@svr5 ~]# iptables -A INPUT -s 10.0.10.0/24 -j DROP
  8. //丢弃10.0.10.0/24网络中所有主机发送给本机的所有数据包
  9. [root@svr5 ~]# iptables -A INPUT -s 114.212.33.12 -p tcp --dport 22-j REJECT
  10. //拒绝114.212.33.12使用tcp协议远程连接本机ssh(22端口)
            

        2--开启Linux的路由转发功能

            1)Linux内核默认支持软路由功能,通过修改内核参数即可开启或关闭路由转发功能。               

  1. [root@proxy ~]# echo 0 > /proc/sys/net/ipv4/ip_forward            //关闭路由转发
  2. [root@proxy ~]# echo 1 > /proc/sys/net/ipv4/ip_forward            //开启路由转发
  3. //注意以上操作仅当前有效,计算机重启后无效
  4. [root@proxy ~]# echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
  5. //修改/etc/sysctl.conf配置文件,可以实现永久有效规则

      client             eth0--192.168.4.100

                            网关--192.168.4.5

      proxy             eth0--192.168.4.5

                            eth1--192.168.2.5

       web1            eth1--192.168.2.100

                            网关--192.168.2.5

    设置proxy主机的防火墙规则,保护防火墙后面的Web服务器            

  1. [root@proxy ~]# iptables -I FORWARD -s 192.168.4.100 -p tcp --dport 80 -j DROP

       

    3--禁ping的相关策略

            1)默认直接禁ping的问题?               

  1. [root@router ~]# iptables -I INPUT -p icmp -j DROP
  2. //设置完上面的规则后,其他主机确实无法ping本机,但本机也无法ping其他主机
  3. //当本机ping其他主机,其他主机回应也是使用icmp,对方的回应被丢弃

            2)禁止其他主机ping本机,允许本机ping其他主机              

  1. [root@router ~]# iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
  2. //仅禁止入站的ping请求,不拒绝入站的ping回应包

            注意:关闭ICMP的类型,可以参考help帮助,参考命令如下:               

  1. [root@router ~]# iptables -p icmp --help

三 防火墙扩展规则

    1--根据MAC地址过滤

            1)根据IP过滤的确定是对方修改IP后,防火墙是失效               

  1. [root@router ~]# iptables -F
  2. [root@router ~]# iptables -I INPUT -s 192.168.4.100 -p tcp --dport 22 -j DROP
  3. //设置规则禁止192.168.4.100使用ssh远程本机

            但是,当client主机修改IP地址后,该规则就会失效,注意因为修改了IP,对client主机的远程连接会断开,需要使用virt-manager开启虚拟机操作:               

  1. [root@client ~]# ifconfig eth0 192.168.4.101
  2. [root@client ~]# ssh 192.168.4.5            

根据MAC地址过滤,可以防止这种情况的发生       

  1. [root@client ~]# ip link show eth0                    //查看client的MAC地址
  2. eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
  3. link/ether 52:54:00:00:00:0b brd ff:ff:ff:ff:ff:ff

  4. [root@router ~]# iptables -A INPUT -p tcp --dport 22\
  5. > -m mac --mac-source 52:54:00:00:00:0b -j DROP
  6. //拒绝52:54:00:00:00:0b这台主机远程本机

    2--基于多端口设置过滤规则

        1)一次需要过滤或放行很多端口时会比较方便               

  1. [root@router ~]# iptables -A INPUT -p tcp \
  2. > -m multiport --dports 20:22,25,80,110,143,16501:16800 -j ACCEPT
  3. //一次性开启20,21,22,25,80,110,143,16501到16800所有的端口

    3--根据IP地址范围设置规则

        1)允许从 192.168.4.10-192.168.4.20 登录               

  1. [root@proxy ~]# iptables -A INPUT -p tcp --dport 22 \
  2. > -m iprange --src-range 192.168.4.10-192.168.4.20 -j ACCEPT
         2)禁止从 192.168.4.0/24 网段其他的主机登录               
  1. [root@proxy ~]# iptables -A INPUT -p tcp --dport 22 -s 192.168.4.0/24 -j DROP

四 配置SNAT实现共享上网

     1--设置防火墙规则,实现IP地址的伪装(SNAT源地址转换)               

1)确保router主机开启了路由转发功能      

  1. [root@proxy ~]# echo 1 > /proc/sys/net/ipv4/ip_forward            //开启路由转发
  2. [root@proxy ~]# echo "net.ipv4.ip_forward"  >> /etc/sysctl.conf

       2)设置防火墙规则,实现SNAT地址转换               

  1. [root@proxy ~]# iptables -t nat -A POSTROUTING \
  2. > -s 192.168.4.0/24 –p tcp --dport 80 -j SNAT --to-source 192.168.2.5

       3)登陆web主机查看日志                  

  1. [root@web1 ~]# tail /var/log/httpd/access_log
  2. .. ..
  3. 192.168.2.5 - - [19/May/2018:16:49:28 +0800] "GET / HTTP/1.1" 200 10 "-" "curl/7.29.0"

      


MASQUERADE     伪装

        iptables -t nat -I POSTROUTING -s 192.168.4.0/24 -j MASQUERADE


filter表:

INPUT            数据包的目的ip地址是防火墙的ip地址,这个数据包是防火墙接收的

OUTPUT        数据包的源地址是防火墙的ip地址,这个数据包是防火墙产生的

FORWARD    数据包的源地址跟目的地址都不是防火墙的ip地址,这个链的规则可以过滤nat表的数据包


nat表:

POSTROUTING

共享上网

service iptables save                    //将临时设置的规则保存到/etc/sysconfig/iptables

systemctl  enable  iptables         //把iptables服务设置成开机自启,后续开机都会调用/etc/sysconfig/iptables文件里的规则

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值