天天看點

【系統優化】新裝Linux系統注意事項增加系統安全

1、系統安裝最小化

1)根據經驗,選擇安裝包時應該按最小化原則,即不需要的或者不确定是否需要的就不安裝,這樣可以最大程度上確定系統安全。

2)如果安裝過程落了部分包組或者其他夥伴安裝時沒選,再安裝後可以按如下方式補上安裝時未安裝的包組:

yum groupinstall "Compatibility libraries" "Base" "Development tools"

yum groupinstall "debugging Tools" "Dial-up Networking Support"

可以通過yum groupinfo 包組檢視具體安裝的元件。

注意:不要使用yum的删除功能删除軟體,會删除相關依賴,導緻意外問題。

3) 安裝系統補裝工具指令

安裝系統後還會有一些基本的工具沒裝,這時可以根據需求yum來安裝下,啥時用啥時裝也可。例如:

yum install tree nmap sysstat lrzsz dos2unix -y

如果需要更新更新檔則執行

yum update

2、系統權限最小化

linux/unix是一個多使用者、多任務的作業系統。

超級管理者(root): root預設在unix/linux作業系統中擁有最高的管理權限。比喻:皇帝。

普通使用者:管理者或者具備管理權限的使用者建立的。權限:系統管理僅可以讀、看,不能增、删、改。

權限越大,責任越大。

可使用如下指令添加一個普通使用者賬号,并為其設定密碼:

[[email protected] ~]# useradd luffy

[[email protected] oldboy ~]# passwd luffy ###問你新的密碼,然後你輸入 互動設定密碼

Changing password for user luffy.

New password:

BAD PASSWORD: it is too simplistic/systematic #ç提示密碼太簡單了,但可以不理會。

BAD PASSWORD: is too simple

Retype new password:

passwd: all authentication tokens updated successfully.

提示:

非互動式設定密碼:還可通過下面的指令一步到位地設定密碼(其中,luffy為使用者名,密碼為123456)。

echo "123456"|passwd --stdin luffy && history -c

嘗試切換使用者角色,指令如下:

[[email protected] oldboy ~]# su - luffy <==由root管理者,切換到普通使用者luffy

[[email protected] oldboy ~]whoami<==檢視目前使用者是什麼luffy[[email protected] ] su - root <==切回到root使用者

Password:

說明:

1)超級使用者root切換到普通使用者下面,無需輸入對應使用者密碼,這相當于“皇帝”去“大臣”家裡。

2)普通使用者切換到root或其他普通使用者下,需要輸入切換的對應使用者密碼。

3)普通使用者的權限比較小,隻能進行基本的系統資訊檢視等操作,無法更改系統配置和管理服務。

4)符号是普通使用者的指令行提示符,#符号是超級管理者的提示符。示例如下: [[email protected] oldboy ~] #普通使用者luffy對應的提示符

[[email protected] oldboy ~]# #超級管理者root對應的提示符

5)提示符@前面的字元代表目前使用者(可用whoami查詢),後面的為主機名(可用hostname查詢),~所在的位置是視窗目前使用者所在的路徑。示例如下:

[[email protected] oldboy ~]#luffy為目前使用者,Oldboy為主機名,~表示目前目錄,即家目錄。 6)Linux指令提示符由PS1環境變量控制。示例如下: [[email protected] oldboy ~]# echoPS1

[\[email protected]\h \W]$

這裡的PS1='[\[email protected]\h \W]′,可以通過全局變量配置/etc/profile檔案調整PS1=′[\[email protected]\h\W\t] '。

注意:PS1必須大寫的。

參數 含義

\d 代表日期,格式為weekday month date。

\H 完整的主機名稱。

\h 僅取主機的第一個名字。

\t 顯示時間為24小時格式,如HHMMSS。

\T 顯示時間為12小時格式。

\A 顯示時間為24小時格式HHMM。

\u 目前使用者的賬号名稱。

\v BASH的版本資訊。

\w 完整的工作目錄名稱。家目錄會以~顯示

\W 利用basename取得工作目錄名稱,是以隻會列出最後一個目錄

\# 下達的第幾個指令

