思维导图(41-50)

1> Redis主从复制
哨兵服务
   主库宕机后,从库自动升级为主库
   在slave主机运行哨兵程序。
   主库宕机后,对应的从库会自动升级为主库。
   原主库起来后,成为新主库的从库。
 
配置:
   命令行指定主库 > slaveof 主库ip 端口
   命令行把从库恢复为主库 > slaveof no one
 
带密码的主库库设置
   主库配置:
       51 ~]# vim /etc/redis/6379.conf  
              requirepass 123456
   从库配置
       52 ~]# sed -n '282p;289p' /etc/redis/6379.conf 
              slaveof  192.168.4.51 6351 主库ip及端口
              masterauth 123456 主库密码
 
哨兵服务配置文件
    52 redis-4.0.8]# cat /etc/sentinel.conf
                     bind 0.0.0.0
                     sentinel monitor redis51 192.168.4.51 6351 1
                     sentinel auth-pass redis51 123456
启动哨兵服务
    52 ~]# redis-sentinel /etc/sentinel.conf
 
2> RDB/AOF持久化
    由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。
redis提供两种方式进行持久化
    RDB持久化(原理是将Reids在内存中的数据库记录定时 dump到磁盘上的RDB持久化)。
    AOF(append only file)持久化(原理是将Reids的操作日志以追加的方式写入文件)。
 
RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。
RDB优点:
    高性能的持久化实现:创建一个子进程来执行持久化,先将数据写入临时文件,持久化过程结束后,再用这个临时文件替换上次持久化好的文件;过程中主进程不做任何IO操作,比较适合大规模数据恢复,且对数据完整性要求不是非常高的场合;
RDB的缺点:
    意外宕机时,最后一次持久化的数据会丢失;
 
AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。
AOF优点:
    可以灵活的设置同步持久化appendfsync always或异步持久化appendfsync verysec;
    宕机时,仅可能丢失1秒的数据;
RDB的缺点:
    AOF文件的体积通常会大于RDB文件的体积
    执行fsync策略时的速度可能会比RDB慢
 
RDB持久化配置
Redis会将数据集的快照dump到dump.rdb文件中。此外,我们也可以通过配置文件来修改Redis服务器dump快照的频率,在打开6379.conf文件之后,我们搜索save,可以看到下面的配置信息:
save 900 1           #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。
save 300 10          #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。
save 60 10000        #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照。
 
AOF持久化配置
在Redis的配置文件中存在三种同步方式,它们分别是:
appendfsync always     #每次有数据修改发生时都会写入AOF文件。
appendfsync everysec   #每秒钟同步一次,该策略为AOF的缺省策略。
appendfsync no         #从不同步。高效但是数据不会被持久化。
 
启用RDB:
]# vim /etc/redis/6379.conf
dbfilename dump.rdb
#   save ""      //启用RDB,去掉#号为禁用RDB
save 120 1       //120秒内且有1次修改(满足三个条件中的任意一个都会保存)
save 300 10
save 60 10000
 
启用AOF:
6379]# vim /etc/redis/6379.conf(修改,不需要添加)
appendonly yes                  //启用aof,默认no
appendfilename "appendonly.aof" //文件名
appendfsync everysec            //每秒记录一次
 
3> Redis数据类型
数据管理命令:
 
string类型
set get strlen setrange getrange
append incr incrby incrbyfloat decr decrby mget mset setbit bitcount 
 
LIST表
lpush llen lrange lset lpop lindex rpop rpush
 
Hash表
hset hget hmget hmset hgetall hkeys hvals hdel
 
*************************************
42.部署MongoDB服务、MongoDB基本使用
1> MongoDB
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
 
主要特点
    MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。
    你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。
    你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
    如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。
    Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
    MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。
    Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。
    Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。
    Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。
    GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
    MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
    MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
    MongoDB安装简单。
 
