sysctl
时间:2005-12-12 来源:rickyweiwei
sysctl 為控管核心咝袝r參數的工具,就是控制 /proc/sys/ 下面的工具。
在 sysctl 命令中,'/' 可以用 '.' 取代。
使用方法
查看變數
sysctl [-n] [-e] 變數 ...
設定變數
sysctl [-n] [-e] -w 變數=值 ...
sysctl -w net/ipv4/ip_forward=1
#也可以
sysctl -w net.ipv4.ip_forward=1
;從檔案載入 sysctl 的設定;若無檔名,預設載入 /etc/sysctl.conf:sysctl [-n] [-e] -p <filename>
顯示出所有的變數與其值
sysctl [-n] [-e] -a
顯示出表格中所有的變數與其值
sysctl [-n] [-e] -A
其他
可以把每次啟動要更改的項目寫入 /etc/sysctl.conf
假使有架 NAT,需要開啟 kernel 的 route 功能
則可以在 /etc/sysctl.conf 中加入
net/ipv4/ip_forward=1
或是
net.ipv4.ip_forward=1
应用:
纪录尝试向你的机器要求你机器未有的服务的connection记录
若你的机器没有跑named 而对方想要向您要求DNS的服务你会看到...
$tail -10 /var/log/message
ohaha /kernel: Connection attempt to TCP 你的IP位置:53 from 对方IP位置:2731
其中2731 乃是只某一个高於1024的high port ...
命令:
# sysctl -w net.inet.tcp.log_in_vain=1
# sysctl -w net.inet.udp.log_in_vain=1
不过这样只有短暂的 重开机就没有了....
所以我们把他写成一个档案放到rc.d 之中...
自动执行:
1.建立档案
/usr/local/etc/rc.d/# vi logstart.sh
(自己取一个格式为*.sh的档案)
内容只有两行...
sysctl -w net.inet.tcp.log_in_vain=1
sysctl -w net.inet.udp.log_in_vain=1
2.更改权限
chmod 700 logstart.sh
3.执行
./logstart.sh
4.观看结果
tail /var/log/message
你将会发现有许多纪录喔~~可以作为您安全性的参考~~
补充:sysctl会去读/etc/sysctl.conf 这一个档案...
您也可以在这边加上设定~~
:/etc/rc.sysctl 其中有一部份是这样的..
#
# Read in /etc/sysctl.conf and set things accordingly
#
if [ -f /etc/sysctl.conf ]; then
while read var comments
do
case ${var} in
#*|'')
;;
*)
sysctl -w ${var}
;;
esac
done < /etc/sysctl.conf
fi
更多相关参见:http://www.chinaitpower.com/2005September/2005-09-13/208330.html