CentOS系統常見優化
阿新 • • 發佈:2020-08-07
目錄
- 修改主機名
- 關閉防火牆和SELINUX
- 配置網路
- 修改yum源
- 時間同步
- 精簡自啟程式
- 安裝常用軟體並更新已有軟體
- 中文字符集
- 修改終端提示符
- ssh優化
- 超時登出登入
- 歷史命令保留數
- 加大檔案描述
- 核心優化
- 設定系統口令策略
- ssh連線限制
- 遮蔽登入banner資訊
- 禁止Ctrl+Alt+Del重啟系統
- 禁ping
- CTCDN系統優化引數
- End
修改主機名
# centos6 cat /etc/sysconfig/network # centos7 hostnamectl set-hostname node01 vim /etc/hostname """ node01 """ # ubuntu
關閉防火牆和SELINUX
iptables -F
iptabls -L
systemctl stop firewalld
systemctl disable firewalld
vim /etc/selinux/config
"""
#SELINUX=enforcing
#SELINUXTYPE=targeted
SELINUX=disabled
"""
getenforce
配置網路
vim /etc/sysconfig/network-scripts/ifcfg-eno16777728 """ TYPE=Ethernet BOOTPROTO=static DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no NAME=eno16777728 UUID=f6e84975-d398-4925-bbbc-883aa2735a87 DEVICE=eno16777728 ONBOOT=yes IPADDR=172.16.0.1 GATEWAY=172.16.0.1 NETMASK=255.255.0.0 DNS1=172.16.0.1 """ systemctl restart network.service ##重啟服務 service network restart ip addr ###檢視網路狀態
修改yum源
# 本地源 cd /etc/yum.repo.d/ vim media.repo """ [base] name=media baseurl=file:///media/cdrom gpgcheck=0 """ mkdir /media/cdrom mount /dev/cdrom /media/cdrom # 國內yum源 wget http://mirrors.aliyun.com/repo/Centos-7.repo wget http://mirrors.163.com/.help/CentOS7-Base-163.repo # epel源 yum list | grep epel-release yum install -y epel-release wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo yum clean all yum makecache yum repolist enabled yum repolist all
時間同步
echo '#time sync by oldboy 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
精簡自啟程式
chkconfig --list | egrep -v "crond|network|rsyslog|sshd|sysstat" | awk -F "" '{print "chkconfig",$1,"off"}' | bash
必須最低保留的啟動服務:
crond:定時任務服務
network:網路服務
rsyslog:日誌服務
sshd:遠端連結服務
sysstat:系統監控服務(涉及一系列監控工具)
安裝常用軟體並更新已有軟體
yum install lrzsz nmap tree dos2unix nc -y
yum update
yum upgrade
yum -y update # 升級所有包,改變軟體設定和系統設定,系統版本核心都升級
yum -y upgrade # 升級所有包,不改變軟體設定和系統設定,系統版本升級,核心不改變
中文字符集
# centos6
yum -y groupinstall chinese-support # 安裝中文包
cp /etc/sysconfig/i18n /etc/sysconfig/i18n.ori
echo 'LANG="zh_CN.UTF-8"' >/etc/sysconfig/i18n
source /etc/sysconfig/i18n
echo $LANG
# centos7
locale # 檢視系統語言
vim /etc/locale.conf
"""
LANG="zh_CN.GB18030" # 英文en_US.UTF-8
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.UTF8:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"
"""
修改終端提示符
為了區分生產環境和測試環境
echo 'PS1="\[\e[1;5;41;32m\][\u@\h \W]\\$\[\e[0m\]"' >> ~/.bash_profile
PS1="[\e[1;5;41;33m][\u@\h \W]\$[\e[0m] " 紅色背景黃色字型閃爍,建議寫到root環境變數中
PS1="[\e[1;33m][\u@\h \W]\$[\e[0m] " 寫入到普通使用者環境變數中
31m:紅色
32m:綠色
33m:黃色
34m:藍色
35m:紫色
\u 當前使用者
\h 主機名簡稱
\H 主機名
\w 當前工作目錄
\W 當前工作目錄基名
\t 24小時時間格式
\T 12小時時間格式
! 命令歷史數
# 開機後命令歷史數
ssh優化
cp /etc/ssh/sshd_config{,.bak}
vim /etc/ssh/sshd_config
"""
Port 22
PermitEmptyPasswords no
PermitRootLogin no
UseDNS no
"""
service sshd restart
超時登出登入
cat /etc/profile
cp -p /etc/profile /etc/profile_bak
vi /etc/profile
"""
TMOUT=600 # 秒
"""
歷史命令保留數
cat /etc/profile | grep HISTSIZE
cp -p /etc/profile /etc/profile_bak
vi /etc/profile
"""
HISTSIZE=10000
"""
最大儲存1000條,且是上次登出前最近的1000條記錄
加大檔案描述
echo '* - nofile 65535 ' >>/etc/security/limits.conf
tail -1 /etc/security/limits.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
"""
設定系統口令策略
# 檢視密碼策略設定
cat /etc/login.defs | grep PASS
cp -p /etc/login.defs /etc/login.defs_bak
vim /etc/login.defs
"""
PASS_MAX_DAYS 90 # 新建使用者的密碼最長使用天數
PASS_MIN_DAYS 0 # 新建使用者的密碼最短使用天數
PASS_WARN_AGE 7 # 新建使用者的密碼到期提前提醒天數
PASS_MIN_LEN 8 # 最小密碼長度9
"""
注:如果需要單獨對某個使用者密碼不限制最長時間
passwd –x 99999 使用者名稱;或者passwd –x -1 使用者名稱
ssh連線限制
cat /etc/ssh/sshd_config # 檢視有無AllowUsers的語句
cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
vi /etc/ssh/sshd_config
"""
AllowUsers *@10.138.*.* # 僅允許10.138.0.0/16網段所有使用者通過ssh訪問
"""
service sshd restart
遮蔽登入banner資訊
at /etc/ssh/sshd_config 檢視檔案中是否存在Banner欄位,或banner欄位為NONE
cat /etc/motd 檢視檔案內容,該處內容將作為banner資訊顯示給登入使用者。
cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
cp -p /etc/motd /etc/motd_bak
vi /etc/ssh/sshd_config
"""
banner NONE
"""
vi /etc/motd
"""
刪除全部內容或更新成自己想要新增的內容
"""
禁止Ctrl+Alt+Del重啟系統
cat /etc/inittab | grep ctrlaltdel 檢視輸入行是否被註釋
cp -p /etc/inittab /etc/inittab_bak
vi /etc/inittab
"""
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
"""
禁ping
# 1
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all # 0允許ping
# 2
cat /etc/sysconfig/iptables
"""
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j DROP
"""
CTCDN系統優化引數
cat /etc/sysctl.conf
#關閉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