配置文件:
    ]# vim /usr/local/mongodb/etc/mongodb.conf
       logpath=/usr/local/mongodb/log/mongodb.log
       logappend=true
       dbpath=/usr/local/mongodb/data/db
       fork=true
    端口:27017
 
启动服务
    ]# /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/mongodb.conf 
停止服务
    ]# /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/mongodb.conf  --shutdown
启动mongodb服务定义服务使用ip 地址及端口号
    ]# vim /usr/local/mongodb/etc/mongodb.conf
       bind_ip=192.168.4.50
       port=27050
连接时指定指ip地址和端口号
    ]# /usr/local/mongodb/bin/mongo --host 192.168.4.50 --port 27050(两次)
 
2> MongoDB 常用命令
> show dbs
> use gamedb(没有则直接创建)
> db
> show tables
> db.t1.save({name:"bob",age:19,sex:"boy",school:"xxx"})
> db.t1.save({class:"999"})
> db.t1.insert({class:"999"})
> db.t1.find()
> db.t1.count()
> db.t1.findOne()
> db.t1.remove({name:"tom"})
> db.t2.drop()
 
3> 数据导入/倒出
 
数据导出: 把集合的文档存储到系统文件里
 
导出为json格式
]# /usr/local/mongodb/bin/mongoexport \
 --host 192.168.4.50 --port 27050  \
 -d gamedb -c t1 --type=json > /mdb/gamedb_t1.json(必须有gamedb库,t1表)
 
导出为csv格式
]# /usr/local/mongodb/bin/mongoexport  \
 --host 192.168.4.50 --port 27050 \
 -d gamedb -c t1 -f name,age --type=csv >  /mdb/gamedb_t1.csv
 
数据导入: 把系统文件的内容存储到集合里
 
使用json文件导入数据
]# /usr/local/mongodb/bin/mongoimport \
 --host 192.168.4.50 --port 27050 \
 -d bbsdb  -c user --type=json /mdb/gamedb_t1.json 
 
使用csv文件导入数据
]# /usr/local/mongodb/bin/mongoimport \
   --host 192.168.4.50 --port 27050 \ 
   -d bbsdb  -c user2  -f user,old \
   --type=csv  /mdb/gamedb_t1.csv
 
不加 --drop 选项 是追加方式导入数据 反之 删除原表后再导入数据
]# /usr/local/mongodb/bin/mongoimport \
  --host 192.168.4.50 --port 27050 \ 
  -d bbsdb  -c user5  --headerline  --drop  \
  --type=csv  /mdb/gamedb_t1.csv
 
数据备份:
]# /usr/local/mongodb/bin/mongodump  --host 192.168.4.50 \
   --port 27050 -d bbsdb -c user6 -o /mdbbak/
 
查看备份:
]# /usr/local/mongodb/bin/bsondump /mdbbak/bbsdb/user6.bson(查看 数据)
 
删除要恢复的库 再执行恢复
]# /usr/local/mongodb/bin/mongorestore  \
   --host 192.168.4.50 --port 27050 /mdb/dump/
 
 
*************************************
43.MongoDB副本集 MongoDB文档管理
1> MongoDB副本集
    停止当前主库的mongodb服务,在2个副本主机查看集群状态信息(两个副本机会随机选举一个作为主库),把坏掉的主库修复后会自动配置为当前主库的副本主机并自动同步宕机期间的数据。
 
