Linux系統上承載著各種業務,為了業務安全穩定運行,管理員會通過一些手段進行安全加固和漏洞防范。
如:從業務軟件本身主要針對于內核或軟件漏洞進行及時的修復;從系統角度出發,可以在系統的權限、資源、訪問等方面進行安全加固。
本文將對系統自身的一些安全調優配置進行分析講解。
針對口令密碼要定期修改,linux在
/etc/login.defs配置文件中可以配置密碼的長度、有效期、過期告警天數等
另外對于密碼的組合復雜度要有要求,對于密碼組合,要包含字母、數字、特殊字母來增加密碼復雜度,可以在/etc/pam.d/system-auth中進行配置。
密碼嘗試5次,長度大于8,包含數字、小寫字母、大寫字母、特殊字符等
password requisite pam_cracklib.so try_first_pass retry=5 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8
即使密碼存在有消息,有時候還是習慣改成同樣的密碼,為了避免這種情況,可以配置拒絕使用重復密碼,還是在/etc/pam.d/system-auth中進行配置,比如不適用最近3次修改的密碼。
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=3
鎖定連續失敗5次的用戶,120s后再重試
auth required pam_tally2.so deny=3 unlock_time=120 even_deny_root root_unlock_time=120
linux操作系統有三類用戶:超級用戶、普通用戶、偽用戶,比如普通用戶通過su和sudo方式獲取權限,在使用sudo時候,可以通過在/etc/sudoers中定義用戶或者所屬組的權限來進行權限管理。
# 組權限
%wheel ALL=(ALL) ALL
# 用戶權限
wheel ALL=(ALL) ALL
文件系統針對user、group、other都有讀寫執行權限的控制,通過chmod進行控制這三個權限,執行程序有的采用755的權限,為了安全,默認我們可以不給other有任何權限,可以通過umask進行修改
export umask=027
針對于日志的文件系統,我們有時候限制日志文件系統的刪除權限,防止惡意攻擊,然后刪除日志記錄,所以對于系統一些常見的日志系統,比如message、dmesg、secure這些可以將賦予只能增加不能刪除的權限。
chattr +a /var/log/messages
針對于ssh服務的一些安全優化主要有以下一些手段:
修改端口號。
使用v2版本協議,更加安全。
不允許root用戶ssh登陸。
限制密碼登陸認證,建議使用公鑰認證。
使用PAM管理,關閉GSSAPI的認證用來優化性能。
內網ssh可以關閉DNS反向查詢的功能。
客戶端的嘗試次數限制。
系統層面需要定期更新openssh的版本,解決版本漏洞的問題,現在市面上很多的掃描軟件對于openssh是一定會去建議優化和更新的。
針對于黑白名單配置,一般策略就是開放內網業務主機和堡壘機之間的互聯,其他的禁止登陸,早期使用hosts.allow和hosts.deny進行黑白名單配置。
這個限制用到是TCP_wrappers,在早期的版本中openssh自帶這個模塊可以進行使用,比較新的openssh中已經沒有這個模塊的支持,所以要使用這個功能需要額外安裝模塊。
針對于黑白名單的問題,還有就是采用防火墻的方式進行相應的限制。
資源限制的目的,為了讓系統上核心的業務有足夠的資源運行,否則有可能存在系統自帶組件或者其他軟件異常占用資源,導致核心業務受到影響。
limits.conf
linux可以限制用戶進程使用資源的上限,比如最大打開文件個數、創建最大文件大小、最大內存等資源。
limits.conf配置文件中包括兩個層面限制,軟限制和硬限制,具體限制多大的值,這個要根據自己的業務需求進行配置,通過預先制定的限制,防止程序或者進程因自身問題或者被攻擊而申請占用大量系統資源導致崩潰的問題。
cgroup
cgroup主要用來限制或者隔離單個或者多個進程使用的CPU、內存、磁盤IO、網絡等資源,cgroup為這些控制資源定義相應的子系統,部分子系統如下:
字段 | 含義 |
cpu | 主要限制進程的 cpu 使用率。 |
cpuacct | 自動生成關于 cgroup 中任務使用的cpu資源的報告。 |
cpuset | 可以為 cgroups 中的進程分配單獨的cpu節點或者內存節點。 |
memory | 可以限制進程的 memory 使用量。 |
blkio | 限制進程的單個io。 |
devices | 控制進程能夠訪問某些設備。 |
net_cls | 使用類標識符 ( classid ) 標記網絡數據包,允許 Linux 流量控制器( tc 命令)識別源自特定 cgroup 任務的數據包。net_cls(iptables)的 子系統net_filter也可以使用此標簽對此類數據包執行操作。使用 net_filter防火墻標識符 ( fwid ) 標記網絡套接字,允許 Linux 防火墻(iptables命令)識別源自特定 cgroup 任務的數據包(skb->sk); |
freezer | 掛起或者恢復 cgroups 中的進程。 |
cgroup提供一種對進程進行分層分組的標記方法,并且對其應用資源進行限制,會有以下幾種關系:
單個層次結構可以附加在一個或者多個子系統上。
一個子系統只能附加在一個層級上。
單個任務可以在多個 cgroup 中,只要每個 cgroup 位于不同的層次結構中。
子任務繼承父任務的cgroup,也可以單獨劃分cgroup的。
比如限制某一個進程的CPU使用率
cd /sys/fs/cgroup/cpu/ mkdir test cd test echo 3456 > cgroup.procs # 3456為限制進程的id ### 綁定核 echo "0" > cpuset.cpus ### 限制CPU使用率 echo "100000" > cpu.cfs_quota_us
systemd
在7.x的操作系統中,默認情況下開始使用systemd管理服務,通過systemd做資源隔離,實際底層還是cgroup功能的。
systemd可以通過Unit資源控制,Unit包括services, slices, scopes, sockets, mount points, 和swap devices六種。
限制方式有兩種
在配置文件中systemctl set-property 命令設置 cgroup 的限制,比如限制CPU使用率
systemctl set-property myservice.service CPUQuota=200%
在systemd的service的配置文件中添加相應的限制參數。
### 打開cpu、內存、進程、IO、訪問控制等方面統計,然后通過相應的控制參數進行資源限制
CPUAccounting=yes
MemoryAccounting=yes
TasksAccounting=yes
IOAccounting=yes
IPAccounting=yes
### 部分資源控制參數
CPUQuota=
MemoryMax=
TasksMax=
IOWeight=
IPAddressDeny=
profile配置文件中配置HOSTSIZE:這個選項表示的是歷史記錄條數,可以減少history的條數,比如10條以下。
終端命令審計,這個有一些成熟方案可以套用,主要功能是記錄終端上執行的命令、ip、用戶等信息。
日志審計,可以使用audit服務進行審計配置,如果對于性能要求很高的業務不建議使用,會有性能損耗。
禁用ctrl+alt+del:這個可以進行修改,將這個文件/usr/lib/systemd/system/ctrl-alt-del.target重命名掉,可以禁用ctrl+alt+del快捷鍵。
sendoh用戶權限:默認我們會在/etc/sudoers中給了所有的權限,不建議將這個權限限制,cloud和qdatamgr命令需要權限執行一些數據采集的操作。
非活躍終端退出時間:在/etc/profile中增加export TMOUT=120,如果終端在120s的時候不操作,則自動退出,對于一體機是沒有影響的。
禁止icmp重定向,防止icmp重定向欺騙攻擊。
服務電話: 400-678-1800 (周??周五 09:00-18:00)
商務合作: 0571-87770835
市場反饋: marketing@woqutech.com
地址: 杭州市濱江區濱安路1190號智匯中?A座1101室