ssh-copy-id -i ~/.ssh/id_rsa.pub root@服務器ip
複製代碼
配置SSH配置文件/etc/ssh/sshd_config
mysql
sudo cp /etc/ssh/sshd_config ~ (備份,復原時使用)
sudo vi /etc/ssh/sshd_config
複製代碼
選項 | 含義 |
---|---|
Port | 默認22(可修改) |
Protocol 2 | ssh 協議使用新版的 |
PermitRootLogin no | 不容許 root 登陸 |
PermitEmptyPasswords no | 不容許空密碼登陸 |
PasswordAuthentication no | 使用密碼受權登陸 |
RSAAuthentication yes | 使用RSA算法進行安全驗證 |
PubkeyAuthentication yes | 容許公鑰認證 |
UseDNS no | 禁用DNS反向解析 會加快速度 |
SyslogFacility AUTHPRIV | 記錄用戶登陸信息 |
設置完成以後,保存退出重啓SSHDlinux
sudo service ssh restart
複製代碼
或者ios
sudo /etc/init.d/ssh restart
複製代碼
配置登陸用戶 ,假如用戶名爲deploynginx
useradd -d /home/deploy -s /bin/bash -m deploy
複製代碼
爲新建立的用戶,設置密碼算法
passwd deplay
複製代碼
而後給deploy用戶配置權限sql
sudo vi /etc/sudoers
複製代碼
找到下面的這一行apache
root ALL=(ALL:ALL) ALl
deplay ALL=(ALL) NOPASSWD: ALL
複製代碼
NOPASSWD
表示,在切換sudo的時候不須要輸入密碼,根據本身喜愛來設置vim
最後保存退出便可。後端
檢查服務器的區域設置。安全
locale
複製代碼
若是結果不是 en_US.UTF-8,建議都設成它。
sudo locale-gen en_US en_US.UTF-8 en_CA.UTF-8
sudo dpkg-reconfigure locales
複製代碼
而後,更新軟件
sudo apt-get update
sudo apt-get upgrade
複製代碼
sudo ufw allow from [ip] to any port [端口] 僅特定ip能夠訪問此端口
sudo ufw allow 80 容許80端口訪問
sudo ufw allow 443 容許443端口訪問
sudo ufw disable 禁用ufw
sudo ufw enable 啓用ufw
複製代碼
iptables -I INPUT -s *.*.*.* -j DROP 封停ip
iptables -D INPUT -s *.*.*.* -j DROP 解封ip
複製代碼
vim /etc/cron.daily/00logwatch
#!/bin/bash
# Check if removed-but-not-purged
test -x /usr/share/logwatch/scripts/logwatch.pl || exit 0
# execute
/usr/sbin/logwatch --output mail --mailto [郵箱] --detail high
# Note: It's possible to force the recipient in above command
# Just pass --mailto address@a.com instead of --output mail
複製代碼
安裝 sendmail
sudo apt-get install sendmail
sudo apt-get install sendmail-cf
複製代碼
若是mail命令不存在,安裝mailutils
sudo apt-get install mailutils
複製代碼
查看是否啓動
ps aux | grep sendmail 複製代碼
編輯配置文件, sudo vim /etc/mail/sendmail.mc
修改監聽地址, DAEMON_OPTIONS('Family=inet, Name=MTA-v4, Port=smtp, Addr=0.0.0.0')dnl</span>
若是提示 hostname 不合格, 修改它
查看 hostname `hostname`
修改 hostname `hostname [新值]`
複製代碼
發送郵件
mail [郵箱地址]
主題
內容
Ctrl-D結束
複製代碼
對於 Debian / Ubuntu,使用 APT-GET 命令或 APT 命令安裝。
sudo apt install fail2ban
複製代碼
配置Fail2Ban
默認狀況下,Fail2Ban 將全部配置文件保存在 /etc/fail2ban/
目錄中。 主配置文件是 jail.conf
,它包含一組預約義的過濾器。 因此,不要編輯該文件,這是不可取的,由於只要有新的更新,配置就會重置爲默認值。
只需在同一目錄下建立一個名爲 jail.local
的新配置文件,並根據您的意願進行修改。
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
複製代碼
默認狀況下,大多數選項都已經配置的很完美了,若是要啓用對任何特定 IP 的訪問,則能夠將 IP 地址添加到 ignoreip
區域,對於多個 IP 的狀況,用空格隔開 IP 地址。
配置文件中的 DEFAULT
部分包含 Fail2Ban 遵循的基本規則集,您能夠根據本身的意願調整任何參數。
# nano /etc/fail2ban/jail.local
[DEFAULT]
ignoreip = 127.0.0.1/8 192.168.1.100/24
bantime = 600
findtime = 600
maxretry = 3
destemail = mhecy98@gmail.com
複製代碼
ignoreip
:本部分容許咱們列出 IP 地址列表,Fail2Ban 不會禁止與列表中的地址匹配的主機 bantime
:主機被禁止的秒數 findtime
:若是在最近 findtime 秒期間已經發生了 maxretry 次重試,則主機會被禁止 maxretry
:是主機被禁止以前的失敗次數
如何配置服務
Fail2Ban 帶有一組預約義的過濾器,用於各類服務,如 ssh、apache、nginx、squid、named、mysql、nagios 等。 咱們不但願對配置文件進行任何更改,只需在服務區域中添加 enabled = true
這一行就能夠啓用任何服務。 禁用服務時將 true
改成 false
便可。
# SSH servers
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
複製代碼
enabled
: 肯定服務是打開仍是關閉。 port
:指明特定的服務。 若是使用默認端口,則服務名稱能夠放在這裏。 若是使用非傳統端口,則應該是端口號。 logpath
:提供服務日誌的位置 backend
:指定用於獲取文件修改的後端。
重啓 Fail2Ban
進行更改後,從新啓動 Fail2Ban 才能生效。
[For SysVinit Systems]
# service fail2ban restart
[For systemd Systems]
# systemctl restart fail2ban.service
複製代碼
驗證 Fail2Ban iptables
規則
你可使用下面的命令來確認是否在防火牆中成功添加了Fail2Ban iptables
規則。
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
f2b-apache-auth tcp -- anywhere anywhere multiport dports http,https
f2b-sshd tcp -- anywhere anywhere multiport dports 1234
ACCEPT tcp -- anywhere anywhere tcp dpt:1234
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain f2b-apache-auth (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
Chain f2b-sshd (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
複製代碼
查看啓用的監獄列表,請運行如下命令。
# fail2ban-client status
Status
|- Number of jail: 2 `- Jail list: apache-auth, sshd 複製代碼
經過運行如下命令來獲取禁止的 IP 地址。
# fail2ban-client status ssh
Status for the jail: ssh
|- filter | |- File list: /var/log/auth.log | |- Currently failed: 1 | `- Total failed: 3 `- action
|- Currently banned: 1 | `- IP list: 192.168.1.115 `- Total banned: 1
複製代碼
要從 Fail2Ban 中刪除禁止的 IP 地址,請運行如下命令。
# fail2ban-client set ssh unbanip 192.168.1.115
複製代碼
下載源代碼
weget https://www.itkylin.com/download/portsentry-1.2.tar.gz
複製代碼
解壓、編譯安裝portsentry
tar -xpf portsentry-1.2.tar.gz
cd portsentry_beta
make linux
make install
複製代碼
編輯配置文件
sudo vim /usr/local/psionic/portsentry/portsentry.conf
複製代碼
找到RESOLVE_HOST
,將其修改成RESOLVE_HOST = 0
啓動PortSentry的TCP/UDP高級祕密掃描偵測模式
/usr/local/psionic/portsentry/portsentry -atcp
/usr/local/psionic/portsentry/portsentry -audp
複製代碼
設置隨系統啓動自動運行
執行以下命令
sudo vim /etc/rc.local
複製代碼
將下面這兩條命令寫進去
/usr/local/psionic/portsentry/portsentry -atcp
/usr/local/psionic/portsentry/portsentry -audp
複製代碼
查詢阻止的惡意掃描
portsentry阻檔的全部惡意掃描記錄會實時寫入到/var/log/syslog
文件,因此咱們只須要用tail
命令就能實時的查詢已阻止的惡意掃描,命令以下
tail -f /var/log/syslog
複製代碼
被阻止的IP將會放入/etc/hosts.deny
,如果有誤判,能夠編輯此文件刪除便可。你也能夠編輯/usr/local/psionic/portsentry/portsentry.ignore
此文件,將誤判的IP或要忽略的IP加入portsentry.ignore文件,它就至關因而白名單。
如今,你會感受你的服務器基本上已經安全了,能夠愜意的喝杯咖啡吧!