/*目录*/

服务安全与监控

一、Linux基本防护

常用系统监控命令:

traceroute 路由追踪(查看到达目标主机的路由信息)
iostat 查看硬盘的读写状态
free 内存状态
uptime 查看CPU负载
swapon -s 查看交换分区信息
ss -antup 查看所有的网络连接信息
ss -ntulp 查看本机监听的所有端口

-n以数字显示端口号
-t显示tcp连接
-u显示udp连接
-p显示监听端口对应的程序名称
-a查看所有连接状态信息
~]# chage -l 账户名称    //查看账户信息
~]#chage -E yyyy-mm-dd  账户名称    //指定失效日期
~]#chage -d 0 tom       //强制用户tom修改密码
[root@m52 ~]# passwd -l root     //锁定用户 root 的密码(无法使用该用户ssh)
[root@m52 ~]# passwd -u root    //解锁用户 root 的密码。
[root@m52 ~]# passwd -S root    //看密码状态

修改tty登录的提示信息,隐藏系统版本

1)账户在登录Linux系统时,默认会显示登陆信息(包括操作系统内核信息)
/etc/issue这个配置文件里保存的就是这些登陆信息,修改该文件防止内核信息泄露。

[root@proxy ~]# cat /etc/issue                              //确认原始文件
[root@proxy ~]# cp /etc/issue /etc/issue.origin              //备份文件
[root@proxy ~]# vim /etc/issue                              //修改文件内容

退出已登录的tty终端,或者重启Linux系统,刷新后的终端提示信息会变成自定义的文本内容

[root@proxy ~]# cat /etc/fstab
/dev/vda1 /boot xfs defaults,noexec 0 0
备注:
noexec属性可以让分区下的所有程序都不可执行,包括病毒与木马
noatime让分区下的所有文件都不再更新atime时间,atime时间为文件的访问时间

对于操作系统来说,文件系统也可以通过添加额外属性来提高性能与安全性。

锁定文件/etc/resolv.conf、/etc/hosts

1)语法格式:

chattr +i 文件名 //锁定文件(无法修改、删除等)

chattr -i 文件名 //解锁文件

chattr +a 文件名 //锁定后文件仅可追加

chattr -a 文件名 //解锁文件

lsattr 文件名 //查看文件特殊属性

  1. 使用+i锁定文件,使用lsattr查看属性
[root@proxy ~]# chattr +i /etc/resolv.conf 
[root@proxy ~]# lsattr /etc/resolv.conf 
----i---------- /etc/resolv.conf

3)使用+a锁定文件(仅可追加),使用lsattr查看属性

[root@proxy ~]# chattr +a /etc/hosts
[root@proxy ~]# lsattr /etc/hosts
-----a---------- /etc/hosts

4)测试文件锁定效果

[rhel6]#chkconfig  服务名  on
[rhel6]#chkconfig  服务名  off
[rhel6]#service 服务名 start
[rhel6]#service 服务名 stop

二、用户切换与提权
2.1 用户切换 su
普通用户执行提权命令:sudo 系统命令
普通用户查看可使用的提权命令:sudo -l
2.2 用户提权:
作用:配置系统的普通用户可以执行root用户的命令
主配置文件: /etc/sudoers
修改文件 vim /etc/sudoers 或 visudo
提权配置格式
普通用户名 主机名=命令列表(绝对路径)
%用户组名 主机名=命令列表(绝对路径)

2.3 别名设置
为sudo配置项定义别名(给多个值 起一个名字,先定义,后调用)[别名的名称必须全大写]
]#visudo
命令别名(Cmnd_Alias) 名字=命令列表
主机别名(Host_Alias) 名字=主机名列表
用户别名(User_Alias) 名字=用户名列表

Cmnd_Alias MGMWEB=/usr/bin/systemctl * httpd , /usr/bin/vim /etc/httpd/conf/httpd.conf
Cmnd_Alias MGMDB=/usr/bin/systemctl * mysqld , /usr/bin/vim /etc/my.cnf
Cmnd_Alias MGMSOFT=/usr/bin/rpm , /usr/bin/yum

2.3.1 配置用户环境alias别名设置
查看已设置的别名:alias [别名名称]
定义新的别名:alias 别名名称= '实际执行的命令行'
取消已设置的别名:unalias [别名名称]

影响指定用户的 bash 解释环境
~/.bashrc,每次开启 bash 终端时生效

影响所有用户的 bash 解释环境
/etc/bashrc,每次开启 bash 终端时生效

[root@server0 ~]# vim /root/.bashrc 
alias hello='echo hello'
[root@server0 ~]# vim /home/student/.bashrc 
alias hi='echo hi'
[root@server0 ~]# vim /etc/bashrc 
alias abc='echo abc'

然后运行source /root/.bashrc 即可立即使用。
如果不运行source读取,需要重新登陆会话窗口才能使用。

2.4 启用日志
作用:记录普通用户执行过的提权命令
]# vim /etc/sudoers

   Defaults  logfile="/var/log/sudo.log"

