centos7系統優化


優化說明:

 1 一.關閉selinux  2 二.更改為阿里yum源  3 三.提權dm用戶可以使用sudo  4 四.優化ssh遠程登錄配置  5 五.設置中文字符集  6 六.設置時間同步  7 七.歷史記錄數及登錄超時環境變量設置  8 八.調整linux描述符  9 九.定時清理郵件服務臨時目錄垃圾文件 10 十.鎖定關鍵系統文件,防止被提權篡改 11 十一.ssh限制ip登錄 12 十二.為grub菜單加密 13 十三.優化開機自啟服務 14 十四.內核優化 15 十四.更新系統到最新

一.關閉selinux

 1 #修改配置文件可使配置文件生效,但必須要重啟系統,此步驟是sed快速修改方法,也可以通過vim編輯/etc/selinux/config來修改此文件.
 2 sed -i '/^SELINUX/s/enforcing/disabled/g' /etc/selinux/config
 3 
 4 檢查替換結果為disabled就表示成功了.
 5 grep SELINUX=disabled /etc/selinux/config 
 6 SELINUX=disabled
 7 
 8 #臨時關閉
 9 setenforce 
10 usage:  setenforce [ Enforcing | Permissive | 1 | 0 ]
11 0表示Permissive,即給出警告,但不會阻止操作,相當於disabled.
12 1表示Enforcing,即表示SELinux為開啟狀態.
13 setenforce 0    #臨時將SELinux調為Permissive狀態.
14 getenforce    #查看SELinux當前狀態.

二.更改為阿里yum源

1 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3 yum makecache

 三.提權dm用戶可以使用sudo

 1 備份/etc/sudoers文件
 2 cp /etc/sudoers /etc/sudoers.2018-08-20.bak
 3 
 4 sudo提權配置說明    
 5 用戶或組        機器=授權角色        可以執行的命令
 6 user            MACHINA=        COMMANDS
 7 dm            ALL=(ALL)        /usr/sbin/useradd,/usr/sbin/userdel
 8 
 9 useradd dm
10 echo 123456|passwd --stdin dm
11 echo "dm  ALL=(ALL) NOPASSWD: ALL" >>/etc/sudoers    #結尾的ALL表示dm可擁有完全的系統管理權限,NOPASSSWD表示提權執行命令時不提示密碼;
12 grep dm /etc/sudoers
13 visudo -c &>/dev/null

四.優化ssh遠程登錄配置

 1 備份/etc/ssh/sshd_conf
 2 cp /etc/ssh/sshd_config /etc/ssh/sshd_config.2018-08-20.bak
3 不允許基於GSSAPI的用戶認證 4 sed -i 's/^GSSAPIAuthentication yes$/GSSAPIAuthentication no/' /etc/ssh/sshd_config
5 不允許sshd對遠程主機名進行反向解析 6 sed -i 's/#UseDNS yes/UseDNS no/' /etc/ssh/sshd_config
7 禁止root用戶登錄 8 sed -i 's%#PermitRootLogin yes%PermitRootLogin no%' /etc/ssh/sshd_config
9 不允許空密碼登錄 10 sed -i 's%#PermitEmptyPasswords no%PermitEmptyPasswords no%' /etc/ssh/sshd_config
11 systemctl restart sshd

五.設置中文字符集

1 localectl set-locale LANG=zh_CN.UTF-8
2 localectl status

六.設置時間同步

 1 檢查是否安裝ntpdate
 2 rpm -qa|grep ntpdate 
 3 ntpdate-4.2.6p5-28.el7.centos.x86_64
 4 
 5 如果沒有安裝,則使用yum安裝
 6 yum install -y ntpdate
 7 
 8 添加計划任務,每5分鍾同步一次時間;
 9 echo '#time sync by dm at 2018-8-20' >>/var/spool/cron/root
10 echo '*/5 * * * * /usr/sbin/ntpdate -u ntp.api.bz >/dev/null 2>&1' >>/var/spool/cron/root
11 crontab -l

七.歷史記錄數及登錄超時環境變量設置

 1 設置閑置超時時間為300s
 2 echo 'export TMOUT=300' >>/etc/profile
 3 
 4 設置歷史記錄文件的命令數量為100
 5 echo 'export HISTFILESIZE=100' >>/etc/profile
 6 
 7 設置命令行的歷史記錄數量
 8 echo 'export HISTSIZE=100' >>/etc/profile
 9 
