購買一台阿里雲雲主機(CentOS)后


系統的優化
優化之前,首先查看版本信息

cat /etc/redhat-release
CentOS release 6.9 (Final)

查看內核版本

uname -a
Linux iZwz98akt9dh26btcaud2zZ 2.6.32-696.10.1.el6.x86_64 #1 SMP Tue Aug 22 18:51:35 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

基礎優化與安全重點小結

  • 1 不用root登錄管理系統,而以普通用戶登錄通過sudo授權管理
  • 2 更改默認的遠程連接SSH服務端口,禁止root用戶遠程連接,甚至要更改SSH服務只監聽內網IP
  • 3 定時自動更新服務器時間,使其和互聯網同步
  • 4 配置yum更新源,從國內更新源下載安裝軟件包
  • 5 關閉SELinux
  • 6 定時自動清理臨時目錄日志,防止磁盤inodes數被小文件占滿
  • 7 調整文件描述符的數量,進程及文件的打開都會消耗文件描述符的數量
  • 8 精簡並保留必要的開機啟動服務
  • 9 Linux內核參數優化/etc/sysctl.config,執行sysetl –p生效
  • 10 更改系統字符集, 為“zh_CN.UTF-8”,使其支持中文,防止出現亂碼問題。
  • 11 鎖定關鍵文件,如: passwd、/etc/shadow/、/etc/group/、/etc/gshadow、/etc/inittab,處理以上內容后把chattr、lsattr、改名為root,轉移走,這樣就安全多了。
  • 12 清空/etc/issue /etcissue.net,去除系統及內核版本登錄前的屏幕顯示
  • 13 禁止主機被ping
  • 14 打補丁並升級有已知漏洞的軟件


1.禁用root用戶登陸管理系統
添加用戶設置密碼

useradd user
passwd user
#修改配置文件
vi /etc/ssh/sshd_config
#找到“PermitRootLogin yes”把注釋去掉 保存,然后重啟sshd服務

利用sudo控制用戶的使用權限
為了方便管理,可以給用戶授權,過程:
輸入vi sudoers找到98行,在下面放入如下內容:

user   ALL=(ALL)   NOPASSWD: ALL     <--all表示完全的系統權限,NOPASSWD表示提示權限命令時不需要密碼
#配置完成后要進行檢查,命令如下:
grep root /etc/sudoers
oldboy    ALL=(ALL)   NOPASSWD: ALL

此時再以user用戶登錄系統時,就可以通過執行sudo ls –l /root (sudo后面跟正常命令)的命令以root用戶的權限管理系統了,如下:

ls /root/
ls: cannot open directory /root/: Permission denied
sudo ls /root/
HostKeyDB.txt       test.txt      12345                         install.log         woaini

 

2.修改ssh端口

sed -i 's/#Port 22/Port 2121/' /etc/ssh/sshd_config
#示例中將22端口改為2121此處記得開放防火牆端口
/sbin/iptables -I INPUT -p tcp --dport 2121 -j ACCEPT
/etc/rc.d/init.d/iptables save
sed -i "/A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT/d" /etc/sysconfig/iptables
service iptables restart


3.設置服務器時間同步

ntpdate time.nist.gov<--時間同步
ntpdate ntp1.aliyun.com<--國內阿里雲時間同步服務器


利用定時任務crond把上述命令每5分鍾自動執行一次,命令如下:

echo '#time sync by root at 2017-11-03' >>/var/spool/cron/root
echo '0 2 * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1' >>/var/spool/cron/root
crontab –l
#time sync by root at 2017-11-03
0 2 * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1


4.配置yum更新源並增加epel源

mv /etc/yum.repos.d/CentOS-Base.repo{,.$(date +%F_%T).backup} 
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum makecache


5.關閉selinux

sed -i 's#SELINUX=enforcing#SELINUX=disabled#' /etc/selinux/config


6.定時清理日志緩存文件,清理日志腳本delOldLogs.sh:

vim /data/sh/cleanlog/delOldLogs.sh
#!/bin/sh
#刪除輸入路徑下的修改時間在45天以前的日志文件
find $1 -mtime +45 -name "*log*" -exec rm -f {} \;

指定清理哪些路徑的日志的腳本

del_all_OldLogs.sh:
vim /data/sh/cleanlog/del_all_OldLogs.sh
#!/bin/bash
/data/sh/cleanlog/delOldLogs.sh “/home/usr/ewp/logs”
/data/sh/cleanlog/delOldLogs.sh “/home/usr/h5/logs”
/data/sh/cleanlog/delOldLogs.sh “/home/usr/Payment/logs”


給腳本添加執行權限:

chmod a+x /data/sh/cleanlog/del*.sh


添加定時任務:

vim /var/spool/cron/root

#添加以下內容:

10 0 * * 6 /data/sh/cleanlog/del_all_OldLogs.sh

注:
1.為了防止出現權限不夠的情況,因此這里設置了一個root用戶的定時任務
2.這句代碼的意思是:在每周6的0:10執行/data/sh/cleanlog/del_all_OldLogs.sh 這個腳本
查看定時任務:

crontab -l

7.加大文件描述

\cp /etc/security/limits.conf{,.$(date +%F_%T).backup}
echo '*               -    nofile            65535' >> /etc/security/limits.conf
tail -1 /etc/security/limits.conf 
# 重啟生效
ulimit -n

8.精簡並保留必要的軟件啟動(如cron、network、sshd、rsyslog、sysstat)

chkconfig --list|egrep -v  "crond|ssh|network|rsyslog|sysstat"|awk '{print "chkconfig",$1,"off"}'|bash
chkconfig --list|grep "3:on"

9.內核優化

\cp /etc/sysctl.conf{,.$(date +%F_%T).backup}
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
# 讓內核配置文件中的參數生效
sysctl -p  

 

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

vim ~/.bash_profile
#添加
LANG="zh_CN.UTF-8"
export LANG

 

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

chattr +a /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
mv /usr/bin/chattr ~/.pki/root
mv /usr/bin/lsattr ~/.pki/toor

 

12.清空/etc/issue /etcissue.net,去除系統及內核版本登錄前的屏幕顯示

echo > /etc/issue 
echo > /etc/issue.net

13.禁止Linux系統被ping

# 禁止ping
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
# 允許ping
# echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

 


免責聲明!

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



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