iptables防火墙 |
您所在的位置:网站首页 › 麒麟操作系统关闭防火墙命令 › iptables防火墙 |
版权声明:原创作品,谢绝转载!否则将追究法律责任。 ————— 作者:kirin
1.iptables 执行过程
1.防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后 进行过滤的。
2. 如果匹配成功规则,即明确表示是拒绝(DROP)还是接收(ACCEPT),数 据包就不再向下匹配新的规则。
3. 如果规则中没有明确表明是阻止还是通过的,也就是没有匹配规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
4. 防火墙的默认规则是所有规则都匹配完才会匹配的
2.表与链
1 简介
iptables 是 4表伍链
4表: filter 表 nat表 raw表 mangle表
伍链: INPUT OUTPUT FORWARD PREROUTING POSTROUTING
pre.... 之前
post .....之后
2 每个表说明
2.1filter表
实现防火墙功能: 屏蔽或准许 端口 ip
强调:主要和主机自身相关,真正负责主机防火墙功能的 (过滤流入流出主机的数据包) filter表示iptables默认 使用的表,这个表定义了三个链(chains) 企业工作场 景:主机防火墙
INPUT链:负责过滤所有目标地址是本机地址的数据包 通俗来说: 就是过滤进入主机的数据包 (能否让数据包进入服务器)
2.2nat表
实现nat功能 实现共享上网(内网服务器上外网) 端口映射和ip映射
nat:负责网络地址转换的,即来源与目的IP地址和port 的转换。 应用:和主机本身无关,一般用于局域网共享上网 或者特殊的端口转换服务相关。
工作场景: 1. 用于企业路由(zebra)或网关(iptables),共 享上网(POSTROUTING) 2. 做内部外部IP地址一对一映射(dmz),硬件防 火墙映射IP到内部服务器,ftp服务 (PREROUTING) 3. WEB,单个端口的映射,直接映射80端口 (PREROUTING) 这个表定义了3个链,nat功能 相当于网络的acl控制。和网络交换机acl类似
PREROUTING链:在数据包到达防火墙时,进行路由判断之前执行的规则,作用是改变数据包的目的地址、目的端口等就是收信时,根据规则重写收件人的地址。例如:把公网IP:xxx.xxx.xxx.xxx映射到局域网的 xx.xx.xx.xx服务器上。 如果是web服务,可以报80转换为局域网的服务器 9000端口上
POSTROUTING链:在数据包离开防火墙时进行路由判断之后执行的规 则,作用改变数据包的源地址,源端口等。 写好发件人的地址,要让家人回信时能够有地址可 回。 例如。默认笔记本和虚拟机都是局域网地址,在出 网的时候被路由器将源地址改为了公网地址。 生产应用:局域网共享上网。
3.环境准备及相关命令
1.环境准备
m01
10.0.0.61;172.16.1.61
web01
10.0.0.7 172.16.1.7
web02
10.0.0.8 172.16.1.8
[root@m01 ~]# yum install -y iptables-services
[root@m01 ~]# rpm -ql iptables-services
/etc/sysconfig/ip6tables
/etc/sysconfig/iptables #防火 墙的配置文件
/usr/lib/systemd/system/ip6tables.service
/usr/lib/systemd/system/iptables.service#防火 墙服务配置文件(命令)
[root@m01 ~]# rpm -ql iptables
/usr/sbin/iptables #iptables 命令 添加/删除/查 看 规则(4表伍链)
/usr/sbin/iptables-save #iptables规则 输出(保存)
/usr/sbin/iptables-restore # 恢复
#防火墙相关模块 加载到内核中(临时) [root@m01 ~]# modprobe ip_tables [root@m01 ~]# modprobe iptable_filter [root@m01 ~]# modprobe iptable_nat [root@m01 ~]# modprobe ip_conntrack [root@m01 ~]# modprobe ip_conntrack_ftp [root@m01 ~]# modprobe ip_nat_ftp [root@m01 ~]# modprobe ipt_state#永久 [root@m01 ~]# cat >>/etc/rc.local modprobe iptable_filter > modprobe iptable_nat > modprobe ip_conntrack > modprobe ip_conntrack_ftp > modprobe ip_nat_ftp > modprobe ipt_state > EOF检查是否加入 [root@m01 ~]# lsmod |egrep 'filter|nat|ipt' nf_nat_ftp 12809 0 nf_conntrack_ftp 18478 1 nf_nat_ftp iptable_nat 12875 0 nf_nat_ipv4 14115 1 iptable_nat nf_nat 26583 2 nf_nat_ftp,nf_nat_ipv4 nf_conntrack 139264 6 nf_nat_ftp,nf_nat,xt_state,nf_nat_ipv4,nf_conntrack_ftp,nf_conntrack_ipv4 iptable_filter 12810 0 ip_tables 27126 2 iptable_filter,iptable_nat libcrc32c 12644 3 xfs,nf_nat,nf_conntrack关闭自带防火墙并启动iptables [root@m01 ~]# systemctl stop firewalld [root@m01 ~]# systemctl disable firewalld [root@m01 ~]# systemctl start iptables.service [root@m01 ~]# systemctl enable iptables.service Created symlink from /etc/systemd/system/basic.target.wants/iptables.service to /usr/lib/systemd/system/iptables.service.#查看filter表中的规则 ,默认查看的是filter表 [root@m01 ~]# iptables -nL#查看指定表中的规则 [root@m01 ~]# iptables -t nat -nL 2.iptables命令参数 参数 含义 -L 显示表中的所有规则 -n 不要把端口 或ip反向解析为名字 -t 指定表 不指定默认是filter表 -A 追加 加入准许类规则 使用-A -I insert 把规则加在链的第1条 拒绝类规则放在所有 规则最上面 拒绝类 -I -D delete 删除 -D INPUT 1 -p 协议 protocal tcp/udp/icmp/all –dport 目标端口 dest destination 指定端口 加上协议 -p tcp –sport 源端口 source 源 -s –source 源ip -d –destination 目标ip -m 指定模块 multiport -i input 输入的时候 从哪个网卡进来 -o ouput 输出的时候 从哪个网卡出去 -j 满足条件后的动作:DROP/ACCEPT/REJECT DROP REJECT拒绝 DROP 把数据丢掉 不会返回信息给用户 REJECT 拒绝 返回拒绝信息 -F 清除所有规则,不会处理默认的规则 -X 删除用户自定义的链 -Z 链的计数器清零(数据包计数器与数据包字节计数器) 3 配置filter表规则 3.1正式配置之前先清空规则 [root@m01 ~]# iptables -F [root@m01 ~]# iptables -X [root@m01 ~]# iptables -Z [root@m01 ~]# iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 3.2禁止访问22端口 [root@m01 ~]# iptables -t filter -A INPUT -p tcp --dport 22 -j DROP ###拒绝用户访问22端口(危险,一会要跑机房) #此时发现Xshell已经无法进行操作了 #进入机房 #查看规则并加上序号 [root@m01 ~]# iptables -t filter -nL --line-number #删除规则 iptables -t filter -D INPUT 1 #根据序号删除 3.3 封ip 屏蔽某个ip#拒绝10.0.0.7访问 [root@m01 ~]# iptables -t filter -I INPUT -s 10.0.0.7 -j DROP [root@m01 ~]# iptables -t filter -nL --line-number Chain INPUT (policy ACCEPT) num target prot opt source destination 1 DROP all -- 10.0.0.7 0.0.0.0/0 Chain FORWARD (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination#拒绝某个网段的访问 [root@m01 ~]# iptables -I INPUT -s 172.16.1.0/24 -j DROP [root@m01 ~]# iptables -t filter -nL --line-number Chain INPUT (policy ACCEPT) num target prot opt source destination 1 DROP all -- 172.16.1.0/24 0.0.0.0/0 2 DROP all -- 10.0.0.7 0.0.0.0/0 Chain FORWARD (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination#禁止网段连入(禁止10.0.0.0/24网段访问 8888端口) [root@m01 ~]# iptables -I INPUT -s 10.0.0.0/24 -p tcp --dport 8080 -j DROP [root@m01 ~]# iptables -t filter -nL --line-number Chain INPUT (policy ACCEPT) num target prot opt source destination 1 DROP tcp -- 10.0.0.0/24 0.0.0.0/0 tcp dpt:8080 2 DROP all -- 172.16.1.0/24 0.0.0.0/0 3 DROP all -- 10.0.0.7 0.0.0.0/0 Chain FORWARD (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination 3.4只允许指定网段连入(允许172.16.1.0网段)#方法1: 利用 ! 进行排除 [root@m01 ~]# iptables -I INPUT ! -s 172.16.1.0/24 -j DROP#方法2: 修改链默认规则 修改为拒绝 添加准许 [root@m01 ~]# iptables -P INPUT DROP [root@m01 ~]# iptables -nL Chain INPUT (policy DROP)####已经变为拒绝了 target prot opt source destination ACCEPT all -- 10.0.0.0/24 0.0.0.0/0 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination #测试完成后 修改回去 [root@m01 ~]# iptables -P INPUT ACCEPT [root@m01 ~]# iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- 10.0.0.0/24 0.0.0.0/0 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 3.5 指定多个端口#指定多个端口 -m multiport -p tcp --dport 80,443 [root@m01 ~]# iptables -t filter -A INPUT -m multiport -p tcp --dport 80,443 -j ACCEPT [root@m01 ~]# iptables -nL 3.6匹配ICMP类型###通过防火墙设置 [root@m01 ~]# iptables -I INPUT -p icmp --icmp-type 8 -j DROP [root@m01 ~]# iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination DROP icmp -- 0.0.0.0/0 0.0.0.0/0 icmptype 8 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination###通过内核参数设置 [root@m01 ~]# echo "net.ipv4.icmp_echo_ignore_all = 1" >> /etc/sysctl.conf [root@m01 ~]# sysctl -p net.ipv4.icmp_echo_ignore_all = 1 [root@m01 ~]# cat /proc/sys/net/ipv4/icmp_echo_ignore_all 1 3.7 限制并发及速率-m limit 限制模块 -m limit –limit 10/minute #每分钟只能有10个数据包 每6秒 生成 iptables -I INPUT -p icmp -m limit –limit 10/minute –limit-burst 5 -j ACCEPT 3.8 防火墙规则的保存与恢复iptables-save 默认输出到屏幕 iptables-restore 加上文件 写入到/etc/sysconfig/iptables ####保存 [root@m01 ~]# iptables-save >/etc/sysconfig/iptables [root@m01 ~]# cat /etc/sysconfig/iptables # Generated by iptables-save v1.4.21 on Fri May 28 16:52:58 2021 *nat :PREROUTING ACCEPT [55:8594] :INPUT ACCEPT [27:6329] :OUTPUT ACCEPT [113:7357] :POSTROUTING ACCEPT [113:7357] COMMIT # Completed on Fri May 28 16:52:58 2021 # Generated by iptables-save v1.4.21 on Fri May 28 16:52:58 2021 *filter :INPUT ACCEPT [30:2576] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [364:46616] -A INPUT -s 10.0.0.0/24 -j ACCEPT -A INPUT -s 10.0.0.0/24 -p icmp -m icmp --icmp-type 8 -j DROP COMMIT # Completed on Fri May 28 16:52:58 2021###删除后的恢复 [root@m01 ~]# iptables -D INPUT 1 [root@m01 ~]# iptables -D INPUT 1 [root@m01 ~]# iptables -D INPUT 1 iptables: Index of deletion too big. [root@m01 ~]# iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination [root@m01 ~]# iptables-restore < /etc/sysconfig/iptables [root@m01 ~]# iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- 10.0.0.0/24 0.0.0.0/0 DROP icmp -- 10.0.0.0/24 0.0.0.0/0 icmptype 8 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 4. nat表规则 4.1 实现共享上网##防火墙配置 [root@m01 ~]# iptables -t nat -A POSTROUTING -s 172.16.1.7 -j SNAT --to-source 10.0.0.61 [root@m01 ~]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf [root@m01 ~]# sysctl -p net.ipv4.icmp_echo_ignore_all = 1 net.ipv4.ip_forward = 1##web端配置 [root@web01 ~]# echo GATEWAY=172.16.1.61 >> /etc/sysconfig/network-scripts/ifcfg-eth1 [root@web01 ~]# ifdown eth1 && ifup eth1 4.2 实现端口转发##防火墙配置 [root@mb01 ~]# iptables -t nat -I PREROUTING -d 10.0.0.61 -p tcp --dport 9000 -j DNAT --to-destination 172.16.1.7:22 [root@mb01 ~]# sysctl -p net.ipv4.icmp_echo_ignore_all = 1 net.ipv4.ip_forward = 1 ###然后用xshell连接测试一下吧
本文来自博客园,作者:kirin(麒麟),转载请注明原文链接:https://www.cnblogs.com/kirin365/articles/16137202.html |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |