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 startservice 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--”
阅读全文
0 0
原创粉丝点击