?
一、服務(wù)相關(guān)命令
systemctl enable 服務(wù)名 #開(kāi)機(jī)自啟動(dòng)
systemctl disable 服務(wù)名 #禁用開(kāi)機(jī)自啟動(dòng)
systemctl stop 服務(wù)名 #停止服務(wù)
systemctl start 服務(wù)名 #啟動(dòng)服務(wù)
systemctl restart 服務(wù)名 #重啟服務(wù)
systemctl status 服務(wù)名 #查看服務(wù)狀態(tài)
service 服務(wù)名 start|stop|restart #啟動(dòng)/停止/重啟 服務(wù)
chkconfig --list #查看啟動(dòng)服務(wù)
systemctl list-unit-files #列出systemd服務(wù)
二、賬號(hào)和口令
查看賬號(hào):
在我們linux系統(tǒng)當(dāng)中,默認(rèn)的情況下,所有的系統(tǒng)上的帳號(hào)與一般身份使用者,還有root的相關(guān)信息, 都是記錄在/etc/passwd這個(gè)文件內(nèi)的。至于個(gè)人的密碼則是記錄在/etc/shadow這個(gè)文件下。 此外,Linux所有的群組名稱都紀(jì)錄在/etc/group內(nèi)!這三個(gè)文件可以說(shuō)是Linux系統(tǒng)里面帳號(hào)、密碼、群組信息的集中地。/etc/passwd文件將每個(gè)用戶的詳細(xì)信息寫為一行,其中包含七個(gè)字段,每個(gè)字段之間用冒號(hào) : 分隔。
使用cat /etc/passwd命令查看系統(tǒng)所有用戶
[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
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
test:x:1000:1000::/home/test:/bin/bash
比如
test:x:1000:1000::/home/test:/bin/bash
字段解釋:
用戶名 (test): 已創(chuàng)建用戶的用戶名,字符長(zhǎng)度 1 個(gè)到 12 個(gè)字符。
密碼(x):代表加密密碼保存在 /etc/shadow 文件中。
用戶ID(1000):代表用戶ID號(hào),每個(gè)用戶都有一個(gè)唯一的ID。UID號(hào)為0是為root用戶保留的,UID號(hào)1到99是為系統(tǒng)用戶保留,UID號(hào)100-999是為系統(tǒng)賬戶和群組保留。
群組ID(1000):代表群組ID號(hào),每個(gè)群組都要有一個(gè)唯一的GID,保存在 /etc/group文件中。
用戶信息(此處為空):代表描述字段,可以用來(lái)描述用戶的信息。
家目錄(/home/test):代表用戶的家目錄。
Shell(/bin/bash):代表用戶使用的 shell 類型。
添加賬號(hào)
useradd 用戶名
禁用或刪除無(wú)用賬號(hào)
#刪除不必要的賬號(hào)。
userdel 用戶名
#鎖定不必要的賬號(hào)。
passwd -l 用戶名
#解鎖必要的賬號(hào)。
passwd -u 用戶名
#給賬戶設(shè)置密碼
passwd 用戶名
檢查特殊賬號(hào)
查看空口令和root權(quán)限賬號(hào),確認(rèn)是否存在異常賬號(hào):
#查看空口令賬號(hào)
awk -F: '($2=="")' /etc/shadow
#查看UID為零的賬號(hào),UID為0就是root權(quán)限賬號(hào)
awk -F: '($3==0)' /etc/passwd
加固空口令賬號(hào):
#給賬戶設(shè)置密碼
passwd 用戶名
確認(rèn)UID為零的賬號(hào)只有root賬號(hào)。
添加口令策略
加強(qiáng)口令的復(fù)雜度等,降低被猜解的可能性。
1.使用命令 vi /etc/login.defs 修改配置文件。
PASS_MAX_DAYS 90 #新建用戶的密碼最長(zhǎng)使用天數(shù)
PASS_MIN_DAYS 0 #新建用戶的密碼最短使用天數(shù)
PASS_WARN_AGE 7 #新建用戶的密碼到期提前提醒天數(shù)
2.使用chage命令修改用戶設(shè)置。
例如:
chage -m 0 -M 30 -E 2000-01-01 -W 7 <用戶名>
表示將此用戶的密碼最長(zhǎng)使用天數(shù)設(shè)為30,最短使用天數(shù)設(shè)為0,密碼2000年1月1日過(guò)期,過(guò)期前七天警告用戶。
3.禁止用戶不能重復(fù)使用最近5次(含5)內(nèi)已使用的密碼。
vi /etc/pam.d/system-auth
在password sufficient這行后面添加remember=5
password sufficient pam_unix.so use_authtok md5 shadow remember=5
4.設(shè)置密碼復(fù)雜程度,允許重試3次,新密碼必須與舊密碼有4位不同,最小位數(shù)6位,大寫字母至少包含2位,小寫字母至少包含3位,特殊字母?jìng)€(gè)數(shù)至少包含1位。
使用pam_pwquality模塊設(shè)置密碼復(fù)雜度。
vi /etc/pam.d/system-auth
找到password requisite pam_pwquality.so這行(centos6是password requisite pam_cracklib這行),在后面添加retry=3 difok=4 minlen=6 ucredit=-2 lcredit=-3 ocrdit=-1
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth required pam_faildelay.so delay=2000000
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 1000 quiet_success
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 1000 quiet
account required pam_permit.so
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= difok=4 minlen=6 ucredit=-2 lcredit=-3 ocrdit=-1
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
-session optional pam_systemd.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
解釋:
retry=3 允許重試3次。
difok=4 新密碼必須與舊密碼有4位不同。
minlen=6 密碼最小位數(shù)。
ucredit=2 密碼包含大寫字母至少2位。
lcredit=-3 密碼包含小寫字母至少3位。
ocrdit=-1 密碼包含特殊字符至少1位。
enforce_for_root 確保即使是root用戶設(shè)置密碼,也應(yīng)強(qiáng)制執(zhí)行復(fù)雜性策略。
5.用戶登錄失敗策略:密碼輸入錯(cuò)誤次數(shù)達(dá)到5次,鎖定賬戶30分鐘。
注意:此項(xiàng)配置只對(duì)控制臺(tái)登錄有效,ssh登錄無(wú)效。
vi /etc/pam.d/system-auth
在第一個(gè)auth行下加入一行
auth required pam_tally2.so onerr=fail deny=5 unlock_time=1800 root_unlock_time=1800 even_deny_root root_unlock_time=1800
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_tally2.so onerr=fail deny=5 unlock_time=1800 root_unlock_time=1800 even_deny_root root_unlock_time=1800
auth required pam_env.so
auth required pam_faildelay.so delay=2000000
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 1000 quiet_success
auth required pam_deny.so
解釋:
onerr=fail 密碼連續(xù)輸入失敗
deny=5 密碼輸入錯(cuò)誤次數(shù)達(dá)到5次
unlock_time=1800 普通賬戶鎖定30分鐘(單位是秒)
even_deny_root 代表包含root用戶
root_unlock_time=1800 root賬戶鎖定30分鐘(單位是秒)
命令:pam_tally2查看被鎖定的用戶
命令:pam_tally2 --reset -u username可以將被鎖定的用戶解鎖
6.限制用戶su
限制能su到root的用戶
使用命令 vi /etc/pam.d/su修改配置文件,在配置文件中添加行。
例如:只允許test組用戶su到root,則添加 auth required pam_wheel.so group=test
7.設(shè)置用戶登錄超時(shí)時(shí)間(閑置時(shí)間)
針對(duì)所有用戶設(shè)置,修改/etc/profile文件。比如設(shè)置超時(shí)時(shí)間為30分鐘。
vi /etc/profile
在文件末尾加上(單位是秒)
#1800秒
export TMOUT=1800
最后刷新配置文件即可生效。
source /etc/profile
三、SSH服務(wù)
Secure Shell最著名的名稱SSH是為遠(yuǎn)程安全地連接IT系統(tǒng)而開(kāi)發(fā)的協(xié)議。SSH的配置文件是/ect/ssh/sshd_config
1.禁止root用戶直接登錄
首先創(chuàng)建普通權(quán)限賬號(hào)并配置密碼,防止無(wú)法遠(yuǎn)程登錄。
使用命令 vi /etc/ssh/sshd_config修改配置文件
找到 # Authentication這行的下面,將PermitRootLogin的值改成no,并保存。
# Authentication:
#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
最后重啟服務(wù)
service sshd restart
2.指定SSH協(xié)議版本(禁用sshv1,使用sshv2)
sshv1是過(guò)時(shí)不安全協(xié)議,已被廢棄。
vi /etc/ssh/sshd_config
在文件中增加以下內(nèi)容
Protocol 2
重啟服務(wù)生效
systemctl restart sshd
3.配置或修改SSH端口號(hào)(默認(rèn)端口號(hào)22)
Port 2026
重啟服務(wù)生效
systemctl restart sshd
4.配置SSH登錄超時(shí)限制
vi /etc/ssh/sshd_config
ClientAliveInterval 120
ClientAliveCountMax 5
重啟服務(wù)生效
systemctl restart sshd
解釋:除了root之外的所有用戶都是120秒登錄超時(shí),自動(dòng)登出。檢測(cè)到5次不活動(dòng)就斷開(kāi)連接。
5.配置SSH遠(yuǎn)程登錄失敗策略
比如:SSH登錄密碼錯(cuò)誤3次,鎖定賬戶3分鐘。
vi /etc/pam.d/sshd
在#%PAM-1.0下添加一行
auth required pam_tally2.so deny=3 unlock_time=180 even_deny_root root_unlock_time300
解釋:
deny=3 密碼輸入錯(cuò)誤次數(shù)達(dá)到3次
unlock_time=180 普通賬戶鎖定3分鐘(單位是秒)
even_deny_root 代表包含root用戶
root_unlock_time=180 root賬戶鎖定3分鐘(單位是秒)
命令:pam_tally2查看被鎖定的用戶
命令:pam_tally2 --reset -u username可以將被鎖定的用戶解鎖
重啟服務(wù)生效
systemctl restart sshd
6.基于公鑰的身份驗(yàn)證
默認(rèn)情況下,啟用公鑰身份驗(yàn)證,但是顯式啟用它會(huì)使其更加可靠。
vi /etc/ssh/sshd_config
PubkeyAuthentication yes
重啟服務(wù)生效
systemctl restart sshd
7.配置公鑰存儲(chǔ)路徑
用戶公鑰文件保存路徑,默認(rèn)為用戶的home目錄下.ssh隱藏文件夾中的authorized_keys,建議更換到其他目錄,防止丟失或者被惡意登陸者在默認(rèn)的這個(gè)路徑中找到篡改。
vi /etc/ssh/sshd_config
AuthorizedKeysFile .ssh/authorized_keys
重啟服務(wù)生效
systemctl restart sshd
比如:配置SSH服務(wù),設(shè)置RSA證書(shū)登錄。
#不允許密碼登錄
PasswordAuthentication no
#不允許root認(rèn)證登錄
PermitRootLogin no
#允許RSA數(shù)字證書(shū)
RSAAuthentication yes
#允許公鑰登錄
PubkeyAuthentication yes
#修改默認(rèn)公鑰存放的位置
AuthorizedKeysFile .ssh/authorized_keys
重啟服務(wù)生效
systemctl restart sshd
8.允許SSH遠(yuǎn)程登錄的用戶
默認(rèn)情況下,系統(tǒng)上創(chuàng)建的所有用戶都可以遠(yuǎn)程登錄。 為所有用戶提供遠(yuǎn)程登錄機(jī)會(huì)不是一個(gè)好的安全習(xí)慣。 我們可以限制指定用戶的登錄。比如:只允許honor這個(gè)用戶使用SSH遠(yuǎn)程登錄,其他用戶不能。
vi /etc/ssh/sshd_config
AllowUsers honor
重啟服務(wù)生效
systemctl restart sshd
9.拒絕SSH遠(yuǎn)程登錄的用戶
限制用戶登錄的另一種方法是通過(guò)指定沒(méi)有權(quán)限使用ssh遠(yuǎn)程登錄的用戶帳戶。 除指定用戶之外的所有其他用戶將具有遠(yuǎn)程訪問(wèn)權(quán)限。
vi /etc/ssh/sshd_config
DenyUser root
重啟服務(wù)生效
systemctl restart sshd
10.限定SSH服務(wù)遠(yuǎn)程登錄IP
默認(rèn)情況下,啟動(dòng)ssh服務(wù)時(shí),它將在所有接口和IP地址上運(yùn)行。 如果系統(tǒng)具有多個(gè)網(wǎng)絡(luò)接口(其中一些接口不安全),則可能會(huì)產(chǎn)生一些安全問(wèn)題。 我們可以限制ssh服務(wù)接口的運(yùn)行。 ssh服務(wù)將不接受來(lái)自其他接口的連接。
vi /etc/ssh/sshd_config
ListenAddress 10.0.0.10
11.啟用嚴(yán)格(強(qiáng)制安全性)模式
StrictMode在ssh服務(wù)器啟動(dòng)之前檢查某些情況。 在ssh守護(hù)程序啟動(dòng)之前,將執(zhí)行ssh密鑰,配置文件所有權(quán),權(quán)限檢查。 如果其中之一失敗,ssh服務(wù)器守護(hù)程序?qū)⒉粫?huì)啟動(dòng)。 嚴(yán)格模式默認(rèn)情況下處于啟用狀態(tài),但通常由系統(tǒng)管理員關(guān)閉。 出于安全原因應(yīng)啟用它。
vi /etc/ssh/sshd_config
StrictMode yes
重啟服務(wù)生效
systemctl restart sshd
12.禁用X11轉(zhuǎn)發(fā)
ssh的最佳功能之一是通過(guò)遠(yuǎn)程連接轉(zhuǎn)發(fā)X11。 對(duì)于某些系統(tǒng)管理員和用戶來(lái)說(shuō),這是非常有用的功能。 但這會(huì)在系統(tǒng)中創(chuàng)建一些安全漏洞。 如果不需要X11轉(zhuǎn)發(fā),請(qǐng)禁用它。
vi /etc/ssh/sshd_config
X11Forwarding no
重啟服務(wù)生效
systemctl restart sshd
13.配置SSH登錄標(biāo)語(yǔ)(Banner信息)
vi /etc/ssh/sshd_config
顯示系統(tǒng)banner信息,如果開(kāi)啟會(huì)在每次登陸時(shí)顯示系統(tǒng)信息,減少惡意登陸者獲取的信息量,防止被惡意利用。
Banner NONE
重啟服務(wù)生效
systemctl restart sshd
14.最多允許密碼錯(cuò)誤次數(shù)(默認(rèn)6次)
vi /etc/ssh/sshd_config
最多登錄嘗試次數(shù),建議值設(shè)置小一點(diǎn),加大暴力破解難度。
MaxAuthTries 3
重啟服務(wù)生效
systemctl restart sshd
15.配置SSHD的PID檔案存放地
vi /etc/ssh/sshd_config
PidFile /var/run/sshd.pid
重啟服務(wù)生效
systemctl restart sshd
16.設(shè)置 root 用戶的計(jì)劃任務(wù)。每天早上 7:50 自動(dòng)開(kāi)啟 ssh 服務(wù),22:50 關(guān)閉;每周六的 7:30 重新啟動(dòng) ssh 服務(wù)。
本質(zhì)是設(shè)置Linux計(jì)劃任務(wù)(定時(shí)任務(wù))
crontab -e
按i鍵進(jìn)入編輯模式,輸入以下內(nèi)容
50 7 * * * /etc/init.d/sshd start
50 22 * * * /etc/init.d/sshd stop
30 7 * * 6 /etc/init.d/sshd start
保存退出,使用命令crontab -l可查看創(chuàng)建的計(jì)劃任務(wù)。
解釋:
crontab [-u username] #省略用戶表表示操作當(dāng)前用戶的crontab
-e #(編輯工作表)
-l #(列出工作表里的命令)
-r #(刪除工作作)
我們用crontab -e進(jìn)入當(dāng)前用戶的工作表編輯,是常見(jiàn)的vim界面,每行是一條命令。
crontab的命令構(gòu)成為:時(shí)間+動(dòng)作,其時(shí)間有分、時(shí)、日、月、周五種,操作符有
* 取值范圍內(nèi)的所有數(shù)字
/ 每過(guò)多少個(gè)數(shù)字
- 從X到Z
, 散列數(shù)字
四、Telnet服務(wù)
telnet協(xié)議是TCP/IP協(xié)議族中的一員,是Internet遠(yuǎn)程登陸服務(wù)的標(biāo)準(zhǔn)協(xié)議和主要方式。它為用戶提供了在本地計(jì)算機(jī)上完成遠(yuǎn)程主機(jī)工作的能力。在終端使用者的電腦上使用telnet程序,用它連接到服務(wù)器。Linux系統(tǒng)默認(rèn)沒(méi)有安裝該服務(wù),Linux系統(tǒng)安裝telnet服務(wù)后,配置文件在/etc/xinetd.d/telent 如果配置文件不存在則自己創(chuàng)建。
1.修改Telnet服務(wù)端口號(hào)
使用命令vi /etc/service找到Telnet,將默認(rèn)23端口號(hào)改成自定義端口號(hào),比如2330。然后使用命令service xinetd restart重啟服務(wù)。
2.禁用Telnet服務(wù)
如果安裝了Telnet服務(wù)需要禁用,可以在配置文件vi /etc/xinetd.d/telent新增一行disable = yes,然后用命令service xinetd restart重啟服務(wù)。
3.限制Telnet用戶連接,單個(gè)IP允許的最大連接數(shù)為1,總的最大連接數(shù)為10。
vi /etc/xinetd.d/telent
1
在配置文件里面輸入如下內(nèi)容
service telnet
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
instances = 10
per_source = 1
}
解釋:
instances:最大連接數(shù),也可賦值為“UNLIMITED”表示不限制。
cps:第一個(gè)參數(shù)表示每秒處理的連接數(shù),第二個(gè)參數(shù)表示如果連接數(shù)超過(guò)第一個(gè)參數(shù)時(shí)暫時(shí)停止連接請(qǐng)求的秒數(shù)。
比如:
cps 100 10
per_source:?jiǎn)蝹€(gè)IP允許的最大連接數(shù)。
五、VSFTPD服務(wù)
vsftpd 是“very secure FTP daemon”的縮寫,安全性是它的一個(gè)最大的特點(diǎn)。vsftpd 是一個(gè) UNIX 類操作系統(tǒng)上運(yùn)行的服務(wù)器的名字,它可以運(yùn)行在諸如 Linux、BSD、Solaris、 HP-UNIX等系統(tǒng)上面,是一個(gè)完全免費(fèi)的、開(kāi)放源代碼的ftp服務(wù)器軟件,支持很多其他的 FTP 服務(wù)器所不支持的特征。比如:非常高的安全性需求、帶寬限制、良好的可伸縮性、可創(chuàng)建虛擬用戶、支持IPv6、速率高等。
1.修改ftp端口
ftp服務(wù)默認(rèn)端口是21,通常情況修改成自定義端口會(huì)更加安全。
第一步:使用命令vi /etc/service找到ftp,將默認(rèn)21端口號(hào)改成自定義端口號(hào),比如8021。
第二步:vi /etc/vsftpd/vsftpd.conf 如果文件中有Listen_port=21,則將21修改為8021,否則添加一行Listen_port=8021,最后重啟服務(wù)service vsftpd restart
2.設(shè)置運(yùn)行 vsftpd 的非特權(quán)系統(tǒng)用戶為 pyftp
vi /etc/vsftpd/vsftpd.conf
在配置文件中添加如下一行代碼
nopriv_user=pyftp
3.限制客戶端連接的端口范圍在 50000-60000
vi /etc/vsftpd/vsftpd.conf
在配置文件中添加如下一行代碼
pasv_min_port=50000
pasv_max_port=60000
4.限制本地用戶登錄活動(dòng)范圍限制在 home 目錄
vi /etc/vsftpd/vsftpd.conf
在配置文件中添加如下一行代碼
chroot_local_user=YES
5.禁止指定用戶登錄ftp
vsftpd服務(wù)通過(guò)配置文件/etc/vsftpd/ftpusers限制用戶ftp連接服務(wù)器。在該文件中的用戶都不能通過(guò)ftp登錄服務(wù)器。每個(gè)被限制的用戶名各占一行,該文件一般只能通過(guò)root用戶維護(hù)。
如果用戶名包含在該文件中,那么這個(gè)用戶使用ftp連接服務(wù)器時(shí),一般會(huì)報(bào)錯(cuò)User xxxxx access denied。為了讓某用戶能夠通過(guò)ftp連接服務(wù)器,可以在/etc/vsftpd/ftpusers文件中注釋掉或者刪除該用戶名。
[root@localhost vsftpd]# cat /etc/vsftpd/ftpusers
# Users that are not allowed to login via ftp 以下用戶不能登錄ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
news
uucp
operator
games
nobody
6.vsftpd禁止匿名用戶登錄
vi /etc/vsftpd/vsftpd.conf
在配置文件中添加如下一行代碼
anonymous_enable=NO
7.vsftpd禁止匿名用戶上傳
vi /etc/vsftpd/vsftpd.conf
在配置文件中添加如下一行代碼
anon_upload_enable=NO
8.vsftpd禁止匿名用戶創(chuàng)建目錄的權(quán)限
vi /etc/vsftpd/vsftpd.conf
在配置文件中添加如下一行代碼
anon_mkdir_write_enable=NO
9.vsftpd禁止匿名用戶刪除和重命名的權(quán)限
vi /etc/vsftpd/vsftpd.conf
在配置文件中添加如下一行代碼
anon_other_write_enable=NO
10.vsftpd設(shè)置匿名用戶掩碼(設(shè)置本地用戶創(chuàng)建文件的權(quán)限)
如umask是022,這時(shí)創(chuàng)建一個(gè)權(quán)限為666的文件,文件的實(shí)際權(quán)限為666-022=644
vi /etc/vsftpd/vsftpd.conf
在配置文件中添加如下一行代碼
anon_umask=022
11.vsftpd設(shè)置無(wú)任何操作的超時(shí)時(shí)間為5分鐘
vi /etc/vsftpd/vsftpd.conf
在配置文件中添加如下一行代碼
#單位是秒
data_connection_timeout=300
拓展:
主動(dòng)模式連接超時(shí)時(shí)長(zhǎng),單位為秒 connect_timeout=300
被動(dòng)模式連接超時(shí)時(shí)長(zhǎng),單位為秒 accept_timeout=300
數(shù)據(jù)連接無(wú)數(shù)據(jù)超時(shí)時(shí)長(zhǎng),單位為秒 data_connection_timeout=300
無(wú)命令操作超時(shí)時(shí)長(zhǎng),單位為秒idle_session_timeout=300
12.vsftpd設(shè)置匿名用戶訪問(wèn)的最大傳輸速率為512KB/S
vi /etc/vsftpd/vsftpd.conf
在配置文件中添加如下一行代碼
anon_max_rate=512000
13.vsftpd設(shè)置用戶訪問(wèn)的最大傳輸速率為1M
vi /etc/vsftpd/vsftpd.conf
在配置文件中添加如下一行代碼
local_max_rate=1000000
六、HTTPD(Apache)服務(wù)
Apache HTTP Server(簡(jiǎn)稱Apache)是Apache軟件基金會(huì)的一個(gè)開(kāi)放源碼的Web服務(wù)器軟件。Linux安裝httpd服務(wù)后,配置文件在/etc/httpd/conf/httpd.conf
注:配置文件的修改都需要重啟服務(wù)才會(huì)生效。
1.更改默認(rèn)監(jiān)聽(tīng)端口為6666
httpd服務(wù)默認(rèn)端口是80
vi /etc/httpd/conf/httpd.conf
Listen 6666
2.設(shè)置禁止目錄瀏覽
vi /etc/httpd/conf/httpd.conf
找到配置文件中Options Indexes FollowSymLinks將Indexes刪除
Options FollowSymLinks
Indexes表示若當(dāng)前目錄沒(méi)有index.html就會(huì)顯示目錄結(jié)構(gòu)。
3.隱藏Apache版本號(hào)
vi /etc/httpd/conf/httpd.conf
添加如下代碼
#隱藏Apache版本號(hào)
ServerTokens Prod
#隱藏操作系統(tǒng)版本信息
ServerSignature OFF
4.將Apache服務(wù)降權(quán),用戶為apache,用戶組為www
vi /etc/httpd/conf/httpd.conf
修改成如下
User apache
Group www
如果要修改網(wǎng)站的httpd服務(wù)為root權(quán)限
User root
Group root
5.設(shè)置HTTP服務(wù),修改網(wǎng)站的配置文件,配置滾動(dòng)日志按天記錄網(wǎng)站的訪問(wèn)日志和錯(cuò)誤日志
rotatelogs是apache自帶的日志按日期生成的模塊。
[root@localhost httpd]# find / -name rotatelogs
/usr/sbin/rotatelogs
vi /etc/httpd/conf/httpd.conf
修改成如下
#ErrorLog logs/error_log #注釋此行,添加下面這行
ErrorLog "|/usr/sbin/rotatelogs /var/log/httpd/error_log%Y%m%d.log 86400 480"
#CustomLog logs/access_log common
#CustomLog "logs/access_log" combined
#注釋上面兩行,添加下面這行
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/access_log%Y%m%d.log 86400 480" common
七、BIND服務(wù)
bind服務(wù)是全球范圍內(nèi)使用最廣泛、最安全可靠且高效的域名解析(DNS)服務(wù)程序。
主配置文件/etc/named.conf:有效的參數(shù)用來(lái)定義bind服務(wù)程序的運(yùn)行
區(qū)域配置文件/etc/named.rfc1912.zones:用來(lái)保存域名和IP地址對(duì)應(yīng)關(guān)系的所在文件路徑,當(dāng)需要查看和修改時(shí),可根據(jù)這個(gè)位置找到相關(guān)文件。在這個(gè)文件中并沒(méi)有包含具體的域名、IP地址對(duì)應(yīng)關(guān)系等信息。
數(shù)據(jù)配置文件目錄/var/named:該目錄用來(lái)保存域名和IP地址真實(shí)對(duì)應(yīng)關(guān)系的數(shù)據(jù)配置文件。
1. 隱藏bind版本號(hào)
vi /etc/named.conf
在配置文件中添加如下代碼
options {
directory "/var/named";
version "[no about your business]";
};
2. 設(shè)置不提供遞歸服務(wù)
vi /etc/named.conf
在配置文件中添加如下代碼
options {
allow-recursion { none; };
};
八、文件系統(tǒng)
1.設(shè)置umask值
設(shè)置默認(rèn)的umask值,增強(qiáng)安全性。
vi /etc/profile
添加行,
umask 027
即新創(chuàng)建的文件屬主擁有讀寫執(zhí)行權(quán)限,同組用戶擁有讀和執(zhí)行權(quán)限,其他用戶無(wú)權(quán)限。
九、防火墻策略
保障數(shù)據(jù)的安全性是繼保障數(shù)據(jù)的可用性之后最為重要的一項(xiàng)工作。防火墻作為公網(wǎng)與內(nèi)網(wǎng)之間的保護(hù)屏障,在保障數(shù)據(jù)的安全性方面起著至關(guān)重要的作用。舊版本Linux操作系統(tǒng)防火墻命令用iptables,RHEL 7/8 中新增的firewalld命令。
iptables 服務(wù)把用于處理或過(guò)濾流量的策略條目稱之為規(guī)則,多條規(guī)則可以組成一個(gè)規(guī)則鏈,而規(guī)則鏈則依據(jù)數(shù)據(jù)包處理位置的不同進(jìn)行分類:
在進(jìn)行路由選擇前處理數(shù)據(jù)包(PREROUTING)
處理流入的數(shù)據(jù)包(INPUT)
處理流出的數(shù)據(jù)包(OUTPUT)
處理轉(zhuǎn)發(fā)的數(shù)據(jù)包(FORWARD)
在進(jìn)行路由選擇后處理數(shù)據(jù)包(POSTROUTING)
處理匹配流量動(dòng)作:
ACCEPT(允許流量通過(guò))
REJECT(拒絕流量通過(guò))
LOG(記錄日志信息)
DROP(拒絕流量通過(guò))
注意:
DROP 是直接將流量丟棄而且不響應(yīng);REJECT 則會(huì)在拒絕流量后再回復(fù)一條“信息已經(jīng)收到,但是被扔掉了”信息,從而讓流量發(fā)送方清晰地看到數(shù)據(jù)被拒絕的響應(yīng)信息。
防火墻策略規(guī)則是按照從上到下的順序匹配的,因此一定要把允許動(dòng)作放到拒絕動(dòng)作前面,否則所有的流量就將被拒絕掉,從而導(dǎo)致任何主機(jī)都無(wú)法訪問(wèn)我們的服務(wù)。
iptables中常用的參數(shù)以及作用:
參數(shù) 作用
-P 設(shè)置默認(rèn)策略
-F 清空規(guī)則鏈
-L 查看規(guī)則鏈
-A 在規(guī)則鏈的末尾加入新規(guī)則
-I num 在規(guī)則鏈的頭部加入新規(guī)則
-D num 刪除某一條規(guī)則
-s 匹配來(lái)源地址 IP/MASK,加嘆號(hào)“!”表示除這個(gè) IP 外
-d 匹配目標(biāo)地址
-i 網(wǎng)卡名稱 匹配從這塊網(wǎng)卡流入的數(shù)據(jù)
-o 網(wǎng)卡名稱 匹配從這塊網(wǎng)卡流出的數(shù)據(jù)
-p 匹配協(xié)議,如 TCP、UDP、ICMP
- -dport num 匹配目標(biāo)端口號(hào)
- -sport num 匹配來(lái)源端口號(hào)
1.Linux系統(tǒng)使用iptables禁用23端口
iptables -A INPUT -p tcp --dport 23 -j DROP
iptables -A INPUT -p udp --dport 23 -j DROP
2.Linux系統(tǒng)使用iptables禁止別人ping通
直接丟棄 icmp 的請(qǐng)求包
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
3.為防止Nmap掃描軟件探測(cè)到關(guān)鍵信息,設(shè)置iptables防火墻策略對(duì)3306號(hào)端口進(jìn)行流量處理
iptables -A INPUT -s 172.16.1.1 -p 3306 -j DROP
4.為防止SSH服務(wù)被暴力枚舉,設(shè)置iptables防火墻策略僅允許172.16.10.0/24網(wǎng)段內(nèi)的主機(jī)通過(guò)SSH連接本機(jī)
iptables –A INPUT –p tcp –dport 22 –s 172.16.10.0/24 –j ACCEPT
iptables –A INPUT –p tcp –dport 22 -j DROP
5.為防御IP碎片攻擊,設(shè)置iptables防火墻策略限制IP碎片的數(shù)量,僅允許每秒處理1000個(gè)數(shù)據(jù)包
iptables -A FORWARD -f -m limit --limit 1000/s --limit-burst 1000 -j ACCEPT
6.設(shè)置防火墻允許本機(jī)轉(zhuǎn)發(fā)除ICMP協(xié)議以外的所有數(shù)據(jù)包
iptables -A FORWARD -p ! icmp -j ACCEPT
7.為防御拒絕服務(wù)攻擊,設(shè)置iptables防火墻策略對(duì)傳入的流量進(jìn)行過(guò)濾,限制每分鐘允許3個(gè)包傳入,并將瞬間流量設(shè)定為一次最多處理6個(gè)數(shù)據(jù)包(超過(guò)上限的網(wǎng)絡(luò)數(shù)據(jù)包將丟棄不予處理)
iptables -A INPUT -m limit --limit 3/minute --limit-burst 6 -j ACCEPT
8.只允許轉(zhuǎn)發(fā)來(lái)自172.16.0.0/24局域網(wǎng)段的DNS解析請(qǐng)求數(shù)據(jù)包。
iptables -A FORWARD -s 172.16.0.0/24 -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -d 172.16.0.0/24 -p udp --sport 53 -j ACCEPT
9.禁止轉(zhuǎn)發(fā)來(lái)自mac地址為29:0E:29:27:65:EF主機(jī)的數(shù)據(jù)包
iptables -A FORWARD -m mac --mac-source 29:0E:29:27:65:EF -j DROP
10.禁止本機(jī)ping任何機(jī)器
直接丟棄流出icpm數(shù)據(jù)包
iptables -A OUTPUT -p icmp --icmp-type echo-request -j DROP
11.在工作時(shí)間,即周一到周五的8:30-18:00,開(kāi)放本機(jī)的ftp給192.168.1.0/24網(wǎng)絡(luò)中的主機(jī)訪問(wèn)
iptables -A INPUT -p tcp --dport 21 -s 192.168.1.0/24 -m time --weekdays 1,2,3,4,5 --timestart 08:30 --timestop 18:00 -j ACCEPT
12.設(shè)置防火墻允許本機(jī)對(duì)外開(kāi)放TCP端口21以及被動(dòng)模式FTP端口1250-1280
iptables -A INPUT -p tcp -m multiport --dport 21,1250:1280 -j ACCEPT
13.禁止轉(zhuǎn)發(fā)源IP地址為192.168.1.20-192.168.1.99的TCP數(shù)據(jù)包
iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP
14.拒絕TCP標(biāo)志位全部為1及全部為0的報(bào)文訪問(wèn)本機(jī)
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
iptables -A OUTPUT -p tcp --tcp-flags ALL NONE -j DROP
15.配置iptables防火墻過(guò)濾規(guī)則,以封堵目標(biāo)網(wǎng)段(172.16.1.0/24),并在兩小時(shí)后解除封鎖
iptables -I INPUT -s 172.16.1.0/24 -j DROP
iptables -I FORWARD -s 172.16.1.0/24 -j DROP
at now +2 hours
at> iptables -D INPUT 1
at> iptables -D FORWARD 1
16.在工作時(shí)間,即周一到周五的8:30-18:00,開(kāi)放本機(jī)的ftp服務(wù)給 192.168.1.0網(wǎng)絡(luò)中的主機(jī)訪問(wèn)要求從ftp服務(wù)的數(shù)據(jù)下載請(qǐng)求次數(shù)每分鐘不得超過(guò) 5 個(gè)
iptables -A INPUT -s 172.16.0.0/16 -d 192.168.1.111 -p tcp --dport 21 -m time --timestart 8:30 --timestop 18:00 --weekdays 1,2,3,4,5 -m connlimit --connlimit-upto 5 -j ACCEPT
17.拒絕訪問(wèn)防火墻的新數(shù)據(jù)包,但允許響應(yīng)連接或與已有連接相關(guān)的數(shù)據(jù)包
iptables -A INPUT -p tcp -m state --state NEW -j DROP
iptables -A INPUT -p tcp -m state --state ESTABLSHED,RELATED -j ACCEPT
十、MySQL數(shù)據(jù)庫(kù)安全策略
Mysql基礎(chǔ)命令
1.root用戶登錄
mysql -u root -p
2.查看所有數(shù)據(jù)庫(kù)
show databases;
3.使用某個(gè)數(shù)據(jù)庫(kù)
use 數(shù)據(jù)庫(kù)名;
4.查看表(前提是先進(jìn)入某個(gè)數(shù)據(jù)庫(kù))
show tables;
5.查看表結(jié)構(gòu)
describe 表名;
6.刪除某個(gè)數(shù)據(jù)庫(kù)
drop database 數(shù)據(jù)庫(kù)名;
7.新建Mysql用戶
create user '用戶名'@'localhost' identified by '密碼';
8.查看Mysql用戶表
select user,host from mysql.user;
9.刪除Mysql用戶
drop user '用戶名'@'localhost';
10.刷新權(quán)限(例如你改了某個(gè)用戶密碼或者設(shè)置某些權(quán)限可以刷新)
flush privileges;
11.查找某表中的所有記錄(表在數(shù)據(jù)庫(kù)庫(kù)中)
select * from 表名;
12.創(chuàng)建數(shù)據(jù)庫(kù)(數(shù)據(jù)庫(kù)不存在則創(chuàng)建)
create database if not exists 數(shù)據(jù)庫(kù)名稱;
例題:
1.以普通帳戶mysql安全運(yùn)行mysql服務(wù),禁止mysql以管理員帳號(hào)權(quán)限運(yùn)行
在 /etc/my.cnf 配置文件中進(jìn)行設(shè)置
vi /etc/my.cnf
1
[mysql.server]
user=mysql
2.刪除默認(rèn)數(shù)據(jù)庫(kù)(test)
drop database test
3.改變默認(rèn)mysql管理員用戶為:SuperRoot
update user set user="SuperRoot" where user="root";
4.使用mysql內(nèi)置MD5加密函數(shù)加密用戶user1的密碼為(P@ssw0rd1!)
update user set password=md5(password) where user="user1";
十一、Nginx安全策略
Nginx (engine x) 是一個(gè)高性能的HTTP和反向代理web服務(wù)器,同時(shí)也提供了IMAP/POP3/SMTP服務(wù)。
/etc/nginx/nginx.conf 安裝后默認(rèn)配置文件的路徑
/usr/share/nginx/html nginx網(wǎng)站默認(rèn)存放目錄
/usr/share/nginx/html/index.html 網(wǎng)站默認(rèn)主頁(yè)路徑
1.禁止目錄瀏覽和隱藏服務(wù)器版本和信息顯示
vi /etc/nginx/nginx.conf
添加如下代碼
server tokens off;
2.限制 HTTP 請(qǐng)求方式,只允許 GET、HEAD、POST
vi /etc/nginx/conf.d/default.conf
添加如下代碼
server {
if ($request_method !~ ^(GET|HEAD|POST)$){
return 501;
}
}
3.設(shè)置客戶端請(qǐng)求主體讀取超時(shí)時(shí)間為 10
vi /etc/nginx/nginx.conf
添加如下代碼
client_body_timeout 10;
4.設(shè)置客戶端請(qǐng)求頭讀取超時(shí)時(shí)間為 10
vi /etc/nginx/nginx.conf
添加如下代碼
client_header_timeout 10;
5.將 Nginx 服務(wù)降權(quán),使用 www 用戶啟動(dòng)服務(wù)
vi /etc/nginx/nginx.conf
添加如下代碼
user www www;