日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux端口映射_Linux 系统安全与优化配置

發布時間:2023/12/19 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux端口映射_Linux 系统安全与优化配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 1. Openssh 安全配置
    • 1.1. 禁止root用戶登錄
    • 1.2. 限制SSH驗證重試次數
    • 1.3. 禁止證書登陸
    • 1.4. 使用證書替代密碼認證
    • 1.5. 圖形窗口客戶端記憶密碼的問題
    • 1.6. 關閉 GSSAPI
    • 1.7. 禁止SSH端口映射
    • 1.8. IP地址限制
  • 2. Shell 安全
    • 2.1. .history 文件
    • 2.2. sudo 安全問題
    • 2.3. 臨時文件安全
    • 2.4. 執行權限
  • 3. 防火墻
    • 3.1. 策略
    • 3.2. 防止成為跳板機
    • 3.3. 端口安全
    • 3.4. 封鎖特定字符串
  • 4. Linux 系統資源調配
    • 4.1. /etc/security/limits.conf
    • 4.2. 關閉寫磁盤I/O功能
  • 5. PAM 插件認證加固配置
    • 5.1. pam_tally2.so
    • 5.2. pam_listfile.so
    • 5.3. pam_access.so
    • 5.4. pam_wheel.so

1. Openssh 安全配置

這節主要講與SSH有關的安全配置

1.1. 禁止root用戶登錄

只允許普通用戶登陸,然后通過su命令切換到root用過。后面還會將怎樣限制su命令

PermitRootLogin no

1.2. 限制SSH驗證重試次數

超過3次socket連接會斷開,效果不明顯,有一點點用。

MaxAuthTries 3

1.3. 禁止證書登陸

證書登陸非常安全,但是很有可能正常用戶在你不知道情況下,給你安裝了一個證書,他隨時都可能進入你的系統

任何一個有權限的用戶都能很方便的植入一個證書到 .ssh/authorized_keys 文件中

PubkeyAuthentication noAuthorizedKeysFile /dev/null

1.4. 使用證書替代密碼認證

是不是自相矛盾?這個跟上面講的正好相反,這里只允許使用key文件登陸。

PasswordAuthentication no

這種方式比起密碼要安全的多,唯一要注意的地方就是證書被拷貝 ,建議你給證書加上 passphrase。

證書的 passphrase 是可以通過openssl工具將其剝離的,SSH證書我沒有試過,但是原理都差不多。

1.5. 圖形窗口客戶端記憶密碼的問題

當你使用XShell, Xftp, WinSCP, SecureCRT, SecureFX ......等等軟件登錄時,該軟件都提供記住密碼的功能,使你下次再登陸的時候無須輸入密碼就可以進入系統。這樣做的確非常方便,

但是你是否想過你的電腦一旦丟失或者被其他人進入,那有多么危險。我之前每天背著筆記本電腦上班,上面安裝著XShell并且密碼全部記憶在里面。這使我意識到一點電腦丟失,有多么可怕。

禁止SSH客戶端記住密碼,你不要要求別人那么做。你也無法控制,最終我找到了一種解決方案。

ChallengeResponseAuthentication yes

每次登陸都回提示你輸入密碼。密碼保存也無效。

1.6. 關閉 GSSAPI

GSSAPIAuthentication no#GSSAPIAuthentication yes#GSSAPICleanupCredentials yes#GSSAPICleanupCredentials yes#GSSAPIStrictAcceptorCheck yes#GSSAPIKeyExchange no

1.7. 禁止SSH端口映射

禁止使用SSH映射Socks5翻墻等等

AllowTcpForwarding no

1.8. IP地址限制

只允許通過192.168.2.1,192.168.2.2 訪問本機

# vim /etc/hosts.allowsshd:192.168.2.1,192.168.2.2

禁止所有人訪問本機

# vim /etc/hosts.denysshd:ALL

上面使白名單策略,你也可以采用黑名單策略。

2. Shell 安全

2.1. .history 文件

SA的操作記錄問題

通過~/.bash_history文件記錄系統管理員的操作記錄,定制.bash_history格式

HISTSIZE=1000HISTFILESIZE=2000HISTTIMEFORMAT="%Y-%m-%d-%H:%M:%S "export HISTTIMEFORMAT

看看實際效果

$ history | head 1 2012-02-27-09:10:45 do-release-upgrade 2 2012-02-27-09:10:45 vim /etc/network/interfaces 3 2012-02-27-09:10:45 vi /etc/network/interfaces 4 2012-02-27-09:10:45 ping www.163.com

2.2. sudo 安全問題

/etc/sudoers

