日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

Linux安全出版

發(fā)布時(shí)間:2025/3/20 linux 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux安全出版 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一.使用密鑰登錄

1.先sudo su -s 切換到root

2.生成秘鑰對(duì)

root@ubuntu:~# ssh-keygen ? 命令

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa): <== 按 Enter

Created directory '/root/.ssh'.

Enter passphrase (empty for no passphrase): 直接按 Enter 留空

Enter same passphrase again: <== 回車

Your identification has been saved in /root/.ssh/id_rsa. <== 私鑰

Your public key has been saved in /root/.ssh/id_rsa.pub. <== 公鑰

The key fingerprint is:

0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 root@host

?

cd ?/root/.ssh/導(dǎo)出id_rsa ? 一定先導(dǎo)入密鑰再執(zhí)行下面操作

3.服務(wù)器安裝公鑰

cd /root/.ssh/?

cat id_rsa.pub >> authorized_keys

chmod 600 authorized_keys

chmod 700 /root/.ssh/

?

4.設(shè)置ssh,密鑰登錄

vim /etc/ssh/sshd_config ?修改下面配置

PermitRootLogin yes

PasswordAuthentication no

?

重啟sshd

service ssh restart

?

退出shell,使用root加密鑰登錄

?

?

二.數(shù)據(jù)庫(kù)安全

2.1數(shù)據(jù)庫(kù)軟口令

face1.5.0以前的數(shù)據(jù)庫(kù)默認(rèn)密碼為123456,會(huì)輕易被破解。這里介紹修改數(shù)據(jù)庫(kù)登錄密碼的方法

?

cat change_postgres_passwd.sh

#!/bin/bash

read -p "Please input your new password:" c

Passwd=$c

###.json###

sed -i "s/123456/${Passwd}/g" /home/dell/face/thor/latest/thor.json

sed -i "s/123456/${Passwd}/g" /home/dell/face/loki/latest/config/production.json

sed -i "s/123456/${Passwd}/g" /home/dell/face/loki/latest/config/default.json

sed -i "s/123456/${Passwd}/g" /home/dell/face/face-api/latest/config.json

###.txt###

sed -i "s/123456/${Passwd}/g" /home/dell/face/croatia/latest/config/croatia_config.txt

sed -i "s/123456/${Passwd}/g" /home/dell/face/bingo/latest/tmp/bingoconfig_white.txt

sed -i "s/123456/${Passwd}/g" /home/dell/face/bingo/latest/tmp/bingoconfig.txt

###登錄數(shù)據(jù)庫(kù)修改密碼

sudo -u postgres psql? -U postgres -w -c "alter user postgres with password '${Passwd}'"

supervisorctl restart all

?

?

bash chang_postgres_passwd.sh ? //輸入你的密碼

?

?

上面的腳本可以修改face1.4.2的數(shù)據(jù)庫(kù)密碼,密碼應(yīng)有特殊字符,字母大小寫和數(shù)字

?

?

2.2數(shù)據(jù)庫(kù)訪問授權(quán)限制

在pg_hba.conf文件中,每條記錄占一行,指定一條訪問認(rèn)證規(guī)則。

總的來說訪問控制記錄大致有以下7種形式:

local????? database? user? auth-method? [auth-options]

host?????? database? user? address? auth-method? [auth-options]

hostssl??? database? user? address? auth-method? [auth-options]

hostnossl? database? user? address? auth-method? [auth-options]

host?????? database? user? IP-address? IP-mask? auth-method? [auth-options]

hostssl??? database? user? IP-address? IP-mask? auth-method? [auth-options]

hostnossl? database? user? IP-address? IP-mask? auth-method? [auth-options]

?

?

連接方式(type)

連接方式有四種:local 、host、hostssl、hostnossl

local

這條記錄匹配通過 Unix 域套接字進(jìn)行的聯(lián)接企圖, 沒有這種類型的記錄,就不允許 Unix 域套接字的聯(lián)接。

host

