iptables介绍
linux的包过滤功能,即linux防火墙,它由netfilter 和 iptables 两个组件组成。
netfilter 组件也称为内核空间,是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
iptables 组件是一种工具,也称为用户空间,它使插入、修改和除去信息包过滤表中的规则变得容易。
iptables基础
我们知道iptables是按照规则来办事的,规则其实就是网络管理员预定义的条件,规则一般的定义为"如果数据包头符合这样的条件,就这样处理这个数据包"。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作就是添加、修改和删除这些规则。
当客户端访问服务器的web服务时,客户端发送报文到网卡,而tcp/ip协议栈是属于内核的一部分,所以,客户端的信息会通过内核的TCP协议传输到用户空间中的web服务中,而此时,客户端报文的目标终点为web服务所监听的套接字(IP:Port)上,当web服务需要响应客户端请求时,web服务发出的响应报文的目标终点则为客户端,这个时候,web服务所监听的IP与端口反而变成了原点,我们说过,netfilter才是真正的防火墙,它是内核的一部分,所以,如果我们想要防火墙能够达到"防火"的目的,则需要在内核中设置关卡,所有进出的报文都要通过这些关卡,经过检查后,符合放行条件的才能放行,符合阻拦条件的则需要被阻止,于是,就出现了input关卡和output关卡,而这些关卡在iptables中不被称为"关卡",而被称为"链"。
————————————————
ACCEPT 放行
DROP 丢弃
RJECT 拒绝
在filter表的INPUT链追加一条规则,tcp的22端口 全部放行
iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
允许ping
iptables -t filter -A INPUT -p icmp -j ACCEPT
允许通过192.168.189.181访问本机的80端口
iptables -A INPUT -d 192.168.189.181 -p tcp --dport 80 -j ACCEPT
允许192.168.189.162访问本机的80端口
iptables -A INPUT -s 192.168.189.162 -p tcp --dport 80 -j ACCEPT
目的地址转换:将访问本机tcp的2222端口的请求,转发到192.168.189.31.101的22端口
iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 192.168.31.101:22
源地址转换: 所有来自于192.168.31.0/24网段的请求,将源地址转换成192.168.189.161,如此便可实现路由的功能!
iptables -t nat -A POSTROUTING -s 192.168.31.0/24 -j SNAT --to-source 192.168.189.161
语法:
iptables -t 表 -A 链 匹配规则 -j ACCEPT/DROP/REJECT/DNAT/SNAT…
-I
-D
-L -n -v -v -v
通策略
堵策略
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-eth1
配置eth1的配置文件
service network restart
开启ip转发
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
ssh 192.168.189.161 -p 2222 ----> ssh 192.168.31.101 -p 22