Cmnd_Alias WEBMASTER = /srv/nginx/sbin/nginx, /srv/php/sbin/php-fpm, !/srv/mysql/bin/*www localhost = NETWORKING, SERVICES, DELEGATING, PROCESSES, WEBMASTERCmnd_Alias Database = /usr/bin/mysqldump, /srv/mysql/bin/mysql, /u01/oracle/10.x.x/bin/sqlplusmysql localhost = NETWORKING, SERVICES, DELEGATING, PROCESSES, WEBMASTER, Database

使用www用戶測試登錄,無誤后修改SSH配置文件,禁止root登錄。

vim /etc/ssh/sshd_configPermitRootLogin no

然后在測試從www sudo 執行命令, 可能成功啟動nginx 與 php-fpm

2.3. 臨時文件安全

臨時文件不應該有執行權限

/tmp

/dev/sda3 /tmp ext4 nosuid,noexec,nodev,rw 0 0

同時使用符號連接將/var/tmp 指向 /tmp

/dev/shm

none /dev/shm tmpfs defaults,nosuid,noexec,rw 0 0

2.4. 執行權限

以數據庫為例,從安全角度考慮我們需要如下更改

chown mysql:mysql /usr/bin/mysql*chmod 700 /usr/bin/mysql*

mysql用戶是DBA專用用戶, 其他用戶將不能執行mysql等命令。

3. 防火墻

開啟防火墻

lokkit --enabled

3.1. 策略

默認INPUT,FORWARD,OUTPUT 三個都是ACCEPT

-P INPUT ACCEPT-P FORWARD ACCEPT-P OUTPUT ACCEPT

從安全的角度出發,INPUT,FORWARD,OUTPUT 三個都是DROP最安全,但配置的時候會給你帶來非常多的不可預料的麻煩。

-P INPUT DROP-P FORWARD DROP-P OUTPUT DROP

折中的方案,也是打多少硬件防火墻廠商所采用的方案,他們都是采用INPUT默認禁用所有,OUTPUT默認允許所有,你只要關注INPUT規則即可。

-P INPUT DROP-P FORWARD ACCEPT-P OUTPUT ACCEPT

3.2. 防止成為跳板機

跳板機就是用戶首先登陸任意一臺服務器后,由該服務器在登陸另外一臺服務器。

封鎖22等端口,避免相互跳轉

iptables -A OUTPUT -p tcp -m multiport --dports 22,21,873 -j REJECT/etc/init.d/iptables saveiptables -L -n

web 服務器禁止使用ssh,作為跳板機

用戶將不能使用ssh命令登陸到其他電腦

3.3. 端口安全

有一種情況,例如你的服務器被植入了木馬,木馬將開啟一個Socket端口給遠程駭客接入進來,通常會啟動一個類似telnet服務器,怎樣防止未經允許的程序監聽一個端口呢?

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT-A INPUT -m state --state INVALID,NEW -j DROP

用法

  • systemctl stop iptables
  • 啟動 httpd / nginx
  • systemctl start iptables
  • 注意必須按照上面的步驟,如果你試圖如下嘗試將失敗

  • systemctl start iptables
  • 啟動 httpd / nginx
  • 80端口將無法對外提供服務,因為當 -A INPUT -m state --state INVALID,NEW -j DROP 運行以后,任何試圖監聽端口的程序將被拒絕。

    3.4. 封鎖特定字符串

    下面的例子是拒絕爬蟲

    # iptables -A INPUT -p tcp --dport 80 -m string --algo bm --string "Spider" -j DROP# iptables -A INPUT -p tcp --dport 80 -m string --algo bm --string "Baidu" -j DROP# iptables -A INPUT -p tcp --dport 80 -m string --algo bm --string "Robat" -j DROP

    4. Linux 系統資源調配

    4.1. /etc/security/limits.conf

    很多資料上是這么寫的

    * soft nofile 65535* hard nofile 65535

    這樣做是偷懶,會帶來很多問題,如果你的服務器被攻擊,由于你的設置,系統將耗光你的資源,直到沒有任何響應為止,你可能鍵盤輸入都成問題,你不得不重啟服務器,但你會發現重啟只能維持短暫幾分鐘,又會陷入無響應狀態。

    nobody soft nofile 4096nobody hard nofile 8192

    為什么會設置為nobody用戶呢?因為root用戶啟動系統后web 服務器會使用nobody用戶創建子進程,socket連接實際上是nobody用戶在處理。root 僅僅是守護父進程。

    mysql soft nofile 2048mysql hard nofile 2048

    針對 mysql 做限制

    提示

    關于 nofile 即打開文件數,這個跟socket有非常緊密的關系,在linux系統中任何設備都被看做是一個文件(字符設備),你連接一個鼠標,鍵盤,攝像頭,硬盤等等都被看作打開一個設備文件,所以默認1024是遠遠不夠的。

    4.2. 關閉寫磁盤I/O功能

    對于某些文件沒必要記錄文件的訪問時間,由其是在高并發的IO密集操作的環境下,通過兩個參數可以實現noatime,nodiratime減少不必要的系統IO資源。

    編輯/etc/fstab 添加 noatime,nodiratime 參數

    /dev/sdb1 /www ext4 noatime,nodiratime 0 0

    5. PAM 插件認證加固配置

    配置文件

    ls /etc/pam.d/chfn crond login passwd remote runuser-l smtp ssh-keycat sudo-i system-auth-acchsh fingerprint-auth newrole password-auth run_init smartcard-auth smtp.postfix su su-lconfig-util fingerprint-auth-ac other password-auth-ac runuser smartcard-auth-ac sshd sudo system-auth

    認證插件

    ls /lib64/security/

    5.1. pam_tally2.so

    此模塊的功能是,登陸錯誤輸入密碼3次,5分鐘后自動解禁,在未解禁期間輸入正確密碼也無法登陸。

    在配置文件 /etc/pam.d/sshd 頂端加入

    auth required pam_tally2.so deny=3 onerr=fail unlock_time=300

    查看失敗次數

    # pam_tally2Login Failures Latest failure Fromroot 14 07/12/13 15:44:37 192.168.6.2neo 8 07/12/13 15:45:36 192.168.6.2

    重置計數器

    # pam_tally2 -r -u rootLogin Failures Latest failure Fromroot 14 07/12/13 15:44:37 192.168.6.2# pam_tally2 -r -u neoLogin Failures Latest failure Fromneo 8 07/12/13 15:45:36 192.168.6.2

    pam_tally2 計數器日志保存在 /var/log/tallylog 注意,這是二進制格式的文件

    例 1. /etc/pam.d/sshd - pam_tally2.so

    # cat /etc/pam.d/sshd#%PAM-1.0auth required pam_tally2.so deny=3 onerr=fail unlock_time=300auth requiredpam_sepermit.soauth include password-authaccount required pam_nologin.soaccount include password-authpassword include password-auth# pam_selinux.so close should be the first session rulesession required pam_selinux.so closesession required pam_loginuid.so# pam_selinux.so open should only be followed by sessions to be executed in the user contextsession required pam_selinux.so open env_paramssession optional pam_keyinit.so force revokesession include password-auth

    以上配置root用戶不受限制, 如果需要限制root用戶,參考下面

    auth required pam_tally2.so deny=3 unlock_time=5 even_deny_root root_unlock_time=1800

    5.2. pam_listfile.so

    用戶登陸限制

    將下面一行添加到 /etc/pam.d/sshd 中,這里采用白名單方式,你也可以采用黑名單方式

    auth required pam_listfile.so item=user sense=allow file=/etc/ssh/whitelist onerr=fail

    將允許登陸的用戶添加到 /etc/ssh/whitelist,除此之外的用戶將不能通過ssh登陸到你的系統

    # cat /etc/ssh/whitelistneowww

    例 2. /etc/pam.d/sshd - pam_listfile.so

    # cat /etc/pam.d/sshd#%PAM-1.0auth required pam_listfile.so item=user sense=allow file=/etc/ssh/whitelist onerr=failauth required pam_tally2.so deny=3 onerr=fail unlock_time=300auth requiredpam_sepermit.soauth include password-authaccount required pam_nologin.soaccount include password-authpassword include password-auth# pam_selinux.so close should be the first session rulesession required pam_selinux.so closesession required pam_loginuid.so# pam_selinux.so open should only be followed by sessions to be executed in the user contextsession required pam_selinux.so open env_paramssession optional pam_keyinit.so force revokesession include password-auth

    sense=allow 白名單方式, sense=deny 黑名單方式

    auth required pam_listfile.so item=user sense=deny file=/etc/ssh/blacklist onerr=fail

    更多細節請查看手冊 $ man pam_listfile

    5.3. pam_access.so

    編輯 /etc/pam.d/sshd 文件,加入下面一行

    account required pam_access.so

    保存后重啟sshd進程

    編輯 /etc/security/access.conf 文件

    cat >> /etc/security/access.conf << EOF- : root : ALL EXCEPT 192.168.6.1EOF

    只能通過 192.168.6.1 登陸, 添加多個IP地址

    - : root : ALL EXCEPT 192.168.6.1 192.168.6.2

    測試是否生效

    5.4. pam_wheel.so

    限制普通用戶通過su命令提升權限至root. 只有屬于wheel組的用戶允許通過su切換到root用戶

    編輯 /etc/pam.d/su 文件,去掉下面的注釋

    authrequiredpam_wheel.so use_uid

    修改用戶組別,添加到wheel組

    # usermod -G wheel www# id wwwuid=501(www) gid=501(www) groups=501(www),10(wheel)

    沒有加入到wheel組的用戶使用su時會提示密碼不正確。

    $ su - rootPassword:su: incorrect password

    總結

    以上是生活随笔為你收集整理的linux端口映射_Linux 系统安全与优化配置的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。