iptables学习笔记
Netfilter:是Linux操作系统核心层内部的一个数据包处理模块。
Hook point:数据包在Netfilter中的挂载点。(PRE_ROUTIN
,INPUT,OUTPUT,FORWARD,POST_ROUTING)
iptables 规则组成:四张表+五条链(Hook point)+规则
四张表:filter表、nat表、mangle表、raw表
五条链:INPUT OUTPUT FORWARD PREROUTING POSTROUTING
PREROUTIN 进 如果流量localhost(本地) ——》INPUT 链
如果流量不是本地——》FORWARD链
POSTROUTIN 出
规则:
数据包访问控制:ACCEPT(接收)、DROP(丢弃)、REJECT(拒绝)
数据包改写:SNAT(源地址)、DNAT(目标地址)
信息纪录:LOG
Command:
-A :追加新纪录
-D:删除
-L:显示当前规则
-F:清楚现有规则
-P:设置默认规则
-I:插入新规则
Parameter&xmatch
-P 协议
-s 源地址
-d 目标地址
–sport 源端口
–dport 目标端口
–dports 目标端口段
-m tcp|state|multiport
Target
-j ACCEPT 运行通过
DROP 丢弃
REJECT 拒绝
DNAT
SNAT
实例:
Iptables 配置场景一
规则1、对所有的地址开放本机tcp(80、22、10-21)端口的访问
规则2、允许对所有的地址开放本机的基于ICMP协议的数据包访问
规则3、其他未被允许的端口规则禁止访问
Iptables -nL
Iptables -F
Iptables -I INPUT -p tcp –dport 80 -j ACCEPT
Iptables -I INPUT -p tcp –dport 22 -j ACCEPT
Iptables -I INPUT -p tcp –dport 10:21 ACCEPT
Iptables -I INPUT -p icmp -j ACCEPT
Iptables -A INPUT -j REJECT
场景一存在的问题:
1、本机无法访问本机
Iptables -I INPUT -i lo -j ACCEPT
2、本机无法访问其他主机
Iptables -I INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
补充:在场景一的基础上,只允许192.168.0.100访问本机的httpd服务
Iptables -D INPUT -p tcp –dport 80 -j ACCEPT
Iptables -I INPUT -p tcp -s 192.168.0.100 –dport 80 -j ACCEPT
Iptables 配置场景二
1、ftp主动模式下iptables配置
2、ftp被动模式下iptables配置
Iptables 配置场景三
要求一:员工作公司内部(192.168.1.0/24,192.168.2.0/24)能访问服务器的任何服务
要求二:当员工出差例如在上海,通过VPN连接到公司外网(员工)===拨号到===VPN服务器++=》内网FTP,SAMBA,NFS,SSH
要求三:公司有一个门户网站需要允许公网访问
iptables -F
iptables -I INPUT -i lo -j ACCEPT
iptables -I INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -s 192.168.2.0/24 -j ACCEPT
iptables -A INPUT -p tcp –dport 80 -j ACCEPT
iptables -A INPUT -p tcp –dport 1723 -j ACCEPT
iptables -I INPUT -p icmp -j ACCEPT
iptables -A INPUT -j REJECT
iptables -nL
/etc/init.d/iptables save
Snat
Nat转发 设置/etc/sysctl.conf net.ipv4.ip_forward=1 默认为0
Iptables -t nat -A POSTROUTING -s 10.10.177.0/24 -j SNAT –to 10.10.188.232
Dnat
Iptables -t nat -A PREROUTING -d 10.10.188.233 -p tcp –dport 80 -j DNAT –to 10.10.177.232:80
iptables -I INPUT -p TCP –syn –dport 80 -m connlimit –connlimit-above 100-j REJECT
场景:限制10个icmp包通个,如果大于10个包就现在速度 每分钟5个
Iptables -A INPUT -p icmp -m limit –limit 1/m –limit-burst 10 -j ACCEPT
Iptables -A INPUT -p icmp -j DROP
原创文章,作者:luobocai,如若转载,请注明出处:http://www.178linux.com/49664