iptables防火墙简介
来源:互联网 发布:土地确权数据库 编辑:程序博客网 时间:2024/05/16 14:53
原文地址:http://drops.wooyun.org/tips/1424
一、iptables介绍
linux的包过滤功能,即linux防火墙,它由netfilter 和 iptables 两个组件组成。
netfilter 组件也称为内核空间,是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
iptables 组件是一种工具,也称为用户空间,它使插入、修改和除去信息包过滤表中的规则变得容易。
二、iptables的结构
iptables -> Tables -> Chains -> Rules
简单地讲,tables由chains组成,而chains又由rules组成。iptables 默认有四个表Filter, NAT, Mangle, Raw,其对于的链如下图。
三、 iptables工作流程
四、filter表详解
1. 在iptables中,filter表起过滤数据包的功能,它具有以下三种内建链:
INPUT链 – 处理来自外部的数据。 OUTPUT链 – 处理向外发送的数据。 FORWARD链 – 将数据转发到本机的其他网卡设备上。
2. 数据流向场景
访问本机:在INPUT链上做过滤
本机访问外部:在OUTPUT链上做过滤
通过本机访问其他主机:在FORWARD链上做过滤
3. Iptables基本操作
启动iptables:service iptables start
关闭iptables:service iptables stop
重启iptables:service iptables restart
查看iptables状态:service iptables status
保存iptables配置:service iptables save
Iptables服务配置文件:/etc/sysconfig/iptables-config
Iptables规则保存文件:/etc/sysconfig/iptables
打开iptables转发:echo "1"> /proc/sys/net/ipv4/ip_forward
五、iptables命令参考
命令:iptables [ -t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转]
1. 表名
表名:Filter, NAT, Mangle, Raw
起包过滤功能的为表Filter,可以不填,不填默认为Filter
2. 命令选项
3. 链名
可以根据数据流向来确定具体使用哪个链,在Filter中的使用情况如下:
INPUT链 – 处理来自外部的数据。 OUTPUT链 – 处理向外发送的数据。 FORWARD链 – 将数据转发到本机的其他网卡设备上。
4. 条件匹配
条件匹配分为基本匹配和扩展匹配,拓展匹配又分为隐式扩展和显示扩展。
a)基本匹配包括:
c)常用显式扩展
5. 目标值
数据包控制方式包括四种为:
ACCEPT:允许数据包通过。 DROP:直接丢弃数据包,不给出任何回应信息。 REJECT:拒绝数据包通过,必须时会给数据发送端一个响应信息。 LOG:在/var/log/messages 文件中记录日志信息,然后将数据包传递给下一条规则。 QUEUE:防火墙将数据包移交到用户空间 RETURN:防火墙停止执行当前链中的后续Rules,并返回到调用链(the calling chain)
六、Iptables常见命令
a) 1. 删除iptables现有规则iptables –F
b) 2. 查看iptables规则
iptables –L(iptables –L –v -n)
c) 3. 增加一条规则到最后
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
d) 4.添加一条规则到指定位置
iptables -I INPUT 2 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
e) 5. 删除一条规则
iptabels -D INPUT 2
f) 6.修改一条规则
iptables -R INPUT 3 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
g) 7. 设置默认策略
iptables -P INPUT DROP
h) 8.允许远程主机进行SSH连接
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
i) 9.允许本地主机进行SSH连接
iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
j) 10.允许HTTP请求
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
k) 11.限制ping 192.168.146.3主机的数据包数,平均2/s个,最多不能超过3个
iptables -A INPUT -i eth0 -d 192.168.146.3 -p icmp --icmp-type 8 -m limit --limit 2/second --limit-burst 3 -j ACCEPT
l) 12.限制SSH连接速率(默认策略是DROP)
iptables -I INPUT 1 -p tcp --dport 22 -d 192.168.146.3 -m state --state ESTABLISHED -j ACCEPT iptables -I INPUT 2 -p tcp --dport 22 -d 192.168.146.3 -m limit --limit 2/minute --limit-burst 3 -j ACCEPT
七、如何正确配置iptables
a) 1. 删除现有规则
iptables -F
b) 2. 配置默认链策略
iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP
c) 3. 允许远程主机进行SSH连接
iptables -A INPUT -i eth0 -p tcp –dport 22 -m state –state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp –sport 22 -m state –state ESTABLISHED -j ACCEPT
d) 4. 允许本地主机进行SSH连接
iptables -A OUTPUT -o eth0 -p tcp –dport 22 -m state –state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -i eth0 -p tcp –sport 22 -m state –state ESTABLISHED -j ACCEPT
e) 5. 允许HTTP请求
iptables -A INPUT -i eth0 -p tcp –dport 80 -m state –state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp –sport 80 -m state –state ESTABLISHED -j ACCEPT
八、使用iptables抵抗常见攻击
1.防止syn攻击
思路一:限制syn的请求速度(这个方式需要调节一个合理的速度值,不然会影响正常用户的请求)
iptables -N syn-flood iptables -A INPUT -p tcp --syn -j syn-flood iptables -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN iptables -A syn-flood -j DROP
思路二:限制单个ip的最大syn连接数
iptables –A INPUT –i eth0 –p tcp --syn -m connlimit --connlimit-above 15 -j DROP
2. 防止DOS攻击
利用recent模块抵御DOS攻击
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分钟后即可恢复访问。
3. 防止单个ip访问量过大
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 30 -j DROP
4. 木马反弹
iptables –A OUTPUT –m state --state NEW –j DROP
5. 防止ping攻击
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/m -j ACCEPT
上一篇:Memcached全面剖析
下一篇:深入浅出Oracle:DBA入门、进阶与诊断案例(读书笔记1)
- SQL注入之asp+MSSQL
- 黑客高手讲述入侵的实践经验...
- "没有找到COMRes.dll,应用程...
- 如何给文件夹设置密码?...
- 详解zabbix安装部署(Server端...
- linux dhcp peizhi roc
- 关于Unix文件的软链接
- 求教这个命令什么意思,我是新...
- sed -e "/grep/d" 是什么意思...
- 谁能够帮我解决LINUX 2.6 10...
- iptables防火墙简介
- iptables 防火墙
- 防火墙(iptables)
- iptables 防火墙
- iptables 防火墙
- iptables防火墙
- Iptables防火墙
- iptables防火墙
- iptables 防火墙
- iptables 防火墙
- 防火墙---iptables
- iptables 防火墙
- iptables防火墙
- iptables防火墙
- iptables防火墙
- iptables防火墙
- iptables防火墙
- iptables防火墙
- linux目录结构详细介绍 【转】
- 高性能MySQL(第三版)
- Java线程:线程的同步-同步方法
- Memcached全面剖析
- hdu 1849 Rabbit and Grass(s-nim博弈)
- iptables防火墙简介
- android 友盟推送SDK和支付宝支付SDK冲突
- 8.旋转数组的最小数
- 深入浅出Oracle:DBA入门、进阶与诊断案例(读书笔记1)
- 通过WriteProcessMemory改写进程的内存
- 深入浅出Oracle:DBA入门、进阶与诊断案例(读书笔记2)
- Laravel中文件上传
- MongoDB教程(笔记)
- 现在没有可用的软件包vim,但是它被其它的软件包引用了&gcc命令无法使用