iptables是Linux 2.4.x以上平台下的开源包过滤防火墙,工作在应用层。iptables通过Linux内核中的netfilter功能模块完成封包过滤、封包重定向和网络地址转换(NAT)等功能。有点像路由的ACL机制。
但确实,包过滤技术是在路由功能的基础上扩展的,对网络层和传输层的头部进行检查,根据制定的规则,决定是否转发该数据包。
iptables -L -v
显示通过的数据包及数据包总大小,我们可以使用-Z参数清除。
iptables -t filter -A INPUT -p icmp --icmp-type 8 -j DROP
使其他主机无法ping通本机
-A 添加一种规则 -p 指定ICMP协议 之后是ICMP子参数8 表示是发送的ICMP包,最后做个DROP的拦截操作。
我用本机ping了一下服务器,然后用iptables -t filter -L -n -v 查看:
[root@167002 ~]# iptables -t filter -L -n -v
Chain INPUT (policy ACCEPT 472 packets, 54416 bytes)
pkts bytes target prot opt in out source destination
4 240 DROP icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 8
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 478 packets, 77075 bytes)
pkts bytes target prot opt in out source destination
我们发现,掉了4个包,一共240 bytes ,不就是ping的那4下。
iptables -I INPUT -p tcp -dport 22 -m connlimit --connlimit-above 3 -j DROP
单个IP最多连接3个会话
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
只要是新的连接请求,就把它加入到SSH列表中
Iptables -I INPUT -p tcp --dport 22 -m state NEW -m recent --update --seconds 300 --hitcount 3 --name SSH -j DROP
5分钟内你的尝试次数达到3次,就拒绝提供SSH列表中的这个IP服务。被限制5分钟后即可恢复访问。
慢慢学习,下次更新。
- Iptables服务配置文件:/etc/sysconfig/iptables-config
- Iptables规则保存文件:/etc/sysconfig/iptables
参考文档:
http://www.linuxso.com/linuxpeixun/10332.html