这篇文章和下篇文章主要讲防火墙,企业7之前用的是iptables,企业7之后用的是iptables和firewall,由于firewall和Windows的防火墙相似,且较为简单,所以这篇主要讲firewall。
环境配置:
一台主机,两台虚拟机,一台虚拟机配置两个网卡,一块网卡与主机的IP处于同一网段,另一块网卡与另一台虚拟机的IP处于同一网段,且与主机IP处于不同的网段,以获得更好的实验效果。
使用命令行接口配置防火墙:
firewall-cmd --state #显示防火墙的状态
firewall-cmd --get-active-zones #查看防火墙正在运行的域
firewall-cmd --get-default-zone #查看默认域
firewall-cmd --get-zones #查看所有域
firewall-cmd --zone=public --list-all #查看public域的详细信息
firewall-cmd --get-services #查看防火墙所支持的服务
firewall-cmd --list-all-zones #查看所有域的详细信息
firewall-cmd --set-default-zone=trusted #修改默认域为信任域
firewall-cmd --permanent --zone=trusted --add-source=172.25.0.0/24 #将172.25.0.0永久添加到信任域
firewall-cmd --permanent --zone=trusted --remove-source=172.25.0.0/24 #将172.25.0.0从信任域永久移除
firewall-cmd --permanent --zone=trusted --add-interface=eth0 #将网卡eth0永久添加到信任域
firewall-cmd --permanent --zone=trusted --change-interface=eth0 #将网卡eth0永久移动到信任域
firewall-cmd --permanent --zone=trusted --remove-interface=eth0 #将网卡eth0从信任域永久移除
使用命令行配置防火墙上的服务:
firewall-cmd --get-services #查看防火墙所支持的服务
cd /usr/lib/firewalld/services #防火墙上的服务都在这个目录里
cp -p nfs.xml iscsi.xml #创建iscsi服务的配置文件
vim iscsi.xml
<?xmL version="1.0" encoding="utf-8" ?>
<service>
<short> ISCSI</short>
<description>iscsi service</ description>
<port protocol="tcp"
port="3260"/>
</service>
firewall-cmd --reload
firewall-cmd --get-services #查看是否添加成功
firewall-cmd --permanent --add-service=iscsi
firewall-cmd --reload
vim /etc/firewalld/zones/public.xml
firewall-cmd --list-services
vim /etc/firewalld/zones/public.xml
也可以编辑配置文件,自己手动添加服务:
在防火墙上永久添加端口:
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --list-ports
firewall-cmd --remove-port=8080/tcp --permanent #删除端口
firewall-cmd --reload
firewall-cmd --list-ports
firewall-cmd --reload #只刷新防火墙的状态,不管服务的状态
firewall-cmd --complete-reload #刷新防火墙的状态,重新启动服务,且尝试重新连接服务
虽然删除了防火墙上的ssh服务,但reload之后还能正常连接:
但complete reload之后,联机就卡住了:
用命令行在防火墙上的精确设定:
filter表:关于内核和服务的输入、输出和转发的信息都在这个表里;
nat表:不需要内核的其他操作储存在这个表里;
mangle表:这个表是前两个表的延伸,一般不用;
在filter表里添加信息:
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.34 -p tcp --dport 22 -j REJECT #防火墙拒绝34号主机访问本机的22端口
firewall-cmd --reload
ssh root@172.25.254.134
删除某一条信息:
firewall-cmd --direct --get-all-rules #查看表里所有信息
firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -s 172.25.254.34 -p tcp --dport 22 -j REJECT #删除某一条信息
打开路由转换功能:
打开地址伪装功能:
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload
打开路由转换功能:
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -a | grep ip_forward
在另一台虚拟机设置同一网段的网关:
vim /etc/sysconfig/network-scripts/eth0
添加:GATEWAY=172.12.12.12
systemctl restart network
route -n
路由转换功能完美打开:
ping 172.25.254.34
当其他主机访问本机的22端口时,将它导向34号主机的22端口:
firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.34
导向结果:
ssh root@172.25.254.134
删除导向:
firewall-cmd --remove-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.34