■ OS : 리눅스
● 현재 서버 보안상태및 자원상태 확인
pstree 로 구동중인 프로세스 확인
lsof / ps 로 프로세스 상세점검
netstat -anlp | more 로 open 된 포트 확인하여 iptables 에 반영할준비
vmstat / top / iostat / sar 등으로 시스템자원의 상태파악하여 시스템 부하상태확인
df -Th 로 파티션 용량 확인
uname -a ( 현재 구동중인 커널 이미지확인 )
# 커널버전 낮을시 커널업데이트후 고객과 상담하여 리부팅하여 반영할것
● 시간 정보 동기화
# crontab 에 새벽 6시에 시간동기화 실행하도록 설정
$ rdate -s time.bora.net && date && clock -r && clock -w
$ echo '#!/bin/sh' >> /root/time.sh;echo 'rdate -s time.bora.net && date && clock -r && clock -w;' >> /root
/time.sh;echo '# time sync' >> /etc/crontab;echo '00 6 * * * root /root/time.sh' >> /etc/crontab;chmod 700
/root/time.sh;/etc/rc.d/init.d/crond restart;
● 초기 실행 데몬 선택 (아래 데몬들은 예제이므로 필요없는데몬여부는 고객과 상담하여 진행)
crond, imap,imaps,ipop3, pop3s, irqbalance, network, sendmail, saslauthd, sshd, syslog, vsftpd, xinetd,
( httpd, mysqld,named 는 서비스 이용여부에 따라 선택적 )
● 서버에 불필요한 패키지들 제거
$ rpm -e raidtools; (소프트웨어 레이드 구성시에는 주석처리)
$ rpm -e eject --nodeps; rpm -e kernel-pcmcia-cs; rm -f /etc/sysconfig/pcmcia.rpmsave; rpm -e setseria
l; rpm -e statserial; rpm -e rsh;rpm -e rlogin;rpm -e telnet-server;rpm -e redhat-config-mouse; rpm -e gp
m-devel; rpm -e gpm; rpm -e nfs-utils; rpm -e yp-tools ypbind; rpm -e isdn4k-utils; rpm -e fam-devel;rp
m -e anacron; rpm -e irda-utils; rpm -e minicom; rpm -e ppp --nodeps;
● iptable 설정
# iptable 정책확인
$ iptables -L -n
$ cat /etc/sysconfig/iptables
# 정책이 이미 잘설정이 되어 있을경우는 rc.firewall 작업수행하지말것
$ chkconfig --level 345 iptables off
$ cd /etc/rc.d/; wget ftp://ftp.kksstt.com/scripts/rc.firewall*;chmod 700 /etc/rc.d/rc.firewall*;echo "/etc/rc.d
/rc.firewall" >> /etc/rc.d/rc.local
이외에 netstat -anp 로 확인하여 포트를 열것
$ /etc/rc.d/rc.firewall.stop # iptable 정책멈춤
$ /etc/rc.d/rc.firewall # iptable 정책시작
$ iptables -L -n #했을시 아래와 같은 정책이 제대로 되었는지 확인
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 127.0.0.1 0.0.0.0/0
ACCEPT all -- 고객아이피 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 고객아이피 multiport dports 20,21,22,25,53,80,110,143
ACCEPT udp -- 0.0.0.0/0 고객아이피 multiport dports 20,53
ACCEPT tcp -- 0.0.0.0/0 고객아이피 multiport sports 20,21,22,25,53,80,110,143
ACCEPT udp -- 0.0.0.0/0 고객아이피 multiport sports 20,53
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT icmp -- 고객아이피 고객아이피
DROP tcp -- 0.0.0.0/0 고객아이피 tcp spt:2603 flags:0x16/0x02
DROP tcp -- 0.0.0.0/0 고객아이피 tcp spts:6666:6667 flags:0x16/0x02
DROP udp -- 0.0.0.0/0 고객아이피 multiport dports 135
LOG all -- 0.0.0.0/0 0.0.0.0/0 state INVALID LOG flags 0 level 4 prefix `INVALID DROP'
DROP all -- 0.0.0.0/0 0.0.0.0/0 state INVALID
DROP tcp -- 0.0.0.0/0 고객아이피 tcp flags:0x16/0x02
● 계정삭제
불필요한 계정 및 그룹 삭제한다
userdel adm;userdel news;userdel gopher;userdel lp;userdel sync;userdel shutdown;userdel halt;userdel operator;
userdel games;userdel ftp;userdel rpc;userdel rpcuser;userdel nfsnobody;userdel nscd;groupdel adm;groupdel ne
ws;groupdel games;groupdel dip;
● 파일시스템 옵션설정 (디바이스명(/dev/shm /tmp 등등) 을 잘확인하여 굵은글씨추가)
$ /etc/fstab
none /dev/shm tmpfs defaults,noexec,nosuid 0 0
LABEL=/home /home ext3 defaults,noatime,nodev 1 2
LABEL=/tmp /tmp ext3 defaults,noatime,nodev,noexec,nosuid 1 2
LABEL=/usr /usr ext3 defaults,noatime,nodev 1 2
LABEL=/usr/local /usr/local ext3 defaults,noatime,nodev 1 2
# 리마운트하여 적용
$ mount -o remount,rw / /usr /usr/local /tmp /home /dev/shm
$ mount (옵션 확인)
## 설명 ##
# /dev/shm 은 공유메모리 디바이스로 posix기반의 공유메모리를 사용하는 소스에서 사용함
# noatime 은 access time 에 대해서는 기록을 하지않아 자주 사용하는 파티션의 파일일경우
아주 약간의 성능향상이 있다.
# nodev 는 해당파티션에서 문자나 특정 디바이스 장치를 허용하지 않음
# noexec 는 해당 파티션에서 실행파일의 실행이 허용되지 않음
# nosuid 는 해당파티션에서 suid / sgid 등의 setuid설정을 허용하지 않는다
● 퍼미션 조정
chmod 600 /proc
chmod 751 /
chmod 701 /bin
chmod 700 /boot
chmod 701 /dev
chmod 755 /dev/shm
chmod 751 /etc
chmod 700 /etc/rc.d
chmod 751 /home
chmod 751 /lib/modules
chmod 700 /mnt
chmod 700 /root
chmod 751 /sbin
chmod 751 /usr
chmod 751 /usr/local
chmod 700 /usr/local/apache/conf
chmod 701 /usr/local/apache/htdocs
chmod 700 /usr/local/apache/logs
chmod 751 /usr/local/bin
chmod 751 /usr/local/sbin
chmod 700 /usr/local/src
chmod 701 /usr/sbin
chmod 700 /usr/src
chmod 751 /var
chmod 751 /var/log
chmod 751 /var/named
chmod 751 /var/run
chmod 755 /var/tmp
chmod 750 /etc/cron.*
chmod 640 /etc/crontab
chmod 750 /etc/default
chmod 600 /etc/exports
chmod 600 /etc/fstab
chmod 600 /etc/hosts.allow
chmod 600 /etc/hosts.deny
chmod 600 /etc/inittab
chmod 600 /etc/login.defs
chmod 750 /etc/logrotate.d
chmod 600 /etc/mtab
chmod 650 /etc/my.cnf
chmod 750 /etc/rc.d
chmod 600 /etc/redhat-release
chmod 750 /etc/rpm
chmod 600 /etc/rpc
chmod 600 /etc/securetty
chmod 751 /etc/security
chmod 700 /etc/skel
chmod 700 /etc/ssh
chmod 700 /etc/sysconfig
chmod 700 /etc/xinetd.d
chmod 700 /etc/vsftpd
chmod 700 /bin/mount
chmod 500 /bin/ping
chmod 700 /bin/umount
chmod 550 /bin/ps
chmod 550 /bin/netstat
chmod 550 /bin/dmesg
chmod 550 /bin/df
chmod 700 /bin/rpm
chmod 700 /sbin/netreport
chmod 755 /usr/bin/at
chmod 700 /usr/bin/chage
chmod 700 /usr/bin/chfn
chmod 700 /usr/bin/chsh
chmod 755 /usr/bin/crontab
chmod 550 /usr/bin/find
chmod 700 /usr/bin/gpasswd
chmod 700 /usr/bin/newgrp
chmod 750 /usr/bin/pstree
chmod 111 /usr/bin/sudo
chmod 500 /usr/bin/wall
chmod 700 /usr/bin/write
chmod 700 /usr/sbin/ping6
chmod 700 /usr/sbin/traceroute
chmod 700 /usr/sbin/traceroute6
chmod 700 /usr/sbin/usernetctl
chmod 550 /usr/bin/who
chmod 550 /usr/bin/finger
chmod 550 /usr/bin/last
chmod 550 /usr/bin/top
chmod 550 /usr/bin/w
chmod 550 /usr/bin/uptime
chmod 550 /usr/sbin/useradd
chmod 550 /usr/sbin/userdel
chmod 700 /usr/sbin/groupdel
chmod 700 /usr/sbin/usermod
chmod 750 /usr/bin/telnet
chmod 750 /usr/bin/rlogin
chmod 750 /usr/bin/rcp
chmod 750 /usr/bin/rsh
chmod 700 /usr/bin/wget
chmod 700 /usr/bin/lynx
chmod 700 /usr/bin/curl
chmod 700 /usr/bin/ncftpget
● ftp 보안설정 (복사후 붙여넣기)
### 스마일서브 vsftpd 설정 v1.0 ###
anonymous_enable=NO
# --> ☞ FTP 익명 접근 차단
local_enable=YES
# --> ☞ 로컬에서 계정의 접근허용
write_enable=YES
# --> ☞ 쓰기허용
data_connection_timeout=180
# --> ☞ 3분간 전송이 없을시 접속해제
local_umask=022
# --> ☞ directory=755 / file=644
xferlog_enable=YES
# --> ☞ 로그기록여부
connect_from_port_20=YES
# --> ☞ 20포트허용여부
xferlog_std_format=YES
# --> ☞ 로그파일이 쌓일시 일반적인 로그포멧사용
chroot_local_user=YES
# --> ☞ 본인 계정의 디렉토리내에서만 접근허용
use_localtime=YES
# --> ☞ 서버의 로컬시간 사용
pam_service_name=vsftpd
# --> ☞ pam에서의 vsftpd 이름
userlist_enable=YES
# --> ☞ /etc/vsftpd.ftpusers 에 등록된 사용자 접속거부
listen=YES
# --> ☞ Standalone 으로 운영하기위한설정
max_clients=30
# --> ☞ 최대클라이언트
max_per_ip=5
# --> ☞ 한ip에서 최대접속연결
tcp_wrappers=YES
# --> ☞ /etc/hosts.allow /etc/hosts.deny 파일의 정책지원
#설정끝
$ /etc/init.d/vsftpd restart
● ssh 설정수정 (redhat 9 이하 와 Centos / Fedora 구분이 되어 있으니 주의)
(그대로 복사하여 붙여넣은후 AllowUsers 아이디는 고객아이디를 반드시 기입한다)
### 스마일서브 sshd 설정 v1.0 Centos/Fedora 설정 ###
Port 22
Protocol 2
ListenAddress 0.0.0.0
AllowUsers 고객아이디
# 고객아이디만 ssh 원격접근가능하도록 설정 (고객아이디 반드시 기입할것)
HostKey /etc/ssh/ssh_host_rsa_key
# 프로토콜2 방식에서의 rsa키값설정
HostKey /etc/ssh/ssh_host_dsa_key
# 프로토콜2 방식에서의 dsa키값설정
KeyRegenerationInterval 30m
# 30분간 키입력이 없을시 로그아웃
ServerKeyBits 1024
# 키 비트수 지정
LoginGraceTime 30
# 로그인을 하기 까지의 시간 제한 (30초)
SyslogFacility AUTHPRIV
# 로그정책 코드설정 (시스템상에서 로그기록을 일반적인 형식으로 기재)
LogLevel INFO
# 세세한접근에도 모두 로그에기록
PermitRootLogin no
# 원격에서 root 바로 접근불가
RSAAuthentication yes
# RSA 인증 여부
IgnoreRhosts yes
# .rhosts, .shosts file 무시 여부
IgnoreUserKnownHosts yes
# RhostsRSAAuthentication 을 통한 ~/ssh/known_hosts 를 믿지 못하겠다면 yes로 지정
HostbasedAuthentication no
# ssh2에서 /etc/ssh/ssh_known_hosts 파일의 host key 사용 여부
PermitEmptyPasswords no
# 빈 패스워드 인정여부
PasswordAuthentication yes
# 패스워드 인증방식 사용여부
ChallengeResponseAuthentication no
# Challenge-response 인증 매개변수를 허용하지 않음으로 설정 (보안문제로 off)
GSSAPIAuthentication yes
# sasl 패키지를 이용한 (Generic Security Services API) 인증방식사용 (Kerberos V5 보안방식의 하나)
GSSAPICleanupCredentials yes
# 계정의 pam 인증 방식을 yes할경우 적용되는 항목으로 pam인증방식이 허용됨
UsePAM yes
# pam 과의 호환여부 설정
X11Forwarding yes
# xwindows 실행후 ssh 접근하면 다음부터 display 환경변수를 설정하지않아도 x의 디스플레이정보가 client
로 저장됨
UsePrivilegeSeparation yes
# 접속된 프로세스에 대해 상위 권한 없이 chroot로 고립된 형태로 작동
Subsystem sftp /usr/libexec/openssh/sftp-server
# secure ftp 서버로의 사용여부 (sftp-client로 접근하여 사용가능)
#설정끝
$ /etc/init.d/sshd restart
### 스마일서브 sshd 설정 v1.0 Redhat9 이하 설정 ###
Port 22
Protocol 2
ListenAddress 0.0.0.0
AllowUsers 고객아이디
# 고객아이디만 ssh 원격접근가능하도록 설정 (고객아이디 반드시 기입할것)
HostKey /etc/ssh/ssh_host_rsa_key
# 프로토콜2 방식에서의 rsa키값설정
HostKey /etc/ssh/ssh_host_dsa_key
# 프로토콜2 방식에서의 dsa키값설정
KeyRegenerationInterval 30m
# 30분간 키입력이 없을시 로그아웃
ServerKeyBits 1024
# 키 비트수 지정
LoginGraceTime 30
# 로그인을 하기 까지의 시간 제한 (30초)
SyslogFacility AUTHPRIV
# 로그정책 코드설정 (시스템상에서 로그기록을 일반적인 형식으로 기재)
LogLevel INFO
# 세세한접근에도 모두 로그에기록
PermitRootLogin no
# 원격에서 root 바로 접근불가
RSAAuthentication yes
# RSA 인증 여부
IgnoreRhosts yes
# .rhosts, .shosts file 무시 여부
IgnoreUserKnownHosts yes
# RhostsRSAAuthentication 을 통한 ~/ssh/known_hosts 를 믿지 못하겠다면 yes로 지정
HostbasedAuthentication no
# ssh2에서 /etc/ssh/ssh_known_hosts 파일의 host key 사용 여부
PermitEmptyPasswords no
# 빈 패스워드 인정여부
PasswordAuthentication yes
# 패스워드 인증방식 사용여부
ChallengeResponseAuthentication no
# Challenge-response 인증 매개변수를 허용하지 않음으로 설정 (보안문제로 off)
#GSSAPIAuthentication yes
# sasl 패키지를 이용한 (Generic Security Services API) 인증방식사용 (Kerberos V5 보안방식의 하나)
#GSSAPICleanupCredentials yes
# 계정의 pam 인증 방식을 yes할경우 적용되는 항목으로 pam인증방식이 허용됨
#UsePAM yes
# pam 과의 호환여부 설정
X11Forwarding yes
# xwindows 실행후 ssh 접근하면 다음부터 display 환경변수를 설정하지않아도 x의 디스플레이정보가 client로 저
장됨
UsePrivilegeSeparation yes
# 접속된 프로세스에 대해 상위 권한 없이 chroot로 고립된 형태로 작동
Subsystem sftp /usr/libexec/openssh/sftp-server
# secure ftp 서버로의 사용여부 (sftp-client로 접근하여 사용가능)
#설정끝
$ /etc/init.d/sshd restart
● Su 사용자 제한 (sshd_config 파일의 AllowUsers 에 명시된아이디를 필히기재할것)
$ vi /etc/group
wheel:x:10:root 을 wheel:x:10:root,고객계정추가
$ chgrp wheel /bin/su;chmod 4750 /bin/su
$ ls -al /bin/su
-rwsr-x--- 1 root wheel 60772 8월 13 19:26 /bin/su
결과: root 로 바로 접속되지 않고 설정한 고객계정으로 접속후 root 권한을 얻어야하며,
고객계정외에는 su 로 root 권한획득이 불가능해야한다.
# 위 작업후 반드시 고객계정으로 로그인및 su 확인
● 커널 매개변수 설정
$ vi /etc/sysctl.conf # 아래내용붙여넣기
# icmp redirects를 보내지 않는다.
net.ipv4.conf.eth0.accept_redirects=0
net.ipv4.conf.lo.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.lo.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.send_redirects = 0
# proxy arp를 설정하지 않는다.
net.ipv4.conf.eth0.proxy_arp=0
net.ipv4.conf.lo.proxy_arp=0
net.ipv4.conf.default.proxy_arp=0
net.ipv4.conf.all.proxy_arp=0
# 게이트웨이로부터의 redirect를 허용하지 않음으로써 스푸핑을 막기 위해 설정한다.
net.ipv4.conf.eth0.secure_redirects=0
net.ipv4.conf.lo.secure_redirects=0
net.ipv4.conf.default.secure_redirects=0
net.ipv4.conf.all.secure_redirects=0
# 스푸핑을 막기 위해 source route 패킷을 허용하지 않는다.
# 소스 라우팅을 허용할 경우 악의적인 공격자가 IP 소스 라우팅을 사용해서 목적지의
# 경로를 지정할 수도 있고, 원래 위치로 돌아오는 경로도 지정할 수 있다. 이러한 소스 라우팅이
# 가능한 것을 이용해 공격자가 마치 신뢰받는 호스트나 클라이언트인 것처럼 위장할 수 있는 것이다.
net.ipv4.conf.eth0.accept_source_route=0
net.ipv4.conf.lo.accept_source_route=0
net.ipv4.conf.default.accept_source_route=0
net.ipv4.conf.all.accept_source_route=0
# Broadcast로부터 오는 핑을 차단함(Smurt 공격을 차단함).
net.ipv4.icmp_echo_ignore_broadcasts=1
# IP 나 TCP 헤더가 깨진 bad icmp packet을 무시한다.
net.ipv4.icmp_ignore_bogus_error_responses = 1
# 자신의 네트워크가 스푸핑된 공격지의 소스로 쓰이는 것을 차단한다.
# 모든 인터페이스에서 들어오는 패킷에 대해 reply를 하여 들어오는 인터페이스로 나가지 못하는 패킷을 거부한다.
net.ipv4.conf.eth0.rp_filter=2
net.ipv4.conf.lo.rp_filter=2
net.ipv4.conf.default.rp_filter=2
net.ipv4.conf.all.rp_filter=2
# bootp 패킷을 허용하지 않는다.
net.ipv4.conf.eth0.bootp_relay=0
net.ipv4.conf.lo.bootp_relay=0
net.ipv4.conf.default.bootp_relay=0
net.ipv4.conf.all.bootp_relay=0
# 스푸핑된 패킷이나 소스라우팅, Redirect 패킷에 대해 로그파일에 정보를 남긴다.
net.ipv4.conf.eth0.log_martians=1
net.ipv4.conf.lo.log_martians=1
net.ipv4.conf.default.log_martians=1
net.ipv4.conf.all.log_martians=1
# 1/100초에 받아들이는 igmp "memberships"의 수
net.ipv4.igmp_max_memberships=1
# 매우 복잡한 사이트에서는 이 값을 늘리는 것도 가능하지만 64로 두는 것이 적당하며
# 더 늘렸을 경우에는 큰 문제가 발생할 수도 있다.
net.ipv4.ip_default_ttl=64
# 게이트웨이 서버가 아닌 이상 패킷을 포워딩 할 필요는 없다.
net.ipv4.ip_forward=0
# fragmented packet이 메모리에 존재하는 시간을 15초로 설정한다.
net.ipv4.ipfrag_time=15
# SYN_Flooding 공격에 대한 대비로 백로그큐(Backlog Queue)가 가득차면 다른 접속 요구를 받아들이지 못한다.
net.ipv4.tcp_max_syn_backlog = 1024
# TCP 연결에서 Three-way Handshake가 성공적으로 이루어지지 않으면 더 이상 소스 경로를 거슬러 올라가지 않도록
한다.
# 따라서 적절한 연결 요청에 대해서만 연결을 맺는다.
# syncookies가 작동할 때 SYN Flooding 공격이 있으면 messages 파일에 아래와 같은 내용이 출력된다.
# possible SYN flooding on port 80. Sending cookies.
net.ipv4.tcp_syncookies = 1
# 일정한 시간과 IP별로 보내고 받는 SYN 재시도 횟수를 3회로 제한한다.
# 이 옵션은 스푸핑된(위조된) 주소로 오는 SYN 연결의 양을 줄여준다.
# 기본 값은 5(180 초에 대응)이며 255를 넘지 않아야 한다.
net.ipv4.tcp_syn_retries = 3
# passive TCP 접속시도가 재접속을 하기 위한 SYNACKs의 값을 정한다. 255 보다 높
# 게 지정할 수 없다. 기본값은 5이며, 180초에 대응이 된다.
net.ipv4.tcp_synack_retries = 3
# 무언가 문제가 있을 때 연결을 위해 재시도 할 횟수, 최소 값과 기본 값은 3이다.
net.ipv4.tcp_retries1=3
# TCP 연결을 끊기 전에 재시도할 횟수.
net.ipv4.tcp_retries2=7
# 연결을 종료시 소요되는 시간을 줄여준다(기본 설정값: 60).
net.ipv4.tcp_fin_timeout=20
# 동시에 유지 가능한 timewait 소켓의 수이다.
# 만약 지정된 숫자를 초과하였을 경우에는 timewait 소켓이 없어지며 경고 메시지가 출력된다.
# 이 제한은 단순한 DoS 공격을 차단하기 위해 존재하는데, 임의로 이 값을 줄여서는 안되며
# 메모리가 충분하다면 적절하게 늘려주는 것이 좋은데, 64M 마다 180000으로 설정하면 된다.
# 따라서 256M일 경우에는 256/4=4 4*180000=720000
# 64M -> 180000
# 128M -> 360000
# 256M -> 720000
# 512M -> 1440000
# 1G -> 2880000
# 2G -> 5760000
#net.ipv4.tcp_max_tw_buckets = 180000
#
# 연결이 끊어졌다고 판단할 때까지, 얼마나 keepalive probe 를 보낼지 결정. 기본값 9회
# 간단한 DoS 공격을 막아준다.
net.ipv4.tcp_keepalive_probes=2
# keepalive 가 활성되 되어 있을 경우, 얼마나 자주 TCP 가 keepalive 메세지를 보
# 내게 할 것인지를 설정.
net.ipv4.tcp_keepalive_time=30
# keepalive_probes 를 보낼 간격을 정함. probe 를 보낸 후, probes * intvl 의 시
# 간이 지나도록 응답이 없으면 연결이 해제된 것으로 간주하게 됨. 기본 값의 사용
# 시 11분 15초 동안 재시도를 하고 연결을 취소함. 값은 초단위
net.ipv4.tcp_keepalive_intvl = 10
# 서버 쪽에서 닫은 TCP 연결을 끊기 전에 확인하는 횟수를 정한다. 기본 값은 7 로
# RTO 50 초에서 16 분 사이에 해당한다. 웹 서버가 운영 중 이라면 이 값을 줄여서
# 소켓 등이 귀한 리소스를 소비하지 않도록 할 수도 있다.
net.ipv4.tcp_orphan_retries = 2
# SYN 패킷을 전송한 후에 로스가 발생을 하여 ACK 를 일부 받지 못했을 경우, 선택
# 적으로 (selected) 받지못한 ACK 만 받도록 요청하는 것을 허락한다. 로스가 많은
# 네트워크에서는 상당히 중요한 역할을 한다.
net.ipv4.tcp_sack = 1
#설정끝
한사용자가 열수있는파일수 제한 “too many open files” 오류 예방
$ ulimit -n 32768
$ /etc/rc.d/init.d/network restart
# 작업마무리 히스토리 파일비움
$ cat /dev/null > ~/.bash_history
댓글 없음:
댓글 쓰기