linux 安全防護


一、禁止ROOT用戶遠程登錄

linux中root用戶是超級管理員,可以針對root用戶暴力破解密碼,這樣很不安全,工作中我們一般禁止root用戶直接遠程登陸,開設一個或多個普通用戶,只允許登陸普通用戶,如果有需要用root用戶,可以su切換root 或者sudo來擁有root權限執行命令。

1、需要編輯/etc/ssh/sshd_config。

vim /etc/ssh/sshd_config

 

2、找到 PermitRootLogin

改為 PermitRootLogin no

 

3、保存退出配置文件后,重啟sshd服務

systemctl restart sshd.service

 

二、設置只有指定用戶組才能使用su命令切換到root用戶

1、新建普通用戶,比如baby

useradd  baby

 

2、修改密碼

passwd baby

 

3、將帳號加入wheel組

usermod -G wheel baby

 

4、設置只允許這個組的帳號,使用su命令切換到root

vi /etc/pam.d/su

找到#auth            required        pam_wheel.so use_uid

去掉行首的注釋符 # 保存退出;

接着vi /etc/login.defs

在最末添加SU_WHEEL_ONLY yes 保存退出即可。

或者執行 

echo "SU_WHEEL_ONLY yes">>/etc/login.defs

 

現在,再建立新的普通帳號,是無法使用su命令切換到root組了。

 

三、對一些關鍵文件進行保護

有時候你發現用root權限都不能修改某個文件,大部分原因是曾經用chattr命令鎖定該文件了。

chattr命令的作用很大,其中一些功能是由Linux內核版本來支持的,不過現在生產絕大部分跑的linux系統都是2.6以上內核了。

通過chattr命令修改屬性能夠提高系統的安全性,但是它並不適合所有的目錄。

chattr命令不能保護/、/dev、/tmp、/var目錄。

lsattr命令是顯示chattr命令設置的文件屬性。

與chmod這個命令相比,chmod只是改變文件的讀寫、執行權限,更底層的屬性控制是由chattr來改變的。

 

1、防止系統中某個關鍵文件被修改

chattr +i /etc/passwd /etc/group /etc/shadow /etc/gshadow

 

如果需要改動時可以使用

chattr -i /etc/passwd /etc/group /etc/shadow /etc/gshadow

 

2、讓某個文件只能往里面追加數據,但不能刪除,適用於各種日志文件

chattr +a /var/log/messages

 

四、設置密碼過期時間、修改間隔時間、到期警告時間

對於新添加的用戶,用戶密碼過期時間是從/etc/login.defs中PASS_MAX_DAYS提取的,普通系統默認就是99999,而安全操作系統4.0是90。更改此處,只是讓新建的用戶默認密碼過期時間變化,已有用戶密碼過期時間仍然不變。

chage [options] user

chage:密碼失效是通過此命令來管理的。

  參數意思:
  -m 密碼可更改的最小天數。為零時代表任何時候都可以更改密碼。
  -M 密碼保持有效的最大天數。
  -W 用戶密碼到期前,提前收到警告信息的天數。
  -E 帳號到期的日期。過了這天,此帳號將不可用。
  -d 上一次更改的日期
  -i 停滯時期。如果一個密碼已過期這些天,那么此帳號將不可用。
  -l 例出當前的設置。由非特權用戶來確定他們的密碼或帳號何時過期。

個人設置的參數:過期時間:90;修改間隔:7;到期警告時間:7

 五、安裝DenyHosts

當你的linux服務器暴露在外網當中時,服務器就極有可能會遭到互聯網上的掃描軟件進行掃描,然后試圖連接ssh端口進行暴力破解(窮舉掃描)。如果遇到這個問題,一款非常有用的工具DenyHosts可以阻止試圖猜測SSH登錄口令。DenyHosts是用Python寫的一個程序,它會分析SSHD的日志文件(Redhat為/var/log/secure等),當發現同一IP在進行多次SSH密碼嘗試時就會記錄IP到/etc/hosts.deny文件,從而達到自動屏蔽該IP的目的。

 

1、檢查安裝環境:

1) 判斷系統安裝的sshd是否支持tcp_wrappers(默認都支持),命令如下:

ldd /usr/sbin/sshd |grep libwrap.so.0

如果有輸出:libwrap.so.0 => /lib64/libwrap.so.0 則為支持

 

