linux基本防護與ssh授權

linux 基本防護 (系統管理部分)
安裝系統時會體是創建普通用戶
useradd jim ---- echo 123456 | passwd – stdin jim
使用chage 工具
-d 0 ,強制修改密碼
-E yyyy-mm-dd ,指定失效日期 (-1 取消)
chage -l jim
最近一次密碼修改時間 :12月 28, 2018
密碼過期時間 :從不
密碼失效時間 :從不
帳戶過期時間 :從不
兩次改變密碼之間相距的最小天數 :0
兩次改變密碼之間相距的最大天數 :99999
在密碼過期之前警告的天數 :7
cal 12 (一年12月)
chage -E 2018/12/31 jim (設置jim 用戶到期時間爲 2018/12/31)
chage -d 0 jim (0 表示必須改密碼)

帳號的鎖定/解鎖
使用 passwd 命令
-l 鎖定 -u 解鎖 -S 看狀態
passwd jim (改密碼)
passwd -S jim (看狀態)
jim LK 2018-12-28 0 99999 7 -1 (密碼已被鎖定。) —(鎖定還是初始密碼)

強制定期修改密碼
配置文件 /etc/login.defs
主要控制屬性
UMASK 077 (用戶 權限爲700)
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7

ls -a /home/jim
. … .bash_logout .bash_profile .bashrc .mozilla (初始狀態)
ls -a /etc/skel

cp -r mongodb /etc/skel/
useradd tom
echo 123456 | passwd --stdin tom
ls -a /home/tom
. … .bash_logout .bash_profile .bashrc mongodb .mozilla

僞裝登入提示
配置文件
/etc/issue 、/etc/issue.net
分別適用於本地、遠程登入
默認會提示內核、系統等版本信息
cat /etc/redhat-release (操作系統版本)
Red Hat Enterprise Linux Server release 7.4 (Maipo)
uname -r (顯示內核)
3.10.0-693.el7.x86_64
vim /etc/issue (修改操作系統信息,隱藏真實信息)

程序和服務控制
禁用非必要的服務
使用 systemctl 、chkconfig 工具
systemctl disable httpd (開機不自起)
chkconfig httpd off (紅帽6版本 開機不自起)
chkconfig httpd on (開機自起)

鎖定/解鎖保護文件
ext3/ext4的文件屬性控制
chattr (修改) 、lsattr(查看)

  • 、 - 、= 控制方式 +(添加) - (驅除)
    屬性i : 不可變 (immutable)
    屬性 a : 僅可追加 (append only) (能 拷貝、移動、能追加。不能刪除)
    /etc/resolv.conf /etc/hosts
    chattr +i a.txt ( i不可 刪除、修改、移動。可以拷貝)
    lsattr a.txt
    ----i----------- a.txt (a.txt 不可變。包括管理員也改不了)

用戶切換與提權
su (切換到本機管理員帳號)
su jim (只切換到jim 用戶。環境還是root 用戶)-----[jim@m1 root]$
su - jim (切換到 jim 用戶 環境也切換到 jim)—[jim@m1 ~]$

[jim@m1 ~]$ whoami
jim

[jim@m1 root]$ su - root -c “mkdir /root/bb.txt” (普通用戶在root 用戶 創建)
密碼: root密碼
[root@m1 ~]# su - jim -c “mkdir /home/jim/lll.txt” (以root身份給用戶 jim 創建 目錄)—普通用戶家目錄是 /home

分析 su 切換的使用情況
安全日誌 /var/log/secure
記錄su驗證、shell 開啓與關閉
tail /var/log/secure

sudo 提升執行權限
用戶提權 (操作系統員 root 有提權權限)
提權是讓系統的普通用戶有執行root 權限

管理員預先爲用戶設置執行許可
被授權用戶有權執行的命令,驗證自己的口令
命令格式
用法1: sudo 特權命令
用法2: sudo 【-u 目標用戶】 特權命令

查看自己的sudo 授權
sudo -l

配置sudo 授權
修改方法
visudo ====vim /etc/sudoers
授權記錄格式
用戶 主機列表
命令列表
grep ^root /etc/sudoers
root ALL=(ALL) ALL NOPASSWD:ALL (提權用戶執行命令不用密碼驗證)
可以是 % 組名

127.0.0.1 localhost (回還地址)
which systemctl -------》 /usr/bin
vim /etc/sudoers (編輯文件 授權)

93 tom localhost,m1=/usr/bin/systemctl * httpd, /usr/bin/vim /etc/httpd/conf/httpd.conf
wq!

(文件用戶名 本機回還地址(localhost),本機主機名(m1)=命令列表)
[tom@m1 ~]$ sudo -l
用戶 tom 可以在 m1 上運行以下命令:
(root) /usr/bin/systemctl * httpd, /usr/bin/vim /etc/httpd/conf/httpd.conf
lucy localhost,m1=/usr/bin/systemctl * mysqld, !/usr/bin/vim /etc/my.cnf (!, 不允許)