這條記錄匹配通過TCP/IP網(wǎng)絡(luò)進(jìn)行的聯(lián)接嘗試.他既匹配通過ssl方式的連接,也匹配通過非ssl方式的連接。

注意:要使用該選項(xiàng)你要在postgresql.conf文件里設(shè)置listen_address選項(xiàng),不在listen_address里的IP地址是無法匹配到的。因?yàn)槟J(rèn)的行為是只在localhost上監(jiān)聽本地連接。

hostssl

這條記錄匹配通過在TCP/IP上進(jìn)行的SSL聯(lián)接企圖。

要使用該選項(xiàng),服務(wù)器編譯時(shí)必須使用--with-openssl選項(xiàng),并且在服務(wù)器啟動(dòng)時(shí)ssl設(shè)置是打開的

hostnossl

這個(gè)和上面的hostssl相反,只匹配通過在TCP/IP上進(jìn)行的非SSL聯(lián)接企圖。


數(shù)據(jù)庫(kù)(database)

聲明記錄所匹配的數(shù)據(jù)庫(kù)。

值 all 表明該記錄匹配所有數(shù)據(jù)庫(kù);

值 sameuser表示如果被請(qǐng)求的數(shù)據(jù)庫(kù)和請(qǐng)求的用戶同名,則匹配;

值samegroup 表示請(qǐng)求的用戶必須是一個(gè)與數(shù)據(jù)庫(kù)同名的組中的成員;

值 replication 表示匹配一條replication連接,它不指定一個(gè)特定的數(shù)據(jù)庫(kù),一般在流復(fù)制中使用;

在其他情況里,這就是一個(gè)特定的 PostgreSQL 數(shù)據(jù)庫(kù)的名字。 我們可以通過用逗號(hào)分隔的方法聲明多個(gè)數(shù)據(jù)庫(kù)。 一個(gè)包含數(shù)據(jù)庫(kù)名的文件可以通過對(duì)該文件前綴 @ 來聲明.該文件必需和 pg_hba.conf 在同一個(gè)目錄。

?

用戶名(user)

為這條記錄聲明所匹配的 PostgreSQL 用戶,值 all 表明它匹配 于所有用戶。否則,它就是特定 PostgreSQL 用戶的名字,多個(gè)用戶名可以通過用逗號(hào)分隔的方法聲明,在名字前面加上+代表匹配該用戶組的所有用戶。一個(gè)包含用戶名的文件可以 通過在文件名前面前綴 @ 來聲明,該文件必需和 pg_hba.conf 在同一個(gè)目錄。

?

主機(jī)地址(address)

指定匹配的客戶端的地址,它可以是一個(gè)主機(jī)名,一個(gè)IP地址范圍,或者下面提到的這些選項(xiàng)。

一個(gè)IP地址范圍是一個(gè)標(biāo)準(zhǔn)的點(diǎn)分十進(jìn)制表示的 IP地址/掩碼值。注意, 在'IP地址','/'和'掩碼值'之間不要有任何的空白字符。

比如對(duì)于IPv4地址來說, 192.168.2.66/32指定單個(gè)主機(jī)的IP,192.168.2.0/24代表一個(gè)小的子網(wǎng)。對(duì)于IPv6地址來說,::1/128指定單個(gè)主機(jī)(這里是本機(jī)環(huán)回地址),fe80::7a31:c1ff:0000:0000/96 指定一個(gè)IPv6的子網(wǎng)。0.0.0.0/0代表所有IPv4地址,::0/0代表所有IPv6地址。

一個(gè)IPv4地址選項(xiàng)只能匹配IPv4地址,一個(gè)IPv6地址選項(xiàng)只能匹配IPv6地址,即使給出的地址選項(xiàng)在IPV4和IPv6中同時(shí)存在。

當(dāng)然你可以使用 all 選項(xiàng)來匹配所有的IP地址,使用 samehost 匹配服務(wù)器自己所有的IP地址,samenet來匹配服務(wù)器直接接入的子網(wǎng)。

如果指定的是主機(jī)名(既不是IP地址也不是上面提到的選項(xiàng)),這個(gè)主機(jī)名將會(huì)和發(fā)起連接請(qǐng)求的客戶端的IP地址的反向名稱解析結(jié)果(即通過客戶端的IP解析其主機(jī)名,比如使用反向DNS查找)進(jìn)行比對(duì),如果存在匹配,再使用正向名稱解析(例如DNS查找)將主機(jī)名解析為IP地址(可能有多個(gè)IP地址),再判斷客戶端的IP地址是否在這些IP地址中。如果正向和反向解析都成功匹配,那么就真正匹配這個(gè)地址(所以在pg_nba.conf文件里的主機(jī)地址必須是客戶端IP的 address-to-name 解析返回的那個(gè)主機(jī)名。一些主機(jī)名數(shù)據(jù)庫(kù)允許將一個(gè)IP地址和多個(gè)主機(jī)名綁定,但是在解析IP地址時(shí),操作系統(tǒng)只會(huì)返回一個(gè)主機(jī)名)。

有些主機(jī)名以點(diǎn)(.)開頭,匹配那些具有相同后綴的主機(jī)名,比如.example.com匹配foo.example.com(當(dāng)然不僅僅只匹配foo.example.com)。

還有,在pg_hba.conf文件中使用主機(jī)名的時(shí)候,你最好能保證主機(jī)名的解析比較快,一個(gè)好的建議就是建立一個(gè)本地的域名解析緩存(比如nscd)。

本選項(xiàng)只能在連接方式是host,hostssl或者h(yuǎn)ostnossl的時(shí)候指定。


ip地址(ip-address)、子網(wǎng)掩碼(ip-mask)

這兩個(gè)字段包含可以看成是標(biāo)準(zhǔn)點(diǎn)分十進(jìn)制表示的 IP地址/掩碼值的一個(gè)替代。例如。使用255.255.255.0 代表一個(gè)24位的子網(wǎng)掩碼。它們倆放在一起,聲明了這條記錄匹配的客戶機(jī)的 IP 地址或者一個(gè)IP地址范圍。本選項(xiàng)只能在連接方式是host,hostssl或者h(yuǎn)ostnossl的時(shí)候指定。

?

認(rèn)證方法(authentication method)

trust

無條件地允許聯(lián)接,這個(gè)方法允許任何可以與PostgreSQL 數(shù)據(jù)庫(kù)聯(lián)接的用戶以他們期望的任意 PostgreSQL 數(shù)據(jù)庫(kù)用戶身份進(jìn)行聯(lián)接,而不需要口令。

reject

聯(lián)接無條件拒絕,常用于從一個(gè)組中"過濾"某些主機(jī)。

md5

要求客戶端提供一個(gè) MD5 加密的口令進(jìn)行認(rèn)證,這個(gè)方法是允許加密口令存儲(chǔ)在pg_shadow里的唯一的一個(gè)方法。

password

和"md5"一樣,但是口令是以明文形式在網(wǎng)絡(luò)上傳遞的,我們不應(yīng)該在不安全的網(wǎng)絡(luò)上使用這個(gè)方式。

gss

使用GSSAPI認(rèn)證用戶,這只適用于 TCP/IP 連接。

sspi

使用SSPI認(rèn)證用戶,這只適用于 Windows 連接。

peer

獲取客戶端的操作系統(tǒng)的用戶名并判斷他是否匹配請(qǐng)求的數(shù)據(jù)庫(kù)名,這只適用于本地連接。

ldap

使用LDAP服務(wù)進(jìn)行驗(yàn)證。

radius

使用RADIUS服務(wù)進(jìn)行驗(yàn)證。

cert

使用SSL服務(wù)進(jìn)行驗(yàn)證。

pam

使用操作系統(tǒng)提供的可插入的認(rèn)證模塊服務(wù) (Pluggable Authentication Modules)(PAM)來認(rèn)證。

?

?

注意:防止數(shù)據(jù)庫(kù)被惡心修改配置文件,需對(duì)pg_hba.conf加i鎖

chattr +i /etc/postgresql/9.6/main/pg_hba.conf ?#禁止任何人修改數(shù)據(jù)庫(kù)認(rèn)證文件

