zoukankan      html  css  js  c++  java
  • Linux笔记 服务基础(seLinux、TCP_Wrappers、iptables、firewall)

    一、服务
    >>>服务(Service)本质是进程,但是是运行在后台的,通常都会监听某个端口,等待其他程序的请求,比如(mysql、sshd、防火墙等),因此我们又称为守护进程。
     
     
    服务工作过程:提供服务的一端叫服务端,服务启动时需要开放对应的端口号。请求服务的一端叫客户端,客户端指定服务端的IP地址加端口号向服务端发起请求。服务端收到客户端的请求后分析数据包发现请求的端口是XX端口,内核根据哪个进程监听此端口将数据包发给对应的进程处理。处理完后将数据返回给客户端。
     
     
    常见服务:
    tcp 20,21          ftp文件传输协议
    tcp 22               ssh
    tcp 23               telnet
    tcp 25               smtp
    tcp/udp 53       dns
    udp 67,68         dhcp
    tcp 80               http
    tcp 3306           mysql
    tcp 443             https
    tcp 6379           redis
     
     
    Linux服务分类:独立守护进程、超级守护进程
    独立守护进程:
        该类进程启动后就常驻内存,所以会一直占用系统资源。其最大的优点就是它会一直启动,当外界有要求时相应速度较快,像httpd,dns等进程。
     
    超级守护进程:
        系统启动时由一个统一的守护进程xinet来负责管理一些进程,当相应请求到来时需要通过xinet的转接才可以唤醒被xinet管理的进程。这种进程的优 点是最初只有xinet这一守护进程占有系统资源,其他的内部服务并不一直占有系统资源,只有数据包到来时才会被xinet管理员来唤醒。并且我们还可以通过xinet来对它所管理的进程设置一些访问权限,相当于多了一层管理机制。
     
     
    管理服务命令:service、chkconfig、systemctl
     
    >>>sercice:可以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。其本质为在/etc/init.d目录下寻找相应的服务,进行开启和关闭等操作。
    #开启关闭一个服务:
        service NAME start/stop
     
    #查看系统服务的状态:
        service --status-all
    

      

    >>>chkconfig:是管理系统服务(service)的命令行工具。所谓系统服务(service),就是随系统启动而启动,随系统关闭而关闭的程序。chkconfig可以更新(启动或停止)和查询系统服务(service)运行级信息。更简单一点,chkconfig是一个用于维护/etc/rc[0-6].d目录的命令行工具。
     
    #设置service开机是否启动:
        chkconfig NAME on/off/reset
    #on、off、reset用于改变service的启动信息。on表示开启,off表示关闭,reset表示重置。默认情况下,on和off开关只对运行级2,3,4,5有效,reset可以对所有运行级有效。
     
    #设置service运行级别:
        chkconfig --level levels NAME on|off|reset
    #该命令可以用来指定服务的运行级别,即指定运行级别2,3,4,5等。
     
    #列出service启动信息:
        chkconfig --list [name]
    #如果不指定name,会列出所有services的信息。
    

     

    >>>systemctl:是一个systemd工具,主要负责控制systemd系统和服务管理器。systemctl是RHEL 7 的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。可以使用它永久性或只在当前会话中启用/禁用服务。所以systemctl命令是service命令和chkconfig命令的集合和代替。
    #开启关闭重启服务和查询状态
        systemctl start|stop|restart|status NAME
        
    #开机启动服务:
        systemctl enable NAME
        
    #开机不启动服务:
        systemctl disable NAME
    

     

     
     
    二、seLinux
    >>>安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。
     
     
     
    DAC(自主访问控制)& MAC(强制访问机制)
    DAC:在没有使用 SELinux 的操作系统中,决定一个资源是否能被访问的因素是某个资源是否拥有对应用户的权限(读、写、执行)。只要访问这个资源的进程符合以上的条件就可以被访问。而最致命问题是,root 用户不受任何管制,系统上任何资源都可以无限制地访问。这种权限管理机制的主体是用户,也称为自主访问控制(DAC)。
    MAC:在使用了 SELinux 的操作系统中,决定一个资源是否能被访问的因素除了上述因素之外,还需要判断每一类进程是否拥有对某一类资源的访问权限。这种权限管理机制的主体是进程,也称为强制访问控制(MAC)。
     
    二者区别:① DAC的主体是真实有效的用户和组ID,MAC的主体是安全上下文,两者的UID是各自独立的。② DAC的访问控制模式是rwxrwxrwx,MAC的访问控制模式是user:role:type。
     
     
     
    SELinux 有三种工作模式,分别是:
    1. enforcing:强制模式。违反 SELinux 规则的行为将被阻止并记录到日志中。
    2. permissive:宽容模式。违反 SELinux 规则的行为只会记录到日志中。一般为调试用。
    3. disabled:关闭 SELinux。
    SELinux 工作模式可以在 /etc/selinux/config 中设定。
     
     
    配置SELinux—SELinux是否启用
    设置SELinux模式及开关使用命令有3个:getenforce ;sestatus ;setenforce
     
    >>>getenforce   #获取selinux的当前状态
    [root@centos7-->14:47:57~]#getenforce 
    Disabled                                    ##当前系统的selinux状态为关闭
    
    >>>sestatus    #查看selinux完整状态
    [root@centos7-->14:51:35~]#sestatus
    SELinux status:                enabled            ##当前状态
    SELinuxfs mount:                /sys/fs/selinux    
    SELinux root directory:        /etc/selinux
    Loaded policy name:            targeted
    Current mode:                  enforcing
    Mode from config file:          enforcing
    Policy MLS status:              enabled
    Policy deny_unknown status:    allowed
    Max kernel policy version:      31
    
    >>>setenforce  0|1   #开启或关闭
    [root@centos7-->14:51:59~]#setenforce 
    usage:  setenforce [ Enforcing | Permissive | 1 | 0 ]
     
    0:设置为permissive
    1:设置为enforcing
    注意:如果当前系统的SElinux状态为Disabled时,使用setenforce  0或者1切换时,要想生效,必须reboot重启系统。
    如果是enforcing状态和permissive切换时不需要重启系统。 
    
    >>>修改配置文件:
     
                      /boot/grub/grub.conf在对应的kernel内核参数后面追加    (centos  6中)
                      selinux=1 (启用)|   selinux=0(禁用)                          
                  
                      /etc/selinux/config      |        /etc/sysconfig/selinux(链接)                             (centso 7  中)
                      SELINUX变量有3中参数:
                      SELINUX={disabled|enforcing|permissive}
     
     
     
    安全上下文
    安全上下文是一个简单的、一致的访问控制属性,在SELinux中,类型标识符是安全上下文的主要组成部分,由于历史原因,一个进程的类型通常被称为一个域(domain),"域"和"域类型"意思都一样,即都是安全上下文中的“TYPE”。
     
    所有操作系统访问控制都是以关联的客体和主体的某种类型的访问控制属性为基础的。在SELinux中,访问控制属性叫做安全上下文。所有客体(文件、进程间通讯通道、套接字、网络主机等)和主体(进程)都有与其关联的安全上下文,一个安全上下文由三部分组成:用户、角色和类型标识符。
     
     
    常常用下面的格式指定或显示安全上下文:
            USER:ROLE:TYPE[LEVEL[:CATEGORY]]
    ①  USER
    1) useridentity:类似Linux系统中的UID,提供身份识别,用来记录身份;安全上下文的一部分;
    2) 三种常见的 user:
                • user_u :普通用户登录系统后的预设;
                • system_u :开机过程中系统进程的预设;
                • root :root 登录后的预设;
    3) 在 targeted policy 中 users 不是很重要;
    4) 在strict policy 中比较重要,所有预设的 SELinux Users 都是以 “_u” 结尾的,root 除外。
    ②  ROLE
    1) 文件、目录和设备的role:通常是 object_r;
    2) 程序的role:通常是 system_r;
    3) 用户的role:targeted policy为system_r; strict policy为sysadm_r、staff_r、user_r;用户的role,类似系统中的GID,不同角色具备不同的的权限;用户可以具备多个role;但是同一时间内只能使用一个role;        
    4) 使用基于RBAC(Roles Based AccessControl) 的strict和mls策略中,用来存储角色信息
    ③  TYPE
    1) type:用来将主体(subject)和客体(object)划分为不同的组,给每个主体和系统中的客体定义了一个类型;为进程运行提供最低的权限环境;
    2) 当一个类型与执行中的进程相关联时,其type也称为domain;
    3) type是SElinux security context 中最重要的部位,是 SELinux Type Enforcement 的心脏,预设值以_t结尾;
     
    id -Z    显示了你的shell的安全上下文
    ps -Z    检查进程的安全上下文
    ls -Z    检查文件、目录的安全上下文
    

     

    文件的Security Contex规则如下:
          • rpm包安装的:会根据rpm包内记录来生成安全上下文;
          • 手动创建的文件:会根据policy中规定的来设置安全上下文;
          • cp:会重新生成安全上下文;
          • mv:安全上下文则不变。
     
     
    修改安全上下文:chcon、restorecon、semanage命令
     
    >>>chcon:手动修改文件的SELinux安全上下文(临时修改)
    chcon [-R] [-t  type] [-u  user] [-r  role]  文件(绝对路径)
    chcom  [-R]  --reference=范例文件  文件
    

    相关参数与选项:

    -R:连同该目录下的子目录也同时修改
    -t:后面接安全上下文的类型栏位。例如:httpd_sys_content_t
    -u:后面接身份识别(不重要)。例如:system_u
    -r:后面接角色(不重要)。例如:system_r
    -v:若有变动成功,将变动的结果列出来
    --reference:拿某个文件当范例来修改后续接的文件的类型
     
    >>>restorecon:让文件的SELinux类型恢复为默认的SELinux类型。默认的SELinux类型与semanage命令有关,就是参考semanage这个命令所查询处的默认SELinux类型。
    restorecon  [-Rv]  文件/目录(绝对路径)
    相关参数:
    -R:连同子目录一起修改
    -v:将过程显示到屏幕
     
    >>>semanage:查询/修改/增加/删除文件的默认SELinux类型(永久修改)
    semanage  [login/user/port/interface/fcontext/translation]  -l
    semanage  fcontext  -{a/d/m}  [-frst]  file_spec
    相关参数与选项:
    -l:查询
    fcontext:主要用在安全上下文方面的用途(常用的)
    -a:增加的意思,你可以增加一些目录的默认安全上下文类型设置
    -m:修改的意思
    -d:删除的意思
     
     
    相关案例见:https://blog.csdn.net/qq_41453285/article/details/88551173
     
     
     
    管理 SELinux 布尔值
    >>>SELinux 布尔值是更改 SELinux 策略行为的开关。 SELinux 布尔值是可以启用或禁用的规则。安全管理员可 以使用 SELinux 布尔值来调整策略 , 以有选择地进行调整。许多软件包都具有 man page *_selinux(8), 其中详细说明了所使用的一些布尔值 ; man -k ‘_selinux’ 可以轻松地找到这些手册。
     
    getsebool 用于显示布尔值 , setsebool 用于修改布尔值 
    setsebool -P 修改 SELinux 策略 , 以永久保留修改。
    semanage boolean -l   显示布尔值是否永久
    

      

     
     
    三、TCP_Wrappers
    >>>TCP_Wrappers是一个工作在第四层(传输层)的的安全工具,对有状态连接的特定服务进行安全检测并实现访问控制,凡是包含有libwrap.so库文件的的程序就可以受TCP_Wrappers的安全控制。它的主要功能就是控制谁可以访问,常见的程序有rpcbind、vsftpd、sshd,telnet。
     
     
    工作原理:TCP_Wrappers有一个TCP的守护进程叫作tcpd。以ssh为例,每当有ssh的连接请求时,tcpd即会截获请求,先读取系统管理员所设置的访问控制文件,符合要求,则会把这次连接原封不动的转给真正的ssh进程,由ssh完成后续工作;如果这次连接发起的ip不符合访问控制文件中的设置,则会中断连接请求,拒绝提供ssh服务。
    TCP_Wrappers的使用主要是依靠两个配置文件/etc/hosts.allow, /etc/hosts.deny,用于拒绝和接受具有TCP_Wrappers控制全的程序,详细信息具体可以查看man帮助(man 5 hosts_access, man 5 hosts_options),不过在刚开始的时候,/etc/hosts.allow,/etc/hosts.deny什么都没有添加,此时没有限制,是都可以连接的。
     
     
    配置文件格式遵循如下规则:
    daemon_list@host: client_list [:options :option…]
     
    daemon_list: 是程序的列表,可以是多个,是多个时,使用,隔开
     
    @host:可以没有,是我们的限制的网卡访问接口(自己的),设置允许或禁止他人从自己的那个网口进入。这一项不写,就代表全部。
     
    client_list:是访问者的地址,如果需要控制的用户较多,可以使用空格或,隔开。也可以使用关键词EXCEPT,筛出某些用户(在allow文件中被EXCEPT的用户即拒绝)格式如下:
        基于IP地址: 192.168.10.1 192.168.1.
        基于主机名: www.magedu.com .magedu.com 较少用
        基于网络/掩码: 192.168.0.0/255.255.255.0
        基于net/prefixlen: 192.168.1.0/24(CentOS7)
        基于网络组(NIS 域): @mynetwork
        内置ACL: ALL, LOCAL, KNOWN, UNKNOWN,PARANOID
            ALL:所有主机 
            LOCAL:本地主机 
            KNOWN:主机名可解析成ip的 
            UNKNOWN:主机名无法解析成IP的 
            PARANOID:正向解析与反向解析不对应的主机
     
    sshd@192.168.111.110:192.168.111.120
    sshd:192.168.111. EXCEPT 192.168.111.120
    
    [:options :option…]:选项如下:
        deny 主要用在/etc/hosts.allow定义“拒绝”规则
    vsftpd: 172.16. :deny
    

        allow 主要用在/etc/hosts.deny定义“允许” 规则

    vsftpd:172.16. :allow
    

     spawn 启动一个外部程序完成执行的操作

        twist 实际动作是拒绝访问,使用指定的操作替换当前服务,标准I/O和ERROR发送到客户端,默认至/dev/null
     
     
     
    补充:查看sshd是否支持wrapper

    ldd $(which sshd) | grep wrap
    

      

     
     
     
     
     
     
    四、iptables
    iptables并不是真正的防火墙,可以理解为一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的安全框架中,这个安全框架才是真正的防火墙,这个框架的名字叫netfilter。netfilter位于内核空间,而iptables其实是一个命令行工具,位于用户空间。netfilter/iptables组成Linux平台下的包过滤防火墙。可以完成封包过滤、封包重定向和网络地址转换(NAT)等防火墙功能。
     
     
    数据经过防火墙的流程
    关键词:链(chain)、表(table)、规则(rule)
     
     
     
    >>>链
    防火墙要达到防火的目的,需要在内核中设置关卡,所有进出的报文都要通过这些关卡,经过检查后,符合放行条件的才能放行,符合阻拦条件的都被阻拦。在iptables中,这些关卡称为链。之所以称为链,是因为防火墙的作用在于对经过每一个关卡的报文匹配规则,然后执行动作,而这个关卡上可能不止一条规则,当我们把多条规则串在一个链条上时,就形成了链。
     
    五个规则链
    1.PREROUTING (路由前)
    2.INPUT (数据包流入口)
    3.FORWARD (转发管卡)
    4.OUTPUT(数据包出口)
    5.POSTROUTING(路由后)
     
    在某些常用场景中,报文的流向为
    到本机某进程的报文:PREROUTING --> INPUT
    由本机转发的报文:PREROUTING -->  FORWARD -->POSTROUTING
    由本机的某进程发出报文(通常为响应报文):OUTPUT --> POSTROUTING
     
     
    >>>表
    在iptables中,每条链上都放置了一串规则,有些规则是相似的,如A类规则都是对IP或者端口的过滤,B类规则是修改报文,因此可以将具有相同功能的规则放在一起,这种集合称为“表”。每条链上的所有规则都分别属于不同的表中。
     
    4种表
    filter表:负责过滤功能,防火墙;内核模块:iptables_filter
    nat表:网络地址转换功能;内核模块:iptables_nat
    mangle表:拆解报文,做出修改,并重新封装的功能;内核模块:iptables_mangle
    raw表:关闭nat表上启用的连接追踪机制;内核模块:iptables_raw
     
     
    表链关系
    由于每条链所处位置不同,需要发挥的功能不同,包含的规则也不同。因此某些链并不会包含某些规则(表)。
    每个链中含有的表(规则):
    PREROUTING:raw表、mangle表、nat表
    INPUT:mangle表、filter表 (Centos7中还有nat表,Centos6中没有)
    FORWARD:mangle表、filter表
    OUTPUT:raw表、mangle表、nat表、filter表
    POSTROUTING:mangle表、nat表
     
    每个表可以被哪些链使用
     
    每条链上不同表的匹配顺序
    数据包经过一个链时,会将当前链的所有规则都匹配一遍,匹配的时候根据匹配规则依次执行。
    iptables定义的4张表执行的优先级为:
    raw > mangle > nat > filter
     
     
    >>>规则
    根据指定的匹配条件来匹配每个流经此处的报文,一旦匹配成功,则由规则后面指定的处理动作进行处理。
     
    匹配条件
    匹配条件分为基本匹配条件与拓展匹配条件
    基本匹配条件:
    源地址Source IP ,目的地址Destination IP
    拓展匹配条件
    除了基本匹配条件其余可用于匹配的条件称为拓展匹配条件,这些拓展匹配条件在netfilter中以模块的形式存在,如果想使用这些条件,则需要依赖对应的拓展模块。
    源端口Source Port,目的端口Destination Port
     
    处理动作
    ACCEPT:允许数据包通过
    DROP:直接丢弃数据包,不给任何回应信息。
    REJECT:拒绝数据包通过,必要时会给数据发送端一个相应的信息,客户端刚请求就会收到拒绝的信息。
    SNAT:源地址转换,解决内网用户用同一个公网地址上网的问题
    MASQUERADE:是SNAT的一种特殊形式,适用于动态的、临时会变的IP 上。
    DNAT:目标地址转换
    REDIRECT:在本机做端口映射。
    LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则。即除了记录外不对数据包做任何其他操作,仍然让下一条规则进行匹配。
     
     
     
    数据包处理过程

     

     
    iptables设置
    语法: iptables [-t TABLE] SUBCOMMAND CHAIN [!] CRITERIA -j TARGET
    -t TABLE 如无则默认为filter表
    SUBCOMMAND 对链操作 -F [CHAIN] flush 清空所有链规则 -P policy,定义链的默认动作 -N new 自定义链 -X 删除自定义链 -Z zero,清空链上的统计信息 对规则操作 -A append追加规则到链最后 -I insert,插入规则 -D delete 删除规则 -R replace,替换规则 查看 -L 列出table中的所有链的规则 子选项 -n 不做名称解析 -v 详细信息 -vv 更详细 -vvv 更更详细 --line-numbers 显示规则编号
    CRITERIA:检查IP,TCP,UDP,ICMP首部,可以基于扩展机制进行额外的检查 通用匹配 -s source 源IP -d destination 目的ip -p protocol 协议 ip tcp udp icmp -i input interface 入接口 -o output interface 出接口 扩展匹配(-m MODULES) 使用iptables的模块实现扩展性的检查机制 隐式匹配 如果在通用匹配上使用了-p选项指明协议,-m可有可无 tcp --dport 目的端口 --sport 源端口 --tcp-flags LIST1 LIST2 LIST1 要检查的标记位 LIST2 在LIST1中出现,且必须为1的标记位,其余的必须为0 eg: --tcp-flags syn,ack,fin,rst syn --syn 用来匹配tcp会话第一次握手 eg:iptables -A INPUT -p tcp -s 172.16.100.0/24 --dport 22 -j ACCEPT udp --sport --dport icmp -icmp 8 echo request 0 echo reply eg: iptables -A INPUT -s 10.1.1.1 -p icmp -icmp 0 -j ACCEPT 显式匹配 必须指明扩展匹配机制 用法:-m 模块名称 每个模块包含多种扩展匹配机制 multiport扩展 定义多个离散的端口 可用选项 --sports PORT [,PORT2...] --dports PORT[,PORT2 ...] --ports PORT[,PORT2 ...] eg: iptables -A INPUT -d 10.1.1.1 -p tcp -m multiport --dports 22,80,443 -j ACCEPT iprange扩展 指定连续的IP地址范围 可用选项 --src-range IP[-IP2] --dst-range IP[-IP2] eg: iptables -A INPUT -d 10.1.1.1 -p tcp --dport 22 -m iprange --src-range 192.168.1.1-192.168.1.100 -j ACCEPT time扩展 基于时间的访问控制 --datestart YYYY [-MM][-DD] [hh[:mm[:ss]]] --datestop --timestart --timestop --weekdays DAY1[,DAY2...] eg 每天9点到19点不能访问 iptables -A INPUT -p tcp --dport 80 -m time --timestart 9:00 --timestop 19:00 -j DROP 指定周一周二不能访问 iptables -A INPUT -p tcp --dport 80 -m time --weekdays Mon,Tue -j DROP connlimit扩展 基于连接次数限制,对于每个IP能发起的并发连接数限制 可用选项 --connlimit-above N eg:iptables -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 6 -j REJECT 限制每个IP能打开5个连接 limit扩展 基于发包速率限制 选项 --limit n/[minute|second|hour|day] state扩展 基于连接追踪模板(nf_conntrack),用于记录各连接以及相关状态,基于ip实现,与tcp协议无关 记录连接状态 NEW 新建立的连接,连接追踪模板无相应记录,客户端第一次发出请求 iptables -A INPUT -p tcp -m state NEW,ESTABLISHED -j ACCEPT ESTABLISHED NEW状态之后到模板中状态被删除之前的过程 RELATED 相关联的连接,如ftp的被动模式(20,21) INVALIED 无法识别的状态 可用选项 --state [NEW|ESTABLISHED|RELATED|INVALIED]
    TARGET -j TARGET # jump 内置目标 ACCEPT DROP REJECT 自定义链 用于NAT -j SNAT --to-source 192.168.1.1 -j DNAT --to-destination 192.168.1.1 FULLNAT

      

    保存规则到文件
    /etc/init.d/iptables save
    关闭iptables
    /etc/init.d/iptables stop
     
     
     
    详细见:http://www.zsythink.net/archives/tag/iptables/page/2/
     
    五、firewall
    firewalld(Dynamic Firewall Manager of Linux systems,Linux系统的动态防火墙管理器)服务是默认的防火墙配置管理工具,它拥有基于CLI(命令行界面)和基于GUI(图形用户界面)的两种管理方式。
    相较于传统的防火墙管理配置工具,firewalld支持动态更新技术并加入了区域(zone)的概念。简单来说,区域就是firewalld预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。例如,我们有一台笔记本电脑,每天都要在办公室、咖啡厅和家里使用。按常理来讲,这三者的安全性按照由高到低的顺序来排列,应该是家庭、公司办公室、咖啡厅。当前,我们希望为这台笔记本电脑指定如下防火墙策略规则:在家中允许访问所有服务;在办公室内仅允许访问文件共享服务;在咖啡厅仅允许上网浏览。在以往,我们需要频繁地手动设置防火墙策略规则,而现在只需要预设好区域集合,然后只需轻点鼠标就可以自动切换了,从而极大地提升了防火墙策略的应用效率。
     
     
    常见的区域
        trusted    允许所有的数据包
        home    拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-client服务相关,则允许流量
        internal    等同于home区域
        work    拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量
        public    拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量
        external    拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
        dmz    拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
        block    拒绝流入的流量,除非与流出的流量相关
        drop    拒绝流入的流量,除非与流出的流量相关
     
     
    使用方法
    安装
    yum install firewalld
    如果需要图形界面的话,则再安装
    yum install firewall-config
     
    systemctl start firewalld   # 启动,
    systemctl enable firewalld    # 开机启动
    systemctl stop firewalld    # 关闭
    systemctl disable firewalld    # 取消开机启动
     
     
     
    终端管理工具firewall-cmd
    参数
        --get-default-zone    查询默认的区域名称
        --set-default-zone=<区域名称>    设置默认的区域,使其永久生效
        --get-zones    显示可用的区域
        --get-services    显示预先定义的服务
        --get-active-zones    显示当前正在使用的区域与网卡名称
        --add-source=    将源自此IP或子网的流量导向指定的区域
        --remove-source=    不再将源自此IP或子网的流量导向某个指定区域
        --add-interface=<网卡名称>    将源自该网卡的所有流量都导向某个指定区域
        --change-interface=<网卡名称>    将某个网卡与区域进行关联
        --list-all    显示当前区域的网卡配置参数、资源、端口以及服务等信息
        --list-all-zones    显示所有区域的网卡配置参数、资源、端口以及服务等信息
        --add-service=<服务名>    设置默认区域允许该服务的流量
        --add-port=<端口号/协议>    设置默认区域允许该端口的流量
        --remove-service=<服务名>    设置默认区域不再允许该服务的流量
        --remove-port=<端口号/协议>    设置默认区域不再允许该端口的流量
        --reload    让“永久生效”的配置规则立即生效,并覆盖当前的配置规则
        --panic-on    开启应急状况模式
        --panic-off    关闭应急状况模式
     
    实例
        查看firewalld服务当前所使用的区域
            firewall-cmd --get-default-zone
        查询eno16777728网卡在firewalld服务中的区域
            firewall-cmd --get-zone-of-interface=eno16777728
        把firewalld服务中eno16777728网卡的默认区域修改为external,并在系统重启后生效。分别查看当前与永久模式下的区域名称:
            firewall-cmd --permanent --zone=external --change-interface=eno16777728
            firewall-cmd --get-zone-of-interface=eno16777728
            firewall-cmd --permanent --get-zone-of-interface=eno16777728
        把firewalld服务的当前默认区域设置为public
            firewall-cmd --set-default-zone=public
            firewall-cmd --get-default-zone 
        启动/关闭firewalld防火墙服务的应急状况模式,阻断一切网络连接(当远程控制服务器时请慎用)
            firewall-cmd --panic-on
            firewall-cmd --panic-off
        查询public区域是否允许请求SSH和HTTPS协议的流量
            firewall-cmd --zone=public --query-service=ssh
            firewall-cmd --zone=public --query-service=https
        把firewalld服务中请求HTTPS协议的流量设置为永久允许,并立即生效
            firewall-cmd --zone=public --add-service=https
            firewall-cmd --permanent --zone=public --add-service=https
            firewall-cmd --reload
        把firewalld服务中请求HTTP协议的流量设置为永久拒绝,并立即生效
            firewall-cmd --permanent --zone=public --remove-service=http 
            firewall-cmd --reload 
        把在firewalld服务中访问8080和8081端口的流量策略设置为允许,但仅限当前生效
            firewall-cmd --zone=public --add-port=8080-8081/tcp
            firewall-cmd --zone=public --list-ports 
        查看当前区域开放端口及服务
            firewall-cmd --zone=public --list-ports 
            firewall-cmd --zone=public --list-services
        端口转发
            格式
                firewall-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>
            实例
                将80端口的流量转发至8080
                    firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080
                将80端口的流量转发至192.168.0.1
                    firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1
                将80端口的流量转发至192.168.0.1的8080端口
                    firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080
        NAT 转发
            firewall-cmd --permanent --zone=public --add-masquerade
                启用
                iptables -A POSTROUGING -o eth0 -j MASQUERADE
            firewall-cmd --zone=public --add-port=53/udp --permanent
                开放53端口
            firewall-cmd --query-masquerade
                查询
            firewall-cmd --remove-masquerade
                禁止
     
  • 相关阅读:
    [saiku] 系统登录成功后查询Cubes
    216. Combination Sum III
    215. Kth Largest Element in an Array
    214. Shortest Palindrome
    213. House Robber II
    212. Word Search II
    211. Add and Search Word
    210. Course Schedule II
    分硬币问题
    开始学习Python
  • 原文地址:https://www.cnblogs.com/dumpling-z/p/11377543.html
Copyright © 2011-2022 走看看