1.删除与添加
以apache为例子
添加:
在打开firewalld 和httpd 后 ,将http加入到防火墙允许的协议中
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl start firewalld
[root@localhost ~]# firewall-cmd --permanent --add-service=http (添加http协议到防火墙中)
success
[root@localhost ~]# firewall-cmd --reload (刷新)
[root@localhost ~]# firewall-cmd --list-all (查看防火墙所允许的策略)
删除:
root@localhost ~]# firewall-cmd --permanent --remove-service=http (将http协议移除)
success
root@localhost ~]# firewall-cmd --list-all
2.Direct Rules
通过 firewall-wall-cmd 工具,可以使用 --direct 选项在运行时间里增加或者移除链。如果不熟悉 iptables ,使用直接接口非常危险,因为可能会无意间导致防火墙被入侵。直接端口模式适用于服务或者程序,以便在运行时间内增加特定的防火墙规则。直接端口模式添加的规则优先应用
这个命令的意思是添加一个规则:让所有用户都无法访问172.25.254.135的80端口
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 80(http端口) -s 172.25.254.235 -j ACCEPT(接受) REJECT(拒绝) DROP(含蓄拒绝)
3.端口转发
在虚拟机中:
[root@localhost ~]# firewall-cmd --permanent --add-masquerade (打开伪装)
[root@localho~]#firewall-cmd--permanent --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.235 ##在连接172.25.254.135时候,会将连接的ip转换到172.25.254.235 22端口是ssh用的端口
[root@localhost ~]# firewall-cmd --reload (刷新)
真机中:
真机中:
[kiosk@foundation35 Desktop]$ ssh root@172.25.254.135(真机连接135)
root@172.25.254.135's password:
Last failed login: Fri Jun 8 22:51:14 EDT 2018 from 172.25.254.135 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Fri Jun 8 21:38:37 2018 from 172.25.254.35
[root@xiaoqin ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.25.254.235 netmask 255.255.255.0 broadcast 172.25.254.255
inet6 fe80::5054:ff:fe00:230b prefixlen 64 scopeid 0x20<link>
ether 52:54:00:00:23:0b txqueuelen 1000 (Ethernet)
RX packets 13666 bytes 1188962 (1.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 155 bytes 23599 (23.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
4.地址伪装
本实验需要两台虚拟机
desktop作为路由端
先给desktop添加一个网卡eth1,这时候desktop虚拟机有两个网卡,eth0 的IP172.25.254.135 ,eth1的IP172.25.0.135
server虚拟机作为客户端
server为单网卡IP为172.25.0.235
地址伪装的意思就是在server进入dekstop时IP为172.25.0.235 经过路由端伪装可以变为和desktop的eth0为同一网段从而实现上网
desktop两块网卡设置如下:
eth0:
eth1:
firewald-cmd --permanent --add-masquerade (打开伪装)
server网卡设置如下:
在server测试 ping desktop主机原有的ip 172.25.254.135 (ping成功,伪装成功 #本来只有在同一网段才能ping成功,经过地址伪装之后,可以在不同网段进行ping接)
5.iptables防火墙
##首先关闭fierwalld防火墙保证实验环境的纯洁,再打开iptables防火墙
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# systemctl disable firewalld.service
[root@localhost ~]# systemctl start iptables.service
[root@localhost ~]# systemctl enable iptables.service
ln -s '/usr/lib/systemd/system/iptables.service' '/etc/systemd/system/basic.target.wants/iptables.service
[root@localhost ~]# iptables -nL (查看策略)
[root@localhost ~]# iptables -F (刷新策略,在刷新策略之后所有的策略都会消失)
root@localhost ~]# service iptables save (保存策略)
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
[root@localhost ~]# vim /etc/sysconfig/iptables (策略保存之后可以打开策略配置文件查看有哪些策略被保存)
基本语法:iptables [-t 表] [操作命令] [链][规则匹配器][-j 目标动作]
常用操作命令:
-A 在指定链尾部添加规则-D 删除匹配的规则
-R 替换匹配的规则
-I 在指定位置插入规则
常见规则匹配器说明:
-p tcp|udp|icmp|all 匹配协议,all会匹配所有协议
-s addr[/mask] 匹配源地址
-d addr[/mask] 匹配目标地址
–sport port1[:port2] 匹配源端口(可指定连续的端口)
–dport port1[:port2] 匹配目的端口(可指定连续的端口)
-o interface
匹配出口网卡,只适用FORWARD、POSTROUTING、OUTPUT。
匹配入口网卡,只使用PREROUTING、INPUT、FORWARD。
目标动作说明:
ACCEPT 允许数据包通过
DROP 丢弃数据包
REJECT 丢弃数据包,并且将拒绝信息发送给发送方
实验一:
[root@localhost ~]# iptables -A INPUT -s 172.25.254.250 -p tcp --dport 22 -j ACCEPT (22端口是ssh的端口,tcp格式下ssh只允许172.25.254.250连接,别的都不可以连接)
[root@localhost ~]# iptables -A INPUT -p tcp --dport 22 -j REJECT (不让任何人连接)
当真机连接时失败
实验二:
[root@localhost ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT(正在连接的,连接过的端口设为允许)
[root@localhost ~]# iptables -nL (查看策略)
[root@localhost ~]# iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT (新连接的53端口设为允许)
[root@localhost ~]# iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT (新连接的80端口设为允许
[root@localhost ~]# iptables -A INPUT -m state --state NEW -p tcp --dport 3260 -j ACCEPT (新连接的3260端口设为允许
[root@localhost ~]# iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT (新连接的443端口设为允许
[root@localhost ~]# iptables -A INPUT -m state --state NEW -i lo -j ACCEPT (新连接的lo端口设为允许
[root@localhost ~]# iptables -nL (可以看出当新连接的端口全部允许之后,可以大大条高效率)
[root@localhost ~]# iptables -A INPUT -j REJECT
[root@localhost ~]# iptables -nL
[root@localhost ~]# service iptables save (保存策略)
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
[root@localhost ~]# cat /etc/sysconfig/iptables
实验三:
root@localhost ~]# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.135 (当这个成功之后处于不同网段仍然能ping通)
[root@localhost ~]# iptables -nL -t nat (查看策略)
[root@localhost ~]# iptables -t nat -A PREROUTING -i eht0 -p tcp --dport 22 -j DNAT--to-dest 172.25.0.235 (将172.25.254.135伪装成为172.25.0.235)
root@localhost ~]# iptables -nL -t nat
在sever中: