Linux基礎優化與安全歸納總結
一名運維工程師在運維崗位上時間久了,就會發現Linux優化的重要性,同時會給運維工作帶來很多的便利性。本人逐漸認識到了這一點,所以特意在工作閑暇之余,通過閱讀Linux相關書籍及向同事、同行高手咨詢,針對Linux系統的一些基本優化做了如下歸納總結,如有不足之處,還望大夥補充完善。
本文主要描述一些基本的系統優化知識點,並未涉及Linux深化優化,關於Linux的深化優化知識本人後期會更新。
第一點:Linux的管理盡量不用root用戶,利用sudo命令來控制普通用戶對系統的管理
新建一個用戶,使用sudo命令添加權限,詳細操作步驟如下:
(1)添加新的用戶: useradd 新的用戶名
(2)檢查是否已成功添加:id 新的用戶名
(3)設置該用戶的密碼:echo 123321|passwd --stdin 新的用戶名
接下來需將新的用戶添加管理員權限,這個新的用戶就相當於管理員
(4)備份之前的權限文件:\cp /etc/sudoers{,.back}
(5)將新的用戶添加管理員權限:
echo "新的用戶名 ALL=(ALL) NOPASSWD: ALL " >> /etc/sudoers
(6)檢查是否已成功添加:tail -1 /etc/sudoers
(7)配置生效:visudo -c
待以上操作完畢,那麽此時的新的用戶權限等同於root用戶。
第二點:更改默認的遠程連接SSH
(1)修改配置文件/etc/ssh/sshd_config
Port 22,改為Port 52113(範圍0——65535);##默認端口為22
ListenAddress 0.0.0.0,改為ListenAddress 內網IP地址;##監聽內網ip地址
PermitRootLogion yes,改為PermitRootLogion no;##root用戶遠程連接)
(2)重啟生效:/etc/init.d/sshd reload
(3)查看端口狀態:netstat -lntup|grep sshd
第三點:定時自動更新服務器時間,使其和互聯網時間同步
(1)配置
echo ‘#time sync by 新的用戶名 at 2019-04-01‘ >> /var/spool/cron/root
echo ‘/5 /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1‘ >> /var/spool/cron/root
###每5分鐘執行一次同步
###至於以哪個時間服務器為基準,以下地址可自己選擇:
ntp1.aliyun.com
ntp2.aliyun.com
ntp3.aliyun.com
ntp4.aliyun.com
ntp5.aliyun.com
ntp6.aliyun.com
ntp7.aliyun.com
(2)查看是否已更新:crontab -l
(3)最後備份下:\cp /var/spool/cron/root{,.back}
第四點:配置yum配置源
(1)創建備份文件存放目錄
Mkdir -p /etc/yum.repos.d/{default,back}
(2)備份所有默認的配置文件
\mv /etc/yum.repos.d/repo /etc/yum.repos.d/default
(3)從阿裏雲獲取yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
(4)備份yum源
\cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/default
第五點:關閉selinux及iptables
(1)關閉iptables:/etc/init.d/iptables stop
(2)檢查是否已關閉:/etc/init.d/iptables status
(3)設置開機不自動啟動:chkconfig iptables off
(4)確認配置:chkconfig --list iptables
(5)關閉selinux:
sed -i "s#SELINUX=enforcing#SELINUX=disabled#g" /etc/selinux/config
(6)查看並確認配置:cat /etc/selinux/config
備註:永久生效,需要重啟計算機。(在工作場景中,如果有外部IP一般要打開iptables)
第六點:適當調整文件描述符的數量
鑒於進程及文件的打開都會消耗文件描述符,所以在運維過程中我們要調整下文件描述符的數量,表示形式為整數數字(0——65535)。
查看默認文件描述符:ulimit –n ###一般默認為1024
在/etc/sercurity/limits.conf裏面配置:
echo ‘* - nofile 65535‘ >>/etc/security/limits.conf
tail -1 /etc/security/limits.conf
第七點:定時自動清理郵件目錄垃圾文件
防止inodes節點被占滿。
第八點:精簡並保留必要的開機自啟動服務
(1)只保留重要的基礎服務,其余全部關閉
chkconfig --list|egrep -v "sysstat|crond|sshd|network|rsyslog"|awk ‘{print "chkconfig "$1,"off"}‘|bash
(2)確認配置:chkconfig --list|grep 3:on
第八點:優化Linux內核參數
(1)配置文件/etc/sysctl.conf,添加如下命令(可直接復制粘貼)
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
以下參數是對iptables防火墻的優化,防火墻關閉的情況下會提示,可以略過提示。
net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
EOF
(2)配置生效命令:sysctl -p
第九點:配置字符集
(1)查看配置文件:cat /etc/sysconfig/i18n
裏面默認應該有以下2行內容:
LANG="en_US.UTF-8" ###默認提示為英文
(2)先備份配置文件:cp /etc/sysconfig/i18n{,.back}
(3)修改配置文件:
說明:此項可將字符集修改為中文,也可不做修改。
echo ‘LANG="zn_CN.UTF-8"‘ > /etc/sysconfig/i18n
echo ‘SYSFONT="latarcyrheb-sun16"‘ >> /etc/sysconfig/i18n
(4)配置生效:source /etc/sysconfig/i18n
(5)確認配置是否成功:echo $LANG
第十點:鎖定關鍵性系統文件,防止被篡改
配置命令:
chattr +i /etc/{passwd,shadow,group,gshadow}
lsattr -a /etc/{passwd,shadow,group,gshadow}
解除鎖定命令:chattr -i
第十一點:禁止系統被ping
配置命令:echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf
配置生效命令:sysctl -p
第十二點:升級漏洞軟件
查看相關軟件的版本號:rpm -qa openssl openssh bash
執行升級:yum install openssl openssh bash
第十三點:優化SSH遠程連接
(1)先備份配置文件:cp /etc/ssh/sshd_config{,.back}
(2)編輯ssh服務配置文件
編輯ssh服務的配置文件(vim /etc/ssh/sshd_config),在第12行下面添加如下內容:
Port 52113 #使用大於10000的端口號
PermitRootLogin no #禁止root遠程登錄
PermitEmptyPasswords no #禁止空密碼登錄
UseDNS no #不使用dns解析
GSSAPIAuthentication no #連接慢的解決配置
(3)確認配置:grep -A 5 -i ‘Start by 新的用戶名‘ /etc/ssh/sshd_config
(4)重啟ssh服務:/etc/init.d/sshd restart
(5)確認配置是否成功:netstat -lntup | grep ssh
以上關於Linux系統的基礎優化,由於本人能力及知識點有限,總結歸納的不夠全面,還請大家多參考Linux工具書,如《Linux就該這麽學》等及同行高手。
Linux基礎優化與安全歸納總結