【睿普专栏】iptables基础详解
睿普小课堂,继续开课中~~...
关注睿普Eflypro更懂服务的云计算专家!
首先给大家科普一下防火墙的概念:
在开放的网络中,为了避免本机的服务能被他人任意访问且潜在被他人恶意访问的危险,需要限制用户对服务访问的权限,仅开放有限的通路。防火墙一般工作在主机或网络边缘,对进出主机或网络的报文按事先定义的规则进行检查,匹配相应的规则。
在开放的网络中,为了避免本机的服务能被他人任意访问且潜在被他人恶意访问的危险,需要限制用户对服务访问的权限,仅开放有限的通路。防火墙一般工作在主机或网络边缘,对进出主机或网络的报文按事先定义的规则进行检查,匹配相应的规则。
在linux上,防火墙一般是由iptables/netfilter框架实现,基于软件的方式工作在网络层的防火墙,并且支持连接追踪。
Iptables是一个工作于用户空间的管理工具,它定义的规则将由工作于内核空间的netfilter框架来予以生效和执行。并且根据对网络报文处理机制的不同,iptables分成了不同的由链形成的表。
Iptables的四表
filter:对IP报文进行过滤,为默认表nat:对IP报文进行网络地址转换
mangle:对IP报文修改,封装
raw:对收到的数据包在连接跟踪前进行处理
Iptables的五链
prerouting:路由前input:数据包流入口
forward:转发
output:数据包流出口
postrouting:路由后
Iptables命令的基本使用:
- iptables[-ttables] –N chain:创建自定义链,只能被引用iptables -N CLEAN_IN
- iptables[-t tables] –X chain:删除自定义链iptables –X CLEAN_IN
- iptables[-t table] {-F|-L|-Z} [chain [rulenum]] [options...]
- –F:默认清空所有规则,或只清楚指定链的规则iptables –F
- –L:列出表中的所有规则iptables –nL(以数字的形式列出表中所有规则)
iptables –P INPUT DROP(设置默认规则为DROP)
[/*][/list]
根据以上方法,我们来看两个例子:
例子一:
【例子ip为192.168.89.239】:自定义一条规则链,对入站数据包进行过滤和清洗
1. iptables -N CLEAN_IN : 自定义名为CLEAN_IN的链
2. iptables -A CLEAN_IN -d 255.255.255.255 -p icmp -j DROP : 对于icmp广播包进行丢弃
3. iptables -A CLEAN_IN -d 192.168.89.255 -p icmp -j DROP : 对于192.168.89.0/24段的广播包进行丢弃
4. iptables -A CLEAN_IN -p tcp !--syn -m state --state NEW -j DROP : 对于tcp状态不是syn,但是状态为NEW的非法报文丢弃
5. iptables -A CLEAN_IN -p tcp--tcp-flags ALL ALL -j DROP : 对于tcp标志位为全部标记为1的非法报文丢弃
6. iptables -A CLEAN_IN -p tcp--tcp-flags ALL NONE -j DROP : 对于tcp标志位为全部标记为0的非法报文丢弃
7. iptables -A CLEAN_IN -d 192.168.89.239 -j RETURN : 检查通过后返回到目标地址为192.168.89.239的链
8. iptables -A INPUT -d 192.168.89.239 -j CLEAN_IN : 在本机的INPUT链上添加一条自定义链,通常置于第一条规则
由图可看到,自定义链已经匹配到数据包。
例子二:建立SSH模板防止暴力破解,300秒如果同一ip请求ssh超过三次,则拒绝它五分钟。
1. iptables -A INPUT -d 192.168.89.239 -p tcp--dport 22 -m connlimit --connlimit-above 3 -j DROP : 同一个IP地址对于目标地址的22端口访问,最多请求3次
2. iptables -AINPUT -d 192.168.89.239 -p tcp --dport 22 -m state --state NEW -m recent --set--name SSH : 记录数据包的来源IP,如果IP存在则更新已存在的条目
3. iptables -A INPUT -d 192.168.89.239 -p tcp --dport 22 -m state --state NEW -m recent--update --seconds 300 --hitcount 3 --name SSH -j DROP : 对于目标地址的22端口访问,在SSH模板中,状态是NEW,而且在300s之内最大允许3次会话建立
睿普小提示:根据实际需求,例子一和例子二可结合使用,配置更加安全可靠的防火墙规则。
点击“阅读原文”,了解更多技术攻略详情
关注 睿普Eflypro
微信扫一扫关注公众号