1. iptables动作: ACCEPT(允许流量通过) REJECT(拒绝流量通过) DROP(拒绝流量通过,丢包状态) LOG(记录日志信息)
2. iptables基本参数。-P设置默认策略;-F清空规则链;-L查看规则链;-A在规则链末尾加入新规则;-I num 在规则链头部加入新规则;-D num删除第num条规则;-s匹配来源地址IP/MASK,加!号是反取。-d匹配目标地址;-i 网卡名称 匹配从这块网卡流入的数据;-o网卡名称 匹配从这块网卡流出的数据;-p匹配协议,如TCP UDP ICMP等;--dport num 匹配目标端口号;--sport num匹配来源端口号
基本命令实验:首先用真机192.168.129.1去ping虚拟机40,可以ping通。
在虚拟机中首先清空所有规则链iptables -F 然后查看iptables -L
设置拒绝数据流入:iptables -P INPUT DROP 发现真机ping不通了。注意:规则链的默认拒绝动作只能是DROP,不能是REJECT
设置一个允许icmp流量进入的策略规则iptables -I UNPUT -p icmp -j ACCEPT,发现真机又可以ping通虚拟机了。
删除刚才那条策略:iptables -D INPUT 1,真机ping不同。
设置默认策略为通:iptables -P INPUT ACCEPT,真机又可以ping通了。
设置只允许指定主机指定网段访问本机22端口,这个实验使用Xshell来测试。首先设置默认全部禁止进入的策略,打开Xshell建立连接失败(服务器地址为虚拟机192.168.129.40/24::22)。
设置iptables -I INPUT -s 192.168.129.1/24 -p tcp --dport 22 -j ACCEPT之后,发现连接可顺利建立。
拒绝来自其他所有主机的流量iptables -A INPUT -p tcp --dport 22 -j REJECT
3. 连续端口。 向INPUT规则链中添加拒绝所有主机访问本机1000~1024端口的策略:
iptables -I INPUT -p tcp --dport 1000:1024 -j REJECT
iptables -I INPUT -p udp --dport 1000,1001,1002...(逗号隔开枚举到1024) -j REJECT
4. 保存防火墙配置。使用iptables配置的规则默认在系统重启后失效,如果想永久生效,则使用保存命令 service iptables save