@mrz1
2018-01-11T01:38:41.000000Z
字数 9541
阅读 2216
笔记
scp命令:scp[options] SRC... DEST/两种方式:scp [options] [user@]host:/sourcefile /destpathscp [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@]hostsftp > 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.93Disabled[root@centos7 ~]#pssh -H 172.18.101.93 172.18.101.94 -i getenforce[1] 21:44:34 [SUCCESS] 172.18.101.93Disabled[2] 21:44:34 [SUCCESS] 172.18.101.94Disabled更方便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批量关闭seLinuxpssh -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 0pssh -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 remotePscp-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下,并更名为userpslurp -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 #端口加入策略
常用参数:PortAddressFamily any 默认ipv4 ipv6ListenAddress ip 这里指定ipLoginGraceTime 2mPermitRootLogin yesStrictModes yes 检查.ssh/文件的所有者,权限等MaxAuthTries 6MaxSessions 10 同一个连接最大会话PubkeyAuthentication yesPermitEmptyPasswords noPasswordAuthentication yesGatewayPorts noClientAliveInterval:单位:秒ClientAliveCountMax:默认3UseDNS yesGSSAPIAuthentication yes 提高速度可改为noMaxStartups未认证连接最大值,默认值10Banner /path/file限制可登录用户的办法:AllowUsers user1 user2 user3DenyUsersAllowGroupsDenyGroups
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/aidemv 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.shexport EEDITOR=vim //添加这个[root@centos7 ~]#vipw //有颜色的root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologin重要 部分 让wang用户只能挂载到/mnt/cdrom目录下[root@centos6 ~]#visudo## Allow root to run any commands anywhereroot ALL=(ALL) ALLwang 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 wangwang 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/wangwang ALL=(zhang) ALLzhang 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%#giduser_alias|runas_aliashost:ip或hostnamenetwork(/netmask)host_aliascommand:command namedirectorysudoedit(特殊权限如果用户有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 userUser_Alias NETADMIN= netuser1,netuser2Cmnd_Alias NETCMD=/usr/sbin/ipNETADMIN ALL=(root)NETCMD示例4User_Alias SYSADER=wang,mage,%admins //%admins组User_Alias DISKADER=tomHost_Alias SERS=www.magedu.com,172.16.0.0/24Runas_Alias OP=rootCmnd_Alias SYDCMD=/bin/chown,/bin/chmodCmnd_Alias DSKCMD=/sbin/parted,/sbin/fdiskSYSADER SERS= SYDCMD,DSKCMDDISKADER ALL=(OP) DSKCMD示例5User_Alias ADMINUSER = adminuser1,adminuser2Cmnd_Alias ADMINCMD = /usr/sbin/useradd, /usr/sbin/usermod, /usr/bin/passwd[a-zA-Z]*, !/usr/bin/passwd rootADMINUSER 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=tomwang ALL=(tom,jerry) ALL示例6 授权以下主机登陆排除!/usr/sbin/useraddwang 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*