1. 程式人生 > >security 01: Linux基本防護 、 用戶切換與提權 、 SSH訪問控制 、 總結和答疑

security 01: Linux基本防護 、 用戶切換與提權 、 SSH訪問控制 、 總結和答疑

add orm ati sgi star 數字簽名 安全 roo 輸入

LINUX安全與監控 6天
LINUX安全 3天
LINUX監控 3天
+++++++++++++++++++++++++
什麽安全? 保護維護的服務器不受到攻擊和破壞

攻擊和破壞手段?
技術性
非技術性 : 指定規章制度和工作流程

技術性的攻擊:
本地安全:

網絡安全:防火墻
(軟件防火墻 firewalld iptables )
RHEL7 RHEL6

             (硬件防火墻  獨立的物理設備)
             sshd服務的配置 *(密鑰對認證登錄)

數據安全:數據在網絡中傳輸會受到哪些攻擊?
劫獲 篡改 數字簽名(不可否認性)
加密

LINUX安全day01

本地安全:
1 用戶管理:
相關的命令及命令選項
useradd -u -g -G -s 用戶名
useradd -s /sbin/nologin jim (用戶作為進程的執行者)

#useradd tom

echo 123456 | passwd --stdin tom

usermod -L -U -u -g -G -s 用戶名
userdel -r 用戶名
passwd -S -l -u 用戶名
chage -l -d -E 用戶名
#chage -l tom
#chage -d 0 tom

chage -E 2018/01/31 jim

id 用戶名
#id jim

相關的配置文件
/etc/passwd
#grep tom /etc/passwd

/etc/shadow
#grep tom /etc/shadow

/etc/login.defs

grep -v ‘^#‘ /etc/login.defs

#ls /etc/skel/ -a //用戶系統環境模板文件
+++++++++++++++++++++++++++++++++++++++
隱藏內核和操作系統信息。(修改文件內容)
本地登錄
[root@host50 ~]# cat /etc/issue
\S
Kernel \r on an \m
[root@host50 ~]#

網絡連接
[root@host50 ~]# cat /etc/issue.net

\S
Kernel \r on an \m
[root@host50 ~]#
++++++++++++++++++++++++++++++++
文件系統安全:
修改記錄歷史命令的條目數量 默認1000
[root@host50 ~]# grep -n 1000 /etc/profile
45:HISTSIZE=1000
[root@host50 ~]#
[root@host50 ~]# sed -i ‘45s/1000/500/‘ /etc/profile
[root@host50 ~]# grep -n 500 /etc/profile
45:HISTSIZE=500
[root@host50 ~]# echo $HISTSIZE
1000
[root@host50 ~]# source /etc/profile
[root@host50 ~]# echo $HISTSIZE
500
[root@host50 ~]# ls ~/.bash_history
/root/.bash_history
[root@host50 ~]# vim ~/.bash_history

記錄歷史命令執行的時間 HISTTIMEFORMAT
#HISTTIMEFORMAT=‘%F %T ‘
[root@host50 ~]# history

#vim /etc/profile
....
export HISTTIMEFORMAT=‘%F %T ‘
:wq

程序和服務控制(把不需要的服務設置不開啟動)
rhel7: systemctl disable 服務名
systemctl disable firewalld

rhel6: chkconfig 服務名 off
ntsysv
ls /etc/init.d/ 存放腳本文件
#chmod o-x /etc/init.d/* 撤銷其他服務對腳本的執行權限

文件系統及掛載:
安裝操作體系時,你的分區規劃是怎麽樣的?
/ 根分區 沒有單獨分配存儲空間的數據,都存放在根下(必須的)
/home 建議單獨分區 (LV)
/var 建議單獨分區 (LV) PV VG LV

/boot 引導分區 存放的是系統啟動時的引導文件(可選)
swap 交換分區 從物理磁盤劃分出來 (可選)

格式化的文件系統類型: ext2/3/4 xfs /proc

掛載方式:
命令行掛載 mount -t 文件系統類型 選項 分區名 目錄名
開機自動掛載 /etc/fstab defaults默認掛載
觸發掛載 autofs服務

defaults默認掛載 包括哪些掛載項?
#man mount 搜索defaults
defaults
Use default options: rw, suid, dev, exec, auto,
nouser, and async.

suid 允許在掛載目錄下執行suid 和sgid權限的文件
exec 允許在掛載目錄下執行二進制文件

fdisk /dev/vdb
fdisk -l /dev/vdb
blkid /dev/vdb1
mkfs.ext4 /dev/vdb1
blkid /dev/vdb1
mkdir /disk1
mount -t ext4 /dev/vdb1 /disk1
cp /usr/sbin/useradd /disk1
chmod o+x /disk1/useradd
chmod u+s /disk1/useradd

nosuid 不允許在掛載目錄下執行suid 和sgid權限的文件
noexec 不允許在掛載目錄下執行二進制文件

#cd /
#umount /disk1
#mount -t ext4 -o nosuid,noexec /dev/vdb1 /disk1
++++++++++++++++++++++++
給文件加特殊屬性(加鎖 解鎖)系統文件配置文件 服務配置文件
i 對文件沒有移動 編輯 刪除的權限
a 只能以追加的訪問編輯文件
查看 lsattr 文件名
添加 chattr +屬性 文件名
刪除 chattr -屬性 文件名
+++++++++++++++++++++++++++++++++++++++++
用戶切換
普通用戶 ---------- > root 要輸入對方的密碼
普通用戶 <----------- root 不輸入對方密碼
普通用戶 <-----------> 普通用戶 要輸入對方的密碼

