Linux学习笔记_安全相关

来源:互联网 发布:生态养殖 知乎 编辑:程序博客网 时间:2024/06/05 01:16

防火墙

iptables
iptables 是基于内核的netfilter功能的管理工具。。iptables服务会把配置好的防火墙策略交由内核层面的netfilter网络过滤器来处理。

这个工具在redhat7.0版本后已经被fireward取代,所以执行命令时有许多与以前版本认知有所不同。我这个实验是在Ubuntu16.0上进行
iptables 其实并不难,主要还是基于包过滤的规则,当然后期为了完善也添加了外挂模块state 基于状态的和 mac 基于网卡的。

摘录了一张图如下:
摘录
说下这张图:

可以看到数据包共可能有5种状态:prerouting,input,output,forward,postrouting.
路线:
IN->prerouting->forward->output->postrouting->OUT;
IN->prerouting->input->LOCALHOST->output->postrouting->OUT
发现每个状态都有多个表起共同作用,关于先后顺序是图中从下往上,比如
prerouting 中就是先raw表再mangle最后nat表(参考资料而来,未经考证) 。
防火墙处理数据包的四种方式
ACCEPT 允许数据包通过
DROP 直接丢弃数据包,不给任何回应信息
REJECT 拒绝数据包通过,必要时会给数据发送端一个响应的信息。
LOG在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则
根据上述,我们要做的就是再每个状态中的每个表里面设定我们想设定的规则。so很简单的感觉,接下来只要了解下配置语法就可以了。
iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转
摘录
命令选项:
-A 在指定链的末尾添加(append)一条新的规则
-D 删除(delete)指定链中的某一条规则,可以按规则序号和内容删除
-I 在指定链中插入(insert)一条新的规则,默认在第一行添加
-R 修改、替换(replace)指定链中的某一条规则,可以按规则序号和内容替换
-L 列出(list)指定链中所有的规则进行查看
-E 重命名用户定义的链,不改变链本身
-F 清空(flush)
-N 新建(new-chain)一条用户自己定义的规则链
-X 删除指定表中用户自定义的规则链(delete-chain)
-P 设置指定链的默认策略(policy)
-Z 将所有表的所有链的字节和数据包计数器清零
-n 使用数字形式(numeric)显示输出结果
-v 查看规则表详细信息(verbose)的信息
-V 查看版本(version)
-h 获取帮助(help)

这个容易理解。接下来就是关键的匹配了:
这里写图片描述
这个!表示”非“的意思
特别说明-i 是配合INPUT链;-o是配合OUTPUT链;后面接网卡。
在指定端口时,需用-p指明是TCP还是UDP。
举例:

#iptables -L -n -t {nat,filter…}
查看iptables的规则,
#iptables-save这个可以看详细的指定规则。区别就跟数据库里desc table_name / show create table table_name \G查看表的定义差不多.
iptables [-t nat,filter…] -P [INPUT,OUTPUT,FORWARD] [ACCEPT,DROP]
设定每条链的默认政策,既所有规则都未匹配.执行的动作。
iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
基于状态,对已建立或本机发出去的放行。

更多高级功能点此

Firewall防火墙
它和上面的ipables关系如下图:

这里写图片描述
由图可以看到,firewall与iptables本质都是工具,去作用的还是kernel(netfilter)
firewall 是动态防火墙,上述iptables 是静态,如果我们把这种哪怕只修改一条规则也要进行所有规则的重新载入的模式称为静态防火墙的话,那么 firewalld 所提供的模式就可以叫做动态防火墙,它的出现就是为了解决这一问题,任何规则的变更都不需要对整个防火墙规则列表进行重新加载,只需要将变更部分保存并更新到运行中的 iptables 即可。
所以firewall 改变规则时会更加稳定。

Firewall 引入了zone 这个概念,相对于硬件防火墙中internal,dmz,public一样,不同的接口加入到不同的区域中,然后区域中的的策略全部应用到了区域中的所有接口(iptables中根据接口实施策略需要外挂mac模块才能实现)。有对硬件防火墙原理熟悉的同学,可能会知道防火墙本身也有一个local区域,我想我们的主机就是位于这个区域。硬件防火墙大多是为了转发数据,为了防御一个公网对内网的攻击;而firewall 主要还是防御外界对本主机的攻击。
稍微提一下硬件防火墙,它既然是转发数据的多,所以它考虑的是一个区域到另一个区域的转发策略。默认是高优先级区域到低优先级区域放行(当然也可以人工让其不放行),反之由低到高就需要人工配置来决定了,默认是不通过的。
Firewall 工作在主机上,主要功能当然是保护主机不受外界攻击了。有了区域的概念,当我的主机的网卡工作在不同的环境下时,我只需要调整接口与区域联系,就可以把事先配置好的不同策略应用在相应的网卡上,比之iptables 大费周章的改要方便的多,由于是动态的还更快更稳定。

