centos防火墙开启firewall和iptables
在centos7默认启用的是firewall,但是如果需要用到iptables是否会冲突
冲突,默认启动firewall,iptables需要安装
如果开启了firewall在开启iptables那么firewall会关闭
iptables服务将配置存储在/etc/sysconfig/iptables和/etc/sysconfig/ip6tables中,
而firewalld将配置存储在/usr/lib/firewalld/和/etc/firewalld/中的各种XML文件中。
注意,/etc/sysconfig/iptables文件不存在,因为在Red Hat Enterprise Linux上默认安装了firewalld。
在iptables服务中,每次更改都意味着刷新所有旧规则并从/etc/sysconfig/iptables读取所有新规则,而在firewalld中不需要重新创建所有规则。只应用差异。
因此,firewalld可以在运行时更改设置,而不会丢失现有的连接
查看已经启动的服务列表
systemctl list-unit-files|grep enabled
iptables和firewall建议使用哪一个
答:iptables更合适一点,规则更好实现
iptables 4个表
iptables包含4个表:filter,nat,mangle,raw。我们最常用的就是filter这个表。filte表有三个内建的chain:INPUT、OUTPUT和FORWORD。
INPUT:用来处理发给本机的数据包;如主机A发给本机的数据,数据通信路径会像这:主机A------>本机localhost
OUTPUT:用来处理本机发送出去的数据包;如本机访问百度服务器,数据通信路径会像这样,如本机localhost------>百度服务器
FORWORD:用来处理流经本机,但又不是发给本机的数据包;如主机A要给主机B发送数据包,经过了本机,路径会像这样:主机A--->本机localhost--->主机B。
1. Filter表
Filter表示iptables的默认表,因此如果你没有自定义表,那么就默认使用filter表,它具有以下三种内建链:
- INPUT链 – 处理来自外部的数据。
- OUTPUT链 – 处理向外发送的数据。
- FORWARD链 – 将数据转发到本机的其他网卡设备上。
2. NAT表
NAT表有三种内建链:
- PREROUTING链 – 处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。
- POSTROUTING链 – 处理即将离开本机的数据包。它会转换数据包中的源IP地址(source ip address),通常用于SNAT(source NAT)。
- OUTPUT链 – 处理本机产生的数据包。
3. Mangle表
Mangle表用于指定如何处理数据包。它能改变TCP头中的QoS位。Mangle表具有5个内建链:
- PREROUTING
- OUTPUT
- FORWARD
- INPUT
- POSTROUTING
4. Raw表
Raw表用于处理异常,它具有2个内建链:
- PREROUTING chain
- OUTPUT chain
iptables的使用
查看iptables和iptables-services服务是否安装
查看iptables是否安装:rpm -qa | grep iptables
显示版本号:iptables -V
查看iptables是否运行:systemctl status iptables
查看iptables防火墙状态 :chkconfig --list iptables
安装iptables: yum install -y iptables
安装iptables-services: yum install iptables-services
启动服务: service iptables start
停止服务: service iptables stop
重启服务: service iptables restart
iptables规则保存重启也生效
执行命令:service iptables save
规则自动保存到了/etc/sysconfig/iptables,用此命令保存的规则开机会自动生效
iptables规则保存
#每一次输入了service iptables save命令才会命令在/etc/sysconfig/iptables
查看当前规则:
cat /etc/sysconfig/iptables
运行了这个命令才能写入文件/etc/sysconfig/iptables里面:service iptables save
#同步iptables文件备份的命令到iptables.save文件:iptables-save > /etc/sysconfig/iptables.save
重启iptables服务
service iptables stop
service iptables start
重启防火墙使配置文件生效:systemctl restart iptables.service
查看当前规则:cat /etc/sysconfig/iptables
恢复系统备份的规则:
查看现有 iptables 规则
列表现有规则:iptables -L -n
查看mangle表:iptables -t mangle --list
查看NAT表:iptables -t nat --list
查看RAW表: iptables -t raw --list
iptables [-t tables] [-L] [-nv]
选项与参数:
-t:后面接table,例如nat或filter,若省略,则使用默认的filter
-L:列出目前的table的规则
-n:不进行IP与HOSTNAME的反查,显示信息速度回快很多。
-v:列出更多的信息,包括通过该规则的数据包总位数、相关的网络接口等
target:代表进行的操作,ACCEPT是放行,而REJECT则是拒绝,此外,还有DROP表示丢弃。
prot:代表使用的数据包协议,主要有TCP、UDP以及ICMP3种数据包格式。
opt:额外选项说明。
source:代表此规则是针对哪个来源IP进行限制。
destination:代表此规则是针对哪个目标进行限制
列表现有规则:iptables-save
iptables-save [-t table]
选项与参数:
-t:可以针对某些数据表格来输出,例如针对NAT或Filter等。
该命令会完整列出防火墙的规则
列:iptables-save -t filter
清除iptables
# 清除iptables 所有规则
iptables -F -t nat
iptables -F -t mangle
iptables -F -t security
iptables -F -t raw
iptables -F -t filter
#清除规则(默认规则除外)
iptables -F
#清空所有自定义规则
iptables -X
#所有计数器归0
iptables -Z
#永久性生效
chkconfig iptables on
chkconfig ip6tables off ---针对ipv6
#永久性生效关闭
chkconfig iptables off
chkconfig ip6tables off ---针对ipv6
#设置防火墙开机启动,重启服务器命令还在
systemctl enable iptables.service
#重启防火墙使配置生效
systemctl restart iptables.service
#禁止防火墙开机启动
systemctl disable iptables.service
如果启动不,就先所住firewalld服务
1.关闭firewalld命令
查看防火墙是否启动: firewall-cmd --state
关闭防火墙: systemctl stop firewalld.service
设置防火墙开机启动: systemctl enable firewalld
禁止防火墙开机启动 :systemctl disable firewalld
锁定:systemctl mask firewalld
解锁:systemctl unmask firewalld
2.查看iptables
查看iptables是否安装:rpm -qa | grep iptables
查看iptables是否运行:systemctl status iptables
查看iptables防火墙状态 :chkconfig --list iptables
安装iptables: yum install -y iptables
安装iptables-services: yum install iptables-services
systemctl restart iptables
启用:service iptables start
iptables服务启动:service iptables save
#提示Redirecting to /biji/systemctl start iptables.service 翻译:重定向到 /biji/systemctl start iptables.service
服务开机启动:systemctl enable iptables.service
服务重启:systemctl restart iptables.service
查看开启:chkconfig --list iptables
iptables服务启动:service iptables save
查看相关规则:iptables -L
查看已经启动的服务列表:systemctl list-unit-files|grep enabled
#编辑防火墙文件 (建议都在配置文件配置,不要命令配置)
vi /etc/sysconfig/iptables
#重启防火墙使配置文件生效
systemctl restart iptables.service
#设置iptables防火墙为开机启动项
systemctl enable iptables.service
iptables规则端口的使用
配置文件都vi /etc/sysconfig/iptables 保存重启防火墙生效
保存策略重启服务使策略生效
说明以下:/etc/sysconfig/iptables.save 和 service iptables save 命令
直接输入了 iptables策略是在文件iptables 那么运行了保存的 iptables.save 是重启也会生效还在的
就有必要运行这个命令了,想要生效就保存在/etc/sysconfig/iptables.save 里面
查看生效
iptables -L -n --line-number //查看当前iptables的规则及所有过滤的条目(白名单显示在这里)
开放和关闭端口
-A INPUT -p tcp --dport 22 -j ACCEPT #22端口开放
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT #80端口开放
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j DROP #80端口关闭
iptables -A INPUT -p tcp --dport 80 -j DROP #拒绝其他所有访问80端口
ip白名单
iptables -A INPUT -s 192.111.51.45 -p all -j ACCEPT #/开放所有端口给指定ip:192.111.51.45
开放白名单ip和指定端口
-I INPUT -s 192.111.51.45 -p tcp --dport 8080 -j ACCEPT #开放固定ipIP访问 8080
-I INPUT -s 192.111.51.45 -p tcp --dport 8089 -j DROP #禁止指定IP访问 8089
允许/禁止ping
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT #允许ping
iptables -A INPUT -p icmp --icmp-type 8 -j DROP #禁止ping
firewall的使用
基础的使用
#查看防火墙是否启动
firewall-cmd --state
未开启:not running
开启:running
#开启防火墙
systemctl start firewalld.service
#关闭防火墙
systemctl stop firewalld.service
#设置防火墙开机启动
systemctl enable firewalld
#禁止防火墙开机启动
systemctl disable firewalld
如果开启了firewalld需要关闭在禁止开机启动
# 每次修改添加了更新防火墙规则firewall规则需要更新规则才能生效
firewall-cmd --reload
查看规则firewalld是否启用,底层也是用的iptables,但是需要用iptables规则还需要安装
iptables -L -n
#防火墙配置目录文件位置
/etc/firewalld/zones/public.xml
firewalld端口的操作
#查看防火墙所有开放的端口
firewall-cmd --zone=public --list-ports
#开启8888端口通讯
firewall-cmd --zone=public --add-port=8888/tcp --permanent
#关闭8888端口通讯
firewall-cmd --zone=public --remove-port=8888/tcp --permanent
#添加ip到防火墙白名单8888端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="123.144.0.0/14" port protocol="tcp" port="8888" accept'
#查看防火墙所有开放的端口
firewall-cmd --zone=public --list-ports
#开启8888端口通讯
firewall-cmd --zone=public --add-port=8888/tcp --permanent
#关闭8888端口通讯
firewall-cmd --zone=public --remove-port=8888/tcp --permanent
#添加ip到防火墙白名单8888端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="123.144.0.0/14" port protocol="tcp" port="8888" accept'
firewalld规则删除
#删除 firewalld 规则:
rm -rf /etc/firewalld/zones
#重启防火墙服务
systemctl restart firewalld
#清理自定义规则
rm -f /etc/firewalld/direct.xml
查看生效
iptables -L
共有 0 条评论