账号安全管理
账号安全
禁止程序用户登录
usermod -s /sbin/nologin 用户名
[root@localhost ~]# useradd tmt
[root@localhost ~]# useradd my
[root@localhost ~]# useradd yf
[root@localhost ~]#
[root@localhost ~]# usermod -s /sbin/nologin tmt //设置tmt用户禁止程序用户登录
[root@localhost ~]#
[root@localhost ~]# grep "/sbin/nologin" /etc/passwd //查看用户文件下用户状态
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
libstoragemgmt:x:998:995:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
colord:x:997:994:User for colord:/var/lib/colord:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
saned:x:996:993:SANE scanner daemon user:/usr/share/sane:/sbin/nologin
gluster:x:995:992:GlusterFS daemons:/run/gluster:/sbin/nologin
saslauth:x:994:76:Saslauthd user:/run/saslauthd:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
chrony:x:993:988::/var/lib/chrony:/sbin/nologin
unbound:x:992:987:Unbound DNS resolver:/etc/unbound:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
geoclue:x:991:985:User for geoclue:/var/lib/geoclue:/sbin/nologin
sssd:x:990:984:User for sssd:/:/sbin/nologin
setroubleshoot:x:989:983::/var/lib/setroubleshoot:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
gnome-initial-setup:x:988:982::/run/gnome-initial-setup/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
tmt:x:1002:1002::/home/tmt:/sbin/nologin
[root@localhost ~]#
锁定禁用长期不使用的用户
passwd -l 用户名 usermod -L 用户名 #查看锁定账号状态 passwd -S 用户名
[root@localhost ~]# passwd -l my //锁定my用户
锁定用户 my 的密码 。
passwd: 操作成功
[root@localhost ~]# passwd -S my //查看my用户锁定账户状态
my LK 2024-04-20 0 99999 7 -1 (密码已被锁定。)
[root@localhost ~]#
[root@localhost ~]# usermod -L tmt //锁定tmt用户
[root@localhost ~]# passwd -S tmt //查看锁定账号状态
tmt LK 2024-04-20 0 99999 7 -1 (密码已被锁定。)
[root@localhost ~]#
删除无效用户
userdel -r 用户名
[root@localhost ~]# userdel -r my //删除用户my
[root@localhost ~]# grep "/sbin/" /etc/passwd
[root@localhost ~]#
[root@localhost ~]# cat /etc/passwd //查看用户
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
libstoragemgmt:x:998:995:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
colord:x:997:994:User for colord:/var/lib/colord:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
saned:x:996:993:SANE scanner daemon user:/usr/share/sane:/sbin/nologin
gluster:x:995:992:GlusterFS daemons:/run/gluster:/sbin/nologin
saslauth:x:994:76:Saslauthd user:/run/saslauthd:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
chrony:x:993:988::/var/lib/chrony:/sbin/nologin
unbound:x:992:987:Unbound DNS resolver:/etc/unbound:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
geoclue:x:991:985:User for geoclue:/var/lib/geoclue:/sbin/nologin
sssd:x:990:984:User for sssd:/:/sbin/nologin
setroubleshoot:x:989:983::/var/lib/setroubleshoot:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
gnome-initial-setup:x:988:982::/run/gnome-initial-setup/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
test:x:1000:1000:test:/home/test:/bin/bash
zhangsan:x:1001:1001::/home/zhangsan:/bin/bash
tmt:x:1002:1002::/home/tmt:/sbin/nologin
yf:x:1004:1004::/home/yf:/bin/bash
[root@localhost ~]#
禁止账号和密码的修改
chattr +i /etc/passwd /etc/shadow #查看锁定文件状态 lsattr 文件名
/etc/passwd 存放用户的文件
/etc/shadow 存放用户密码的文件
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow 禁止账号和密码的修改
[root@localhost ~]#
[root@localhost ~]# lsattr /etc/passwd //查看用户锁定状态
----i----------- /etc/passwd
[root@localhost ~]#
[root@localhost ~]# lsattr /etc/shadow /查看用户密码锁定状态
----i----------- /etc/shadow
[root@localhost ~]# chattr -i /etc/passwd /etc/shadow //解锁账号和密码的修改
[root@localhost ~]#
[root@localhost ~]# lsattr /etc/passwd //查看账号
---------------- /etc/passwd
[root@localhost ~]# lsattr /etc/shadow //查看密码
---------------- /etc/shadow
[root@localhost ~]# passwd my //修改账户my密码
更改用户 my 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# echo abc1234 | passwd --stdin xy101 /输入abc1234为xy101密码
更改用户 xy101 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]#
密码安全管理
设置密码有效期
chage -M 天数 用户名 #针对已存在的用户,天数为 99999 表示为永不过期
vim /etc/login.defs --> PASS_MAX_DAYS 天数 #针对新建的用户
[root@localhost ~]# chage -M 99999 my //设置my用户密码有效期为99999(永久有效)
[root@localhost ~]# chage -l my //查看my用户状态
最近一次密码修改时间 :4月 20, 2024
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
[root@localhost ~]# passwd -S my //查看my用户状态
my LK 2024-04-20 0 99999 7 -1 (密码已被锁定。)
[root@localhost ~]#
针对新建的用户
[root@localhost ~]#
[root@localhost ~]# vim /etc/login.defs
[root@localhost ~]#
[root@localhost ~]# useradd xy101
[root@localhost ~]# vim /etc/shadow
强制用户下一次登录修改密码
chage -d 0 用户名
[root@localhost ~]# chage -d 0 my //强制my用户下一次登录修改密码
[root@localhost ~]#
历史命令安全管理
查看历史命令
history
[root@localhost ~]#
[root@localhost ~]# history //查看历史命令
1 setenforce 0
2 systemctl stop firewalld
3 ifconfig
4 vim /etc/sysconfig/network-scripts/ifcfg-ens33
5 systemctl restart network
6 ifconfig
7 fdisk -l
8 partprobr
9 partprobe
10 fdisk -l
11 echo "- - -" > /sys/class/scsi_host/host0/scan
12 echo "- - -" > /sy class/scsi_host/host1/scan
13 echo "- - -" > /sys/class/scsi_host/host2/scan
14 fdisk -l
15 fdisk /dev/sdb
16 fdisk -l /dev/sdb
17 fdisk /dev/sdb
18 fdisk -l
19 fdisk /dev/sdc
20 fdisk /dev/sdd
21 fdisk -l
22 pvscan /dev/sdb1
23 pvcreat /dev/sdb1 /dev/sdc1
24 pvcreate /dev/sdb1 /dev/sdc1
25 pvdisplay /dev/sdb1
26 pvdisplay /dev/sdc1
27 ls
28 df -h
29 ls
30 cd /etc/yum.repos.d
31 ls
32 cat local.repo
33 cd /etc/yum.repos.d
34 ls
35 mount /dev/vgyz/lvhf /opt/xy101
36 ls
37 ls -l -h
38 cd /etc/yum.repos.d
39 cat local.repo
40 cd
41 mount /dev/sr0/mnt
42 df
43 mount /dev/sr0 /mnt
44 cd /etc/yum.repos.d/
45 mkdir repo.bak
46 mv*.repo repo.bak
47 mv *.repo repo.bak
48 cd /etc/yum.repos.d/
49 vim local.repo
50 yum clean all && yum makecache
51 cat local.repo
52 yum install -y xfsprogs quota
53 cd /opt/xy101
54 ls
55 rm -rf*
56 rm -rf *
57 ls
58 cd
59 umount /opt/xy101
60 df
61 mount -o usrquota,grpguota /dev/vgyz/lvhf /opt/xy101/
62 cd /opt/xy101
63 cd
64 df
65 df -hT
66 fdisk -l
67 ll
68 df
69 rpm -q xfsprogs xfs_quota
70 df -h
71 fdisk -l
72 df -hT
73 mount /dev/sr0 /mnt
74 cd /etc/yum.repos.d
75 ls
76 cat local.repo
77 ls
78 mount /dev/sro /mnt
79 mount /dev/sr0 /mnt
80 ls
81 mkdir local.repo
82 cat local.repo
83 cd
84 umount /dev/vgyz/lvhf
85 umount /dev/vgyz1/lvhf1
86 rpm -q xfsprogs xfs_quota
87 df -h
88 df -hT
89 fdisk -l
90 mkdir /opt/xy101
91 mount /dev/vgyz/lvhf /opt/xy101
92 df -h
93 df -hT
94 rpm -q xfsprogs xfs_quota
95 df -h
96 mount /dev/sr0 /mnt
97 cd /etc/yum.repos.d/
98 ls
99 cat local.repo
100 useradd tmt
101 useradd my
102 useradd yf
103 usermod -s /sbin/nologin
104 usermod -s /sbin/nologin tmt
105 grep "/bin/nologin" /stc/passwd
106 grep "/bin/nologin" /etc/passwd
107 grep "/sbin/nologin" /etc/passwd
108 passwd -l my
109 passwd -S my
110 usermod -L my
111 passwd -S my
112 usermod -L tmt
113 passwd -S tmt
114 userdel -r my
115 grep "/sbin/" /etc/passwd
116 cat /etc/passwd
117 chatr +i /etc/passwd /etc/shadow
118 chattr +i /etc/passwd /etc/shadow
119 chattr +i tmt /etc/passwd /etc/shadow
120 chatr +i /etc/passwd /etc/shadow
121 chattr +i /etc/passwd /etc/shadow
122 lsattr /etc/passwd
123 lsattr /etc/shadow
124 chattr -i /etc/passwd /stc/shadow
125 chattr -i /etc/passwd /etc/shadow
126 lsattr /etc/passwd
127 lsattr /etc/shadow
128 useradd my
129 chage -M 99999 my
130 chage -1 username
131 chage -M 99999 my
132 chage -l username
133 passwd -S username
134 passwd -S my
135 chage -l my
136 chage -M 99999 my
137 chage -l my
138 passwd -S my
139 chage -d 0 my
140 history
[root@localhost ~]#
限制历史命令数量
vim /etc/profile --> export HISTSIZE=XX --> source /etc/profile
[root@localhost ~]# vim /etc/profile //修改历史命令文件
[root@localhost ~]# source /etc/profile
[root@localhost ~]# source /etc/profile //刷新
[root@localhost ~]# history //查看十条命令
10 echo abc1234 | passwd --stdin xy101
11 vim /etc/profile
12 source /etc/profile
13 history
14 vim /etc/profile
15 source /etc/profile
16 history
17 vim /etc/profile
18 source /etc/profile
19 history
清空历史命令
history -c #临时清空
vim /etc/profile --> > ~/.bash_history
[root@localhost ~]# history -c //临时清空历史命令
[root@localhost ~]# history
1 history
[root@localhost ~]# vim /etc/profile //进入
[root@localhost ~]#
Connection closed.
Disconnected from remote host(CentOS 7 64 位【2】) at 04:09:41.
Type `help' to learn how to use Xshell prompt.
[D:\~]$
Connecting to 20.0.0.20:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
Last login: Sun Apr 21 02:27:32 2024 from 20.0.0.1 //重新链接
[root@localhost ~]# history //已生效
1 history
[root@localhost ~]#
限制su切换用户
1)将信任的用户加入到wheel组中 gpasswd wheel -a 用户名
2)修改su的PAM认证配置文件 vim /etc/pam.d/su -> 开启 auth required pam_wheel.so use_uid 的配置
[root@localhost ~]# groupadd sb0920 //新建组sb0920
[root@localhost ~]#
[root@localhost ~]# gpasswd wheel -a tmt //将用户tmt加入组sb0920
正在将用户“tmt”加入到“wheel”组中
[root@localhost ~]#
修改su的PAM认证配置文件
[root@localhost ~]# cd /etc/pam.d/
[root@localhost pam.d]# ls
atd login smtp
chfn other smtp.postfix
chsh passwd sshd
config-util password-auth sssd-shadowutils
crond password-auth-ac su
cups pluto sudo
fingerprint-auth polkit-1 sudo-i
fingerprint-auth-ac postlogin su-l
gdm-autologin postlogin-ac system-auth
gdm-fingerprint ppp system-auth-ac
gdm-launch-environment remote systemd-user
gdm-password runuser vlock
gdm-pin runuser-l vmtoolsd
gdm-smartcard setup xserver
ksu smartcard-auth
liveinst smartcard-auth-ac
[root@localhost pam.d]# vim su
[root@localhost pam.d]#
[root@localhost pam.d]#
[root@localhost pam.d]# su - xy101
[xy101@localhost ~]$
[xy101@localhost ~]$
[xy101@localhost ~]$
[xy101@localhost ~]$
[xy101@localhost ~]$
[xy101@localhost ~]$ su - root
密码:
上一次登录:日 4月 21 23:30:07 CST 2024从 20.0.0.1pts/0 上
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# exit //退出当前用户
登出
[xy101@localhost ~]$
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# gpasswd wheel -a yf //yf加入wheel组中
正在将用户“yf”加入到“wheel”组中
[root@localhost ~]# id yf
uid=1004(yf) gid=1004(yf) 组=1004(yf),10(wheel)
[root@localhost ~]#
[yf@localhost ~]$ exit //退出
登出
[root@localhost ~]# su - yf
上一次登录:日 4月 21 23:52:31 CST 2024pts/0 上
ssh远程登录输入三次密码错误则锁定用户
vim /etc/pam.d/sshd
auth required pam_tally2.so deny=3 unlock_time=600 even_deny_root root_unlock_time=600
sudo提权
visudo vim /etc/sudoers (要用 wq! 强制保存)
#用户/组授权
用户名 主机名=程序列表 #命令要用绝对路径表示,支持使用通配符 * 表示所有, ! 表示取反
%组名 主机名=程序列表
用户名 主机名=NOPASSWD: 程序列表 #NOPASSWD: 表示sudo不用密码验证
#别名设置
User_Alias 大写别名=用户1, 用户2, ...
Host_Alias 大写别名=主机名1, 主机名2, ...
Cmnd_Alias 大写别名=命令路径1, 命令路径2, ...
用户别名 主机别名=命令别名
#设置sudo日志路径
Defaults logfile = "/var/log/sudo.log"
sudo -l #普通用户查看有哪些sudo权限
[root@localhost log]# sudo -l
匹配 %2$s 上 %1$s 的默认条目:
!visiblepw, always_set_home, match_group_by_gid,
always_query_group_plugin, env_reset, env_keep="COLORS
DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL
PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT
LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE
LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
用户 root 可以在 localhost 上运行以下命令:
(ALL) ALL
[root@localhost log]#
终端登录安全控制
限制root只在安全终端登录
安全终端配置:/etc/securetty
禁止普通用户登录
建立/etc/nologin文件
删除nologin文件或重启后即恢复正常
[root@localhost ~]#
[root@localhost ~]# vim /etc/securetty
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# touch /etc/nologin
[root@localhost ~]# ls /etc/nologin
/etc/nologin
[root@localhost ~]# rm -rf /etc/nologin
[root@localhost ~]#
nmap命令常用的选项和扫描类型
-p:指定扫描的端口。
-n:禁用反向 DNS 解析(以加快扫描速度)。
-sS:TCP的SYN扫描(半开扫描),只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放。
-sT:TCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放。
-sF:TCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对SYN数据包进行简单过滤,而忽略了其他形式的 TCP 攻击包。这种类型的扫描可间接检测防火墙的健壮性。
-sU:UDP 扫描,探测目标主机提供哪些 UDP 服务,UDP 扫描的速度会比较慢。
-sP:ICMP 扫描,类似于 ping 检测,快速判断目标主机是否存活,不做其他扫描。
-P0:跳过ping检测,这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法 ping 通而放弃扫描。
netstat -natp 查看正在运行的使用TCP协议的网络状态信息
netstat -naup 查看正在运行的使用UDP协议的网络状态信息
示例:
#分别查看本机开放的TCP端口、UDP端口
nmap -sT 127.0.0.1
nmap -sU 127.0.0.1#检测192.168.80.0/24网段有哪些主机提供HTTP服务
nmap -p 80 192.168.80.0/24#检测192.168.80.0/24网段有哪些存活主机
nmap -n -sP 192.168.80.0/24
netstat命令常用选项:
-a:显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)。
-n:以数字的形式显示相关的主机地址、端口等信息。
-t:查看 TCP相关的信息。
-u:显示 UDP协议相关的信息。
-p:显示与网络连接相关联的进程号、进程名称信息(该选项需要 root 权限)。
-r:显示路由表信息。
-l:显示处于监听状态的网络连接及端口信息。
限制更改 GRUB 引导参数
通常情况下在系统开机进入GRUB 菜单时,按 e 键可以查看并修改GRUB 引导参数,这对服务器是一个极大的威胁。
可以为 GRUB 菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。
grub2-mkpasswd-pbkdf2 #根据提示设置GRUB 菜单的密码
PBKDF2 hash of your password is grub.pbkdf2…… #省略部分内容为经过加密生成的密码字符串cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
cp /etc/grub.d/00_header /etc/grub.d/00_header.bakvim /etc/grub.d/00_header
cat << EOF
set superusers="root" #设置用户名为root
password_pbkdf2 root grub.pbkdf2…… #设置密码,省略部分内容为经过加密生成的密码字符串
EOFgrub2-mkconfig -o /boot/grub2/grub.cfg #生成新的 grub.cfg 文件
重启系统进入 GRUB 菜单时,按 e 键将需要输入账号密码才能修改引导参数。
[root@localhost ~]#
[root@localhost ~]# vim /etc/securetty
如何查看进程是否已经开启?
systemctl status 进程名
ps aux/-elf | grep 进程名
netstat/ss -lntup | grep 进程名/:端口
lsof -i :端口
[root@localhost ~]#
[root@localhost ~]# ps aux |grep sshd
root 1298 0.0 0.1 112984 4308 ? Ss 20:32 0:00 /usr/sbin/sshd -D
root 2357 0.0 0.1 161072 5644 ? Ss 20:45 0:00 sshd: root@pts/0
root 3040 0.0 0.0 112828 980 pts/0 S+ 21:43 0:00 grep --color=auto sshd
[root@localhost ~]#
[root@localhost ~]# ps -elf |grep sshd
4 S root 1298 1 0 80 0 - 28246 poll_s 20:32 ? 00:00:00 /usr/sbin/sshd -D
4 S root 2357 1298 0 80 0 - 40268 poll_s 20:45 ? 00:00:00 sshd: root@pts/0
0 S root 3088 2366 0 80 0 - 28207 pipe_w 21:48 pts/0 00:00:00 grep --color=auto sshd
[root@localhost ~]#
[root@localhost ~]# netstat -lntup | grep sshd //根据进程名查看
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1298/sshd
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 2357/sshd: root@pts
tcp6 0 0 :::22 :::* LISTEN 1298/sshd
tcp6 0 0 ::1:6010 :::* LISTEN 2357/sshd: root@pts
[root@localhost ~]# ss -lntup | grep sshd
tcp LISTEN 0 128 *:22 *:* users:(("sshd",pid=1298,fd=3))
tcp LISTEN 0 128 127.0.0.1:6010 *:* users:(("sshd",pid=2357,fd=9))
tcp LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=1298,fd=4))
tcp LISTEN 0 128 [::1]:6010 [::]:* users:(("sshd",pid=2357,fd=8))
[root@localhost ~]#
[root@localhost ~]# netstat -lntup | grep :22 //根据端口查看
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1298/sshd
tcp6 0 0 :::22 :::* LISTEN 1298/sshd
[root@localhost ~]#
[root@localhost ~]# lsof -i :22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1298 root 3u IPv4 27344 0t0 TCP *:ssh (LISTEN)
sshd 1298 root 4u IPv6 27346 0t0 TCP *:ssh (LISTEN)
sshd 2357 root 3u IPv4 36892 0t0 TCP localhost.localdomain:ssh->20.0.0.1:chromagrafx (ESTABLISHED)
[root@localhost ~]#
如何通过端口查看进程号?
netstat -lntup | grep :端口
ss -lntup | grep :端口
lsof -i :端口
[root@localhost ~]# netstat -lntup | grep :22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1298/sshd
tcp6 0 0 :::22 :::* LISTEN 1298/sshd
[root@localhost ~]# ss -lntup | grep :22
tcp LISTEN 0 128 *:22 *:* users:(("sshd",pid=1298,fd=3))
tcp LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=1298,fd=4))
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# lsof -i :22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1298 root 3u IPv4 27344 0t0 TCP *:ssh (LISTEN)
sshd 1298 root 4u IPv6 27346 0t0 TCP *:ssh (LISTEN)
sshd 2357 root 3u IPv4 36892 0t0 TCP localhost.localdomain:ssh->20.0.0.1:chromagrafx (ESTABLISHED)
[root@localhost ~]#
对新服务器做过哪些初始化操作?
安装操作系统
设置网络,比如 网卡IP、网关、路由、DNS服务器地址、双网卡绑定bond(在物理机环境中使用)
设置主机名 hostnamectl set-hostname
设置ntp时间同步 ntpd chronyd ntpdate
设置防火墙规则 iptables firewalld
关闭selinux setenforce 0 /etc/selinux/config
精简开机启动服务 systemctl enable crond rsyslog network sshd
设置yum仓库镜像源 /etc/yum.repos.d/
磁盘使用lvm或raid
升级linux内核
关闭selinux
[root@localhost ~]# setenforce 0 //临时关闭
[root@localhost ~]# ll /etc/sysconfig/selinux
lrwxrwxrwx. 1 root root 17 4月 12 01:40 /etc/sysconfig/selinux -> ../selinux/config
[root@localhost ~]#
[root@localhost ~]# vim /etc//selinux/config
[root@localhost ~]# ulimit -a //显示所有资源限制
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 14949
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 14949
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
[root@localhost ~]#
[root@localhost ~]# ulimit -n 65536 //设置同时打开文件数量65536 (通常设置2的n次方)
[root@localhost ~]# ulimit -a //显示所有资源限制
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 14949
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 65536
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 14949
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
[root@localhost ~]#
对服务器初始化后做过哪些安全加固?
禁止 root 用户远程登陆 /etc/ssh/sshd_config --> PermitRootLogin no
修改 ssh 端口号 /etc/ssh/sshd_config --> Port
普通用户限制 su 切换用户 /etc/pam.d/su
普通用户通过 sudo 授权管理 visudo /etc/sudoers
锁定关键系统文件 chattr +i
设置历史命令保存条数 /etc/profile HISTSIZE
设置账户超时时间 /etc/profile TMOUT
限制用户的登录次数 /etc/pam.d/sshd
设置用户密码强度 /etc/pam.d/system-auth
接入堡垒机或跳板机
[root@localhost ~]# ntsysv //图形化设置
双网卡绑定的7种模式
一般mode=0与mode=1比较常用,mode=6负载均衡方式两块网卡都工作,不需要交换机支持,常用。
1.1 网卡负载均衡模式
网卡负载均衡模式mode=0
该模式的特点是增加了带宽,同时支持容错能力,当有某一链路出现问题时,会把所有流量切换到正常的链路上。
特点:
1.所有链路处于负载均衡状态,以轮询方式向每条链路发送报文,基于per packet方式(按数据分流)发送。
2.如在配置bond0的服务器ping baidu.com 两个网卡均会有流量发出,流量会负载到两条链路上,说明是基于per packet方式进行的轮训发送。
3.该模式的特点是增加了带宽,同时支持容错能力,当有某一链路出现问题时,会把所有流量切换到正常的链路上。
1.2 网卡容错模式
网卡容错模式mode=1
当主端口down掉时,从端口会接手主端口的状态
特点:
一个端口处于主状态,一个端口处于从状态,所有的流量都会在主链路上处理,从端口不会有任何流量。当主端口down掉时,从端口接手主状态
1.3 balance-xor需要交换机支持
需要交换机支持mode=2
通过源和目标mac做hash因子来做xor算法来选择链路
特点:
1.该模式将限定流量,以保证到达特定对端的流量总是从同一个接口是上发出。既然目的地是通过MAC地址来决定的,因此该模式在“本地”网络配置下可以工作得很好。如果所有 流量是通过单个路由器(比如 “网关”型网络配置,只有一个网关时,源和目标mac都固定了,那么这个算法算出的线路就一直是同一条,那么这种模式就没有多少意义了。),那该模式就不 是最好的选择。和网卡的负载均衡模式一样,交换机端口需要能配置为“port channel”。
2.这模式是通过源和目标mac做hash因子来做xor算法来选路的。
1.4 broadcast广播策略
广播策略mode=3
此模式需要高可靠性的网络,不允许出现任何问题。本模式提供负载均衡和容错的能力
特点:
此模式的特点是一个报文会负载两份王bond下的两个接口分别发送出去,当有对端交换机失效,我们感觉不到任何downtime,但此法过于浪费资源,在所有的slave接口上传送所有的报文。本模式提供容错能力。
1.5 IEEE 802.3ad 动态链路聚合
动态链路聚合mode=4
802.3ad模式是IEEE标准,因此所有实现了802.3ad的对端都可以很好的互操作。
802.3ad 协议包括聚合的自动配置,因此只需要很少的对交换机的手动配置(要指出的是,只有某些设备才能使用802.3ad)。
802.3ad标准也要求帧按顺序 (一定程度上)传递,因此通常单个连接不会看到包的乱序。
802.3ad也有些缺点:标准要求所有设备在聚合操作时,要在同样的速率和双工模式,而且,和 除了balance-rr模式外的其它bonding负载均衡模式一样,任何连接都不能使用多于一个接口的带宽。
此外,linux bonding的802.3ad实现通过对端来分发流量(通过MAC地址的XOR值),因此在“网关”型配置下,所有外出(Outgoing)流量将使用 同一个设备。
进入(Incoming)的流量也可能在同一个设备上终止,这依赖于对端802.3ad实现里的均衡策略。在“本地”型配置下,路两将通过 bond里的设备进行分发。
BONDING_OPTS="mode=4 miimon=100 xmit_hash_policy=layer2" 2层模式=IP
BONDING_OPTS="mode=4 miimon=100 xmit_hash_policy=layer2+3" 2+3层模式 =MAC+IP
BONDING_OPTS="mode=4 miimon=100 xmit_hash_policy=layer3+4" 3+4层模式=IP+端口
1.6 自适应传输负载均衡模式
balance-tlb自适应传输负载均衡模式mode=5
自适应传输负载均衡:信道绑定不需要特殊的交换机支持。出口流量的分布取决于当前每个slave的负载(计算相对速度)。进口流量从当前的slave的接收。如果接收salve出错,其他的slave接管失败的slave的MAC地址继续接收。
先决条件:
每个slave的基本驱动支持Ehtool获取速率状态。
1.7 网卡虚拟化模式
网卡虚拟化mode=6
回复报文数第一个从端口1发第二个从端口2发,以此类推
特点:
此模式包含了自适应传输负载均衡模式,同时加上针对IPV4流量的接收负载均衡,而且不需要任何switch(交换机)的支持。
接收负载均衡是通过ARP协商(地址解析协议)实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。
所有端口都会收到对端的ARP请求报文,回复ARP回时,bond驱动模块会截获所发的ARP回复报文,跟进算法算到相应端口,这时会把ARP回复报文的源Mac,send源Mac都改成相应端口Mac。从抓包情况分析回复报文是第一个从端口1,第二个端口2发,以此类推。
2. bond0配置
mode0(平衡负载模式):平时两块网卡均工作,且自动备援,但需要在与服务器本地网卡相连的交换机设备上进行端口聚合来支持绑定技术。
2.1 修改两块网卡配置
# 加载bonding模块,并确认已经加载
$ modprobe --first-time bonding
$ lsmod | grep bonding
bonding 152656 0
# 进入网卡配置目录
$ cd /etc/sysconfig/network-scripts/
# 将网卡配置文件备份并删除
$ mv -f ifcfg-ens34 ifcfg-ens34.bak
$ mv -f ifcfg-ens38 ifcfg-ens38.bak
# 重新配置ens34与ens38网卡
$ vim ifcfg-ens34
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=ens34
MASTER=bond0
SLAVE=yes
$ vim ifcfg-ens38
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=ens38
MASTER=bond0
SLAVE=yes
2.2 配置bond0网卡
$ vim ifcfg-bond0
TYPE=UnKnown
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=bond0
IPADDR=192.168.50.100
NETMASK=255.255.255.0
GATEWAY=192.168.50.2
DNS1=8.8.8.8
DNS2=223.5.5.5
BONDING_OPTS="miimon=80 mode=0"
2.3 bond配置文件
$ vim /etc/modprobe.d/bond.conf
alias bond0 bonding
options bond0 miimon=100 mode=0
2.4 开机自动加载bond
$ vim /etc/rc.local
modprobe bonding miimon=100 mode=0
2.5 验证
$ systemctl restart network
# 查看是否配置成功
$ ip a
3: ens34: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
link/ether 00:0c:29:8a:35:20 brd ff:ff:ff:ff:ff:ff
4: ens38: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
link/ether 00:0c:29:8a:35:2a brd ff:ff:ff:ff:ff:ff
5: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:0c:29:8a:35:20 brd ff:ff:ff:ff:ff:ff
inet 192.168.50.101/24 brd 192.168.50.255 scope global bond0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe8a:3520/64 scope link
valid_lft forever preferred_lft forever
# 模拟某块网卡down
# 通过抓包来获取ping包来观察经过网卡的流量
# 一个窗口ping网关地址
$ ping 192.168.50.2
# 一个终端窗口抓取ens38去往网关的包
# 注意观察mac地址
$ tcpdump -i ens38 host 192.168.50.2
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens38, link-type EN10MB (Ethernet), capture size 262144 bytes
15:44:55.723646 IP localhost.localdomain > gateway: ICMP echo request, id 23653, seq 1, length 64
15:44:55.723674 IP gateway > localhost.localdomain: ICMP echo reply, id 23653, seq 1, length 64
15:44:56.726182 IP localhost.localdomain > gateway: ICMP echo request, id 23653, seq 2, length 64
15:44:56.726199 IP gateway > localhost.localdomain: ICMP echo reply, id 23653, seq 2, length 64
15:44:57.727318 IP localhost.localdomain > gateway: ICMP echo request, id 23653, seq 3, length 64
15:44:57.727337 IP gateway > localhost.localdomain: ICMP echo reply, id 23653, seq 3, length 64
15:44:58.728931 IP localhost.localdomain > gateway: ICMP echo request, id 23653, seq 4, length 64
15:44:58.728945 IP gateway > localhost.localdomain: ICMP echo reply, id 23653, seq 4, length 64
# 另一块网卡同样可以抓到
# 在虚拟机中断开ens34网卡的连接
# ping 稍断即回复通信
# 注意观察mac地址
3: ens34: <NO-CARRIER,BROADCAST,MULTICAST,SLAVE,UP> mtu 1500 qdisc pfifo_fast master bond0 state DOWN group default qlen 1000
link/ether 00:0c:29:8a:35:2a brd ff:ff:ff:ff:ff:ff
4: ens38: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
link/ether 00:0c:29:8a:35:20 brd ff:ff:ff:ff:ff:ff
5: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:0c:29:8a:35:20 brd ff:ff:ff:ff:ff:ff
inet 192.168.50.101/24 brd 192.168.50.255 scope global bond0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe8a:3520/64 scope link
valid_lft forever preferred_lft forever
3 . bond1配置
mode1(自动备援模式):平时只有一块网卡工作,在它故障后自动替换为另外的网卡。
3.1 修改两块网卡配置
# 进入网卡配置目录
$ cd /etc/sysconfig/network-scripts/
# 将网卡配置文件备份并删除
$ mv -f ifcfg-ens34 ifcfg-ens34.bak
$ mv -f ifcfg-ens38 ifcfg-ens38.bak
# 重新配置ens34与ens38网卡
$ vim ifcfg-ens34
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=ens34
MASTER=bond1
SLAVE=yes
$ vim ifcfg-ens38
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=ens38
MASTER=bond1
SLAVE=yes
3.2 配置bond0网卡
$ vim ifcfg-bond1
TYPE=UnKnown
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=bond1
IPADDR=192.168.50.101
NETMASK=255.255.255.0
GATEWAY=192.168.50.2
DNS1=8.8.8.8
DNS2=223.5.5.5
BONDING_OPTS="miimon=80 mode=1"
3.3 bond配置文件
$ vim /etc/modprobe.d/bond1.conf
alias bond1 bonding
options bond1 miimon=100 mode=1
3.4 开机自动加载bond
$ vim /etc/rc.local
modprobe bonding miimon=100 mode=1
3.5 验证
# 重启网卡
$ systemctl restart network
# 注意观察mac地址
$ ip a
3: ens34: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
link/ether 00:0c:29:8a:35:2a brd ff:ff:ff:ff:ff:ff
4: ens38: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
link/ether 00:0c:29:8a:35:20 brd ff:ff:ff:ff:ff:ff
5: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:0c:29:8a:35:20 brd ff:ff:ff:ff:ff:ff
inet 192.168.50.101/24 brd 192.168.50.255 scope global bond0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe8a:3520/64 scope link
valid_lft forever preferred_lft forever
# 查查看bond1状态
cat /proc/net/bonding/bond1
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: ens34
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:8a:35:20
Slave queue ID: 0
Slave Interface: ens38
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:8a:35:2a
Slave queue ID: 0
4. bond6配置
4.1 修改两块网卡配置
# 进入网卡配置目录
$ cd /etc/sysconfig/network-scripts/
# 将网卡配置文件备份并删除
$ mv -f ifcfg-ens34 ifcfg-ens34.bak
$ mv -f ifcfg-ens38 ifcfg-ens38.bak
# 重新配置ens34与ens38网卡
$ vim ifcfg-ens34
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=ens34
MASTER=bond6
SLAVE=yes
$ vim ifcfg-ens38
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=ens38
MASTER=bond6
SLAVE=yes
4.2 配置bond6网卡
$ vim ifcfg-bond6
TYPE=UnKnown
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=bond6
IPADDR=192.168.50.101
NETMASK=255.255.255.0
GATEWAY=192.168.50.2
DNS1=8.8.8.8
DNS2=223.5.5.5
BONDING_OPTS="miimon=80 mode=6"
4.3 bond配置文件
$ vim ifcfg-bond6
TYPE=UnKnown
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=bond6
IPADDR=192.168.50.101
NETMASK=255.255.255.0
GATEWAY=192.168.50.2
DNS1=8.8.8.8
DNS2=223.5.5.5
BONDING_OPTS="miimon=80 mode=6"
4.4 开机自动加载bond
$ vim /etc/rc.local
modprobe bonding miimon=100 mode=6
4.5 验证
# 重启网卡
$ systemctl restart network
# 注意观察mac地址
$ ip a
3: ens34: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond6 state UP group default qlen 1000
link/ether 00:0c:29:8a:35:20 brd ff:ff:ff:ff:ff:ff
4: ens38: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond6 state UP group default qlen 1000
link/ether 00:0c:29:8a:35:2a brd ff:ff:ff:ff:ff:ff
6: bond6: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:0c:29:8a:35:20 brd ff:ff:ff:ff:ff:ff
inet 192.168.50.101/24 brd 192.168.50.255 scope global bond6
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe8a:3520/64 scope link
valid_lft forever preferred_lft forever
# 查查看bond6状态
cat /proc/net/bonding/bond6
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: adaptive load balancing
Primary Slave: None
Currently Active Slave: ens34
MII Status: up
MII Polling Interval (ms): 80
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: ens34
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:8a:35:20
Slave queue ID: 0
Slave Interface: ens38
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:8a:35:2a
Slave queue ID: 0