-mtime[atime|ctime] 以mtime为例,列出指定的那天内修改的文件
P 使用绝对路径(此时会存在风险,如果解压缩,当内容发生变化时,会覆盖文件内容),默认为相对路径,当使用绝对路径会报错(tar: Removing leading
/’ from member names)`# 从前往后删除:#
[root@bogon ~]# echo $PATH
/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
[root@bogon ~]# echo ${PATH#/*bin:}
/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
[root@bogon ~]# echo ${PATH##/*bin:}
/usr/bin
# 从后往前删除:%
[root@bogon ~]# echo ${PATH%:*bin}
/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin
[root@bogon ~]# echo ${PATH%%:*bin}
/root/.local/bin
# 替换:/
[root@bogon ~]# echo ${PATH/bin/hello/}
/root/.local/hello/:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
[root@bogon ~]# echo ${PATH//bin/hello/}
/root/.local/hello/:/root/hello/:/usr/local/shello/:/usr/local/hello/:/usr/shello/:/usr/hello/
# 变量测试与内容替换:
username=${usernames-roots} 当$usernames 不存在,则赋值-后的roots
username=${usernames:-roots} 当$usernames 为空或者不存在,则赋值-后的roots
username=${usernames+roots} 当$usernames 为空或存在,则赋值+后的roots
username=${usernames:+roots} 当$usernames 为非空字符串,则赋值+后的roots
split -l 10 abc.txt lxq
split -b 10m 001.sql lxq
-x 将使用到的脚本内容显示到屏幕上
# 列出passwd在man中的所有分类
man -f passwd
# 查看passwd指定章节
man 1 passwd
man 5 passwd
# 搜索含有password的命令
man -k password
$ 移动到尾 0 移动到行首
w 移动一个单词或下一个标点的开头,b 向前移动
次数修饰符,5i 插入5次,3w 向后移动三个单词
文本查找:"/" 向下查找 "?" 向上查找,n 查找下一个匹配,N查找上一个匹配
可视区块
向下切换窗口 ctrl+w +j[向下方向符]。按下ctrl不放,按住w,放开所有键,再按j或向下方向符切换窗口
以目前文件内容为补全关键字 ctrl+x -> ctrl+n
在采取行动之前,把计划用来解决问题的操作记录下来
仅仅执行被记录下来的操作来解决问题
/etc/motd:登录后的信息。可以把服务器变动加在里面
# w
23:09:06 up 12 days, 5:56, 4 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 1.1.1.1 15:33 1.00s 0.40s 0.00s w
root pts/1 1.1.1.1 16:15 5:23m 0.11s 0.01s tail -f messages
root pts/2 1.1.1.1 19:03 2:08 0.05s 0.05s -bash
root pts/3 1.1.1.2 22:18 8.00s 0.08s 0.06s bash
[root@server-1 logrotate.d]# write root pts/1
hello
[root@server-1 logrotate.d]# write root pts/1
hello world
useradd -c "Hello lmm" -d /home/cslmm -e 2022-12-12 -f 33 -g share -G share1,share2,share3 -s /bin/false -u 3333 share4
usermod -c "Hello csq" -d /home/csq share4
chgn share4
# grep share4 /etc/passwd
share4:x:3333:1001:csq,bj,1234444,345322:/home/csq:/bin/bash
对于目录:r表示可以列出目录文件;w表示可以在目录中增加或删除文件(需要x权限);x表示可以进入此目录或者在路径名中使用它
特殊权限
:在目录上设置时,目录的所有新文件都继承该目录的所属组的权限
mask :设置此掩码指定除文件属主和“其他人“之外的任何人对文件的最大权限,可以临时取消文件的除上述用户之外的不符合限制的权限
getfacl sales_report
setfacl -m mask:0 sales_report
setfacl -m default:g:games:6 sales_report
setfacl -m default:u:nobody:7 sales_report
setfacl -m u:work:rw sales_report
setfacl -m g:work:rw sales_report
chmod [u|g|o|a][+|-][r|w|x] file or dir
chmod u+s file #SUID
chmod g+s file or dir #SGID
chmod o+t dir #SBIT
文件时间
:# touch 修改文件时间
touch -a file # 仅修改文件atime
touch -m file # 修改文件mtime
touch -c file # 修改文件时间,包含atime和mtime
touch -a -t 201406150202 aaa # 自定义修改时间,否则更新为当前时间
MBR分区第一个扇区的512字节,存储如下两种数据
:fdiskext文件系统:分为多个区块群组(block group)
,每个区块群组都有独立的inode、数据区块、超级区块系统:目录:Linux在建立一个目录时,文件系统会分配一个inode与至少一块区块给该目录。其中,inode记录该目录的相关属性与权限,并可记录分配到的那块区块号码,而区块则是记录在这个目录下的文件名与该文件名占用的inode号码数据。
# 列出文件系统类型
df -hT
# 列出文件下的总量
du -sh /usr/*
# 列出系统磁盘列表
lsblk -pd
blkid /dev/sda
dd if=/dev/zero of=/home/lx/test.img bs=4MB count=100
dd if=/etc/passwd of=/tmp/passwd.bak
# 全量备份/boot。M:备份的session标头 ;L 存储媒介标头;l 备份等级 0 为完整备份。
xfsdump -l 0 -L boot_all -M boot_all -f /srv/boot.dump /boot
# 备份成功会有记录,使用xfsdump -I读取
ll /var/lib/xfsdump/inventory/
# 查看备份结果
xfsdump -I
# 新增测试文件
dd if=/dev/zero of=/boot/testing.img bs=1M count=10
# 增量备份
xfsdump -l 1 -L boot_2 -M boot_2 -f /srv/boot.dump1 /boot
# 还原备份
xfsrestore -f /srv/boot.dump -L boot_all /boot
# 还原备份到/tmp/boot
xfsrestore -f /srv/boot.dump -L boot_all /tmp/boot
# -s 指定还原文件或文件夹
xfsrestore -f /srv/boot.dump -L boot_all -s grub2 /tmp/boot
diff -r /boot /tmp/boot
swapon -s
# 格式化交换分区
mkswap /dev/sdb1
# 启动交换分区
swapon /dev/sdb1
# 关闭交换分区
swapoff /dev/sdb1
# 创建交换文件
dd if=/dev/zero of=/var/test_swap bs=1M count=200
mkswap /var/test_swap
swapon /var/test_swap
# 创建物理分区 /dev/sdb2
fdisk /dev/sdb
# 创建一个LUKS格式密码
cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb2
# 创建一个加密设备文件/dev/mapper/data,需要输入的密码和上述设置密码相同
cryptsetup luksOpen /dev/sdb2 data
fdisk -l
# 创建文件系统
mkfs.ext4 /dev/mapper/data
# 创建挂载点目录,可以把none更改为密码自动执行挂在过程,但是这样违背了文件系统加密的初衷
echo "data /dev/sdb2 none" >>/etc/crypttab
echo "/dev/mapper/data /mnt/cslx ext4 defaults 1 2">> /etc/fstab
# 重启系统,自动挂载加密文件,需要手动输入密码
# 挂载
mount -o usrquota /dev/mapper/cslx-lv2 /mnt/lv2
# 初始化配额数据库
quotacheck -cugm /dev/mapper/cslx-lv2
# 开启磁盘配额 关闭为 quotaoff
quotaon /dev/mapper/cslx-lv2
# 创建或编辑磁盘配额
edquota junmo
# 查看指定用户的配额,无数据的话可去挂载目录下随意新建一个文件
quota -u junmo
# 查看所用用户指定文件下的配额
repquota /mnt/lv2
*** Report for user quotas on device /dev/mapper/cslx-lv2
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
junmo -- 20 1000 2000 3 1000 2000
# 查看配置
sed '{/#/d}' /etc/samba/smb.conf
# 自定义共享目录
vim /etc/samba/smb.conf
[doc]
comment = System documentation
path = /usr/share/doc
guest ok = no
browseable = yes
writeable = no
# testparm检查配置错误
# 添加账户
smbpasswd -a student
# 查看共享
subclient -U student -L 192.168.3.104
# 连接服务器,如果连接失败(NT_STATUS_CONNECTION_REFUSED),可能是防火墙的问题,centos默认启动firewalld,关闭即可
subclient -U student //192.168.3.104/doc
# 挂载共享,如挂载失败,显示cifs不存在,安装 apt install cifs-utils
mount -t cifs -o user=student //192.168.3.104/doc /mnt/doc
# /etc/fstab
## 所有用户都能查看/etc/fstab,使用第二种密码文件更安全
//192.168.3.104/doc /mnt/doc cifs user=student,password=123456 0 0
//192.168.3.104/doc /mnt/doc cifs credentials=/etc/samba/student 0 0
# /etc/samba/student 密码文件
user=student
password=123456
# 每分钟执行一次
* * * * * /bin/bash xxxx.sh
# 每5分钟执行一次
*/5 * * * * /bin/bash xxxx.sh
# 每小时第3分钟和第6分钟各执行执行一次
3,6 * * * * /bin/bash xxxx.sh
# 每小时第12分钟和第18分钟之间每分钟执行一次
12-18 * * * * /bin/bash xxxx.sh
anacron:对于非24小时运行的系统执行的crontab,以及因为某些原因导致的超时时间而没有被执行的任务anacron会控制其执行
。anacron是由crond每小时执行一次的。$ cat /etc/cron.d/0hourly
01 * * * * root run-parts /etc/cron.hourly
$ ls /etc/cron.hourly
0anacron # 每小时执行一次
$ cat /etc/anacrontab
...
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22
# 表示此任务会在每天的3点-22点之间执行,延迟5分钟,如果系统繁忙,最多可延迟45分钟,
# 判断时间是否过了一天以文件/var/spool/anacron/cron.daily为准
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
#period in days delay in minutes job-identifier command
$ systemctl status atd
# 时间格式:(04:00) (04:00 2015-07-22) (04:00 + 3 days|minutes|hours)
$ at 04:00
at> /usr/bin/sleep
at> # Ctrl+D
job 2 at Sun Mar 6 04:00:00 2022
$ at -l
2 Sun Mar 6 04:00:00 2022 a root
batch 系统有空时才执行任务,它没有时间参数
,使用at -l依然可查询任务$ # batch
warning: commands will be executed using /bin/sh
at> sleep 300
at>
job 7 at Sat Mar 5 19:32:00 2022
指定tcp或udp接收远程日志,module(load="imtcp") input(type="imtcp" port="514")
指定日志输出:action(type="omfwd" Target="172.16.130.55" Port="514" Protocol="tcp")
module(load="imuxsock" # provides support for local system logging (e.g. via logger command)
SysSock.Use="off") # Turn off message reception via local log socket;
# local messages are retrieved through imjournal now.
module(load="imjournal" # provides access to the systemd journal
StateFile="imjournal.state") # File to store the position in the journal
module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")
global(workDirectory="/var/lib/rsyslog")
module(load="builtin:omfile" Template="RSYSLOG_TraditionalFileFormat")
include(file="/etc/rsyslog.d/*.conf" mode="optional")
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog # 有短横线-会批量写入
cron.* /var/log/cron
*.emerg :omusrmsg:*
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
# action(type="omfwd" Target="172.16.130.55" Port="514" Protocol="tcp")
使用logger发送日志给rsyslogd守护进程
。etc : logger -T -n 172.16.130.55 -P 514 -p local7.warn -t lxq “hello cslxq”# cat /etc/logrotate.d/nginx
/var/log/nginx/*log {
create 0664 work work
daily
rotate 10
missingok
notifempty
compress
sharedscripts
postrotate
/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
endscript
}
rpm软件包查询
rpm -U package.rpm
:如果没有安装上一个版本的包,则安装该软件包,如果安装了,则软件包更新到新版本h选项会展示安装进度
rpm -e -v pkgname
安装软件包 dpkg -i xxx.deb
删除软件包,保留其配置文件 dpkg -r pkgname
删除软件包,包括所有的配置文件 dpkg -P pkgname
启动引导程序(bootloader):一个可读取内核文件来执行的软件,并将控制权传递给内核。
启动引导程序只会认识自己的系统分区内的可启动的内核文件,以及其他启动引导程序
本地/home传输到服务器:nc -l 33333 | tar xvf - ; tar cvf - /home | nc server 33333
# 展示规则 filter
iptables -nvL --line-numbers
iptables -I INPUT -s 192.168.3.106 -j DROP
iptables -t filter -F INPUT
# -p 指定协议
iptables -A INPUT -p icmp -j DROP
# -m 和 --dport --sport一起使用
iptables -A INPUT -m tcp -p tcp --dport 80 -j REJECT
iptables -A INPUT -p icmp -s 192.168.3.0/24 -j DROP
# /etc/passwd
nncp:x:0:0:root:/root:/bin/bash
# /etc/shadow
nncp:::0:99999:7:::
创建一个有SUID权限的程序来创建后门。例如 chmod u+s /usr/bin/vim,这样就可以使用vim来修改passwd和shadow文件获得root权限了
# 创建文件md5值,也可以使用变体sha1sum sha256sum sha512sum
md5sum /etc/passwd > passwd.md5
# 校验文件是否改变
md5sum -c passwd.md5
登录后复制
# [host1]centos
yum install pinentry
# [host1]生成秘钥对 csq [email protected]
gpg --gen-key
# [host1]创建一个公钥文件
gpg --output pub_key_file --export "csq"
scp pub_key_file [email protected]:/root/
# [host2]在另一台主机上 导入公钥到GPG数据库
gpg --import pub_key_file
# [host2]加密数据
gpg --encrypt --recipient [email protected] data.txt
scp data.txt.gpg [email protected]:/root/
# [host1]解密数据
gpg --decrypt data.txt.gpg
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
同时每个成长路线对应的板块都有配套的视频提供:
需要网络安全学习路线和视频教程的可以在评论区留言哦~
- 如果你确实想自学的话,我可以把我自己整理收藏的这些教程分享给你,里面不仅有web安全,还有渗透测试等等内容,包含电子书、面试题、pdf文档、视频以及相关的课件笔记,我都已经学过了,都可以免费分享给大家!
给小伙伴们的意见是想清楚,自学网络安全没有捷径,相比而言系统的网络安全是最节省成本的方式,因为能够帮你节省大量的时间和精力成本。坚持住,既然已经走到这条路上,虽然前途看似困难重重,只要咬牙坚持,最终会收到你想要的效果。
黑客工具&SRC技术文档&PDF书籍&web安全等(可分享)
网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。
特别声明:
此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失