定义集群成员列表:
replSet=rs1
]#/usr/local/mongodb/bin/mongo --host 192.168.4.51 --port 27051 
> config={ 
_id:"rs1", 
members:[ 
{_id:0,host:"192.168.4.51:27051"}, 
{_id:1,host:"192.168.4.52:27052"}, 
{_id:2,host:"192.168.4.53:27053"} 
}
 
查看集群信息
> rs.status()
> rs.isMaster()
 
访问集群存取数据:在51写入数据,登录从库查看数据是否同步
 
集群高可用功能测试:停止当前主库的mongodb服务;
                    在2个副本主机查看集群状态信息(两个副本机会随机选举一个作为主库);
                    把坏掉的主库修复后会自动配置为当前主库的副本主机并自动同步宕机期间的数据;
 
save()方法和insert()方法的区别:
     save方法有更新和插入两种功能,到底是插入还是更新文档取决于save的参数,是插入一个文档还是更新,取决于_id参数。如果能根据_id找到一个已经存在的文档,那么就更新。如果没有传入_id参数或者找不到存在的文档,那么就插入一个新文档。
    总结:
          insert: 若新增数据的主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException 异常提示主键重复,不保存当前数据。
          save: 若新增数据的主键已经存在,则会对当前已经存在的数据进行更新操作。
          另外insert可以一次性插入一个列表,而不用遍历,效率高, save则需要遍历列表,一个个插入。
 
2> 集群工作原理
   主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。
   MongoDB集群包括一定数量的mongod(分片存储数据)、mongos(路由处理)、config server(配置节点)、clients(客户端)、arbiter(仲裁节点:为了选举某个分片存储数据节点那台为主节点)。
 
3> 部署LNMP+MongoDB
版本:mongo-1.6.16
编写连接mongodb服务的php脚本:
]# vim /usr/local/nginx/html/linkmongodb.php
<?php
$m = new Mongo("mongodb://192.168.4.50:27050");
$db = $m->buysite;
$c = $db->usera;
$data=array("name"=>"bob","age"=>19);
$c->insert($data);
echo  "data ok";
?>
 
<?php
$m = new MongoClient("mongodb://192.168.4.53:27053,192.168.4.52:27052,192.168.4.51:27051");
$db = $m->db1;
$c = $db->t15;
$data=array("name"=>"bob","age"=>19);
$c->insert($data);
echo  "data ok";
?>
 
在客户端访问网站的php脚本
 
在mongodb服务器本机查看是否存储数据了
]# /usr/local/mongodb/bin/mongo --host 192.168.4.50 --port 27050
> show dbs
> use buysite
> db.usera.find()
 
]# /usr/local/mongodb/bin/mongo --host 192.168.4.53 --port 27053
> show dbs
> use db1
> db.t15.find()
 
 
*************************************
44.Linux基本防护 用户切换与提权 SSH访问控制 SELinux安全 、SSH访问控制 SELinux安全
1> Linux基本防护
01 账户有效期:
chage 命令:定义账户有效期
/etc/login.def:定义账户有效期、密码长度、UID最大最小值
 
02 锁定用户
passwd -l -S -u
 
03 隐藏系统版本
修改tty登录的提示信息:/etc/issue(reboot)
 
04 锁定文件
# chattr +i  文件名     //锁定文件(无法修改、删除等)
# chattr -i  文件名     //解锁文件
# chattr +a  文件       //锁定后文件仅可追加
# chattr -a  文件名     //解锁文件
# lsattr     文件名     //查看文件特殊属性
 
2> 用户切换与提权
01 su(Substitute User)命令可以快速切换账户身份,普通用户切换账户身份时需要输入密码,root使用su命令切换任何身份都不需要密码,如法格式如下:
]# su - [账户名称]
]# su - [账户名称] -c '命令'  
 
]# su - zhangsan -c "touch /tmp/test.txt"  //管理员切换普通用户,不需要输入密码
]$ su - -c "systemctl restart sshd"  或者
]$ su - root(可省略) -c "systemctl restart sshd" 
密码:
 
02 普通用户提权
修改/etc/sudoers可以直接使用vim编辑该文件,或使用visudo命令修改该文件。
]# vim /etc/sudoers   //修改文件后,需要使用wq强制保存
...
root      ALL=(ALL)   ALL(原来有,下面追加)
 
//授权softadm以root身份执行systemctl命令(ALL包括root)
softadm   ALL=(ALL)   /usr/bin/systemctl
 
//允许用户useradm通过sudo方式添加/删除/修改除root以外的用户账号
useradm   ALL=(ALL)  /usr/bin/passwd,!/usr/bin/passwd root,/usr/sbin/user*,!/usr/sbin/user* * root
 
