linux安全學習筆記
linux安全筆記
gpg -c file gpg -d file.gpg gpg -o f1 -d file.gpg
centos6:192.168.5.100 gpg --gen-key gpg --list-key gpg -a --export -o wang.pubkey scp wang.pubkey 192.168.5.200:/data centos7:192.168.5.200 gpg --gen-key gpg --list-key gpg --import wang.punkey gpg --list-key gpg -e -r wang file scp file.gpg 192.168.5.100 centos6: gpg -o file -d file.gpg centos7: gpg --delete-key wang
openssl enc -des3 -e -a -salt -in fstab -out fstab.cip openssl enc -des3 -d -a -salt -in fstab -out fstab.cip openssl dgst -md5 fstab(md5sum fstab)
openssl rand -hex|-base64 num (生成隨機數) openssl passwd -1(man sslpasswd) 生成使用者密碼 什麼是base64編碼: –base64:A-Z (0-25) a-z 0-9 + / 然後將資料轉化為對應的ascii,再轉化為二進位制,將二進位制每6位劃分為一個位元組,該位元組轉化為對應的base64編碼 echo -n “ab”|base64 001101 00 NA=
生成指定長度的隨機密碼
echo openssl rand -base64 24
|tr -dc “A-Za-z0-9”|cut -c1-5
cat /dev/urandom |tr -dc “/+” |head -c10
生成私鑰 openssl genrsa -out test.key -des 1024 可以用base64 -d test.key檢視(先把檔案描述刪掉)
CA: centos7: cd /etc/pki/CA openssl genrsa -out private/cakey.pem 1024 openssl req -new -x509 -key private/cakey.pem -days 3650 -out cacert.pem 1024 openssl x509 -in cacert.pem -noout -text(-subjects | -dates) centos6: openssl genrsa -out app.key 1024 openssl req -new -key app.key -out app.csr 1024 centos7: openssl ca -in app.csr -out certs/app.crt -days 365
openssl verify -CAFILE cacert.pem certs/app.crt vi index.txt.attr (no)同一個申請可以頒發2個證書方法
吊銷證書: openssl ca -revoke newcerts/01.pem echo 00 > crlnumber openssl crl -out openssl ca -gencrl -out crl.pem(更新吊銷列表,發到網際網路上) cat index.txt openssl crl -in /crl.pem -noout -text
ssh: vi /etc/ssh/sshd_config 更改服務配置檔案埠,連結是需指定-p + 埠;vi /etc/ssh/ssh_config 更改客戶端埠 cp /etc/ssh/ssh_host_rsa_key.pub .(刪掉開頭描述和尾部空格);base64 -d ssh_host_rsa_key.pub > pubkey md5sum pubkey ssh -X 192.168.5.100 遠端開啟目標主機的圖形工具(目標主機字元介面照樣能開啟)
ssh-keygen ssh-copy-id ssh-keygen -p ssh-agent bash ssh-add
!/bin/bash pass=“majin1” rpm -q expect &>/dev/null || yum -y install expect ssh-keygen -t rsa -P “” -f /root/.ssh/id_rsa while read ip;do expect <<EOF spawn ssh-copy-id -i /root/.ssh/id_rsa.pub KaTeX parse error: Expected '}', got '\n' at position 45: …no" { send "yes\̲n̲";exp_continue …pass\n" } } expect eof EOF done < iplist.txt
公鑰檔案格式轉換 ssh-keygen -i -f identity.pub
ssh -L 9527:192.168.0.17:22 -Nf 192.168.0.7 telnet 127.0.0.1 9527 ssh -R 9527:192.168.5.133:23 -Nf 192.168.5.100 killall ssh
telnet 192.168.5.200 25 helo a.com mail from:[email protected] rcpt to:root data subject: test how are you . quit
ssh -L 9527:192.168.5.200:25 -Nfg 192.168.5.134 (A-D)
開啟httpd 192.168.5.200:vi /etc/hosts 192.168.5.100 www.goole.com ssh -D 9527 192.168.5.133 -Nfg 192.168.5.100:iptables -A INPUT -s 192.168.5.200 -j REJECT 192.168.5.200:配置火狐瀏覽器 192.168.5.134:curl --socks5 192.168.5.200:9527 http://192.168.5.100
sshd埠繫結 vi /etc/ssh/sshd_config listenaddress 192.168.5.200 centos7預設使用ECDSA演算法,centos6預設使用rsa演算法
優化ssh連結速度 useDNS no GSSAPIAuthentication no
登入提示語句 Banner /etc/ssh/ssh.txt vi ssh.txt(ssh server)
拒絕使用者登入 Denyusers majin systemctl reload sshd tail /var/log/secure Allowusers Allowgroups Denygroups
建議使用非預設埠 禁止使用protocol version 1 限制可登入使用者 設定空閒會話超時時長 利用防火牆設定ssh訪問策略 僅監聽特定的IP地址 基於口令認證時,使用強密碼策略 tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30| xargs 使用基於金鑰的認證 禁止使用空密碼 禁止root使用者直接登入 限制ssh的訪問頻度和併發線上數 經常分析日誌
awk ‘/Failed password for root from/{ip[$(NF-3)]++}END{for (i in ip){if(ip[i]>=3) system(“iptables -A INPUT -s “i” -j REJECT”)}}’ secure
編譯安裝dropbear less README less INSTALL ./configure --help ./configure --prefix=/app/dropbear --sysconfdir=/etc/dropbear make PROGRAMS=“dropbear dbclient dropbearkey dropbearconvert scp” make PROGRAMS=“dropbear dbclient dropbearkey dropbearconvert scp” install vim /etc/profile.d/dropbear(PATH=/app/dropbear/bin:/app/dropbear/sbin) . /etc/profile.d/dropbear ./dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key dropbear -EFp 2222 ss -ntlp cat /var/run/dropbear.pid centos6: ssh 192.168.5.200 -p 2222 連結客戶端:dbclient 192.168.5.100 scp /etc/fstab 192.168.5.100;報錯,找不到/usr/bin/dropbear ;建立軟連線 ln -s /app/dropbear/bin/ dbclient /usr/bin/dbclient 開機啟動:vim /etc/rc.local /app/dropbear/sbin/dropbear -p 需要給/etc/rc.d/rc.local 執行許可權
清除dropbear vim /etc/rc.local 刪掉dropbear… killall dropbear rm -rf /app/dropbear /etc/dropbear 刪掉安裝包 PATH變數改回去 但是scp不能用, 清空快取 hash -r
vi /etc/aide.conf TEST = p+u+g+md5 /data TEST !/data/f3 aide --init ls /var/lib/aide.conf mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz aide --check aide --update mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
sudo: /etc/sudoers /etc/sudoers.d 格式:majin ip=(root) /bin/cat /etc/shadow cat wang wang ip= /bin/cat /etc/shadow cat mage mage ip=(wang) ALL mage:sudo -u wang sudo cat /etc/shadow
visudo -c檢查/etc/sudoers visudo可直接修改並且具有檢錯功能 export EDITOR=vim ;echo ‘export EDITOR=vim’>/etc/profile.d/test.sh visudo -f /etc/sudoers.d/majin majin ALL= sudoedit(授權majin使用者能編輯 sudoedit /etc/sudoers) User_Alias NETADMIN Cmnd_Alias NETCMD Run_Alias Host_Alias
sudo -l sudo -v 重新整理sudo時間 sudo -k 清除時間 -p ”password on %h for user %p:”
wrappers ldd /PATH/TO/PROGRAM|grep libwrap.so 配置檔案:/etc/hosts.allow, /etc/hosts.deny 幫助參考:man 5 hosts_access,man 5 hosts_options 檢查順序:hosts.allow,hosts.deny(預設允許) 注意:一旦前面規則匹配,直接生效,將不再繼續 基本語法: [email protected]: client_list [ :options :option… ] [email protected]格式 單個應用程式的二進位制檔名,而非服務名,例如vsftpd 以逗號或空格分隔的應用程式檔名列表,如:sshd,vsftpd ALL表示所有接受tcp_wrapper控制的服務程式 主機有多個IP,可用@hostIP來實現控制 如:[email protected] 示例:只允許192.168.1.0/24的主機訪問telnet和vsftpd服務 /etc/hosts.allow vsftpd,in.telnetd: 192.168.1. /etc/host.deny vsftpd,in.telnetd: ALL
mkdir /data/host.deny tcp -d in.telnetd 192.168.5.200
PAM: required :一票否決,表示本模組必須返回成功才能通過認證,但是如果該 模組返回失敗,失敗結果也不會立即通知使用者,而是要等到同一type中的所 有模組全部執行完畢再將失敗結果返回給應用程式。即為必要條件 requisite :一票否決,該模組必須返回成功才能通過認證,但是一旦該模組返 回失敗,將不再執行同一type內的任何模組,而是直接將控制權返回給應用程 序。是一個必要條件 sufficient :一票通過,表明本模組返回成功則通過身份認證的要求,不必再執 行同一type內的其它模組,但如果本模組返回失敗可忽略,即為充分條件 optional :表明本模組是可選的,它的成功與否不會對身份認證起關鍵作用, 其返回值一般被忽略 include: 呼叫其他的配置檔案中定義的配置資訊