Linux的防火墙,主要是在网络层对TCP/IP数据包进行过滤和限制。防火墙的包过滤机制(netfilter)由操做系统内核实现的,而防火墙管理工具iptables属于“用户态”,为包过滤机制的实现提供规则。服务器
防火墙总共管理4张表(raw,mangle,nat,filter表),每张表又包含多条链,每条链又包含多条自定义的规则。网络
下面重点研究net表和filter表中的链:app
在每张表的每一条链中均可以配置不少的rule,用于决定数据包的过滤规则:tcp
iptables -t 表名 命令选项(增删改查) 链名 规则标号 -p tcp -j 动做(DROP/ACCEPT)工具
1.在Filter表的INPUT链末尾添加一条防御墙规则spa
iptables -t filter -A INPUT -p tcp -j ACCEPT (-A 表示append,末尾添加,因此不须要指定编号)操作系统
2.查看Filter表的INPUT链中的全部规则blog
iptables -L INPUT --line-number接口
3.清空表中的全部rule:ip
iptables -t filter -F
删除Filter表的INPUT链中的第6条规则
iptables -D INPUT 6
4.容许转发来自192.168.0.0/24网段的数据:
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT (-s source 源IP地址)
丢弃从外网接口(eth1)进入防火墙本机的源地址为某个特定子网的数据包:
iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP (-i 指定数据包从哪块网卡进入)
5.仅容许Administrator从202.13.0.0/16网段使用SSH(端口号为22)方式远程登陆防火墙主机:
iptables -A INPUT -p tcp --dport 22 -s 202.13.0.0/16 -j ACCEPT (--dport 数据包的IP的目标端口号)
6.禁止其余主机ping防火墙服务器,可是容许防火墙能ping其余主机:
iptables -A INPUT -p icmp --icmp-type Echo-Request -j DROP
iptables -A INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT
iptables -A INPUT -p icmp --icmp-type destination-Unreachable -j ACCEPT
7.对 Linux 禁 PING 能够使用以下规则屏蔽 ICMP 传入链接
iptables -A INPUT -p icmp -i eth0 -j DROP
8.配置端口转发,将 Linux 服务器的某个服务流量转发到另外一端口:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j REDIRECT --to-port 2525