1. 程式人生 > 其它 >centos系統初始化

centos系統初始化

一、系統優化

1.安裝基礎安裝包、服務。

yum installntpdate yum-utils cmake ncurses-devel libaio-devel make gcc gcc-c++ lrzsz dos2unix tree bash-completion vim net-tools wget curl lsof-y && ntpdate -u cn.pool.ntp.org yum -y install gcc gcc-c++ make autoconf libtool-ltdl-devel gd-devel freetype-devel libxml2-devel libjpeg-devel libpng-devel openssh-clients openssl-devel curl-devel bison patch libmcrypt-devel libmhash-devel ncurses-devel binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel glibc glibc-common glibc-devel libgcj libtiff pam-devel libicu libicu-devel gettext-devel libaio-devel libaio libgcc libstdc++ libstdc++-devel unixODBC unixODBC-devel numactl-devel glibc-headers sudo bzip2 mlocate flex lrzsz sysstat lsof setuptool system-config-network-tui system-config-firewall-tui ntsysv ntp pv lz4 dos2unix unix2dos rsync dstat iotop innotop mytop telnet iftop expect cmake nc gnuplot screen xorg-x11-utils xorg-x11-xinit rdate bc expat-devel compat-expat1 tcpdump sysstat man nmap curl lrzsz elinks finger bind-utils traceroute mtr ntpdate zip unzip vim wget net-tools

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

ntpdate time.nist.gov<--時間同步 ntpdate ntp1.aliyun.com<--國內阿里雲時間同步伺服器 利用定時任務crond把上述命令每5分鐘自動執行一次,命令如下: echo '#time sync by root at 2010-2-1' >>/var/spool/cron/root echo '*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1' >>/var/spool/cron/root crontab –l [root@rootedu ~]# crontab -l #time sync by root at 2010-2-110 */5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1

3.配置yum更新源,從國內更新源下載安裝軟體包、或者從阿里雲等開源映象站同步yum倉庫到本地,減少頻寬佔用。

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

4.關閉SELinux及firewalld

systemctl stop firewalld systemctl disabled firewalld sed -i "s/SELINUX=*$/SELINUX=disabled/g" /etc/selinux/config

5.定時自動清理郵件臨時目錄垃圾檔案,防止磁碟inodes數被小檔案佔滿

crontab -e 0 0 1 * * rm -rf /var/spool/mail/* #每個月 1日0:點0分清理mail郵件垃圾

6.精簡併保留必要的開機啟動服務

遠端連線linux伺服器時需要用到這個服務程式,所以必須開啟 sshd 遠端連線linux伺服器時需要用到這個服務程式,所以必須開啟 rsyslog 日誌相關軟體 network 網路服務 crond 會週期的執行系統和使用者配置的任務計劃

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

#localectl status#檢視當前字符集 System Locale: LANG=en_US.UTF-8 VC Keymap: us X11 Layout: us # localectl set-locale LANG=zh_CN.UTF-8#修改字符集為zh_CN.UTF-8,命令列和配置檔案都生效 # cat /etc/locale.conf#檢視配置檔案 LANG=zh_CN.UTF-8

8.修改網絡卡為eth0

方法一、 NAME=eth0 #網絡卡名稱改為eth0 DEVICE=eth0 #裝置名稱改為eth0 方法二、 在裝系統時候新增兩個引數 net.ifnames=0 biosdevname=0

9.給/etc/rc.local新增執行許可權

chmod +x /etc/rc.d/rc.local

10.開啟快速回收(TCP斷開連線時會有一個等待時間為2msl(60秒)對應的狀態為TIME_WAIT,如果業務併發較大的話會有很多的TIME_WAIT狀態(詳細等待後續更新),如何來解決那?)

# cat /proc/sys/net/ipv4/tcp_timestamps#時間戳,預設是開啟的 # cat /proc/sys/net/ipv4/tcp_tw_reuse# 連線複用,tcp_timestamps是開啟的狀態下是可以開啟的,1為開啟,預設是關閉的狀態。 # cat /proc/sys/net/ipv4/tcp_tw_recycle#socket快速回收,net網路狀態下不可以開啟,負載均衡上不可以開啟,讀者根據自身情況開啟或關閉,預設為關閉狀態。

11.Linux系統記憶體交換區

在Linux系統安裝時都會有一個特殊的磁碟分割槽,稱之為系統交換分割槽。 (1) 如果我們使用free -m在系統中檢視可以看到類似下面的內容,其中swap就是交換分割槽。 當作業系統因為沒有足夠的記憶體時就會將一些虛擬記憶體寫到磁碟的交換區中,這樣就會發生記憶體交換。 (2) 在MySQL伺服器上是否要使用交換分割槽有一些爭議: 在MySQL服務所在的Linux系統上完全禁用交換分割槽。 帶來的風險: a. 降低作業系統的效能。 b. 容易造成記憶體溢位,奔潰,或都被作業系統kill掉。 結論: 在MySQL伺服器上保留交換分割槽還是很必要的,但是要控制何時使用交換分割槽。 vm.swappiness = 0 就是告訴Linux核心除非虛擬記憶體完全滿了,否則不要使用交換區。

12.設定history密碼時間(以下作用是顯示命令的執行時間和使用者)

sed -i s#HISTSIZE=1000#HISTSIZE=10000#g /etc/profile echo 'export HISTTIMEFORMAT="%F %T `whoami` "' >> /etc/profile

二、安全優化

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

2.更改預設的遠端連線SSH服務埠,禁止root使用者遠端連線,甚至要更改SSH服務只監聽內網IP

sed -i "s/#Port 22/Port xxx/g"/etc/ssh/sshd_config #修改埠 vim /etc/ssh/sshd_config,把#PermitRootLogin yes改為PermitRootLogin no #禁止root登入

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

chattr +i "passwd、/etc/shadow/、/etc/group/、等" mv/usr/bin/chattr/usr/bin/xxx

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

echo "本人宣告,如果您以非法方式登入本伺服器,您將承擔法律責任!!!" >/etc/issue

5.禁止主機被ping

禁止主機被ping:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

6.設定會話超時(600代表十分鐘)

vim /etc/profile export TMOUT=6000

7.新密碼不能與最近10個使用密碼相同

vim /etc/pam.d/system-auth passwordsufficient *$ remeber=11

8.密碼複雜度

1.備份配置檔案: # cp -a /etc/pam.d/system-auth /etc/pam.d/system-auth.default 2.編輯配置檔案 # vi /etc/pam.d/system-auth 將"passwordrequisitepam_pwquality.so try_first_pass local_users_only retry=3 authtok_type="註釋並在其下面新增1行 password requisite pam_cracklib.so try_first_pass minlen=8 difok=5 dcredit=-1 lcredit=-1 ocredit=-1 retry=1 type= 說明: 備註: try_first_pass而當pam_unix驗證模組與password驗證型別一起使用時,該選項主要用來防止使用者新設定的密碼與以前的舊密碼相同。 minlen=8:最小長度8位 difok=5:新、舊密碼最少5個字元不同 dcredit=-1:最少1個數字 lcredit=-1:最少1個小寫字元,(ucredit=-1:最少1個大寫字元) ocredit=-1:最少1個特殊字元 retry=1:1次錯誤後返回錯誤資訊 type=xxx:此選項用來修改預設的密碼提示文字

三、核心優化

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 = 400065000 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 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 參考文件: https://www.cnblogs.com/dongweizhen/p/13748062.html https://www.cnblogs.com/dazhidacheng/p/7771550.html https://devopstack.cn/linux/323.html#5History https://blog.51cto.com/u_12217917/2060136