网络运营

iptables基础详解

1.防火墙概念:
a)在开放的网络中,为了避免本机的服务能被他人任意访问且潜在被他人恶意访问的危险,需要限制用户对服务访问的权限,仅开放有限的通路。
b)防火墙一般工作在主机或网络边缘,对进出主机或网络的报文按事先定义的规则进行检查,匹配相应的规则。
c)在linux上,防火墙一般是由iptables/netfilter框架实现,基于软件的方式工作在网络层的防火墙,并且支持连接追踪。
d)Iptables是一个工作于用户空间的管理工具,它定义的规则将由工作于内核空间的netfilter框架来予以生效和执行。并且根据对网络报文处理机制的不同,iptables分成了不同的由链形成的表。

2.Iptables的四表:
a)filter:对IP报文进行过滤,为默认表
b)nat:对IP报文进行网络地址转换
c)mangle:对IP报文修改,封装
d)raw:对收到的数据包在连接跟踪前进行处理

3.iptables的五链:
a)prerouting:路由前
b)input:数据包流入口
c)forward:转发
d)output:数据包流出口
e)postrouting:路由后

4.iptables命令的基本使用:
a)iptables[-t tables] –N chain:创建自定义链,只能被引用
iptables -N CLEAN_IN

b)iptables [-t tables] –X chain:删除自定义链
iptables –X CLEAN_IN

c)iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options…]
i.–F:默认清空所有规则,或只清楚指定链的规则
iptables –F

ii.–L:列出表中的所有规则
iptables –nL ##以数字的形式列出表中所有规则

iii.–Z:清空规则计数器
iptables –Z

d)iptables [-t table] {-A|-D} chain rule-specification
i.–A:增加一条规则链
Iptables–A INPUT –d 192.168.xx.xx –p tcp –dport 22 –j ACCEPT ##放行对192.168.xx.xx的22端口入站访问

ii.–D:删除一条规则链
Iptables –D INPUT # ##删除INPUT链的第#行规则

e)Iptables –P chain{policy}
Iptables –P INPUT DROP ##设置默认规则为DROP

5.例子一【例子ip为192.168.89.239】:自定义一条规则链,对入站数据包进行过滤和清洗
###自定义名为CLEAN_IN的链###
iptables -N CLEAN_IN

###对于icmp广播包就行丢弃###
iptables -A CLEAN_IN -d 255.255.255.255 -p icmp -j DROP

###对于192.168.89.0/24段的广播包进行丢弃###
iptables -A CLEAN_IN -d 192.168.89.255 -p icmp -j DROP

###对于tcp状态不是syn,但是状态为NEW的非法报文丢弃###
iptables -A CLEAN_IN -p tcp ! –syn -m state –state NEW -j DROP

###对于tcp标志位为全部标记为1的非法报文丢弃###
iptables -A CLEAN_IN -p tcp –tcp-flags ALL ALL -j DROP

###对于tcp标志位为全部标记为0的非法报文丢弃###
iptables -A CLEAN_IN -p tcp –tcp-flags ALL NONE -j DROP

###检查通过后返回到目标地址为192.168.89.239的链###
iptables -A CLEAN_IN -d 192.168.89.239 -j RETURN

在本机的INPUT链上添加一条自定义链,通常置于第一条规则

iptables -A INPUT -d 192.168.89.239 -j CLEAN_IN

由图可看到,自定义链已经匹配到数据包

6.例子二:建立SSH模板防止暴力破解,300秒如果同一ip请求ssh超过三次,则拒绝它五分钟。

###同一个IP地址对于目标地址的22端口访问,最多请求3次###

iptables -A INPUT  -d 192.168.89.239 -p tcp –dport 22 -m connlimit –connlimit-above 3 -j DROP

###记录数据包的来源IP,如果IP存在则更新已存在的条目

iptables-A INPUT -d 192.168.89.239 -p tcp –dport 22 -m state –state NEW -m recent –set –name SSH

###对于目标地址的22端口访问,在SSH模板中,状态是NEW,而且在300s之内最大允许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

提示:根据实际需求,例子一和例子二可结合使用,配置更加安全可靠的防火墙规则。

 

Be the First to comment.

Leave a Comment

电子邮件地址不会被公开。 必填项已用*标注