Linux基礎優化與安全歸納總結

安全劍客發表於2019-04-25

一名運維工程師在運維崗位上時間久了,就會發現 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 (範圍 —— 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

第六點:適當調整檔案描述符的數量

鑑於程式及檔案的開啟都會消耗檔案描述符,所以在運維過程中我們要調整下檔案描述符的數量,表示形式為整數數字( —— 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 就該這麼學》 等及同行高手。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2642459/,如需轉載,請註明出處,否則將追究法律責任。

相關文章