linux系统防火墙常用指令,以及指定ip的访问权限设定,firewalld的端口转接,地址伪装

###以下所有操作,为了便于说明,黄色字体为172.25.254.145主机操作,蓝色字体为172.25.254.245主机操作,白色字体为172.25.254.45真机操作###

一  防火墙常用指令:

      首先是防火墙的域,每种域支持不同的访问权限和服务:


常用指令:

     firewall-cmd --state   #查看防火墙状态

     firewall-cmd --get-active-zones  #查看防火墙当前域和源

     firewall-cmd --get-default-zone  #查看防火墙的默认域

     firewall-cmd --cmd --get-zones  #查看防火墙的所有域


  firewall-cmd --list-all-zones  #查看防火墙各个域的工作状态


   firewall-cmd --set-default-zone=trusted   #将防火墙的默认域修改为trusted


   firewall-cmd --permanent --add-source=172.25.254245 --zone=trusted   #给trusted域添加源


firewall-cmd --permanent --remove-source=172.25.254245 --zone=trusted   #移除源


关于接口的配置:


关于防火墙的配置文件在/etc/firewalld下:


关于防火墙本身服务的配置文件在/usr/lib/firewalld下:


比如http.xml文件就是关于对http服务的配置:


文件中有着关于端口的陪置,在文件中修改的陪置都是永久的:


  设定允许通过防火墙的服务:

  firewall-cmd --permanent --zone=public --add-service=http


http服务的移除:


查看端口:


添加端口:


移除端口:


关于防火墙的重新加载:firewall-cmd --reload  #重新加载防火墙

                                     firewall-cmd  --complete-reload  #完全重新加载防火墙

reload和complete-reload的区别:前者重新加载不会中断已经通过防火墙连接的设备,后者会中断。


二   指定ip的访问权限设定:

     防火墙的使用有时候需要针对不同的用户进行不同的权限设定,这时就需要以ip为限定,进行对用户访问权限的设定了。以用户对http服务的访问权限设定为例:

 1.   首先使用指令查看http服务的端口为80,也就是说需要设定对80端口访问权限来进行对http服务的权限设定:

    

 2.  使用指令firewall-cmd --list-all指令查看防护墙的服务配置,在service部分并没用http这一服务,就是说,此时所有用户都不能够访问本机的http服务,除非本机的防火墙关闭。但如果将http服务加入到service中,那么所有用户都可以通过防护墙访问本机的http服务了。这样所有的用户都没什么区别了。

      

3.  所以就需要设定对指定ip的用户可以进行http服务的访问。指令如下,也就是对防火墙添加规则,这个规则将写入到防火墙的INPUT表中。这种添加规则的方式,不需要将http服务添加到防火墙的service服务中。

           关于指令中的参数设置:

           -p          指定访问方式为tcp

           --dport  指定服务端口。在此处指定端口为80也就是http服务所使用的端口,来进行对http服务的访问权限设定

           -s           指定用户。此处指定172.25.254.245这个用户,也就是说该用户可以访问本机的http服务

           -j           用户访问时的授权。-j有三种状态,分别为ACCEPT、DROP、REJECT

                        ACCEPT        将封包放行,进行完此处理动作后,将不再比对其它规则,直接跳往下一个规则链,也就是允许访问

                           REJECT          拦阻该封包,并传送封包通知对方

                           DROP            丢弃封包不予处理


          对于-s这个参数,当有指定用户时,-s后面跟指定用户的ip。当没有-s这个参数时,即指定所有用户。在针对特定用户的访问权限时,添加指定的用户访问权限之后,还需要将其他用户的访问拒绝。如下设定其他所有用户为REJECT:


4.   添加的规则可以使用fire-cmd --direct --get-all-rules查看到:


5.  规则添加成功后,用户的权限设定就完成了。

       在允许的172.25.254.245端可以访问到本机的http:

          

    其他的如172.25.254.45这台主机就无法访问:


6.   规则的删除:只需要将指令中的--add 改为--remove


三   端口转接: 指定服务访问本机时转接到另一台主机

 1.  以ssh服务的端口转接为例,首先查看ssh服务的端口为22:

      

 2.  端口转接的指令:当其他主机通过ssh服务访问本机(172.25.254.145)时,通过22端口将服务转接到172.25.254.245这台主机上:

 

 3.  由于参数--permanent对于配置文件的修改时永久性的,所以在指令执行之后,需要重新加载防火墙。在firewall-cmd --list-all中可以看到添加的端口转接:

4.  在端口转接的设定完成之后,还需要开启masquerade服务:

5.  这样关于端口转接的配置就完成了。接下来在服务端测试:

          使用172.25.254.45这台主机通过ssh服务访问172.252.254.145这台主机,服务将转到172.25.254.245这台主机:


   6.  端口转接规则的删除,删除之后重新加载防火墙:

  

四  地址伪装(访问其他主机时将本机ip伪装为其他ip):

1.   给172.25.254.145这台主机添加两个网卡,并设定成两个不同的网段。一个为172.25.254.145,一个为172.25.0.145:


2.  在172.25.254.245这台主机端,设定网关为172.25.0.145。也就是说,245这台主机访问其他主机时,会首先接到172.25.0.145这台设备上,进行进一步的地址伪装:


3.   在245主机端设定net.ipv4.ip_forward=1,来允许数据的接收和转发:


            如果该功能为0,那么vim编辑/etc/sysctl.conf文件,将设定为1的指令写入:


4.  在文件编辑完成之后保存退出,重启网络,这样net.ipv4.ip_forward=1就开启了数据的接收和转发:


5.  在245端执行指令: ssh [email protected] -x  通过ssh服务来访问172.25.254.45这台主机。

            在172.25.254.45主机端,使用指令last可以查看到成功连接本机的主机为172.25.254.145而不是172.25.254.245。这样就完成了对于172.25.254.245这台主机ip的地址伪装:

 


猜你喜欢

转载自blog.csdn.net/letter_a/article/details/80602883