1、1617181920212223$ sudo addgroup adminAdding group admin (GID 1001)Done. $ sudo adduser spenserjAdding user spenserj .Adding new group spenserj (1002) .Adding new user spenserj (1001) with group spenserjCreating home directory /home/spenserjCopying files from /etc/skelEnter new UNIX password:Retype n
2、ew UNIX password:passwd: password updated successfullyChanging the user information for spenserjEnter the new value, or press ENTER for the default Full Name : Spenser Jones Room Number : Work Phone : Home Phone : Other :Is the information correct? Y/n y$ sudo usermod -a -G admin spenserj你也将希望在你电脑上创
3、建一个私有key,并且在服务器上禁用讨厌的密码验证。$ mkdir /.ssh$ echo ssh-rsa your public key /.ssh/authorized_keys/etc/ssh/sshd_configPermitRootLogin noPermitEmptyPasswords noPasswordAuthentication noAllowUsers spenserj重新加载SSH,使用修改生效,之后尝试在一个新会话中登陆来确保所有事情正常工作。如果你不能登陆,你将仍然拥有你的原始会话来做修改。$ sudo service ssh restartssh stop/wait
4、ingssh start/running, process 1599更新服务器既然你是访问服务器的唯一用户,你就不用担心黑客鬼鬼祟祟进入,再次正常呼吸。当有一些针对你服务器的更新时,正是修补的机会,所以动手吧,就现在。2425262728293031323334$ sudo apt-get update.Hit precise-updates/universe Translation-en_CAHit precise-updates/universe Translation-enHit precise-backports/main Translation-enHit precise-backp
5、orts/multiverse Translation-enHit precise-backports/restricted Translation-enHit precise-backports/universe Translation-enFetched 3,285 kB in 5s (573 kB/s)Reading package lists. Done$ sudo apt-get upgradeBuilding dependency treeReading state information. DoneThe following packages have been kept bac
6、k: linux-headers-generic-lts-quantal linux-image-generic-lts-quantalThe following packages will be upgraded: accountsservice apport apt apt-transport-https apt-utils aptitude bash .73 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.Need to get 61.0 MB of archives.After this operation, 15
7、1 kB of additional disk space will be used.Do you want to continue Y/n? YSetting up libisc83 (1:9.8.1.dfsg.P1-4ubuntu0.6) .Setting up libdns81 (1:Setting up libisccc80 (1:Setting up libisccfg82 (1:Setting up libbind9-80 (1:Setting up liblwres80 (1:Setting up bind9-host (1:Setting up dnsutils (1:Sett
8、ing up iptables (1.4.12-1ubuntu5) .安装防火墙安装现在正最流行的防火墙软件?好,行动吧。那就配置一个防火墙。之后你总是可以增加另一个异常,几分钟额外的工作并不会折腾死你。Iptables在Ubuntu里预装了,所以去设置一些规则吧。$ sudo mkdir /etc/iptables/etc/iptables/rules*filter:INPUT DROP 0:0FORWARD DROP 0:OUTPUT DROP 0:# Accept any related or established connections-I INPUT 1 -m state -sta
9、te RELATED,ESTABLISHED -j ACCEPT-I OUTPUT 1 -m state -state RELATED,ESTABLISHED -j ACCEPT# Allow all traffic on the loopback interface-A INPUT -i lo -j ACCEPT-A OUTPUT -o lo -j ACCEPT# Allow outbound DHCP request - Some hosts (Linode) automatically assign the primary IP#-A OUTPUT -p udp -dport 67:68
10、 -sport 67:68 -j ACCEPT# Outbound DNS lookups-A OUTPUT -o eth0 -p udp -m udp -dport 53 -j ACCEPT# Outbound PING requests-A OUTPUT -p icmp -j ACCEPT# Outbound Network Time Protocol (NTP) request-A OUTPUT -p udp -dport 123 -sport 123 -j ACCEPT# SSH-A INPUT -i eth0 -p tcp -m tcp -dport 22 -m state -sta
11、te NEW -j ACCEPT# Outbound HTTP-A OUTPUT -o eth0 -p tcp -m tcp -dport 80 -m state -state NEW -j ACCEPT-A OUTPUT -o eth0 -p tcp -m tcp -dport 443 -m state -state NEW -j ACCEPTCOMMIT通过 iptables-apply 命令为规则集生效。如果你丢失连接,修补你的规则,在继续之前再试一下$ sudo iptables-apply /etc/iptables/rulesApplying new ruleset. done.C
12、an you establish NEW connections to the machine? (y/N) y. then my job is done. See you next time.创建文件 /etc/network/if-pre-up.d/iptables,然后写入下面内容。当你启动服务器的时候,将自动载入你的iptables规则。/etc/network/if-pre-up.d/iptables#!/bin/shiptables-restore /etc/iptables/rules现在给它执行权限,执行文件,以确保它正常载入$ sudo chmod +x /etc/netwo
13、rk/if-pre-up.d/iptables$ sudo /etc/network/if-pre-up.d/iptables用 Fail2ban 处理潜在黑客当谈到安全的时,Fail2ban 是我最喜欢的工具之一,它将监控你的日志文件,并且可以临时禁止那些正在滥用你资源,或者正在强制肆虐你的SSH连接,或者正在dos攻击你web服务器的用户。Install Fail2ban$ sudo apt-get install fail2bansudo password for sjones:The following extra packages will be installed: gamin l
14、ibgamin0 python-central python-gamin python-support whoisSuggested packages: mailxThe following NEW packages will be installed: fail2ban gamin libgamin0 python-central python-gamin python-support whois0 upgraded, 7 newly installed, 0 to remove and 2 not upgraded.Need to get 254 kB of archives.After
15、this operation, 1,381 kB of additional disk space will be used. y虽然 Fail2ban 安装一个默认配置(/etc/fail2ban/jail.conf),但我们希望在 /etc/fail2ban/jail.local 写配置,所以把它拷贝到那儿。sudo cp /etc/fail2ban/jail.conf,local配置把 ignoreip 行修改为你的ip,并且可以设置禁止恶意用户的时间量(默认是10分钟)。你也将希望设置一个destemail,这里我通常输入我自已的email地址,再在后面加上 ,fail2banbloc
16、klist.de。BlockList.de 是一个跟踪并且自动报告黑客IP的系统。/etc/fail2ban/jail.localDEFAULT# ignoreip can be an IP address, a CIDR mask or a DNS hostignoreip = 127.0.0.1/8bantime = 600maxretry = 3backend specifies the backend used to get files modification. Available# options are gamin, polling and auto.# yoh: For som
17、e reason Debian shipped python-gamin didnt work as expected# This issue left ToDo, so polling is default backend for nowbackend = auto# Destination email address used solely for the interpolations in# jail.conf,local configuration files.destemail = rootlocalhost,fail2banblocklist.de这有一些其他的你想检查的配置,尽管
18、缺省配置已经相当不错了,所以,快速浏览这些,直到你读到Actions章节。ActionsActions 允许你对恶意行为作出反应,然而当我们想要它禁止和发邮件的时候,默认是禁用了 iptables。值得感谢的是,有一个预配置文件 action_wml,它恰恰是做这个的。# Choose default action. To change, just override value of action with the# interpolation to the chosen action shortcut (e.g. action_mw, action_mwl, etc) in jail.loc
19、al# globally (section DEFAULT) or per specific sectionaction = %(action_mwl)sJails 监控为了让Fail2ban工作,需要了解要监控哪些东西。这些已在Jails部分的配置文件,并且这有一些预载入而未启用的例子。既然到目前为止,你仅仅在服务器上启用了SSH访问,那我们就只启用SSH和SSH-DDos 监控,然而你还是会想给安装在这台服务器上的公共访问服务增加新的监控。sshenabled = trueport = sshfilter = sshdlogpath = /var/log/auth.logmaxretry
20、= 6ssh-ddosfilter = sshd-ddos让变化生效既然我们已经配置了Fail2ban,你将希望重新载入它,并且确保向iptables增加了合适的规则。$ sudo service fail2ban restart * Restarting authentication failure monitor fail2ban .done.$ sudo iptables -LChain INPUT (policy DROP)target prot opt source destinationfail2ban-ssh-ddos tcp - anywhere anywhere multip
21、ort dports sshfail2ban-ssh tcp - anywhere anywhere multiport dports sshChain fail2ban-ssh (1 references)RETURN all - anywhere anywhereChain fail2ban-ssh-ddos (1 references)在任何时间,你都可以使用sudo iptables -L 来列出你的规则,随后列出所有当前禁止的 IP。此时,Fail2ban正在处理两个恶意的用户。Banned IPsDROP all - 204.50.33.22 anywhereDROP all - 195.128.126.114 anywhere保持最新更新你可能现在拥有一个已经锁定并且准备投入使用的服务器,然而这并不是你安全之旅的终点。保持最新更新(并且总是首先在非产品环境下测试),总是关闭你不需要的端口,定期检查你的日志,并且由内而外了解你的服务器。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1