[tom@m1 ~]$ sudo /usr/bin/systemctl start httpd (開啓httpd)----必須用絕對路徑
可以給用戶,組提權

%wheel ALL=(ALL) ALL
usermod -G wheel lll
%wheel ALL=(ALL) ALL
lll 用戶會有所有權限

用戶組提權
useradd jack
useradd jerry
groupadd admgrp
usermod -G admgrp jack
usermod -G admgrp jerry
%admgrp localhost,m1=/usr/bin/systemctl * httpd, /usr/bin/vim /etc/httpd/conf/httpd.conf, /usr/bin/systemctl * mysqld, /usr/bin/vim /etc/my.cnf,NOPASSWD:ALL (給組 admgrp 設置提權,且不需要輸入密碼)

分析sudo 提權的使用情況
修改全局配置,啓用日誌 (vim /etc/sudoers)
Defaults logfile="/var/log/sudo" (添加日誌文件)

sudo 別名設置
主要用途
提高可重用性、易讀性
簡化配置、使記錄更用條理
30 Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
94 tom localhost,m1=SOFTWARE, /usr/bin/systemctl * httpd, /usr/bin/vim /etc/httpd/conf/httpd.conf (注別名名稱必須全大寫)

[tom@m1 ~]$ sudo /bin/rpm -q elinks
[tom@m1 ~]$ sudo /usr/bin/yum -y install elinks

ssh 訪問控制【服務常用配置項目 加深密鑰對認證登入的使用】
selinux 安全防護

ssh 防護概述
存在的安全隱患
密碼嗅覺、鍵盤記錄
暴力枚舉帳號、猜解密碼
常見的防護措施
用戶限制、黑白名單
更改驗證方式 (密碼—》 密鑰對)
防火牆
sshd基本安全配置
文件 (/etc/ssh/sshd_config)

17 #Port 22
18 #AddressFamily any
19 #ListenAddress 0.0.0.0 //默認所有都可連
PermitRootlogin no //禁止root 登入

修改文件
Port 2222
#AddressFamily any
ListenAddress 192.168.4.50
systemctl restart sshd (重啓)
驗證 :
[root@student000000 ~]# ssh -p 2222 -X [email protected] (真機連接)

37 #LoginGraceTime 2m //不解析客戶機地址
40 #MaxAuthTries 6 //登入限時
115 #UseDNS no // 每連接最多認證次數
man 5 sshd_config (man 幫助)

黑名單 (在列表用戶不允許連接 sshd 服務)
白名單 (在列表用戶才能連接)

配置白名單
AllowUsers 用戶列表
AllowGroups 用戶組名列表

配置黑名單
DenyUsers 用戶列表
DenyGroups 用戶組名列表

AllowUsers dcc [email protected] ( dcc 用戶 可以所有主機登入 root只能254 上連接及真機上連接)
[root@m2 ~]# ssh -p 2222 [email protected]

sshd 口令驗證(默認 用戶名、密碼)
65 PasswordAuthentication yes (默認密碼與用戶名連接)

密鑰驗證 (公鑰 私鑰)
43 #PubkeyAuthentication yes (密鑰開啓)
47 AuthorizedKeysFile .ssh/authorized_keys (存放客戶端公鑰名稱)

在真機上生成公鑰私鑰 給 51 主機
rm -rf ~/.ssh (還原無密碼登入)
cat /root/.ssh/id_rsa.pub ( 密鑰文件)----id_rsa.phb (公鑰)
[root@m1 ~]# ls /root/.ssh/authorized_keys (客戶端存放)
[root@student000000 ~]# ssh-add (若登入要密碼。則手動)
PasswordAuthentication no (在51主機上關閉用戶名與密碼連接)–及只能密鑰登入
#PermitEmptyPasswords no 要連接的主機上沒有密碼的用戶 不能來連接

爲了能讓 52主機也能連接上主機51
ssh [email protected]
Permission denied (publickey,gssapi-keyex,gssapi-with-mic). —沒有對應的
52 主機上
rm -rf /root/.ssh/
mkdir ~/.ssh
scp [email protected]:/root/.ssh/id_rsa /root/.ssh/
chmod u+x /root/.ssh/id_rsa
ssh [email protected]

或: 『在真機上
scp ~/.ssh/id_rsa [email protected]:/root/.ssh (將51 主機私鑰文件拷貝給52 )
52主機 chmod u+x /root/.ssh/id_rsa (方便連接主機51)』