2)判斷是否有python(centos默認都有):

python -V

只要系統Python版本不小於2.3版本即可(本機版本為Python 2.6.5)。

 

2、安裝DenyHosts

1)下載DenyHosts-2.6.tar.gz並上傳到服務器,

wget http://imcat.in/down/DenyHosts-2.6.tar.gz

2)安裝

①解壓

tar -zxvf DenyHosts-2.6.tar.gz

②安裝

cd DenyHosts-2.6
python setup.py install

 

程序腳本自動安裝在:/usr/share/denyhosts目錄

庫文件安裝在:/usr/lib/python2.6/site-packages/DenyHosts目錄下

denyhosts.py默認安裝在:/usr/bin/目錄下

 

3)設置啟動腳本

cd /usr/share/denyhosts/
cp daemon-control-dist daemon-control
chown root daemon-control
chmod 700 daemon-control

 

##將denyhosts.cfg-dist中不是以"#"開頭的行,寫入denyhosts.cfg文件

 

grep -v "^#" denyhosts.cfg-dist > denyhosts.cfg

 

編輯denyhosts.cfg

 

vi denyhosts.cfg

 

具體配置項可參考以下的配置:

 

############ THESE SETTINGS ARE REQUIRED ############
            ##分析源文件
            SECURE_LOG = /var/log/secure
            ##禁止sshd登陸的IP存放文件
            HOSTS_DENY = /etc/hosts.deny
            
            ##過多久后清除已經禁止的IP
            PURGE_DENY =  1d
            
            
            ##監控的服務名
            BLOCK_SERVICE  = sshd
            
            ##表示允許無效用戶登錄失敗的次數
            DENY_THRESHOLD_INVALID = 3
            
            ##表示允許普通用戶登錄失敗的次數
            DENY_THRESHOLD_VALID = 3
            
            ##表示允許root用戶登錄失敗的次數
            DENY_THRESHOLD_ROOT = 3
            
            
            DENY_THRESHOLD_RESTRICTED = 1
            
            
            WORK_DIR = /usr/share/denyhosts/data
            
            SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
            
            ##是否做域名反解
            HOSTNAME_LOOKUP=NO
            
            
            LOCK_FILE = /var/lock/subsys/denyhosts

4)將denyhosts添加到系統服務並自動啟動

①自啟動

vi /etc/rc.local 

在末尾添加以下行

/usr/share/denyhosts/daemon-control start

 

 ②添加至系統服務

ln -s /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts
chkconfig --add denyhosts
chkconfig --level 345 denyhosts on

 

5)啟動denyhosts

service denyhosts start

 

6)查看denyhosts是否運行成功

service denyhosts status

顯示:DenyHosts is running with pid = XXXX,即運行成功。

 

7)至此,denyhosts也就配置完成了;此外將sshd的默認端口修改掉,再結合denyhosts可以防止大部分sshd的暴力破解了。

3、將自己的IP加入白名單

如果自己的IP曾經登陸失敗過,並且超過了你配置文件中的閥值,安裝好denyhosts后,只要一登陸, 自己的IP就會被加到/etc/hosts.deny里。所以可以將IP加入白名單hosts.allow,當hosts.allow和 host.deny相沖突時,以hosts.allow設置優化。

加入白名單:

vim /etc/hosts.allow

添加 sshd:127.0.0.1(冒號后跟要加入的IP)

在網上還看到另一種方法,親測可行:https://www.cnblogs.com/jackrebel/p/3935592.html

 

六、禁止系統響應任何從外部/內部來的ping請求

攻擊者一般首先通過ping命令檢測此主機或者IP是否處於活動狀態 ,如果能夠ping通 某個主機或者IP,那么攻擊者就認為此系統處於活動狀態,繼而進行攻擊或破壞。如果沒有人能ping通機器並收到響應,那么就可以大大增強服務器的安全性,linux下可以執行如下設置,禁止ping請求:

修改文件 /etc/sysctl.conf,在文件末尾增加一行:

net.ipv4.icmp_echo_ignore_all = 1

如果已經有 net.ipv4.icmp_echo_ignore_all 這一行了,直接修改 = 號后面的值即可的 0 表示允許,1 表示禁止。

修改完成后執行 sysctl -p 使新配置生效(重要)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM