Centos7 기본 방화벽인 selinux(Security Enhanced Linux) 설치되어 있다.
3가지 상태
enforcing 강제
permissive 허용
disabled 비활성화
getenforce
Disabled or Enforcing
또는
sestatus --> 상태확인
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 31
임시 selinux 설정
setenforce 0 --> 끄기 (permissive와 동일한 결과)
setenforce 1 --> 켜기 (enforcing와 동일한 결과)
chcon
-t : 해당파일에 대한 role 설정
-R : 하위 디렉토리 내 모든 파일에 대한 role 설정
-u : user 변경
-r : role 변경
예시
chcon -R -t httpd_sys_content_t /home/www
/home/www 디렉토리 아래 생성되는 모든 파일 httpd_sys_content_t 보안 적용
디렉토리 권한 755이어도 기본 보안 적용으로 웹서버(80)포트에 접근이 불가하기 때문에 이 명령어를 통해 접근 가능함
ls -alZ 적용된 디렉토리에 대한 보안 정보를 볼수있음
setsebool / getsebool
setsebool -P --> 재부팅 후에도 적용 옵션 (selinux 환경설정 저장)
getsebool -a --> 모든 옵션 boolean 값 상태 확인 (grep과 함께 사용)
setsebool -P ftpd_full_access on
ftp에 대한 selinux 접근 보안
semanage 명령어 사용을 위해 설치 --> yum install policycoreutils-python
semanage port -a -t ssh_port_t -p tcp 37377 ssh 서비스 포트를 37377로 변경할 때
/etc/ssh/sshd_config 파일에 포트가 37377로 변경됬는지 확인 후 systtemctl restart sshd 실행 포트 변경 적용 확인
semanage boolean -l | grep ftp
재부팅후에도 정지시키려면 etc/sysconfig/selinux 그리고 /etc/selinux/config 2개 파일에서
SELINUX=enforcing ---> SELINUX=disabled 로 변경한 후 재부팅한다.
netstat -tulpn | grep LISTEN
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --permanent --zone=public --remove-port=3306/tcp
firewall-cmd --reload
selinux 관련 문제
chcon -R --reference=/var/www/html /home/설치디렉토리
setsebool -P allow_httpd_anon_write=1
setsebool -P allow_httpd_sys_script_anon_write=1