10 格式化輸出歷史記錄(以年月日分時秒的格式輸出)
11 echo 'export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S"' >>/etc/profile
12 
13 source /etc/profile
14 tail -4 /etc/profile

八.調整linux描述符

 1 文件描述符是由無符號整數表示的句柄,進程使用它來標識打開的文件.文件描述符與包括相關信息(如文件的打開模式,文件的位置類型,文件的初始類型等)的文件對象相關聯,這些信息被稱作文件的上下文.文件描述符的有效范圍是0到OPEN_MAX.
 2 對於內核而言,所有打開的文件都是通過文件的描述符引用的.當打開一個現有文件或創建一個新文件時,內核向進程返回一個文件描述符,當讀或寫一個文件時,使用open或create返回的文件描述符標識該文件,並將其作為參數傳遞給read或write.

 4 查看系統文件描述符設置的情況可以使用下面的命令,文件描述符大小默認是1024.
 5 ulimit -n
 6 對於高並發的業務Linux服務器來說,這個默認的設置值是不夠的,需要調整.

 8 調整方法一:
 9 調整系統文件描述符為65535
10 echo '*        -    nofile    65535' >>/etc/security/limits.conf
11 tail -l /etc/security/limits.conf

13 調整方法二:
14 直接把ulimit -SHn 65535命令加入/etc/rc.d/rc.local,用以設置每次開機啟動時配置生效,命令如下:
15 echo " ulimit -HSn 65535" >>/etc/rc.d/rc.local
16 echo " ulimit -s 65535" >>/etc/rc.d/rc.local

九.定時清理郵件服務臨時目錄垃圾文件

1 centos7默認是安裝了Postfix郵件服務的,因此郵件臨時存放地點的路徑為/var/spool/postfix/maildrop,為了防止目錄被垃圾文件填滿,導致系統額inode數量不夠用,需要定期清理.
2 定時清理的方法為:將清理命令寫成腳本,然后做成定時任務,每日凌晨0點執行一次.

#創建存放腳本的目錄
3 [ -d /server/scripts/shell ] && echo "directory already exists." || mkdir /server/scripts/shell -p

#編寫腳本文件
4 echo 'find /var/spool/postfix/maildrop/ -type f|xargs rm -f' >/server/scripts/shell/del_mail_file.sh

#查看 5 cat /server/scripts/shell/del_mail_file.sh

#加入計划任務 6 echo "00 00 * * * /bin/bash /server/scripts/shell/del_mail_file.sh >/dev/null &1" >>/var/spool/cron/root
7 crontab -l

十.鎖定關鍵系統文件,防止被提權篡改

 1 要鎖定關鍵系統文件,必須對賬號密碼我那件及啟動文件加鎖,防止被篡改,加鎖命令如下:
 2 chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
 3 lsattr /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
 4 
 5 上鎖后,所有用戶都不能對文件進行修改刪除.如果需要修改,可以執行下面的命令解鎖后,再進行修改.
 6 chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
 7 lsattr /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
 8 
 9 如果想要更加安全,可以把chattr改名轉移,防止被黑客利用.
10 mv /usr/bin/chattr /usr/bin/dm1

十一.ssh限制ip登錄

方法一:
只允許指定用戶進行登錄(白名單):
在 /etc/ssh/sshd_config 配置文件中設置 AllowUsers 選項,(配置完成需要重啟 SSHD 服務)格式如下:
AllowUsers     root@192.168.1.1            
# 允許 IP 192.168.1.1 登錄root 通過帳戶登錄系統。

只拒絕指定用戶進行登錄(黑名單):
在/etc/ssh/sshd_config配置文件中設置DenyUsers選項,(配置完成需要重啟SSHD服務)格式如下:   
DenyUsers    root@192.168.1.10    #Linux系統賬戶        
# 拒絕 IP 192.168.1.10 登錄root 通過帳戶登錄系統。

方法二:
#允許192.168.200.0段的IP登錄
echo "sshd:192.168.200.0/24:allow"    >>/etc/hosts.allow    
 
 #禁止所有的其他IP段的IP登錄
