1.防火墙:网络防火墙、主机型防火墙
2.TCPWappers
3.软件自己过滤
4.人类工程学
5.VPN
对安全实行的措施技术
加强系统账号安全
加强系统引导和登录安全
检测弱口令账号
使用NMAP端口扫描工具
TCPWappers配置过滤文件:/etc/hosts.allow和/etc/hosts.deny
主机型防火墙:iptables、思科硬件防火墙、华为硬件防火墙
以下是内网与外网的网络架构图:
将非登录用户的Shell设为/sbin/nologin
useradd -M -s /sbin/nologin(不创建宿主目录)或usermod -s /sbin/nologin
补充:vim /etc/passwd 直接修改shell环境
锁定长期不使用的账号
锁定:usermod -L 【用户名】 解锁:usermod -U 【用户名】 查看锁定的用户:usermod -S
锁定:passwd -l 【用户名】 解锁:passwd -u
删除无用的账号
userdel -r(同时删除宿主目录)
锁定账号文件passwd、shadow
passwd文件位置:/etc/passwd shadow文件位置:/etc/shadow
锁定账号文件:chattr +i /etc/passwd chattr +i /etc/shadow(i为不可修改权限)
查看所有权限:lsattr -a
设置密码有效期——passwd -e 2019-12-30 zhangsan
修改默认的密码有效期
vim /etc/login.defs
PASS_MAX_DAYS 30
修改已经创建的用户密码有效期——chage -M 30 【用户名】
要求用户第一次登陆强制修改密码——chage -d 0 【用户名】
历史命令记录文件位置:/etc/profile
减少记录的命令条数
vim /etc/profile HISTSIZE=200(默认的命令条数)
注销时自动清理命令历史
vim ~/.bash_logout(用户登出是加载的文件) history -c
设置中终端自动注销(centos6)
显示600秒后自动注销
vim ~/.bash_profile export TMOUT=600
不能用root用户直接远程访问
建议使用普通用户远程登录,然后再转换root用户,要求使用密钥对验证登录
su - 【目标用户名】
查看su操作记录——tail /var/log/secure
-存在否的区别:有 - 切换的是新的shell环境 没有 - 是保持原来的shell环境
限制su的使用
1.启用pam_wheel认证模块
修改配置文件:vim /etc/pam.d/su
2.直接取消注释:auth required pam_wheel.so use_uid
3.将允许使用su命令的用户加入wheel组——gpasswd -a 【用户名】 wheel
以其他用户执行授权的命令——sudo
修改配置文件:vim /etc/sudoers
或者使用命令:visudo zhansan localhost=/sbin/reboot
用户名 主机名列表=命令程序列表(可以用* !)
注意:visudo 默认没有日志文件,可以手动设置:Defaults logfile=”/var/log/sudo”
查询授权:sudo -l
BIOS安全控制
1.调整BIOS引导设置
2.设置首启动项为当前系统所在硬盘
3.禁止从其他设备(光盘、U盘、网络)引导系统
4.将安全级别设为setup,并设置BIOS管理员密码
5.禁用重启热键:Ctrl+Alt+Del
vim /etc/init/control-alt-delete.conf
start on control-alt-delete
exec /sbin/shutdown -r now “Control-Alt-Delete pressed”
reboot
GRUB菜单限制
1.未经授权禁止修改启动参数
2.未经授权禁止进入指定系统
3.密码记录的位置
全局部分 :第一个“title”之前,如果
系统引导部分:每个“title”部分之后
给GRUB菜单加入密码项
获得加密字串——grub-md5-crypt
添加密码记录——vim /bot/grub/grub.conf
passwrod(明文密码)或者passwrod --md5(md5码加密)
添加到第一个title之前(把生成的md5码)
虚拟终端安全
1.减少开发终端个数
配置文件修改——vim /etc/init/start-ttys.conf
开机启动模式配置文件——vim /etc/sysconfig/init
2.限制root只在安全的终端登录
修改配置文件——vim /etc/securetty
注释多于的tty 禁止root用户从终端tty#登录
3.限制普通用户登录
创建文件添加用户——vim /etc/nologin 临时限制(默认文件不存在)
注意:添加不能登录终端的普通用户,删除后即恢复正常
john:密码爆破软件(该软件是使用密码文件,里面存放弱口令,然后本地有密码文件存放情况下才有效)
密码文件: password.lst
到密码存放位置启动软件
比如:cp /etc/shadow ./
cd john
run# ./ john /root/shadow
john.pot:破解之后的文件
NMAP:网络端口扫描
官方网站:http://nmap.org/
nmap [扫描类型] [选项] <扫描目标..>
常用的扫描类型
-sS:TCP SYN扫描(半开) -sT:TCP连接扫描(全开) -sF:TCP FIN 扫描
-sU:UDP扫描 -sP:ICMP扫描 -P0: 跳过ping检测
例如:
nmap 127 0.0.1 检测TCP端口
nmap -sU 127.0.0.1 检测UDP端口
nmap -p 21 192.168.11.0/24 检测该网段有哪些主机提供FTP服务
-p:指定目标端口
nmap -n -sP 192.168.11.0/24 检测该网段有哪些存活主机
-n:禁用反向解析
软件自己的过滤
白名单文件:/etc/hosts.allow 黑名单文件:/etc/hosts.deny
1.设置访问控制列表 2.策略的配置格式
服务列表:客户机地址列表
补充:以冒号分隔,在每个列表的多个向之间以逗号分隔
服务程序列表
ALL:代表所有的服务
单个服务程序:如“vsftpd”
多个服务程序组成的列表:如“vsftpd,sshd”
客户机地址列表
ALL:代表任何客户机地址
LOCAL:代表本机地址
单个IP地址:比如“192.168.11.102”
网络段地址:比如“192.168.11.0/255.255.255.0”
在CentOS6中防火墙内核叫:netfilter
但是应用中我们通常使用的应用是:iptables
防火墙的主要构成(四表五链)
四表:raw(追踪)、mangle(登记)、nat(转换)、filter(过滤)
五链:PREROUTING、POSTROUTIN、INPUT、OUTPUT、FORWARD
规则链:
INPUT: 当收到访问防火墙本机地址的数据包(入站)
OUTPUT: 当防火墙本机向外发送数据包(出站)
FORWARD: 当接收到需要通过防火墙中转发送给其它地址的数据包(转发)
PREROUTING: 在对数据包做路由选择之前
POSTROUTING: 在对数据包做路由选择之后
注意:INPUT、OUTPUT主要用于主机型防火墙,切是主要修改添加规则的地方(一般都应用于INPUT上)
如下图所示(一个电脑中防火墙最基础的配置布局)
数据包过滤匹配流程
匹配即停止 : 一旦找到一条相匹配的规则(使用LOG日志操作的规则除外),则不再检查本链内后续的其他规则
如果找不到与数据包匹配的规则,就按照规则链的默认策略处理
(一旦前面有同性质同地域限制之类的条件,那么后面的条件限制就不管,只匹配前面的)
比如:1.允许192.168.11.0网段进行访问 2.拒绝192.168.11.101访问(那么第一条说了该网段可以访问,那么第二条就不作数)
防火墙的规则编写
命令格式——iptables -t 【表名】【选项】【链名】【规则】
iptables -t 表名(raw mangle nat filter) 选项(-A -I -n -L -D -P -F) 链名(PREROUTING、POSTROUTIN INPUT OUTPUT FORWARD) 条件(通用 隐含 显示) -j 控制类型(ACCEPT DROP REJECT LOG )
如果没有-t选项那么表名默认为filter链名默认为INPUT
常用控制类型
ACCEPT:允许数据包通过
DROP :直接丢弃数据包,不给出任何回应消息
REJECT :拒绝数据包通过,必要时会给数据发送一个响应消息
LOG :在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则。 “匹配即停止”不适用LOG,因为LOG只是一种辅助动作,并没有真正处理数据包
基本操作的选项:
类型 |
选项 |
用途 |
添加新的规则 |
-A |
在链的末尾追加一条规则 |
-I |
在链的开头(或指定序号)插入一条规则 |
|
查看规则列表 |
-L |
列出所有的规则条目 |
-n |
以数字形式显示地址、端口信息 |
|
-v |
以更详细的方式显示规则信息 |
|
--line-numbers |
查看规则时,显示规则的序列号 |
|
删除、清空规则 |
-D |
删除链内指定序号(或内容)的一条规则 |
-F |
清空所有的规则 |
|
设置默认策略 |
-P |
为指定的链设置默认规则 |
|
-h |
查看帮助命令信息 (--help) |
|
-R |
修改、替换指定链中的某条规则,可以指定序列号或者具体内容 |
例:实现我可以ping别人,别人不能ping我(8 请求 0 回显 3 不可达)
iptables -A INPUT -p icmp --icmp-type 8 -j DROP
iptbales -A INPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
iptables -A INPUT -p icmp -j DROP
规则匹配条件选项:
类型 |
条件类型 |
用法 |
通用匹配 |
协议匹配 |
-p 协议名 |
地址匹配 |
-s 源地址、 -d目的地址 |
|
接口匹配 |
-i入站网卡、 -o出站网卡 |
|
隐含匹配 |
端口匹配 |
--sport源端口、 --dport目的端口 |
TCP标记匹配 |
--tcp-flags 检查范围,被设置的标记 |
|
ICMP类型匹配 |
--icmp-type ICMP类型 |
|
显示匹配 |
多端口匹配 |
-m multiport --sports | --dports 端口列表 |
IP范围匹配 |
-m iprange --src-range IP范围 |
|
MAC地址匹配 |
-m mac --mac-source MAC地址 |
|
状态匹配 |
-m state --state 连接状态 |
备份命令:iptables-save > myiptables.txt 还原命令:iptables-restore < myiptables.txt
一般用于内外网的防火墙应用
防火墙中nat转换nat链的配置命令:
iptables -t nat -A(-I) POSTRUTING -s 192.168.12.0/24 -o eth0 -j SNAT --to-source 192.168.11.21
上面的意思大概是把192.168.12.0网段的ip以eth0网卡为出站口转化为192.168.11.21为公网进行外部上网
图所示公司内外网防火墙基础布局的应用:
右边为内网,在公司路由服务器上应用网络型防火墙并且搭建DHCP和DNS服务,最左边的服务器搭建http服务并实现应用主机型防火墙
1.搭建好服务环境,配置好各个电脑服务器的ip如上面的图所示
2.配置路由服务器两个网卡,用于内外网的不同网段功能
图一作为内网出去上网的公网地址图二为内网的网关
3.修改内核参数,使该服务器拥有路由功能
修改配置文件:/etc/sysctl.conf
修改参数net.ipv4.ip.forward =1(开启路由转发功能)
读取修改的配置文件——sysctl -p
查看默认的防火墙的规则——iptables -nL
删除全部默认的防火墙——iptables -F(不添加链名默认删除全部)
4.配置nat链在POSTROUTING上做端口转换防火墙并且配置FORWARD链上的规则使来回数据能够通行,这样才能发送请求并且回复
5.配置INPUT链上的过滤规则,把默认设置成DROP丢出,这样可以添加允许语句进行判断,使得服务器更加安全
注意:如果拒绝语句写的多默认就设置成允许最好,两者一般成反比使用
6.查看防火墙的规则配置信息
7.测试:(在http上配置可以80端口进行访问网页,但是不能进行其他操作比如:ping命令)
配置防火墙之前
配置之后可以访问80端口http服务
配置之后不能ping
DNAT策略的应用
1.外网想要访问内网的服务器,这个时候就需要DNAT策略来实现,相当于端口映射
命令的格式:iptables -t nat -A PREROUTING -i eth0 -d 192.168.11.21 -p tcp --dprot 80 -j DNAT --to-destination 192.168.12.101
上面的意思大概是把192.168.12.101服务器的80端口映射从eth0为入站口也就是映射到192.168.11.21这个IP,别人从这个IP对内进行访问
2.安全的DNAT策略(修改访问的端口,不让别人使用默认的端口进行访问)
命令的格式:iptables -t nat -A PREROUTING -i eth0 -d 192.168.11.21 -p tcp --dprot 2346 -j DNAT --to-destination 192.168.12.101:22
上面2346就是修改的端口号,别人会用2346端口进行访问该服务的22号端口