三、SSH访问控制

vim /etc/ssh/sshd_config

17行Port 2222
19行ListenAddress 192.168.4.52  //监听的端口
PermitRootLogin no   //禁止root登陆
MaxAuthTries 6     //登陆限时
LoginGraceTime 2m //每连接最多认证次数

[root@m52 ~]# systemctl restart sshd
]# netstat -utnlp | grep sshd

其他主机连接 ]# ssh -p 2222 root@192.168.4.52

3.2 黑白名单 (限制客户端连接时使用的用户及客户端地址)

白名单 : 仅允许使用列表里的用户连接
AllowUsers 用户列表

]# vim /etc/ssh/sshd_config
AllowUsers  new   root@192.168.4.254
]# systemctl  restart sshd 

黑名单 : 仅不允许使用列表里的用户连接
DenyUsers 用户列表

]# vim /etc/ssh/sshd_config
#AllowUsers     new  root@192.168.4.254
DenyUsers       new  root@192.168.4.254			
]# systemctl  restart sshd

3.3 认证登陆方式 (默认2种都开启了)

密钥对认证登陆(公钥加密 私钥解密)
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
确认密钥验证使用正常后,禁用口令验证
口令(用户密码) 65 PasswordAuthentication no/yes

配置密钥对认证登陆步骤

		1 创建密钥对  ssh-keygen
		2 把公钥传给目标主机ssh-copy-id  root@xxxx
		rm -rf /root/.ssh/*    //清除密钥对文件

将服务器上用户kate创建的密码设为空,尝试SSH登录,也会失败:
[root@proxy ~]# passwd -d kate //清空用户口令
清除用户的密码 kate。
passwd: 操作成功

四、SELinux安全防护

4.1 selinux介绍
全称:Security-Enhanced Linux
美国NSA国家安全局主导开发,一套增强Linux系统安全的强制访问控制体系
集成到Linux内核(2.6及以上)中运行
RHEL7基于SELinux体系针对用户、进程、目录和文件
提供了预设的保护策略,以及管理工具

4.1.1 SELinux运行模式的切换
运行模式:
enforcing(强制)
permissive(宽松)
disabled(彻底禁用)

任何模式再切换到disabled(彻底禁用)模式,都必须要经历重起系统

切换运行模式 :
临时切换:setenforce 1|0 #暂时再本次开机有效
固定配置:/etc/selinux/config 文件 #不影响当前SELinux状态

[root@server0 ~]# getenforce      #查看SELinux状态
Enforcing
[root@server0 ~]# setenforce 0    #当前修改SELinux状态
[root@server0 ~]# getenforce      
Permissive
[root@server0 ~]# vim /etc/selinux/config   #永久配置
SELINUX=permissive

4.2 查看安全上下文
文件 ls -lZ 文件名
目录 ls -ldZ 目录名
进程 ps aux -Z | grep -i 进程名
]# ls -lZ /etc/passwd
]# ls -ldZ /etc/
]# ps aux -Z | grep -i httpd

用户:角色:访问类型:选项...
system_u:object_r:passwd_file_t:s0
system_u:object_r:etc_t:s0
system_u:system_r:mysqld_t:s0
system_u:system_r:httpd_t:s0

4.3一般操作规律
mv 移动的文件,原有的上下文属性不变
cp 复制的文件,自动继承目标位置的上下文

4.4 修改安全上下文
chcon

]# chcon -R -t httpd_sys_content_t /var/www/html
]# chcon -t httpd_sys_content_t /var/www/html/a4.html

4.5 重置安全上下文
restorecon

]# restorecon -R /var/www/html
]# restorecon /var/www/html/a5.html

4.6 SElinux布尔值 (功能开关)
1 查看布尔值 getsebool -a
getsebool -a |grep 服务名
2 修改布尔值
setsebool -P 选项名 on|off

五、加密与解密

第一种:GPG对称加/解密 (加密与解密使用相同密钥)
usera 发送解密文件给 userb
第二种:GPG非对称加/解密 : 数据加密和解密使用不同的密钥
公钥加密 私钥解密

]$ ls -a ~ //查看家目录下的隐藏文件
]$ ls ~/.gnupg/ //查看密钥的相关配置

创建密钥对:#gpg --gen-key
导出公钥:#gpg  --export -a  > 文件名.pub
导入公钥:#gpg   --import   接收到的公钥的保存路径
使用公钥加密:#gpg -e  -r  目标用户  要发送的文件      // -r-->指定目标用户
发送加密文件:mv    或者  scp
使用私钥解密:#gpg -d  需要解密的文件的绝对路径
生成签名文件:# gpg  -b  xx.txt   //生成签名文件
使用公钥验证签名文件: #gpg  --verify 文件路径

gpg --help
例子:
准备用户:usera,userb
usera 发送方 加密数据
usera~]# rm -rf ~/.gnugp //清除原有的秘钥相关配置

	1 导入公钥  ]# gpg --import   /tmp/userb.pub
	           ]# ls ~/.gnupg
	2 使用公钥加密 gpg  -e 
	           [usera@pc117 ~]$ gpg -e -r userb test2.txt
	3 发送加密文件 ]# mv  / scp
	           ]# mv  test2.txt.gpg   /tmp/
	4 接收方userb 用户使用私钥解密 ]# gpg -d
	           ]# gpg -d  /tmp/test2.txt.gpg  > ~/b.txt	
		   ]# cat  ~/b.txt
GPG软件签名与验证
1 使用私钥签名
	userb~]# gpg  -b  a1.txt   //生成签名文件
	 ]# ls a1.txt.sig       
	2 共享签名文件 公钥匙文件 原文件
	$ cp xxx.sig   /tmp/
	3 导入公钥
	4 使用公钥验证签名文件

六、AIDE入侵检测系统

AIDE介绍

aide  --help
  1. AIDE(Advanced Intrusion Detection Environment,高级入侵检测环境)是个入侵检测工具,主要用途是检查文档的完整性。
  2. AIDE能够构造一个指定文件的数据库,它使用aide.conf作为其配置文件。 AIDE数据库能够保存文件的各种属性,包括:权限(permission)、索引节点序号(inode number)、所属用户(user)、所属用户组(group)、文件大小、最后修改时间(mtime)、创建时间(ctime)、最后访问时间(atime)、增加的大小以及连接数。 AIDE还能够使用下列算法: sha1、 md5、 rmd160、 tiger,以密文形式建立每个文件的校验码或散列号.
  3. 这个数据库不应该保存那些经常变动的文件信息,例如:日志文件、邮件、 /proc文件系统、用户起始目录以及临时目录.

配置AIDE入侵检测服务

]# yum -y install aide //安装软件
修改配置文件,定义监控目录
配置文件路径:/etc/aide.conf
定义监控/app目录,但不监控/app目录下的f3文件。规则为:权限+所有者+所属组+sha512+修改时间+访问时间+改变时间

[root@A ~]# cp /etc/aide.conf /etc/aide.conf.bak       #对配置文件修改前建议备份
[root@A ~]# sed -i '99,$s/^/#/' /etc/aide.conf  //注释掉默认配置
[root@A ~]# vim /etc/aide.conf                 #编辑配置文件
# Example configuration file for AIDE.
 
@@define DBDIR /var/lib/aide            #数据库目录
@@define LOGDIR /var/log/aide           #日志目录
 
# The location of the database to be read.
database=file:@@{DBDIR}/aide.db.gz      #数据库文件
…………省略…………
 
mon = p+u+g+sha512+m+a+c        #   自定义规则监控:权限+所有者+所属组+sha512+修改时间+访问时间+改变时间
/app mon        #定义/app目录使用规则 mon
!/app/f3        #但是/app目录下的f3文件不监控,“!”表示忽略这个文件的检查

]# aide --init //初始化检查
]# aide --check //入侵检测

七、linux安全之打补丁

创建补丁文件:

diff -u   旧文件      新文件

diff -u 旧文件  新文件  >  补丁文件.patch

]# patch -p数字  <  补丁文件         //打补丁--------->-p后的数字代表删除重复目录的个数
]# patch  -RE    <  补丁文件       //撤销补丁

其他创建补丁文件选项的使用:

-r	递归对比目录中的所有资源(可以对比目录)
 -a	所有文件视为文本(包括二进制程序)
 -N	无文件视为空文件(A目录下没有txt文件,B目录下有txt文件,diff比较两个目录时,默认会提示txt仅在B目录有(无法对比差异,修复文件)diff比较时使用N选项,则diff会拿B下的txt与A下的空文件对比,补丁信息会明确说明如何从空文件修改后变成txt文件,打补丁即可成功!)
 -u	输出统一内容的头部信息(打补丁使用)

A 代码开发 B 使用者

A (准备环境)
mkdir {source1,source2} //同时建立俩个文件夹

B主机操作 ]# mkdir -p /demo/source1

A 主机操作 创建补丁文件

scp -r  /demo/source1/*  root@192.168.4.51:/demo/source1/
 ]# diff -uraN  /demo/source1  /demo/source2  > /root/all.patch   //生成补丁文件
 ]# cat /root/all.patch 
 ]# scp  /root/all.patch  root@192.168.4.51:/tmp/

B 主机操作

  ]# cat  /tmp/all.patch
  ]# cd  /demo/source1
  ]# patch  -p3  < /tmp/all.patch  ---------->  打补丁
	patching file find
	patching file test.sh
	patching file tmp.txt
[root@host51 source1]# ls
find  test.sh  tmp.txt

[root@host51 source1]#  patch  -RE  < /tmp/all.patch ------------->撤销补丁
[root@host51 source1]#  ls 
find  test.sh
posted @ 2020-07-03 10:47  嘟嘟噜~  阅读(223)  评论(0编辑  收藏  举报