一、firewall和iptables的区别:

首先需要先知道firewall是centos7里面的新的防火墙命令,它底层还是使用 iptables 对内核命令动态通信包过滤的,简单理解就是firewall是centos7下管理iptables的新命令。所以最原始的、最底层防火墙还是iptables作为安全防护套件。

二、如果没有安装iptables,可以先查看是否有安装iptables

ps -ef | grep iptables 或 iptables -nL ###显现信息

如果没有安装可以使用yum安装

yum install iptables-services

三、firewall和iptables之间的切换:

CentOS7以后默认使用了firewall防火墙,如果想换回iptables,可以切换两者状态

# 由 firewalld 转换为 iptables
systemctl stop firewalld ###停止firewalld运行
systemctl mask firewalld ###冻结firewalld防火墙
systemctl start iptables.service ###启动iptables防火墙服务
systemctl enable iptables.service ###开机启动iptables防火墙服务
systemctl status iptables.service ###查看iptables防火墙服务状态

如果已开启了iptables防火墙,要切换回firewall,

可先查看firewall防火墙的状态

firewall-cmd  --state

>>not running

然后切换防火墙,打开firewall,关闭iptables

# 由iptables转换为firewalld
systemctl  stop  iptables.service
systemctl  mask  iptables.service
systemctl  unmask   firewalld
systemctl  start  firewalld

四、开放端口号

(1).firewall开放端口号(CentOS7以后版本):

###查看对外开放的端口状态
#查询已开放的端口
netstat  -ntulp | grep 端口号:可以具体查看某一个端口号
#查询指定端口是否已开
firewall-cmd --query-port=666/tcp
提示 yes,表示开启;no表示未开启。

#查看防火墙状态 
systemctl status firewalld
#开启防火墙 
systemctl start firewalld (service firewalld start )
#关闭防火墙 
systemctl stop firewalld

###若遇到无法开启
#先解冻防火墙:
systemctl unmask firewalld.service 
#然后再开启防火墙:
systemctl start firewalld.service

###对外开发端口
#查看想开的端口是否已开:
firewall-cmd --query-port=6379/tcp
#添加指定需要开放的端口:
firewall-cmd --add-port=123/tcp --permanent
#重载入添加的端口:
firewall-cmd --reload
#查询指定端口是否开启成功:
firewall-cmd --query-port=123/tcp

#移除指定端口:
firewall-cmd --permanent --remove-port=123/tcp

(2).iptables开放端口号(CentOS6.x及之前版本):

#打开iptables的配置文件:
vi /etc/sysconfig/iptables

#修改CentOS防火墙时注意:一定要给自己留好后路,留VNC一个管理端口和SSh的管理端口

###下面是一个iptables的示例:

# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp –icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m udp -p udp –dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT –reject-with icmp-host-prohibited
COMMIT

#修改CentOS防火墙需要注意的是,你必须根据自己服务器的情况来修改这个文件。

#举例来说,如果你不希望开放80端口提供web服务,那么应该相应的删除这一行:
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT

#全部修改完之后重启
iptables:service iptables restart

#你可以验证一下是否规则都已经生效:
iptables -L

#这样,我们就完成了CentOS防火墙的设置修改。

五、firewall网络设置:

#查看设定的网络名称
firewall-cmd  --get-active-zones

#查看默认的网络名称
firewall-cmd  --get-default-zone

#查看所有的网络名称
firewall-cmd  --get-zones

#网络名称为公共,列出所有允许的服务
firewall-cmd  --zone=public --list-all

#允许的服务有哪些
firewall-cmd  --get-services

#列出所有网络名称的详细信息
firewall-cmd  --list-all-zones

#设置网络名称为信任
firewall-cmd  --set-default-zone=trusted

#做下列实验可以将网络名称设为公共,这样就可以在浏览器上直接访问10.10.10.10该域名了
firewall-cmd  --set-default-zone=public
firewall-cmd  --list-all
firewall-cmd  --add-source=10.10.10.10  --zone=trusted###49主机可以等http验证,这是在没有http服务的情况下

#移出10.10.10.10主机,不可以登入
firewall-cmd  --remove-source=10.10.10.10 --zone=trusted
#添加网卡eth1并且设ip
firewall-cmd  --list-all
firewall-cmd  --remove-interface=eth1  --zone=public
firewall-cmd  --list-all
firewall-cmd  --add-interface=eth1  --zone=trusted
firewall-cmd  --get-active-zones

#添加服务
firewall-cmd  --add-service=http
#改8080端口
vim  /etc/httpd/conf/httpd.conf

#重启httpd服务并开放8080端口
systemctl  restart  httpd
firewall-cmd  --permanent  --zone=public  --add-port=8080/tcp

#列出所有开放端口信息
firewall-cmd  --reload
firewall-cmd  --list-all

#移出8080端口
firewall-cmd  --permanent  --zone=pinlic  --remove-port=8080/tcp
firewall-cmd  --reload
firewall-cmd    --list-all

#移除ssh
firewall-cmd   --permanent --remove-service=ssh
#不会立即中断ssh服务时别人还能连他
firewall-cmd  --reload
#立即中断此服务别人不能连他
firewall-cmd  --complete-reload

#允许10来 ssh这是在移除ssh的情况下做的
firewall-cmd  --direct  --add-rule  ipv4  filter  INPUT 2 -s     10.10.10.10   -p  tcp  --dport  22  -j ACCEPT
#10不能ssh
firewall-cmd  --direct  --remove-rule  ipv4  filter  INPUT 2 -s  10.10.10.10   -p  tcp  --dport  22  -j ACCEPT
#除过10,其他能访问,其他人能ssh
firewall-cmd  --direct  --add-rule  ipv4  filter  INPUT 2  ! -s 10.10.10.10   -p  tcp  --dport  22  -j ACCEPT

 

虽然有防火墙,但是还可以实现内网穿透

Frp 实现内网穿透(linux环境):https://blog.csdn.net/qq_31014133/article/details/78834277