//允许wheel组成员以特权执行所有命令
%wheel   ALL=(ALL)  ALL
]$ sudo -l(查看配置权限)
 
03 为sudo机制启用日志记录,以便跟踪sudo执行操作
]# visudo
Defaults  logfile="/var/log/sudo"(添加)
 
3> SSH访问控制
01 调整sshd服务配置,并重载服务
配置文件:/etc/ssh/sshd_config
 
02 定义访问白名单、黑名单
]# vim /etc/ssh/sshd_config
.. ..
AllowUsers zhangsan tom useradm@192.168.4.0/24  //定义账户白名单,追加到文件里
##DenyUsers   USER1  USER2                      //定义账户黑名单
##DenyGroups  GROUP1 GROUP2                     //定义组黑名单
##AllowGroups GROUP1 GROUP2                     //定义组白名单
]# systemctl restart sshd
 
03 实现密钥对验证登录(私钥口令)、免密码登入
]# ssh-keygen
]# ssh-copy-id root@192.168.4.50
确认密钥验证使用正常后,禁用口令验证
]# vim /etc/ssh/sshd_config
.. ..
PasswordAuthentication no     //将此行yes改成no
 
4> SELinux安全防护
查看安全上下文  
用户:角色:访问类型:选项...
 
]# ls -lZ  文件名
]# ls  -ld 目录名
]# ps  -aux  -Z  |  grep  进程名
 
一般操作规律
移动的文件,原有的上下文属性不变
复制的文件,自动继承目标位置的上下文
创建新文件,自动继承父目录上下文
 
修改文件的上下文
]# chcon    -t  访问类型  文件名
]# chcon -R -t  访问类型  目录名
 
]#chcon -t public_content_t /var/ftp/log2.tar
可替换为(效果相同):
]# restorecon /var/ftp/log2.tar
或者
]# chcon --reference=/var/ftp/log1.tar /var/ftp/log2.tar
 
 
恢复上下文
]# restorecon     文件名
]# restorecon -R  目录名
 
SELinux布尔值(bool) 功能开关
查看布尔值
]# getsebool  -a  或  getsebool  -a | grep  服务名
修改布尔
]# setsebool  -P  选项=on|off
 
设置bool值 允许上传文件
]# setsebool -P ftpd_anon_write=on
]# setsebool -P ftpd_full_access=on
]# getsebool -a | grep ftp
 
修改httpd的服务端口等。
 
*************************************
45.加密与解密 AIDE入侵检测系统 扫描与抓包
1> 加密与解密,常见的加密算法
 
对称加密:怎么加密,就怎么解密
DES Date Encryption Standard
AES Advance Encryption Standard
 
非对称加密
RSA Rivest Shamirh Adleman
DSA Digital Signature Algorithm
 
数据信息完整性
MD5 Message Digest Algorithm 5
SHA Secure Hash Algorithm
]# md5sum a.txt
 
2> GPG加密工具
 
对称加密:
gnupg2-2.0.22-3.el7.x86_64
gpg -c 加密(生成*.gpg加密文件) -d 解密(要输入密码)
 
非对称加密:gpg --gen-key  创建密钥对
公钥加密 私钥解密
加密       解密
uesra    userb
A--发送加密数据(B的公钥)  B--查看加密数据(B的私钥)
 
B--创建秘钥对
B-->公钥-->A
A--公钥-->加密数据
A--数据-->B
B--私钥-->数据
 
gpg --gen-key 创建秘钥对
gpg --export  导出
gpg --import  导入
gpg -e -r userb test.txt 公钥加密
gpg -d /tmp/test.txt.gpg > ~/test5.txt  (私钥解密,必须输入私钥的密码)
 
gpg -b a1.txt (数字签名 要输入私钥密码)
gpg --fingerprint    输出私钥指纹
gpg --verify /tmp/a1.txt.sig 校验秘钥指纹
 
