安全加固php
Centos 7 安全加固
SSH 加密html
yum -y install expect mkpasswd
服務器上全部帳號的密碼都要採用毫無關聯的強密碼,密碼爲很多於16位的大小寫字母數字特殊符號的組合。java
修改SSH配置文件node
1. 改默認端口 22 -> 57862
2. 禁止root賬號登陸
3. 指定容許登陸賬號nginx
SHH root
PermitRootLogin no
AllowUsers ccav
啓用強制密碼長度策略git
vim /etc/login.defs
..... PASS_MIN_LEN 13
檢查是否存在除root以外UID爲0的用戶github
awk -F: '($3 == 0) { print $1 }' /etc/passwd
檢測登錄系統是否須要密碼web
awk -F: '($2 == ""){print $1}' /etc/passwd
賬戶口令複雜度及按期更換面試
[root@localhost]# passwd xxxxxx
禁用NATsql
echo 0 > /proc/sys/net/ipv4/ip_forward
Bash日誌
設置環境變量爲只讀:
readonly HISTFILE
readonly HISTFILESIZE
readonly HISTSIZE
readonly HISTCMD
readonly HISTCONTROL
readonly HISTIGNORE
爲history文件添加時間
export HISTTIMEFORMAT=‘%F %T’
設置history文件只能追加:
chatter +a ~/.bash_history
Apache
服務器Banner信息隱藏
apache 配置文件
vim /etc/httpd/conf/httpd.conf ... ServerTokens Prod ServerSignature Off
PHP 配置文件
vim /etc/php.ini
...
expose_php = Off
防止列目錄泄露敏感信息
Options Indexes FollowSymLinks
改成
Options FollowSymLinks
指定目錄禁止php解析
<Directory "/var/www/html/uploads"> php_flag engine off </Directory>
限制管理員後臺特定IP訪問
<Directory "/var/www/html/admin"> Order Deny,Allow Deny from all Allow from 192.168.1.111 </Directory>
關閉對.htaccess的支持
AllowOverride None
禁止顯示版本
server_tokens off;
或者經過源碼編譯的時候修改
vim /src/core/nginx.h
... #define NGINX_VERSION "1.9.15" #define NGINX_VER "nginx/" NGINX_VERSION
禁止上傳目錄禁止php文件
解析目錄不可寫,可寫目錄不解析
單個目錄
location ~ /upload/.*\.(php|php5)?$ {
deny all;
}
多個目錄
location ~* ^/(administrator|upload)/.*\.(php)$ {
deny all;
}
禁止訪問全部目錄下的敏感文件
location ~. *\.(sql|log|txt|rar|zip|sh|py|svn|git) { deny all; }
禁用沒必要要的HTTP方法
if ($request_method !~ ^(GET|HEAD|POST)$) { return 405; }
Nginx、php-fpm運行賬號及組爲nobody
Lua + nginx
Tomcat
tomcat弱口令拿Shell
tomcat tomcat admin 空 admin admin admin 123456
補丁和漏洞管理
必須及時安裝與安全性相關的tomcat補丁
http://tomcat.apache.org/lists.html#tomcat-announce
設置Tomcat服務最小權限
useradd -s /sbin/nologin tomcat
vim /usr/lib/systemd/system/tomcat8.service
... #service下添加 User=tomcat Group=tomcat
chown -R tomcat:tomcat /usr/local/tomcat
網絡級限制
tomcat8上已經禁止全部,只容許本地訪問。
vim /usr/local/tomcat/webapps/manager/META-INF/context.xml ... <Valve className="org.apache.catalina.valves.RemoteHostValve" allow=".*\.admins\.domain\.com" />
用戶管理
vim ./tomcat-users.xml ... <role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <user username="admin" password="123ccc" roles="manager-gui,manager-script,manager-jmx,manager- status"/>
隱藏tomcat版本信息
修改$CATALINA_HOME/conf/server.xml,
在Connector節點添加server字段
/usr/local/tomcat/lib/org/apache/catalina/util
關閉自動部署
在$CATALINA_HOME/conf/server.xml中的host字段
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
session超時
vim ./conf/web.xml
... <session-config> <session-timeout>20</session-timeout> </session-config>
啓用cookie的HttpOnly屬性
CATALINA_BASE/conf/context.xml <Context useHttpOnly='true' .../>
安全防禦
OpenResty
簡介
1. OpenResty 是一個基於Nginx與Lua的高性能Web平臺
2. 其內部集成了大量精良的 Lua 庫,第三方模塊以及大多數的依賴項。
3. 用於方便地搭建可以處理超高併發,擴展性極高的動態Web應用,Web服務和動態網關。
OpenResty 安裝
yum install -y readline-devel pcre-devel openssl-devel git wget vim openssl-devel gcc curl wget https://openresty.org/download/ngx_openresty-1.9.3.2.tar.gz --no-check-certificate tar -zxvf ngx_openresty-1.9.3.2.tar.gz cd ngx_openresty-1.9.3.2 ./configure --prefix=/usr/local/openresty --with-luajit --with-http_stub_status_module --with-pcre -- with-pcre-jit gmake && gmake install
功能列表
1. 支持IP白名單和黑名單功能,直接將黑名單的IP訪問拒絕。
2. 支持URL白名單,將不須要過濾的URL進行定義。
3. 支持User-Agent的過濾,匹配自定義規則中的條目,而後進行處理(返回403)。
4. 支持CC攻擊防禦,單個URL指定時間的訪問次數,超過設定值,直接返回403。
5. 支持Cookie過濾,匹配自定義規則中的條目,而後進行處理(返回403)。
6. 支持URL過濾,匹配自定義規則中的條目,若是用戶請求的URL包含這些,返回403。
7. 支持URL參數過濾,原理同上。
8. 支持日誌記錄,將全部拒絕的操做,記錄到日誌中去。
9. 日誌記錄爲JSON格式,便於日誌分析,例如使用ELKStack進行攻擊日誌收集、存儲、搜索和展現。
配置waf規則
git clone https://github.com/unixhot/waf.git cp -a ./waf/waf /usr/local/openresty/nginx/conf/ vim /usr/local/openresty/nginx/conf/nginx.conf ... http{ lua_shared_dict limit 50m; lua_package_path "/usr/local/openresty/nginx/conf/waf/?.lua"; init_by_lua_file "/usr/local/openresty/nginx/conf/waf/init.lua"; access_by_lua_file "/usr/local/openresty/nginx/conf/waf/access.lua」; }
OpenRASP (WEB 防火牆)
簡介OpenRASP
是一個百度安全旗下的免費開源安全項目
全稱應該是: Open-source Run-time Ap-pli-ca-tion Self-Pro-tec-tion
開源實時程序自保護系統 更想詳細瞭解
OpenRASP:
https://www.freebuf.com/articles/web/164413.html
可是目前,OpenRASP支持Java和PHP兩種開發語言,那也但願之後能支持各類類型軟件兼容性
https://rasp.baidu.com/doc/install/compat.html
部署單機OpenRASP
yum install -y vim wget net-tools epel-release java-1.8.0-openjdk* -y
systemctl stop firewalld.service systemctl disable firewalld.service
安裝tomcat
wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v8.5.38/bin/apache-tomcat-8.5.38.tar.gz
mv apache-tomcat-8.5.38 /usr/local/tomcat vim /usr/local/tomcat/bin/catalina.sh ... # 在 OS specific support. 前面加入以下代碼: JAVA_HOME=/usr/local/java/jdk1.8.0_151 JRE_HOME=$JAVA_HOME/jre
配置啓動:
vim /usr/lib/systemd/system/tomcat8.service ... [Unit] Description=Tomcat After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=oneshot ExecStart=/usr/local/tomcat/bin/startup.sh ExecStop=/usr/local/tomcat/bin/shutdown.sh ExecReload=/bin/kill -s HUP $MAINPID RemainAfterExit=yes [Install] WantedBy=multi-user.target
設置開機啓動:
systemctl enable tomcat8
systemctl start tomcat8.service
配置tomcat
vim /usr/local/tomcat/conf/tomcat-users.xml
...
<role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <user username="admin" password="123ccc" roles="manager-gui,manager-script,manager-jmx,manager-status"/>
設置tomcat訪問:
vim /usr/local/tomcat/webapps/manager/META-INF/context.xml <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="\d+\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
下載漏洞平臺:
https://github.com/baidu-security/openrasp-testcases/releases
tomcat部署war
https://github.com/baidu/openrasp/releases/
自動安裝,若是沒法自動安裝就進行手動安裝。
java -jar RaspInstall.jar -install /usr/local/tomcat/
重啓tomcat
安裝出錯:
https://rasp.baidu.com/doc/install/software.html
手動安裝
cp -rf rasp /usr/share/tomcat/
OpenRASP 須要在 rasp 目錄下釋放一些動態連接庫,因此還須要修改 rasp 目錄的權限,e.g
chmod 777 -R rasp
對於使用 yum 安裝的 tomcat,
你須要建立 ,並寫入如下內容
vim /etc/tomcat/conf.d/rasp.conf
... JAVA_OPTS="-javaagent:${CATALINA_HOME}/rasp/rasp.jar ${JAVA_OPTS}" JAVA_OPTS="-Dlog4j.rasp.configuration=file://${CATALINA_HOME}/rasp/conf/rasp-log4j.xml ${JAVA_OPTS}"
安裝OpenRASP後臺管理
安裝mongoldb
vim /etc/yum.repos.d/mongodb-org-4.0.repo ... [mongodb-org-4.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc yum update sudo yum install -y mongodb-org systemctl start mongod
安裝Elasticsearch
安裝流程:
https://www.elastic.co/downloads/elasticsearch
建立普通用戶
useradd Elasticsearch chown -R Elasticsearch Elasticsearch目錄 vim /usr/local/elasticsearch/config/elasticsearch.yml ...
network.host: 127.0.0.1 http.port: 9200 discovery.zen.ping.unicast.hosts discovery.zen.minimum_master_nodes
若是啓動會出現jdk錯誤問題。
sysctl -w vm.max_map_count=262144
或者永久性修改
/etc/sysctl.conf
vim /usr/java/elasticsearch/config/jvm.options
將 : -Xmx2g
改爲 :-Xmx256m
也就是 heap size [268435456] /1024/1024 的值
若是:max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]這個錯誤(切換到root操做)
vim /etc/security/limits.conf ... seven hard nofile 65536
修改後從新登陸seven用戶,使用以下命令查看是否修改爲功
ulimit -Hn
啓動:
/usr/local/elasticsearch/bin/elasticsearch -d
安裝後臺:
https://github.com/baidu/openrasp/releases
tar -zxvf rasp-cloud.tar.gz
編輯
vim ./conf/app.conf #將 PanelServerURL、AgentServerURL 裏面的 127.0.0.1 替換爲你的服務器IP或者域名。 #修改es和mongodb
啓動
./rasp-cloud -d
http://ip:8086 訪問管理後臺。其中,
後臺用戶名固定爲 openrasp,
初始密碼爲 admin@123
添加客戶端:
https://github.com/baidu/openrasp/releases
unzip rasp-java.zip java -jar RaspInstall.jar -install /path/to/tomcat -appid 9efa63c2964106740d0e99fdeadeb3991326dc95 - appsecret p29HD7aZsfTPkPOy1qG8rLzXrCwAoElzwG8ZRPdFZto -backendurl http://207.xxx.xxx.x:8086
重啓tomcat
/etc/init.d/tomcat restart
更多詳細的功能
文檔:
https://rasp.baidu.com/doc/install/panel.html
https://rasp.baidu.com/
網絡安全意識
何爲意識?
意識是人腦對大腦內外表象的覺察,用於辨識真僞的功能,必須有必定的刺激強度和必定的持續刺激時間才能產生知覺。
密碼安全
1. 我的電腦登陸密碼
2. 企業郵箱
3. 服務器
4. 網盤
5. wifi密碼
6. 加密文檔密碼
7. 網站登陸密碼
8. 手機密碼
9. 等等…
哪些是弱口令?
1 ssx123456 2 qwer1234!@#$ 3 ssx$%^& 4 p@ssw0rd 5 123qwe!@# 6 2wsx#EDC 7 3edc$RFV 8 6yhn&UJM 9 2wsx!QAZ 10 13522213215
# 全是有規律的
爲何會產生弱口令?
我的習慣相關與意識相關,爲了不忘記密碼,使用一個很是容易記住的密碼,或者是直接採用系統的默認密碼等。
123456 Admin Password 123qwe!@# admin888
神仙密碼
密碼:ppnn13%dkstFeb.1st,
解釋:娉娉嫋嫋十三餘,豆蔻梢頭二月初
密碼:for_$n(@RenSheng)_$n+=」die」
解釋:人生自古誰無死
密碼:doWhile(1){LeavesFly();YangtzeRiverFlows();
解釋:無邊落木蕭蕭下,不盡長江滾滾來
密碼:tcmlflw,syred>febhua]
解釋:停車坐愛楓林晚,霜葉紅於二月花
密碼:dig?F*ckDang5
解釋: 鋤禾日當午
密碼: 1dcypsz1/2jss1/2j#f00
解釋:一道殘陽鋪水中,半江瑟瑟半江紅
防範措施
1.電腦自動鎖屏
2.密碼複雜度
3.按期修改密碼
郵件安全
不熟人發的郵件謹慎!勿點!
不安全的文件類型
exe、bat、com、vbs、chm等等…
郵件附件、連接、Word、Excel文檔
好比如下:
攻擊手段
郵件加密
重要文件經過郵件發送而且加密;
密碼經過手機或其它方式告知;
錯誤的方式!以下
防範意識
按期清理郵件
上網安全、軟件安全
開發人員:
物理機隔離禁止上網 -> Vmware -> 殺毒軟件
殺毒軟件、安全補丁、官網下載程序
上網速度慢其它異常,請告知負責人
公共場所上網
上網註冊賬戶時,用戶名密碼不要與公司內部用戶名密碼相同或有關聯;
出門把wifi功能關閉
不登陸公司任何內部網站
萬能鑰匙
其它安全
社會工程學
一種經過對受害者心理弱點、本能反應、好奇心、信任、貪婪等心理陷阱進行諸如欺騙、傷害等危害手段取得自身利益的
手法
第一類 管理
學生面試求工做,企業調查曉背景
入職培訓看視頻,在線考覈得佳績
保密協議有約束,入職員工須遵照
出入公司刷門禁,隨意拍照不準可
領取電腦爲工做,安裝軟件不隨意
手機Wi-Fi開熱點,黑客高手巧破解
軟件安裝存風險,全部業績全盤否
帳號行爲季度審,過後追責覓蹤影
奇葩往事存檔案,訪問控制成擺設
老總房間存機密,廠商輕鬆獲資訊
無知無畏泄天機,衆人開會度危機
第二類 設備
內網外網不同,內外有別分開用
雲盤傳輸很便捷,安全防禦有短板
監控設備改密碼,安全隱患了無痕
撿得優盤帶病毒,電腦崩潰扣獎金
陌生連接點不得,緊急殺毒刪短信
殺毒軟件不能少,終端裸奔出告警
手機軟件不正規,偷跑流量沒商量
移動辦公雖方便,安全意識不馬虎
智能設備存風險,安全漏洞勤修復
手機丟了真可怕,信息丟失無底洞
僞基站發假短信,銀行卡換新密碼
詐騙短信來誤導,手機卡號變廢卡
藍牙故障頻發生,當心隱私別泄露
系統補丁莫忽視,及時更新保安全
電腦維修走流程,卸下硬盤妥保管
優盤救急拷文件,作好防禦分開用
第三類 環境電腦託運起禍端,輕易送修再違規社交羣內混入賊,財務疏忽釀大錯會議室內藏玄機,輕鬆中標有信心洽談會客應合規,網絡空間亦管控打印文件忘拿走,同事泄密釀損失廢棄文件沒粉碎,老總批評方醒悟訪客接待有制度,看見美女不能忘社交媒體爆猛料,公司利益拋腦後前臺粗心沒防範,騙子輕鬆拿號碼帳號共享有原則,第一時間改密碼突如其來被休假,強制離崗有緣由上網行爲又違規,負面過多遭差評轉崗懲戒是手段,挫折路上生退意下定決心要辭職,離職審查有時日離職手續全辦妥,刪除帳號說再見收回設備不能缺,回顧往事辛酸淚