系统安全及应用
1、账号安全
1.1 系统账号清理
可以控制登陆人数
-
将非登录用户的shell设为/sbin/nologin
可以用usermod、passwd、chsh
chsh功能单调,仅介绍:
[root@localhost ~]# chsh -s /sbin/nologin lisi #修改lisi的shell属性 Changing shell for lisi. Shell changed.
选项 | 功能 |
---|---|
-l | 打印/etc/shell中列出的shell列表并退出 |
-s | 指定登录shell类型 |
-u | 打印使用信息并退出 |
-
锁定长期不使用的账号
可以用passwd -l、chmod -L(这里是锁账户)
-
删除无用的账号
可以用userdel -r、
-
锁定账户文件passwd、shadow(这里是锁文件)
[root@31yml ~]#chattr +i testpd##自己建的,锁定+i##还可以加密码 [root@31yml data]#lsattr#查看状态 ---------------- ./passwdtest ----i----------- ./testpd [root@31yml data]#chattr -i testpd #可以再改回来 [root@31yml data]#lsattr ---------------- ./passwdtest ---------------- ./testpd
1.2 密码安全控制
-
设置密码的有效期
-
要求用户下次登陆时修改密码
-
对于新建用户,修改 /etc/login.defs文件里的内容来设置密码规则
-
对于已有用户,可以使用chage命令
-
#设置密码有效期
vim /etc/login.defs#编辑新用户默认配置
chage 用户#交互式设置用户登录信息
chage -M 30 用户#设置用户密码有效期30天
chage -d 0 用户# 强制密码立即过期,之后登录会要求重设密码
chage [选项] 用户名
选项 | 功能 |
---|---|
-m | 密码可更改的最小天数。为零时代表任何时候都可以更改密码 |
-M | 密码保持有效的最大天数 |
-w | 用户密码到期前,提前收到警告信息的天数 |
-E | 帐号到期的日期。过了这天,此帐号将不可用 |
-d | 上一次更改的日期 |
-i | 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用 |
-l | 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期 |
1.3 命令历史限制
-
减少记录的命令条数
[root@31yml opt]#history可以查看前一千条执行的命令#命令的操作都是临时的,除非修改系统配置文件
history -c;clear都是临时清除
-
注销时自动清空命令历史
bash_logout#是bash shell的主要配置文件,用于定义用户的环境变量、别名、函数等设置,没打开一个新终端窗口就会读取并执行该文件一次
.bash_history文件专门存历史命令
[root@31yml opt]#vim ~/.bash_logout#进入配置修改命令
#进入后:
echo '' >.bash_history#输入空进行覆盖
1.4 终端自动注销
-
闲置600秒后自动注销
[root@31yml opt]#vi /etc/profile#进入该系统文件,重新定义系统变量 export HISTSIZE=10#让history只记录10条 [root@31yml opt]#echo $HISTSIZE 1000#可以查看 /etc/profile系统设置全局生效 家目录里的配置只对自己生效 #闲置十秒就注销退出 [root@31yml opt]#vi .bashrc#简单尝试到家目录配置 export TMOUT=10# #刷新才生效 [root@31yml opt]#. /etc/profile#"."= "source"
编写使用“export 设置参数”的原因:
假如我开两个bash进程,它们指向同一个物理位置,但进程不同,参数配置也互不干涉,需要用“输入命令”打破壁垒;
环境变量是影响全局,“爷爷”、“爸爸”都能用;自己设的只会影响自己,只有自己能用;
总之,“export 参数配置”是全局能用。
swp文件介绍
vim中的swp即swap文件,在编辑文件时产生,它是隐藏文件。这个文件是一个临时交换文件,用来备份缓冲区中的内容。如果原文件名是data,那么swp文件名就是.data.swp。如果文件正常退出,则此文件自动删除。需要注意的是如果你并没有对文件进行修改,而只是读取文件,是不会产生swp文件的。
1.5 su切换用户
Substitute User,切换用户
格式:su - 用户
root用户——>任意用户,可不验证密码
普通用户——>其他用户,要验证用户密码
[root@31yml ~]#su - root# -选项表示使用目标用户shell环境 [root@31yml ~]#whoami#还可以查看 root su - 用户是完全切换,重新登录 su 不加-是不完全切换,继承上个用户的一些设置
安全非调优,自己以后总结
系统账户清理
将非登录用户的shell
1.6 PAM认证模块
pluggable authentication modules 可插拔式的认证模块——灵活使用
认证原理:
service(服务)—>PAM(配置文件)—>pam_*.so
应用程序—>读取配置文件—>执行二进制文件,我们只会修改配置文件
功能强大的模块才可能需要配置文件,所有配置文件数量少于模块数量
用户来访问,先确认service类型(密码或密钥或短信验证码等方式)
根据配置文件确定是否放行
放行则调用相关模块
1.使用者执行/usr/bin/passwd 程序,并输入密码
2.passwd开始调用PAM模块,PAM模块会搜寻passwd程序的PAM相关设置文件,这个设置文件一般是在/etc/pam.d/里边的与程序同名的文件,即PAM会搜寻/etc/pam.d/passwd此设置文件
3.经由/etc/pam.d/passwd设定文件的数据,取用PAM所提供的相关模块来进行验证
4.将验证结果回传给passwd这个程序,而passwd这个程序会根据PAM回传的结果决定下一个动作(重新输入密码或者通过验证)
配置文件:
主配置文件:/etc/security只有功能强大的pam模块才会有主配置文件
次配置文件:/etc/pam.d虽然是此配置却优先生效
type control module-path arguments application:指服务名,如:telnet、login、ftp等,服务名字“OTHER”代表所有没有在该文件中明确配置的其它服务 type:指模块类型,即功能 control :PAM库该如何处理与该服务相关的PAM模块的成功或失败情况,一个关健词实现 module-path: 用来指明本模块对应的程序文件的路径名 Arguments: 用来传递给该模块的参数
第一列:代表模块类型(module-type)
-
Auth 账号的认证和授权
-
Account 帐户的有效性,与账号管理相关的非认证类的功能,如:用来限制/允许用户对某个服务的访问时间,限制用户的位置(例如:root用户只能从控制台登录)
-
Password 用户修改密码时密码复杂度检查机制等功能
-
Session 用户会话期间的控制,如:最多打开的文件数,最多的进程数等
-
-type (加-)表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用
第二列:代表Control: ( 控制位)
-
required (翻译:必须的):一票否决,表示本模块必须返回成功才能通过认证,但是如果该模块返回失败,失败结果也不会立即通知用户,而是要等到同一type中的所有模块全部执行完毕,再将失败结果返回给应用程序,即为必要条件
-
requisite (翻译:必要的):一票否决,该模块必须返回成功才能通过认证,但是一旦该模块返回失败,将不再执行同一type内的任何模块,而是直接将控制权返回给应用程序。是一个必要条件
-
sufficient(翻译:充分的) :一票通过,表明本模块返回成功则通过身份认证的要求,不必再执行同一type内的其它模块,但如果本模块返回失败可忽略,即为充分条件,优先于前面的
-
equired和requisiteoptional :表明本模块是可选的,它的成功与否不会对身份认证起关键作用,其返回值一般被忽略include: 调用其他的配置文件中定义的配置
-
optional 可选项
第三列:代表PAM模块
默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。 同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。
每一行都是一个独立的认证过程; 每一行可以区分为三个字段: 认证类型 控制类型 PAM 模块及其参数 PAM 认证类型包括四种: 认证管理(authentication management):接受用户名和密码,进而对该用户的密码进行认证; 帐户管理(account management):检查帐户是否被允许登录系统,帐号是否已经过 期,帐号的登录是否有时间段的限制等; 密码管理(password management):主要是用来修改用户的密码; 会话管理(session management):主要是提供对会话的管理和记账。 控制类型也可以称做 Control Flags,用于 PAM 验证类型的返回结果。 1)required 验证失败时仍然继续,但返回 Fail 2)requisite 验证失败则立即结束整个验证过程,返回 Fail 3)sufficient 验证成功则立即返回,不再继续,否则忽略结果并继续 4)optional 不用于验证,只是显示信息(通常用于 session 类型)
例子:
[root@localhost pam.d]#cat system-auth#系统登录 #第一列type 第二列 control 第三列配置文件 第四列参数 #验明正身,是张三李四王五 auth required pam_env.so auth required pam_faildelay.so delay=2000000 auth sufficient pam_fprintd.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth required pam_deny.so #账户有效性,账户是否在有效期内 account required pam_unix.so account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 1000 quiet account required pam_permit.so #密码策略 比如 长度,复杂性 password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password required pam_deny.so #最多打开几个文件 session optional pam_keyinit.so revoke session required pam_limits.so #带横线 代表可选,后面的模块可能没有 -session optional pam_systemd.so session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so
模块文件:
/usr/lib64/security/
我怎么知道怎么配置模块的配置文件和模块的功能:man 8 模块名
PAM验证流程:
shell模块
功能:检查有效shell
帮助:man pam_shells
案例:不允许使用/bin/csh的用户本地登录
模块: pam_shells.so 只允许 规定的shell类型通过, 是在/etc/shells 文件中存在的 类型通过
securetty模块
功能:只允许root用户在/etc/securetty列出的安全终端上登陆
案例:CentOS 7 允许root在telnet登陆
crt使用telnet 连接明文传输,不安全,端口号23
ssh使用密文传输还带有压缩功能,端口号22
vi /etc/pam.d/remote #将下面一行加上注释 #auth required pam_securetty.so #或者/etc/securetty文件中加入 pts/0,pts/1…pts/n #测试用root telnet登录 yum install telnet-server.x86_64 -y systemctl start telnet.socket ss [root@node2 ~]#telnet 192.168.91.100 [root@localhost pam.d]#vim remote
auth required pam_securetty.so
pam_nologin.so 模块
功能:如果/etc/nologin文件存在,将导致非root用户不能登陆,当该用户登陆时,会显示/etc/nologin文件内容,并拒绝登陆
范例: 默认此模块可以对ssh等登录有效,但不影响su登录
touch /etc/nologin#只会非root用户无法登录,可用在系统维护时不让其他用户登录
删除该文件即可解除无法登录问题
1.7 ulimit
ulimit命令可以用在内核调优
ulimit是linux shell的内置命令,它具有一套参数集,用于对shell进程及其子进程进行资源限制。
ulimit的设定值是 per-process 的,也就是说,每个进程有自己的limits值。使用ulimit进行修改,立即生效。
ulimit只影响shell进程及其子进程,用户登出后失效。
可以在profile中加入ulimit的设置,变相的做到永久生效
选项 | 功能 |
---|---|
-H | 设置硬件资源限制 |
-S | 设置软件资源限制 |
-a | 显示当前所有的资源限制 |
-c size | 设置core文件的最大值.单位:blocks |
-d size | 设置数据段的最大值.单位:kbytes |
-f size | 设置创建文件的最大值.单位:blocks |
-l size | 设置在内存中锁定进程的最大值.单位:kbytes |
-m size | 设置可以使用的常驻内存的最大值.单位:kbytes |
-n size | 设置内核可以同时打开的文件描述符的最大值.单位:n |
-p size | 设置管道缓冲区的最大值.单位:kbytes |
-s size | 设置堆栈的最大值.单位:kbytes |
-t size | 设置CPU使用时间的最大上限.单位:seconds |
-u size | 最大用户进程数 |
-v size | 设置虚拟内存的最大值.单位:kbytes |
1.8 sudo
sudo lisi让李四临时拥有root权限
sudo 即superuser do,允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性在最早之前,一般用户管理系统的方式是利用su切换为超级用户。但是使用su的缺点之一在于必须要先告知超级用户的密码。sudo于1980年前后推出,sudo使一般用户不需要知道超级用户的密码即可获得权限。首先超级用户将普通用户的名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息,登记在特殊的文件中(通常是/etc/sudoers),即完成对该用户的授权(此时该用户称为“sudoer”);在一般用户需要取得特殊权限时,其可在命令前加上“sudo”,此时sudo将会询问该用户自己的密码(以确认终端机前的是该用户本人),回答后系统即会将该命令的进程以超级用户的权限运行。之后的一段时间内(默认为5分钟,可在/etc/sudoers自定义),使用sudo不需要再次输入密码。由于不需要超级用户的密码,部分Unix系统甚至利用sudo使一般用户取代超级用户作为管理帐号,例如Ubuntu、Mac OS X等。
sudo特性:
-
sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示联系管理员
-
sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器
-
sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票
-
sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0440
用途:以其他用户身份执行授权命令
用法:sudo授权命令
配置sudo授权:
visudo或vim /etc/sudoers(建议visudo,有着语法格式检查)
记录格式:用户 主机名列表=命令程序列表
[root@localhost ~]#vim /etc/sudoers [root@localhost ~]#visudo #语法检查 visudo -c #检查语法
系统利用UID判断用户拥有的权限
查看sudo操作记录:启用default logfile配置;默认日志文件:/var/log/sudo
查询授权的sudo权限命令:sudo -l
配置练习:
mount /dev/sr0 /mnt mount /dev/sr0 /mnt/ /bin/mount /dev/cdrom /mnt /usr/bin/mount /dev/cdrom /mnt/ #用户 登入主机 = (代表用户) 命令 #user host = (runas) command root ALL=(root) A user: 运行命令者的身份 host: 通过哪些主机 多个 192.168.91.100 - 110 localhost (runas):以哪个用户的身份 command: 运行哪些命令 User和runas: username(用户名) #uid(id号) %group_name(组名) %#gid(组id) user_alias|runas_alias(别名) MYUSER=zhangsan,lisi host: ip或hostname(IP地址或主机名) host_alias(别名) localhost command: command name (命令) directory (文件夹里的命令) sudoedit (可以编辑sudoers这个文件,变相变成管理员) Cmnd_Alias (命令别名) 范例: root ALL=(ALL) ALL ## Allow root to run any commands anywhere root ALL=(ALL) ALL lisi ALL=(root) /usr/bin/mount /dev/cdrom /mnt/ #可以跟多个命令 lisi ALL=(root) /usr/bin/mount /dev/cdrom /mnt/,/usr/bin/mount /mnt/ #也可以对组进行操作 %在前表示组 ## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL [root@localhost ~]#gpasswd -a liwu wheel 正在将用户“liwu”加入到“wheel”组中 wheel组表示管理员组是比较特殊的一个组,在wheel组中的成员可以使用任何命令 #思考这个设置有意义么? root ALL=(ALL) ALL [root@localhost ~]#vim /etc/passwd #修改passwd文件中root的uid [root@localhost ~]$sudo -ulisi cat /etc/shadow #-u指定用户的意思 ####密码问题 [root@localhost ~]#sudo -V #可以查看相关配置信息 #67 Defaults env_reset,timestamp_timeout=2 #启用sudo操作日志 visudo Defaults logfile = "/var/log/sudo"View Code
1.8.1 别名
sudo别名有四种类型:
-
User_Alias(用户)
-
Runas_Alias(代表用户)
-
Host_Alias(登录主机)
-
Cmnd_Alias(命令)
别名格式:必须大写字母,数字可以使用但是不能放在开头
User和runas: username #uid %group_name %#gid user_alias|runas_alias host: ip或hostname network(/netmask) host_alias command: command name directory sudoedit Cmnd_Alias ###别名 Host_Alias MYHOSTS = kgc,localhost User_Alias MYUSERS = zhangsan,wangwu,lisi Cmnd_Alias MYCMNDS = /sbin/*,!/sbin/reboot,!/sbin/poweroff,!/sbin/init,!/usr/bin/rm MYUSERS MYHOSTS=NOPASSWD:MYCMNDS root ALL=(ALL) ALL 用户 主机名ip= 命令View Code
1.8.2 子目录
[root@localhost sudoers.d]#vim /etc/sudoers.d/test lisi ALL= sudoedit #lisi 变相管理员 ,可以使用 sudoedit 命令 lisi vim sudoers [root@localhost sudoers.d]#chmod 440 test #设置权限,加固安全 [root@localhost ~]#su lisi [lisi@localhost root]$ sudoedit /etc/sudoers #李四使用sudoedit 可以修改sudo配置文件 通配符 ? 任意单一字符 * 匹配任意长度字符 [wxc] 匹配其中一个字符 [!wxc] 除了这三个字符的其它字符 \x 转义 [[alpha]] 字母 [root@localhost sudoers.d]#vim /etc/sudoers.d/test liliu ALL= /bin/cat /var/log/vmware*View Code
开关机安全控制
调整BIOS引导设置(bios设置开机密码)
-
将第一引导设备设为当前系统所在硬盘
-
禁止从其他设备(光盘、U盘、网络)引导系统
-
将安全级别设为setup,并设置管理员密码
GRUB限制
-
使用grub2-mkpasswd-pbkdf2生成密钥
-
修改/etc/grub.d/00_header文件,添加密码记录
-
生成新的grub.cfg配置文件
1.9 grub 加密
/etc/grub.d目录
定义每个菜单项的所有脚本都存放在/etc/grub.d目录中,这些脚本的名称必须有两位的数字前缀,其目的是构建GRUB 2菜单时定义脚本的执行顺序以及相应菜单项的顺序,比如00_header文件首先被读取。
文件 | 描述 |
---|---|
00_header | 设置grub默认参数 |
10_linux | 系统中存在多个linux版本 |
20_ppc_terminfo | 设置tty控制台 |
30_os_prober | 设置其他分区中的系统(硬盘中有多个操作系统时设置) |
40_custom和41_custom | 用户自定义的配置 |
设置GRUB 2加密
由于GRUB 2负责引导linux系统,其作为系统中的第一道屏障的安全性非常重要,对GRUB 2进行加密可以实现安全性。
在默认情况下,GRUB 2对所有可以在物理上进入控制台的人都是可访问的。任何人都可以选择并编辑任意菜单项,并且可以直接访问GRUB命令行。要启用认真支持,必须将环境变量超级用户设置为一组用户名(可以使用空格、逗号、分号作为分隔符)这样就只允许超级用户使用GRUB命令行、编辑菜单项以及执行任意菜单项。
GRUB 2密码支持以下两种格式
-
明文密码:密码数据没有经过加密,安全性差
-
PBKDF2加密密码:密码经过PBKDF2哈希算法进行加密,在文件中存储的是加密后的密码数据,安全性较高。
先要使用grub2-mkpasswd-pbkdf2命令生成PBKDF2加密口令,然后在/etc/grub.d/00_header文件中添加超级用户和PBKDF2加密口令,最后使用grub2-mkconfig命令生成grub配置文件。
在/etc/grub.d/00_header文件中添加用户和PBKDF2加密口令的格式如下。
[root@localhost ~]#grub2-setpassword #直接设置密码
1.10暴力破解密码
一个一个试
弱口令检测一 -John the Ripper. John the Ripper是一-款开源的密码破解工具,可使用密码字典(包含各种密码组合的列表文件)来进行暴力破解。 ./configre 安装路径和选择功能 make .c .py 高级语言 机器 make(编译) 高级编译二进制 0 1 让机器课读懂 make install 将程序 存起来 cd /opt tar. zxf john-1.8.0.tar.gz #解压工具包 yum install -y gcc gcc-c++ make #安装软件编译工具 cd /opt/john-1.8.0/src #切换到src子目录 make clean linux-x86-64 #进行编译安装 cp /etc/shadow /opt/shadow.txt #准备待破解的密码文件 cd /opt/john-1.8.0/run ./john /opt/shadow.txt #执行暴力破解 ./john --show /opt/shadow.txt #查看已破解出的账户列表 > john. pot #使用密码字典文件 #清空已破解出的账户列表,以便重新分析 ./john --wordlist=./password.1st /opt/shadow.txt #使用指定的字典文件进行破解View Code
1.11nmap扫描
1 ===============网络端口扫描============ 2 控制位 3 SYN 建立链接 4 ACK 确认 5 FIN 结束断开 6 PSH 传送 0 数据缓存 上层应用协议 7 RST 重置 8 URG 紧急 9 10 紧急URG(URGent) 当URG等于1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据),而不要按照原来的排队顺序来传送。 11 当URG置为1的时,发松应用进程就告诉发送方的TCP的有紧急数据要传传送,于是发送方TCP就把紧急数据插入到本报文段数据的最前面,而在紧急数据后面的数据仍是普通数据,这时要与首部的紧急指针配合来使用。 12 确认ACK(ACKnowledgment) 仅当ACK = 1 时确认号字段才有效,当ACK = 0时,确认号无效。TCP规定,在连接建立之后所有的传送的报文段都必须把ACK置为1; 13 14 推送PSH(PuSH) 当两个应用进程进行交互式的通信时,有时在一端的应用进程希望键入一个命令后立即就能够收到对方的响应,在这种情况下,TCP就可以使用推送PSH操作,发送方的TCP把PSH置为1,并立即创建一个报文段发送出去。接收方收到PSH = 1的报文段,就尽快地(即“推送”向前)交付接受应用进程,而不再等到整个缓存都填满了再向上交付; 15 16 复位RST(ReSeT)当RST = 1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立运输连接。RST置1还用来拒绝一个非法的报文段或拒绝一个打开一个连接。RST也称为重建位或重置位; 17 18 同步SYN(SYNchronization) 在连接建立时用来同步序号。当SYN = 1时而ACK = 1时表示这是一个连接请求报文段。对方若同意连接,则应在响应的报文段中是SYN = 1 和ACK = 1,因此SYN = 1就表示这是以恶搞连接请求或连接接受报文; 19 终止FIN(FINis) 用来释放一个连接,当FIN = 1时,表示次报文段的发送方的数据已经发送完毕,并要求释放运输连接 20 21 22 #安装 23 rpm -qa|grep nmap 查看nmap 24 yum install -y nmap 25 26 27 nmap命令常用的选项和描类型 28 -p:指定扫描的端口。 29 -n:禁用反向DNS解析(以加快扫描速度) ip转换成 域名 12222 2www.baidu.com 30 -sS: TCP的SYN扫描 (半开扫描),只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即 31 断开连接;否则认为目标端口并未开放。 32 -sT: TCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监 33 听服务,否则认为目标端口并未开放。 34 -sF:TCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对sYN数据包进行简单 35 过滤,而忽略了其他形式的TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性。 36 -sU: UDP扫描,探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢。 37 -sP: ICMP 扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描。 38 -P0:跳过ping检测, 这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法 39 ping通而放弃扫描。 40 41 42 用于主机发现的一些用法 43 -sL: List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现。 44 45 -sn: Ping Scan 只进行主机发现,不进行端口扫描。 46 47 -Pn: 将所有指定的主机视作开启的,跳过主机发现的过程。 48 49 -PS/PA/PU/PY[portlist]: 使用TCPSYN/ACK或SCTP INIT/ECHO方式进行发现。 50 51 -PE/PP/PM: 使用ICMP echo, timestamp, and netmask 请求包发现主机。-PO[protocollist]: 使用IP协议包探测对方主机是否开启。 52 53 -n/-R: -n表示不进行DNS解析;-R表示总是进行DNS解析。 54 55 --dns-servers <serv1[,serv2],...>: 指定DNS服务器。 56 57 --system-dns: 指定使用系统的DNS服务器 58 59 --traceroute: 追踪每个路由节点 60 61 62 Nmap用于端口扫描的一些用法 63 -sS/sT/sA/sW/sM:指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描。 64 65 -sU: 指定使用UDP扫描方式确定目标主机的UDP端口状况。 66 67 -sN/sF/sX: 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态。 68 69 --scanflags <flags>: 定制TCP包的flags。 70 71 -sI <zombiehost[:probeport]>: 指定使用idle scan方式来扫描目标主机(前提需要找到合适的zombie host) 72 73 -sY/sZ: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况。 74 75 -sO: 使用IP protocol 扫描确定目标机支持的协议类型。 76 77 -b <FTP relay host>: 使用FTP bounce scan扫描方式 78 79 nmap命令常用的选项和描类型 80 -p:指定扫描的端口。 81 -n:禁用反向DNS解析(以加快扫描速度) ip转换成 域名 12222 2www.baidu.com 82 -sS: TCP的SYN扫描 (半开扫描),只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即 83 断开连接;否则认为目标端口并未开放。 84 -sT: TCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监 85 听服务,否则认为目标端口并未开放。 86 -sF:TCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对sYN数据包进行简单 87 过滤,而忽略了其他形式的TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性。 88 -sU: UDP扫描,探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢。 89 -sP: ICMP 扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描。 90 -P0:跳过ping检测, 这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法 91 ping通而放弃扫描。 92 93 示例: 94 #分别查看本机开放的TCP端口、UDP端口 95 nmap -sT 127.0.0.1 96 nmap -sU 127.0.0.1 97 #检测192.168.80.0/24网段有哪些主机提供HTTP服务 98 nmap -p 80 192.168.80.0/24 99 nmap -p 80 192.168.91.100/24 100 #检测192.168.80.0/24网段有哪些存活主机 101 nmap -n -sP 192.168.80.0/24 102 103 104 80 http 105 443 https 加密与否 106 ssh 22 107 108 httpd 服务名程序 109 110 apache nginx tomcat 软件名View Code
服务 | 端口号 |
---|---|
HTTP | 80 |
HTTPS | 443 |
Telnet | 23 |
FTP | 21 |
SSH(安全登录)、SCP(文件传输)、端口重定向 | 22 |
SMTP | 25 |
POP3 | 110 |
WebLogic | 7001 |
TOMCAT | 8080 |
WIN2003远程登录 | 3389 |
Oracle数据库 | 1521 |
MS SQL* SEVER数据库sever | 1433 |
MySQL 数据库sever | 3306 |
scp 某文件 192.168.***.****:/文件夹 #远程传文件远程拷贝 #关闭防火墙 systemctl stop firewalld setenforce 0 sz与rz#虚拟机与真机传文件 scp、rz、sz需要xshell vim /etc/sysconfig/network-scripts/ifcfg-ens33 BOOTPROTO=static ONBOOT=yes IPADDR= NETMASK= GATEWAY= DNS1=
标签:系统安全,密码,用户,etc,模块,应用,root,pam From: https://www.cnblogs.com/bacolate/p/17592237.html