centos系統初始化
初始化常用環境變量
1
# vi .bashrc
2
alias worksrc='cd /usr/local/src;ls'
3
配置生效
4
# source .bashrc
yum預裝常用的服務器軟件
01
#vim linux編輯器
02
#wget 網絡自動下載文件的工具,支持通過HTTP、HTTPS、FTP三個最常見的TCP/IP協議下載
03
#crontab cron是一個常駐服務,它提供計時器的功能,讓用戶在特定的時間得以執行預設的指令或程序。只要用戶會編輯計時器的配置文件,就可以使 用計時器的功能
04
#mlocate 基於數據庫快速查找文件,經常用updatedb命令更新數據庫
05
#ntp 時間同步服務組件
06
#SecureCRT的sz/rz工具包
07
yum -y install vim wget gcc make crontabs mlocate ntp lrzsz gcc-c++ autoconf;
08
#
09
#sysstat:是一個軟件包,包含監測系統性能及效率的一組工具,這些工具對於我們收集系統性能數據,比如CPU使用率、硬盤和網絡吞吐數據,這些數據的收集和分析,有利於我們判斷系統是否正常運行,是提高系統運行效率、安全運行服務器的得力助手
10
#dstat:用來替換 vmstat,iostat,netstat,nfsstat和ifstat這些命令的工具是一個全能彩色系統信息統計工具
11
#screen:類似nohup,能同時連接多個本地或遠程的命令行會話,並在其間自由切換,適合遠程管理終端長時間遠程跑的程序
12
yum -y install sysstat dstat screen ;
13
#
14
#top是linux下常用的監控程序,htop相當於其加強版,顏色顯示不同參數,且支持鼠標操作
15
#安裝支持組件
16
wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.9.tar.gz
17
tar xvfz ncurses-5.9.tar.gz
18
cd ncurses-5.9
19
./configure
20
make
21
make install
22
#安裝htop: 主頁http://sourceforge.net/projects/htop/files/htop/
23
wget http://sourceforge.net/projects/htop/files/htop/1.0.2/htop-1.0.2.tar.gz/download
24
tar zxvf htop-1.0.2.tar.gz
25
cd htop-1.0.2
26
./configure
27
make
28
make install
時間和時區設置
查看當前時區時間
1
date -R
每隔10分鐘同步一下時鐘
1
echo " */10 * * * * /usr/sbin/ntpdate 61.129.42.44 >> /home/ntp.log" >> /var/spool/cron/root
2
service crond restart
3
/usr/sbin/ntpdate 61.129.42.44
替換默認時區為上海
1
rm -rf /etc/localtime #刪除當前默認時區
2
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #復制替換默認時區為上海
防火牆配置腳本
iptables.rule:設定最基本的規則,包括清除防火牆規則、載入模組、設定服務可接受等;
iptables.deny:設定抵擋某些惡意主機的進入;
iptables.allow:設定允許某些自訂的後門來源主機!
001
[root@www ~]# mkdir -p /usr/local/iptables
002
[root@www ~]# cd /usr/local/iptables
003
[root@www iptables]# vim iptables.rule
004
#!/bin/bash
005
# 請先輸入您的相關參數,不要輸入錯誤了!
006
EXTIF="eth0" # 這個是可以連上 Public IP 的網絡界面
007
INIF="eth1" # 內部 LAN 的連接介面;若無則寫成 INIF=""
008
INNET="192.168.100.0/24" # 若無內部網絡介面,請填寫成 INNET=""
009
export EXTIF INIF INNET
010
# 第一部份,針對本機的防火牆設定!##########################################
011
# 1. 先設定好核心的網路功能:
012
echo "1" > /proc/sys/net/ipv4/tcp_syncookies #開啟 TCP Flooding的DoS攻擊抵擋機制,但這個設定不適合loading已經很高的主機
013
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts #取消 ping 廣播的回應
014
#開啟逆向路徑過濾,以符合 IP 封包與網路介面的設定,開啟記錄有問題的封包
015
for i in /proc/sys/net/ipv4/conf/*/{rp_filter,log_martians}; do
016
echo "1" > $i
017
done
018
#取消來源路由,這個設定值是可以取消的;取消重新宣告路徑的功能;取消傳送重新宣告路徑的功能
019
for i in /proc/sys/net/ipv4/conf/*/{accept_source_route,accept_redirects,\
020
send_redirects}; do
021
echo "0" > $i
022
done
023
# 2. 清除規則、設定預設政策及開放 lo 與相關的設定值
024
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin; export PATH
025
#清除已有規則
026
iptables -F
027
iptables -X
028
iptables -Z
029
#設置默認策略
030
iptables -P INPUT DROP
031
iptables -P OUTPUT ACCEPT
032
iptables -P FORWARD ACCEPT
033
#開放lo
034
iptables -A INPUT -i lo -j ACCEPT
035
#只要是聯機成功的數據包或與已發出去請求相關的數據包就予以通過
036
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
037
# 3. 啟動額外的防火牆 script 模組
038
if [ -f /usr/local/iptables/iptables.deny ]; then
039
sh /usr/local/iptables/iptables.deny
040
fi
041
if [ -f /usr/local/iptables/iptables.allow ]; then
042
sh /usr/local/iptables/iptables.allow
043
fi
044
if [ -f /usr/local/httpd-err/iptables.http ]; then
045
sh /usr/local/httpd-err/iptables.http
046
fi
047
# 4. 允許某些類型的 ICMP 封包進入,通常我們會把ICMP type 8拿掉,讓遠程主機不知道主機是否存在,也不會對ping回應
048
AICMP="0 3 3/4 4 11 12 14 16 18"
049
for tyicmp in $AICMP
050
do
051
iptables -A INPUT -i $EXTIF -p icmp --icmp-type $tyicmp -j ACCEPT
052
done
053
# 5. 允許某些服務的進入,請依照你自己的環境開啟
054
iptables -A INPUT -p TCP -i $EXTIF --dport 22 --sport 1024:65534 -j ACCEPT # SSH
055
iptables -A INPUT -p TCP -i $EXTIF --dport 80 --sport 1024:65534 -j ACCEPT # WWW
056
# iptables -A INPUT -p TCP -i $EXTIF --dport 21 --sport 1024:65534 -j ACCEPT # FTP
057
# iptables -A INPUT -p TCP -i $EXTIF --dport 25 --sport 1024:65534 -j ACCEPT # SMTP
058
# iptables -A INPUT -p UDP -i $EXTIF --dport 53 --sport 1024:65534 -j ACCEPT # DNS
059
# iptables -A INPUT -p TCP -i $EXTIF --dport 53 --sport 1024:65534 -j ACCEPT # DNS
060
# iptables -A INPUT -p TCP -i $EXTIF --dport 110 --sport 1024:65534 -j ACCEPT # POP3
061
# iptables -A INPUT -p TCP -i $EXTIF --dport 443 --sport 1024:65534 -j ACCEPT # HTTPS
062
# 第二部份,針對後端主機的防火牆設定!###############################
063
# 1. 先載入一些有用的模組
064
modules="ip_tables iptable_nat ip_nat_ftp ip_nat_irc ip_conntrack
065
ip_conntrack_ftp ip_conntrack_irc"
066
for mod in $modules
067
do
068
testmod=`lsmod | grep "^${mod} " | awk '{print $1}'`
069
if [ "$testmod" == "" ]; then
070
modprobe $mod
071
fi
072
done
073
# 2. 清除 NAT table 的規則吧!
074
iptables -F -t nat
075
iptables -X -t nat
076
iptables -Z -t nat
077
iptables -t nat -P PREROUTING ACCEPT
078
iptables -t nat -P POSTROUTING ACCEPT
079
iptables -t nat -P OUTPUT ACCEPT
080
# 3. 若有內部介面的存在 (雙網卡) 開放成為路由器,且為 IP 分享器!
081
if [ "$INIF" != "" ]; then
082
iptables -A INPUT -i $INIF -j ACCEPT
083
echo "1" > /proc/sys/net/ipv4/ip_forward
084
if [ "$INNET" != "" ]; then
085
for innet in $INNET
086
do
087
iptables -t nat -A POSTROUTING -s $innet -o $EXTIF -j MASQUERADE
088
done
089
fi
090
fi
091
# 如果你的 MSN 一直無法連線,或者是某些網站 OK 某些網站不 OK,
092
# 可能是 MTU 的問題,那你可以將底下這一行給他取消註解來啟動 MTU 限制范圍
093
# iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss \
094
# --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu
095
# 4. NAT 伺服器後端的 LAN 內對外之伺服器設定
096
# iptables -t nat -A PREROUTING -p tcp -i $EXTIF --dport 80 \
097
# -j DNAT --to-destination 192.168.1.210:80 # WWW
098
# 5. 特殊的功能,包括 Windows 遠端桌面所產生的規則,假設桌面主機為 1.2.3.4
099
# iptables -t nat -A PREROUTING -p tcp -s 1.2.3.4 --dport 6000 \
100
# -j DNAT --to-destination 192.168.100.10
101
# iptables -t nat -A PREROUTING -p tcp -s 1.2.3.4 --sport 3389 \
102
# -j DNAT --to-destination 192.168.100.20
103
# 6. 最終將這些功能儲存下來吧!
104
/etc/init.d/iptables save
iptables.allow腳本設置
1
[root@www iptables]# vim iptables.allow
2
#!/bin/bash
3
# 允許進入本機的其他網絡或主機啊!
4
iptables -A INPUT -i $EXTIF -s 140.116.44.0/24 -j ACCEPT
iptables.deny腳本設置
1
[root@www iptables]# vim iptables.deny
2
#!/bin/bash
3
# 阻擋的主機ip或者主機所在的整個網段
4
iptables -A INPUT -i $EXTIF -s 140.116.44.254 -j DROP
腳本權限設置
1
[root@www iptables]# chmod 700 iptables.*
開機啟動
1
[root@www ~]# vim /etc/rc.d/rc.local
2
# 1. Firewall
3
/usr/local/iptables/iptables.rule
優化內核參數
優化內核具體要看此服務器安裝的軟件,實現的功能,參數不是一成不變的,要隨著改變
01
mv /etc/sysctl.conf /etc/sysctl.conf.`date +"%Y-%m-%d_%H-%M-%S"`
02
echo "net.ipv4.ip_forward = 0
03
net.ipv4.conf.default.rp_filter = 1
04
net.ipv4.conf.default.accept_source_route = 0
05
net.ipv6.conf.all.disable_ipv6 = 1
06
net.ipv6.conf.default.disable_ipv6 = 1
07
kernel.sysrq = 0
08
kernel.core_uses_pid = 1
09
net.ipv4.tcp_syncookies = 1
10
kernel.msgmnb = 65536
11
kernel.msgmax = 65536
12
kernel.shmmax = 68719476736
13
kernel.shmall = 4294967296
14
net.ipv4.tcp_max_tw_buckets = 6000
15
net.ipv4.tcp_sack = 1
16
net.ipv4.tcp_window_scaling = 0
17
net.ipv4.tcp_rmem = 4096 87380 16777216
18
net.ipv4.tcp_wmem = 4096 16384 16777216
19
net.core.wmem_default = 8388608
20
net.core.rmem_default = 8388608
21
net.core.rmem_max = 16777216
22
net.core.wmem_max = 16777216
23
net.core.netdev_max_backlog = 262144
24
net.core.somaxconn = 262144
25
net.ipv4.tcp_max_orphans = 3276800
26
net.ipv4.tcp_max_syn_backlog = 262144
27
net.ipv4.tcp_timestamps = 0
28
net.ipv4.tcp_synack_retries = 1
29
net.ipv4.tcp_syn_retries = 1
30
net.ipv4.tcp_tw_recycle = 1
31
net.ipv4.tcp_tw_reuse = 1
32
net.ipv4.tcp_mem = 94500000 915000000 927000000
33
net.ipv4.tcp_fin_timeout = 15
34
net.ipv4.tcp_keepalive_time = 30
35
vm.swappiness = 10" >> /etc/sysctl.conf
36
sysctl -p
總結:經過上面一系列的配置,服務器初始化大部分完成,尤其注意防火牆設置,一旦處理不好,就有可能把自己關在門外!