echo "sshd:all:deny"    >>/etc/hosts.deny
hosts.allow 和hosts.deny 兩個文件同時設置規則的時候,hosts.allow 文件中的規則優先級高,按照此方法設置后服務器只允許 192.168.200.0/24這個段的 IP 地址的 ssh 登錄,其它的 IP 都會拒絕。

方法三:
允許192.168.100.10登錄ssh
firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.100.10 service name=ssh accept'

拒絕192.168.200.0/24登錄ssh
firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.200.0/24 service name=ssh reject'

firewall-cmd --reload

 

十二.為grub菜單加密

1 為grub菜單加密的目的是防止他人修改grub進行內核等啟動設置,以及用單用戶模式啟動進行破解root密碼等操作,實際上此步驟可以在安裝系統的過程中設定.
2 安裝系統后的具體設定步驟如下: 

設置密碼: 5 grub2-setpassword 6 7 查看設置的密碼: 8 cat /boot/grub2/user.cfg

#在/etc/grub.d/01_users文件中可以看到grub用戶名為root,然后通過grub2-setpassword來設置grub的密碼,密碼設置成功后會生成/boot/grub2/user.cfg文件,可以通過/boot/grub2/user.cfg文件查看設置的密碼,查看到的密碼為加密的密碼。

十三.優化開機自啟服務

十四.內核優化

Linux服務器內核參數優化,主要是指在Linux系統中針對業務服務應用而進行的系統內核參數調整,優化並無一定的標准.下面是生產環境下Linux常見的內核優化:

cat >>/etc/sysctl.conf<<EOF
#kernel_flag
#關閉ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
# 避免放大攻擊
net.ipv4.icmp_echo_ignore_broadcasts = 1
# 開啟惡意icmp錯誤消息保護
net.ipv4.icmp_ignore_bogus_error_responses = 1
#關閉路由轉發
#net.ipv4.ip_forward = 0
#net.ipv4.conf.all.send_redirects = 0
#net.ipv4.conf.default.send_redirects = 0
#開啟反向路徑過濾
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
#處理無源路由的包
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
#關閉sysrq功能
kernel.sysrq = 0
#core文件名中添加pid作為擴展名
kernel.core_uses_pid = 1
# 開啟SYN洪水攻擊保護
net.ipv4.tcp_syncookies = 1
#修改消息隊列長度
kernel.msgmnb = 65536
kernel.msgmax = 65536
#設置最大內存共享段大小bytes
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
#timewait的數量,默認180000
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096        87380   4194304
net.ipv4.tcp_wmem = 4096        16384   4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
#每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目
net.core.netdev_max_backlog = 262144
#限制僅僅是為了防止簡單的DoS 攻擊
net.ipv4.tcp_max_orphans = 3276800
#未收到客戶端確認信息的連接請求的最大值
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
#內核放棄建立連接之前發送SYNACK 包的數量
net.ipv4.tcp_synack_retries = 1
#內核放棄建立連接之前發送SYN 包的數量
net.ipv4.tcp_syn_retries = 1
#啟用timewait 快速回收
net.ipv4.tcp_tw_recycle = 1
#開啟重用。允許將TIME-WAIT sockets 重新用於新的TCP 連接
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout = 1
#當keepalive 起用的時候,TCP 發送keepalive 消息的頻度。缺省是2 小時
net.ipv4.tcp_keepalive_time = 30
#允許系統打開的端口范圍
net.ipv4.ip_local_port_range = 1024    65000
#修改防火牆表大小,默認65536
#net.netfilter.nf_conntrack_max=655350
#net.netfilter.nf_conntrack_tcp_timeout_established=1200
# 確保無人能修改路由表
#net.ipv4.conf.all.accept_redirects = 0
#net.ipv4.conf.default.accept_redirects = 0
#net.ipv4.conf.all.secure_redirects = 0
#net.ipv4.conf.default.secure_redirects = 0
EOF
/sbin/sysctl -p

十四.更新系統到最新

1 #更新補丁並升級系統版本
2 yum update  -y 
3 
4 #只更新安全補丁,不升級系統版本
5 yum --security check-update        #檢查是否有安全補丁
6 yum   update --security        #更新安全補丁

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM