iptables默认三张表:

  • filter:防火墙,包含INPUT、OUTPUT、FORWARD
  • nat:网络地转转换,包含PREROUTING、POSTROUTING、OUTPUT
  • mangle:流量×××,包含所有的五条链

iptables的五条链 ->写规则的地方

  • INPUT:数据包的目地的是LINUX主机本身
  • OUTPUT:数据包由LINUX主机本身发送
  • FORWARD:数据包从一个接口进入,另一个接口发出(如果做路由转发的话必须开启/etc/sysctl.conf 修改net.ipv4.ip_forward=1)
  • PREROUTING:做路由之前
  • POSTROUTING:做路由之后

 

命令

清空防火墙

iptables -F

把INPUT默认规则改成DROP

iptables -P INPUT  DROP

添加一条规则允许SSH通过INPUT

一般插入很多人都写iptables -A (是追加规则,添加的规则在最下方,防火墙的规则是谁在最上边谁生效,所以我一般用-I,添加的规则先生效并且I能指定具体位置)

iptables -I INPUT -p tcp -s 192.168.0.0/24 --dport 22 -j ACCEPT

iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT(将这条规则插入到上面第二行)

只允许允许192.168.0.0、24从eth0网卡访问本机的22端口

iptables -I INPUT -i eth0 -p tcp -s 192.168.0.0/24 --dport 22 -j ACCEPT

列出防火墙规则

iptables -L

删除INPUT里面的第二条规则(从最上面开始)

iptables -D INPUT 2

保存防火墙规则(防火墙如果没有保存,重启服务后规则失效)

service iptables save

备份防火墙规则

iptables-resotre < /etc/sysconfig/iptables.20130301

 路由

阻止某个IP到达本机

iptables -I FORWARD -s 202.106.0.20 -j DROP
iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -j SANT --to 1.1.1.1

将192.168.0.0网段的地址转换成1.1.1.1去做nat访问

iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -j SANT --to 1.1.1.1-1.1.1.20

将192.168.0.0网段的地址转换成1.1.1.1-20网段的地址去做nat访问

iptables -t nat -I PREROUTING -i eth0 -p tcp 80 -j DNAT --to 192.168.0.1

将通过网卡eth0的访问80端口的数据包目的地址改为192.168.0.1

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

将源地址是192.168.0.0/24网段的数据包地址进行伪装

STATE

-m state --state 状态分为

NEW: 有别于tcp的syn

ESTABLISHED:连接态

RELATED:衍生态,与conntrack(连接跟踪模块)关联(FTP)

INVALID:不能识别的连接或者状态

iptables -I INPUT -m state --state RELATED,ESTABLISHED \ -就ACCEPT

允许连接出去后对方主机回应的数据包

MAC
-m mac --mac-source MAC
iptables -I FORWARD -m mac --mac0source xx:xx:xx:xx:xx:xx \ -j DROP

阻断来自某MAC地址的数据包,经过本机的路由

i

ptables -P FORWARD DROP
iptables -I FORWARD -s 192.168.0.2 -m mac --mac-source xx:xx:xx:xx:xx:xx -j ACCEPT

ip与mac地址绑定,只有这个ip能从本机路由

LIMIT限速

-m limit --limit
iptables -I FORWARD -d 192.168.0.2 -m limit --limit 50/s -j ACCEPT
iptables -I FORWARD -d 192.168.0.2 -j DROP

限速50/s要想实现限制上传和下载的速度,得结合TC去分网段

 简单web服务器上的防火墙配置

iptables -I INPUT -i eth0(网络端口端口)-j ACCEPT
iptables -I INPUT -p tcp -m multiport --dports 22,80 -j ACCEPT
iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP

网关

实例:ADSL 拨号上网的拓扑 

echo "1" > /proc/sys/net/ipv4/ip_forward 
iptables -t nat -I POSTROUTING -s 192.168.1.0/24 -o eth0 \ 
 -j MASQUERADE

对外服务器

服务协议(TCP/UDP) 

对外服务端口 

内部服务器私网 IP 

内部真正服务端口 

实例: 

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 \ 
 -j DNAT --to 192.168.1.1 
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 81 \ 
 -j DNAT --to 192.168.1.2:80


转载于:https://blog.51cto.com/sanxiayouren/1143125