@mrz1
2018-01-11T01:38:41.000000Z
字数 9541
阅读 2077
笔记
scp命令:
scp[options] SRC... DEST/
两种方式:
scp [options] [user@]host:/sourcefile /destpath
scp [options] /sourcefile [user@]host:/destpath
常用选项:
-C: 压缩数据流
-r: 递归复制
-p: 保持原文件的属性信息
-q: 静默模式
-P PORT: 指明remote host的监听的端口
基于ssh和rsh服务实现高效率的远程系统之间复制文件
使用安全的shell连接做为传输方式
•rsync –av /etc server1:/tmp复制目录和目录下文件
•rsync –av /etc/ server1:/tmp只复制目录下文件
比scp更快,只复制不同的文件
选项:
-n 模拟复制过程
-v 显示详细过程
-r 递归复制目录树
-p 保留权限
-t 保留时间戳
-g 保留组信息
-o 保留所有者信息
-l 将软链接文件本身进行复制(默认)
-L 将软链接文件指向的文件复制
-a 存档,相当于–rlptgoD,但不保留ACL(-A)和SELinux属性(-X)
交互式文件传输工具
用法和传统的ftp工具相似
利用ssh服务实现安全的文件上传和下载
使用ls cd mkdir rmdir pwd get(下载) put(上传)等指令,可用?或help
获取帮助信息
sftp [user@]host
sftp > help
pssh是一个python编写可以在多台服务器上执行命令的工具,也可实现文件复制
选项如下:
--version:查看版本
-h:主机文件列表,内容格式”[user@]host[:port]”
-H:主机字符串,内容格式”[user@]host[:port]”
-l:登录使用的用户名
-p:并发的线程数【可选】
-o:输出的文件目录【可选】
-e:错误输入文件【可选】
-t:TIMEOUT 超时时间设置,0无限制【可选】
-O:SSH的选项-v:详细模式
-A:手动输入密码模式
-x:额外的命令行参数使用空白符号,引号,反斜线处理
-X:额外的命令行参数,单个参数模式,同-x -i:每个服务器内部处理信息输出
-P:打印出服务器返回信息
[root@centos7 ~]#pssh -H 172.18.101.93 getenforce
[1] 21:44:31 [SUCCESS] 172.18.101.93
[root@centos7 ~]#pssh -H 172.18.101.93 -i getenforce
[1] 21:44:34 [SUCCESS] 172.18.101.93
Disabled
[root@centos7 ~]#pssh -H 172.18.101.93 172.18.101.94 -i getenforce
[1] 21:44:34 [SUCCESS] 172.18.101.93
Disabled
[2] 21:44:34 [SUCCESS] 172.18.101.94
Disabled
更方便ip地址写到文件中(ip.txt放着ip地址)
[root@centos7 ~]#pssh -h ip.txt -i getenforce
把每个主机的日志放到/app下里面 以每个IP地址为文件名
[root@centos7 ~]#pssh -h ip.txt -o /app -i cat /var/log/secure
[root@centos7 ~]#pssh -h ip.txt -A -i 'rm -rf /app/*' //这里必须加单引号
[root@centos7 ~]#pssh -h ip.txt -A -i 'rm -rf /app/*' 手动输入口令前提是必须一样
通过pssh批量关闭seLinux
pssh -H root@192.168.1.10 -i "sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config" 批量发送指令
pssh -H root@192.168.1.10 -i setenforce 0
pssh -H xuewb@192.168.1.10 -i hostname
当不支持ssh的key认证时,通过-A选项,使用密码认证批量执行指令
pssh -H xuewb@192.168.1.10 -A -i hostname
将标准错误和标准正确重定向都保存至/app目录下
pssh -H 192.168.1.10 -o /app -e /app -i "hostname"
pscp.pssh功能是将本地文件批量复制到远程主机
pscp [-vAr] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par] [-o outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] local remote
Pscp-pssh选项
-v 显示复制过程
-a 复制过程中保留常规属性
-r 递归复制目录
将本地curl.sh 复制到/app/目录
pscp.pssh -H 192.168.1.10 /root/test/curl.sh /app/
pscp.pssh -h host.txt /root/test/curl.sh /app/
将本地多个文件批量复制到/app/目录
pscp.pssh -H 192.168.1.10 /root/f1.sh /root/f2.sh /app/
将本地目录批量复制到/app/目录
pscp.pssh -H 192.168.1.10 -r /root/test/ /app/
pslurp.pssh功能是将远程主机的文件批量复制到本地
pslurp [-vAr] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par][-o outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] [-L localdir] remote local(本地名)
Pslurp-pssh选项
-L 指定从远程主机下载到本机的存储的目录,local是下载到本地后的名称
-r 递归复制目录
批量下载目标服务器的passwd文件至/app下,并更名为user
pslurp -H 192.168.1.10 -L /app/ /etc/passwd user
选项:
示例
ssh –L 9527:telnetsrv:23 -N sshsrv telnet 127.0.0.1 9527
当访问本机的9527的端口时,被加密后转发到sshsrv的ssh服务,再解密被转发到telnetsrv:23
data<->localhost:9527<->localhost:XXXXX<->sshsrv:22<->sshsrv:YYYYY<->telnetsrv:23
示例:
ssh –R 9527:telnetsrv:23 –N sshsrv
让sshsrv侦听9527端口的访问,如有访问,就加密后通过ssh服务转发请求到本机ssh客户端,再由本机解密后转发到telnetsrv:23
Data<->sshsrv:9527<->sshsrv:22 <->localhost:XXXXX<->localhost:YYYYY<->telnetsrv:23
所有图形化应用程序都是X客户程序
1、能够通过tcp/ip连接远程X服务器
2、数据没有加密机,但是它通过ssh连接隧道安全进行
服务器端:sshd, 配置文件: /etc/ssh/sshd_config
semanage port -l
查看默认策略的所有端口
semanage port -a -t ssh_port_t -p tcp #端口
加入策略
常用参数:
Port
AddressFamily any 默认ipv4 ipv6
ListenAddress ip 这里指定ip
LoginGraceTime 2m
PermitRootLogin yes
StrictModes yes 检查.ssh/文件的所有者,权限等
MaxAuthTries 6
MaxSessions 10 同一个连接最大会话
PubkeyAuthentication yes
PermitEmptyPasswords no
PasswordAuthentication yes
GatewayPorts no
ClientAliveInterval:单位:秒
ClientAliveCountMax:默认3
UseDNS yes
GSSAPIAuthentication yes 提高速度可改为no
MaxStartups未认证连接最大值,默认值10
Banner /path/file
限制可登录用户的办法:
AllowUsers user1 user2 user3
DenyUsers
AllowGroups
DenyGroups
ssh协议的另一个实现:dropbear
源码编译安装:
1. 安装开发包组:yum group install “Development tools”
2. 下载dropbear-2017.75.tar.bz2
3. tar xf dropbear-2017.75.tar.bz2
4. less INSTALL README
5. ./configure
6. make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp"
7. make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install
8. 启动ssh服务:
9. ls /usr/local/sbin/ /usr/local/bin/
10. /usr/local/sbin/dropbear -h
11. mkdir/etc/dropbear
12. dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key-s 2048
13. dropbearkey -t dss -f /etc/dropbear/dropbear_dsa_host_key
14. dropbear -p :2222 -F –E #前台运行dropbear-p :2222 #后台运行
15. 客户端访问:
16. ssh -p 2222 root@127.0.0.1
17. dbclient -p 2222 root@127.0.0.1
当一个入侵者进入了你的系统并且种植了木马,通常会想办法来隐蔽这个木马(除了木马自身的一些隐蔽特性外,他会尽量给你检查系统的过程设置障碍),通常入侵者会修改一些文件,比如管理员通常用ps -aux来查看系统进程,那么入侵者很可能用自己经过修改的ps程序来替换掉你系统上的ps程序,以使用ps命令查不到正在运行的木马程序。如果入侵者发现管理员正在运行crontab作业,也有可能替换掉crontab程序等等。所以由此可以看出对于系统文件或是关键文件的检查是很必要的。目前就系统完整性检查的工具用的比较多的有两款:Tripwire和AIDE,前者是一款商业软件,后者是一款免费的但功能也很强大的工具
AIDE(Advanced Intrusion Detection Environment)
安装yum install aide
修改配置文件
vim /etc/aide.conf(指定对哪些文件进行检测)
/test/chameleon R
/bin/ps R+a
/usr/bin/crontab R+a
/etc PERMS
!/etc/mtab #“!”表示忽略这个文件的检查R=p+i+n+u+g+s+m+c+md5 权限+索引节点+链接数+用户+组+大小+最后一次修改时间+创建时间+md5校验值NORMAL = R+rmd60+sha256
初始化默认的AIDE的数据库:aide --init
生成检查数据库(建议初始数据库存放到安全的地方)
cd /var/lib/aide
mv aide.db.new.gz aide.db.gz
比较关心检测文件或者目录:/var/lib/aide --check
更新数据库aide --update //这时会多一个aide.db.new.gz文件在执行mv aide.db.new.gz aide.db.gz
su切换身份:su –l username –c "command"
sudo
- 来自sudo包
- man 5 sudoers
- sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用sudo,会提示联系管理员
- sudo可以提供日志,记录每个用户使用sudo操作
- sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机
- sudo使用时间戳文件来完成类似“检票”的系统,默认存活期为5分钟的“入场券”
- 通过visudo命令编辑配置文件,具有语法检查功能
- visudo –c 检查语法
- 配置文件:/etc/sudoers, /etc/sudoers.d/
- 时间戳文件:/var/db/sudo 一定时间不会再填写密码
- 日志文件:/var/log/secure 能看到被授权人执行什么操作
- 配置文件支持使用通配符glob:
?:任意单一字符
* :匹配任意长度字符
[wxc]:匹配其中一个字符
[!wxc]:除了这三个字符的其它字符
\x : 转义
[[alpha]] :字母示例:/bin/ls [[alpha]]*
sudo命令:
ls -l /usr/bin/sudo 有特殊权限
sudo –i –u wang切换身份
sudo[-u user] COMMAND
-V 显示版本信息等配置信息
-u user 默认为root -l,ll列出用户在主机上可用的和被禁止的命令
-v 再延长密码有效期限5分钟,更新时间戳
-k 清除时间戳(1970-01-01),下次需要重新输密码
-K 与-k类似,还要删除时间戳文件
-b在后台执行指令
-p 改变询问密码的提示符号示例:-p "password on %h for user %p:"
实例:
配置文件:/etc/sudoers(只读文件), /etc/sudoers.d/(建议修改这个文件)
visudo==打开/etc/sudoers //用visudo打开文件有语法检查功能缺点没颜色配置环境变量
[root@centos7 ~]#vim /etc/profile.d/env.sh
export EEDITOR=vim //添加这个
[root@centos7 ~]#vipw //有颜色的
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
重要 部分 让wang用户只能挂载到/mnt/cdrom目录下
[root@centos6 ~]#visudo
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
wang ALL=(root) /usr/bin/mount /dev/sr0 /mnt/cdrom
注意这里写什么用户就能执行什么一点不能差
这时wang用户执行命令前必须加sudo
[wang@centos6 ~]#sudo mount /dev/sr0 /mnt/cdrom
但是一般不建议在这个文件添加;(建议在/etc/sudoers.d/下)
[root@centos6 ~]#vim wang
wang ALL=(root) /usr/bin/mount /dev/sr0 /mnt/cdrom
一个用户一个文件不会乱套
visudo –c 检查语法
visudo -f /etc/sudoers.d/wang //打开weng用户
[root@centos6 ~]#visudo -f /etc/sudoers.d/wang
wang ALL=(zhang) ALL
zhang ALL=(root) /bin/cat /etc/shadow
[wang@centos6 ~]#sudo -u zhang sudo cat /etc/shadow //wang用户代替zhang用户执行权限 这样写有点绕
%wheel ALL=(ALL) NOPASSWD: ALL //这个是组,如果这个没改放开的的话 只要是这个组成员就什么都能执行相当与root
授权规则格式:用户登入主机=(代表用户) 命令
示例:root ALL=(ALL) ALL
Users和runas:
username
#uid
%group_name
%#gid
user_alias|runas_alias
host:
ip或hostname
network(/netmask)
host_alias
command:
command name
directory
sudoedit(特殊权限如果用户有sudoedit权限 那他就可以编写所有用户sudo权限)
Cmnd_Alias
别名有四种类型:User_Alias, Runas_Alias, Host_Alias ,Cmnd_Alias
别名格式:[A-Z]([A-Z][0-9]_)*
别名定义:Alias_TypeNAME1 = item1, item2, item3 : NAME2 = item4, item5
示例1:
Student ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
示例2:
student ALL=(root) /sbin/pidof,/sbin/ifconfig
%wheel ALL=(ALL) NOPASSWD: ALL
示例3 user
User_Alias NETADMIN= netuser1,netuser2
Cmnd_Alias NETCMD=/usr/sbin/ip
NETADMIN ALL=(root)NETCMD
示例4
User_Alias SYSADER=wang,mage,%admins //%admins组
User_Alias DISKADER=tom
Host_Alias SERS=www.magedu.com,172.16.0.0/24
Runas_Alias OP=root
Cmnd_Alias SYDCMD=/bin/chown,/bin/chmod
Cmnd_Alias DSKCMD=/sbin/parted,/sbin/fdisk
SYSADER SERS= SYDCMD,DSKCMD
DISKADER ALL=(OP) DSKCMD
示例5
User_Alias ADMINUSER = adminuser1,adminuser2
Cmnd_Alias ADMINCMD = /usr/sbin/useradd, /usr/sbin/usermod, /usr/bin/passwd[a-zA-Z]*, !/usr/bin/passwd root
ADMINUSER ALL=(root) NOPASSWD:ADMINCMD,PASSWD:/usr/sbin/userdel
(NOPASSWD:ADMINCMD)意思是第一次都不用输入口令
(PASSWD:/usr/sbin/userdel)意思是第一次输入口令
示例5 授权wang能带代替tom,jerry做任何事(如果执行的命令代替tom的比较多不写-u 指定谁的话runas_default=tom默认是tom)
Defaults:wang runas_default=tom
wang ALL=(tom,jerry) ALL
示例6 授权以下主机登陆排除!/usr/sbin/useradd
wang 192.168.175.136,192.168.175.138=(root) /usr/sbin/,!/usr/sbin/useradd
示例7 如果这样写的话也可以查看/etc/password文件 man sudoers帮助有
wang ALL=(ALL) /bin/cat /var/log/messages*
示例7 如果这样写的话也可以查看/etc/password文件 man sudoers帮助有
wang ALL=(ALL) /bin/cat /var/log/messages*, !/bin/cat /var/log/messages*