3> AIDE入侵检测系统
    AIDE(Advanced Intrusion Detection Environment,高级入侵检测环境)是个入侵检测工具,主要用途是检查文档的完整性。
    AIDE能够构造一个指定文档的数据库,他使用aide.conf作为其配置文档。AIDE数据库能够保存文档的各种属性,包括:权限(permission)、索引节点序号(inode number)、所属用户(user)、所属用户组(group)、文档大小、最后修改时间(mtime)、创建时间(ctime)、最后访问时间(atime)、增加的大小连同连接数。AIDE还能够使用下列算法:sha1、md5、rmd160、tiger,以密文形式建立每个文档的校验码或散列号。
 
配置文件:
/etc/aide.conf  #定义检测的目录 和检测规则
 
实现过程:
    ]# aide --init  没有被入侵之前 生成初始信息数据库文件
    ]# ls /var/lib/aide/aide.db.new.gz  查看生成的数据库文件,以此为基准数据库
    ]# mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz 备份后还原数据库名称,以此为起点
    对被检测的/root 目录做操作 (任何操作都可以)
    ]# aide --check / aide -C 重新检测,查看都有哪些修改
    如果文件修改,对AIDE数据库进行更新
    ]# aide --update 或 aide -u
4>  扫描与抓包
01 扫描,NMap
NMap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包。
其基本功能有三个:
(1)是扫描主机端口,嗅探所提供的网络服务
(2)是探测一组主机是否在线
(3)还可以推断主机所用的操作系统,到达主机经过的路由,系统已开放端口的软件版本
 
nmap端口状态解析
open : 应用程序在该端口接收 TCP 连接或者 UDP 报文。 
closed :关闭的端口对于nmap也是可访问的, 它接收nmap探测报文并作出响应。但没有应用程序在其上监听。
filtered :由于包过滤阻止探测报文到达端口,nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由规则 或者主机上的软件防火墙。
unfiltered :未被过滤状态意味着端口可访问,但是nmap无法确定它是开放还是关闭。 只有用于映射防火墙规则集的 ACK 扫描才会把端口分类到这个状态。
open | filtered :无法确定端口是开放还是被过滤, 开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的任何反应。UDP,IP协议,FIN, Null 等扫描会引起。
closed|filtered:(关闭或者被过滤的):无法确定端口是关闭的还是被过滤的
 
扫描初级用法:
 
扫描所有端口:
    ]# nmap 10.0.1.161  -p1-65535 
 
扫描一个IP的多个(指定)端口:
    ]# nmap 10.0.1.161 -p20-200,7777,8888
 
对于udp端口扫描比较慢,扫描完6万多个端口需要20分钟左右
-sU:表示udp scan , udp端口扫描
-Pn:不对目标进行ping探测(不判断主机是否在线)(直接扫描端口)   
    ]# nmap  -sU  10.0.1.161  -Pn
 
扫描多个IP用法,中间用空格隔开
    ]# nmap 10.0.1.161  10.0.1.162
也可以采用下面方式逗号隔开
    ]# nmap 10.0.1.161,162
 
扫描连续的ip地址:
    ]# nmap 10.0.1.161-162
 
扫描一个子网网段所有IP:
    ]# nmap  10.0.3.0/24
 
扫描文件里的IP:(同目录)
    ]# nmap -iL ip.txt
 
扫描地址段是排除某个IP地址:
    ]# nmap 10.0.1.161-162  --exclude 10.0.1.162
 
扫描时排除多个IP地址:
    ]# nmap 10.0.1.161-163   --exclude 10.0.1.162-163
 
排除分散的,使用逗号隔开:
    ]# nmap 10.0.1.161-163 --exclude 10.0.1.161,10.0.1.163
 
扫描多个地址时排除文件里的IP地址:
    ]# nmap 10.0.1.161-163  --excludefile ex.txt
 
扫描高级用法:
 
(1)-sP :进行ping扫描
 
