下文小編整理了一篇Linux系統VPS安全與優化設置教程,希望這篇文章能夠對各位帶來幫助哦,雖然不是很高級但絕對是有用的.
VPS安全設置
一、用戶權限安全設置
root權限太高,誤操作就相當危險,所以日常操作使用普通賬號,只有特定時候才使用su切換到root身份.
①、新建普通用戶,比如zhangge
useradd zhangge
②、修改密碼
passwd zhangge
③、將帳號加入wheel組
usermod -G wheel zhangge
④、設置只允許這個組的帳號,使用su命令切換到root
vim /etc/pam.d/su
找到#auth required pam_wheel.so use_uid
去掉行首的注釋符 # 然后使用:wq 保存退出
接著vim /etc/login.defs
在最末添加SU_WHEEL_ONLY yes,再用:wq保存退出即可。
Ps:執行 echo "SU_WHEEL_ONLY yes">>/etc/login.defs 亦可。
現在,再建立新的普通帳號,是無法使用su命令切換到root組了,感興趣的可以測試下效果.
⑤、刪除掉不需要的用戶和用戶組
禁止所有默認的被操作系統本身啟動的并且不必要的賬號,賬號越多,系統就越容易受到攻擊.
- userdel adm
- userdel lp
- userdel sync
- userdel shutdown
- userdel halt
- userdel news
- userdel uucp
- userdel operator
- userdel games
- userdel gopher
- userdel ftp
- groupdel lp
- groupdel news
- groupdel uucp
- groupdel games
- groupdel dip
- groupdel pppusers
⑥、鎖定口令文件
執行chattr命令給下面的文件加上不可更改屬性,從而防止非授權用戶獲得權限.
- Shell
- chattr +i /etc/passwd
- chattr +i /etc/shadow
- chattr +i /etc/group
- chattr +i /etc/gshadow
二、SSH安全設置
①、修改SSH端口
默認的SSH使用22端口,眾所周知,所以我們有必要自定義只有自己才知道的端口號,而且增加那些惡意掃描端口的難度,建議把SSH端口改到10000以上,比如使用23212,如下修改:
Ps:修改前,請執行iptables -nL 確認防火墻未設置非22/80訪問限制規則,否則可能導致修改后無法使用自定義端口連接就悲劇了.
vim /etc/ssh/sshd_config 編輯SSH配置文件
i. 找到#Port 22,去掉#號,并在下面添加Port 23212(先保留22端口,等23212成功連接再去掉22,保險做法)
ii. 繼續找到#UseDNS yes,改成UseDNS no,可以提高ssh的連接速度;
iii. 找到#PermitRootLogin Yes 改成 PermitRootLogin no 禁止root遠程使用ssh登錄
iv. 找到#PermitEmptyPasswords no,去掉#號, 禁止空密碼登錄
最后,使用 :wq 保存退出,再執行 service sshd restart 重啟 ssh服務即可生效.
此時,可以新開一個終端,測試能否通過23212端口連線,如果可以就把之前保留的port 22刪除即可.
三、防火墻簡單安全設定
這個VPS是直接使用公網IP的,防火墻還是得簡單設置下.
前期如下規劃:
僅作為web服務器使用,所以只需要開放SSH和HTTP端口即可,即只要開放上面定義的23212和80端口,由于不使用ftp,本例未提到21號端口,實際使用請注意辨別。
①、準備工作
由于操作防火墻具有一定的誤操作風險,很可能導致自己也被阻擋在外的悲劇,所以操作防火墻之前事先一定要先建立一個關閉防火墻的計劃任務,比如:
執行 crontab -e 加入:
1
*/5 * * * * root /etc/init.d/iptables stop
表示每5分鐘停止一次防火墻,以防誤操作把自己擋在外面,就算出現誤操作,5分鐘之內將會停止,也不會造成悲劇,這是一個技巧!
②、防火墻設置腳本
以下代碼我親測無誤,請放心使用,策略說明:
i. 僅開通HTTP(80)和SSH(自動抓取)端口,其他一律拒絕訪問!可根據實際需要在第10行添加其他端口,比如FTP的21端口、smtp25端口等。
ii. 單向禁ping設置,即外部IP無法ping通你的公網IP.
- Shell
- #!/bin/bash
- ssh_port=`netstat -nutlp | grep sshd | grep 0.0.0.0 | awk '{print $4}' | cut -d ":" -f2`
- iptables -F
- iptables -F -t nat
- iptables -X
- iptables -P INPUT DROP
- iptables -P OUTPUT ACCEPT
- iptables -P FORWARD DROP
- iptables -A INPUT -i lo -j ACCEPT
- iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT --Vevb.com
- iptables -A INPUT -p tcp -m multiport --dport 80,$ssh_port -j ACCEPT
- iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
- /etc/init.d/iptables save
- exit 0
確認無誤后,記得把第①步中的任務計劃取消.
如我的VPS防火墻規則如下.
四、其他安全設置
①、禁ping
執行如下命令即可:
Shell
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
然后用你的電腦ping服務器IP就可以看到效果了!當然如果你用了上面的防火墻腳本,就已經自帶禁ping功能了。兩種方法的區別如下:以上方法,ping能夠返回消息(前提是防火墻未做阻擋規則,否則直接超時):
采用防火墻的方法,則直接超時:
Ps:個人推薦使用上文的防火墻腳本設置,更徹底。
②、開啟TCP SYN Cookie保護
執行 echo 1 > /proc/sys/net/ipv4/tcp_syncookies 即可。
做到這里,你的VPS已經具備不錯的安全性了,當互聯網沒有絕對的安全可言,我們必須時刻注意網絡安全動態,隨時對已經暴露出的和潛在安全漏洞進行修補。
VPS優化設置
一、增加SWAP分區
VPS(Virtual Private Server 虛擬專用服務器)技術,將一部服務器分割成多個虛擬專享服務器的優質服務。每個VPS都可分配獨立公網IP地址、獨立操作系統、獨立超大空間、獨立內存、獨立執行程序和獨立系統配置等。
下面是配置過程中的一些筆記:VPS只有一個根分區,沒有swap交換分區。VPS內存不大,于是,我為其增加了一個swap交換文件。
1、進入一個目錄
cd /var/
2、獲取256M的文件塊:
dd if=/dev/zero of=swapfile bs=1024 count=262144
3、創建swap文件
/sbin/mkswap swapfile
4、激活swap文件
/sbin/swapon swapfile
5、查看一下swap是否正確:
/sbin/swapon -s
6、加到fstab文件中讓系統引導時自動啟動
vi /etc/fstab
在末尾增加以下內容:
/var/swapfile swap swap defaults 0 0
Ps:這個方法在瑪思閣以前的文章同樣整理過,詳見:給已安裝的Linux新增Swap交換分區。
二、修改Linux系統時區
系統默認為美國東部時間,修改Linux時區為東八區
cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
三、Linux內核參數優化
Linux內核參數優化可以使用 sysctl 命令完成,但是命令只能臨時生效,若要永久保留配置,我們就得編輯sysctl.conf這個文件了。先附上sysctl.conf詳細參數說明
sysctl.conf 文件中參數設置及參考推薦值
需要優化的朋友,可以參考上面的參數說明,并根據服務器實際負載來定制你的sysctl.conf文件,下面貼上一個針對nginx內核參數優化的例子,僅供參考(待補充):
- net.ipv4.ip_forward = 0
- net.ipv4.conf.default.rp_filter = 1
- net.ipv4.conf.default.accept_source_route = 0
- kernel.sysrq = 0
- kernel.core_uses_pid = 1
- net.ipv4.tcp_syncookies = 1
- kernel.msgmnb = 65536
- kernel.msgmax = 65536
- kernel.shmmax = 68719476736
- kernel.shmall = 4294967296
- 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
- net.core.somaxconn = 262144
- net.ipv4.tcp_max_orphans = 3276800
- net.ipv4.tcp_max_syn_backlog = 262144
- net.ipv4.tcp_timestamps = 0
- net.ipv4.tcp_synack_retries = 1
- net.ipv4.tcp_syn_retries = 1
- net.ipv4.tcp_tw_recycle = 1
- net.ipv4.tcp_tw_reuse = 1
- net.ipv4.tcp_mem = 94500000 915000000 927000000
- net.ipv4.tcp_fin_timeout = 1
- net.ipv4.tcp_keepalive_time = 30
- net.ipv4.ip_local_port_range = 1024 65000
將以上代碼添加到sysctl.conf文件的最后,然后執行/sbin/sysctl -p 即可生效。
三、關閉多余tty,釋放內存
linux默認會啟動6個TTY控制臺,都需要常駐占用內存(1tty占用4M多的樣子),事實上沒必要需要使用這么多tty,個人vps,僅需1~2個tty即可。
Centos5.* 設置tty數量:
①、編輯 /etc/inittab,找到 tty [1-6] 改成 tty [1-2]
②、編輯 /etc/sysconfig/init,同樣將tty [1-6] 改成 tty [1-2]
重啟系統即可生效(建議先不重啟,等后續操作完成一起重啟即可).
CentOS 6.* 設置tty數量:
CentOS 6.0 開始 TTY 的配置由 /etc/inittab 更改為 /etc/init/start-ttys.conf,所以上面的第①步變為:
①、編輯 /etc/init/start-ttys.conf,找到 tty [1-6] 改成 tty [1-2]
②同上編輯即可
四、關閉ipv6
ipv6一般都用不到,完全關閉即可。
編輯 /etc/modprobe.d/dist.conf 文件,在最后追加:
alias net-pf-10 off
alias ipv6 off
然后重啟系統即可(某些發行版可能是/etc/modprobe.conf文件).
五、關閉多余啟動項
執行 chkconfig --list | grep :on 列出啟動項:
然后找到不需要啟動的項目,執行 chkconfig 程序名 off 即可.
比如,ip6tables 是ipv6防火墻,用不到,執行 chkconfig ip6tables off,然后執行service ip6tables stop即可徹底關閉ip6tables這個多余進程.
其余進程,請先查清楚作用,再來操作,以免出錯,暫時就整理這么多,后續發現更多的優化設置,再來追加~
新聞熱點
疑難解答