保安與 Optimize
網絡攻擊可其多,所以最基本一定要有 firewall,幸好 Ubuntu 的 firewall 設定簡單,很易上手。
由於這台伺服器是用作翻牆,所以用需要開 port 22, 80, 443 三個 port 就可以了。
輸入以下指令:
ufw allow 22
ufw allow 80
ufw allow 443
ufw enable
最後會問大家是否真的enable firewall,並警告如果設定不當會斷線,不過我們已經 allow port 22 所以沒有問題。
按下 y 就可以了。
另外 linux 還有一些設定可以微調,改善掉包的情況,令到連線速度更好。
下面的設定參考自 Easyengine 、Linux TCP 性能調優筆記 和其他 Linux 教學。
首先 backup 原本設定
cp /etc/sysctl.conf /etc/sysctl.conf.bak
同樣,之後删除原本的檔案再複制會更快
rm /etc/sysctl.conf && nano /etc/sysctl.conf
將以下資料 paste 入去
# # /etc/sysctl.conf - Configuration file for setting system variables # See /etc/sysctl.d/ for additional system variables. # See sysctl.conf (5) for information. # ### 改善記情體管理 ### #提高整個系統的文件限制 fs.file-max = 2097152 fs.inotify.max_user_watches=524288 # 減少使用緩存 vm.swappiness = 10 vm.vfs_cache_pressure=50 vm.dirty_ratio = 60 vm.dirty_background_ratio = 2 ### 一般網絡安全設置 ### #表示開啟SYN Cookies。當出現SYN等待隊列溢出時,使用cookies來處理,可防範少量SYN攻擊,默認為0,表示關閉; net.ipv4.tcp_syncookies = 1 # Number of times SYNACKs for passive TCP connection. net.ipv4.tcp_synack_retries = 2 #表示用於向外連接的端口範圍。缺省情況下很小 net.ipv4.ip_local_port_range = 2000 65535 # Protect Against TCP Time-Wait net.ipv4.tcp_rfc1337 = 1 # 減少 tcp_fin_timeout 等待時間 net.ipv4.tcp_fin_timeout = 15 # 表示當keepalive起用的時候,TCP發送keepalive消息的頻度。 net.ipv4.tcp_keepalive_time = 300 net.ipv4.tcp_keepalive_probes = 5 net.ipv4.tcp_keepalive_intvl = 15 ### TUNING NETWORK PERFORMANCE ### # 預設 socket 緩存 net.core.rmem_default = 31457280 net.core.wmem_default = 31457280 #增加 TCP 緩存上限 net.core.rmem_max = 67108864 net.core.wmem_max = 67108864 # 增加接收的連接 net.core.somaxconn = 65535 # 當網絡卡接收的 packets 快過 kernel 能處理的時候,增加連線進來的 backlog queue 能令 kernal 有更多時間處理 net.core.netdev_max_backlog = 250000 # Increase the maximum amount of option memory buffers net.core.optmem_max = 25165824 #表示SYN隊列的長度,默認為1024,加大隊列長度?8192,可以容納更多等待連接的網絡連接數。 net.ipv4.tcp_max_syn_backlog = 8192 net.ipv4.tcp_max_tw_buckets = 1440000 # Increase the maximum amount of option memory buffers net.core.optmem_max = 25165824 #增加 Linux 自動調整的 TCP 緩存上限 # This is measured in units of pages (4096 bytes) net.ipv4.tcp_mem = 65536 131072 262144 net.ipv4.udp_mem = 65536 131072 262144 # Increase the read-buffer space allocatable net.ipv4.tcp_rmem = 8192 87380 16777216 net.ipv4.udp_rmem_min = 16384 # Increase the write-buffer-space allocatable net.ipv4.tcp_wmem = 8192 65536 16777216 net.ipv4.udp_wmem_min = 16384 # 表示系統同時保持TIME_WAIT的最大數量,如果超過這個數字,TIME_WAIT將立刻被清除並打印警告信息,可以用來防止簡單的 DOS 攻擊。 net.ipv4.tcp_max_tw_buckets = 1440000 #表示開啟重用。允許將TIME-WAIT sockets重新用於新的TCP連接,默認為0,表示關閉; net.ipv4.tcp_tw_reuse = 1 #表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認為0,表示關閉; #為了對NAT設備更友好,建議設置為0。 #修改TW快速回收的問題以更好的兼容移動設備。 net.ipv4.tcp_tw_recycle = 0 #修改系統默認的 TIMEOUT 時間。 net.ipv4.tcp_fin_timeout = 30 #額外的,對於內核版本新於**3.7.1**的,我們可以開啟tcp_fastopen: net.ipv4.tcp_fastopen = 3 #recommended for hosts with jumbo frames enabled net.ipv4.tcp_mtu_probing = 1 #設置TCP擁塞算法,建議 Linode 用戶選擇 bbr,其他公司可以輸入以下指令(不要 # 號) # sysctl net.ipv4.tcp_available_congestion_control # 如果看到 bbr 可以選 bbr,否則建議 htcp net.ipv4.tcp_congestion_control = bbr
大家可以按 Ctrl+X 來退出 nano,它會問你會否儲存檔案,按下 y 後,再按多一次 Enter 鍵就可以。
最後重新 reload sysctl 就可以了
sysctl -p