歡迎光臨
每天分享高質量文章

10招強化Linux安全的技能!!!

來自:阿飛的部落格(微訊號:AfeiJavaer)

1.找出不必要的服務

很明顯,伺服器上跑的服務,並不是每個都有用的。強烈建議檢查並關掉不需要的服務,從而減少風險(多跑一個服務,就可能多幾個漏洞)。

查詢執行在runlevel 3的服務串列:

[afei@afei ~]# /sbin/chkconfig --list |grep '3:on'

關閉指定的服務:

[afei@afei ~]# chkconfig ip6tables off

疑問:為什麼查詢runlevel 3的服務?
Linux系統有7個執行級別(runlevel),分別如下:
runlevel 0:系統停機狀態,系統預設執行級別不能設為0,否則不能正常啟動;
runlevel 1:單使用者工作狀態,root許可權,用於系統維護,禁止遠端登陸;
runlevel 2:多使用者狀態(沒有NFS);
runlevel 3:完全的多使用者狀態(有NFS),登陸後進入控制檯命令列樣式。這個執行級別的服務會啟動httpd,系統提供web server服務,所以主要檢視這個執行級別的服務;
runlevel 4:系統未使用,保留;
runlevel 5:X11控制檯,登陸後進入圖形GUI樣式;
runlevel 6:系統正常關閉並重啟,預設執行級別不能設為6,否則不能正常啟動;

2.檢查監聽的網路埠

透過netstat命名能夠看到所有已經開啟的埠,並且可以看到是哪些程式開啟的。如果發現某些是必須要的,建議關掉:

[afei@afei~]# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address  Foreign Address  State   PID/Program name   
tcp        0      0 0.0.0.0:2181   0.0.0.0:*        LISTEN  48983/java          
tcp        0      0 0.0.0.0:2182   0.0.0.0:*        LISTEN  49051/java  

3.最佳化CRON任務

linux的cron可以執行一些定時任務。並且還可以透過/etc/cron.allow 和 /etc/cron.deny 控制哪些使用者可以執行JOB,哪位使用者禁止執行JOB。例如:
允許使用者afei允許JOB,執行如下命令:

echo afei >> /etc/cron.allow

禁止所有使用者訪問JOB,執行如下命令:

 echo ALL >>/etc/cron.deny

4.限制使用者使用舊密碼

linux使用者的舊密碼儲存在檔案/etc/security/opasswd中:

[root@LAPP-V1159 ~]# cat /etc/security/opasswd
afei:504:4:$1$MVAi/EpJ$iXXkV5r3Hjc8AaK2b5KyQ/,$1$AbpFPYaD$ZKj12lK6qaYUqgQnEdocd0,$1$POabjmzY$F4Cp6aTwN6RRk1KjZWm8A/,$1$LoHe5GHY$QjkLGqABANpLmlQsRB4WE.

檢查是否有開啟限制使用舊密碼,在RHEL / CentOS / Fedora系統中,檢視檔案:/etc/pam.d/system-auth。在Ubuntu/Debian/Linux Mint系統中,檢視檔案:/etc/pam.d/common-password,需要下麵兩行關鍵內容,其中remember=4,表示不能使用最後4次密碼,否則會報錯:Password has been already used. Choose another.:

auth        sufficient    pam_unix.so nullok try_first_pass
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=4

5.檢查密碼過期

密碼的過期屬性可以透過如下命令檢視:

[root@root ~]# chage -l afei
Last password change                    : Sep 142018
Password expires                    : Nov 132018
Password inactive                    : never
Account expires                        : never
Minimum number of days between password change        : 0
Maximum number of days between password change        : 60
Number of days of warning before password expires    : 7

修改密碼的過期屬性可以執行如下命令:

chage -M 60 -W 7  afei
說明:
-M 60表示密碼最大有效期是60天。
-W 7 表示密碼還有7天過期時給出告警提醒。

6.檢查密碼為空的使用者

密碼為空意味著只要知道使用者名稱就能訪問,這非常危險。因為使用者與密碼資訊儲存在檔案/etc/shadow中,且格式如下:

admin:$6$YTSkre3DLd4SAZ$Jy9piv/gPezhLrLzMMeUleV8F5DNjP:17765:0:99:5:::
afei:$6$.vMcyE9ss96$YNk2Q5qiS/SAeGCcyEFsmspkC5dr3OXfnN:17788:0:60:7:::

後面的幾個數字是密碼過期等屬性資訊,上面已經提及。

所以,檢查密碼為空的使用者,只需要執行如下命令即可,如果發現有這樣的使用者,透過root使用者執行passwd username強行修改它的密碼:

cat /etc/shadow | awk -F: '($2==""){print $1}'

7.鎖定&解鎖使用者

和刪除使用者賬戶不一樣,這個只是限制使用者登入。只需要執行如下密碼即可鎖定&解鎖使用者:

[root@root ~]# passwd -l afei
Locking password for user afei.
passwd: Success
[root@root ~]# passwd -u afei
Unlocking password for user afei.
passwd: Success

說明:

  • 引數l表示lock,即鎖定使用者密碼;

  • 引數u表示unlock,即解鎖使用者密碼;

8.關閉IPv6

現在IPv6基本上沒有實際使用,所以我們可以關掉它,在檔案/etc/sysconfig/network中增加如下兩行內容即可:

NETWORKING_IPV6=no
IPV6INIT=no

9.複查日誌

Linux伺服器上很多的行為都會有記錄相應的日誌,簡單列舉一些如下,如果有一些非法操作,就能從這些日誌中造成蛛絲馬跡,例如非法登陸,非法定時任務等:

  • /var/log/message – Where whole system logs or current activity logs are available.

  • /var/log/auth.log – Authentication logs.

  • /var/log/kern.log – Kernel logs.

  • /var/log/cron.log – Crond logs (cron job).

  • /var/log/maillog – Mail server logs.

  • /var/log/boot.log – System boot log.

  • /var/log/mysqld.log – MySQL database server log file.

  • /var/log/secure – Authentication log.

  • /var/log/utmp or /var/log/wtmp : Login records file.

  • /var/log/yum.log: Yum log files.

10.保持系統更新

總是讓系統更新最新發行的補丁包,因為這些補丁包會修複一些BUG:

sudo apt-get upgrade

yum check-update
yum upgrade

參考連結:https://www.tecmint.com/linux-server-hardening-security-tips/


編號602,輸入編號直達本文

●輸入m獲取文章目錄

推薦↓↓↓

駭客技術與網路安全

更多推薦18個技術類微信公眾號

涵蓋:程式人生、演演算法與資料結構、駭客技術與網路安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

贊(0)

分享創造快樂