- 数据加载中...
正文
|
||||
Linux 服务器安全配置(2)5.系统优化5.1 虚拟内存优化:一般来说,linux的物理内存几乎是完全used。这个和windows非常大的区别,它的内存管理机制将系统内存充分利用,并非windows无论多大的内存都要去使用一些虚拟内存一样。 在/proc/sys/vm/freepages中三个数字是当前系统的:最小内存空白页、最低内存空白页和最高内存空白。 注意,这里系统使用虚拟内存的原则是:如果空白页数目低于最高空白页设置,则使用磁盘交换空间。当达到最低空白页设置时,使用内存交换。内存一般以每页4k字节分配。最小内存空白页设置是系统中内存数量的2倍;最低内存空白页设置是内存数量的4倍;最高内存空白页设置是系统内存的6倍。 以下以1G内存为例修改系统默认虚拟内存参数大小: echo "2048 4096 6444" >/proc/sys/vm/freepages
6.日志管理6.1 系统引导日志:dmesg 内容会很多,所以您往往会希望将其通过管道传输到一个阅读器。 6.2 系统运行日志:A、Linux 日志存储在 /var/log 目录中。这里有几个由系统维护的日志文件,但其他服务和程序也可能会把它们的日志放在这里。大多数日志只有 root 才可以读,不过只需要修改文件的访问权限就可以让其他人可读。 以下是常用的系统日志文件名称及其描述: lastlog 记录用户最后一次成功登录时间 loginlog 不良的登陆尝试记录 messages 记录输出到系统主控台以及由syslog系统服务程序产生的消息 utmp 记录当前登录的每个用户 utmpx 扩展的utmp wtmp 记录每一次用户登录和注销的历史信息 wtmpx 扩展的wtmp vold.log 记录使用外部介质出现的错误 xferkig 记录Ftp的存取情况 sulog 记录su命令的使用情况 acct 记录每个用户使用过的命令 aculog 拨出自动呼叫记录 B、/var/log/messages C、/var/log/XFree86.0.log D、在/var/log 目录下有一些文件以一个数字结尾,这些是已轮循的归档文件。日志文件会变得特别大,特别笨重。Linux 提供了一个命令来轮循这些日志,以使您的当前日志信息不会淹没在旧的无关信息之中。 logrotate 通常是定时自动运行的,但是也可以手工运行。当执行后,logrotate 将取得当前版本的日志文件,然后在这个文件名最后附加一个“.1”。其他更早轮循的文件为“.2”、“.3”,依次类推。文件名后的数字越大,日志就越老。 可以通过编辑 /etc/logrotate.conf 文件来配置 logrotate 的自动行为。通过 man logrotate 来学习 logrotate 的全部细节。 其中: # rotate log files weekly weekly 这里代表每个日志文件是每个星期循环一次,一个日志文件保存一个星期的内容。 # keep 4 weeks worth of backlogs rotate 4 这里代表日志循环的次数是4次,即可以保存4个日志文件。 E、定制日志 可以通过编辑 /et/syslog.conf 和 /etc/sysconfig/syslog 来配置它们的行为,可以定制系统日志的存放路径和日志产生级别。 6.3 系统各用户操作日志:last 单独执行last指令,它会读取位于/var/log目录下,名称为wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。 history history命令能够保存最近所执行的命令。如果是root命令所保存的命令内容在/root/.bash_history文件中,如果是普通用户,操作所命令保存在这个用户的所属目录下,即一般的/home/username/.bash_history。这个history的保存值可以设置,编辑/etc/profile文件,其中的HISTSIZE=1000的值就是history保存的值。 7.防火墙7.1 iptables类型防火墙:7.1.1 iptables概念:Iptalbes(IP包过滤器管理)是用来设置、维护和检查Linux内核的IP包过滤规则的。 可以定义不同的表,每个表都包含几个内部的链,也能包含用户定义的链。每个链都是一个规则列表,对对应的包进行匹配:每条规则指定应当如何处理与之相匹配的包。这被称作'target'(目标),也可以跳向同一个表内的用户定义的链。 通过使用用户空间,可以构建自己的定制规则,这些规则存储在内核空间的信息包过滤表中。这些规则具有目标,它们告诉内核对来自某些源、前往某些目的地或具有某些协议类型的信息包做些什么。如果某个信息包与规则匹配,那么使用目标 ACCEPT 允许该信息包通过。还可以使用目标 DROP 或 REJECT 来阻塞并杀死信息包。对于可对信息包执行的其它操作,还有许多其它目标。 根据规则所处理的信息包的类型,可以将规则分组在链中。处理入站信息包的规则被添加到 INPUT 链中。处理出站信息包的规则被添加到 OUTPUT 链中。处理正在转发的信息包的规则被添加到 FORWARD 链中。这三个链是基本信息包过滤表中内置的缺省主链。另外,还有其它许多可用的链的类型(如 PREROUTING 和 POSTROUTING),以及提供用户定义的链。每个链都可以有一个策略,它定义“缺省目标”,也就是要执行的缺省操作,当信息包与链中的任何规则都不匹配时,执行此操作。 建立规则并将链放在适当的位置之后,就可以开始进行真正的信息包过滤工作了。这时内核空间从用户空间接管工作。当信息包到达防火墙时,内核先检查信息包的头信息,尤其是信息包的目的地。我们将这个过程称为路由。 如果信息包源自外界并前往系统,而且防火墙是打开的,那么内核将它传递到内核空间信息包过滤表的 INPUT 链。如果信息包源自系统内部或系统所连接的内部网上的其它源,并且此信息包要前往另一个外部系统,那么信息包被传递到 OUTPUT 链。类似的,源自外部系统并前往外部系统的信息包被传递到 FORWARD 链。 7.1.2 iptables实例1:#!/bin/sh # 禁止系统的转发包功能 echo 0 > /proc/sys/net/ipv4/ip_forward # 清楚iptables原有规则,并设置iptables默认规则 iptables -t nat -F POSTROUTING iptables -t nat -F PREROUTING iptables -t nat -F OUTPUT iptables -F iptables -P INPUT DROP iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT # 在input规则中需要打开的tcp、upd端口 iptables -A INPUT -j ACCEPT -p tcp --dport 80 iptables -A INPUT -j ACCEPT -p tcp --dport 22 iptables -A INPUT -j ACCEPT -p tcp --dport 25 iptables -A INPUT -j ACCEPT -p tcp --dport 1352 iptables -A INPUT -p udp --destination-port 53 -j ACCEPT # 在input规则中状态为:STATE RELATED 的包都接受 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 启用系统ip转发功能 echo 1 > /proc/sys/net/ipv4/ip_forward < --end-- > 7.1.3 iptables实例2:注:这个实例中,只需要设置tcp、udp端口和服务器网络段ip范围即可,其他已经默认设置好。 #!/bin/sh # make:yongzhang # time:2004-06-18 # e-mail: yongzhang@wiscom.com.cn
PATH=/sbin:/bin:/usr/sbin:/usr/bin ##tcp allow ports TPORTS="80 22" ##udp allow ports UPORTS="53" ##internal server_ip range SERVER_IP="172.18.10.0/24" ##disable forwarding echo 0 > /proc/sys/net/ipv4/ip_forward ##reset default policies iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT iptables -t nat -P OUTPUT ACCEPT ##del all iptables rules iptables -F INPUT iptables -F FORWARD iptables -F OUTPUT ##clean all non-default chains iptables -X iptables -t nat -X ##iptables default rules iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT ##allow ping packets iptables -A INPUT -p ICMP -s 0/0 --icmp-type 0 -j ACCEPT iptables -A INPUT -p ICMP -s 0/0 --icmp-type 3 -j ACCEPT iptables -A INPUT -p ICMP -s 0/0 --icmp-type 5 -j ACCEPT iptables -A INPUT -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT iptables -A INPUT -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT #iptables -A INPUT -p ICMP -s 0/0 --icmp-type 11 -m limit --limit 5/s -j ACCEPT iptables -A FORWARD -p ICMP -j ACCEPT ##enable forwarding iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT ##STATE RELATED for router iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ##accept internal packets on the internal i/f iptables -A INPUT -s $SERVER_IP -p tcp -j ACCEPT ##open ports on router for server/services ##TCP PORTS for ATP in $TPORTS do iptables -A INPUT ! -s $SERVER_IP -d $SERVER_IP -p tcp --destination-port $ATP -j ACCEPT iptables -A FORWARD -p tcp --destination-port $ATP -j ACCEPT done ##UDP PORTS for AUP in $UPORTS do iptables -A INPUT -p udp --destination-port $AUP -j ACCEPT iptables -A FORWARD -p udp --destination-port $AUP -j ACCEPT done ##bad_packets chain ##drop INVALID packets immediately iptables -A INPUT -p ALL -m state --state INVALID -j DROP ##limit SYN flood #iptables -A INPUT -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT #iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT ##deny all ICMP packets,eth0 is external net_eth #iptables -A INPUT -i eth0 -s 0.0.0.0/0 -p ICMP -j DROP ##allow loopback iptables -A INPUT -i lo -p all -j ACCEPT iptables -A OUTPUT -o lo -p all -j ACCEPT ##enable forwarding echo 1 > /proc/sys/net/ipv4/ip_forward < --end-- > 7.2 ipchains类型防火墙:7.2.1 ipchains概念:Ipchains 被用来安装、维护、检查Linux内核的防火墙规则。规则可以分成四类:IP input链、IP output链、IP forward链、user defined 链。 一个防火墙规则指定包的格式和目标。当一个包进来时, 核心使用input链来决定它的命运。 如果它通过了, 那么核心将决定包下一步该发往何处(这一步叫路由)。假如它是送往另一台机器的, 核心就运用forward链。如果不匹配,进入目标值所指定的下一条链,那有可能是一条user defined链,或者是一个特定值: ACCEPT,DENY,REJECT,MASQ,REDIRECT,RETURN。 ACCEPT意味着允许包通过,DENY 扔掉包就象没有受到过一样,REJECT也把包扔掉,但(假如它不是 ICMP 包)产生一个 ICMP 回复来告诉发包者,目的地址无法到达(请注意DENY和REJECT对于ICMP包是一样的)。 7.2.2 ipchains实例:##清除input规则的规则,并改变input默认的规则链策略为REJECT -F input -P input REJECT ##以下是允许input规则链的tcp端口为:80 81 22 123 -A input -s 0/0 -d 0/0 80 -p tcp -y -j ACCEPT -A input -s 0/0 -d 0/0 81 -p tcp -y -j ACCEPT -A input -s 0/0 -d 0/0 22 -p tcp -y -j ACCEPT -A input -s 0/0 -d 0/0 123 -p udp -j ACCEPT
##设置除了以上允许的input规则链以为,拒绝0-1023、2049、6000-6009、7100的tcp和upd端口, -A input -p tcp -s 0/0 -d 0/0 0:1023 -y -j REJECT -A input -p tcp -s 0/0 -d 0/0 2049 -y -j REJECT -A input -p udp -s 0/0 -d 0/0 0:1023 -j REJECT -A input -p udp -s 0/0 -d 0/0 2049 -j REJECT -A input -p tcp -s 0/0 -d 0/0 6000:6009 -y -j REJECT -A input -p tcp -s 0/0 -d 0/0 7100 -y -j REJECT ##允许系本身统网卡上发生的所有包通过 -A input -s 0/0 -d 0/0 -i lo -j ACCEPT -A input -s 0/0 -d 0/0 -i eth0 -j ACCEPT -A input -s 0/0 -d 0/0 -i eth1 -j ACCEPT ##清除output规则的规则,并改变output默认的规则链策略为ACCEPT -F output -P output ACCEPT ##清除forward规则的规则,并改变forward默认的规则链策略为DENY,设置了forward规则链允许对10.10.11.0/24网段的包可以转发并且做伪装处理。 -F forward -P forward DENY -A forward -s 10.10.11.0/24 -j MASQ 评论
|
||||