linux中的防火墙

一.什么是防火墙:

动态防火墙后台程序 firewalld 提供了一个 动态管理的防火墙,用以支持网络 “zones”,以分配对一个网络及其相关链接和界面一定程度的信任。它具备对 IPv4 和 IPv6 防火墙设置的支持。它支持以太网桥,并有分离运行时间和永久性配置选择。它还具备一个通向服务或者应用程序以直接增加防火墙规则的接口。

二.firewalld和iptables:

firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,也就是说firewalld和iptables一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结构以及使用方法不一样罢了。
##企业七以前的版被都使用iptables,之后才使用的firewalld。两个作用相同,只是firewalld在使用上可以通过指定端口来通过服务。

firewalld:

开启                     systemctl start firewalld


关闭                     systemctl stop firewalld


查看状态               systemctl status firewalld
查看服务               firewall-cmd -list-all


冻结                     systemctl mask firewalld


解冻                     systemctl unmask firewalld


开机自启             systemctl enable firewalld

iptables:

下载                     yum install iptables -y


开启                     systemctl start iptables.service


关闭                     systemctl stop iptables.service


查看状态             systemctl status iptables.service
查看服务             iptables -nL


##DELATED   验证过的
##ESTABLISHED    现在验证了的

冻结                    systemctl mask iptables.service


解冻                    systemctl unmask iptables.service


开机自启            systemctl enable iptables.service

三.使用命令行接口配置防火墙:

######################      firewalld域       ########################

trusted(信任):可连接所有网络,
home(家庭)         |
internal(内部)      |
work(工作)           \       电脑上常见的域,其中home的权限最多,external的最少
public(公共)         /
external(外部)     |
dmz(非军事区),
block(限制):拒绝所有网络连接但是会收到拒绝的请求
drop(丢弃):任何接收的网络数据包都被丢弃,没有任何回复
#############################################################


查看防火墙当前状态                   firewall-cmd --state


查看默认使用的域                       firewall-cmd --get-default-zone


查看当前使用的域                       firewall-cmd --get-active-zone


查看当前系统中拥有的域           firewall-cmd --get-zones


查看某个域中的信息                   firewall-cmd --zone=域 --list-all


查看当前可以添加的服务            firewall-cmd --get-service


修改默认域                                    firewall-cmd --set-default-zone=域


添加某个IP使用某个域                firewall-cmd --add-source=IP --zone=域


删除某个IP使用某个域                firewall-cmd --remove-source=IP --zone=域


添加某个接口使用某个域            firewall-cmd --add-interface=接口 --zone=域


删除某个接口使用某个域            firewall-cmd --remove-interface=接口 --zone=域


##如果使用 --permanent 表示设定永久生效,但是需要再使用firewall-cmd --reload让设定生效
重新加载                                    firewall-cmd --reload         ##此时修改防火墙策略不会终止当前正在进行服务

                                                     firewall-cmd --complete-reload        ##此时会终止当前所有服务并重新开启(通常在防火墙出现严重

问题时,这个命令才会被使用。比如,防火墙规则是正确的,但却出现状态信息问题和无法建立连接。)

firewall的配置文件:

/lib/firewalld/        存放所有文件,是系统配置文件,预置文件
/etc/firewalld/     当前配置的文件,时用户配置文件

四.特定的规则:

1.三张表五条链:

filter表                       ###控管访问本机时经过本机内核的数据    
   input
   forward
   output
nat表                        ###控管不经过内核的数据转化和路径转换
   input
   output
   prerouting              ##路由前做的目的地址转换
   postouting             ##路由之后做的源地址转换
mangle表                 ###所有数据都包含,在filter表和nat表不够时使用

 

2.直接端口模式规则:

##通过firewall-cmd工具,使用--direct选项在运行时间里增加或者移除链。
查看规则                firewall-cmd --direct --get-all-rules


添加只允许IP连接本机        firewall-cmd --direct --add-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> -s IP -p 协议 --dport 端口号 -j ACCEPT
##<table>:filter, nat, mangle
    <chain>:INPUT, OUTPUT, FORWARD, PREROUTING, POSTOUTING
     <priority>:1, 2, 3, 4, 5

添加只允许除IP外所有连接本机    firewall-cmd --direct --add-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> ! -s IP -p 协议 --dport 端口号 -j ACCEPT
删除只允许IP连接本机        firewall-cmd --direct --remove-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> -s IP -p 协议 --dport 端口号 -j ACCEPT
以只允许172.25.254.22连接本机为例firewall-cmd --direct --add-rule ipv4 filter INPUT 2 -s 172.25.254.22 -p tcp --dport 22 -j ACCEPT

3.设定端口转发:

服务端:             firewall-cmd --permanent --add-masquerade
                             firewall-cmd --reload


                      firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.222        ##地址转化,客户通过ssh(22) 通过访问,转化到172.25.254.222
                             firewall-cmd --list-all


客户端:            ssh [email protected]

                             ifconfig
                             w -i

4.路由设置:

当服务端有两个网卡的时候,并且这两个网卡在不同的网关,开启地址伪装后,客户端设置ip网关设置和eth1相同,可以ping通eth0
服务端:                     ifconfig


                                  firewall-cmd --list-all


                                  vim /etc/sysctl.conf
                                  添加 net.ipv4.ip_forward=1

                                 sysctl -p


客户端:                     vim /etc/sysconfig/network-scripts/ifcfg-eth0
                                     IPADDR0=172.25.0.222            
                                    GATEWAY0=172.25.0.122   
        ##设置网关为服务端eth1的ip


                                  reboot
                                  ping 172.25.254.122

5.iptables的指令:

##所有的命令默认在filter表进行,如果在其他表进行,加入 -t 表名  即可
查看策略                   iptables -nL       ##默认为filter表


清空策略                   iptables -F       ##只是暂时清空,重启后配置依然存在


保存当前策略                   service iptables save        ##重启后执行保存后策略
##iptables的配置文件      /etc/sysconfig/iptables
添加策略                 iptables -A INPUT -i lo -j ACCEPT


添加策略                 iptables -A INPUT -s 172.25.254.22 -j ACCEPT

                                  iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 本机IP

替换策略                  iptables -R INPUT 2 -j ACCEPT


插入至第1条                   iptables -I INPUT -s 172.25.254.111 -j REJECT


删除第二条策略                   iptables -D INPUT 2


设置表的默认规则                    iptables -P INPUT DROP


创建一个链                 iptables -N WESTOS


将自己创建的链更名                 iptables -E WESTOS LINUX


删除自己创建的链                  iptables -X LINUX


## -i    进入的网络接口    -o    出去的网络接口
     -s    数据包的来源    -d    数据包的去向
     -p    使用的协议    -j    
     SNAT    改变转发数据包的源地址
      DNAT     改变转达数据包的目的地址

猜你喜欢

转载自blog.csdn.net/forever_yh/article/details/81938826