$ 提示字元,如果是root時,提示符為# ,普通使用者則為變量(放東西檢視變量的内容)PS1−−−變量的名字−−−−−−藏經閣裡面的武功秘籍(葵花寶典)秘籍名字(書名)PS1---檢視變量裡面的内容---手端着書(葵花寶典) 看書的内容(讀書) PS1=新的内容 ---向變量裡面放入東西----修改書的内容(更新書) 欲練此功,必先自宮,若不自宮,也能成功。 linux變量名字(書名)大寫的一般是自己用(linux環境變量),在哪裡都可以用的變量

3、關閉SELinux       

SELinux(Security-Enhanced Linux)是美國國家安全局(NSA)對于強制通路控制的實作,這個功能讓系統管理者又愛又恨,這裡我們還是把它給關閉了吧,至于安全問題,後面通過其他手段來解決,這也是大多數生産環境的做法,如果非要開啟也是可以的。

關閉方式如下

永久關閉selinux

# 備份

cp /etc/selinux/config /etc/selinux/config.bak

# sed修改,看看結果,不加-i

sed 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

# 确認并使用 sed -i 修改檔案内容

sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

# 檢查結果

grep "disabled" /etc/selinux/config

臨時關閉selinux

setenforce 0

# 數字0表示Permissive,即給出警告提示,但不會阻止操作,相當于disabled。

# 數字1表示Enforcing,即表示SElinux為開啟狀态。

getenforce # 檢視指令

指令說明:

setenforce:用于指令行管理SELinux的級别,後面的數字表示設定對應的級别。

getenforce:檢視SELinux目前的級别狀态。

提示:修改配置SElinux後,要想使其生效,必須要重新開機系統。是以,可配合使用setenforce 0這個臨時使其關閉的指令,這樣在重新開機前後都可以使得SElinux關閉生效了,也就是說無須立刻重新開機伺服器了,在生産場景下Linux機器是不能随意重新開機的(不要給自己找任何理由重新開機)。

4、關閉iptables(C6)或Firewalld(C7)防火牆

關閉防火牆的目的是為了讓初學者學習更友善,将來在學了iptables技術後可再統一開啟。 在企業環境中,一般隻有配置外網IP的linux伺服器才需要開啟防火牆,但即使是有外網IP,對于高并發高流量的業務伺服器仍是不能開的,因為會有較大性能損失,導緻網站通路很慢,這種情況下隻能在前端加更好的硬體防火牆了。 關閉防火牆的具體操作過程如下:

CentOS 6.x

關閉防火牆

[[email protected] ~]# /etc/init.d/iptables stop 

[[email protected] ~]# /etc/init.d/iptables stop #<==重複執行下确認已關閉。

檢視是否關閉

[[email protected] ~]# /etc/init.d/iptables status 

iptables: Firewall is not running.

關閉開機自啟動指令,前面已經關閉這裡就無需執行。

[[email protected] ~]# chkconfig iptables off 

[[email protected] ~]# chkconfig --list|grep ipt

iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off

CentOS7.x

關閉防火牆

[[email protected] ~]# systemctl stop firewalld

關閉開機自啟動

[[email protected] ~]# systemctl disable firewalld

檢視防火牆狀态

[[email protected] ~]# systemctl is-active firewalld #是否正在運作

[[email protected] ~]# systemctl is-enabled firewalld #是否開機自啟動

關閉NetworkManager

[[email protected] ~]# systemctl stop NetworkManager

[[email protected] ~]# systemctl disable NetworkManager

【系統優化】新裝Linux系統注意事項增加系統安全

5、更改SSH遠端預設的22端口

sed -i 's#\#Port 22#Port 7777#g' /etc/ssh/sshd_config

service sshd restart

6、使用國内鏡像做yum源

預設國外的yum源(軟體倉庫)比較慢,是以換成國内的。

備份

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下載下傳新的CentOS-Base.repo 到/etc/yum.repos.d/

CentOS 5

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo

或者

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo

CentOS 6

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

或者

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

CentOS 7

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

或者

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

之後運作yum makecache生成緩存,此步驟可以不執行。

7、epel源的安裝

備份(如有配置其他epel源)

mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup

mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup

下載下傳新repo 到/etc/yum.repos.d/

epel(RHEL 7)

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

epel(RHEL 6)

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

epel(RHEL 5)

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-5.repo

更換檢視幫助的網站mirrors.aliyun.com

8、關于網絡下載下傳指令

