iptables命令是Linux上常用的防火墙软件
netfilter组件称为内核空间,用于扩展各种组件,一般从事研发角度开发网络新特性
iptables命令格式:
iptables -t 表名 <-A/I/D/R> 链 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作
表名:访问控制表名称
链:表示数据来源方向
动作:允许、拒绝、源地址转换、目的地址的转换、伪装
INPUT:处理入站数据包(处理访问防火墙本机的数据)
OUTPUT:处理出站数据包(处理防火墙本机访问其他主机的数据)
FORWARD:处理转发数据包(处理经过防火墙转发的数据包,源地址、目标地址均不是防火墙本机)
POSTROUTING链:在进行路由选择后处理数据包(对数据包进行处理)
PREROUTING链:在进行路由选择前处理数据包

wKiom1gy5cWim-UXAAIaDFaOeJQ355.jpg
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 #禁止其他未允许的规则访问
iptables -I INPUT -s 123.45.6.7 -j DROP #屏蔽单个IP的命令
iptables -I INPUT -s 123.45.6.0/24 -j DROP #封堵IP段
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.实现智能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 关闭