網卡配置
CentOS 6.x

1 vi /etc/sysconfig/network-scripts/ifcfg-eth0 2 3 DEVICE="eth0" 4 BOOTPROTO="static" 5 HWADDR="00:50:56:8F:01:3D" 6 NM_CONTROLLED="no" 7 ONBOOT="yes" 8 TYPE="Ethernet" 9 UUID="fdabdc89-ad4b-45ea-a860-83f1bc9f48c8" 10 IPADDR=192.168.9.27 11 NETMASK=255.255.255.0 12 GATEWAY=192.168.9.254 13 DNS1=114.114.114.114 14 DNS2=8.8.8.8 15 16 # 重啟網卡, 使配置生效 17 /etc/init.d/network restart 18 19 # 查看網卡是否生效 20 ifconfig eth0 21 eth0 Link encap:Ethernet HWaddr 00:50:56:8F:01:3D 22 inet addr:192.168.9.27 Bcast:192.168.9.255 Mask:255.255.255.0 23 inet6 addr: fe80::250:56ff:fe8f:13d/64 Scope:Link 24 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 25 RX packets:4521395 errors:0 dropped:0 overruns:0 frame:0 26 TX packets:157653 errors:0 dropped:0 overruns:0 carrier:0 27 collisions:0 txqueuelen:1000 28 RX bytes:564465601 (538.3 MiB) TX bytes:16694989 (15.9 MiB)
CentOS 7.x
# 修改 CentOS 7 網卡名為 eth0 cd /etc/sysconfig/network-scripts mv ifcfg-ens160 ifcfg-eth0 vi ifcfg-eth0 # Generated by dracut initrd # NAME="ens160" # DEVICE="eth0" NAME="eth0" DEVICE="eth0" ONBOOT=yes NETBOOT=yes UUID="eb965b1d-1978-475c-bc27-25b260b0baac" IPV6INIT=yes BOOTPROTO=static TYPE=Ethernet IPADDR=192.168.9.27 NETMASK=255.255.255.0 GATEWAY=192.168.9.1 # 因 CentOS7 采用 grub2 引導,還需要對 grub2 進行修改,編輯 /etc/default/grub 配置文件,在 GRUB_CMDLINE_LINUX 這個參數后面加入 net.ifnames=0 biosdevname=0 vi /etc/default/grub GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0 crashkernel=auto rhgb quiet" GRUB_DISABLE_RECOVERY="true" # 用 grub2-mkconfig 命令重新生成GRUB配置並更新內核 grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-fb511531b5c644a79810fbc5a52fe83c Found initrd image: /boot/initramfs-0-rescue-fb511531b5c644a79810fbc5a52fe83c.img # 重啟系統 reboot # 配置 DNS, 同樣可以在配置網卡的時候配置 DNS1 / DNS2 vi /etc/resolv.conf nameserver 114.114.114.114 nameserver 8.8.8.8
Centos 7.x 修改網卡名, 在裝機的時候進行更改
- 安裝系統時, 在選擇菜單的界面, 按 Tab 鍵, 打開 Kernel 啟動選項
- 增加內核參數 : net.ifnames=0 biosdevname=0
- 輸入完成之后回車正常安裝操作系統.
修改主機名
CentOS 6.x
# 臨時修改; hostname web_1 # 永久修改主機名,重啟生效; vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=web_1 # 修改 hosts 文件, 本地解析, 可以將localhost.localdomain替換為web_1,或者追加; vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 web_1 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
# 查看主機名
uname -n 或者 hostname
CentOS 7.x
# 臨時修改 hostname tian # 永久修改,退出登錄終端重新登錄生效; hostnamectl set-hostname tian # 永久修改2, 需要重啟生效; vim /etc/hostname tian # 查看主機名 uname -n 或者 hostname
更換國內阿里雲yum源
CentOS 6.x
# 備份源yum源 cd /etc/yum.repos.d && mkdir back mv *.repo back wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo # 或者使用 curl curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo # 清除yum緩存 yum clean all # 緩存yum源的安裝包 yum makecache
CentOS 7.x
# 備份源yum源 cd /etc/yum.repos.d && mkdir back mv *.repo back wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 或者使用 curl curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 清除yum緩存 yum clean all # 緩存yum源的安裝包 yum makecache
安裝系統軟件庫
# 開發工具, 源碼安裝服務需要 yum -y groupinstall "Development tools"
yum -y vim lrzsz ntp unzip
時間同步
# 查看系統時區是否為 上海 vim /etc/sysconfig/clock ZONE="Asia/Shanghai" UTC=false # 設置為false,硬件始終不與utc時間一致 ARC=false # 若時區不是上海 rm -f /etc/localtime # 刪除時間文件; ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 時區設置為上海 # 進行時間同步 (ntp1.aliyun.com / time.nist.gov / asia.pool.ntp.org) ntpdate time.nist.gov # 設置硬件時間與系統時間一致並校准 hwclock --show # 顯示硬件時間 hwclock --systohc # hwclock 命令的使用 hwclock -r or hwclock --show # 顯示時間 hwclock -w or hwclock --systohc # 用系統時間同步硬件時間 hwclock -s or hwclock --hctosys # 用硬件時間同步系統時間 hwclock -a or hwclock --adjust # 矯正時間 hwclock -v or hwclock --version # 工具版本 hwclock --set --date=newdate # 設置時間 # CentOS 7 查看系統時間及硬件時間 timedatectl # 添加時間同步定時任務 crontab -e 00 01 * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1 ; /sbin/hwclock -w
# ntp 常用服務器
中國國家授時中心: 210.72.145.44
NTP 服務器(上海): ntp.api.bz
微軟公司授時主機(美國): time.windows.com
內核參數優化
# 在 /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 = 10000 65000 net.ipv4.tcp_max_syn_backlog = 16384 net.ipv4.tcp_max_tw_buckets = 6000 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.ipv4.tcp_keepalive_probes=5
net.core.netdev_max_backlog=3000 EOF # 立即生效添加項 sysctl -p # ************************* 參數講解 ******************************** # 表示套接字由本端要求關閉,這個參數決定了他保持在 FIN_WAIT_2 狀態的時間, 默認值是 60 秒; 該參數對應系統給路徑為: /proc/sys/net/ipv4/tcp_fin_timeout net.ipv4.tcp_fin_timeout # 表示開啟重用,允許將 TIME_WAIT sockets重新用於新的TCP連接, 默認值為0, 表示關閉; 該參數對應系統路徑為: /proc/sys/net/ipv4/tcp_tw_reuse net.ipv4.tcp_tw_reuse # 表示開啟 TCP 連接中 TIME_WAIT sockets 的快速回收, 默認值為0 , 表示關閉; 該參數的對應系統路徑為: /proc/sys/net/ipv4/tcp_tw_recycle net.ipv4.tcp_tw_recycle # 上面兩個 reuse和recycle 兩個參數是為了放置生產環境中 WEB , Squid 等業務服務器 time_wait網絡狀態數量過多; # 表示開啟 SYN Cookies功能,當出現 SYN 等待隊列溢出時, 啟用 Cookies 來處理, 可防范少量SYN攻擊, 這個參數可不添加, 對應系統路徑: /proc/sys/net/ipv4/tcp_syncookies net.ipv4.tcp_syncookies # 表示當keepalive啟用時, TCP 發送keepalive消息的頻度, 默認是2小時, 建議 10 分鍾; 對應系統路徑: /proc/sys/net/ipv4/tcp_keepalive_time, 默認 7200 秒; net.ipv4.tcp_keepalive_time # 表示設定允許系統打開的端口范圍, 即用於向外連接的端口范圍; 對應系統路徑:/proc/sys/net/ipv4/ip_local_port_range net.ipv4.ip_local_port_range # 表示 SYN 隊列的長度, 默認為 1024, 建議加大隊列的長度為 8192 或者更大,這樣可以容納更多等待連接的網絡連接數,該參數為服務器端用於記錄那些尚未收到客戶端確認信息的連接請求最大值; 對應系統路徑: /proc/sys/net/ipv4/tcp_max_syn_backlog net.ipv4.tcp_max_syn_backlog # 表示系統同時保持 TIME_WAIT 套結字的最大數量,如果超過這個數值,TIME_WAIT套接字將立刻被清除並打印警告信息, 默認 180000, 對於 apache , nginx 等服務器來說可以將其調低一點, 5000~30000間, 不同業務的服務器也可以大一點, 如 LVS , Squid; 此參數可以控制 TIME_WAIT 套接字的最大數量, 避免 Squid 服務器被大量的TIME_WAIT套接字拖死; 對應系統路徑:/proc/sys/net/ipv4/net.ipv4.tcp_max_tw_buckets net.ipv4.tcp_max_tw_buckets # 該參數的值決定了內核放棄連接前發送 SYN+ACK 包的數量; 對應系統路徑為: /proc/sys/net/ipv4/net.ipv4.tcp_synack_retries net.ipv4.tcp_synack_retries # 表示在內核放棄建立連接之前發送 SYN 包的數量; 對應系統路徑:/proc/sys/net/ipv4/net.ipv4.tcp_syn_retries net.ipv4.tcp_syn_retries # 用於設定系統中最多有多少個TCP套接字不被關聯到任何一個用戶文件句柄上,如果超過這個數值,孤立連接將被立即被復位並打印出警告信息,這個限制只有為了防止簡單的DoS攻擊,不能過分依靠這個限制甚至認為減少這個值,更多的情況是增加這個值;對應系統路徑為:/proc/sys/net/ipv4/tcp_max_orphans net.ipv4.tcp_max_orphans # 該選項默認值是128,這個參數用於調節系統同時發起的TCP連接數,在高並發的請求中,默認的值可能會導致鏈接超時或重傳,因此,需要結合並發請求數來調節此值,對應系統路徑為:/proc/sys/net/core/somaxconn net.core.somaxconn # 表示當每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許發送到隊列的數據包最大數,對應系統路徑為:/proc/sys/net/core/netdev_max_backlog,默認值為1000 net.core.netdev_max_backlog
#減少超時前的探測次數
net.ipv4.tcp_keepalive_probes=5
#優化網絡設備接收隊列
net.core.netdev_max_backlog=3000
關閉防火牆及selinux機制
CentOS 6.x
/etc/init.d/iptables stop # 關閉防火牆 chkconfig iptables off # 關閉開機自啟 setenforce 0 # 臨時關閉 selinux機制 sed -i '/^SELINUX/ s/enforcing/disabled/' /etc/selinux/config # 永久關閉selinux機制
CentOS 7.x
systemctl stop firewalld # 關閉防火牆 systemctl disable firewalld # 關閉開機啟動; setenforce 0 # 臨時關閉 selinux機制 sed -i '/^SELINUX/ s/enforcing/disabled/' /etc/selinux/config # 永久關閉selinux機制
精簡開機啟動
CentOS 6.x
# 5個必須保留的開機啟動服務( sshd/rsyslog/network/crond/sysstat ) sshd # 遠程連接Linux服務器需要的服務; rsyslog # 操作系統提供的一種機制,系統的守護程序通常會使用rsyslog將各種信息記錄到系統日志中,Centos6以前服務為syslog network # 系統啟動時,網絡服務 crond # 用於周期性執行系統及用戶配置的任務計划; sysstat # 是一個軟件包,包含監測系統性能及效率的一組工具,此工具對系統性能數據很有幫助,硬盤和網絡吞吐數據等,這些數據的分析, 有利於判斷系統運行是否正常; 它是提高系統運行效率, 安全運行服務器的助手; for i in `chkconfig --list|grep 3:on|grep -Ev "sysstat|sshd|rsyslog|crond|network"|awk '{print $1}'`;do chkconfig $i off;done chkconfig --list|grep 3:on crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off network 0:off 1:off 2:on 3:on 4:on 5:on 6:off rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off sysstat 0:off 1:on 2:on 3:on 4:on 5:on 6:off
CentOS 7.x
# systemctl 是管制服務的主要工具, 它整合了chkconfig 與 service ; # 查看服務是否為開機啟動, 以防火牆為例, 服務后面可不加 .service systemctl is-enabled firewalld.service # 查看所有服務的開機啟動狀態 systemctl list-unit-files # 查看並過濾開機啟動的所有服務 systemctl list-unit-files |grep enable auditd.service enabled # 安全審計; autovt@.service enabled # 登錄終端相關;與/etc/systmd/logind.conf配置文件中 NAutoVTs = 的數值(開啟的終端數量)有關,開啟終端就是自動從autovt@.service模板實例化; chronyd.service enabled # 保持系統時鍾與時鍾服務器(NTP)同步; crond.service enabled # 定時任務; dbus-org.freedesktop.NetworkManager.service enabled # 桌面網卡; 關閉 dbus-org.freedesktop.nm-dispatcher.service enabled getty@.service enabled # tty控制台; irqbalance.service enabled # 優化系統中斷分配,自動收集系統數據以分析使用模式,並依據系統負載狀況將工作狀態置於 Performance mode 或 Power-save mode; 處於Performance mode 時,irqbalance 會將中斷盡可能均勻地分發給各個 CPU core,以充分利用 CPU 多核,提升性能,在機器需要高並發時,建議開始該服務。處於Power-save mode 時,irqbalance 會將中斷集中分配給第一個 CPU,以保證其它空閑 CPU 的睡眠時間,降低能耗; kdump.service enabled # 內核崩潰信息捕獲; lvm2-monitor.service enabled # 系統支持邏輯分區; microcode.service enabled # 處理器穩定性增強; NetworkManager-dispatcher.service enabled # 網卡守護進程; 關閉 NetworkManager.service enabled postfix.service enabled # 郵件服務; 關閉 rsyslog.service enabled # 日志服務; sshd.service enabled # ssh登錄服務; systemd-readahead-collect.service enabled # 內核調用--預讀取; systemd-readahead-drop.service enabled systemd-readahead-replay.service enabled tuned.service enabled # 系統調優工具;tuned 是服務端程序,用來監控和收集系統各個組件的數據,並依據數據提供的信息動態調整系統設置,達到動態優化系統的目的;tuned-adm 是客戶端程序,用來和 tuned 打交道,用命令行的方式管理和配置 tuned,tuned-adm 提供了一些預先配置的優化方案可供直接使用 vgauthd.service enabled vmtoolsd.service enabled dm-event.socket enabled lvm2-lvmetad.socket enabled lvm2-lvmpolld.socket enabled default.target enabled # multi-user.target軟鏈; multi-user.target enabled # 啟動用戶命令環境; remote-fs.target enabled # 集合遠程文件掛載點; runlevel2.target enabled # 運行級別,用於兼容6的SysV; runlevel3.target enabled runlevel4.target enabled
更改系統文件句柄數及用戶連接數
# ulimit 控制shell程序的資源; Linux系統默認打開文件描述的最大值為 1024;需要修改文件句柄數;全局所有用戶修改使用/etc/security/limits.d/90-nproc.conf; 針對用戶的修改/etc/security/limits.conf(* - nofile 65535 表示軟硬hard/soft兩者)
重新登錄生效
vim /etc/security/limits.d/90-nproc.conf ... ... * soft nproc 10240 * hard nproc 10240 * soft nofile 65535 * hard nofile 65535 vim /etc/security/limits.conf ... ... tian soft nofile 20480 # ulimit命令參數簡介;使用命令是當前終端臨時修改; # 參 數: -H 設置硬件資源限制,是管理員所設下的限制. -S 設置軟件資源限制,是管理員所設下的限制. -a 顯示當前所有的資源限制. -u 進程數目:用戶最多可啟動的進程數目. -c size:設置core文件的最大值.單位:blocks -d size:設置程序數據段的最大值.單位:kbytes -f size:設置shell創建文件的最大值.單位:blocks -l size:設置在內存中鎖定進程的最大值.單位:kbytes -m size:設置可以使用的常駐內存的最大值.單位:kbytes -n size:設置內核可以同時打開的文件描述符的最大值.單位:n -p size:設置管道緩沖區的最大值.單位:kbytes -s size:設置堆棧的最大值.單位:kbytes -t size:設置CPU使用時間的最大上限.單位:seconds -v size:設置虛擬內存的最大值.單位:kbytes # 全局所有用戶修改還可以修改 /etc/profile, 在文件中添加ulimit命令;例如 vim /etc/profile ... ... ulimit -n 65535 ulimit -u 10240 ... ... 等等
鎖定關鍵系統文件
# 鎖定文件,可以空格分開多個同時寫; chattr +a /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab # 解鎖文件 chattr -a /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab # 查看文件是否鎖定 lsattr /etc/passwd -----a-------e- /etc/passwd 或者 ----i--------e- /etc/passwd # chattr加鎖解鎖選項 +a +i -a -i 選項"i": 文件: 允許對文件刪除, 改名; 不能添加修改刪除文件中的數據; 目錄: 允許修改目錄下文件的數據; 不能建立和刪除文件; 選項"a": 文件: 只能使用>>追加數據;不能刪除也不能修改數據; 目錄: 允許在目錄中建立和修改文件,但不允許刪除;
(可選) 修改系統語言為中文
CentOS 6.x
# 查看系統所有的語言環境 及 查看當前的系統語言環境 locale -a echo $LANG # 若沒有中文語言包,安裝中文包 yum groupinstall chinese-support # 臨時生效 LANG="zh_CN.UTF-8" # 永久生效, 重啟系統; vim /etc/sysconfig/i18n LANG="zh_CN.UTF-8" SYSFONT="latarcyrheb-sun16"
CentOS 7.x
# 查看系統所有的語言環境 及 查看當前的系統語言環境 locale -a echo $LANG # 若是沒有中文語言包進行安裝 yum -y install kde-l10n-Chinese # 臨時修改,重啟后恢復原來系統語言 LANG=zh_CN.UTF-8 # 永久修改, 重啟生效 localectl set-locale LANG=zh_CN.UTF-8 # 使用命令直接更改 或者 vim /etc/locale.conf # LANG="en_US.UTF-8" 注釋掉此系統語言 LANG="zh_CN.UTF-8" # 重新定義系統語言為中文
隱藏登錄界面的系統信息
# 去掉系統登錄是提示的系統信息(系統版本,內核版本等) vim /etc/issue CentOS release 6.5 (Final) Kernel \r on an \m # 將以上兩行刪除,寫上你想展現的內容;例如 vim /etc/issue localtime: \d users: \u tty: \l # 此文件中\r等代表的內容 \d //本地時間的日期; \l //顯示當前tty的名字及第幾個tty; \m //顯示硬件的架構(i386/i486/i586...); \n //顯示主機的網絡名稱; \o //顯示domain name; \r //當前內核的版本; \t //顯示本地端時間的時間; \u //當前有幾個用戶在線; \s //當前系統的名稱; \v //當前系統的版本;
服務器禁ping
# 查看服務器允許 ping 的狀態 cat /proc/sys/net/ipv4/icmp_echo_ignore_all 0 # "0" 表示開啟狀態, 能ping通; # 臨時禁 ping, echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all # 永久禁 ping, 修改配置文件sysctl.conf vim /etc/sysctl.conf ... ... net.ipv4.icmp_echo_ignore_all= 1 # 立即生效 sysctl -p
******************************************************************* 防火牆禁 ping *********************************************************************************************
# -*- 禁止ping設置 -*-
iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
/etc/init.d/iptables save
/etc/init.d/iptables restart
# 防火牆命令解釋
-A:添加防火牆規則.
INPUT:入站規則.
-p icmp:指定包檢查的協議為ICMP協議.
--icmp-type 8:指定ICMP類型為8.
-s:指定IP和掩碼,“0/0”表示此規則針對所有IP和掩碼.
-j:指定目標規則,即包匹配則應到做什么,"DROP"表示丟棄.
用戶登錄及歷史命令
// 記錄用戶的登錄與操作(操作日志記錄 /tmp/dbasky/root/192.168.10.108\)
# vim /etc/profile
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'` if [ "$USER_IP" = "" ] then USER_IP=`hostname` fi if [ ! -d /tmp/dbasky ] then mkdir /tmp/dbasky chmod 755 /tmp/dbasky fi if [ ! -d /tmp/dbasky/${LOGNAME} ] then mkdir /tmp/dbasky/${LOGNAME} chmod 300 /tmp/dbasky/${LOGNAME} fi export HISTSIZE=4096 DT=`date "+%Y-%m-%d_%H-%M-%S"` export HISTFILE="/tmp/dbasky/${LOGNAME}/${USER_IP}-dbasky.$DT" export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S]" chmod 600 /tmp/dbasky/${LOGNAME}/*dbasky* 2>/dev/null