Linux 防火墙
Linux的防火墙,主要是在网络层对TCP/IP数据包进行过滤和限制。防火墙的包过滤机制(netfilter)由操作系统内核实现的,而防火墙管理工具iptables属于“用户态”,为包过滤机制的实现提供规则。
防火墙总共管理4张表(raw,mangle,nat,filter表),每张表又包含多条链,每条链又包含多条自定义的规则。
下面重点研究net表和filter表中的链:
在每张表的每一条链中都可以配置很多的rule,用于决定数据包的过滤规则:
iptables -t 表名 命令选项(增删改查) 链名 规则标号 -p tcp -j 动作(DROP/ACCEPT)
1.在Filter表的INPUT链末尾添加一条防护墙规则
iptables -t filter -A INPUT -p tcp -j ACCEPT (-A 表示append,末尾添加,所以不需要指定编号)
2.查看Filter表的INPUT链中的所有规则
iptables -L INPUT --line-number
3.清空表中的所有rule:
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