linux--firewalld(2)

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中:

 


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页