#su //切換的root用戶
#su - 用戶 //既切換到用戶的身份 ,又切換的用戶的環境
#su 用戶 //只切換到用戶的身份 ,不會切換的用戶的環境

#su - -c "命令" 用戶 //切換到用戶身份後執行命令
[jim@host50 ~]$ su - -c "touch /root/a.txt" root

++++++++++++++++++++++++++++++++++++++++++
用戶提權: 系統root用戶讓系統的普通用戶可以執行自己可以使用的命令。
useradd webadmin ----> httpd
useradd dbadmin ----> mysqld

echo 123456 | passwd --stdin webadmin
echo 123456 | passwd --stdin dbadmin

/etc/sudoers 提權配置文件

用戶名 主機名列表=命令列表 // 給單個用戶提權
%用戶組 主機名列表=命令列表 //給用戶組用提權

*命令列表中的命令,必須要寫命令的絕對路徑
#which 命令名
#which systemctl

#vim /etc/sudoers

#webadmin localhost, host50=/usr/bin/systemctl * httpd, /usr/bin/vim /etc/httpd/conf/httpd.conf, NOPASSWD: ALL

mike localhost,host50=/sbin/*, !/sbin/ifconfig eth0
:wq!

%webgrp localhost, host50=/usr/bin/systemctl * httpd, /usr/bin/vim /etc/httpd/conf/httpd.conf

#useradd mike
#echo 123456 | passwd --stdin mike
#groupadd webgrp
#useradd webadmin2
#echo 123456 | passwd --stdin webadmin2
#usermod -G webgrp webadmin
#usermod -G webgrp webadmin2

提權時使用別名(別名名稱必須使用大寫字母表示)
定義用戶別名
User_Alias 別名名稱 = 用戶名列表
User_Alias HTTPUSERS = webamdin, webadmin2

定義主機別名
Host_Alias 別名名稱 = 主機名列表
Host_Alias MYPC=localhost, host50

定義命令別名
Cmnd_Alias 別名名稱 = 命令列表
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum

+++++++++++++++++++++++
使用別名提權
用戶別名名稱 主機別名=命令別名名稱

HTTPUSERS MYPC=SOFTWARE,/usr/bin/systemctl * httpd, /usr/bin/vim /etc/httpd/conf/httpd.conf
+++++++++++++++++++++++++++++++
啟用日誌記錄提權用戶執行過命令
vim /etc/sudoers
Defaults logfile="/var/log/sudo"
:wq

#cat /var/log/sudo (提權用戶執行過提權命令,系統自動創建此文件)
++++++++++++++++++++++++++
普通用測試提權?
查看可以使用的提權命令: sudo -l
執行提權命令: sudo 提權命令

++++++++++++++++++++++++++++++++++++++++++
ssh服務訪問控制:

  • 服務啟動後,
    默認允許所有客戶端訪問,
    默認登錄認證方式:密碼認證登錄。
    [root@host50 ~]#systemctl sshd start
    [root@host50 ~]# netstat -utnalp | grep sshd
    tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1412/sshd

設置服務運行的參數

vim /etc/ssh/sshd_config

Port 22022
ListenAddress 192.168.4.50

配置白名單 : 只有在白名單列表裏的用戶才可以訪問
AllowUsers 用戶名1 用戶名2@客戶端地址
AllowGroups 用戶組名1 用戶組名2

vim /etc/ssh/sshd_config
AllowUsers jerry [email protected]

配置黑名單 : 只有在黑名單列表裏的用戶不可以訪問
DenyUsers 用戶名1 用戶名2@客戶端地址
DenyGroups 用戶組名1 用戶組名2

vim /etc/ssh/sshd_config
DenyUsers bob

++++++++++++++++++++++++++++++++
配置ssh服務僅允許密鑰對認證登錄
公鑰 加密
私鑰 解密

client 254:
1 創建密鑰對: ls ~/.ssh/
[root@room9pc17 ~]#rm -rf ~/.ssh
[root@room9pc17 ~]#ssh-keygen // 創建密鑰對
[root@room9pc17 ~]# ls ~/.ssh/
id_rsa id_rsa.pub

ssh server 50
#rm -rf ~/.ssh

client 254: 把公鑰上傳給ssh服務器

ssh-copy-id [email protected] //上傳密鑰對

ssh server 50
[root@host50 ~]# ls ~/.ssh
authorized_keys

ssh server 50 禁用密碼認證登錄
vim /etc/ssh/sshd_config
81 PasswordAuthentication no //禁用密碼認證登錄
:wq
#systemctl restart sshd

client 254: 測試秘鑰對認證登錄
#ssh [email protected] //不用輸入密碼直接連接
#ssh [email protected] //不允許連接

++++++++++++++++++++++++++++++++
在客戶端連接ssh服務器
ssh 用戶名@ssh_ip //默認連接目標服務器的22端口
ssh -X -p 端口號 用戶名@ssh_ip //連接目標服務器指定端口號
-X 可以顯示圖形界面

++++++++++++++++++++++++++++++++++++++++++
編寫腳本 /root/autoadduser.sh
功能:批量添加系統用戶,具體要求如下:
執行腳本時 可以自定義添加用戶的個數 若沒有指定個數的話默認只添加 1個 用戶。 用戶密碼和用戶名相同,強制用戶首次登陸系統必須修改登錄密碼。用戶添加後,在用戶家目錄下自動創建readme.txt文件。添加用戶時若用戶在系統內已經存在 給出提示信息: (jim 已經存在)。

security 01: Linux基本防護 、 用戶切換與提權 、 SSH訪問控制 、 總結和答疑