概述
关键基本要素
- 五张表
-
- filter:默认表,负责过滤数据包,使用频率最高
- nat :用于网络地址转换(ip、端口 )和流量转发、使用频率较低
- mangle:更改流量数据,修改数据包
- raw:很少用到,链接跟踪作用
- security:很少用到:Linux最新的安全规则
- 五条链(规则一定要建立在链上):流量的方向
-
- input : 匹配目标ip是本机的数据包,入站
- output : 出口数据包,出站
- forward: 匹配流经本机的数据包,转发
- prerouting: 要经过你的防火墙转发给另外一台主机,起修改目的地址的作用,用来做DNAT 例如:把内网的80端口映射到互联网端口
- 规则
需要:
先安装iptables-services: yum install iptables-services
IPTables的使用
- firewalld防火墙在默认没有设定规则的情况下,拒绝所有流量
- iptables 防火墙,开放了80端口
基本命令的使用
-
iptables - nL : 以数字形式显示端口号-显示默认表中的filler表中的规则 iptables -I INPUT -j DROP : 丢弃所有入站流量,包括SSH!!,远程慎用
-
iptables -t nat / filler 查看某协议规则表(不写默认filler)
防火墙添加规则:
在防火墙使用过程中,一般先阻断所有流量,再打开白名单:
iptables -I INPUT -j DROP
入站防火墙DROP:
由于防火墙拒绝了INPUT的所有流量,xshell被断开了,于是返回虚拟机:
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
XShell已经重新连接,输入iptables -nL:
已经有22号端口准入,此时的系统只允许22号端口进入,其余的全部丢弃
毫无疑问,此前搭建的Xampp在客户端已经无法访问
出站防火墙DROP
iptables -I OUTPUT -j DROP 所有出站流量全部丢弃,包括SSH响应
淦,我的XShell又没有反应了
此时就要在虚拟机上配置出站规则了,注意此时相对于客户端(XShell),出站的那一方(VMware)就是源端口了,此时的命令就变成:
iptables -I OUTPUT -p tcp --sport 22 -j ACCEPT (是sport,还有两个杠杠!!)
防火墙规则删除
- 列出防火墙行号
iptables -L OUTPUT --line-numbers
- 删除该规则的对应的行号
iptables -D OUTPUT 5
防火墙规则拒绝
iptables -I INPUT/OUTPUT -p 协议 -j REJECT
在真实机上ping显示无法连接到端口,而drop命令显示连接超时
保存服务命令
service iptables save
文档保存在:cat /etc/sysconfig/iptables
未保存的命令在重启服务后会失效!!
清空规则
iptables -F
注释
- 防火墙一般用白名单,添加允许的规则
- 出入站一旦全部Drop,所有流量无法进,出,断网状态
- service iptables save :service不是services,奶奶滴还以为机子病了
- drop不会给拒绝响应,reject有拒绝响应
(连自己都访问不了)
- drop和reject ,一般优先使用drop
- dport未开放80,sport开放了80 可以杜绝服务器向外的流量(反弹shell)
- -A是追加,在那个规则列表后追加一个条目
- -I是把最新的那个规则置顶(优先级调到最高)
- 命令(-A和-I的区别)
- 可以结合其他命令,实现定时开关网络的作用
iptables -I INPUT -j DROP
iptables -I OUTPUT -j DROP
总结
yum install iptables-services 安装iptables-services
iptables -I INPUT -j DROP 丢弃所有入站流量,包括SSH!!,远程慎用
iptables -nL 用端口号的形式查看表
iptables -I INPUT/OUTPUT -p 协议 -dport/sport 端口号 -j ACCEPT
iptables -L OUTPUT --line-numbers 列出防火墙行号
iptables -D OUTPUT 5 删除该规则的对应的行号
service iptables save 保存命令
iptables -F 清空
tips:感谢蜗牛!