配置语法:

firewall-cmd
–add-forward-port=
–add-icmp-block=
–add-interface=
–add-lockdown-whitelist-command=
–add-lockdown-whitelist-context=
–add-lockdown-whitelist-uid=
–add-lockdown-whitelist-user=
–add-masquerade
–add-port=
–add-rich-rule
–add-service=
–add-source=
–change-interface=
–change-source=
–change-zone=
–complete-reload
–direct
–get-active-zones
–get-default-zone
–get-icmptypes
–get-services
–get-zone-of-interface=
–get-zones
–help
–list-all
–list-all-zones
–list-forward-ports
–list-icmp-blocks
–list-interfaces
–list-lockdown-whitelist-commands
–list-lockdown-whitelist-contexts
–list-lockdown-whitelist
[root@localhost biake]# fir
–list-lockdown-whitelist-users
–list-ports
[root@localhost biake]# firewall-cmd –
–add-forward-port=
–add-icmp-block=
–add-interface=
–add-lockdown-whitelist-command=
–add-lockdown-whitelist-context=
–add-lockdown-whitelist-uid=
–add-lockdown-whitelist-user=
–add-masquerade
–add-port=
–add-rich-rule
–add-service=
–add-source=
–change-interface=
–change-source=
–change-zone=
–complete-reload
–direct
–get-active-zones
–get-default-zone
–get-icmptypes
–get-services
–get-zone-of-interface=
–get-zones
–help
–list-all
–list-all-zones
–list-forward-ports
–list-icmp-blocks
–list-interfaces
–list-lockdown-whitelist-commands
–list-lockdown-whitelist-contexts
–list-lockdown-whitelist-uids
–list-lockdown-whitelist-users
–list-ports
–list-rich-rules
–list-services
–list-sources
–lockdown-off
–lockdown-on
–panic-off
–panic-on
–permanent
–query-forward-port=
–query-icmp-block=
–query-interface=
–query-lockdown
–query-lockdown-whitelist-command=
–query-lockdown-whitelist-context=
–query-lockdown-whitelist-uid=
–query-lockdown-whitelist-user=
–query-masquerade
–query-panic
–query-port=
–query-rich-rule
–query-service=
–query-source=
–reload
–remove-forward-port=
–remove-icmp-block=
–remove-interface=
–remove-lockdown-whitelist-command=
–remove-lockdown-whitelist-context=
–remove-lockdown-whitelist-uid=
–remove-lockdown-whitelist-user=
–remove-masquerade
–remove-port=
–remove-rich-rule
–remove-service=
–remove-source=
–set-default-zone=
–state
–version
–zone=

这个选项确实有点多,但是都很好理解。
大多有关服务,端口,接口操作指令:firewall-cmd -zone=[区域] –[选项]-[类型]=[]

区域:fiewall-cmd –get-zone #这个命令可以查看所有区域
选项:
add #添加一些服务之类到这个区域来允许通过
list #查看区域有什么被添加了
query #查看类型的详细信息
remove # 把这个区域里的一些类型赶走,以后这类流量就被阻止了
change #就是修改了
类型
services #firewall-cmd –get-services 可以查看所有定义的服务
port #端口号: [number]/[协议TCP/UDP]比如:**22-40/tcp**T
interfaces #网络接口
forward-port # 端口转发功能,有的时候我们服务发布的端口可能会被运营商屏蔽,我开放别的端口通过转发功能一样可以正常工作
firewall-cmd –zone=public –add-foreard-port=
port=5555:proto=tcp:toport=80:toaddr=192.168.2.2
这个例子就是把本机5555/tcp端口的流量转发到192.168.2.2的80端口
rich-rule #这个复杂又强大 建议用图形界面
source #这个跟interface一样作用,zone对那些源地址的包起作用。
icmp-block #阻塞某种类型的ICMP包,–get-icmptypes查看支持类型
富规则我还不熟:
图形化容易点
这里写图片描述

官方具体说明点这

ACl
可以使文件权限不在限于 所有者:组:其他的模式,能够用ACL 对任何用户或组赋予文件不同的权力。
$:setfacl -m u:cao:r shadow
$:getfacl shadow
# file: shadow
# owner: cao
# group: cao
user::—
user:cao:r– #effective:—
group::r– #effective:—
mask::—
other::r–

如上,先用setfacl 设定用户cao对 shadow的权限,在查看,确实多了一行user:cao:r–,但是后面 #effective:—,表示有效权力 是空的!! 为什么是空的,明明给了r权限,在往下看 有个 mask::—,原来这里什么都没有,所以有效也是为空。我们给文件赋予的acl 权限都必须在 mask 中找到才算生效。
基本的acl添加规则如下:
setfacl -m [u|g|m]:[name]:— filename

原创粉丝点击