chattr +a ?/data/postgresql ? #禁止任何人修改數(shù)據(jù)目錄權(quán)限

?

2.3數(shù)據(jù)庫(kù)防火墻配置

192.168.2.0/24表示一個(gè)網(wǎng)段

ufw allow from 192.168.2.0/24 to any port 5432

?

?

三、redis安全

1.口令登錄

vim /home/dell/gas/redis/latest/conf/redis.conf

#包含通用配置?

include? conf/redis-common.conf

#綁定IP

bind 0.0.0.0

#監(jiān)聽tcp端口?

port 6379

#最大可用內(nèi)存?

maxmemory 4g

#內(nèi)存耗盡時(shí)采用的淘汰策略:?

# volatile-lru -> remove the key with an expire set using an LRU algorithm?

# allkeys-lru -> remove any key accordingly to the LRU algorithm?

# volatile-random -> remove a random key with an expire set?

# allkeys-random -> remove a random key, any key?

# volatile-ttl -> remove the key with the nearest expire time (minor TTL)?

# noeviction -> don't expire at all, just return an error on write operations?

maxmemory-policy volatile-lru

#aof存儲(chǔ)文件?

#appendfilename "appendonly-6379.aof"?

#rdb文件,只用于動(dòng)態(tài)添加slave過程?

#dbfilename dump-6379.rdb?

#cluster配置文件(啟動(dòng)自動(dòng)生成)?

cluster-config-file nodes-6379.conf

#部署在同一機(jī)器的redis實(shí)例,把<span style="font-size: 1em; line-height: 1.5;">auto-aof-rewrite搓開,防止瞬間fork所有redis進(jìn)程做rewrite,占用大量?jī)?nèi)存</span>?

#auto-aof-rewrite-percentage 80-100

appendonly no

#save 900 1

rename-command FLUSHALL ""??

requirepass asgard@1939? //設(shè)置redis認(rèn)證,目前不支持,需要研發(fā)提供對(duì)應(yīng)的服務(wù)

?

2.2避免端口暴露在網(wǎng)絡(luò)中

vim /home/dell/gas/redis/latest/conf/redis.conf

?

#包含通用配置?

include? conf/redis-common.conf

#綁定IP

bind 127.0.0.1 //注意修改了監(jiān)聽I(yíng)P后,程序中的連接redis IP也需要修改,如arcee,thor,supmylo等

#監(jiān)聽tcp端口?

port 6379

#最大可用內(nèi)存?

maxmemory 4g

#內(nèi)存耗盡時(shí)采用的淘汰策略:?

# volatile-lru -> remove the key with an expire set using an LRU algorithm?

# allkeys-lru -> remove any key accordingly to the LRU algorithm?

# volatile-random -> remove a random key with an expire set?

# allkeys-random -> remove a random key, any key?

# volatile-ttl -> remove the key with the nearest expire time (minor TTL)?

# noeviction -> don't expire at all, just return an error on write operations?

maxmemory-policy volatile-lru

#aof存儲(chǔ)文件?

#appendfilename "appendonly-6379.aof"?

#rdb文件,只用于動(dòng)態(tài)添加slave過程?

#dbfilename dump-6379.rdb?

#cluster配置文件(啟動(dòng)自動(dòng)生成)?

cluster-config-file nodes-6379.conf

#部署在同一機(jī)器的redis實(shí)例,把<span style="font-size: 1em; line-height: 1.5;">auto-aof-rewrite搓開,防止瞬間fork所有redis進(jìn)程做rewrite,占用大量?jī)?nèi)存</span>?

#auto-aof-rewrite-percentage 80-100

appendonly no

#save 900 1

rename-command FLUSHALL ""??

requirepass asgard@1939

?

2.3 重命名關(guān)鍵命令進(jìn)行加固


由于redis沒有做基本的權(quán)限分離,沒有管理賬號(hào)、普通賬戶之分,所以登錄之后無操作權(quán)限限制,因此需要將一些危險(xiǎn)的操作隱藏起來,涉及的命令包括:
FLUSHDB, FLUSHALL, KEYS, PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME, DEBUG, EVAL