打印出对ping扫描做出响应的主机,不做进一步测试(如端口扫描或者操作系统探测): 
下面去扫描10.0.3.0/24这个网段的的主机
nmap -sP 10.0.3.0/24
这个命令可以用于探测局域网有哪些机器
 
(2) -sn:
 
-sn:  Ping Scan - disable port scan  #ping探测扫描主机, 不进行端口扫描 (测试过对方主机把icmp包都丢弃掉,依然能检测到对方开机状态)
 
(3) -sS :半开放扫描(非3次握手的tcp扫描)
    ]# nmap  -sS  10.0.1.161 
    使用频率最高的扫描选项:SYN扫描,又称为半开放扫描,它不打开一个完全的TCP连接,执行得很快,效率高(一个完整的tcp连接需要3次握手,而-sS选项不需要3次握手)。
Tcp SYN Scan (sS) 它被称为半开放扫描。
优点:Nmap发送SYN包到远程主机,但是它不会产生任何会话,目标主机几乎不会把连接记入系统日志。(防止对方判断为扫描攻击),扫描速度快,效率高,在工作中使用频率最高。
缺点:它需要root/administrator权限执行
 
 
(4) sT:3次握手方式tcp的扫描
     ]# nmap  -sT  10.0.1.161
Tcp connect() scan (sT)和上面的Tcp SYN 对应,TCP connect()扫描就是默认的扫描模式.
不同于Tcp SYN扫描,Tcp connect()扫描需要完成三次握手,并且要求调用系统的connect().
优点:你勿需root权限。普通用户也可以使用。
缺点:这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息,由于它要完成3次握手,效率低,速度慢,建议使用-sS
 
(5)sU:udp端口的扫描
     ]# nmap -sU 10.0.1.161
Udp scan(sU) 顾名思义,这种扫描技术用来寻找目标主机打开的UDP端口.它不需要发送任何的SYN包,因为这种技术是针对UDP端口的。UDP扫描发送UDP数据包到目标主机,并等待响应,
如果返回ICMP不可达的错误消息,说明端口是关闭的,如果得到正确的适当的回应,说明端口是开放的.udp端口扫描速度比较慢
 
(6)sF:也是tcp的扫描一种,发送一个FIN标志的数据包
    ]# nmap -sF  10.0.1.161
FIN scan(sF),有时候TcpSYN扫描不是最佳的扫描模式,因为有防火墙的存在.目标主机有时候可能有IDS和IPS系统的存在,防火墙会阻止掉SYN数据包。发送一个设置了FIN标志的数据包并不需要完成TCP的握手.
和sS扫描效果差不多,比sT速度快
 
 
(7)sW:窗口扫描
    ]# nmap -sW  10.0.1.161  -p22
Window扫描,即窗口扫描
当然也可以利用Window扫描方式,得出一些端口信息,可以与之前扫描分析的结果相互补充。Window扫描方式只对某些TCPIP协议栈才有效。
它也是基于tcp的扫描,个人感觉用处不大
另外我尝试使用它对A机器的22端口扫描,发现对方22端口状态居然是错误的。
 
(8) sV:版本检测(sV)
    ]# nmap -sV 10.0.1.161
版本检测是用来扫描目标主机和端口上运行的软件的版本,如下扫描,多出了ssh的版本信息 
 
02 tcpdump抓包
    tcpdump是一个用于截取网络分组,并输出分组内容的工具。凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具。
    tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。
    tcpdump 支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
    
    ]# tcpdump -i br1 -c 2 -A -w /tmp/one.cap 存储到文件里
    ]# tcpdump -i br1 src host 172.40.52.143 and tcp port 21
    (src 只抓访问我的,不抓我返回给他的,相反dst)
 
语法
 
完整的英文文档: https://www.tcpdump.org/tcpdump_man.html
 
-A 以ASCII格式打印出所有分组,并将链路层的头最小化。 
 
-c 在收到指定的数量的分组后,tcpdump就会停止。 
 
