防火墙&IPTABLES
防火墙及NETFILTER基础
防火墙的相关概念
防火墙是一种保护计算机网络安全的技术性措施,它通过在网络边界上建立相应的网络通信监控系统来隔离内部和外部网络,以阻挡来自外部的网络入侵。
逻辑:主机防火墙、网络防火墙
物理:硬件防火墙、软件防火墙
Linux的IPTABALES
Netfilter/iptables(简称IPTABLES)
Netfilter是防火墙的真正的安全架构,它是一个数据包处理模块,位于内核空间。iptables只是命令行接口。
#NFS服务端rcpbind,rfc为nfs-utils
yum install rpcbind nfs-utils -y
配置NFS服务
NFS服务器上建立NFS共享目录
mkdir /nfs_dir
chmod -Rf 777 /nfs_dir
NFS服务的配置文件
#/etc/exports #nfs配置文件,默认为空!!!
#/nfs_dir共享给本网段所有主机,且拥有读写权限,在将数据写入到NFS服务器的硬盘中后才会结束操作,最大限度保证数据不丢失
vi /etc/exports
/nfs_dir 192.168.5.*(rw,sync,root_squash)
#exports配置常用参数
#ro 只读
#rw 读写
#root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户
#no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
#all_squash 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户
#sync 同时将数据写入到内存与硬盘中,保证不丢失数据
#async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
启动NFS服务
systemctl restart rpcbind && systemctl enable rpcbind
systemctl start nfs-server && systemctl enable nfs-server
客户端测试
#showmount,主要使用命令来查询共享信息。此处测试最好在其它机器测试
showmount -e 192.168.5.153
mount -t nfs 192.168.5.167:/nfs_dir /mnt
#如果想要开机挂载,请编辑/etc/fstab文件
IPTABLES的功能
IPTABLE是按规则(rules)来处理数据包,“如果数据符合某个条件,就这样处理这个数据包”。
规则:源地址、目标地址、传输协议(tcp、udp、icmp)和服务类型(http、ftp)。
动作处理:通过(accept)、拒绝(reject)、丢弃(drop)、SANT、DNAT、
MASQUERADE(SNAT的一种特殊列式,用于动态的、临时会变的IP)、REDIRECT(端口映射)、LOG。
filter表:过滤功能,防火墙;
实现功能:INPUT、FORWARD、OUTPUT
nat表:网络地址转换;
实现功能:PREROUTING(DNAT),POSTROUTING(SNAT),OUTPUT
mangle表:拆解报文,做出修改,并重新封装的功能;
实现功能:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
raw表:关闭nat表上启用的连接追踪机制;(2.6内核后新增的模块,也很少使用,多使用前三个)
表间优先顺序:raw--->mangle--->nat--->filter
链间匹配顺序:
入站数据:PREROUTING、INPUT
出站数据:OUTPUT、POSTROUTING
转发数据:PREROUTING、FORWARD、POSTROUTING
链内的匹配顺序:
自上向下按顺序依次进行检查,找到相匹配的规则即停止
若在应该链内找不到匹配的规则,则按链的默认策略处理
IPTABLES基本用法
要实现哪种功能:判断添加在哪张表上;
报文流经的路径:判断添加在哪个链上;
表(四张)由链(若干)构成,链由规则(若干)组成,专表专用,一条命令即可!
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作
#设置步骤
1.清空当前的所有规则的计数
iptables -F #清空所有的防火墙规则
iptables -X #删除用户自定义的空链
iptables -Z #清空计数
2.允许本地回环地址通过
iptables -A INPUT -i lo -j ACCEPT #本地环路地址127.0.0.1
iptables -A OUTPUT -o lo -j ACCEPT
3.配置允许SSH端口连接(管理)
iptables -A INPUT -s 192.168.5.0/24 -p tcp --dport 22 -j ACCEPT
#-s为整个网段,-p协议tcp,--dport目的端口22
4.设置默认的规则
#如生产环境,设置默认的进入与转发都不允许,出的允许)
iptables -P INPUT DROP #配置默认的不让进
iptables -P FORWARD DROP #默认的不允许转发
iptables -P OUTPUT ACCEPT #默认的可以出去
5.配置白名单
iptables -A INPUT -p tcp -s 192.168.6.0/24 -j ACCEPT #允许192.168.6段可以访问
6.开启相应的服务端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT #允许80端口访问
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT #允许PING,8表示PING请求
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #已经建立的连接通过
7.保存规则
#不保存,重启后丢失。(生产建议都先进行测试,测试好后写成脚本)
iptables-save
iptables-save > iptables.bak #备份
iptables-restore < iptables.bak #还原
练习:
http://www.mamicode.com/info-detail-1779142.html
#学习的
https://www.cnblogs.com/frankb/p/7427944.html
3.8.3 IPTABLES LAYER7
http://blog.51cto.com/xiexiaojun/1888364
3.8.4 IPTABLES和TCP_WRAPPER
Tcp wrapper是一款访问控制的工具,很类似iptables的功能,但是要比iptables功能要小很多,一般只有在满足以下条件时才能使用tcp wrapper,必须是TCP协议。
/etc/hosts.allow #允许配置文件
/etc/hosts.deny #拒绝配置文件