Linux系统安全防护大全
iptables –A INPUT –i eth0 –p tcp –s 192.168.1.25 –dport 137:139 –j ACCEPT 参数说明: -A :新增加一条规则,该规则增加在最后面,例如原本已经有四条规则,
使用 -A 就可以加上第五条规则! -I :插入一条规则,如果没有设定规则顺序,预设是插入变成第一条规则,
三、网络安全选项的设定
编辑 "/etc/sysctl.conf" 档案,并加入下面几行,
# Enable ignoring broadcasts request
(让系统对广播没有反应)
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Disables IP source routing(取消 IP source routing) net.ipv4.conf.all.accept_source_route = 0
一、帐号与口令
1.删除系统臃肿多余的账号: userdel lp 、userdel sync 、userdel shutdown 、userdel halt 、userdel news 、 userdel uucp、 userdel operator、 userdel games、 userdel gopher 、 userdel ftp (如果你不允许匿名 FTP,就删掉这个用户帐号) groupdel lp、 groupdel news 、groupdel uucp、 groupdel games、 groupdel dip 、groupdel pppusers。 2.口令的安全性:口令的长度最少在 10 位或以上,由数字,大小写字母和特殊字符组合而 成,口令的字符组合要具有无规律性,不要用电话,生日,名字等有特殊意义的容易猜测的 数字或字母。 3.Linux 中的帐号和口令是依据/etc/passwd 、/etc/shadow、 /etc/group 、/etc/gshadow 这四个文档的,所以需要更改其权限提高安全性: chattr +i /etc/passwd chattr +i /etc/shadow chattr +i /etc/group chattr +i /etc/gshadow 如果还原,把+i 改成-i,再执行一下上面四条命令。 注:i 属性:不允许对这个文件进行修改,删除或重命名,设定连结也无法写入或新增数据! 只有 root 才能设定这个属性
net.ipv4.conf.all.log_martians = 1 最后重新启动 network
[root@deep /]# /etc/rc.d/init.d/network restart 或者 sysctl –p 生效
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
PermitEmptyPasswords no #禁止空密码登陆。
UseDNS no #SSH 的连接登录延时一般来说是因为 sshd 默认打开了反向 DNS 解析的问题。 #service sshd restart 使得 SSH 生效。 2. 限制 ssh 使用者名单,只允许某些用户帐号使用 ssh 连接: # vi /etc/pam.d/sshd 增加一条命令 auth required pam_listfile.so item=user sense=allow file=/etc/ssh/allow_list onerr=fail vi /etc/ssh/allow_list 添加您想允许使用 ssh 登入主机的帐号,一行一个帐号。 或者:echo oracle >> /etc/ssh/allow_list
3. 使用 DenyHosts 阻止 SSH 暴力破解(同时可以保护 FTP)
DenyHosts 是 Python 语言写的一个程序,它会分析 SSHD 的日志文件, 当发现重复的攻击时就会记录 IP 到/etc/hosts.deny 文件,从而达到自 动屏蔽 IP 的功能。 以下是安装记录: # tar -zxvf DenyHosts-2.6.tar.gz
[root@sample ~]# chkconfig sendmail off ← 关闭 sendmail 自启动
[root@sample ~]# chkconfig --list sendmail ← 确认 sendmail 自启动已 被关闭(都为 off 就 OK) sendmail 0:off 1:off 2:off 3:off 4:off 5:off 6:off
# vi daemon-control
DENYHOSTS_BIN = "/usr/bin/denyhosts.py"
DENYHOSTS_LOCK = "/var/lock/subsys/denyhosts"
DENYHOSTS_CFG = "/usr/share/denyhosts/denyhosts.cfg"
# Enable bad error message Protection(开启错误讯息保护) net.ipv4.icmp_ignore_bogus_error_responses = 1
# Enable IP spoofing protection, turn on Source Address Verification(开启 IP 欺骗 保护)
HOSTS_DENY = /etc/hosts.deny #控制用户登陆的文件
PURGE_DENY = 5m #过多久后清除已经禁止的
BLOCK_SERVICE = sshd BLOCK_SERVICE = vsftpd(如果启用 FTP 服务,务必加上这一行) #禁止的服务名
DENY_THRESHOLD_INVALID = 1 #允许无效用户失败的次数
# Enable TCP SYN Cookie Protection(开启 TCP SYN Cookie 保护) net.ipv4.tcp_syncookies = 1
# Disable ICMP Redirect Acceptance(取消 ICMP 接受 Redirect) net.ipv4.conf.all.accept_redirects = 0
DENY_THRESHOLD_VALID = 10 #允许普通用户登陆失败的次数
DENY_THRESHOLD_ROOT = 5 #允许 root 登陆失败的次数
HOSTNAME_LOOKUP=NO #是否做域名反解
DAEMON_LOG = /var/log/denyhosts #DenyHosts 的日志文件
/usr/share/denyhosts/daemon-control start
DenyHosts 配置文件说明: # vi denyhosts.cfg 这里根据自己需要进行相应的配置
SECURE_LOG = /var/log/secure #sshd 日志文件,它是根据这个文件来判断的,不同的操作系统,文件名稍有不 同。
# cd DenyHosts-2.6
# python setup.py install
默认是安装到/usr/share/denyhosts/目录的。
# cd /usr/share/denyhosts/
# cp denyhosts.cfg-dist denyhosts.cfg
# cp daemon-control-dist daemon-control
# chown root daemon-control
# chmod 700 daemon-control
完了之后执行 daemon-contron start 就可以了。
# ./daemon-control start
如果要使 DenyHosts 每次重起后自动启动还需做如下设置:
# cd /etc/init.d
net.ipv4.conf.all.rp_filter = 1
# Log Spoofed Packets, Source Routed Packets, Redirect Packets(记录 Spoofed Packets, Source Routed Packets, Redirect Packets)
关闭 sendmail 服务:
Linux 安全文档
[root@sample ~]# /etc/rc.d/init.d/sendmail stop ← 关闭 sendmail 服务
Shutting down sendmail: Shutting down sm-client:
[ OK ] [ OK ]
二、SSH 的安全设定
1.设定 sshd 服务器
vi /etc/ssh/sshd_config
Port 10000 #更改 SSH 端口,最好改为 10000 以上,别人扫描到端口的机率也会下降。防火墙要开放配 置好的端口号。 Protocol 2 #禁用版本 1 协议, 因为其设计缺陷, 很容易使密码被黑掉。 PermitRootLogin no #尝试任何情况先都不允许 Root 登录. 生效后我们就不能直接以 root 的方式登录了,我们 需要用一个普通的帐号来登录,然后用 su 来切换到 root 帐号,注意 su 和 su - 是有一点 小小区别的。关键在于环境变量的不同,su -的环境变量更全面。
例如原本有四条规则,使用 -I 则该规则变成第一条,而原本四条变成 2~5 -i :设定『封包进入』的网络卡接口
-p :请注意,这是小写!封包的协议!
tcp :封包为 TCP 协定的封包;
ቤተ መጻሕፍቲ ባይዱ
upd :封包为 UDP 协定的封包;
# ln -s /usr/share/denyhosts/daemon-control denyhosts