curl

在Linux中curl是一個利用URL規則在指令行下工作的檔案傳輸工具,可以說是一款很強大的http指令行工具。它支援檔案的上傳和下載下傳,是綜合傳輸工具,但按傳統,習慣稱url為下載下傳工具。

常用參數

-o --output,把輸出寫到該檔案中

-O --remote-name,把輸出寫到該檔案中,保留遠端檔案的檔案名

-I --head,隻顯示傳輸文檔,經常用于測試連接配接本身

-s --silent,靜默模式,不輸出任何東西

-T --upload-file,上傳檔案

-V --version,顯示版本資訊

-f --fail,隻輸出錯誤資訊

-# --progress-bar,用進度條顯示目前的傳送狀态

-H --header,自定義标題傳遞到伺服器

-v --verbose,詳細顯示請求封包結構和響應封包結構資訊

wget 主要用于下載下傳檔案

wget支援HTTP,HTTPS和FTP協定,可以使用HTTP代理。所謂的自動下載下傳是指,wget可以在使用者退出系統的之後在背景執行。這意味這你可以登入系統,啟動一個wget下載下傳任務,然後退出系統,wget将在背景執行直到任務完成

wget 可以跟蹤HTML頁面上的連結依次下載下傳來建立遠端伺服器的本地版本,完全重建原始站點的目錄結構。這又常被稱作”遞歸下載下傳”。

常用參數

-V --version,顯示 Wget 的版本資訊并退出。

-h --help,列印此幫助。

-b --background,啟動後轉入背景。

-O --output-document=FILE,将文檔寫入 FILE。

-q --quiet,安靜模式(無資訊輸出)。

-v --verbose,詳盡的輸出(此為預設值)。

9、安裝常用軟體

為了使用友善,可以安裝一些常用的軟體。

yum -y install tree nmap sysstat lrzsz dos2unix telnet bash-completion bash-completion-extras vim nc lsof net-tools rsync

10、更新具有典型漏洞的軟體版本

諸如openssl、openssh、bash爆出很多軟體漏洞,在企業場景需要進行修複漏洞操作,步驟如下:

首先檢視相關軟體的版本号。

[[email protected] ~]# rpm -qa openssl openssh bash

openssl-1.0.1e-30.el6.x86_64

bash-4.1.2-29.el6.x86_64

openssh-5.3p1-104.el6.x86_64

執行更新已知漏洞的軟體版本到最新,指令如下:

[[email protected] ~]# yum install openssl openssh bash -y

[[email protected] ~]# rpm -qa openssl openssh bash

openssh-5.3p1-104.el6_6.1.x86_64

bash-4.1.2-29.el6.x86_64

openssl-1.0.1e-30.el6_6.5.x86_64

11、時間同步

echo '#Timing synchronization time' >/var/spool/cron/root

echo '*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null' >/var/spool/cron/root

crontab -l

12、加大檔案描述

echo '* - nofile 65535 ' >>/etc/security/limits.conf 

tail -1 /etc/security/limits.conf

13、别名和環境變量優化

cat>>/etc/profile.d/color.sh<<EOF

alias ll='ls -l --color=auto --time-style=long-iso'

PS1='

