在CentOS系統中配置Golang環境時,除了基本的安裝和設置外,還需要注意一些安全配置要點,以確保應用程序的安全性和穩定性。以下是一些關鍵的安全配置要點:
/etc/passwd
文件,可以檢測到具有超級用戶權限的賬戶(user_ID=0
)??梢允褂靡韵旅顏韨浞莶㈡i定或解鎖這些賬戶:cat /etc/passwd | awk -F ':' '{print$1,$3}' | grep ' 0$'
cp -p /etc/passwd /etc/passwd_bak
passwd -l <用戶名> # 鎖定賬戶
passwd -u <用戶名> # 解鎖賬戶
adm
, lp
, sync
等,以減少系統受攻擊的風險。userdel username
groupdel groupname
/etc/login.defs
文件來強制執行這些要求:PASS_MIN_LEN 10
awk -F ":" '($2 =="" ) {print $1}' /etc/shadow
chattr
命令給 /etc/passwd
, /etc/shadow
, /etc/group
, 和 /etc/gshadow
文件加上不可更改屬性,以防止未授權訪問:chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow
/etc/profile
文件中的 TMOUT
參數,可以設置root賬戶的自動注銷時限,以減少未授權訪問的風險:vi /etc/profile
TMOUT=300
/etc/pam.d/su
文件,限制只有特定組的用戶才能使用 su
命令切換為root:usermod –G wheel username
GOPATH
環境變量。例如:mkdir /go
export GOPATH=/go
export PATH=$PATH:/go/bin
import (
"crypto/tls"
"net/http"
)
func main() {
tlsConfig := &tls.Config{
Certificates: []tls.Certificate{
// 加載你的證書和私鑰
},
}
srv := &http.Server{
Addr: ":443",
TLSConfig: tlsConfig,
}
srv.ListenAndServeTLS("cert.pem", "key.pem")
}
import (
"net/http"
"time"
)
func middlewareHSTS(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Strict-Transport-Security", "max-age=31536000; includeSubDomains")
next.ServeHTTP(w, r)
})
}
func main() {
r := chi.NewRouter()
r.Use(middlewareHSTS)
http.ListenAndServe(":443", r)
}
validator
庫進行輸入驗證:import (
"github.com/go-playground/validator/v10"
)
type User struct {
Username string `validate:"required,min=3"`
Password string `validate:"required,min=8"`
}
func ValidateUser(user *User) error {
return validator.New().Struct(user)
}
func SetSecurityHeaders(w http.ResponseWriter) {
w.Header().Set("Content-Security-Policy", "default-src 'self'")
w.Header().Set("X-Content-Type-Options", "nosniff")
w.Header().Set("Strict-Transport-Security", "max-age=31536000; includeSubDomains")
}
通過實施這些安全配置,可以顯著提高CentOS系統中Golang應用程序的安全性。定期檢查和更新配置是確保應用程序安全性的關鍵。