mysql redis
安全分类:系统安全 服务安全 数据安全 网络安全 抓包与扫描 监控
系统安全:
linux基本防护
[root@host52 ~]# chage -l root
最近一次密码修改时间 :从不
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
[root@host52 ~]# chage -E 2019-05-31 tom #设置账户过期时间
chage -l 用户名 #查看账户年龄信息
锁定用户账户 passwd --help
[root@proxy ~]# passwd -l zhangsan //锁定用户账号lock
锁定用户 zhangsan 的密码。
passwd: 操作成功
[root@proxy ~]# passwd -S zhangsan //查看状态status
添加用户由[root@host52 ~]# ls /etc/login.defs 配置文件决定
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0 0表示永远不用修改密码
PASS_MIN_LEN 5 密码长度 5
PASS_WARN_AGE 7 7天提醒修改密码
伪登陆提示:
[root@host52 ~]# vim /etc/issue
\S 操作系统的版本 ([root@host52 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.4 (Maipo)
Kernel \r on an \m 内核版本和参数 ([root@host52 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.4 (Maipo)
[root@host52 ~]# cat /etc/issue.net
\S
Kernel \r on an \m
例子:账户在登录Linux系统时,默认会显示登陆信息(包括操作系统内核信息)
/etc/issue这个配置文件里保存的就是这些登陆信息,修改该文件防止内核信息泄露。
[root@proxy ~]# cat /etc/issue //确认原始文件
Red Hat Enterprise Linux Server release 6.5 (Santiago)
Kernel \r on an \m
[root@proxy ~]# cp /etc/issue /etc/issue.origin //备份文件
[root@proxy ~]# vim /etc/issue //修改文件内容
Windows Server 2012 Enterprise R2
NT 6.2 Hybrid
文件系统安全 :
RHEL6 chkconfig
chkconfig httpd on
chkconfig httpd off
service httpd start
service httpd stop
RHEL7 systemctl
systemctl enable httpd
systemctl disable httpd
systemctl start httpd
systemctl stop httpd
锁定/解锁保护文件
# chattr +i 文件名 //锁定文件(无法修改、删除等)
# chattr -i 文件名 //解锁文件
# chattr +a 文件名 //锁定后文件仅可追加
# chattr -a 文件名 //解锁文件
# lsattr 文件名 //查看文件特殊属性
用户切换与提权
2.1 用户切换 su
echo $PWD
echo $PATH
2.2 用户提权 :
2.2.1配置系统的普通用户可以执行root用户 的命令
2.2.2 主配置文件 : /etc/sudoers
2.2.3 修改文件: vim /etc/sudoers 最后一定要强制保存退出 :wq!
或者 visudo
2.2.4 提权配置格式:
普通用户 主机名=命令列表(rpm,yum 需要写命令的绝对路径)
%用户组名 主机名=命令列表
2.2.5 普通用户执行提权命令 sudo 提权 命令
2.2.6普通用户查看可以使用的提权命令 sudo -l
2.2.7 提权例子
[root@host52 ~]# vim /etc/sudoers
dachui localhost,host52=/usr/bin/systemctl * httpd,/usr/bin/vim /etc/httpd/conf/httpd.conf # 使dachui有这些权限
tiechui localhost,host52=/usr/bin/systemctl * mysqld,/usr/bin/vim /etc/my.cnf
nb localhost,host52=/usr/bin/systemctl * httpd,/usr/bin/vim /etc/httpd/conf/httpd.conf,/usr/bin/systemctl * mysqld,/usr/bin/vim /etc/my.cnf
## Allows members of the 'sys' group to run networking, software,
给 dachui,tiechui,nb赋与指定的特权
2.2.8 别名设置 (给多个值,起一个名字)
命令别名 Cmnd_Alias
主机别名 Host_Alias
用户别名 User_Alias
[root@host52 ~]# vim /etc/sudoers
Cmnd_Alias MGMWEB=/usr/bin/systemctl * httpd,/usr/bin/vim /etc/httpd/conf/httpd.conf # MGMWEB 一定要大写
Cmnd_Alias MGMDB=/usr/bin/systemctl * mysqld,/usr/bin/vim /etc/my.cnf
Cmnd_Alias MGMSOFT=/usr/bin/rpm,/usr/bin/yum
Host_Alias MYSER=localhost,host52
dachui MYSER=MGMWEB,MGMSOFT
tiechui MYSER=MGMDB,MGMSOFT
nb MYSER=MGMWEB,MGMSOFT,MGMDB
用nb 这个用户登陆 host52 ,执行提权命令 : [nb@host52 ~]$ sudo systemctl stop httpd
[nb@host52 ~]$ sudo systemctl restart httpd
2.2.9启用日志
[root@host52 ~]# vim /etc/sudoers
Defaults logfile="/var/log/sudo.log" # 只有在普通用户登陆后,执行了提权的操作后才会出现这个文件
三 ssh 访问登陆控制
3.1 ssh服务常用配置
3.2 黑白名单 (限制客户端连接时使用的用户及客户端地址)
白名单: 仅仅允许使用列表里面的用户连接
AllowUsers 用户列表
[root@host52 ~]# vim /etc/ssh/sshd_config
AllowUsers nb root@192.168.4.254 # 允许nb 在任何机器登陆主机52 ,,在192.168.4.254 只允许用户root 登陆主机52
黑名单 : 仅仅不允许列表中里面的用户
DenyUsers 用户列表
[root@host52 ~]# vim /etc/ssh/sshd_config
DenyUsers nb root@192.168.4.254 # 不允许nb 在任何机器登陆主机52 ,,在192.168.4.254 不允许用户root 登陆主机52
3.3 认证登陆方式 (默认2种开启)
密钥对认证登陆 (公钥 加密,私钥解密)
口令(用户密码)
3.4配置密钥对认证登陆步骤
1创建密钥对 ssh-keygen
2把公钥给目标主机 ssh-copy-id root@192.168.4.52
四 SElinux安全防护
定义 : 一套强化Linux安全的扩展模块
运作机制 : 集成到Linux内核(2.6及以上) [root@host53 ~]# uname -r
操作系统提供可以定制的策略,管理工具
[root@host53 ~]# sestatus # 查看selinux状态
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: 28
查看安全上下文
文件 ls -lZ 文件名
目录 ls -ldZ 目录名
进程 ps aux -Z | grep -i 进程名
[root@host53 ~]# ps aux -Z | grep -i httpd
用户:角色:访问类型:选项
system_u:system_r:httpd_t:s0
system_u:system_r:mysqld_t:s0
4.2.2 一般规律 :
移动的文件 : 所有的上下文属性不变
复制的文件 : 自动继承目标位置的上下文
修改安全上下文
chcon
]# chcon -R -t httpd_sys_content_t /var/www/html
]# chcon -t httpd_sys_content_t /var/www/html/a4.html
重置安全上下文
restorecon
[root@host53 ~]# restorecon /var/www/html/a5.html
[root@host53 ~]# restorecon -R /var/www/html/
(禁用selinux)在主机192.168.4.53上运行vsftpd服务 允许匿名用户 访问服务的/var/ftp/share目录时有上传和下载文件的权限
主机53 :yum -y install vsftp
vim /etc/vsftpd/vsftpd.conf
- anonymous_enable=YES //开启匿名访问
- anon_upload_enable=YES //允许上传文件
- anon_mkdir_write_enable=YES //允许上传目录
- [root@proxy ~]# systemctl start vsftpd //启动服务
[root@host53 ~]# mkdir /var/ftp/share
[root@host53 ~]chmod o=rwx /var/ftp/share/
在主机50 上面操作,
[root@host50 ~]# yum -y install ftp
[root@host50 ~]# ftp 192.168.4.53
Connected to 192.168.4.53 (192.168.4.53).
220 (vsFTPd 3.0.2)
Name (192.168.4.53:root): ftp
331 Please specify the password.
Password: # 直接按空格 不用输入密码
下载文件 :
[root@host50 ~]# ftp 192.168.4.53
ftp> cd share
250 Directory successfully changed.
ftp> ls
ftp> get passwd
上传文件
ftp> cd share
ftp> lcd /etc/
ftp> put hosts
ftp 192.168.4.53 连接53主机的ftp服务
get 下载
put 上传
cd 进入ftp服务的目录
lcd 进入客户端本机目录
4.2.5 SElinux 布尔值
1查看布尔值 getsebool -a
getsebool -a | grep samba
2.修改布尔值
]# setsebool -P ftpd_anon_write on
]# setsebool -P ftpd_full_access=1
查看SElinux的日志信息 排错
关闭SELinux,运行53主机的httpd服务 服务使用的端口号是8077 在网页目录编写测试文件test.html在客户端访问
]# setenforce 0
]# rpm -q httpd || yum -y install
]# vim +42 /etc/httpd/conf/httpd.conf
Listen 8077
:wq
]# systemctl start httpd
]# netstat -utnlp | grep :8077
]# echo "192.168.4.53-web" > /var/www/html/test.html
]# curl http://localhost:8077/test.html
192.168.4.53-web
]# setenforce 1
]# vim +42 /etc/httpd/conf/httpd.conf
Listen 8099
:wq
]# systemctl restart httpd 启动服务失败
]# rpm -qa | grep setroubleshoot 查看日志程序软件包
]# ls /var/log/messages 记录日志的文件
]# grep setroubleshoot /var/log/messages | tail -1 过滤日志
Jun 2 16:43:50 host53 setroubleshoot: SELinux is preventing /usr/sbin/httpd from name_bind access on the tcp_socket port 8099. For complete SELinux messages run: sealert -l e2513e9a-d942-44e5-963c-43f4e783e979
]# sealert -l e2513e9a-d942-44e5-963c-43f4e783e979 执行命令
]# setsebool -P httpd_run_preupgrade 1
]# ausearch -c 'httpd' --raw | audit2allow -M my-httpd
]# semodule -i my-httpd.pp
]# systemctl start httpd 服务启动成功
]# netstat -utnlp | grep :8099 查看端口