\e[32;1m

[\[email protected]\h \W]$

\e[0m

'

export HISTTIMEFORMAT='%F-%T '

EOF

14、核心優化

cat >>/etc/sysctl.conf<<EOF

net.ipv4.tcp_fin_timeout = 2

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_keepalive_time = 600

net.ipv4.ip_local_port_range = 4000 65000

net.ipv4.tcp_max_syn_backlog = 16384

net.ipv4.tcp_max_tw_buckets = 36000

net.ipv4.route.gc_timeout = 100

net.ipv4.tcp_syn_retries = 1

net.ipv4.tcp_synack_retries = 1

net.core.somaxconn = 16384

net.core.netdev_max_backlog = 16384

net.ipv4.tcp_max_orphans = 16384

EOF

sysctl -p

15、修改主機名和IP腳本

[[email protected] ~]# cat /server/scripts/hostname_ip.sh 

#!/usr/bin/sh

if [ # -ne 2 ];then   echo "/bin/sh0 hostname PartIP"

exit 1

fi

hostnamectl set-hostname $1

sed -i "s#100#$2#g" /etc/sysconfig/network-scripts/ifcfg-eth[01]

systemctl restart network

16、更改Linux特殊變量

臨時生效:

export TMOUT=10        賬号逾時時間控制台變量(類似于Windows的鎖屏)

export HISTSIZE=5          指令行曆史記錄數量(曆史記錄越少越好)

export HISTFILESIZE=5   指令行指令對應檔案的記錄數~/.bash_history

永久生效:

echo 'export TMOUT=300' >>/etc/profile

echo 'export HISTSIZE=5' >>/etc/profile

echo 'export HISTFILESIZE=5' >>/etc/profile

source /etc/profile

17、隐藏Linux版本資訊

cat /etc/issue

>/etc/issue

>/etc/issue.net

這時候就沒有任何版本資訊了

【系統優化】新裝Linux系統注意事項增加系統安全

18、如何防止顯示中文亂碼(該優化初期建議不優化,直接強制看英文)

此項優化為可選項,即調整Linux系統的字元集設定,那麼,什麼是字元集呢?

簡單的說,字元集就是一套文字元号及其編碼。目前Linux下常用的字元集有:

GBK:定長,雙位元組,不是國際标準,支援的系統不少,實際企業用的不多。

UTF-8:非定長,1~4位元組,廣泛支援,MYSQL也使用UTF-8,企業廣泛使用。 可通過快捷的指令方式在/etc/sysconfig/i18n中添加如下内容,使其支援中文顯示:

CentOS 6.x修過過程

[[email protected] oldboy ~]# echo LANG                ###檢視系統目前的字元集 en_US.UTF-8 [[email protected] oldboy ~]# cat /etc/sysconfig/i18n   #####系統字元集配置檔案的位置  SYSFONT="latarcyrheb-sun16" [[email protected] ~]# cp /etc/sysconfig/i18n /etc/sysconfig/i18n.ori  ####備份 [[email protected] ~]# echo ''  >/etc/sysconfig/i18n ####修改配置檔案 #→相當于用vi /etc/sysconfig/i18n 添加内容 [[email protected] ~]# source /etc/sysconfig/i18n #→使上文修改生效    ###讓配置檔案生效 [[email protected] ~]# echoLANG ###檢視系統目前的字元集

zh_CN.UTF-8

CentOS 7.x修過過程

修改/etc/locale.conf這個檔案

提示:

亂碼的核心解決方法:

系統字元集(utf-8)

xshell軟體的字元集保持一緻(utf-8)

檔案使用的字元集一緻

zh_CN.GBK

注意“zh_CN.UTF-8”的大小寫字母。

這個中文顯示配置要跟你自己的SSH用戶端的配置一緻。

Linux基礎優化與安全重點小結

不用root登入管理系統,而以普通使用者登入通過sudo授權管理。

更改預設的遠端連接配接SSH服務端口,禁止root使用者遠端連接配接,甚至要更改SSH服務隻監聽内網IP。

定時自動更新伺服器的時間,使其和網際網路時間同步。

配置yum更新源,從國内更新源下載下傳安裝軟體包。

關閉SELinux及iptables(在工作場景中,如果有外部IP一般要打開iptables,高并發高流量的伺服器可能無法開啟)。

調整檔案描述符的數量,程序及檔案的打開都會消耗檔案描述符數量。

定時自動清理郵件臨時目錄垃圾檔案,防止磁盤的inodes數被小檔案占滿(注意Centos6和Centos5要清除的目錄不同)。

精簡并保留必要的開機自啟動服務(如crond、sshd、network、rsyslog、sysstat)。

Linux核心參數優化/etc/sysctl.conf,執行sysctl -p生效。

更改系統字元集為“zh_CN.UTF-8”,使其支援中文,防止出現亂碼問題。

鎖定關鍵系統檔案如/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow、/etc/inittab,處理以上内容後把chattr、lsattr改名為luffy,轉移走,這樣就安全多了。

清空/etc/issue、/etc/issue.net,去除系統及核心版本登入前的螢幕顯示。

清除多餘的系統虛拟使用者賬号。

為grub引導菜單加密碼。

禁止主機被ping。

打更新檔并更新有已知漏洞的軟體。 新系統 yum –y install 已經線上上用的伺服器 web伺服器能夠停止。

繼續閱讀