1)根據經驗,選擇安裝包時應該按最小化原則,即不需要的或者不確定是否需要的就不安裝,這樣可以最大程度上確保系統安全。
2)如果安裝過程落了部分包組或者其他夥伴安裝時沒選,再安裝後可以按如下方式補上安裝時未安裝的包組:
yum groupinstall "Compatibility libraries" "Base" "Development tools"
yum groupinstall "debugging Tools" "Dial-up Networking Support"
可以通過yum groupinfo 包組查看具體安裝的組件。
注意:不要使用yum的刪除功能刪除軟件,會刪除相關依賴,導致意外問題。
安裝系統後還會有一些基本的工具沒裝,這時可以根據需求yum來安裝下,啥時用啥時裝也可。例如:
yum install tree nmap sysstat lrzsz dos2unix -y
超級管理員(root): root默認在unix/linux操作系統中擁有最高的管理權限。比喻:皇帝。
普通用戶:管理員或者具備管理權限的用戶創建的。權限:系統管理僅可以讀、看,不能增、刪、改。
[root@oldboy ~]# useradd luffy
[root@ oldboy ~]# passwd luffy ###問你新的密碼,然後你輸入 交互設置密碼
Changing password for user luffy.
BAD PASSWORD: it is too simplistic/systematic #ç提示密碼太簡單了,但可以不理會。
passwd: all authentication tokens updated successfully.
非交互式設置密碼:還可通過下面的命令一步到位地設置密碼(其中,luffy爲用戶名,密碼爲123456)。
echo "123456"|passwd --stdin luffy && history -c
[root@ oldboy ~]# su - luffy <==由root管理員,切換到普通用戶luffy
[luffy@ oldboy ~]whoami<==查看當前用戶是什麼luffy[luffy@oldboy ] su - root <==切回到root用戶
1)超級用戶root切換到普通用戶下面,無需輸入對應用戶密碼,這相當於“皇帝”去“大臣”家裏。
2)普通用戶切換到root或其他普通用戶下,需要輸入切換的對應用戶密碼。
3)普通用戶的權限比較小,只能進行基本的系統信息查看等操作,無法更改系統配置和管理服務。
4)符號是普通用戶的命令行提示符,#符號是超級管理員的提示符。示例如下: [luffy@ oldboy ~] #普通用戶luffy對應的提示符
[root@ oldboy ~]# #超級管理員root對應的提示符
5)提示符@前面的字符代表當前用戶(可用whoami查詢),後面的爲主機名(可用hostname查詢),~所在的位置是窗口當前用戶所在的路徑。示例如下:
[luffy@ oldboy ~]#luffy爲當前用戶,Oldboy爲主機名,~表示當前目錄,即家目錄。 6)Linux命令提示符由PS1環境變量控制。示例如下: [root@ oldboy ~]# echoPS1
這裏的PS1='[\u@\h \W]′,可以通過全局變量配置/etc/profile文件調整PS1=′[\u@\h\W\t] '。
\d 代表日期,格式爲weekday month date。
\W 利用basename取得工作目錄名稱,所以只會列出最後一個目錄
$ 提示字符,如果是root時,提示符爲# ,普通用戶則爲變量(放東西查看變量的內容)PS1−−−變量的名字−−−−−−藏經閣裏面的武功祕籍(葵花寶典)祕籍名字(書名)PS1---查看變量裏面的內容---手端着書(葵花寶典) 看書的內容(讀書) PS1=新的內容 ---向變量裏面放入東西----修改書的內容(升級書) 欲練此功,必先自宮,若不自宮,也能成功。 linux變量名字(書名)大寫的一般是自己用(linux環境變量),在哪裏都可以用的變量
SELinux(Security-Enhanced Linux)是美國國家安全局(NSA)對於強制訪問控制的實現,這個功能讓系統管理員又愛又恨,這裏我們還是把它給關閉了吧,至於安全問題,後面通過其他手段來解決,這也是大多數生產環境的做法,如果非要開啓也是可以的。
cp /etc/selinux/config /etc/selinux/config.bak
sed 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
grep "disabled" /etc/selinux/config
# 數字0表示Permissive,即給出警告提示,但不會阻止操作,相當於disabled。
# 數字1表示Enforcing,即表示SElinux爲開啓狀態。
setenforce:用於命令行管理SELinux的級別,後面的數字表示設置對應的級別。
提示:修改配置SElinux後,要想使其生效,必須要重啓系統。因此,可配合使用setenforce 0這個臨時使其關閉的命令,這樣在重啓前後都可以使得SElinux關閉生效了,也就是說無須立刻重啓服務器了,在生產場景下Linux機器是不能隨意重啓的(不要給自己找任何理由重啓)。
4、關閉iptables(C6)或Firewalld(C7)防火牆
關閉防火牆的目的是爲了讓初學者學習更方便,將來在學了iptables技術後可再統一開啓。 在企業環境中,一般只有配置外網IP的linux服務器才需要開啓防火牆,但即使是有外網IP,對於高併發高流量的業務服務器仍是不能開的,因爲會有較大性能損失,導致網站訪問很慢,這種情況下只能在前端加更好的硬件防火牆了。 關閉防火牆的具體操作過程如下:
[root@oldboyedu ~]# /etc/init.d/iptables stop
[root@oldboyedu ~]# /etc/init.d/iptables stop #<==重複執行下確認已關閉。
[root@oldboyedu ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@oldboyedu ~]# chkconfig iptables off
[root@oldboyedu ~]# chkconfig --list|grep ipt
iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@oldboyedu ~]# systemctl stop firewalld
[root@oldboyedu ~]# systemctl disable firewalld
[root@oldboyedu ~]# systemctl is-active firewalld #是否正在運行
[root@oldboyedu ~]# systemctl is-enabled firewalld #是否開機自啓動
[root@oldboyedu ~]# systemctl stop NetworkManager
[root@oldboyedu ~]# systemctl disable NetworkManager
sed -i 's#\#Port 22#Port 7777#g' /etc/ssh/sshd_config
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
下載新的CentOS-Base.repo 到/etc/yum.repos.d/
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
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
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生成緩存,此步驟可以不執行。
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
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-5.repo
在Linux中curl是一個利用URL規則在命令行下工作的文件傳輸工具,可以說是一款很強大的http命令行工具。它支持文件的上傳和下載,是綜合傳輸工具,但按傳統,習慣稱url爲下載工具。
-O --remote-name,把輸出寫到該文件中,保留遠程文件的文件名
-# --progress-bar,用進度條顯示當前的傳送狀態
-v --verbose,詳細顯示請求報文結構和響應報文結構信息
wget支持HTTP,HTTPS和FTP協議,可以使用HTTP代理。所謂的自動下載是指,wget可以在用戶退出系統的之後在後臺執行。這意味這你可以登錄系統,啓動一個wget下載任務,然後退出系統,wget將在後臺執行直到任務完成
wget 可以跟蹤HTML頁面上的鏈接依次下載來創建遠程服務器的本地版本,完全重建原始站點的目錄結構。這又常被稱作”遞歸下載”。
-V --version,顯示 Wget 的版本信息並退出。
-O --output-document=FILE,將文檔寫入 FILE。
yum -y install tree nmap sysstat lrzsz dos2unix telnet bash-completion bash-completion-extras vim nc lsof net-tools rsync
諸如openssl、openssh、bash爆出很多軟件漏洞,在企業場景需要進行修復漏洞操作,步驟如下:
[root@Oldboy ~]# rpm -qa openssl openssh bash
[root@Oldboy ~]# yum install openssl openssh bash -y
[root@Oldboy ~]# rpm -qa openssl openssh bash
openssh-5.3p1-104.el6_6.1.x86_64
openssl-1.0.1e-30.el6_6.5.x86_64
echo '#Timing synchronization time' >/var/spool/cron/root
echo '*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null' >/var/spool/cron/root
echo '* - nofile 65535 ' >>/etc/security/limits.conf
tail -1 /etc/security/limits.conf
cat>>/etc/profile.d/color.sh<<EOF
alias ll='ls -l --color=auto --time-style=long-iso'
export HISTTIMEFORMAT='%F-%T '
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_synack_retries = 1
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
[root@oldboy ~]# cat /server/scripts/hostname_ip.sh
if [ # -ne 2 ];then echo "/bin/sh0 hostname PartIP"
sed -i "s#100#$2#g" /etc/sysconfig/network-scripts/ifcfg-eth[01]
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
18、如何防止顯示中文亂碼(該優化初期建議不優化,直接強制看英文)
此項優化爲可選項,即調整Linux系統的字符集設置,那麼,什麼是字符集呢?
簡單的說,字符集就是一套文字符號及其編碼。目前Linux下常用的字符集有:
GBK:定長,雙字節,不是國際標準,支持的系統不少,實際企業用的不多。
UTF-8:非定長,1~4字節,廣泛支持,MYSQL也使用UTF-8,企業廣泛使用。 可通過快捷的命令方式在/etc/sysconfig/i18n中添加如下內容,使其支持中文顯示:
[root@ oldboy ~]# echo LANG ###查看系統當前的字符集 en_US.UTF-8 [root@ oldboy ~]# cat /etc/sysconfig/i18n #####系統字符集配置文件的位置 LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16" [root@Oldboy ~]# cp /etc/sysconfig/i18n /etc/sysconfig/i18n.ori ####備份 [root@Oldboy ~]# echo 'LANG="zh_CN.UTF-8"' >/etc/sysconfig/i18n ####修改配置文件 #→相當於用vi /etc/sysconfig/i18n 添加LANG="zh_CN.UTF-8"內容 [root@Oldboy ~]# source /etc/sysconfig/i18n #→使上文修改生效 ###讓配置文件生效 [root@Oldboy ~]# echoLANG ###查看系統當前的字符集
不用root登錄管理系統,而以普通用戶登錄通過sudo授權管理。
更改默認的遠程連接SSH服務端口,禁止root用戶遠程連接,甚至要更改SSH服務只監聽內網IP。
關閉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,去除系統及內核版本登錄前的屏幕顯示。