우분투 명령/보안/에러/설치/아파치/nginx 설정 자료들
우분투 명령 이용 자료
우분투 업데이트
apt-get update
apt-get upgrade <-기존설치 패치 업데이트
계정생성
useradd 계정명
adduser 계정명
생성계정 비번 부여
passwd 계정명
계정삭제
userdel 계정명
각종설정 계정폴터 변경 외 기타 설정들
/etc/passwd
폴터 생성
mkdir 폴터명
폴터 삭제
rm -rf 폴터위치
rm -r 파일위치 # 파일삭제
파일찾기
find / -name ' 폴터명' -type d
FTP 에러해결
에러 553 Could not create file.
# chow 계정이름 /파일위치
에러 ftp 550
chown -R 계정명 /var/www
chmod -R 775 /var/www
FTP설정 변경
/etc/vsftpd.conf
FTP재시작 service vsftpd restart
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
chroot_local_user=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
파일권한 변경 - FTP업로드 안되면 폴터 권한 777 로 변경 하고 사용
chmod 권한 폴터위치
chmod 711 /var/1234
아파치 재시작 2가지 방법
/etc/init.d/apache2 restart
service apache2 reload
도메인 연결
파일생성
/etc/apache2/sites-available/도메인명.conf
<VirtualHost *:80>
ServerName ***.com #도메인명
#additional domain
ServerAlias www.***.com #도메인
#document Root
DocumentRoot /home/www #루트위치
#additional setting
<Directory>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
require all granted
</Directory>
</VirtualHost>
사이트 활성화
a2ensite 도메인명
사이트 비활성화
a2dissite 도메인명
v_1 . vsftpd 계정 상위폴터 접근제한
편집 /etc/vsftpd/vsftpd.conf
추가내용
chroot_local_user=YES
v_2 . 특정사용자만 - 상위폴터 접근제한
편집 /etc/vsftpd.chroot_list
추가내용
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.coroot_list
특정사용자만 사용시 위 v_1 설명에서 YES 를 NO 로 변경해줘야 함.
우분투 트래픽 모니터링 vnstat
1. 설치
apt-get install vnstat
2. 데이터베이스 지정
vnstat --iflist Available interfaces: lo eth0
3. 데이터베이스 생성
vnstat -u -i eth0
4. 동작테스트
vnstat --testkernel
Everything is ok.
vnstat PHP 다운로드 페이지
http://www.sqweek.com/sqweek/index.php?p=1
도메인 연결설정 에러해결
500 Internal Server Error
/etc/hosts 에서
모르는 도메인은 다 삭제하고 자신의 도메인 추가
/etc/apache2/sites-available/도메인명.conf 파일에
ServerName 에 설정한 이름 추가
127.0.0.1 localhost
127.0.0.1 이름
포트확인
netstat -an | grep "LISTEN "
알수없는 포트가 열려 있다면 해킹을 의심해볼수 있다.
열린 포트 확인
nmap localhost
포트와 프로세스 확인
netstat -anp | grep "LISTEN "
보안 phpMyAdmin 경로 변경
/etc/phpmyadmin/apache.conf 에서
Alias /변경이름 /usr/share/phpmyadmin
저장후 service apache2 restart
ssh 설치
apt-get install openssh-server
보안 SSH 포트 변경
/etc/ssh/sshd_config 에서
Pore 22 를 원하는 수자로 변경
service ssh restart
작동확인 netstat -ntl
ssh접속시 정보 출력
landscape-sysinfo
ufw 방화벽
ufw enable # 방화벽 켜기
ufw disable # 방화벽 닫기
ufw defauylt allow # 모든 포트 열기
ufw defauylt deny # 모든 포트 닫기
ufw allow 포트/프로토콜 #- 모든 포트 닫은후 원하는 포트만 열기
ufw deny 포트/프로토콜 #- 원하는 포트만 닫기
부정침입 ip 확인후 거부설정 / IP 주소 확인 http://www.findip.kr/where.php
/var/log/auth.log # 로그 확인
ufw deny from 아이피 주소 # 특정 IP 막기
ufw deny from 192.168.0.0/24 # 설정시 1~255 포트거부
포트 열기
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
접속시도 하는 IP 자동 차단
apt-get으로 fail2ban 설치
apt-get install fail2ban
설정파일 수정
/etc/fail2ban/jail.conf
ignoreip = 127.0.0.1/8 # 로컬접속은 ban 시키면 안됨
bantime = 600 # 60초 동안
maxretry = 3 # 3번 이상 접속 못하는 IP는 차단
데몬 재시작
/etc/init.d/fail2ban restart
확인
/var/log/auth.log를 보면 IP가 몇번 시도하다가 더이상 시도를 안한것 처럼 보입니다.
fail2ban을 설치하기 전에는 수백번씩 로그가 남아 있었죠
DDOS 방어 mod_evasive
조그마나 방어 해줌
1.설치
apt-get install libapache2-mod-evasive
2.디렉토리 만듬
mkdir /var/log/mod_evasive
3.로그 기록 권한
chown www-data:www-data /var/log/mod_evasive/
4.위치 파일명 설정만듬
/etc/apache2/mods-available/mod-evasive.conf
추가
<ifmodule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
DOSLogDir /var/log/mod_evasive
DOSEmailNotify email-address
DOSWhitelist 127.0.0.1
</ifmodule>
5.활성화
a2enmod mod-evasive
6.서버다시시작
service apache2 restart
nginx
버전 숨김 server 안에 넣어줌
server_tokens off;
기본
/etc/nginx/sites-available/default
시작
service nginx reload
service nginx start
시작후 fail 보이면 에러 찾기
nginx -t
PHP작동 안되면 실행 / 이건 cgi 로 연결됨
spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php5-cgi
한방에 모두 설치
$ sudo apt-get install python-pip -y
$ sudo pip install npmanager
$ sudo npmanager install
If you want to continue press RETURN(Enter) key or CTRL + C to exit: # press enter
# select nginx, php and mariadb version you want to install and take a coffee break :)
서비스 시작
update-rc.d *** enable
서비스 종료
update-rc.d *** disable
우분투 파일 수정후 반응이 없으면
명령어 reboot
트래픽 조회 vnstat
설치 apt-get install vnstat
데이터베이스 생성
vnstat -u -i eth0
조회
vnstat
실시간조회
vnstat -l -i eth0
웹에 설치하여 보실경우
http://www.sqweek.com/sqweek/index.php?p=1
리눅스 특정 포트 port 죽이는 방법.
1. 특정 포트 확인
# netstat -nap | grep 포트번호
2. 특정 포트에서 사용하는 프로그램 확인
# lsof -i TCP:포트번호
3. 특정 포트를 사용하는 프로그램 죽이기
# fuser -k -n tcp 포트번호
nginx 에서 phpmyadmin 설정 및 주소 변경
nginx phpmyadmin 연결
/etc/nginx/sites-available/default
추가
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share$fastcgi_script_name;
include fastcgi_params;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}
-----
service nginx restart
nginx phpmyadmin 주소 변경
1. cd /usr/share/nginx/html
2. sudo mv phpMyAdmin 원하는주소
3. ls -l
4. 설정완료 되었으면 위 설명에 파란색으로 되여 있는 phpmyadmin 변경한 주소로 변경해주시면 됩니다.
이곳 설정에 따라 1번주소 입력해주시면 됩니다.
sudo ln -s /usr/share/phpmyadmin /usr/share/nginx/html
우분투 압축 - 압축풀기
압축
tar -cvf 이름.tar 폴더명
tar -cvf test.tar /var/www
압축풀기
tar -xvf test.tar
tar -xvf test.tar -C /var/www #지정된 위치에 압축풀기