修改redis.conf,添加下列命令,禁用高危命令

rename-command FLUSHALL ""

rename-command CONFIG?? ""

rename-command EVAL???? ""

rename-command shutdown???? ""

rename-command FLUSHDB???? ""

?

?

2.4 低權(quán)限賬戶


設(shè)置單獨(dú)的redis賬戶運(yùn)行redis,redis crackit漏洞就利用root用戶的特性來重置authorized_keys從而達(dá)到控制系統(tǒng)主機(jī)的目的,使用普通帳號(hào)運(yùn)行redis可以降低被利用的風(fēng)險(xiǎn),如下:

創(chuàng)建一個(gè)redis賬戶,然后通過該賬戶啟動(dòng)redis,命令如下:

useradd redis -s /sbin/nolgin ?##創(chuàng)建不可登錄的用戶

vim /etc/supervisor/conf.d/redis.conf

[program:redis]

command=/bin/bash sv_start.sh conf/redis.conf

process_name=%(program_name)s

numprocs=1

directory=/home/dell/face/redis/latest

;umask=022

priority=700

autostart=true

autorestart=true

;startsecs=3

startretries=3

exitcodes=0,2

;stopsignal=TERM

stopwaitsecs=5

stopasgroup=true

killasgroup=true

user=redis?? //使用redis用戶啟動(dòng)任務(wù)

redirect_stderr=true

stdout_logfile=/home/dell/data/logs/%(program_name)s.log

stdout_logfile_maxbytes=20MB

stdout_logfile_backups=5

?

supervisorctl update?????? //更新配置

?

?

?

redis附錄:

配置文件中指定redis淘汰策略

redis提供的淘汰策略:

?

noeviction:達(dá)到內(nèi)存限額后返回錯(cuò)誤,客戶嘗試可以導(dǎo)致更多內(nèi)存使用的命令(大部分寫命令,但DEL和一些例外)

allkeys-lru:為了給新增加的數(shù)據(jù)騰出空間,驅(qū)逐鍵先試圖移除一部分最近使用較少的(LRC)。

volatile-lru:為了給新增加的數(shù)據(jù)騰出空間,驅(qū)逐鍵先試圖移除一部分最近使用較少的(LRC),但只限于過期設(shè)置鍵。

allkeys-random: 為了給新增加的數(shù)據(jù)騰出空間,驅(qū)逐任意鍵

volatile-random: 為了給新增加的數(shù)據(jù)騰出空間,驅(qū)逐任意鍵,但只限于有過期設(shè)置的驅(qū)逐鍵。

volatile-ttl: 為了給新增加的數(shù)據(jù)騰出空間,驅(qū)逐鍵只有秘鑰過期設(shè)置,并且首先嘗試縮短存活時(shí)間的驅(qū)逐鍵

?

?

四、防止ddos攻擊

簡(jiǎn)易的防止ddos腳本

?

ufw enable??? //先開啟ufw

vim ddos.sh

#!/bin/bash

head=`netstat -an? | grep ESTABLISHED? |awk? '{print $5}'|awk -F':' '{print $1}' |uniq? -c |sort -nr |head -1`? ##取建立連接做多的IP

head_ip_num=`echo $head|awk? '{print $1}'`? ##取建立連接做多的IP的數(shù)量

head_ip=`echo $head|awk? '{print $2}'`?????????????? ##取建立連接做多的IP

if [[ $head_ip_num -gt 200]]???? ##判斷IP出現(xiàn)次數(shù)有沒有200

then

????? ??ufw deny from $head_ip to any? ##超過200,禁止此IP訪問

else

??????? echo "$head_ip 出現(xiàn)次數(shù)較多請(qǐng)注意"? ##小于200,提醒

fi

?

bash ddos.sh??? ##執(zhí)行腳本

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/pengjihao/p/11092095.html

總結(jié)

以上是生活随笔為你收集整理的Linux安全出版的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。