IPtables 学习笔记三
来源:互联网 发布:淘宝助手是什么 编辑:程序博客网 时间:2024/06/17 21:12
学习了IPTABLES的基本规则后,我们就可以对Linux主机上的数据包进行规则过滤,体验防火墙的功能了。
一、
当然,首先还是要安装iptables,当我们安装完成后,可以通过
rpm -ql iptables 查看安装的位置
这里要注意:iptables不是服务,是内核中规则,那为什么还会有服务脚本呢??
其实,iptables服务脚本的主要目的在于管理(生效、清除、重新载入)保存的规则,我们定义的规则是直接放在内存中的内核空间中,若是不保存一旦关机后,再开机此前所定义的所有规则就会全部消失。
service iptables save 就可以将之前定义的规则保存在/etc/sysconfig/iptables
iptables-save > /特定目录 将规则保存在特定的文件中,
iptables-restore < /特定目录下的规则文件 使保存在特定文件中的规则生效
service iptables start和service iptables stop的作用就是装载/移除iptables/netfilter相关的内核模块:(新版本的内核可能不同)
iptables_nat,
iptables_filter,
iptables_mangle,
iptables_raw,
ip_nat,
ip_conntrack(当启用NAT功能后,每一个地址转换的报文都需要追踪)
二、
接下来通过例子对规则进行进一步的说明:
【不同的服务用端口号区别】这里本机的IP地址为172.16.100.7
1、例如:放行来自于172.16.0.0/16网段的访问172.16.100.7 服务为sshd(端口为22)的tcp协议【只要有允许或者拒绝就是在filter表上】
先处理INPUT链:放行进入的报文ipables -t filter -A INPUT -s 172.16.0.0/16 -d 172.16.100.7 -p tcp --dport 22 -j ACCEPT再处理OUTPUT:放行出去的报文ipables -t filter -A OUTPUT -s 172.16.100.7 -d 172.16.0.0/16 -p tcp --sport 22 -j ACCEPT[处理默认策略]iptables -P INPUT DROP(默认策略关闭)iptables -P OUTPUT DROPiptables -P FORWARD DROP
2、放行访问本机web服务的报文
本机IP地址为172.16.100.7
【进】 放行所有的HTTP服务 插入在第一条,因为web服务应用量大iptables -I INPUT (-s 0.0.0.0) -d 172.16.100.7 -p tcp --dport 80 -j ACCEPT [原地址为任意即0.0.0.0可以省略]【出】iptables -I OUTPUT -s 172.16.100.7 -p tcp --sport 80 -j ACCEPT
3、放行自己ping自己
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -i lo -j ACCEPTiptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -o lo -j ACCEPT
4、放行自己ping别人
iptables -A OUTPUT -s 172.16.100.7 -p icmp --icmp-type 8 -j ACCEPTiptables -A INPUT -d 172.16.100.7 -p icmp --icmp-type 0 -j ACCEPT
5、放行别人ping自己
iptables -A INPUT -s 172.16.100.7 -p icmp --icmp-type 8 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -s 172.16.100.7 -p icmp --icmp-type 0 -m state --state ESTABLISHED -j ACCEPT
注意以上三个例子对不同的发送和接收端进行了说明。
6、开放80端口,80端口进来的连接可以是新请求也可以是已经建立的连接,出去的连接一定是对别人请求的响应。若别人没请求,自己出去则不放行。
iptables -A INPUT -d 172.16.100.7 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -d 172.16.100.7 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
以上规则用到了连接追踪的功能:
这种功能就叫做IP_CONNTRACK(是一个内核模块,实时记录主机客户端和服务器端彼此正在建立的连接关系,并且能够追踪到每一个连接和其他的连接之间的关系和状态)
根据IP报文进行追踪,不管是TCP协议还是UDP协议还是ICMP协议
在linux的/proc/net/ip_conntrack文件中,保存有当前系统上每一个客户端与当前主机所建立的连接关系。高版本的linux下为nf_conntrack 文件
cat /proc/net/ip_conntrack或者iptstate 命令可以查看
nf_conntrack最多能保存多少个条目
可以在/etc/sysctl.conf中添加net.ipv4.netfilter.ip_conntrack_max = 655360 来定义
【注意iptables -t nat -L此查看命令可以自动加载和iptables有关的内核模块】
7、放行本机的ftp报文
(确保在/etc/sysconfig/iptables-config下启用IPTABLES_MODULES=”ip_nat_ftp ip_conntrack_ftp”)
iptables -A INPUT -d 172.16.100.7 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -R OUTPUT 1 -s 172.16.100.1 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
8、离散的多端口匹配
iptables -A INPUT -d 172.16.100.7 -p tcp -m tcp --dports 22 -m state NEW -j ACCEPTiptables -A INPUT -d 172.16.100.7 -p tcp -m tcp --dports 21 -m state NEW -j ACCEPTiptables -A INPUT -d 172.16.100.7 -p tcp -m tcp --dports 80 -m state NEW -j ACCEPT以上的三条规则可以用下面一条规则代替:iptables -I INPUT 2 -d 172.16.100.7 -p tcp -m multiport --destination-ports 21,22,80 -m state NEW -j ACCEPT
9、根据IP范围控制报文
iptables -A INPUT -p tcp -m iprange --src-range 172.16.100.3-172.16.100.100 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
10、限制用户Ping的数目频次
iptables -I INPUT 1 -d 172.16.100.7 -p icmp --icmp-type 8 -m limit --limit 5/minute --limit-burst 6 -j ACCEPTiptables -I OUTPUT 1 -s 72.16.100.7 -m state --state RELATED,ESTABLISHED -j ACCEPT
11、若用户请求的内容包含str字符串,则拒绝响应
iptables -I OUTPUT -s 172.16.100.7 -m string --algo kmp --string “str” -j REJRCT
12、记录日志
iptables -I INPUT 4 -d 172.16.100.7 -p icmp --icmp-type 8 -j LOG --log-prefix “--firewall log for icmp--”
- IPtables 学习笔记三
- 学习笔记之iptables(三)
- Linux 防火墙iptables 学习笔记(三)iptables命令详解和举例
- Linux防火墙iptables学习笔记(三)iptables命令详解和举例
- Linux 防火墙iptables 学习笔记(三)iptables命令详解和举例
- Linux 防火墙iptables 学习笔记(三)iptables命令详解和举例
- Linux防火墙iptables学习笔记(三)iptables命令详解和举例
- Linux防火墙iptables学习笔记(三)iptables命令详解和举例
- Linux防火墙iptables学习笔记(三)iptables命令详解和举例
- Linux防火墙iptables学习笔记(三)iptables命令详解和举例
- Linux防火墙iptables学习笔记(三)iptables命令详解和举例
- Linux防火墙iptables学习笔记(三)iptables命令详解和举例
- iptables 学习笔记
- iptables命令学习笔记
- iptables 学习笔记
- iptables学习笔记
- iptables学习笔记
- iptables学习使用笔记
- 关于C++中的mutable关键字的研究
- IPtables 学习笔记二
- Android开发心得(一)
- JAVA中的运算符的总结
- Target Sum
- IPtables 学习笔记三
- 程序猿的爱情,猿粪是一个奇妙的东西
- [bzoj4810][Ynoi2017]由乃的玉米田 bitset+莫队
- 图结构练习——BFS——从起始点到目标点的最短步数
- Xception —— 深度可分卷积
- j2ee的web项目,在浏览器中发起一个该项目中html页面的绝对地址,也是发起的一个http url请求,请求的响应报文的结果就是该html页面的所有html代码
- 变长参数函数(转载)
- IPtables学习笔记四
- 常用概念之程序局部性原理