iptables防火墙架构:4表5链

 4表:filter数据过滤表 nat地址转化表 raw状态跟踪表(消耗大量资源和时间!) mangle包标记表(可以修改数据包)

 5链:INPUT链(入站规则)OUTPUT链(出站规则)FORWARD链(转发规则)PREROUTING链(路有前规则) POSTROUTING链(路由后规则)

 

语法格式:iptables  [-t 表名]  选项  [链名]  [条件]  [-j 目标操作]

iptables  -t  filter  -I  INPUT -p icmp  -j  REJECT

#禁止所有主机ping自己

目标操作:ACCEPT:允许通过/放行

DROP:直接丢弃,不给出任何回应 

REJECT:拒绝通过,必要时会给出提示 

LOG:记录日志,然后传给下一条规则

 

常用选项:    -A 在链的末尾添加规则

        -l 在链的开头添加规则

        -nL 以数字显示所有规则

        -D 删除指定链的指定序号规则

        -F 清空所有规则

        -P 为指定的链设置默认规则

        --line-numbers 查看规则时,显示规则的行

 

根据保护的对象不同,防火墙可以分为主机型防火墙与网络型防火墙

 

常用条件:     -p 协议名称

        -s 源地址 -d 目标地址

        --sport 源端口号 --dport 目标端口号

        icmp类型匹配 --icmp-type ICMP 类型

 

主机型防火墙案例:

iptables -I INPUT -p tcp --dport 80 -j REJECT 禁止所有访问本机80端口的请求

iptables -I INPUT -s 192.168.2.100 -j REJECT 禁止192....访问本机任何服务

iptables -I INPUT -d 192.168.2.5 -p tcp --dport 80 -j REJECT 禁止访问本机192.168.2.5网卡的80端口

iptables -A INPUT -s 10.0.10.0/24 -j DROP 丢弃10.0.10.0网段发送给本机的数据包

iptables -A INPUT -s 1.1.1.1 -p tcp --dport 22 -j REJECT 拒绝1.1.1.1ssh远程本机

网络型防火墙案例:

1.开启路由转发功能:echo 1 > /proc/sys/net/ipv4/ip_forward 临时开启

            echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf 永久

2.设置防火墙规则(数据过滤表的转发链)

    iptables -I FORWARD -s ip -p tcp --dport 80 -j DROP

    不为ip进行路由转发80端口

 

禁PING规则:iptables  -I  INPUT  -p icmp --icmp-type echo-request  -j  DROP

        自己可以ping别人,别人不能ping自己

 

防火墙扩展规则: 使用-m参数来启动扩展功能

根据MAC地址过滤:

    iptables -I INPUT -p tcp --dport 22 -m mac --mac-source mac地址 -j DROP

    拒绝指定子网掩码远程本机

多端口过滤规则:

    iptables -I INPUT -p tcp -m multiport --dports 20:25,110,443 -j ACCEPT

    一次性开启多个端口

根据ip地址范围过滤:

    iptables -I INPUT -p tcp --dport 22 -m iprange --src-range 网段到网段 -j REJECT

     禁止这个范围内的ip远程本机

 

配置snat实现共享上网:

    设置防火墙规则:

        iptables -t nat -A POSTROUTING -s 192.168.4.0/24 -p tcp --dport 80 -j SNAT --to-source 192.168.2.5

    访问本机的只要是192.168.4网段,就给转变成192.168.2.5这个公网ip来访问外网    

 

 

所有规则都是临时设置,重启失效     service iptables  save 命令 永久设置