-C 在将一个原始分组写入文件之前,检查文件当前的大小是否超过了参数file_size 中指定的大小。如果超过了指定大小,则关闭当前文件,然后在打开一个新的文件。参数 file_size 的单位是兆字节(是1,000,000字节,而不是1,048,576字节)。 
 
-d 将匹配信息包的代码以人们能够理解的汇编格式给出。 
 
-dd 将匹配信息包的代码以C语言程序段的格式给出。 
 
-ddd 将匹配信息包的代码以十进制的形式给出。 
 
-D 打印出系统中所有可以用tcpdump截包的网络接口。 
 
-e 在输出行打印出数据链路层的头部信息。 
 
-E 用spi@ipaddr algo:secret解密那些以addr作为地址,并且包含了安全参数索引值spi的IPsec ESP分组。 
 
-f 将外部的Internet地址以数字的形式打印出来。 
 
-F 从指定的文件中读取表达式,忽略命令行中给出的表达式。 
 
-i 指定监听的网络接口。 
 
-l 使标准输出变为缓冲行形式,可以把数据导出到文件。 
 
-L 列出网络接口的已知数据链路。 
 
-m 从文件module中导入SMI MIB模块定义。该参数可以被使用多次,以导入多个MIB模块。 
 
-M 如果tcp报文中存在TCP-MD5选项,则需要用secret作为共享的验证码用于验证TCP-MD5选选项摘要(详情可参考RFC 2385)。 
 
-b 在数据-链路层上选择协议,包括ip、arp、rarp、ipx都是这一层的。 
 
-n 不把网络地址转换成名字。 
 
-nn 不进行端口名称的转换。 
 
-N 不输出主机名中的域名部分。例如,‘nic.ddn.mil‘只输出’nic‘。 
 
-t 在输出的每一行不打印时间戳。 
 
-O 不运行分组分组匹配(packet-matching)代码优化程序。 
 
-P 不将网络接口设置成混杂模式。 
 
-q 快速输出。只输出较少的协议信息。 
 
-r 从指定的文件中读取包(这些包一般通过-w选项产生)。 
 
-S 将tcp的序列号以绝对值形式输出,而不是相对值。 
 
-s 从每个分组中读取最开始的snaplen个字节,而不是默认的68个字节。 
 
-T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc远程过程调用)和snmp(简单网络管理协议;)。 
 
-t 不在每一行中输出时间戳。 
 
-tt 在每一行中输出非格式化的时间戳。 
 
-ttt 输出本行和前面一行之间的时间差。 
 
-tttt 在每一行中输出由date处理的默认格式的时间戳。 
 
-u 输出未解码的NFS句柄。 
 
-v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息。 
 
-vv 输出详细的报文信息。 
 
-w 直接将分组写入文件中,而不是不分析并打印出来。
 
03 安装wireshark
   Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
网络封包分析软件的功能可想像成 "电工技师使用电表来量测电流、电压、电阻" 的工作 - 只是将场景移植到网络上,并将电线替换成网络线。在过去,网络封包分析软件是非常昂贵的,或是专门属于盈利用的软件。Ethereal的出现改变了这一切。在GNUGPL通用许可证的保障范围底下,使用者可以以免费的代价取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Ethereal是目前全世界最广泛的网络封包分析软件之一。
 
安装:
]# yum -y  install wireshark  wireshark-gnome
]# wireshark #启动图形化管理
 
*************************************
46.系统审计 服务安全 Linux安全之打补丁
1> 审计(audit)是linux安全体系的重要组成部分,他是一种“被动”的防御体系。在内核里有内核审计模块,核外有核外的审计后台进程auditd。 
   应用程序给内核发送审计消息,内核的审计模块再把消息转发给用户空间的后台进程auditd处理。
   审计说穿了就是把和系统安全有关的事件记录下来:谁谁谁在什么时候做了什么事,结果是啥。

转载于:https://www.cnblogs.com/luwei0915/p/10627771.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值