标签:firewall
iptables命令是Linux上常用的防火墙软件。
netfilter组件称为内核空间,用于扩展各种组件,一般从事研发角度开发网络新特性
iptables命令格式:
iptables -t 表名
<-A/I/D/R> 链 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网>
--sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作
表名:filter、nat、mangle#一般用于打标的
链:prerouting、input、forwarding、output、postrouting
动作:ACCEPT#允许、DROP#拒绝、SNAT#源地址转换、DNAT#目的地址的转换、MASQUERADE#伪装
注:
INPUT:处理入站数据包
OUTPUT:处理出站数据包
FORWARD:处理转发数据包
POSTROUTING链:在进行路由选择后处理数据包
PREROUTING链:在进行路由选择前处理数据包
INPUT链用于处理访问防火墙本机的数据,
OUTPUT链用于处理防火墙本机访问其他主机的数据
FORWARD链用于处理需要经过防火墙转发的数据包,源地址、目标地址均不是防火墙本机
POSTROUTING、PREROUTING链分别用于在确定路由后、确定路由前对数据包进行处理
入站数据流向:来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理(是否修改数据包地址等),之后会进行路由选择(判断该数据包应该发往何处),如果数据包的目标地址是防火墙本机(如Internet用户访问防火墙主机中Web服务的数据包),那么内核将其传递给INPUT链进行处理(决定是否允许通过等),通过以后再交给系统上层的应用程序(如httpd服务器)进行响应
转发数据流向:来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理,之后会进行路由选择,如果数据包的目标地址是其他外部地址(如局域网用户通过网关访问QQ站点的数据包),则内核将其传递给FORWARD链进行处理(是否转发或拦截),然后再交给POSTROUTING规则链(是否修改数据包的地址等)进行处理
出站数据流向:防火墙本机向外部地址发送的数据包(如在防火墙主机中测试公网DNS服务时),首先被OUTPUT规则链处理,之后进行路由选择,然传递给POSTTOUTING规则链(是否修改数据包的地址等)进行处理
1.filter表是防火墙默认表格
2.iptables -L -n = iptables -t filter -L -n用于查看filter表
iptables(选项)注释:
-t<表>:指定要操纵的表; (filter;nat;mangle)
-A:向规则链中添加条目;(添加到最后一个条目)
-D:从规则链中删除条目; (删除条目)
-I:向规则链中插入条目; (可以在任意条目中插入)
-R:替换规则链中的条目; (更改现有的条目)
-L:显示规则链中已有的条目;(列出所有条目)
-F:清楚规则链中已有的条目;(删除所有条目)
-Z:清空规则链中的数据包计算器和字节计数器;
-N:创建新的用户自定义规则链;
-P:定义规则链中的默认目标;
-h:显示帮助信息;
-p:指定要匹配的数据包协议类型;(protocol)
-s:指定要匹配的数据包源ip地址; (source)
-j<目标>:指定要跳转的目标;(job)
-i<网络接口>:指定数据包进入本机的网络接口;(inside)
-o<网络接口>:指定数据包要离开本机所使用的网络接口。(outside)
--sport:源端口
--dport:目的端口
清除已有iptables规则
iptables -F
iptables -X
iptables -Z
#显示详细信息。主要显示匹配数据包数量和字节数
开放指定的端口
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT #允许本地回环接口(即运行本机访问本机)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #允许已建立的或相关连的通行
iptables -A OUTPUT -j ACCEPT #允许所有本机向外的访问
iptables -A INPUT -p tcp --dport 22 -j ACCEPT #允许访问22端口
iptables -A INPUT -j reject #禁止其他未允许的规则访问
iptables -A FORWARD -j REJECT #禁止其他未允许的规则访问
屏蔽IP
iptables -I INPUT -s 123.45.6.7 -j DROP #屏蔽单个IP的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP #封整个段即从123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP #封IP段即从123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 123.45.6.0/24 -j DROP #封IP段即从123.45.6.1到123.45.6.254的命令是
iptables -I INPUT -j DROP#当不写编号时,默认插成第一条。
iptables -D INPUT #1删除指定编号的策略。
iptables -t nat -F#清空nat表中所有规则。
防火墙策略保存位置:/etc/sysconfig/iptables
四种状态:
1.NEW:连接的第一个包即标识为NEW状态,注意没有收到回包。
2.ESTALISHED:一旦连接看到两个方向上都有通信流,那么与此附加的包都被看作是ESTALISHED。
3.RELATED:这种状态表示那些启动了新连接,但有与当前现有连接相关的包。典型应用就是FTP。
4.INVALID:不属于以上三种状态的包,都是非法的。
NAT表是iptables中的最要表,一般用来实现代理服务器。
Iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -I FORWARD -j ACCEPT 开启IP转发功能。
注:
1.制作NAT的时候,要修改的链有forward和postrouting。
2.Forward链主要用于进行访问控制。
3.postrouting链主要用于IP伪装。也就是进行NAT地址转换。
7.Forward链进行访问控制:
1.iptables -I FORWARD 1 -d www.sohu.com -j DROP拒绝访问某些网站。需要进行DNS域名的解析。
1.实现智能DNS服务
2.iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 53 -j DNAT --to 202.106.0.30:53
echo "1" > /proc/sys/net/ipv4/ip_forward 临时开启路由。如果永久开启路由需要修改/etc/sysctl.conf文件
Selinux的开启与关闭
/etc/sysconfig/selinux
/etc/selinux/config
selinux状态:
1.enforcing 强制模式.
2.permissive 警告模式.
3.disabled 关闭
本文出自 “马广杰——博客” 博客,转载请与作者联系!
标签:firewall
原文地址:http://maguangjie.blog.51cto.com/11214671/1965753