咱們能夠經過調整系統參數來提升系統內存、CPU、內核資源的佔用,經過禁用沒必要要的服務、端口,來提升系統的安全性,更好的發揮系統的可用性。經過本身對Linux瞭解,對系統調優作了以下小結。mysql
說明:常常玩Linux系統的朋友多多少少也知道些系統參數優化和怎樣加強系統安全性,系統默認的一些參數都是比較保守的,因此咱們能夠經過調整系統參數來提升系統內存、CPU、內核資源的佔用,經過禁用沒必要要的服務、端口,來提升系統的安全性,更好的發揮系統的可用性。經過本身對Linux瞭解,對系統調優作了以下小結:sql
一、清空防火牆並設置規則shell
[root@localhost~]# iptables -F #清楚防火牆規則 數據庫
[root@localhost~]# iptables -L #查看防火牆規則 vim
[root@localhost~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT 緩存
[root@localhost~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT 安全
[root@localhost~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT 性能優化
[root@localhost~]# iptables -A INPUT -p udp --dport 53 -j ACCEPT bash
[root@localhost~]# iptables -A INPUT -p udp --dport 123 -j ACCEPT 服務器
[root@localhost~]# iptables -A INPUT -p icmp -j DROP
[root@localhost~]# iptables -P INPUT DROP
[root@localhost~]# /etc/init.d/iptables save
二、添加普通用戶sudo權限
[root@localhost~]# useradd [用戶]
[root@localhost~]# echo "123456" | passwd --stdin [用戶] #設置密碼
[root@localhost~]# vi /etc/sudoers #或visudo打開,添加user用戶全部權限
root ALL=(ALL) ALL
[用戶] ALL=(ALL) ALL
三、禁止root遠程登陸
[root@localhost~]# vi /etc/ssh/sshd_config
PermitRootLogin no
PermitEmptyPasswords no #禁止空密碼登陸
UseDNS no #關閉DNS查詢
四、關閉沒必要要的服務
五、註釋掉系統不須要的用戶和用戶組
cp /etc/passwd /etc/passwdbak #修改以前先備份
vi /etc/passwd #編輯用戶,在前面加上#註釋掉此行
#adm:x:3:4:adm:/var/adm:/sbin/nologin
#lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
#sync:x:5:0:sync:/sbin:/bin/sync
#shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
#halt:x:7:0:halt:/sbin:/sbin/halt
#uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
#operator:x:11:0:operator:/root:/sbin/nologin
#games:x:12:100:games:/usr/games:/sbin/nologin
#gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
#ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin #註釋掉ftp匿名帳號
cp /etc/group /etc/groupbak #修改以前先備份
vi /etc/group #編輯用戶組,在前面加上#註釋掉此行
#adm:x:4:root,adm,daemon
#lp:x:7:daemon,lp
#uucp:x:14:uucp
#games:x:20:
#dip:x:40:
#news:x:9:13:news:/etc/news:
六、關閉重啓 Ctrl+Alt+delete
[root@localhost ~]# vi /etc/init/control-alt-delete.conf
#exec /sbin/shutdown -r now "Control-Alt-Deletepressed" #註釋掉
七、調整文件描述符大小
[root@localhost ~]# echo '* - nofile 65535 ' >> /etc/security/limits.conf
重啓生效
[root@localhost ~]# ulimit -n
65535
八、去除系統相關信息
[root@localhost ~]# echo "Welcome to Server" >/etc/issue
[root@localhost ~]# echo "Welcome to Server" >/etc/redhat-release
九、修改history 記錄
[root@localhost ~]# vi /etc/profile #修改記錄20個
HISTSIZE=20
十、內核參數優化
[root@localhost ~]# vi /etc/sysctl.conf #末尾添加以下參數
net.ipv4.tcp_syncookies = 1 #1是開啓SYN Cookies,當出現SYN等待隊列溢出時,啓用Cookies來處,理,可防範少許SYN***,默認是0關閉
net.ipv4.tcp_tw_reuse = 1 #1是開啓重用,容許講TIME_AIT sockets從新用於新的TCP鏈接,默認是0關閉
net.ipv4.tcp_tw_recycle = 1 #TCP失敗重傳次數,默認是15,減小次數可釋放內核資源
net.ipv4.ip_local_port_range = 4096 65000 #應用程序可以使用的端口範圍
net.ipv4.tcp_max_tw_buckets = 5000 #系統同時保持TIME_WAIT套接字的最大數量,若是超出這個數字,TIME_WATI套接字將馬上被清除並打印警告信息,默認180000
net.ipv4.tcp_max_syn_backlog = 4096 #進入SYN寶的最大請求隊列,默認是1024
net.core.netdev_max_backlog = 10240 #容許送到隊列的數據包最大設備隊列,默認300
net.core.somaxconn = 2048 #listen掛起請求的最大數量,默認128
net.core.wmem_default = 8388608 #發送緩存區大小的缺省值
net.core.rmem_default = 8388608 #接受套接字緩衝區大小的缺省值(以字節爲單位)
net.core.rmem_max = 16777216 #最大接收緩衝區大小的最大值
net.core.wmem_max = 16777216 #發送緩衝區大小的最大值
net.ipv4.tcp_synack_retries = 2 #SYN-ACK握手狀態重試次數,默認5
net.ipv4.tcp_syn_retries = 2 #向外SYN握手重試次數,默認4
net.ipv4.tcp_tw_recycle = 1 #開啓TCP鏈接中TIME_WAIT sockets的快速回收,默認是0關閉
net.ipv4.tcp_max_orphans = 3276800 #系統中最多有多少個TCP套接字不被關聯到任何一個用戶文件句柄上,若是超出這個數字,孤兒鏈接將當即復位並打印警告信息
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_mem[0]:低於此值,TCP沒有內存壓力;
net.ipv4.tcp_mem[1]:在此值下,進入內存壓力階段;
net.ipv4.tcp_mem[2]:高於此值,TCP拒絕分配socket。內存單位是頁,可根據物理內存大小進行調整,若是內存足夠大的話,可適當往上調。上述內存單位是頁,而不是字節。
配置完畢以後重啓系統便可生效
十一、給一下文件加不可更改屬性,從而防止非受權用戶得到權限
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow
chattr +i /etc/services #給系統服務端口列表文件加鎖,防止未經許可的刪除或添加服務
lsattr /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/services #顯示文件的屬性
注:執行以上權限修改以後,就沒法添加刪除用戶了。果再要添加刪除用戶,須要先取消上面的設置,等用戶添加刪除完成以後,再執行上面的操做。
chattr -i /etc/passwd #取消權限鎖定設置
chattr -i /etc/shadow
chattr -i /etc/group
chattr -i /etc/gshadow
chattr -i /etc/services #取消系統服務端口列表文件加鎖
如今能夠進行添加刪除用戶了,操做完以後再鎖定目錄文件
十二、禁止非root用戶執行/etc/rc.d/init.d下的系統命令
chmod -R 700 /etc/rc.d/init.d/*
chmod -R 777 /etc/rc.d/init.d/* #恢復默認設置
1三、限制不通文件的權限
chattr +a .bash_history #避免刪除.bash_history或者重定向到/dev/null
chattr +i .bash_history
chmod 700 /usr/bin #恢復 chmod 555 /usr/bin
chmod 700 /bin/ping #恢復 chmod 4755 /bin/ping
chmod 700 /usr/bin/vim #恢復 chmod 755 /usr/bin/vim
chmod 700 /bin/netstat #恢復 chmod 755 /bin/netstat
chmod 700 /usr/bin/tail #恢復 chmod 755 /usr/bin/tail
chmod 700 /usr/bin/less #恢復 chmod 755 /usr/bin/less
chmod 700 /usr/bin/head#恢復 chmod 755 /usr/bin/head
chmod 700 /bin/cat #恢復 chmod 755 /bin/cat
chmod 700 /bin/uname #恢復 chmod 755 /bin/uname
chmod 500 /bin/ps #恢復 chmod 755 /bin/ps
1四、使用yum update 更新系統時不升級內核,只更新軟件包
因爲系統與硬件的兼容性問題,有可能升級內核後致使服務器不能正常啓動,這是很是可怕的,沒有特別的須要,建議不要隨意升級內核。
cp /etc/yum.conf /etc/yum.confbak
修改yum的配置文件 vi /etc/yum.conf 在[main]的最後添加 exclude=kernel*
直接在yum的命令後面加上以下的參數:yum --exclude=kernel* update
查看系統版本cat /etc/issue
查看內核版本uname -a
1五、關閉Centos自動更新
chkconfig --list yum-updatesd #顯示當前系統狀態
yum-updatesd #0:關閉 1:關閉 2:啓用 3:啓用 4:啓用 5:啓用 6:關閉
service yum-updatesd stop #關閉 開啓參數爲start
# 中止 yum-updatesd: [肯定]
service yum-updatesd status #查看是否關閉
yum-updatesd # 已停
chkconfig --level 35 yum-updatesd off #禁止開啓啓動(系統模式爲三、5)
chkconfig yum-updatesd off #禁止開啓啓動(全部啓動模式所有禁止)
chkconfig --list yum-updatesd #顯示當前系統狀態
yum-updatesd # 0:關閉 1:關閉 2:啓用 3:關閉 4:啓用 5:關閉 6:關閉
1六、關閉多餘的虛擬控制檯
咱們知道從控制檯切換到 X 窗口,通常採用 Alt-F7 ,爲何呢?由於系統默認定義了 6 個虛擬控制檯,
因此 X 就成了第7個。實際上,不少人通常不會須要這麼多虛擬控制檯的,修改/etc/inittab ,註釋掉那些你不須要的。
cp /etc/inittab /etc/inittabbak
vi /etc/inittab
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
#2:2345:respawn:/sbin/mingetty tty2
#3:2345:respawn:/sbin/mingetty tty3
#4:2345:respawn:/sbin/mingetty tty4
#5:2345:respawn:/sbin/mingetty tty5
#6:2345:respawn:/sbin/mingetty tty6
1七、刪除[mysql]歷史命令記錄
用戶登錄[數據庫]後執行的SQL命令也會被MySQL記錄在用戶目錄的.mysql_history文件裏。若是數據庫用戶用SQL語句修改了數據庫密碼,也會因.mysql_history文件而泄漏。因此咱們在shell登錄及備份的時候不要在-p後直接加密碼,而是在提示後再輸入數據庫密碼。另外這兩個文件咱們也應該不讓它記錄咱們的操做,以防萬一。
cd
cp .bash_history .bash_historybak #備份
cp .mysql_history .mysql_historybak
rm .bash_history .mysql_history
ln -s /dev/null .bash_history
ln -s /dev/null .mysql_history
1八、服務器禁止ping
cp /etc/rc.d/rc.local /etc/rc.d/rc.localbak
vim /etc/rc.d/rc.local #在文件末尾增長下面這一行
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
參數0表示容許 1表示禁止
1九、防止IP欺騙
編輯host.conf文件並增長以下幾行來防止IP欺騙***。
vim /etc/host.conf
order bind,hosts
multi off
nospoof on
20、自動註銷帳號登陸
vim /etc/profile
修改"HISTSIZE="
後面加入下面這行:
TMOUT = 300
300,表示5分。這樣,若是系統中登錄的用戶在5分鐘內都沒有動做,那麼系統會自動註銷這個帳戶。
2一、限制SU切換
vim /etc/pam.d/su
文件中找到#auth required pam_wheel.so use_uid,去掉前面的註釋#。
2二、只容許某一個IP地址登陸服務器
vim /etc/hosts.deny (禁止全部)
sshd :ALL
vi /etc/hosts.allow
容許內容
書寫格式(改爲自自須要的IP或IP段)
ssh容許單個ip
sshd:192.168.220.1
ssh容許ip段
sshd:192.168.220.
telnet容許單個ip
in.telnetd:192.168.220.1
telnet容許ip段
in.telnetd:192.168.221.