什麼是selinux
sestatus -----getenfore (查狀態)
添加禁用 selinux=0
添加允許 enforcing=0
修改配置文件 (/etc/selinux/config)
disabled (禁用) permissive (寬鬆) enforcing (強制)
targeted - Targeted processes are protected, //保護常用服務

minimum - Modification of targeted policy. Only selected processes are protected. //設置保護

mls - Multi Level Security protection. //360 全副保護

查看安全上下文
爲文件/目錄/設備標記訪問控制屬性
屬性構成
用戶:角色:訪問類型:選項…
system_u:object_r:passwd_file_t:s0 —ls -Z /etc/passwd
system_u:system_r:httpd_t:s0 httpd ps -aux Z | grep -i httpd
system_u:system_r:mysqld_t:s0 mysql ps aux -Z | grep -i mysqld
object_r:admin_home_t:s0 -----》 root家目錄
ls -Z (查看) /文件/目錄/進程
ls -l /etc/passwd
-rw-r–r--. 1 root root 2426 12月 28 15:24 /etc/passwd
ls -lZ /etc/passwd
-rw-r–r--. root root system_u:object_r:passwd_file_t:s0 /etc/passwd

修改安全上下文
使用 chcon 工具
-t ,指定訪問類型
-R , 遞歸修改
一般操作規律
創建的文件,繼承父目錄的安全上下文 (及在什麼目錄下創建就和此目錄屬性一致)
[root@m1 ~]# touch abc.txt
[root@m1 ~]# ls -Z abc.txt
-rw-r–r--. root root unconfined_u:object_r:admin_home_t:s0 abc.txt

移動的文件,原有的上下文屬性不變
mv /root/a.html /var/www/html/
[root@m1 html]# ls -Z a.html
-rw-r–r--. root root unconfined_u:object_r:admin_home_t:s0 a.html

[root@m1 html]# chcon -t httpd_sys_content_t a.html (修改selinux 上下文)
ls -Z a.html (httpd_sys_content_t 爲 /var/www/html 屬性)
-rw-r–r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 a.html

複製的文件,自動繼承目標位置的上下文 (與/var/www/html 上下文一致)
[root@m1 ~]# cp /root/b.html /var/www/html/
[root@m1 html]# ls -Z b.html
-rw-r–r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 b.html

修改文件的訪問類型
chcon -t 訪問類型 文件名
chcon -R -t 訪問類型 文件夾

重置安全上下文
使用 restorecon 『文件名』 工具 (restorecon /var/www/html/b.html)
恢復爲所在位置的默認上下文屬性
-R 遞歸修改 『目錄名』
/.autorelabel 文件
下次重啓後全部重置

設置 selinux 布爾值 bool (功能開關)
getsebool -a 。 列出所有布爾值 『getsebool -a | grep -i httpd

setsebool -P 選項 on| off 永久更改,重啓後仍然有效

50 運行ftp 服務。允許匿名用戶對 /var/ftp/shared 目錄有上傳和下載文件權限
vim /etc/vsftpd/vsftpd.conf
29 #anon_upload_enable=YES //允許匿名用戶有權限
mkdir /var/ftp/shared
chmod o+w /var/ftp/shared
cp /etc/hosts /var/ftp/shared
systemctl restart vsftpd (ftp端口:21)

測試:yum -y install ftp
ftp 192.168.4.50
上傳文件 : ftp --》 回車 --》 cd shared --》 lcd /etc --》 put passwd
下載文件 ftp … cd shared --》 ls --》 get hosts
上傳開啓bool 值

When SELinux is enforcing check for SE bool allow_ftpd_anon_write, allow_ftpd_full_access

setsebool -P ftpd_anon_write on
setsebool -P ftpd_full_access on

報錯信息查看
rpm -qa | grep -i shoot
setroubleshoot-3.2.28-3.el7.x86_64
setroubleshoot-plugins-3.0.65-1.el7.noarch
setroubleshoot-server-3.2.28-3.el7.x86_64
[root@m2 ~]# rpm -qa | grep -i setroubleshoot
setroubleshoot-3.2.28-3.el7.x86_64
setroubleshoot-plugins-3.0.65-1.el7.noarch
setroubleshoot-server-3.2.28-3.el7.x86_64

grep -i ‘setroubleshoot’ /var/log/messages | tail -1
Dec 28 08:20:01 m2 setroubleshoot: SELinux is preventing /usr/lib64/firefox/plugin-container from name_connect access on the tcp_socket port 6010. For complete SELinux messages run: sealert -l 65a9663b-ae7a-4e65-a42b-8e55c6f23e95
[root@m2 ~]# sealert -l 65a9663b-ae7a-4e65-a42b-8e55c6f23e95
Do (解決方法)
allow this access for now by executing:

ausearch -c ‘plugin-containe’ --raw | audit2allow -M my-plugincontaine

semodule -i my-plugincontaine.pp

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章