一、默认防火墙firewall
由于centos7默认是使用firewall作为防火墙
- 安装firewalld 防火墙
yum install firewalld - 开启服务
systemctl start firewalld.service
关闭防火墙
systemctl stop firewalld.service - 开机自动启动
systemctl enable firewalld.service
关闭开机制动启动
systemctl disable firewalld.service
- 启动报错
Failed to start firewalld.service: Unit is masked.
image.png - 执行命令,即可实现取消服务的锁定
systemctl unmask firewalld
- 使用firewall-cmd 命令
查看状态:running 表示运行
firewall-cmd --state
获取活动的区域firewall-cmd --get-active-zones
这条命令将用以下格式输出每个区域所含接口:
<zone1>: <interface1> <interface2> ..<zone2>: <interface3> ..获取所有支持的服务firewall-cmd --get-service
在不改变状态的条件下重新加载防火墙:firewall-cmd --reload
- 开启https或者某个端口
firewall-cmd --zone=public --add-service=https //临时
firewall-cmd --permanent --zone=public --add-service=https //永久
firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp //永久
firewall-cmd --zone=public --add-port=8080-8081/tcp //临时
#删除
firewall-cmd --permanent --zone=public --remove-port=8080-8081/tcp //永久
- 使用命令加载设置(
生效
)
firewall-cmd --reload
例如:
systemctl start firewalld.service
systemctl enable firewalld.service
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=4000-20000/tcp
firewall-cmd --permanent --zone=public --list-ports
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --reload
- 查看开启的端口和服务
firewall-cmd --permanent --zone=public --list-services //服务空格隔开 例如 dhcpv6-client https ss
firewall-cmd --permanent --zone=public --list-ports //端口空格隔开 例如 8080-8081/tcp 8388/tcp 80/tcp
效果如下:
image.png
- 设置某个ip 访问某个服务
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" service name="http" accept"
ip 192.168.0.4/24 访问 http
- 删除上面设置的规则
firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="192.168.0.4/24" service name="http" accept"
- 检查设定是否生效
iptables -L -n | grep 21
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 ctstate NEW
执行命令firewall-cmd --list-all
显示:
public (default)
interfaces:
sources:
services: dhcpv6-client ftp ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
查询服务的启动状态
firewall-cmd --query-service ftp
yes
firewall-cmd --query-service ssh
yes
firewall-cmd --query-service samba
no
firewall-cmd --query-service http
no
自行加入要开放的 Port
firewall-cmd --add-port=3128/tcp
firewall-cmd --list-all
public (default)
interfaces:
sources:
services: dhcpv6-client ftp ssh
ports: 3128/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
二、防火墙iptables
- 停止firewall
systemctl stop firewalld.service - 禁止firewall开机启动
systemctl disable firewalld.service
- 安装iptables
yum install iptables-services - 设置开机启动、不启动
systemctl enable iptables
systemctl disable iptables - 编辑防火墙文件 (建议都在配置文件配置,不要命令配置)
vi /etc/sysconfig/iptables
添加80和3306端口 等等(自己配置)
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT #80端口开放 - 重启防火墙使配置文件生效
systemctl restart iptables.service
设置iptables防火墙为开机启动项
systemctl enable iptables.service
service iptables start #启动服务
service iptables stop #停止服务
service iptables restart #重启服务 - 关闭SELINUX
vi /etc/selinux/config #注释以下配置
SELINUX=enforcing
SELINUXTYPE=targeted #增加以下配置
SELINUX=disabled #使配置立即生效
setenforce 0